nvc0: invalidate texture buffers for compute

This is a pretty rare situation but this can happen though.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
Samuel Pitoiset 2016-05-12 20:54:41 +02:00
parent 2785f2f2d7
commit b8f0b00a9a

View file

@ -263,13 +263,18 @@ nvc0_invalidate_resource_storage(struct nouveau_context *ctx,
return ref;
}
for (s = 0; s < 5; ++s) {
for (s = 0; s < 6; ++s) {
for (i = 0; i < nvc0->num_textures[s]; ++i) {
if (nvc0->textures[s][i] &&
nvc0->textures[s][i]->texture == res) {
nvc0->textures_dirty[s] |= 1 << i;
nvc0->dirty_3d |= NVC0_NEW_3D_TEXTURES;
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_3D_TEX(s, i));
if (unlikely(s == 5)) {
nvc0->dirty_cp |= NVC0_NEW_CP_TEXTURES;
nouveau_bufctx_reset(nvc0->bufctx_cp, NVC0_BIND_CP_TEX(i));
} else {
nvc0->dirty_3d |= NVC0_NEW_3D_TEXTURES;
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_3D_TEX(s, i));
}
if (!--ref)
return ref;
}