diff --git a/tools/clang/unittests/HLSL/ExecutionTest.cpp b/tools/clang/unittests/HLSL/ExecutionTest.cpp index 1f094eae7..2441a9bc2 100644 --- a/tools/clang/unittests/HLSL/ExecutionTest.cpp +++ b/tools/clang/unittests/HLSL/ExecutionTest.cpp @@ -8296,8 +8296,6 @@ void ExecutionTest::WaveSizeTest() { WEX::TestExecution::SetVerifyOutput verifySettings(WEX::TestExecution::VerifyOutputSettings::LogOnlyFailures); CComPtr pDevice; - CComPtr pStream; - if (!CreateDevice(&pDevice, D3D_SHADER_MODEL_6_6)) { return; } @@ -8309,9 +8307,6 @@ void ExecutionTest::WaveSizeTest() { return; } - // read shader config - ReadHlslDataIntoNewStream(L"ShaderOpArith.xml", &pStream); - // Get supported wave sizes D3D12_FEATURE_DATA_D3D12_OPTIONS1 waveOpts; VERIFY_SUCCEEDED(pDevice->CheckFeatureSupport((D3D12_FEATURE)D3D12_FEATURE_D3D12_OPTIONS1, &waveOpts, sizeof(waveOpts))); @@ -8322,6 +8317,12 @@ void ExecutionTest::WaveSizeTest() { DXASSERT((minWaveSize & (minWaveSize - 1)) == 0, "must be a power of 2"); DXASSERT((maxWaveSize & (maxWaveSize - 1)) == 0, "must be a power of 2"); + // read shader config + CComPtr pStream; + std::shared_ptr ShaderOpSet = std::make_shared(); + ReadHlslDataIntoNewStream(L"ShaderOpArith.xml", &pStream); + st::ParseShaderOpSetFromStream(pStream, ShaderOpSet.get()); + // format shader source const char waveSizeTestShader[] = "struct TestData { \r\n" @@ -8346,7 +8347,7 @@ void ExecutionTest::WaveSizeTest() { VERIFY_IS_TRUE(sprintf_s(compilerOptions, sizeof(compilerOptions), "-D WAVESIZE=%d", waveSize) != -1); // run the shader - std::shared_ptr test = RunShaderOpTest(pDevice, m_support, pStream, "WaveSizeTest", + std::shared_ptr test = RunShaderOpTestAfterParse(pDevice, m_support, "WaveSizeTest", [&](LPCSTR Name, std::vector &Data, st::ShaderOp *pShaderOp) { VERIFY_IS_TRUE((0 == strncmp(Name, "UAVBuffer0", 10))); pShaderOp->Shaders.at(0).Arguments = compilerOptions; @@ -8355,7 +8356,7 @@ void ExecutionTest::WaveSizeTest() { VERIFY_IS_TRUE(sizeof(WaveSizeTestData)*MAX_WAVESIZE <= Data.size()); WaveSizeTestData *pInData = (WaveSizeTestData *)Data.data(); memset(&pInData, sizeof(WaveSizeTestData)*MAX_WAVESIZE, 0); - }); + }, ShaderOpSet); // verify expected values MappedData dataUav;