nouveau: allow invalidating coherent/persistent buffer backings
authorIlia Mirkin <imirkin@alum.mit.edu>
Sat, 30 May 2020 06:47:42 +0000 (02:47 -0400)
committerMarge Bot <eric+marge@anholt.net>
Sat, 30 May 2020 17:59:24 +0000 (17:59 +0000)
This is needed to support the core's usage of coherent buffers for
glVertex-style input. The reason why this was disallowed is that any
mappings will be invalidated. Let the state tracker worry about that,
and just reallocate when we're told.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Cc: mesa-stable@lists.freedesktop.org
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5276>

src/gallium/drivers/nouveau/nouveau_buffer.c

index 42f68fa9bdf629eacb7f5516732173911102508f..abb4105099a165861edc80e20f4c012c64f8ee85 100644 (file)
@@ -850,11 +850,6 @@ nouveau_buffer_invalidate(struct pipe_context *pipe,
    if (unlikely(buf->base.bind & PIPE_BIND_SHARED))
       return;
 
-   /* We can't touch persistent/coherent buffers */
-   if (buf->base.flags & (PIPE_RESOURCE_FLAG_MAP_PERSISTENT |
-                          PIPE_RESOURCE_FLAG_MAP_COHERENT))
-      return;
-
    /* If the buffer is sub-allocated and not currently being written, just
     * wipe the valid buffer range. Otherwise we have to create fresh
     * storage. (We don't keep track of fences for non-sub-allocated BO's.)