lima: use linear layout for shared buffers if modifier is not specified
authorVasily Khoruzhick <anarsoul@gmail.com>
Tue, 10 Dec 2019 02:23:17 +0000 (18:23 -0800)
committerVasily Khoruzhick <anarsoul@gmail.com>
Fri, 10 Jan 2020 01:13:47 +0000 (01:13 +0000)
Use linear layout for shared buffers if modifier is not specified
and use linear layout when importing buffers with invalid modifier.

Fixes: 01a451b04d2d ("lima: handle DRM_FORMAT_MOD_INVALID in resource_from_handle()")
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
src/gallium/drivers/lima/lima_resource.c

index 1b589ed5279632bf0946f16d6d23bffe084dfa94..db116d06a83126ff6071ffa56d317c18af11220a 100644 (file)
@@ -193,6 +193,10 @@ _lima_resource_create_with_modifiers(struct pipe_screen *pscreen,
    if (templat->bind & (PIPE_BIND_LINEAR | PIPE_BIND_SCANOUT))
       should_tile = false;
 
+   /* If there's no user modifiers and buffer is shared we use linear */
+   if (!has_user_modifiers && (templat->bind & PIPE_BIND_SHARED))
+      should_tile = false;
+
    if (drm_find_modifier(DRM_FORMAT_MOD_LINEAR, modifiers, count))
       should_tile = false;
 
@@ -330,7 +334,10 @@ lima_resource_from_handle(struct pipe_screen *pscreen,
       res->tiled = true;
       break;
    case DRM_FORMAT_MOD_INVALID:
-      res->tiled = screen->ro == NULL;
+      /* Modifier wasn't specified and it's shared buffer. We create these
+       * as linear, so disable tiling.
+       */
+      res->tiled = false;
       break;
    default:
       fprintf(stderr, "Attempted to import unsupported modifier 0x%llx\n",