diff --git a/src/gallium/drivers/radeonsi/si_buffer.c b/src/gallium/drivers/radeonsi/si_buffer.c index 85d0ea5dffc..91d5bb97650 100644 --- a/src/gallium/drivers/radeonsi/si_buffer.c +++ b/src/gallium/drivers/radeonsi/si_buffer.c @@ -135,7 +135,7 @@ void si_init_resource_fields(struct si_screen *sscreen, struct si_resource *res, * because they might never be moved back again. If a buffer is large enough, * upload data by copying from a temporary GTT buffer. */ - if (sscreen->info.has_dedicated_vram && + if (sscreen->info.has_dedicated_vram && !sscreen->info.all_vram_visible && !res->b.cpu_storage && /* TODO: The CPU storage breaks this. */ size >= sscreen->options.max_vram_map_size) res->b.b.flags |= PIPE_RESOURCE_FLAG_DONT_MAP_DIRECTLY; diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index bdceaca1181..1aa1b037687 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -1105,7 +1105,7 @@ bool si_shader_binary_upload(struct si_screen *sscreen, struct si_shader *shader uint64_t scratch_va) { bool dma_upload = !(sscreen->debug_flags & DBG(NO_DMA_SHADERS)) && - sscreen->info.has_dedicated_vram; + sscreen->info.has_dedicated_vram && !sscreen->info.all_vram_visible; if (shader->binary.type == SI_SHADER_BINARY_ELF) { return upload_binary_elf(sscreen, shader, scratch_va, dma_upload);