Signed-off-by: Jonathan Marek <jonat...@marek.ca>
---
 src/gallium/drivers/freedreno/drm/freedreno_drmif.h | 1 +
 src/gallium/drivers/freedreno/drm/msm_bo.c          | 3 +++
 src/gallium/drivers/freedreno/freedreno_resource.c  | 4 +++-
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/freedreno/drm/freedreno_drmif.h 
b/src/gallium/drivers/freedreno/drm/freedreno_drmif.h
index 6468eac4a0..e12ab970c8 100644
--- a/src/gallium/drivers/freedreno/drm/freedreno_drmif.h
+++ b/src/gallium/drivers/freedreno/drm/freedreno_drmif.h
@@ -63,6 +63,7 @@ enum fd_param_id {
 #define DRM_FREEDRENO_GEM_CACHE_WBACKWA   0x00800000
 #define DRM_FREEDRENO_GEM_CACHE_MASK      0x00f00000
 #define DRM_FREEDRENO_GEM_GPUREADONLY     0x01000000
+#define DRM_FREEDRENO_GEM_SCANOUT         0x02000000
 
 /* bo access flags: (keep aligned to MSM_PREP_x) */
 #define DRM_FREEDRENO_PREP_READ           0x01
diff --git a/src/gallium/drivers/freedreno/drm/msm_bo.c 
b/src/gallium/drivers/freedreno/drm/msm_bo.c
index da3315c9ab..d93dfbeab2 100644
--- a/src/gallium/drivers/freedreno/drm/msm_bo.c
+++ b/src/gallium/drivers/freedreno/drm/msm_bo.c
@@ -142,6 +142,9 @@ int msm_bo_new_handle(struct fd_device *dev,
        };
        int ret;
 
+       if (flags & DRM_FREEDRENO_GEM_SCANOUT)
+               req.flags |= MSM_BO_SCANOUT;
+
        ret = drmCommandWriteRead(dev->fd, DRM_MSM_GEM_NEW,
                        &req, sizeof(req));
        if (ret)
diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c 
b/src/gallium/drivers/freedreno/freedreno_resource.c
index 54d7385896..bd7be94c85 100644
--- a/src/gallium/drivers/freedreno/freedreno_resource.c
+++ b/src/gallium/drivers/freedreno/freedreno_resource.c
@@ -99,7 +99,9 @@ realloc_bo(struct fd_resource *rsc, uint32_t size)
 {
        struct fd_screen *screen = fd_screen(rsc->base.screen);
        uint32_t flags = DRM_FREEDRENO_GEM_CACHE_WCOMBINE |
-                       DRM_FREEDRENO_GEM_TYPE_KMEM; /* TODO */
+                       DRM_FREEDRENO_GEM_TYPE_KMEM |
+                       COND(rsc->base.bind & PIPE_BIND_SCANOUT, 
DRM_FREEDRENO_GEM_SCANOUT);
+                       /* TODO other flags? */
 
        /* if we start using things other than write-combine,
         * be sure to check for PIPE_RESOURCE_FLAG_MAP_COHERENT
-- 
2.17.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to