Message ID | 1557914111-18756-1-git-send-email-peter.griffin@linaro.org |
---|---|
State | New |
Headers | show |
Series | [<thud>,v2] mesa: Add backport of freedreno dmabuf modifiers patch. | expand |
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" > -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
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"
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 -- 2.7.4