* [<thud> v2] mesa: Add backport of freedreno dmabuf modifiers patch.
@ 2019-05-15 9:55 Peter Griffin
2019-05-20 20:43 ` Khem Raj
0 siblings, 1 reply; 2+ messages in thread
From: Peter Griffin @ 2019-05-15 9:55 UTC (permalink / raw)
To: openembedded-core, nicolas.dechesne
This is required to get weston-simple-dmabuf-drm to work
and also now required by Chromium v73 ozone-wayland backend.
It is present in mesa 19.0, backporting to Thud which is
on 18.1.9.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
---
...-freedreno-add-query-for-dmabuf-modifiers.patch | 101 +++++++++++++++++++++
meta/recipes-graphics/mesa/mesa_18.1.9.bb | 1 +
2 files changed, 102 insertions(+)
create mode 100644 meta/recipes-graphics/mesa/files/0001-freedreno-add-query-for-dmabuf-modifiers.patch
diff --git a/meta/recipes-graphics/mesa/files/0001-freedreno-add-query-for-dmabuf-modifiers.patch b/meta/recipes-graphics/mesa/files/0001-freedreno-add-query-for-dmabuf-modifiers.patch
new file mode 100644
index 0000000..57ebd8f
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-freedreno-add-query-for-dmabuf-modifiers.patch
@@ -0,0 +1,101 @@
+From c4bee1a1b3fb224002fe8c263bedbce1b705ed49 Mon Sep 17 00:00:00 2001
+From: Peter Griffin <peter.griffin@linaro.org>
+Date: Mon, 13 May 2019 19:18:56 +0100
+Subject: [PATCH] freedreno: add query for dmabuf modifiers
+
+Backport of mesa 7c4b9510d by Fritz Koenig. Tested with Weston
+and weston-simple-dmabuf-drm client.
+
+Upstream-Status: Backport from 19.0
+
+Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
+---
+ src/gallium/drivers/freedreno/freedreno_screen.c | 43 ++++++++++++++++++++++++
+ src/gallium/drivers/freedreno/freedreno_screen.h | 3 ++
+ 2 files changed, 46 insertions(+)
+
+diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c
+index f338d75..cbb5b8a 100644
+--- a/src/gallium/drivers/freedreno/freedreno_screen.c
++++ b/src/gallium/drivers/freedreno/freedreno_screen.c
+@@ -40,6 +40,7 @@
+
+ #include "util/os_time.h"
+
++#include <drm_fourcc.h>
+ #include <errno.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -732,6 +733,37 @@ fd_screen_bo_get_handle(struct pipe_screen *pscreen,
+ }
+ }
+
++static void
++fd_screen_query_dmabuf_modifiers(struct pipe_screen *pscreen,
++ enum pipe_format format,
++ int max, uint64_t *modifiers,
++ unsigned int *external_only,
++ int *count)
++{
++ struct fd_screen *screen = fd_screen(pscreen);
++ int i, num = 0;
++
++ max = MIN2(max, screen->num_supported_modifiers);
++
++ if (!max) {
++ max = screen->num_supported_modifiers;
++ external_only = NULL;
++ modifiers = NULL;
++ }
++
++ for (i = 0; i < max; i++) {
++ if (modifiers)
++ modifiers[num] = screen->supported_modifiers[i];
++
++ if (external_only)
++ external_only[num] = 0;
++
++ num++;
++ }
++
++ *count = num;
++}
++
+ struct fd_bo *
+ fd_screen_bo_from_handle(struct pipe_screen *pscreen,
+ struct winsys_handle *whandle)
+@@ -921,6 +953,17 @@ fd_screen_create(struct fd_device *dev)
+ pscreen->fence_finish = fd_fence_finish;
+ pscreen->fence_get_fd = fd_fence_get_fd;
+
++ pscreen->query_dmabuf_modifiers = fd_screen_query_dmabuf_modifiers;
++
++ if (!screen->supported_modifiers) {
++ static const uint64_t supported_modifiers[] = {
++ DRM_FORMAT_MOD_LINEAR,
++ };
++
++ screen->supported_modifiers = supported_modifiers;
++ screen->num_supported_modifiers = ARRAY_SIZE(supported_modifiers);
++ }
++
+ slab_create_parent(&screen->transfer_pool, sizeof(struct fd_transfer), 16);
+
+ return pscreen;
+diff --git a/src/gallium/drivers/freedreno/freedreno_screen.h b/src/gallium/drivers/freedreno/freedreno_screen.h
+index 6be739a..5558066 100644
+--- a/src/gallium/drivers/freedreno/freedreno_screen.h
++++ b/src/gallium/drivers/freedreno/freedreno_screen.h
+@@ -89,6 +89,9 @@ struct fd_screen {
+ struct fd_batch_cache batch_cache;
+
+ bool reorder;
++
++ unsigned num_supported_modifiers;
++ const uint64_t *supported_modifiers;
+ };
+
+ static inline struct fd_screen *
+--
+2.7.4
+
diff --git a/meta/recipes-graphics/mesa/mesa_18.1.9.bb b/meta/recipes-graphics/mesa/mesa_18.1.9.bb
index 86d6a6b..0558690 100644
--- a/meta/recipes-graphics/mesa/mesa_18.1.9.bb
+++ b/meta/recipes-graphics/mesa/mesa_18.1.9.bb
@@ -7,6 +7,7 @@ SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \
file://0004-Use-Python-3-to-execute-the-scripts.patch \
file://0005-dri-i965-Add-missing-time.h-include.patch \
file://0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch \
+ file://0001-freedreno-add-query-for-dmabuf-modifiers.patch \
"
SRC_URI[md5sum] = "2f8d2098ab478bc3907e42130577b54a"
--
2.7.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [<thud> v2] mesa: Add backport of freedreno dmabuf modifiers patch.
2019-05-15 9:55 [<thud> v2] mesa: Add backport of freedreno dmabuf modifiers patch Peter Griffin
@ 2019-05-20 20:43 ` Khem Raj
0 siblings, 0 replies; 2+ messages in thread
From: Khem Raj @ 2019-05-20 20:43 UTC (permalink / raw)
To: Peter Griffin, openembedded-core, nicolas.dechesne
On 5/15/19 2:55 AM, Peter Griffin wrote:
> This is required to get weston-simple-dmabuf-drm to work
> and also now required by Chromium v73 ozone-wayland backend.
>
> It is present in mesa 19.0, backporting to Thud which is
> on 18.1.9.
>
> Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
> ---
> ...-freedreno-add-query-for-dmabuf-modifiers.patch | 101 +++++++++++++++++++++
> meta/recipes-graphics/mesa/mesa_18.1.9.bb | 1 +
> 2 files changed, 102 insertions(+)
> create mode 100644 meta/recipes-graphics/mesa/files/0001-freedreno-add-query-for-dmabuf-modifiers.patch
>
> diff --git a/meta/recipes-graphics/mesa/files/0001-freedreno-add-query-for-dmabuf-modifiers.patch b/meta/recipes-graphics/mesa/files/0001-freedreno-add-query-for-dmabuf-modifiers.patch
> new file mode 100644
> index 0000000..57ebd8f
> --- /dev/null
> +++ b/meta/recipes-graphics/mesa/files/0001-freedreno-add-query-for-dmabuf-modifiers.patch
> @@ -0,0 +1,101 @@
> +From c4bee1a1b3fb224002fe8c263bedbce1b705ed49 Mon Sep 17 00:00:00 2001
> +From: Peter Griffin <peter.griffin@linaro.org>
> +Date: Mon, 13 May 2019 19:18:56 +0100
> +Subject: [PATCH] freedreno: add query for dmabuf modifiers
> +
> +Backport of mesa 7c4b9510d by Fritz Koenig. Tested with Weston
> +and weston-simple-dmabuf-drm client.
> +
> +Upstream-Status: Backport from 19.0
https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines#Patch_Header_Recommendations:_Upstream-Status
> +
> +Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
> +---
> + src/gallium/drivers/freedreno/freedreno_screen.c | 43 ++++++++++++++++++++++++
> + src/gallium/drivers/freedreno/freedreno_screen.h | 3 ++
> + 2 files changed, 46 insertions(+)
> +
> +diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c
> +index f338d75..cbb5b8a 100644
> +--- a/src/gallium/drivers/freedreno/freedreno_screen.c
> ++++ b/src/gallium/drivers/freedreno/freedreno_screen.c
> +@@ -40,6 +40,7 @@
> +
> + #include "util/os_time.h"
> +
> ++#include <drm_fourcc.h>
> + #include <errno.h>
> + #include <stdio.h>
> + #include <stdlib.h>
> +@@ -732,6 +733,37 @@ fd_screen_bo_get_handle(struct pipe_screen *pscreen,
> + }
> + }
> +
> ++static void
> ++fd_screen_query_dmabuf_modifiers(struct pipe_screen *pscreen,
> ++ enum pipe_format format,
> ++ int max, uint64_t *modifiers,
> ++ unsigned int *external_only,
> ++ int *count)
> ++{
> ++ struct fd_screen *screen = fd_screen(pscreen);
> ++ int i, num = 0;
> ++
> ++ max = MIN2(max, screen->num_supported_modifiers);
> ++
> ++ if (!max) {
> ++ max = screen->num_supported_modifiers;
> ++ external_only = NULL;
> ++ modifiers = NULL;
> ++ }
> ++
> ++ for (i = 0; i < max; i++) {
> ++ if (modifiers)
> ++ modifiers[num] = screen->supported_modifiers[i];
> ++
> ++ if (external_only)
> ++ external_only[num] = 0;
> ++
> ++ num++;
> ++ }
> ++
> ++ *count = num;
> ++}
> ++
> + struct fd_bo *
> + fd_screen_bo_from_handle(struct pipe_screen *pscreen,
> + struct winsys_handle *whandle)
> +@@ -921,6 +953,17 @@ fd_screen_create(struct fd_device *dev)
> + pscreen->fence_finish = fd_fence_finish;
> + pscreen->fence_get_fd = fd_fence_get_fd;
> +
> ++ pscreen->query_dmabuf_modifiers = fd_screen_query_dmabuf_modifiers;
> ++
> ++ if (!screen->supported_modifiers) {
> ++ static const uint64_t supported_modifiers[] = {
> ++ DRM_FORMAT_MOD_LINEAR,
> ++ };
> ++
> ++ screen->supported_modifiers = supported_modifiers;
> ++ screen->num_supported_modifiers = ARRAY_SIZE(supported_modifiers);
> ++ }
> ++
> + slab_create_parent(&screen->transfer_pool, sizeof(struct fd_transfer), 16);
> +
> + return pscreen;
> +diff --git a/src/gallium/drivers/freedreno/freedreno_screen.h b/src/gallium/drivers/freedreno/freedreno_screen.h
> +index 6be739a..5558066 100644
> +--- a/src/gallium/drivers/freedreno/freedreno_screen.h
> ++++ b/src/gallium/drivers/freedreno/freedreno_screen.h
> +@@ -89,6 +89,9 @@ struct fd_screen {
> + struct fd_batch_cache batch_cache;
> +
> + bool reorder;
> ++
> ++ unsigned num_supported_modifiers;
> ++ const uint64_t *supported_modifiers;
> + };
> +
> + static inline struct fd_screen *
> +--
> +2.7.4
> +
> diff --git a/meta/recipes-graphics/mesa/mesa_18.1.9.bb b/meta/recipes-graphics/mesa/mesa_18.1.9.bb
> index 86d6a6b..0558690 100644
> --- a/meta/recipes-graphics/mesa/mesa_18.1.9.bb
> +++ b/meta/recipes-graphics/mesa/mesa_18.1.9.bb
> @@ -7,6 +7,7 @@ SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \
> file://0004-Use-Python-3-to-execute-the-scripts.patch \
> file://0005-dri-i965-Add-missing-time.h-include.patch \
> file://0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch \
> + file://0001-freedreno-add-query-for-dmabuf-modifiers.patch \
> "
>
> SRC_URI[md5sum] = "2f8d2098ab478bc3907e42130577b54a"
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-05-20 20:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-15 9:55 [<thud> v2] mesa: Add backport of freedreno dmabuf modifiers patch Peter Griffin
2019-05-20 20:43 ` Khem Raj
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.