freedreno,v3d: YUV formats are supported as external-only dmabuf modifiers.
This patch fix red label issues on video for Raspberry 4-64 Mesa VC4 driver and for iMX53 Adreno A200 GPU using the Mesa Freedreno driver Issue was originally reported in meta-webkit [1] and later contributed in Mesa [2] where it was already merged in master. * Commits for VC4 [3] had been nominated for stable 21.1 and already in 21.2 (available in honister). * Commit for Freedreno [4] also reported (not merged yet). [1] https://github.com/Igalia/meta-webkit/issues/185 [2] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10524 [3] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10534 [4] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12991 Signed-off-by: Pablo Saavedra <psaave...@igalia.com> --- ...rmats-are-supported-as-external-only.patch | 31 +++++++++++++++++ ...at-is_dmabuf_modifier_supported-are-.patch | 32 +++++++++++++++++ ...at-query_dmabuf_modifiers-are-extern.patch | 31 +++++++++++++++++ ...OD_BROADCOM_SAND128-only-available-f.patch | 34 +++++++++++++++++++ meta/recipes-graphics/mesa/mesa.inc | 4 +++ 5 files changed, 132 insertions(+) create mode 100644 meta/recipes-graphics/mesa/files/0001-freedreno-YUV-formats-are-supported-as-external-only.patch create mode 100644 meta/recipes-graphics/mesa/files/0001-v3d-YUV-formats-at-is_dmabuf_modifier_supported-are-.patch create mode 100644 meta/recipes-graphics/mesa/files/0002-v3d-YUV-formats-at-query_dmabuf_modifiers-are-extern.patch create mode 100644 meta/recipes-graphics/mesa/files/0003-v3d-DRM_FORMAT_MOD_BROADCOM_SAND128-only-available-f.patch diff --git a/meta/recipes-graphics/mesa/files/0001-freedreno-YUV-formats-are-supported-as-external-only.patch b/meta/recipes-graphics/mesa/files/0001-freedreno-YUV-formats-are-supported-as-external-only.patch new file mode 100644 index 0000000000..92f4b40997 --- /dev/null +++ b/meta/recipes-graphics/mesa/files/0001-freedreno-YUV-formats-are-supported-as-external-only.patch @@ -0,0 +1,31 @@ +From e5b33a4b744a3114ff054ae577ac7802d9221490 Mon Sep 17 00:00:00 2001 +From: Pablo Saavedra <psaave...@igalia.com> +Date: Thu, 23 Sep 2021 10:23:56 +0200 +Subject: [PATCH] freedreno: YUV formats are supported as external-only dmabuf + modifiers + +Based on https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10524 + +Co-authored-by: Alberto Garcia <be...@igalia.com> +Co-authored-by: Jose Maria Casanova Crespo <jmcasan...@igalia.com> +Signed-off-by: Pablo Saavedra <psaave...@igalia.com> +--- + src/gallium/drivers/freedreno/freedreno_screen.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c +index a9cd0e2..dc2b79d 100644 +--- a/src/gallium/drivers/freedreno/freedreno_screen.c ++++ b/src/gallium/drivers/freedreno/freedreno_screen.c +@@ -804,7 +804,7 @@ fd_screen_query_dmabuf_modifiers(struct pipe_screen *pscreen, + modifiers[num] = screen->supported_modifiers[i]; + + if (external_only) +- external_only[num] = 0; ++ external_only[num] = util_format_is_yuv(format); + + num++; + } +-- +2.30.2 + diff --git a/meta/recipes-graphics/mesa/files/0001-v3d-YUV-formats-at-is_dmabuf_modifier_supported-are-.patch b/meta/recipes-graphics/mesa/files/0001-v3d-YUV-formats-at-is_dmabuf_modifier_supported-are-.patch new file mode 100644 index 0000000000..c2e5462dd1 --- /dev/null +++ b/meta/recipes-graphics/mesa/files/0001-v3d-YUV-formats-at-is_dmabuf_modifier_supported-are-.patch @@ -0,0 +1,32 @@ +From 389bffa0981bba60f9d081063c150fb17e497c4a Mon Sep 17 00:00:00 2001 +From: Jose Maria Casanova Crespo <jmcasan...@igalia.com> +Date: Thu, 29 Apr 2021 18:15:27 +0200 +Subject: [PATCH] v3d: YUV formats at is_dmabuf_modifier_supported are + external_only +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes Issue https://github.com/Igalia/meta-webkit/issues/185 +"Issue Raspberry 4-64 + Mesa VC4 driver + Gstreamer = red Label on video" + +Fixes: 6ee10ab3de86 "gallium: Add pipe_screen::is_dmabuf_modifier_supported" +Reviewed-by: Alejandro Piñeiro <apinhe...@igalia.com> +Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10524> +--- + src/gallium/drivers/v3d/v3d_screen.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c +index 4f69c20..a5c94db 100644 +--- a/src/gallium/drivers/v3d/v3d_screen.c ++++ b/src/gallium/drivers/v3d/v3d_screen.c +@@ -670,7 +670,7 @@ v3d_screen_is_dmabuf_modifier_supported(struct pipe_screen *pscreen, + for (i = 0; i < ARRAY_SIZE(v3d_available_modifiers); i++) { + if (v3d_available_modifiers[i] == modifier) { + if (external_only) +- *external_only = false; ++ *external_only = util_format_is_yuv(format); + + return true; + } diff --git a/meta/recipes-graphics/mesa/files/0002-v3d-YUV-formats-at-query_dmabuf_modifiers-are-extern.patch b/meta/recipes-graphics/mesa/files/0002-v3d-YUV-formats-at-query_dmabuf_modifiers-are-extern.patch new file mode 100644 index 0000000000..dfbe994048 --- /dev/null +++ b/meta/recipes-graphics/mesa/files/0002-v3d-YUV-formats-at-query_dmabuf_modifiers-are-extern.patch @@ -0,0 +1,31 @@ +From a5f74e140cce671dd9a04d3b3541cd3faf91916b Mon Sep 17 00:00:00 2001 +From: Jose Maria Casanova Crespo <jmcasan...@igalia.com> +Date: Thu, 29 Apr 2021 18:37:25 +0200 +Subject: [PATCH] v3d: YUV formats at query_dmabuf_modifiers are external_only +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes Issue https://github.com/Igalia/meta-webkit/issues/185 +"Issue Raspberry 4-64 + Mesa VC4 driver + Gstreamer = red Label on video" + +Fixes: 95c4f0f91098 "v3d: Enables DRM_FORMAT_MOD_BROADCOM_SAND128 support" +Reviewed-by: Alejandro Piñeiro <apinhe...@igalia.com> +Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10524> +--- + src/gallium/drivers/v3d/v3d_screen.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c +index a5c94db..edde17d 100644 +--- a/src/gallium/drivers/v3d/v3d_screen.c ++++ b/src/gallium/drivers/v3d/v3d_screen.c +@@ -655,7 +655,7 @@ v3d_screen_query_dmabuf_modifiers(struct pipe_screen *pscreen, + for (i = 0; i < *count; i++) { + modifiers[i] = v3d_available_modifiers[i]; + if (external_only) +- external_only[i] = false; ++ external_only[i] = util_format_is_yuv(format); + } + } + diff --git a/meta/recipes-graphics/mesa/files/0003-v3d-DRM_FORMAT_MOD_BROADCOM_SAND128-only-available-f.patch b/meta/recipes-graphics/mesa/files/0003-v3d-DRM_FORMAT_MOD_BROADCOM_SAND128-only-available-f.patch new file mode 100644 index 0000000000..7d60a31f53 --- /dev/null +++ b/meta/recipes-graphics/mesa/files/0003-v3d-DRM_FORMAT_MOD_BROADCOM_SAND128-only-available-f.patch @@ -0,0 +1,34 @@ +From cd2dce0257608fde2b9dd21429d1d7356e37abe1 Mon Sep 17 00:00:00 2001 +From: Jose Maria Casanova Crespo <jmcasan...@igalia.com> +Date: Thu, 29 Apr 2021 18:47:53 +0200 +Subject: [PATCH] v3d: DRM_FORMAT_MOD_BROADCOM_SAND128 only available for NV12 + format. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +We were exposing as available DRM_FORMAT_MOD_BROADCOM_SAND128 for +any format. + +Fixes: 95c4f0f91098 "v3d: Enables DRM_FORMAT_MOD_BROADCOM_SAND128 support" +Reviewed-by: Alejandro Piñeiro <apinhe...@igalia.com> +Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10524> +--- + src/gallium/drivers/v3d/v3d_screen.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c +index edde17d..684f912 100644 +--- a/src/gallium/drivers/v3d/v3d_screen.c ++++ b/src/gallium/drivers/v3d/v3d_screen.c +@@ -646,6 +646,10 @@ v3d_screen_query_dmabuf_modifiers(struct pipe_screen *pscreen, + int i; + int num_modifiers = ARRAY_SIZE(v3d_available_modifiers); + ++ /* Expose DRM_FORMAT_MOD_BROADCOM_SAND128 only for PIPE_FORMAT_NV12 */ ++ if (format != PIPE_FORMAT_NV12) ++ num_modifiers--; ++ + if (!modifiers) { + *count = num_modifiers; + return; diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc index a85f94c75e..8d8871aa5d 100644 --- a/meta/recipes-graphics/mesa/mesa.inc +++ b/meta/recipes-graphics/mesa/mesa.inc @@ -19,6 +19,10 @@ SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \ file://0002-meson.build-make-TLS-ELF-optional.patch \ file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \ file://0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch \ + file://0001-v3d-YUV-formats-at-is_dmabuf_modifier_supported-are-.patch \ + file://0002-v3d-YUV-formats-at-query_dmabuf_modifiers-are-extern.patch \ + file://0003-v3d-DRM_FORMAT_MOD_BROADCOM_SAND128-only-available-f.patch \ + file://0001-freedreno-YUV-formats-are-supported-as-external-only.patch \ " SRC_URI[sha256sum] = "565c6f4bd2d5747b919454fc1d439963024fc78ca56fd05158c3b2cde2f6912b" -- 2.30.2
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#156259): https://lists.openembedded.org/g/openembedded-core/message/156259 Mute This Topic: https://lists.openembedded.org/mt/85809858/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-