HLSL: Add back in the [subcomponent] part of a 'register' decl.
This commit is contained in:
		
							parent
							
								
									dd50d025d6
								
							
						
					
					
						commit
						b38f071605
					
				@ -1,32 +1,35 @@
 | 
				
			|||||||
hlsl.struct.frag
 | 
					hlsl.struct.frag
 | 
				
			||||||
WARNING: 0:26: 'register' : ignoring shader_profile 
 | 
					WARNING: 0:26: 'register' : ignoring shader_profile 
 | 
				
			||||||
WARNING: 0:27: 'register' : ignoring shader_profile 
 | 
					WARNING: 0:27: 'register' : ignoring shader_profile 
 | 
				
			||||||
 | 
					WARNING: 0:30: 'register' : ignoring shader_profile 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Shader version: 450
 | 
					Shader version: 450
 | 
				
			||||||
gl_FragCoord origin is upper left
 | 
					gl_FragCoord origin is upper left
 | 
				
			||||||
0:? Sequence
 | 
					0:? Sequence
 | 
				
			||||||
0:40  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
 | 
					0:43  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
 | 
				
			||||||
0:31    Function Parameters: 
 | 
					0:34    Function Parameters: 
 | 
				
			||||||
0:31      'input' (in 4-component vector of float)
 | 
					0:34      'input' (in 4-component vector of float)
 | 
				
			||||||
0:?     Sequence
 | 
					0:?     Sequence
 | 
				
			||||||
0:36      Compare Equal (temp bool)
 | 
					0:39      Compare Equal (temp bool)
 | 
				
			||||||
0:36        's3' (temp structure{temp 3-component vector of bool b3})
 | 
					0:39        's3' (temp structure{temp 3-component vector of bool b3})
 | 
				
			||||||
0:36        's3' (temp structure{temp 3-component vector of bool b3})
 | 
					0:39        's3' (temp structure{temp 3-component vector of bool b3})
 | 
				
			||||||
0:37      move second child to first child (temp 4-component vector of float)
 | 
					0:40      move second child to first child (temp 4-component vector of float)
 | 
				
			||||||
0:37        i: direct index for structure (temp 4-component vector of float)
 | 
					0:40        i: direct index for structure (temp 4-component vector of float)
 | 
				
			||||||
0:37          's2' (global structure{temp 4-component vector of float i})
 | 
					0:40          's2' (global structure{temp 4-component vector of float i})
 | 
				
			||||||
0:37          Constant:
 | 
					0:40          Constant:
 | 
				
			||||||
0:37            0 (const int)
 | 
					0:40            0 (const int)
 | 
				
			||||||
0:37        ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord)
 | 
					0:40        ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord)
 | 
				
			||||||
0:37          's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
 | 
					0:40          's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
 | 
				
			||||||
0:37          Constant:
 | 
					0:40          Constant:
 | 
				
			||||||
0:37            7 (const int)
 | 
					0:40            7 (const int)
 | 
				
			||||||
0:39      Branch: Return with expression
 | 
					0:42      Branch: Return with expression
 | 
				
			||||||
0:39        'input' (in 4-component vector of float)
 | 
					0:42        'input' (in 4-component vector of float)
 | 
				
			||||||
0:?   Linker Objects
 | 
					0:?   Linker Objects
 | 
				
			||||||
0:?     's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
 | 
					0:?     's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
 | 
				
			||||||
0:?     's2' (global structure{temp 4-component vector of float i})
 | 
					0:?     's2' (global structure{temp 4-component vector of float i})
 | 
				
			||||||
0:?     's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
 | 
					0:?     's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
 | 
				
			||||||
 | 
					0:?     'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float)
 | 
				
			||||||
 | 
					0:?     'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Linked fragment stage:
 | 
					Linked fragment stage:
 | 
				
			||||||
@ -35,32 +38,34 @@ Linked fragment stage:
 | 
				
			|||||||
Shader version: 450
 | 
					Shader version: 450
 | 
				
			||||||
