radeonsi: fix VAAPI segfault due to various bugs
authorMichel Dänzer <mdaenzer@redhat.com>
Thu, 19 Sep 2019 00:18:39 +0000 (20:18 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 24 Sep 2019 23:23:30 +0000 (19:23 -0400)
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111236

src/gallium/drivers/radeon/radeon_video.c
src/gallium/drivers/radeonsi/si_texture.c
src/gallium/drivers/radeonsi/si_uvd.c

index 7777f88..31b28f7 100644 (file)
@@ -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;
        }
 
index a8504f4..3d35fb4 100644 (file)
@@ -1863,6 +1863,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,
index 94d81a4..19d1b09 100644 (file)
@@ -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;