nv50: use 2d blit when src/dst have same number of samples
The 2D engine should be usable in more cases, but this fixes MS blits between textures with the same MS settings. Otherwise a single sample is selected to be the target texel value. This allows other tests to work that render to a RB and then blit that to a texture for input into a shader that uses sampler2DMS to verify it. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
@@ -1292,8 +1292,8 @@ nv50_blit_eng2d(struct nv50_context *nv50, const struct pipe_blit_info *info)
|
||||
|
||||
if (src->base.base.nr_samples > dst->base.base.nr_samples) {
|
||||
/* center src coorinates for proper MS resolve filtering */
|
||||
srcx += (int64_t)src->ms_x << 32;
|
||||
srcy += (int64_t)src->ms_y << 32;
|
||||
srcx += (int64_t)1 << (src->ms_x + 31);
|
||||
srcy += (int64_t)1 << (src->ms_y + 31);
|
||||
}
|
||||
|
||||
dstx = info->dst.box.x << dst->ms_x;
|
||||
@@ -1431,8 +1431,8 @@ nv50_blit(struct pipe_context *pipe, const struct pipe_blit_info *info)
|
||||
eng3d = TRUE;
|
||||
|
||||
/* FIXME: can't make this work with eng2d anymore */
|
||||
if (info->src.resource->nr_samples > 1 ||
|
||||
info->dst.resource->nr_samples > 1)
|
||||
if ((info->src.resource->nr_samples | 1) !=
|
||||
(info->dst.resource->nr_samples | 1))
|
||||
eng3d = TRUE;
|
||||
|
||||
/* FIXME: find correct src coordinate adjustments */
|
||||
|
||||
Reference in New Issue
Block a user