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

Author: Jason Ekstrand <[email protected]>
Date:   Thu Jul 21 14:41:43 2022 -0500

vulkan: Input assembly and depth/stencil can also be fully dynamic

Reviewed-by: Lionel Landwerlin <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17696>

---

 src/vulkan/runtime/vk_graphics_state.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/vulkan/runtime/vk_graphics_state.c 
b/src/vulkan/runtime/vk_graphics_state.c
index 857cd206fad..b566fc23091 100644
--- a/src/vulkan/runtime/vk_graphics_state.c
+++ b/src/vulkan/runtime/vk_graphics_state.c
@@ -106,9 +106,25 @@ fully_dynamic_state_groups(const BITSET_WORD *dynamic)
    if (BITSET_TEST(dynamic, MESA_VK_DYNAMIC_VI))
       groups |= MESA_VK_GRAPHICS_STATE_VERTEX_INPUT_BIT;
 
+   if (BITSET_TEST(dynamic, MESA_VK_DYNAMIC_IA_PRIMITIVE_TOPOLOGY) &&
+       BITSET_TEST(dynamic, MESA_VK_DYNAMIC_IA_PRIMITIVE_RESTART_ENABLE))
+      groups |= MESA_VK_GRAPHICS_STATE_INPUT_ASSEMBLY_BIT;
+
    if (BITSET_TEST(dynamic, MESA_VK_DYNAMIC_FSR))
       groups |= MESA_VK_GRAPHICS_STATE_FRAGMENT_SHADING_RATE_BIT;
 
+   if (BITSET_TEST(dynamic, MESA_VK_DYNAMIC_DS_DEPTH_TEST_ENABLE) &&
+       BITSET_TEST(dynamic, MESA_VK_DYNAMIC_DS_DEPTH_WRITE_ENABLE) &&
+       BITSET_TEST(dynamic, MESA_VK_DYNAMIC_DS_DEPTH_COMPARE_OP) &&
+       BITSET_TEST(dynamic, MESA_VK_DYNAMIC_DS_DEPTH_BOUNDS_TEST_ENABLE) &&
+       BITSET_TEST(dynamic, MESA_VK_DYNAMIC_DS_DEPTH_BOUNDS_TEST_BOUNDS) &&
+       BITSET_TEST(dynamic, MESA_VK_DYNAMIC_DS_STENCIL_TEST_ENABLE) &&
+       BITSET_TEST(dynamic, MESA_VK_DYNAMIC_DS_STENCIL_OP) &&
+       BITSET_TEST(dynamic, MESA_VK_DYNAMIC_DS_STENCIL_COMPARE_MASK) &&
+       BITSET_TEST(dynamic, MESA_VK_DYNAMIC_DS_STENCIL_WRITE_MASK) &&
+       BITSET_TEST(dynamic, MESA_VK_DYNAMIC_DS_STENCIL_REFERENCE))
+      groups |= MESA_VK_GRAPHICS_STATE_DEPTH_STENCIL_BIT;
+
    return groups;
 }
 

Reply via email to