summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlia Mirkin <[email protected]>2019-01-20 22:19:26 -0500
committerIlia Mirkin <[email protected]>2019-01-22 23:16:01 -0500
commit8e26d534befe7cdd3bd21aa34f3ff63c1fa7baea (patch)
tree4144057f22b317dfd570a74d594d63b76eb31b37
parent678ef2a4a51dc184152d5ce5f1e3194164cc333a (diff)
nv50,nvc0: mark textures dirty on fb update
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 <[email protected]> Reviewed-by: Karol Herbst <[email protected]>
-rw-r--r--src/gallium/drivers/nouveau/nv50/nv50_state.c2
-rw-r--r--src/gallium/drivers/nouveau/nvc0/nvc0_state.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_state.c b/src/gallium/drivers/nouveau/nv50/nv50_state.c
index e1b2e20810a..fd4b8b64455 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_state.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_state.c
@@ -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
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_state.c b/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
index 9653de86fe9..53ad47c6ed4 100644
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
@@ -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