[PATCH vkd3d 2/3] vkd3d: Require D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT for input layout.

Józef Kucia joseph.kucia at gmail.com
Wed Jan 16 05:44:58 CST 2019


From: Józef Kucia <jkucia at codeweavers.com>

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 libs/vkd3d/state.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c
index e9f73e82b44f..18addf39409d 100644
--- a/libs/vkd3d/state.c
+++ b/libs/vkd3d/state.c
@@ -904,7 +904,8 @@ static HRESULT d3d12_root_signature_init(struct d3d12_root_signature *root_signa
     root_signature->static_sampler_count = 0;
     root_signature->static_samplers = NULL;
 
-    if (desc->Flags & ~D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT)
+    if (desc->Flags & ~(D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT
+            | D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT))
         FIXME("Ignoring root signature flags %#x.\n", desc->Flags);
 
     if (FAILED(hr = d3d12_root_signature_info_from_desc(&info, desc)))
@@ -2282,6 +2283,14 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
         graphics->attribute_count = ARRAY_SIZE(graphics->attributes);
     }
 
+    if (graphics->attribute_count
+            && !(root_signature->flags & D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT))
+    {
+        WARN("Input layout is used without D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT.\n");
+        hr = E_INVALIDARG;
+        goto fail;
+    }
+
     if (FAILED(hr = compute_input_layout_offsets(&desc->InputLayout, aligned_offsets)))
         goto fail;
 
-- 
2.19.2




More information about the wine-devel mailing list