Manually merge ClemensRognerSD-dx9-sampler and resolve conflicts.
This commit is contained in:
parent
5d43c4aac7
commit
bd1c1831d5
13 changed files with 1060 additions and 8 deletions
|
|
@ -1163,6 +1163,49 @@ bool HlslGrammar::acceptSubpassInputType(TType& type)
|
|||
return true;
|
||||
}
|
||||
|
||||
// sampler_type for DX9 compatibility
|
||||
// : SAMPLER
|
||||
// | SAMPLER1D
|
||||
// | SAMPLER2D
|
||||
// | SAMPLER3D
|
||||
// | SAMPLERCUBE
|
||||
bool HlslGrammar::acceptSamplerTypeDX9(TType &type)
|
||||
{
|
||||
// read sampler type
|
||||
const EHlslTokenClass samplerType = peek();
|
||||
|
||||
TSamplerDim dim = EsdNone;
|
||||
TType txType(EbtFloat, EvqUniform, 4); // default type is float4
|
||||
|
||||
bool isShadow = false;
|
||||
|
||||
switch (samplerType)
|
||||
{
|
||||
case EHTokSampler: dim = Esd2D; break;
|
||||
case EHTokSampler1d: dim = Esd1D; break;
|
||||
case EHTokSampler2d: dim = Esd2D; break;
|
||||
case EHTokSampler3d: dim = Esd3D; break;
|
||||
case EHTokSamplerCube: dim = EsdCube; break;
|
||||
default:
|
||||
return false; // not a dx9 sampler declaration
|
||||
}
|
||||
|
||||
advanceToken(); // consume the sampler type keyword
|
||||
|
||||
TArraySizes *arraySizes = nullptr; // TODO: array
|
||||
|
||||
TSampler sampler;
|
||||
sampler.set(txType.getBasicType(), dim, false, isShadow, false);
|
||||
|
||||
if (!parseContext.setTextureReturnType(sampler, txType, token.loc))
|
||||
return false;
|
||||
|
||||
type.shallowCopy(TType(sampler, EvqUniform, arraySizes));
|
||||
type.getQualifier().layoutFormat = ElfNone;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// sampler_type
|
||||
// : SAMPLER
|
||||
// | SAMPLER1D
|
||||
|
|
@ -1445,7 +1488,13 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
|
|||
case EHTokSampler2d: // ...
|
||||
case EHTokSampler3d: // ...
|
||||
case EHTokSamplerCube: // ...
|
||||
case EHTokSamplerState: // ...
|
||||
if (parseContext.hlslDX9Compatible())
|
||||
return acceptSamplerTypeDX9(type);
|
||||
else
|
||||
return acceptSamplerType(type);
|
||||
break;
|
||||
|
||||
case EHTokSamplerState: // fall through
|
||||
case EHTokSamplerComparisonState: // ...
|
||||
return acceptSamplerType(type);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue