Module: Mesa
Branch: master
Commit: e3591b03393402321d24e10b93ec5a827a4b9b6a
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e3591b03393402321d24e10b93ec5a827a4b9b6a

Author: Jonathan Marek <[email protected]>
Date:   Wed Feb 20 11:50:47 2019 +0100

freedreno: use renderonly path for buffers allocated with modifiers

Now that freedreno has create_with_modifiers(), this "hack" is needed to
make some cases work. Copied from vc4.

Fixes: 41ddf1d1

Signed-off-by: Jonathan Marek <[email protected]>

---

 src/gallium/drivers/freedreno/freedreno_resource.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c 
b/src/gallium/drivers/freedreno/freedreno_resource.c
index 163fa70312a..144d725fdec 100644
--- a/src/gallium/drivers/freedreno/freedreno_resource.c
+++ b/src/gallium/drivers/freedreno/freedreno_resource.c
@@ -860,7 +860,13 @@ fd_resource_create_with_modifiers(struct pipe_screen 
*pscreen,
        enum pipe_format format = tmpl->format;
        uint32_t size;
 
-       if (screen->ro && (tmpl->bind & PIPE_BIND_SCANOUT)) {
+       /* when using kmsro, scanout buffers are allocated on the display device
+        * create_with_modifiers() doesn't give us usage flags, so we have to
+        * assume that all calls with modifiers are scanout-possible
+        */
+       if (screen->ro &&
+               ((tmpl->bind & PIPE_BIND_SCANOUT) ||
+                !(count == 1 && modifiers[0] == DRM_FORMAT_MOD_INVALID))) {
                struct pipe_resource scanout_templat = *tmpl;
                struct renderonly_scanout *scanout;
                struct winsys_handle handle;

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to