glslang/Test/hlsl.buffer.frag
John Kessenich 132cf53737 HLSL: Fix #1203: Declare anonymous members for cbuffer with no ';'
The grammar for no semicolon and no object name for cbuffer/tbuffer
was correct, but the production still skipped the anonymous declarations
if an identifier followed.
2018-01-02 11:27:54 -07:00

48 lines
1.0 KiB
GLSL

cbuffer buf1 {
float4 v1;
}; // extraneous ;
tbuffer buf2 {
float4 v2;
}; // extraneous ;
cbuffer cbufName {
float4 v3 : packoffset(c0);
int i3 : packoffset(c1.y);
}
tbuffer tbufName : register(t8) {
float4 v4 : packoffset(c1);
int i4 : packoffset(c3);
float f1 : packoffset(c3.w);
float f3 : packoffset(c4.x);
float f4 : packoffset(c4.y);
float f5 : packoffset(c4.z);
float f6 : packoffset(c);
float f7 : packoffset(c8);
float3x4 m1 : packoffset(c7);
row_major float3x4 m2 : packoffset(c11);
column_major float3x4 m3 : packoffset(c15);
float3x4 m4 : packoffset(c19);
}
float foo() // float looks like identifier, but can't be part of tbuffer
{
return 1.0;
}
struct id {
float4 a;
};
cbuffer cbufName2 {
float4 v24;
}
id PixelShaderFunction(float4 input : SV_POSITION) : SV_TARGET0 // id looks like id for cbuffer name, but can't be
{
id ret;
ret.a = v24 + (input + v1 + v2 + v3 + v4) * foo();
return ret;
}