nvc0: do not clear surfaces bins in the validate function
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Sun, 5 Jun 2016 16:53:26 +0000 (18:53 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Sun, 5 Jun 2016 17:02:59 +0000 (19:02 +0200)
We should not call nouveau_bufctx_reset() inside a validate function.
This only affects Fermi where images are aliased between 3D and CP.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
src/gallium/drivers/nouveau/nvc0/nvc0_compute.c
src/gallium/drivers/nouveau/nvc0/nvc0_tex.c

index 21c8b2e4aae1bd4af0689c757e919c9036383237..59bbe1efe106f9197e72e90392fbfc8b5a487a61 100644 (file)
@@ -324,6 +324,7 @@ nvc0_compute_validate_surfaces(struct nvc0_context *nvc0)
    nvc0_validate_suf(nvc0, 5);
 
    /* Invalidate all FRAGMENT images because they are aliased with COMPUTE. */
+   nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_3D_SUF);
    nvc0->dirty_3d |= NVC0_NEW_3D_SURFACES;
    nvc0->images_dirty[4] |= nvc0->images_valid[4];
 }
index b54de0ffe0b466f3ff1616f6cebb4c90d7cb4cd2..1a5d8ecbf16f9936ce667fbd16e9f9707b46cc1e 100644 (file)
@@ -994,11 +994,6 @@ nvc0_validate_suf(struct nvc0_context *nvc0, int s)
    struct nouveau_pushbuf *push = nvc0->base.pushbuf;
    struct nvc0_screen *screen = nvc0->screen;
 
-   if (s == 5)
-      nouveau_bufctx_reset(nvc0->bufctx_cp, NVC0_BIND_CP_SUF);
-   else
-      nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_3D_SUF);
-
    for (int i = 0; i < NVC0_MAX_IMAGES; ++i) {
       struct pipe_image_view *view = &nvc0->images[s][i];
       int width, height, depth;
@@ -1099,6 +1094,7 @@ nvc0_update_surface_bindings(struct nvc0_context *nvc0)
    nvc0_validate_suf(nvc0, 4);
 
    /* Invalidate all COMPUTE images because they are aliased with FRAGMENT. */
+   nouveau_bufctx_reset(nvc0->bufctx_cp, NVC0_BIND_CP_SUF);
    nvc0->dirty_cp |= NVC0_NEW_CP_SURFACES;
    nvc0->images_dirty[5] |= nvc0->images_valid[5];
 }