https://git.reactos.org/?p=reactos.git;a=commitdiff;h=36d9e80add6c295ce05a3…
commit 36d9e80add6c295ce05a3655eb23b1efd1f3fff7
Author: Joachim Henze <Joachim.Henze(a)reactos.org>
AuthorDate: Thu Oct 3 21:16:39 2019 +0200
Commit: Joachim Henze <Joachim.Henze(a)reactos.org>
CommitDate: Thu Oct 3 21:16:39 2019 +0200
[D3DCOMPILER_43] Addendum to last commit CORE-14955 & CORE-15652
GCC Linux build had no issues with the last commit but
MSVC x86 & x64 v18.0.31101.0 choked on it with
error C4133: 'function' : incompatible types - from 'D3D_PRIMITIVE *'
to 'DWORD *'
and similar.
I could not retest with that exact version of MSVC, but the mentioned problems
vanished for me when compiling locally with MSVC 16.0.40219.1 x86.
Fingers crossed, that this makes the builders happy again!
---
dll/directx/wine/d3dcompiler_43/reflection.c | 41 ++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/dll/directx/wine/d3dcompiler_43/reflection.c
b/dll/directx/wine/d3dcompiler_43/reflection.c
index 5a59c64f94d..e04c5c2dfb8 100644
--- a/dll/directx/wine/d3dcompiler_43/reflection.c
+++ b/dll/directx/wine/d3dcompiler_43/reflection.c
@@ -1107,10 +1107,18 @@ static HRESULT d3dcompiler_parse_stat(struct
d3dcompiler_shader_reflection *r, c
skip_dword_unknown(&ptr, 1);
+#ifdef __REACTOS__ /* DWORD* cast added */
+ read_dword(&ptr, (DWORD*)&r->input_primitive);
+#else
read_dword(&ptr, &r->input_primitive);
+#endif
TRACE("InputPrimitive: %x\n", r->input_primitive);
+#ifdef __REACTOS__ /* DWORD* cast added */
+ read_dword(&ptr, (DWORD*)&r->gs_output_topology);
+#else
read_dword(&ptr, &r->gs_output_topology);
+#endif
TRACE("GSOutputTopology: %x\n", r->gs_output_topology);
read_dword(&ptr, &r->gs_max_output_vertex_count);
@@ -1126,13 +1134,25 @@ static HRESULT d3dcompiler_parse_stat(struct
d3dcompiler_shader_reflection *r, c
read_dword(&ptr, &r->c_control_points);
TRACE("cControlPoints: %u\n", r->c_control_points);
+#ifdef __REACTOS__ /* DWORD* cast added */
+ read_dword(&ptr, (DWORD*)&r->hs_output_primitive);
+#else
read_dword(&ptr, &r->hs_output_primitive);
+#endif
TRACE("HSOutputPrimitive: %x\n", r->hs_output_primitive);
+#ifdef __REACTOS__ /* DWORD* cast added */
+ read_dword(&ptr, (DWORD*)&r->hs_prtitioning);
+#else
read_dword(&ptr, &r->hs_prtitioning);
+#endif
TRACE("HSPartitioning: %x\n", r->hs_prtitioning);
+#ifdef __REACTOS__ /* DWORD* cast added */
+ read_dword(&ptr, (DWORD*)&r->tessellator_domain);
+#else
read_dword(&ptr, &r->tessellator_domain);
+#endif
TRACE("TessellatorDomain: %x\n", r->tessellator_domain);
skip_dword_unknown(&ptr, 3);
@@ -1438,13 +1458,25 @@ static HRESULT d3dcompiler_parse_rdef(struct
d3dcompiler_shader_reflection *r, c
desc->Name = string_data + (offset - string_data_offset);
TRACE("Input bind Name: %s\n", debugstr_a(desc->Name));
+#ifdef __REACTOS__ /* DWORD* cast added */
+ read_dword(&ptr, (DWORD*)&desc->Type);
+#else
read_dword(&ptr, &desc->Type);
+#endif
TRACE("Input bind Type: %#x\n", desc->Type);
+#ifdef __REACTOS__ /* DWORD* cast added */
+ read_dword(&ptr, (DWORD*)&desc->ReturnType);
+#else
read_dword(&ptr, &desc->ReturnType);
+#endif
TRACE("Input bind ReturnType: %#x\n", desc->ReturnType);
+#ifdef __REACTOS__ /* DWORD* cast added */
+ read_dword(&ptr, (DWORD*)&desc->Dimension);
+#else
read_dword(&ptr, &desc->Dimension);
+#endif
TRACE("Input bind Dimension: %#x\n", desc->Dimension);
read_dword(&ptr, &desc->NumSamples);
@@ -1507,7 +1539,11 @@ static HRESULT d3dcompiler_parse_rdef(struct
d3dcompiler_shader_reflection *r, c
read_dword(&ptr, &cb->flags);
TRACE("Cbuffer flags: %u\n", cb->flags);
+#ifdef __REACTOS__ /* DWORD* cast added */
+ read_dword(&ptr, (DWORD*)&cb->type);
+#else
read_dword(&ptr, &cb->type);
+#endif
TRACE("Cbuffer type: %#x\n", cb->type);
}
}
@@ -1603,8 +1639,13 @@ static HRESULT d3dcompiler_parse_signature(struct
d3dcompiler_shader_signature *
read_dword(&ptr, &name_offset);
d[i].SemanticName = string_data + (name_offset - string_data_offset);
read_dword(&ptr, &d[i].SemanticIndex);
+#ifdef __REACTOS__ /* DWORD* casts added */
+ read_dword(&ptr, (DWORD*)&d[i].SystemValueType);
+ read_dword(&ptr, (DWORD*)&d[i].ComponentType);
+#else
read_dword(&ptr, &d[i].SystemValueType);
read_dword(&ptr, &d[i].ComponentType);
+#endif
read_dword(&ptr, &d[i].Register);
read_dword(&ptr, &mask);
d[i].ReadWriteMask = (mask >> 8) & 0xff;