Mesa (main): radv: Add force_emulate_rt perftest option
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Oct 4 12:16:03 UTC 2021
Module: Mesa
Branch: main
Commit: 4e58d30d981b6b781e1a827eb2a0c98d3f4df840
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e58d30d981b6b781e1a827eb2a0c98d3f4df840
Author: Joshua Ashton <joshua at froggi.es>
Date: Wed Sep 22 10:55:15 2021 +0100
radv: Add force_emulate_rt perftest option
Signed-off-by: Joshua Ashton <joshua at froggi.es>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12974>
---
docs/envvars.rst | 3 +++
src/amd/vulkan/radv_debug.h | 1 +
src/amd/vulkan/radv_device.c | 1 +
src/amd/vulkan/radv_pipeline.c | 2 ++
src/amd/vulkan/radv_pipeline_rt.c | 3 ++-
src/amd/vulkan/radv_private.h | 1 +
6 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/docs/envvars.rst b/docs/envvars.rst
index 19267f74757..3669f907b04 100644
--- a/docs/envvars.rst
+++ b/docs/envvars.rst
@@ -702,6 +702,9 @@ RADV driver environment variables
enable wave32 for compute shaders (GFX10+)
``dccmsaa``
enable DCC for MSAA images
+ ``force_emulate_rt``
+ forces ray-tracing to be emulated in software,
+ even if there is hardware support.
``gewave32``
enable wave32 for vertex/tess/geometry shaders (GFX10+)
``localbos``
diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h
index df50965ccb7..14b3a5160b1 100644
--- a/src/amd/vulkan/radv_debug.h
+++ b/src/amd/vulkan/radv_debug.h
@@ -76,6 +76,7 @@ enum {
RADV_PERFTEST_SAM = 1u << 7,
RADV_PERFTEST_RT = 1u << 8,
RADV_PERFTEST_NGGC = 1u << 9,
+ RADV_PERFTEST_FORCE_EMULATE_RT = 1u << 10,
};
bool radv_init_trace(struct radv_device *device);
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 5a719bb1005..982603172dd 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -861,6 +861,7 @@ static const struct debug_control radv_perftest_options[] = {{"localbos", RADV_P
{"sam", RADV_PERFTEST_SAM},
{"rt", RADV_PERFTEST_RT},
{"nggc", RADV_PERFTEST_NGGC},
+ {"force_emulate_rt", RADV_PERFTEST_FORCE_EMULATE_RT},
{NULL, 0}};
const char *
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 7b4b981155c..0f49471059b 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -219,6 +219,8 @@ radv_get_hash_flags(const struct radv_device *device, bool stats)
if (device->instance->perftest_flags & RADV_PERFTEST_NGGC)
hash_flags |= RADV_HASH_SHADER_FORCE_NGG_CULLING;
+ if (device->instance->perftest_flags & RADV_PERFTEST_FORCE_EMULATE_RT)
+ hash_flags |= RADV_HASH_SHADER_FORCE_EMULATE_RT;
if (device->physical_device->cs_wave_size == 32)
hash_flags |= RADV_HASH_SHADER_CS_WAVE32;
if (device->physical_device->ps_wave_size == 32)
diff --git a/src/amd/vulkan/radv_pipeline_rt.c b/src/amd/vulkan/radv_pipeline_rt.c
index d46e74b8dbd..e7f558071b1 100644
--- a/src/amd/vulkan/radv_pipeline_rt.c
+++ b/src/amd/vulkan/radv_pipeline_rt.c
@@ -1877,7 +1877,8 @@ insert_traversal(struct radv_device *device, const VkRayTracingPipelineCreateInf
bvh_node = nir_iadd(b, nir_load_var(b, trav_vars.bvh_base), nir_u2u(b, bvh_node, 64));
nir_ssa_def *intrinsic_result = NULL;
- if (device->physical_device->rad_info.chip_class >= GFX10_3) {
+ if (device->physical_device->rad_info.chip_class >= GFX10_3
+ && !(device->instance->perftest_flags & RADV_PERFTEST_FORCE_EMULATE_RT)) {
intrinsic_result = nir_bvh64_intersect_ray_amd(
b, 32, desc, nir_unpack_64_2x32(b, bvh_node), nir_load_var(b, vars->tmax),
nir_load_var(b, trav_vars.origin), nir_load_var(b, trav_vars.dir),
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 5453ccc8fd0..d9fb16d5e31 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -1662,6 +1662,7 @@ struct radv_event {
#define RADV_HASH_SHADER_FORCE_NGG_CULLING (1 << 13)
#define RADV_HASH_SHADER_ROBUST_BUFFER_ACCESS (1 << 14)
#define RADV_HASH_SHADER_ROBUST_BUFFER_ACCESS2 (1 << 15)
+#define RADV_HASH_SHADER_FORCE_EMULATE_RT (1 << 16)
struct radv_pipeline_key;
More information about the mesa-commit
mailing list