OSDN Git Service

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)
committerEmil Velikov <emil.l.velikov@gmail.com>
Sun, 6 Sep 2015 18:08:22 +0000 (19:08 +0100)
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
(cherry picked from commit 1f62d36ae21043c472fc182fd4b738ec1d54a2d2)

src/gallium/drivers/nouveau/nv50/nv50_context.c

index f8d46db..152c2ce 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);