summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-specialize-resources.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-02-20 12:24:00 -0800
committerGitHub <noreply@github.com>2024-02-20 12:24:00 -0800
commit4d20fd329956ac89408b1628a8291fea01bc9a6d (patch)
tree8e62d9c1ec05142fd25d0b31073fdb56d44691b0 /source/slang/slang-ir-specialize-resources.cpp
parent8e9b61e3bac69dbb37a1451b62302e688a017ced (diff)
Refactor compiler option representations. (#3598)
* Refactor compiler option representation. * Fix binary compatibility. * Add a test for specifying compiler options at link time. * Fix binary compatibility. * Fix binary compatibility. * Fix backward compatibility on matrix layout. * Fix. * Fix. * Fix. * Fix gfx. * Fix gfx. * Fix dynamic dispatch. * Polish.
Diffstat (limited to 'source/slang/slang-ir-specialize-resources.cpp')
-rw-r--r--source/slang/slang-ir-specialize-resources.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/source/slang/slang-ir-specialize-resources.cpp b/source/slang/slang-ir-specialize-resources.cpp
index 4fd87e173..af7f41207 100644
--- a/source/slang/slang-ir-specialize-resources.cpp
+++ b/source/slang/slang-ir-specialize-resources.cpp
@@ -20,6 +20,7 @@ struct ResourceParameterSpecializationCondition : FunctionCallSpecializeConditio
// legal for a given target.
TargetRequest* targetRequest = nullptr;
+ TargetProgram* targetProgram = nullptr;
bool doesParamWantSpecialization(IRParam* param, IRInst* arg)
{
@@ -63,7 +64,7 @@ struct ResourceParameterSpecializationCondition : FunctionCallSpecializeConditio
//
if( isKhronosTarget(targetRequest) )
{
- if (targetRequest->shouldEmitSPIRVDirectly())
+ if (targetProgram->getOptionSet().shouldEmitSPIRVDirectly())
return isIllegalSPIRVParameterType(type, isArray);
else
return isIllegalGLSLParameterType(type);
@@ -90,6 +91,7 @@ bool specializeResourceParameters(
{
bool result = false;
ResourceParameterSpecializationCondition condition;
+ condition.targetProgram = codeGenContext->getTargetProgram();
condition.targetRequest = codeGenContext->getTargetReq();
bool changed = true;
while (changed)
@@ -1186,7 +1188,7 @@ bool specializeResourceUsage(
// and turned into SSA temporaries. Such optimization may enable
// the following passes to "see" and specialize more cases.
//
- simplifyIR(codeGenContext->getTargetReq(), irModule, IRSimplificationOptions::getFast());
+ simplifyIR(codeGenContext->getTargetProgram(), irModule, IRSimplificationOptions::getFast());
result |= changed;
}
if (unspecializableFuncs.getCount() == 0)
@@ -1206,7 +1208,7 @@ bool specializeResourceUsage(
inlineCall(call);
});
}
- simplifyIR(codeGenContext->getTargetReq(), irModule, IRSimplificationOptions::getFast());
+ simplifyIR(codeGenContext->getTargetProgram(), irModule, IRSimplificationOptions::getFast());
}
return result;
}