[PATCH vkd3d 4/7] vkd3d: Calculate shader visibility once per root signature table.

Conor McCarthy cmccarthy at codeweavers.com
Fri Aug 13 09:55:40 CDT 2021


Signed-off-by: Conor McCarthy <cmccarthy at codeweavers.com>
---
 libs/vkd3d/state.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c
index f9efeeec..58463e59 100644
--- a/libs/vkd3d/state.c
+++ b/libs/vkd3d/state.c
@@ -664,6 +664,7 @@ static HRESULT d3d12_root_signature_init_root_descriptor_tables(struct d3d12_roo
     for (i = 0; i < desc->NumParameters; ++i)
     {
         const D3D12_ROOT_PARAMETER *p = &desc->pParameters[i];
+        enum vkd3d_shader_visibility shader_visibility;
         unsigned int offset = 0;
 
         if (p->ParameterType != D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE)
@@ -673,6 +674,7 @@ static HRESULT d3d12_root_signature_init_root_descriptor_tables(struct d3d12_roo
 
         table = &root_signature->parameters[i].u.descriptor_table;
         range_count = p->u.DescriptorTable.NumDescriptorRanges;
+        shader_visibility = vkd3d_shader_visibility_from_d3d12(p->ShaderVisibility);
 
         root_signature->parameters[i].parameter_type = p->ParameterType;
         table->range_count = range_count;
@@ -723,7 +725,7 @@ static HRESULT d3d12_root_signature_init_root_descriptor_tables(struct d3d12_roo
 
             vk_binding = d3d12_root_signature_assign_vk_bindings(root_signature,
                     range->type, range->register_space, range->base_register_idx, range->descriptor_count, false, true,
-                    vkd3d_shader_visibility_from_d3d12(p->ShaderVisibility), context);
+                    shader_visibility, context);
 
             /* Unroll descriptor range. */
             for (k = 0; k < range->descriptor_count; ++k)
-- 
2.32.0




More information about the wine-devel mailing list