diff --git a/src/gallium/drivers/radeonsi/radeon_video.c b/src/gallium/drivers/radeonsi/radeon_video.c index 2e7037ec021..378e2798dbf 100644 --- a/src/gallium/drivers/radeonsi/radeon_video.c +++ b/src/gallium/drivers/radeonsi/radeon_video.c @@ -62,7 +62,7 @@ bool si_vid_create_buffer(struct pipe_screen *screen, struct rvid_buffer *buffer * able to move buffers around individually, so request a * non-sub-allocated buffer. */ - buffer->res = si_resource(pipe_buffer_create(screen, PIPE_BIND_SHARED, usage, size)); + buffer->res = si_resource(pipe_buffer_create(screen, PIPE_BIND_CUSTOM, usage, size)); return buffer->res != NULL; } @@ -73,7 +73,7 @@ bool si_vid_create_tmz_buffer(struct pipe_screen *screen, struct rvid_buffer *bu { memset(buffer, 0, sizeof(*buffer)); buffer->usage = usage; - buffer->res = si_resource(pipe_buffer_create(screen, PIPE_BIND_SHARED | PIPE_BIND_PROTECTED, + buffer->res = si_resource(pipe_buffer_create(screen, PIPE_BIND_CUSTOM | PIPE_BIND_PROTECTED, usage, size)); return buffer->res != NULL; } diff --git a/src/gallium/drivers/radeonsi/si_buffer.c b/src/gallium/drivers/radeonsi/si_buffer.c index 7a07a84d362..b6cbbfa2856 100644 --- a/src/gallium/drivers/radeonsi/si_buffer.c +++ b/src/gallium/drivers/radeonsi/si_buffer.c @@ -106,6 +106,12 @@ void si_init_resource_fields(struct si_screen *sscreen, struct si_resource *res, else res->flags |= RADEON_FLAG_NO_INTERPROCESS_SHARING; + /* PIPE_BIND_CUSTOM is used by si_vid_create_buffer which wants + * non-suballocated buffers. + */ + if (res->b.b.bind & PIPE_BIND_CUSTOM) + res->flags |= RADEON_FLAG_NO_SUBALLOC; + if (res->b.b.bind & PIPE_BIND_PROTECTED || /* Force scanout/depth/stencil buffer allocation to be encrypted */ (sscreen->debug_flags & DBG(TMZ) &&