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

Cc: Christian König <christian.koenig@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.koenig@amd.com>
This commit is contained in:
Nicolai Hähnle 2016-09-30 11:26:13 +02:00
parent 1d466b9b04
commit 13cb41f666
2 changed files with 10 additions and 1 deletions

View File

@ -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;

View File

@ -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;
}