gl_FragCoord origin is upper left
 | 
					gl_FragCoord origin is upper left
 | 
				
			||||||
0:? Sequence
 | 
					0:? Sequence
 | 
				
			||||||
0:40  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
 | 
					0:43  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
 | 
				
			||||||
0:31    Function Parameters: 
 | 
					0:34    Function Parameters: 
 | 
				
			||||||
0:31      'input' (in 4-component vector of float)
 | 
					0:34      'input' (in 4-component vector of float)
 | 
				
			||||||
0:?     Sequence
 | 
					0:?     Sequence
 | 
				
			||||||
0:36      Compare Equal (temp bool)
 | 
					0:39      Compare Equal (temp bool)
 | 
				
			||||||
0:36        's3' (temp structure{temp 3-component vector of bool b3})
 | 
					0:39        's3' (temp structure{temp 3-component vector of bool b3})
 | 
				
			||||||
0:36        's3' (temp structure{temp 3-component vector of bool b3})
 | 
					0:39        's3' (temp structure{temp 3-component vector of bool b3})
 | 
				
			||||||
0:37      move second child to first child (temp 4-component vector of float)
 | 
					0:40      move second child to first child (temp 4-component vector of float)
 | 
				
			||||||
0:37        i: direct index for structure (temp 4-component vector of float)
 | 
					0:40        i: direct index for structure (temp 4-component vector of float)
 | 
				
			||||||
0:37          's2' (global structure{temp 4-component vector of float i})
 | 
					0:40          's2' (global structure{temp 4-component vector of float i})
 | 
				
			||||||
0:37          Constant:
 | 
					0:40          Constant:
 | 
				
			||||||
0:37            0 (const int)
 | 
					0:40            0 (const int)
 | 
				
			||||||
0:37        ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord)
 | 
					0:40        ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord)
 | 
				
			||||||
0:37          's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
 | 
					0:40          's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
 | 
				
			||||||
0:37          Constant:
 | 
					0:40          Constant:
 | 
				
			||||||
0:37            7 (const int)
 | 
					0:40            7 (const int)
 | 
				
			||||||
0:39      Branch: Return with expression
 | 
					0:42      Branch: Return with expression
 | 
				
			||||||
0:39        'input' (in 4-component vector of float)
 | 
					0:42        'input' (in 4-component vector of float)
 | 
				
			||||||
0:?   Linker Objects
 | 
					0:?   Linker Objects
 | 
				
			||||||
0:?     's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
 | 
					0:?     's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
 | 
				
			||||||
0:?     's2' (global structure{temp 4-component vector of float i})
 | 
					0:?     's2' (global structure{temp 4-component vector of float i})
 | 
				
			||||||
0:?     's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
 | 
					0:?     's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
 | 
				
			||||||
 | 
					0:?     'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float)
 | 
				
			||||||
 | 
					0:?     'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Module Version 10000
 | 
					// Module Version 10000
 | 
				
			||||||
// Generated by (magic number): 80001
 | 
					// Generated by (magic number): 80001
 | 
				
			||||||
// Id's are bound by 40
 | 
					// Id's are bound by 44
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              Capability Shader
 | 
					                              Capability Shader
 | 
				
			||||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
					               1:             ExtInstImport  "GLSL.std.450"
 | 
				
			||||||
