From 56fffb5dc26ca7cb61abdf8fd10ed935e17cf5a8 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Fri, 29 Nov 2024 07:04:09 +0000 Subject: [PATCH] D3D12 Tests add uint32_t compileOptions to Compile() Current options are: SkipOptimie : the default Enable16BitTypes --- util/test/demos/d3d12/d3d12_amd_shader_extensions.cpp | 6 ++++-- util/test/demos/d3d12/d3d12_test.cpp | 6 +++++- util/test/demos/d3d12/d3d12_test.h | 9 ++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/util/test/demos/d3d12/d3d12_amd_shader_extensions.cpp b/util/test/demos/d3d12/d3d12_amd_shader_extensions.cpp index 59b1359d7..a0af34623 100644 --- a/util/test/demos/d3d12/d3d12_amd_shader_extensions.cpp +++ b/util/test/demos/d3d12/d3d12_amd_shader_extensions.cpp @@ -340,8 +340,10 @@ void main(uint3 threadID : SV_DispatchThreadID) valid[i] = true; // can't skip optimising and still have the extensions work, sadly - psblob[i] = Compile(ags_header + BaryCentricPixel, "main", "ps" + profilesuffix[i], false); - csblob[i] = Compile(ags_header + MaxCompute, "main", "cs" + profilesuffix[i], false); + psblob[i] = Compile(ags_header + BaryCentricPixel, "main", "ps" + profilesuffix[i], + CompileOptionFlags::None); + csblob[i] = Compile(ags_header + MaxCompute, "main", "cs" + profilesuffix[i], + CompileOptionFlags::None); pso[i] = MakePSO().RootSig(sig).InputLayout().VS(vsblob[i]).PS(psblob[i]); cso[i] = MakePSO().RootSig(sig).CS(csblob[i]); diff --git a/util/test/demos/d3d12/d3d12_test.cpp b/util/test/demos/d3d12/d3d12_test.cpp index e46957fed..a13e3f85d 100644 --- a/util/test/demos/d3d12/d3d12_test.cpp +++ b/util/test/demos/d3d12/d3d12_test.cpp @@ -1332,9 +1332,11 @@ COM_SMARTPTR(IDxcOperationResult); COM_SMARTPTR(IDxcBlob); ID3DBlobPtr D3D12GraphicsTest::Compile(std::string src, std::string entry, std::string profile, - bool skipoptimise) + uint32_t compileOptions) { ID3DBlobPtr blob = NULL; + bool skipoptimise = (compileOptions && CompileOptionFlags::SkipOptimise); + bool enable16BitTypes = (compileOptions && CompileOptionFlags::Enable16BitTypes); if(profile[3] >= '6') { @@ -1389,6 +1391,8 @@ ID3DBlobPtr D3D12GraphicsTest::Compile(std::string src, std::string entry, std:: } argStorage.push_back(L"-Zi"); argStorage.push_back(L"-Qembed_debug"); + if(enable16BitTypes) + argStorage.push_back(L"-enable-16bit-types"); for(size_t i = 0; i < argStorage.size(); i++) args[0].push_back(argStorage[i].c_str()); diff --git a/util/test/demos/d3d12/d3d12_test.h b/util/test/demos/d3d12/d3d12_test.h index ebd2cda84..c90c52a4d 100644 --- a/util/test/demos/d3d12/d3d12_test.h +++ b/util/test/demos/d3d12/d3d12_test.h @@ -77,8 +77,15 @@ struct D3D12GraphicsTest : public GraphicsTest BufUAVType = 0xf00, }; + enum CompileOptionFlags + { + None = 0, + SkipOptimise = 1 << 0, + Enable16BitTypes = 1 << 1, + }; + ID3DBlobPtr Compile(std::string src, std::string entry, std::string profile, - bool skipoptimise = true); + uint32_t compileOptions = CompileOptionFlags::SkipOptimise); void WriteBlob(std::string name, ID3DBlobPtr blob, bool compress); void SetBlobPath(std::string name, ID3DBlobPtr &blob);