mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
gallium/dri: Make YUV formats we're going to emulate external-only.
If we're going to have to bind them as separate planes with colorspace conversion for sampling on the frontend, then we need to report that they're only for external-image samplers, otherwise the lowering won't be applied. Fixes:4e3a7dcf("gallium: enable EGL_EXT_image_dma_buf_import_modifiers unconditionally") Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13038> (cherry picked from commitc530510514)
This commit is contained in:
parent
b40c0f1bc2
commit
7f8c5eae38
2 changed files with 15 additions and 7 deletions
|
|
@ -742,7 +742,7 @@
|
|||
"description": "gallium/dri: Make YUV formats we're going to emulate external-only.",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "4e3a7dcf6ee4946c46ae8b35e7883a49859ef6fb"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1536,16 +1536,24 @@ dri2_query_dma_buf_modifiers(__DRIscreen *_screen, int fourcc, int max,
|
|||
|
||||
format = map->pipe_format;
|
||||
|
||||
bool native_sampling = pscreen->is_format_supported(pscreen, format, screen->target, 0, 0,
|
||||
PIPE_BIND_SAMPLER_VIEW);
|
||||
if (pscreen->is_format_supported(pscreen, format, screen->target, 0, 0,
|
||||
PIPE_BIND_RENDER_TARGET) ||
|
||||
pscreen->is_format_supported(pscreen, format, screen->target, 0, 0,
|
||||
PIPE_BIND_SAMPLER_VIEW) ||
|
||||
dri2_yuv_dma_buf_supported(screen, map)) {
|
||||
if (pscreen->query_dmabuf_modifiers != NULL)
|
||||
PIPE_BIND_RENDER_TARGET) ||
|
||||
native_sampling ||
|
||||
dri2_yuv_dma_buf_supported(screen, map)) {
|
||||
if (pscreen->query_dmabuf_modifiers != NULL) {
|
||||
pscreen->query_dmabuf_modifiers(pscreen, format, max, modifiers,
|
||||
external_only, count);
|
||||
else
|
||||
if (!native_sampling && external_only) {
|
||||
/* To support it using YUV lowering, we need it to be samplerExternalOES.
|
||||
*/
|
||||
for (int i = 0; i < *count; i++)
|
||||
external_only[i] = true;
|
||||
}
|
||||
} else {
|
||||
*count = 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue