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 <imirkin@alum.mit.edu> Reviewed-by: Karol Herbst <kherbst@redhat.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user