freedreno: Handle DRM_FORMAT_MOD_INVALID in shared code
authorKristian H. Kristensen <hoegsberg@google.com>
Tue, 23 Jun 2020 17:39:14 +0000 (10:39 -0700)
committerMarge Bot <eric+marge@anholt.net>
Tue, 23 Jun 2020 19:10:40 +0000 (19:10 +0000)
layout_resource_for_modifier() needs to handle DRM_FORMAT_MOD_INVALID
as well, since src/gallium/frontends/dri/dri2.c uses this to indicate
"no modifier" when it's called through the older non-modifier entry
points.

This is similar to 334788d4 ("freedreno: allow INVALID modifier") but
for the generic implementation.

Fixes: 98910626 ("freedreno/a6xx: Implement layout for DRM_FORMAT_MOD_QCOM_COMPRESSED")
Closes: #3154
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5611>

src/gallium/drivers/freedreno/freedreno_resource.c

index 7343dbcc9c61f9c9b976ab3abb658c4bbead8ae1..faafd6fe82db09d42b3ae51c7f79e76251df7bd7 100644 (file)
@@ -1157,6 +1157,12 @@ fd_layout_resource_for_modifier(struct fd_resource *rsc, uint64_t modifier)
 {
        switch (modifier) {
        case DRM_FORMAT_MOD_LINEAR:
+               /* The dri gallium frontend will pass DRM_FORMAT_MOD_INVALID to us
+                * when it's called through any of the non-modifier BO create entry
+                * points.  Other drivers will determine tiling from the kernel or
+                * other legacy backchannels, but for freedreno it just means
+                * LINEAR. */
+       case DRM_FORMAT_MOD_INVALID:
                return 0;
        default:
                return -1;