Hi Peter

This patch looks fine, please add

Upstream-Status: Backport [reason]

to the patch and resend.

On 5/15/19 2:17 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.grif...@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.grif...@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.grif...@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

Reply via email to