[Mesa-dev] [PATCH] radeonsi: set SLC for atomics and coherent ops on APUs
Nicolai Hähnle
nhaehnle at gmail.com
Thu Apr 14 15:36:48 UTC 2016
From: Nicolai Hähnle <nicolai.haehnle at amd.com>
---
Hi Michel,
perhaps we have to set the SLC (system level coherent) bit for images and
buffers that may be accessed via GTT. Could you give this patch a try?
Thanks,
Nicolai
---
src/gallium/drivers/radeonsi/si_shader.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index c58467d..53e9adb 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -2939,7 +2939,11 @@ static void image_append_args(
inst->Memory.Qualifier & (TGSI_MEMORY_COHERENT | TGSI_MEMORY_VOLATILE) ?
i1true : i1false; /* glc */
}
- emit_data->args[emit_data->arg_count++] = i1false; /* slc */
+ emit_data->args[emit_data->arg_count++] =
+ !ctx->screen->b.info.has_dedicated_vram &&
+ (atomic ||
+ (inst->Memory.Qualifier & (TGSI_MEMORY_COHERENT | TGSI_MEMORY_VOLATILE))) ?
+ i1true : i1false; /* slc */
}
/**
@@ -2988,7 +2992,11 @@ static void buffer_append_args(
inst->Memory.Qualifier & (TGSI_MEMORY_COHERENT | TGSI_MEMORY_VOLATILE) ?
i1true : i1false; /* glc */
}
- emit_data->args[emit_data->arg_count++] = i1false; /* slc */
+ emit_data->args[emit_data->arg_count++] =
+ !ctx->screen->b.info.has_dedicated_vram &&
+ (atomic ||
+ (inst->Memory.Qualifier & (TGSI_MEMORY_COHERENT | TGSI_MEMORY_VOLATILE))) ?
+ i1true : i1false; /* slc */
}
static void load_fetch_args(
--
2.5.0
More information about the mesa-dev
mailing list