gallium/radeon: reallocate textures with non-zero tile_swizzle on export

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
Marek Olšák 2017-07-29 01:18:02 +02:00
parent 4a758a17da
commit 7726092795

View file

@ -568,13 +568,15 @@ static boolean r600_texture_get_handle(struct pipe_screen* screen,
return false;
/* Move a suballocated texture into a non-suballocated allocation. */
if (rscreen->ws->buffer_is_suballocated(res->buf)) {
if (rscreen->ws->buffer_is_suballocated(res->buf) ||
rtex->surface.tile_swizzle) {
assert(!res->b.is_shared);
r600_reallocate_texture_inplace(rctx, rtex,
PIPE_BIND_SHARED, false);
rctx->b.flush(&rctx->b, NULL, 0);
assert(res->b.b.bind & PIPE_BIND_SHARED);
assert(res->flags & RADEON_FLAG_NO_SUBALLOC);
assert(rtex->surface.tile_swizzle == 0);
}
/* Since shader image stores don't support DCC on VI,