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

Author: Giancarlo Devich <[email protected]>
Date:   Mon Feb 27 11:03:42 2023 -0800

d3d12: Don't loop in update_draw_indirect_with_sysvals

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21567>

---

 src/gallium/drivers/d3d12/d3d12_draw.cpp | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/src/gallium/drivers/d3d12/d3d12_draw.cpp 
b/src/gallium/drivers/d3d12/d3d12_draw.cpp
index 77d514801e1..a1910621f3f 100644
--- a/src/gallium/drivers/d3d12/d3d12_draw.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_draw.cpp
@@ -759,17 +759,13 @@ update_draw_indirect_with_sysvals(struct d3d12_context 
*ctx,
       ctx->gfx_stages[PIPE_SHADER_VERTEX] == nullptr)
       return false;
 
-   unsigned sysvals[] = {
-      SYSTEM_VALUE_VERTEX_ID_ZERO_BASE,
-      SYSTEM_VALUE_BASE_VERTEX,
-      SYSTEM_VALUE_FIRST_VERTEX,
-      SYSTEM_VALUE_BASE_INSTANCE,
-      SYSTEM_VALUE_DRAW_ID,
-   };
-   bool any = false;
-   for (unsigned sysval : sysvals) {
-      any |= 
(BITSET_TEST(ctx->gfx_stages[PIPE_SHADER_VERTEX]->initial->info.system_values_read,
 sysval));
-   }
+   auto sys_values_read = 
ctx->gfx_stages[PIPE_SHADER_VERTEX]->initial->info.system_values_read;
+   bool any =  BITSET_TEST(sys_values_read, SYSTEM_VALUE_VERTEX_ID_ZERO_BASE) 
||
+               BITSET_TEST(sys_values_read, SYSTEM_VALUE_BASE_VERTEX) ||
+               BITSET_TEST(sys_values_read, SYSTEM_VALUE_FIRST_VERTEX) ||
+               BITSET_TEST(sys_values_read, SYSTEM_VALUE_BASE_INSTANCE) ||
+               BITSET_TEST(sys_values_read, SYSTEM_VALUE_DRAW_ID);
+
    if (!any)
       return false;
 

Reply via email to