diff options
author | Charmaine Lee <[email protected]> | 2017-04-13 15:12:25 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2017-04-26 11:37:59 -0600 |
commit | c6576461f5920971d7df74dcd821ac0e257fc352 (patch) | |
tree | deafc89ac66d78babaea6bff741cf4460e261103 /src | |
parent | dc30ac5c24d662718b6aa4fbc9917aa34ba55160 (diff) |
svga: Set the surface dirty bit for the right surface view
For VGPU10, we will render to a backed surface view when
the same resource is used for rendering and sampling.
In this case, we will mark the dirty bit for the backed surface view.
Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/svga/svga_surface.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/gallium/drivers/svga/svga_surface.c b/src/gallium/drivers/svga/svga_surface.c index 02df0ca3efc..d0dc58d10f3 100644 --- a/src/gallium/drivers/svga/svga_surface.c +++ b/src/gallium/drivers/svga/svga_surface.c @@ -656,13 +656,27 @@ void svga_mark_surfaces_dirty(struct svga_context *svga) { unsigned i; + struct svga_hw_clear_state *hw = &svga->state.hw_clear; - for (i = 0; i < svga->curr.framebuffer.nr_cbufs; i++) { - if (svga->curr.framebuffer.cbufs[i]) - svga_mark_surface_dirty(svga->curr.framebuffer.cbufs[i]); + if (svga_have_vgpu10(svga)) { + + /* For VGPU10, mark the dirty bit in the rendertarget/depth stencil view surface. + * This surface can be the backed surface. + */ + for (i = 0; i < hw->num_rendertargets; i++) { + if (hw->rtv[i]) + svga_mark_surface_dirty(hw->rtv[i]); + } + if (hw->dsv) + svga_mark_surface_dirty(hw->dsv); + } else { + for (i = 0; i < svga->curr.framebuffer.nr_cbufs; i++) { + if (svga->curr.framebuffer.cbufs[i]) + svga_mark_surface_dirty(svga->curr.framebuffer.cbufs[i]); + } + if (svga->curr.framebuffer.zsbuf) + svga_mark_surface_dirty(svga->curr.framebuffer.zsbuf); } - if (svga->curr.framebuffer.zsbuf) - svga_mark_surface_dirty(svga->curr.framebuffer.zsbuf); } |