From 247b8f2924b7832d8520e890cff6891217f5a860 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 3 Aug 2022 13:22:37 -0400 Subject: [PATCH] zink: add all format modifiers when adding for dmabuf export adding LINEAR before was a good starter step, but LINEAR might not actually be supported (e.g., nvidia) cc: mesa-stable Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_resource.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 09eba648886..b042c602fa1 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -1234,9 +1234,10 @@ add_resource_bind(struct zink_context *ctx, struct zink_resource *res, unsigned res->base.b.bind |= bind; struct zink_resource_object *old_obj = res->obj; if (bind & ZINK_BIND_DMABUF && !res->modifiers_count && screen->info.have_EXT_image_drm_format_modifier) { - res->modifiers_count = 1; + res->modifiers_count = screen->modifier_props[res->base.b.format].drmFormatModifierCount; res->modifiers = malloc(res->modifiers_count * sizeof(uint64_t)); - res->modifiers[0] = DRM_FORMAT_MOD_LINEAR; + for (unsigned i = 0; i < screen->modifier_props[res->base.b.format].drmFormatModifierCount; i++) + res->modifiers[i] = screen->modifier_props[res->base.b.format].pDrmFormatModifierProperties[i].drmFormatModifier; } struct zink_resource_object *new_obj = resource_object_create(screen, &res->base.b, NULL, &res->linear, res->modifiers, res->modifiers_count, NULL); if (!new_obj) {