From e7c5a8b3f8fd850879802be638d045a286d73445 Mon Sep 17 00:00:00 2001 From: Giancarlo Devich Date: Mon, 27 Feb 2023 11:03:42 -0800 Subject: [PATCH] d3d12: Don't loop in update_draw_indirect_with_sysvals Part-of: --- 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 77d5148..a191062 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; -- 2.7.4