nv50,nvc0: mark textures dirty on fb update
authorIlia Mirkin <imirkin@alum.mit.edu>
Mon, 21 Jan 2019 03:19:26 +0000 (22:19 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Wed, 23 Jan 2019 04:16:01 +0000 (23:16 -0500)
We may have to flush the cache if there are any textures presently bound
that refer to the outgoing framebuffer. This is only checked at
validation time.

Fixes a number of dEQP-GLES3.functional.fbo.color.repeated_clear.sample.*
tests, which would bind a texture, then clear it while the binding was
in effect, and then render to a different texture. This seems legal
under the "no feedback loops" rule.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
src/gallium/drivers/nouveau/nv50/nv50_state.c
src/gallium/drivers/nouveau/nvc0/nvc0_state.c

index e1b2e20810ac92caa506b7a90d951537f7f6abef..fd4b8b64455a29e91df40f967b7e70cff502b13b 100644 (file)
@@ -967,7 +967,7 @@ nv50_set_framebuffer_state(struct pipe_context *pipe,
 
    util_copy_framebuffer_state(&nv50->framebuffer, fb);
 
-   nv50->dirty_3d |= NV50_NEW_3D_FRAMEBUFFER;
+   nv50->dirty_3d |= NV50_NEW_3D_FRAMEBUFFER | NV50_NEW_3D_TEXTURES;
 }
 
 static void
index 9653de86fe98a11fdbe3ef3e2134ffec45d9ab3c..53ad47c6ed40dba814687a4acb4d7489a3874b2e 100644 (file)
@@ -852,7 +852,9 @@ nvc0_set_framebuffer_state(struct pipe_context *pipe,
 
     util_copy_framebuffer_state(&nvc0->framebuffer, fb);
 
-    nvc0->dirty_3d |= NVC0_NEW_3D_FRAMEBUFFER | NVC0_NEW_3D_SAMPLE_LOCATIONS;
+    nvc0->dirty_3d |= NVC0_NEW_3D_FRAMEBUFFER | NVC0_NEW_3D_SAMPLE_LOCATIONS |
+       NVC0_NEW_3D_TEXTURES;
+    nvc0->dirty_cp |= NVC0_NEW_CP_TEXTURES;
 }
 
 static void