zink: store drm format as internal_format for imported resources
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Tue, 17 Jan 2023 19:43:51 +0000 (14:43 -0500)
committerEric Engestrom <eric@engestrom.ch>
Thu, 26 Jan 2023 15:40:32 +0000 (15:40 +0000)
internal_format is the "real" format of a resource, and the "real" format
of imported resources is the external-facing format, not the pipe format

this ensures the correct format is available for internal ops, such as nplanes queries

Fixes: 2e2775c11b0 ("zink: fix PIPE_RESOURCE_PARAM_NPLANES with format modifier")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20753>
(cherry picked from commit 072e29a22e2cd3c738a3bee463f6aebd40159966)

.pick_status.json
src/gallium/drivers/zink/zink_resource.c

index 92ae198..6de3c56 100644 (file)
         "description": "zink: store drm format as internal_format for imported resources",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "2e2775c11b0d17472afd53b1398a3af7d9086a75"
     },
index a5b5293..c0d7dce 100644 (file)
@@ -1541,6 +1541,7 @@ zink_resource_from_handle(struct pipe_screen *pscreen,
          res->valid = true;
       else
          tc_buffer_disable_cpu_storage(pres);
+      res->internal_format = whandle->format;
    }
    return pres;
 #else