i965/miptree: Delete MIPTREE_LAYOUT_FOR_SCANOUT
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 2 Aug 2017 17:54:44 +0000 (10:54 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 7 Aug 2017 16:31:11 +0000 (09:31 -0700)
The flag hasn't affected actual surface layout for some time.  The only
purpose it served was to set bo->cache_coherent = false on the BO used
to create the miptree.  This is fairly silly because we can just set
that directly from the caller where it makes much more sense.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/mesa/drivers/dri/i965/brw_context.c
src/mesa/drivers/dri/i965/intel_mipmap_tree.c
src/mesa/drivers/dri/i965/intel_mipmap_tree.h

index d0b22d4342bd842f126b130a09d4878070e8fe7e..c3c4d807669ea00800e03b490055ac5105b7548c 100644 (file)
@@ -1518,12 +1518,18 @@ intel_process_dri2_buffer(struct brw_context *brw,
                                   drawable->h,
                                   1,
                                   buffer->pitch,
-                                  MIPTREE_LAYOUT_FOR_SCANOUT);
+                                  0);
    if (!mt) {
       brw_bo_unreference(bo);
       return;
    }
 
+   /* We got this BO from X11.  We cana't assume that we have coherent texture
+    * access because X may suddenly decide to use it for scan-out which would
+    * destroy coherency.
+    */
+   bo->cache_coherent = false;
+
    if (!intel_update_winsys_renderbuffer_miptree(brw, rb, mt,
                                                  drawable->w, drawable->h,
                                                  buffer->pitch)) {
index ddd835abbf80c7eb256a0bbac79ce4c264ebb52b..149e632877cb9bc535da69ed045213980f23b228 100644 (file)
@@ -719,9 +719,6 @@ miptree_create(struct brw_context *brw,
 
    mt->etc_format = etc_format;
 
-   if (layout_flags & MIPTREE_LAYOUT_FOR_SCANOUT)
-      mt->bo->cache_coherent = false;
-
    if (!(layout_flags & MIPTREE_LAYOUT_DISABLE_AUX))
       intel_miptree_choose_aux_usage(brw, mt);
 
@@ -941,7 +938,7 @@ intel_miptree_create_for_dri_image(struct brw_context *brw,
     * used for scanout so we need to flag that appropriately.
     */
    const uint32_t mt_layout_flags =
-      is_winsys_image ? MIPTREE_LAYOUT_FOR_SCANOUT : MIPTREE_LAYOUT_DISABLE_AUX;
+      is_winsys_image ? 0 : MIPTREE_LAYOUT_DISABLE_AUX;
 
    /* Disable creation of the texture's aux buffers because the driver exposes
     * no EGL API to manage them. That is, there is no API for resolving the aux
@@ -974,6 +971,13 @@ intel_miptree_create_for_dri_image(struct brw_context *brw,
       }
    }
 
+   /* If this is a window-system image, then we can no longer assume it's
+    * cache-coherent because it may suddenly get scanned out which destroys
+    * coherency.
+    */
+   if (is_winsys_image)
+      image->bo->cache_coherent = false;
+
    if (!intel_miptree_alloc_aux(brw, mt)) {
       intel_miptree_release(&mt);
       return NULL;
index 534ed6c7c9195470ba8a9eef9b4350ed604dfb9b..763617244194704eb149ac29f0a1b1011a1fd879 100644 (file)
@@ -356,8 +356,6 @@ enum {
    MIPTREE_LAYOUT_TILING_NONE              = 1 << 6,
    MIPTREE_LAYOUT_TILING_ANY               = MIPTREE_LAYOUT_TILING_Y |
                                              MIPTREE_LAYOUT_TILING_NONE,
-
-   MIPTREE_LAYOUT_FOR_SCANOUT              = 1 << 7,
 };
 
 struct intel_mipmap_tree *intel_miptree_create(struct brw_context *brw,