radv: Add force_emulate_rt perftest option

Signed-off-by: Joshua Ashton <joshua@froggi.es>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12974>
This commit is contained in:
Joshua Ashton 2021-09-22 10:55:15 +01:00 committed by Marge Bot
parent 26826a7d60
commit 4e58d30d98
6 changed files with 10 additions and 1 deletions

View File

@ -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``

View File

@ -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);

View File

@ -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 *

View File

@ -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)

View File

@ -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),

View File

@ -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;