Mesa (main): d3d12: switch to NIR loop unrolling

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue May 17 02:41:46 UTC 2022


Module: Mesa
Branch: main
Commit: 2a2a2e58d1c6707a6e13204baf8f43e6641f5da7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2a2a2e58d1c6707a6e13204baf8f43e6641f5da7

Author: Timothy Arceri <tarceri at itsqueeze.com>
Date:   Fri May  6 11:30:30 2022 +1000

d3d12: switch to NIR loop unrolling

Reviewed-by: Emma Anholt <emma at anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16543>

---

 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 73c02514459..5eb38b40be1 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 ae07e28cf5a..3e39ceeaeec 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*



More information about the mesa-commit mailing list