@@ -15998,36 +15998,38 @@ SamplerDescriptor EmitPass::GetSamplerVariable(Value* sampleOp)
15998
15998
unsigned int samplerIdx = 0;
15999
15999
BufferType sampType = BUFFER_TYPE_UNKNOWN;
16000
16000
16001
- if (isa<GenIntrinsicInst>(sampleOp)) // from GetBufferPtr
16001
+ if (GenIntrinsicInst* sample = dyn_cast<GenIntrinsicInst>(sampleOp))
16002
+ {
16003
+ if (sample->getIntrinsicID() == GenISAIntrinsic::GenISA_GetBufferPtr)
16004
+ {
16005
+ Value* bufTyVal = cast<GenIntrinsicInst>(sampleOp)->getOperand(1);
16006
+ assert(isa<ConstantInt>(bufTyVal));
16007
+ sampType = (BufferType)(cast<ConstantInt>(bufTyVal)->getZExtValue());
16008
+ sampler.m_sampler = GetSymbol(sampleOp);
16009
+ assert(sampType == SAMPLER);
16010
+ sampler.m_samplerType = ESAMPLER_NORMAL;
16011
+ return sampler;
16012
+ }
16013
+ }
16014
+
16015
+ bool isBindless = false;
16016
+ bool directIdx = false;
16017
+
16018
+ sampType = DecodeAS4GFXResource(
16019
+ sampleOp->getType()->getPointerAddressSpace(),
16020
+ directIdx, samplerIdx);
16021
+ isBindless = (sampType == BINDLESS_SAMPLER);
16022
+ sampler.m_samplerType =
16023
+ isBindless ? ESAMPLER_BINDLESS : ESAMPLER_NORMAL;
16024
+
16025
+ if (isBindless || !directIdx)
16002
16026
{
16003
- Value* bufTyVal = cast<GenIntrinsicInst>(sampleOp)->getOperand(1);
16004
- assert(isa<ConstantInt>(bufTyVal));
16005
- sampType = (BufferType)(cast<ConstantInt>(bufTyVal)->getZExtValue());
16006
16027
sampler.m_sampler = GetSymbol(sampleOp);
16007
- assert(sampType == SAMPLER);
16008
- sampler.m_samplerType = ESAMPLER_NORMAL;
16009
16028
}
16010
16029
else
16011
16030
{
16012
- bool isBindless = false;
16013
- bool directIdx = false;
16014
-
16015
- sampType = DecodeAS4GFXResource(
16016
- sampleOp->getType()->getPointerAddressSpace(),
16017
- directIdx, samplerIdx);
16018
- isBindless = (sampType == BINDLESS_SAMPLER);
16019
- sampler.m_samplerType =
16020
- isBindless ? ESAMPLER_BINDLESS : ESAMPLER_NORMAL;
16021
-
16022
- if (isBindless || !directIdx)
16023
- {
16024
- sampler.m_sampler = GetSymbol(sampleOp);
16025
- }
16026
- else
16027
- {
16028
- sampler.m_sampler = m_currShader->ImmToVariable(
16029
- samplerIdx, ISA_TYPE_UD);
16030
- }
16031
+ sampler.m_sampler = m_currShader->ImmToVariable(
16032
+ samplerIdx, ISA_TYPE_UD);
16031
16033
}
16032
16034
return sampler;
16033
16035
}
0 commit comments