From de052dfae4a9f95ea0b4fa56aa6bf241a0fbefa2 Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Wed, 15 Jan 2020 12:07:44 +0100 Subject: [PATCH] etnaviv: always try to create KMS side handles for imported resources By creating the KMS side handles we allow GBM to return the proper KMS side GEM handles for imported buffers. Always creating the KMS side handles adds a bit of overhead, as we don't need them on all imported resources, but seems like the most robust solution for now. Cc: mesa-stable Signed-off-by: Lucas Stach Reviewed-by: Simon Ser Reviewed-by: Christian Gmeiner Part-of: (cherry picked from commit 826f95778a4edf7ed912fb5f90a05febfbd3e037) --- .pick_status.json | 2 +- src/gallium/drivers/etnaviv/etnaviv_resource.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 6a1c13229a3..7fd6ada5674 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -274,7 +274,7 @@ "description": "etnaviv: always try to create KMS side handles for imported resources", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c b/src/gallium/drivers/etnaviv/etnaviv_resource.c index 3d1552e4c23..aa47be8ed07 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_resource.c +++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c @@ -566,6 +566,16 @@ etna_resource_from_handle(struct pipe_screen *pscreen, if (!rsc->pending_ctx) goto fail; + if (screen->ro) { + struct pipe_resource *imp_prsc = prsc; + do { + etna_resource(imp_prsc)->scanout = + renderonly_create_gpu_import_for_resource(imp_prsc, screen->ro, + NULL); + /* failure is expected for scanout incompatible buffers */ + } while ((imp_prsc = imp_prsc->next)); + } + return prsc; fail: