freedreno: Disallow tiled if SHARED and not QCOM_COMPRESSED
authorRob Clark <robdclark@chromium.org>
Sun, 25 Oct 2020 21:13:38 +0000 (14:13 -0700)
committerMarge Bot <eric+marge@anholt.net>
Mon, 26 Oct 2020 14:36:24 +0000 (14:36 +0000)
If the user is not aware of modifiers, and wants to allocate a shared
resource, we shouldn't leave them with tiled.

Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3678
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7308>

src/gallium/drivers/freedreno/freedreno_resource.c

index 142dade..2851f66 100644 (file)
@@ -936,8 +936,12 @@ fd_resource_allocate_and_resolve(struct pipe_screen *pscreen,
         * should.)
         */
        bool allow_ubwc = drm_find_modifier(DRM_FORMAT_MOD_INVALID, modifiers, count);
-       if (tmpl->bind & PIPE_BIND_SHARED)
+       if (tmpl->bind & PIPE_BIND_SHARED) {
                allow_ubwc = drm_find_modifier(DRM_FORMAT_MOD_QCOM_COMPRESSED, modifiers, count);
+               if (!allow_ubwc) {
+                       linear = true;
+               }
+       }
 
        allow_ubwc &= !(fd_mesa_debug & FD_DBG_NOUBWC);