Fix crash in WaveSizeTest on GPUs with more then one wave size options (#3431)
This commit is contained in:
Родитель
f069cc9649
Коммит
63fcca6356
|
@ -8296,8 +8296,6 @@ void ExecutionTest::WaveSizeTest() {
|
|||
WEX::TestExecution::SetVerifyOutput verifySettings(WEX::TestExecution::VerifyOutputSettings::LogOnlyFailures);
|
||||
|
||||
CComPtr<ID3D12Device> pDevice;
|
||||
CComPtr<IStream> 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<IStream> pStream;
|
||||
std::shared_ptr<st::ShaderOpSet> ShaderOpSet = std::make_shared<st::ShaderOpSet>();
|
||||
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<ShaderOpTestResult> test = RunShaderOpTest(pDevice, m_support, pStream, "WaveSizeTest",
|
||||
std::shared_ptr<ShaderOpTestResult> test = RunShaderOpTestAfterParse(pDevice, m_support, "WaveSizeTest",
|
||||
[&](LPCSTR Name, std::vector<BYTE> &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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче