vc4: Fix raster surface shadow updates under DRI2.
authorEric Anholt <eric@anholt.net>
Tue, 28 Jul 2015 06:23:57 +0000 (23:23 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 29 Jul 2015 02:35:23 +0000 (19:35 -0700)
Glamor asks GBM for the handle of the BO, then flinks it itself.  We
were marking the bo non-private in the flink and dmabuf (DRI3) paths,
but not the GEM handle path.  As a result, non-pageflipping DRI2
swapbuffers (EGL apps, in particular) were never updating the texture.

src/gallium/drivers/vc4/vc4_screen.c

index c069454c2d172fbfcd99d247eecef1d8bd1f3e6e..a20818da4d2ebf6c77b65746f248e1e206f232ca 100644 (file)
@@ -490,6 +490,12 @@ vc4_screen_bo_get_handle(struct pipe_screen *pscreen,
 {
         whandle->stride = stride;
 
+        /* If we're passing some reference to our BO out to some other part of
+         * the system, then we can't do any optimizations about only us being
+         * the ones seeing it (like BO caching or shadow update avoidance).
+         */
+        bo->private = false;
+
         switch (whandle->type) {
         case DRM_API_HANDLE_TYPE_SHARED:
                 return vc4_bo_flink(bo, &whandle->handle);