@ -92,8 +97,14 @@ gl_FragCoord origin is upper left
 | 
				
			|||||||
                              MemberName 37(myS) 2  "a"
 | 
					                              MemberName 37(myS) 2  "a"
 | 
				
			||||||
                              MemberName 37(myS) 3  "d"
 | 
					                              MemberName 37(myS) 3  "d"
 | 
				
			||||||
                              Name 39  "s1"
 | 
					                              Name 39  "s1"
 | 
				
			||||||
 | 
					                              Name 42  "ff5"
 | 
				
			||||||
 | 
					                              Name 43  "ff6"
 | 
				
			||||||
                              MemberDecorate 25 4 BuiltIn FrontFacing
 | 
					                              MemberDecorate 25 4 BuiltIn FrontFacing
 | 
				
			||||||
                              MemberDecorate 25 7 BuiltIn FragCoord
 | 
					                              MemberDecorate 25 7 BuiltIn FragCoord
 | 
				
			||||||
 | 
					                              Decorate 42(ff5) Offset 20
 | 
				
			||||||
 | 
					                              Decorate 42(ff5) Binding 5
 | 
				
			||||||
 | 
					                              Decorate 43(ff6) Offset 36
 | 
				
			||||||
 | 
					                              Decorate 43(ff6) Binding 8
 | 
				
			||||||
               2:             TypeVoid
 | 
					               2:             TypeVoid
 | 
				
			||||||
               3:             TypeFunction 2
 | 
					               3:             TypeFunction 2
 | 
				
			||||||
               6:             TypeBool
 | 
					               6:             TypeBool
 | 
				
			||||||
@ -118,6 +129,10 @@ gl_FragCoord origin is upper left
 | 
				
			|||||||
         37(myS):             TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
 | 
					         37(myS):             TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
 | 
				
			||||||
              38:             TypePointer Private 37(myS)
 | 
					              38:             TypePointer Private 37(myS)
 | 
				
			||||||
          39(s1):     38(ptr) Variable Private
 | 
					          39(s1):     38(ptr) Variable Private
 | 
				
			||||||
 | 
					              40:             TypeVector 17(float) 3
 | 
				
			||||||
 | 
					              41:             TypePointer Private 40(fvec3)
 | 
				
			||||||
 | 
					         42(ff5):     41(ptr) Variable Private
 | 
				
			||||||
 | 
					         43(ff6):     41(ptr) Variable Private
 | 
				
			||||||
4(PixelShaderFunction):           2 Function None 3
 | 
					4(PixelShaderFunction):           2 Function None 3
 | 
				
			||||||
               5:             Label
 | 
					               5:             Label
 | 
				
			||||||
          10(s3):      9(ptr) Variable Function
 | 
					          10(s3):      9(ptr) Variable Function
 | 
				
			||||||
 | 
				
			|||||||
