summaryrefslogtreecommitdiff
path: root/source/slang/slang.vcxproj
diff options
context:
space:
mode:
authorTim Foley <tfoleyNV@users.noreply.github.com>2020-01-28 12:35:13 -0800
committerTim Foley <tim.foley.is@gmail.com>2020-01-28 12:35:13 -0800
commit8b3e3beea66d9773adf11ea2e163577d649f3d7c (patch)
tree51b4f3967d5db5494f98f6f9bf870ef2096929f5 /source/slang/slang.vcxproj
parentb3e0b0d491c55bfdc1c40d26a421910103c1b9f2 (diff)
Fix layout for structured buffers of matrices (#1184)
When using row-major layout (via command-line or API option), the following sort of declaration: ```hlsl StructuredBuffer<float4x4> gBuffer; ... gBuffer[i] ... ``` Generates unexpected results when compiled to DXBC via fxc or DXIL via dxc, because the fxc/dxc compilers do not respect the matrix layout mode in this specific case (a structured buffer of matrices). Instead, they always use column-major layout, even if row-major was requested by the user. A user can work around this behavior by wrapping the matrix in a `struct`: ```hlsl struct Wrapper { float4x4 wrapped; } SturcturedBuffer<Wrapper> gBuffer; ... gBuffer[i].wrapped ... ``` This change simply automates that workaround when compiling for an HLSL-based downstream compiler, so that we get the same behavior across all our backends. The change adds a test case to confirm the behavior across multiple targets, but it turns out we also had a test checked in that confirmed the buggy (or at least surprising) fxc/dxc behavior, so that one had its baselines changed and can work as a regression test for this fix as well.
Diffstat (limited to 'source/slang/slang.vcxproj')
-rw-r--r--source/slang/slang.vcxproj4
1 files changed, 3 insertions, 1 deletions
diff --git a/source/slang/slang.vcxproj b/source/slang/slang.vcxproj
index de1108a1c..6c35986a2 100644
--- a/source/slang/slang.vcxproj
+++ b/source/slang/slang.vcxproj
@@ -234,6 +234,7 @@
<ClInclude Include="slang-ir-type-set.h" />
<ClInclude Include="slang-ir-union.h" />
<ClInclude Include="slang-ir-validate.h" />
+ <ClInclude Include="slang-ir-wrap-structured-buffers.h" />
<ClInclude Include="slang-ir.h" />
<ClInclude Include="slang-legalize-types.h" />
<ClInclude Include="slang-lexer.h" />
@@ -316,6 +317,7 @@
<ClCompile Include="slang-ir-type-set.cpp" />
<ClCompile Include="slang-ir-union.cpp" />
<ClCompile Include="slang-ir-validate.cpp" />
+ <ClCompile Include="slang-ir-wrap-structured-buffers.cpp" />
<ClCompile Include="slang-ir.cpp" />
<ClCompile Include="slang-legalize-types.cpp" />
<ClCompile Include="slang-lexer.cpp" />
@@ -379,4 +381,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
-</Project> \ No newline at end of file
+</Project> \ No newline at end of file