Execution tests: allow sharing of compile arguments (#5742)
Allow sharing of shader compile arguments by referencing Arguments attribute from other shaders like this: ``` ... <Shader Name="PS" Target="ps_6_0" EntryPoint="PSMain" Text="@CS" Arguments="@CS"/> <Shader Name="CS" Target="cs_6_0" EntryPoint="CSMain" Arguments="/Od"> <![CDATA[ ... ```
This commit is contained in:
Родитель
b157edec90
Коммит
7b1c535a67
|
@ -830,6 +830,7 @@ void ShaderOpTest::CreateShaders() {
|
|||
CComPtr<ID3DBlob> pCode;
|
||||
HRESULT hr = S_OK;
|
||||
LPCSTR pText = m_pShaderOp->GetShaderText(&S);
|
||||
LPCSTR pArguments = m_pShaderOp->GetShaderArguments(&S);
|
||||
if (S.Callback) {
|
||||
if (!m_ShaderCallbackFn) {
|
||||
ShaderOpLogFmt(
|
||||
|
@ -858,7 +859,7 @@ void ShaderOpTest::CreateShaders() {
|
|||
CA2W nameW(S.Name, CP_UTF8);
|
||||
CA2W entryPointW(S.EntryPoint, CP_UTF8);
|
||||
CA2W targetW(S.Target, CP_UTF8);
|
||||
CA2W argumentsW(S.Arguments, CP_UTF8);
|
||||
CA2W argumentsW(pArguments, CP_UTF8);
|
||||
|
||||
std::vector<LPWSTR> argumentsWList;
|
||||
splitWStringIntoVectors(argumentsW, L' ', argumentsWList);
|
||||
|
|
|
@ -221,6 +221,18 @@ public:
|
|||
}
|
||||
return result;
|
||||
}
|
||||
LPCSTR GetShaderArguments(ShaderOpShader *pShader) {
|
||||
if (!pShader || !pShader->Arguments) return nullptr;
|
||||
LPCSTR result = pShader->Arguments;
|
||||
if (result[0] == '@') {
|
||||
for (auto && S : Shaders) {
|
||||
if (S.Name && 0 == strcmp(S.Name, result + 1))
|
||||
return S.Arguments;
|
||||
}
|
||||
result = nullptr;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
ShaderOpDescriptorHeap *GetDescriptorHeapByName(LPCSTR pName) {
|
||||
for (auto &&R : DescriptorHeaps) {
|
||||
if (R.Name && 0 == strcmp(R.Name, pName))
|
||||
|
|
Загрузка…
Ссылка в новой задаче