Mesa (staging/19.1): radeonsi: fix VAAPI segfault due to various bugs

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Sep 27 10:01:50 UTC 2019


Module: Mesa
Branch: staging/19.1
Commit: 7eea4dbef99657a56bce900bbcd6bd06ef23d93c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7eea4dbef99657a56bce900bbcd6bd06ef23d93c

Author: Michel Dänzer <mdaenzer at redhat.com>
Date:   Wed Sep 18 20:18:39 2019 -0400

radeonsi: fix VAAPI segfault due to various bugs

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111236
(cherry picked from commit 67d930d64bb27944f4ad02068720a832c503ab1f)

---

 src/gallium/drivers/radeon/radeon_video.c | 1 +
 src/gallium/drivers/radeonsi/si_texture.c | 1 +
 src/gallium/drivers/radeonsi/si_uvd.c     | 1 +
 3 files changed, 3 insertions(+)

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;




More information about the mesa-commit mailing list