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 <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17775>
This commit is contained in:
Mike Blumenkrantz
2022-08-03 13:22:37 -04:00
committed by Marge Bot
parent 5e8ec87b68
commit 247b8f2924

View File

@@ -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) {