Commit fa39cffd by LoopDawg

HLSL: Accept unorm and snorm on types

This is currently parsed and ignored, save for some minor validation.
parent c9e67405
unorm float4 uf4;
Texture3D<unorm float4> ResultInU: register(t0);
RWTexture3D<unorm float4> ResultOutU: register(u0);
Texture3D<snorm float4> ResultInS: register(t1);
RWTexture3D<snorm float4> ResultOutS: register(u1);
[numthreads(16, 16, 1)]
void main(uint3 tid: SV_DispatchThreadID)
{
ResultOutS[tid] = ResultInS[tid] + uf4;
ResultOutU[tid] = ResultInU[tid];
}
......@@ -297,6 +297,7 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.semicolons.frag", "main"},
{"hlsl.shapeConv.frag", "main"},
{"hlsl.shapeConvRet.frag", "main"},
{"hlsl.snorm.uav.comp", "main"},
{"hlsl.staticMemberFunction.frag", "main"},
{"hlsl.stringtoken.frag", "main"},
{"hlsl.string.frag", "main"},
......
......@@ -1378,6 +1378,23 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
}
}
bool isUnorm = false;
bool isSnorm = false;
// Accept snorm and unorm. Presently, this is ignored, save for an error check below.
switch (peek()) {
case EHTokUnorm:
isUnorm = true;
advanceToken(); // eat the token
break;
case EHTokSNorm:
isSnorm = true;
advanceToken(); // eat the token
break;
default:
break;
}
switch (peek()) {
case EHTokVector:
return acceptVectorTemplateType(type);
......@@ -1972,6 +1989,11 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
advanceToken();
if ((isUnorm || isSnorm) && !type.isFloatingDomain()) {
parseContext.error(token.loc, "unorm and snorm only valid in floating point domain", "", "");
return false;
}
return true;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment