nv50: rebind bo to bufctx when invalidating idxbuf storage
authorIlia Mirkin <imirkin@alum.mit.edu>
Sat, 4 Jul 2015 00:16:48 +0000 (20:16 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Sun, 6 Sep 2015 03:04:15 +0000 (23:04 -0400)
There is nothing to be done on a dirty idxbuf, but the bo may have
changed, so we have to rebind it to the bufctx.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: mesa-stable@lists.freedesktop.org
src/gallium/drivers/nouveau/nv50/nv50_context.c

index 4949459a8033bc02bd8e8c6fd8ac2767bea98350..4108f48005e79e0bba18ab606c798594595873bb 100644 (file)
@@ -199,9 +199,13 @@ nv50_invalidate_resource_storage(struct nouveau_context *ctx,
          }
       }
 
-      if (nv50->idxbuf.buffer == res)
+      if (nv50->idxbuf.buffer == res) {
+         /* Just rebind to the bufctx as there is no separate dirty bit */
+         nouveau_bufctx_reset(nv50->bufctx_3d, NV50_BIND_INDEX);
+         BCTX_REFN(nv50->bufctx_3d, INDEX, nv04_resource(res), RD);
          if (!--ref)
             return ref;
+      }
 
       for (s = 0; s < 3; ++s) {
       assert(nv50->num_textures[s] <= PIPE_MAX_SAMPLERS);