From 2a2a2e58d1c6707a6e13204baf8f43e6641f5da7 Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Fri, 6 May 2022 11:30:30 +1000 Subject: [PATCH] d3d12: switch to NIR loop unrolling Reviewed-by: Emma Anholt Part-of: --- src/gallium/drivers/d3d12/d3d12_screen.cpp | 4 +--- src/microsoft/compiler/nir_to_dxil.c | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/d3d12/d3d12_screen.cpp b/src/gallium/drivers/d3d12/d3d12_screen.cpp index 73c0251..5eb38b4 100644 --- a/src/gallium/drivers/d3d12/d3d12_screen.cpp +++ b/src/gallium/drivers/d3d12/d3d12_screen.cpp @@ -463,9 +463,6 @@ d3d12_get_shader_param(struct pipe_screen *pscreen, case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: return 0; /* no idea */ - case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: - return 32; /* arbitrary */ - case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS: return (screen->max_feature_level >= D3D_FEATURE_LEVEL_11_1 || @@ -483,6 +480,7 @@ d3d12_get_shader_param(struct pipe_screen *pscreen, screen->opts.ResourceBindingTier >= D3D12_RESOURCE_BINDING_TIER_3) ? PIPE_MAX_SHADER_IMAGES : D3D12_PS_CS_UAV_REGISTER_COUNT; + case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: case PIPE_SHADER_CAP_LDEXP_SUPPORTED: case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS: case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS: diff --git a/src/microsoft/compiler/nir_to_dxil.c b/src/microsoft/compiler/nir_to_dxil.c index ae07e28..3e39cee 100644 --- a/src/microsoft/compiler/nir_to_dxil.c +++ b/src/microsoft/compiler/nir_to_dxil.c @@ -129,6 +129,8 @@ nir_options = { nir_lower_dfloor | nir_lower_dceil | nir_lower_dround_even, + .max_unroll_iterations = 32, /* arbitrary */ + .force_indirect_unrolling = (nir_var_shader_in | nir_var_shader_out | nir_var_function_temp), }; const nir_shader_compiler_options* -- 2.7.4