diff options
author | Charmaine Lee <[email protected]> | 2016-10-28 11:39:47 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2016-11-03 14:29:22 -0600 |
commit | ec138d62377adf9aa03bda6a8f882bc3361d170c (patch) | |
tree | 468aa6867d7d1bfe5cc8709ec55c2e1967e3a80c /src/gallium/drivers/svga/svga_pipe_blit.c | |
parent | a2d49c4b466e493954dea750a48cd816bcf3c5d6 (diff) |
svga: allow copy_region if sample counts match
With this patch, we will allow blit with copy_region if the
source and destination textures have the same sample counts.
Fixes failures with piglit tests
spec@arb_texture_float@multisample-formats 2 gl_arb_texture_float
spec@arb_texture_rg@multisample-formats 2 gl_arb_texture_rg-float
Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src/gallium/drivers/svga/svga_pipe_blit.c')
-rw-r--r-- | src/gallium/drivers/svga/svga_pipe_blit.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/gallium/drivers/svga/svga_pipe_blit.c b/src/gallium/drivers/svga/svga_pipe_blit.c index 3e236fc6d55..84d36e1ee2f 100644 --- a/src/gallium/drivers/svga/svga_pipe_blit.c +++ b/src/gallium/drivers/svga/svga_pipe_blit.c @@ -171,7 +171,8 @@ svga_resource_copy_region(struct pipe_context *pipe, util_format_is_compressed(dst_tex->format) && stex->handle != dtex->handle && svga_resource_type(src_tex->target) == - svga_resource_type(dst_tex->target)) { + svga_resource_type(dst_tex->target) && + stex->b.b.nr_samples == dtex->b.b.nr_samples) { copy_region_vgpu10(svga, src_tex, src_box->x, src_box->y, src_z, @@ -249,7 +250,7 @@ can_blit_via_copy_region_vgpu10(struct svga_context *svga, stex = svga_texture(blit_info->src.resource); dtex = svga_texture(blit_info->dst.resource); - // can't copy within one resource + /* can't copy within one resource */ if (stex->handle == dtex->handle) return false; @@ -263,8 +264,13 @@ can_blit_via_copy_region_vgpu10(struct svga_context *svga, blit_info->src.box.height != blit_info->dst.box.height) return false; - /* For depth+stencil formats, copy with maks != PIPE_MASK_ZS is not - * supported */ + /* check that sample counts are the same */ + if (stex->b.b.nr_samples != dtex->b.b.nr_samples) + return false; + + /* For depth+stencil formats, copy with mask != PIPE_MASK_ZS is not + * supported + */ if (util_format_is_depth_and_stencil(blit_info->src.format) && blit_info->mask != (PIPE_MASK_ZS)) return false; |