diff --git a/src/gallium/drivers/radeonsi/si_buffer.c b/src/gallium/drivers/radeonsi/si_buffer.c index 2d3597b2765..24e707c7d0d 100644 --- a/src/gallium/drivers/radeonsi/si_buffer.c +++ b/src/gallium/drivers/radeonsi/si_buffer.c @@ -57,6 +57,10 @@ void si_init_resource_fields(struct si_screen *sscreen, struct si_resource *res, break; } + /* If no compute/graphics -> use GTT since we can't copy/blit. */ + if (!sscreen->has_gfx_compute) + res->domains = RADEON_DOMAIN_GTT; + if (res->b.b.target == PIPE_BUFFER && res->b.b.flags & PIPE_RESOURCE_FLAG_MAP_PERSISTENT) { /* Use GTT for all persistent mappings with older * kernels, because they didn't always flush the HDP diff --git a/src/gallium/drivers/radeonsi/si_texture.c b/src/gallium/drivers/radeonsi/si_texture.c index c1be883a06f..da6b333aa45 100644 --- a/src/gallium/drivers/radeonsi/si_texture.c +++ b/src/gallium/drivers/radeonsi/si_texture.c @@ -2127,6 +2127,10 @@ static void *si_texture_transfer_map(struct pipe_context *ctx, struct pipe_resou if (tex->is_depth || tex->buffer.flags & RADEON_FLAG_SPARSE) { /* Depth and sparse textures use staging unconditionally. */ use_staging_texture = true; + } else if (!sctx->screen->has_gfx_compute) { + if (!tex->surface.is_linear) + return NULL; + use_staging_texture = false; } else { /* Degrade the tile mode if we get too many transfers on APUs. * On dGPUs, the staging texture is always faster.