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 <brianp@vmware.com>
This commit is contained in:
committed by
Brian Paul
parent
dc30ac5c24
commit
c6576461f5
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user