@ -27,6 +27,9 @@ struct {
 | 
				
			|||||||
    float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s0) <int bambam=30;> ;
 | 
					    float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s0) <int bambam=30;> ;
 | 
				
			||||||
} s4;
 | 
					} s4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float3 ff5 : packoffset(c1.y) : register(ps_5_0, s[5]);
 | 
				
			||||||
 | 
					float3 ff6 : packoffset(c2.y) : register(s3[5]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float4 PixelShaderFunction(float4 input) : COLOR0
 | 
					float4 PixelShaderFunction(float4 input) : COLOR0
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    struct FS {
 | 
					    struct FS {
 | 
				
			||||||
 | 
				
			|||||||
@ -3,4 +3,4 @@
 | 
				
			|||||||
// For the date, it uses the current date (when then script is run).
 | 
					// For the date, it uses the current date (when then script is run).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define GLSLANG_REVISION "SPIRV99.1367"
 | 
					#define GLSLANG_REVISION "SPIRV99.1367"
 | 
				
			||||||
#define GLSLANG_DATE "29-Jul-2016"
 | 
					#define GLSLANG_DATE "30-Jul-2016"
 | 
				
			||||||
 | 
				
			|||||||
@ -2523,10 +2523,10 @@ void HlslGrammar::acceptArraySpecifier(TArraySizes*& arraySizes)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// post_decls
 | 
					// post_decls
 | 
				
			||||||
//      : COLON semantic                                                      // optional
 | 
					//      : COLON semantic                                                            // optional
 | 
				
			||||||
//        COLON PACKOFFSET LEFT_PAREN c[Subcomponent][.component] RIGHT_PAREN // optional
 | 
					//        COLON PACKOFFSET LEFT_PAREN c[Subcomponent][.component]       RIGHT_PAREN // optional
 | 
				
			||||||
//        COLON REGISTER LEFT_PAREN [shader_profile,] Type# RIGHT_PAREN       // optional
 | 
					//        COLON REGISTER LEFT_PAREN [shader_profile,] Type#[subcomp]opt RIGHT_PAREN // optional
 | 
				
			||||||
//        annotations                                                         // optional
 | 
					//        annotations                                                               // optional
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
void HlslGrammar::acceptPostDecls(TType& type)
 | 
					void HlslGrammar::acceptPostDecls(TType& type)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -2561,31 +2561,45 @@ void HlslGrammar::acceptPostDecls(TType& type)
 | 
				
			|||||||
                expected("semantic or packoffset or register");
 | 
					                expected("semantic or packoffset or register");
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            } else if (*idToken.string == "register") {
 | 
					            } else if (*idToken.string == "register") {
 | 
				
			||||||
                // REGISTER LEFT_PAREN [shader_profile,] Type# RIGHT_PAREN
 | 
					                // REGISTER LEFT_PAREN [shader_profile,] Type#[subcomp]opt RIGHT_PAREN
 | 
				
			||||||
                if (! acceptTokenClass(EHTokLeftParen)) {
 | 
					                if (! acceptTokenClass(EHTokLeftParen)) {
 | 
				
			||||||
                    expected("(");
 | 
					                    expected("(");
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                HlslToken registerDesc;
 | 
					                HlslToken registerDesc;  // for Type#
 | 
				
			||||||
 | 
					                HlslToken profile;
 | 
				
			||||||
                if (! acceptIdentifier(registerDesc)) {
 | 
					                if (! acceptIdentifier(registerDesc)) {
 | 
				
			||||||
                    expected("register number description");
 | 
					                    expected("register number description");
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                HlslToken profile;
 | 
					 | 
				
			||||||
                if (acceptTokenClass(EHTokComma)) {
 | 
					                if (acceptTokenClass(EHTokComma)) {
 | 
				
			||||||
                    // then we didn't really see the registerDesc yet, it was
 | 
					                    // Then we didn't really see the registerDesc yet, it was
 | 
				
			||||||
                    // actually the profile
 | 
					                    // actually the profile.  Adjust...
 | 
				
			||||||
                    profile = registerDesc;
 | 
					                    profile = registerDesc;
 | 
				
			||||||
                    if (! acceptIdentifier(registerDesc)) {
 | 
					                    if (! acceptIdentifier(registerDesc)) {
 | 
				
			||||||
                        expected("register number description");
 | 
					                        expected("register number description");
 | 
				
			||||||
                        return;
 | 
					                        return;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					                int subComponent = 0;
 | 
				
			||||||
 | 
					                if (acceptTokenClass(EHTokLeftBracket)) {
 | 
				
			||||||
 | 
					                    // LEFT_BRACKET subcomponent RIGHT_BRACKET
 | 
				
			||||||
 | 
					                    if (! peekTokenClass(EHTokIntConstant)) {
 | 
				
			||||||
 | 
					                        expected("literal integer");
 | 
				
			||||||
 | 
					                        return;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    subComponent = token.i;
 | 
				
			||||||
 | 
					                    advanceToken();
 | 
				
			||||||
 | 
					                    if (! acceptTokenClass(EHTokRightBracket)) {
 | 
				
			||||||
 | 
					                        expected("]");
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
                if (! acceptTokenClass(EHTokRightParen)) {
 | 
					                if (! acceptTokenClass(EHTokRightParen)) {
 | 
				
			||||||
                    expected(")");
 | 
					                    expected(")");
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                parseContext.handleRegister(registerDesc.loc, type, profile.string, *registerDesc.string);
 | 
					                parseContext.handleRegister(registerDesc.loc, type, profile.string, *registerDesc.string, subComponent);
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                // semantic, in idToken.string
 | 
					                // semantic, in idToken.string
 | 
				
			||||||
                parseContext.handleSemantic(type, *idToken.string);
 | 
					                parseContext.handleSemantic(type, *idToken.string);
 | 
				
			||||||
 | 
				
			|||||||
@ -2181,27 +2181,34 @@ void HlslParseContext::handlePackOffset(const TSourceLoc& loc, TType& type, cons
 | 
				
			|||||||
// 'desc' is the type# part.
 | 
					// 'desc' is the type# part.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
void HlslParseContext::handleRegister(const TSourceLoc& loc, TType& type, const glslang::TString* profile,
 | 
					void HlslParseContext::handleRegister(const TSourceLoc& loc, TType& type, const glslang::TString* profile,
 | 
				
			||||||
                                                                          const glslang::TString& desc)
 | 
					                                                                          const glslang::TString& desc,
 | 
				
			||||||
 | 
					                                                                          int subComponent)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (profile != nullptr)
 | 
					    if (profile != nullptr)
 | 
				
			||||||
        warn(loc, "ignoring shader_profile", "register", "");
 | 
					        warn(loc, "ignoring shader_profile", "register", "");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (desc.size() < 2) {
 | 
					    if (desc.size() < 1) {
 | 
				
			||||||
        error(loc, "expected register type and number", "register", "");
 | 
					        error(loc, "expected register type", "register", "");
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (! isdigit(desc[1])) {
 | 
					    int regNumber = 0;
 | 
				
			||||||
        error(loc, "expected register number after register type", "register", "");
 | 
					    if (desc.size() > 1) {
 | 
				
			||||||
        return;
 | 
					        if (isdigit(desc[1]))
 | 
				
			||||||
 | 
					            regNumber = atoi(desc.substr(1, desc.size()).c_str());
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            error(loc, "expected register number after register type", "register", "");
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TODO: learn what all these really mean and how they interact with regNumber and subComponent
 | 
				
			||||||
    switch (desc[0]) {
 | 
					    switch (desc[0]) {
 | 
				
			||||||
    case 'b':
 | 
					    case 'b':
 | 
				
			||||||
    case 't':
 | 
					    case 't':
 | 
				
			||||||
    case 'c':
 | 
					    case 'c':
 | 
				
			||||||
    case 's':
 | 
					    case 's':
 | 
				
			||||||
        type.getQualifier().layoutBinding = atoi(desc.substr(1, desc.size()).c_str());
 | 
					        type.getQualifier().layoutBinding = regNumber + subComponent;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        warn(loc, "ignoring unrecognized register type", "register", "%c", desc[0]);
 | 
					        warn(loc, "ignoring unrecognized register type", "register", "%c", desc[0]);
 | 
				
			||||||
 | 
				
			|||||||
@ -95,8 +95,10 @@ public:
 | 
				
			|||||||
    void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&);
 | 
					    void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&);
 | 
				
			||||||
    TFunction* handleConstructorCall(const TSourceLoc&, const TType&);
 | 
					    TFunction* handleConstructorCall(const TSourceLoc&, const TType&);
 | 
				
			||||||
    void handleSemantic(TType& type, const TString& semantic);
 | 
					    void handleSemantic(TType& type, const TString& semantic);
 | 
				
			||||||
    void handlePackOffset(const TSourceLoc&, TType& type, const glslang::TString& location, const glslang::TString* component);
 | 
					    void handlePackOffset(const TSourceLoc&, TType& type, const glslang::TString& location,
 | 
				
			||||||
    void handleRegister(const TSourceLoc&, TType& type, const glslang::TString* profile, const glslang::TString& desc);
 | 
					                          const glslang::TString* component);
 | 
				
			||||||
 | 
					    void handleRegister(const TSourceLoc&, TType& type, const glslang::TString* profile, const glslang::TString& desc,
 | 
				
			||||||
 | 
					                        int subComponent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    TIntermAggregate* handleSamplerTextureCombine(const TSourceLoc& loc, TIntermTyped* argTex, TIntermTyped* argSampler);
 | 
					    TIntermAggregate* handleSamplerTextureCombine(const TSourceLoc& loc, TIntermTyped* argTex, TIntermTyped* argSampler);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user