diff options
author | Michel Dänzer <mdaenzer@redhat.com> | 2019-09-18 20:18:39 -0400 |
---|---|---|
committer | Juan A. Suarez Romero <jasuarez@igalia.com> | 2019-10-02 09:41:27 -0400 |
commit | 950d16702623efa816175ca10d2fcd2408192f16 (patch) | |
tree | 80297c1361e3458d972db2d79af131781ca8d307 | |
parent | e37019723f084b6ed55d526b99d5218771222d5b (diff) | |
download | mesa-950d16702623efa816175ca10d2fcd2408192f16.tar.gz |
radeonsi: fix VAAPI segfault due to various bugs
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111236
(cherry picked from commit 67d930d64bb27944f4ad02068720a832c503ab1f)
-rw-r--r-- | src/gallium/drivers/radeon/radeon_video.c | 1 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_texture.c | 1 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_uvd.c | 1 |
3 files changed, 3 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeon/radeon_video.c b/src/gallium/drivers/radeon/radeon_video.c index 06f0d132219..44ff7fb8c7f 100644 --- a/src/gallium/drivers/radeon/radeon_video.c +++ b/src/gallium/drivers/radeon/radeon_video.c @@ -178,6 +178,7 @@ void si_vid_join_surfaces(struct si_context *sctx, surfaces[i]->u.gfx9.offset[j] += off; } + surfaces[i]->flags |= RADEON_SURF_IMPORTED; off += surfaces[i]->surf_size; } diff --git a/src/gallium/drivers/radeonsi/si_texture.c b/src/gallium/drivers/radeonsi/si_texture.c index 91230c5f0da..d2a561fb3be 100644 --- a/src/gallium/drivers/radeonsi/si_texture.c +++ b/src/gallium/drivers/radeonsi/si_texture.c @@ -1809,6 +1809,7 @@ static bool si_can_invalidate_texture(struct si_screen *sscreen, const struct pipe_box *box) { return !tex->buffer.b.is_shared && + !(tex->surface.flags & RADEON_SURF_IMPORTED) && !(transfer_usage & PIPE_TRANSFER_READ) && tex->buffer.b.b.last_level == 0 && util_texrange_covers_whole_level(&tex->buffer.b.b, 0, diff --git a/src/gallium/drivers/radeonsi/si_uvd.c b/src/gallium/drivers/radeonsi/si_uvd.c index 8c9553acbf3..33a3f601157 100644 --- a/src/gallium/drivers/radeonsi/si_uvd.c +++ b/src/gallium/drivers/radeonsi/si_uvd.c @@ -96,6 +96,7 @@ struct pipe_video_buffer *si_video_buffer_create(struct pipe_context *pipe, /* reset the address */ resources[i]->buffer.gpu_address = ctx->ws->buffer_get_virtual_address( resources[i]->buffer.buf); + resources[i]->buffer.bo_size = resources[i]->buffer.buf->size; } vidtemplate.height *= array_size; |