mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-03 13:00:37 +01:00
v3d, vc4: Fix dmabuf import for non-scanout buffers
Failure to create a buffer for scanout should not be fatal when
importing a buffer. Buffers allocated from a render-only device may not
be able to scanned out directly but can still be used for other
rendering purposes (e.g. as a texture).
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12081>
(cherry picked from commit 7bcb223639)
This commit is contained in:
parent
39ffd918cd
commit
ca5fbe8517
4 changed files with 7 additions and 13 deletions
|
|
@ -184,7 +184,7 @@
|
|||
"description": "v3d, vc4: Fix dmabuf import for non-scanout buffers",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ spec@ext_framebuffer_object@fbo-blending-formats,Fail
|
|||
spec@ext_framebuffer_object@fbo-blending-formats@GL_RGB10,Fail
|
||||
spec@ext_framebuffer_object@getteximage-formats init-by-clear-and-render,Fail
|
||||
spec@ext_framebuffer_object@getteximage-formats init-by-rendering,Fail
|
||||
spec@ext_image_dma_buf_import@ext_image_dma_buf_import-export-tex,Crash
|
||||
spec@ext_image_dma_buf_import@ext_image_dma_buf_import-export-tex,Fail
|
||||
spec@ext_packed_depth_stencil@texwrap formats bordercolor,Fail
|
||||
spec@ext_packed_depth_stencil@texwrap formats bordercolor@GL_DEPTH24_STENCIL8- border color only,Fail
|
||||
spec@ext_packed_depth_stencil@texwrap formats bordercolor-swizzled,Fail
|
||||
|
|
|
|||
|
|
@ -432,10 +432,11 @@ v3d_resource_get_handle(struct pipe_screen *pscreen,
|
|||
return v3d_bo_flink(bo, &whandle->handle);
|
||||
case WINSYS_HANDLE_TYPE_KMS:
|
||||
if (screen->ro) {
|
||||
assert(rsc->scanout);
|
||||
bool ok = renderonly_get_handle(rsc->scanout, whandle);
|
||||
whandle->stride = rsc->slices[0].stride;
|
||||
return ok;
|
||||
if (renderonly_get_handle(rsc->scanout, whandle)) {
|
||||
whandle->stride = rsc->slices[0].stride;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
whandle->handle = bo->handle;
|
||||
return true;
|
||||
|
|
@ -928,10 +929,6 @@ v3d_resource_from_handle(struct pipe_screen *pscreen,
|
|||
renderonly_create_gpu_import_for_resource(prsc,
|
||||
screen->ro,
|
||||
NULL);
|
||||
if (!rsc->scanout) {
|
||||
fprintf(stderr, "Failed to create scanout resource.\n");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
if (rsc->tiled && whandle->stride != slice->stride) {
|
||||
|
|
|
|||
|
|
@ -320,7 +320,6 @@ vc4_resource_get_handle(struct pipe_screen *pscreen,
|
|||
return vc4_bo_flink(rsc->bo, &whandle->handle);
|
||||
case WINSYS_HANDLE_TYPE_KMS:
|
||||
if (screen->ro) {
|
||||
assert(rsc->scanout);
|
||||
return renderonly_get_handle(rsc->scanout, whandle);
|
||||
}
|
||||
whandle->handle = rsc->bo->handle;
|
||||
|
|
@ -689,8 +688,6 @@ vc4_resource_from_handle(struct pipe_screen *pscreen,
|
|||
renderonly_create_gpu_import_for_resource(prsc,
|
||||
screen->ro,
|
||||
NULL);
|
||||
if (!rsc->scanout)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (rsc->tiled && whandle->stride != slice->stride) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue