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

Author: Nicolai Hähnle <nicolai.haeh...@amd.com>
Date:   Fri Sep 30 11:26:13 2016 +0200

radeon/video: don't use sub-allocated buffers

Cc: Christian König <christian.koe...@amd.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97976
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97969
Reviewed-by: Christian König <christian.koe...@amd.com>

---

 src/gallium/drivers/radeon/r600_buffer_common.c | 3 +++
 src/gallium/drivers/radeon/radeon_video.c       | 8 +++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeon/r600_buffer_common.c 
b/src/gallium/drivers/radeon/r600_buffer_common.c
index cbbcc29..784522d 100644
--- a/src/gallium/drivers/radeon/r600_buffer_common.c
+++ b/src/gallium/drivers/radeon/r600_buffer_common.c
@@ -531,6 +531,9 @@ struct pipe_resource *r600_buffer_create(struct pipe_screen 
*screen,
 
        r600_init_resource_fields(rscreen, rbuffer, templ->width0, alignment);
 
+       if (templ->bind & PIPE_BIND_SHARED)
+               rbuffer->flags |= RADEON_FLAG_HANDLE;
+
        if (!r600_alloc_resource(rscreen, rbuffer)) {
                FREE(rbuffer);
                return NULL;
diff --git a/src/gallium/drivers/radeon/radeon_video.c 
b/src/gallium/drivers/radeon/radeon_video.c
index d7c5a16..de8e11c 100644
--- a/src/gallium/drivers/radeon/radeon_video.c
+++ b/src/gallium/drivers/radeon/radeon_video.c
@@ -66,8 +66,14 @@ bool rvid_create_buffer(struct pipe_screen *screen, struct 
rvid_buffer *buffer,
 {
        memset(buffer, 0, sizeof(*buffer));
        buffer->usage = usage;
+
+       /* Hardware buffer placement restrictions require the kernel to be
+        * able to move buffers around individually, so request a
+        * non-sub-allocated buffer.
+        */
        buffer->res = (struct r600_resource *)
-               pipe_buffer_create(screen, PIPE_BIND_CUSTOM, usage, size);
+               pipe_buffer_create(screen, PIPE_BIND_CUSTOM | PIPE_BIND_SHARED,
+                                  usage, size);
 
        return buffer->res != NULL;
 }

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

Reply via email to