Commit
b9ba8492 removes an unneeded pipe_surface_release() from
st_render_texture(). This implies a surface can now be reused for a
render buffer. Currently, when we render to a texture, we mark the
surface as dirty. But in svga_mark_surface_dirty(), if the surface
is already marked as dirty, it does not increment the texture age.
Any view to this texture might not be updated properly then.
With this patch, the texture age is incremented regardless of whether
the surface is already marked as dirty or not.
Fix bug
1499181.
Reviewed-by: Sinclair Yeh <syeh@vmware.com>
svga_mark_surface_dirty(struct pipe_surface *surf)
{
struct svga_surface *s = svga_surface(surf);
+ struct svga_texture *tex = svga_texture(surf->texture);
if (!s->dirty) {
- struct svga_texture *tex = svga_texture(surf->texture);
-
s->dirty = TRUE;
if (s->handle == tex->handle) {
else {
/* this will happen later in svga_propagate_surface */
}
-
- /* Increment the view_age and texture age for this surface's mipmap
- * level so that any sampler views into the texture are re-validated too.
- */
- svga_age_texture_view(tex, surf->u.tex.level);
}
+
+ /* Increment the view_age and texture age for this surface's mipmap
+ * level so that any sampler views into the texture are re-validated too.
+ */
+ svga_age_texture_view(tex, surf->u.tex.level);
}