HLSL: enable #line extension by default for HLSL source.
This commit is contained in:
parent
b8d2a006d1
commit
6256146ef3
124
Test/baseResults/hlsl.pp.line.frag.out
Normal file
124
Test/baseResults/hlsl.pp.line.frag.out
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
hlsl.pp.line.frag
|
||||||
|
Shader version: 450
|
||||||
|
gl_FragCoord origin is upper left
|
||||||
|
0:? Sequence
|
||||||
|
0:131 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
|
||||||
|
0:4 Function Parameters:
|
||||||
|
0:? Sequence
|
||||||
|
0:124 Sequence
|
||||||
|
0:124 move second child to first child (temp int)
|
||||||
|
0:124 'thisLineIs' (temp int)
|
||||||
|
0:124 Constant:
|
||||||
|
0:124 124 (const int)
|
||||||
|
0:126 move second child to first child (temp 4-component vector of float)
|
||||||
|
0:126 Color: direct index for structure (temp 4-component vector of float)
|
||||||
|
0:126 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
|
||||||
|
0:126 Constant:
|
||||||
|
0:126 0 (const int)
|
||||||
|
0:? Construct vec4 (temp 4-component vector of float)
|
||||||
|
0:126 Convert int to float (temp float)
|
||||||
|
0:126 'thisLineIs' (temp int)
|
||||||
|
0:126 Constant:
|
||||||
|
0:126 0.000000
|
||||||
|
0:126 Constant:
|
||||||
|
0:126 0.000000
|
||||||
|
0:126 Constant:
|
||||||
|
0:126 1.000000
|
||||||
|
0:127 move second child to first child (temp float)
|
||||||
|
0:127 Depth: direct index for structure (temp float FragDepth)
|
||||||
|
0:127 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
|
||||||
|
0:127 Constant:
|
||||||
|
0:127 1 (const int)
|
||||||
|
0:127 Constant:
|
||||||
|
0:127 1.000000
|
||||||
|
0:129 Branch: Return with expression
|
||||||
|
0:129 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
|
||||||
|
0:? Linker Objects
|
||||||
|
|
||||||
|
|
||||||
|
Linked fragment stage:
|
||||||
|
|
||||||
|
|
||||||
|
Shader version: 450
|
||||||
|
gl_FragCoord origin is upper left
|
||||||
|
0:? Sequence
|
||||||
|
0:131 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
|
||||||
|
0:4 Function Parameters:
|
||||||
|
0:? Sequence
|
||||||
|
0:124 Sequence
|
||||||
|
0:124 move second child to first child (temp int)
|
||||||
|
0:124 'thisLineIs' (temp int)
|
||||||
|
0:124 Constant:
|
||||||
|
0:124 124 (const int)
|
||||||
|
0:126 move second child to first child (temp 4-component vector of float)
|
||||||
|
0:126 Color: direct index for structure (temp 4-component vector of float)
|
||||||
|
0:126 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
|
||||||
|
0:126 Constant:
|
||||||
|
0:126 0 (const int)
|
||||||
|
0:? Construct vec4 (temp 4-component vector of float)
|
||||||
|
0:126 Convert int to float (temp float)
|
||||||
|
0:126 'thisLineIs' (temp int)
|
||||||
|
0:126 Constant:
|
||||||
|
0:126 0.000000
|
||||||
|
0:126 Constant:
|
||||||
|
0:126 0.000000
|
||||||
|
0:126 Constant:
|
||||||
|
0:126 1.000000
|
||||||
|
0:127 move second child to first child (temp float)
|
||||||
|
0:127 Depth: direct index for structure (temp float FragDepth)
|
||||||
|
0:127 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
|
||||||
|
0:127 Constant:
|
||||||
|
0:127 1 (const int)
|
||||||
|
0:127 Constant:
|
||||||
|
0:127 1.000000
|
||||||
|
0:129 Branch: Return with expression
|
||||||
|
0:129 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
|
||||||
|
0:? Linker Objects
|
||||||
|
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 28
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Fragment 4 "main"
|
||||||
|
ExecutionMode 4 OriginUpperLeft
|
||||||
|
Source HLSL 450
|
||||||
|
Name 4 "main"
|
||||||
|
Name 8 "thisLineIs"
|
||||||
|
Name 12 "PS_OUTPUT"
|
||||||
|
MemberName 12(PS_OUTPUT) 0 "Color"
|
||||||
|
MemberName 12(PS_OUTPUT) 1 "Depth"
|
||||||
|
Name 14 "psout"
|
||||||
|
MemberDecorate 12(PS_OUTPUT) 1 BuiltIn FragDepth
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeInt 32 1
|
||||||
|
7: TypePointer Function 6(int)
|
||||||
|
9: 6(int) Constant 124
|
||||||
|
10: TypeFloat 32
|
||||||
|
11: TypeVector 10(float) 4
|
||||||
|
12(PS_OUTPUT): TypeStruct 11(fvec4) 10(float)
|
||||||
|
13: TypePointer Function 12(PS_OUTPUT)
|
||||||
|
15: 6(int) Constant 0
|
||||||
|
18: 10(float) Constant 0
|
||||||
|
19: 10(float) Constant 1065353216
|
||||||
|
21: TypePointer Function 11(fvec4)
|
||||||
|
23: 6(int) Constant 1
|
||||||
|
24: TypePointer Function 10(float)
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
8(thisLineIs): 7(ptr) Variable Function
|
||||||
|
14(psout): 13(ptr) Variable Function
|
||||||
|
Store 8(thisLineIs) 9
|
||||||
|
16: 6(int) Load 8(thisLineIs)
|
||||||
|
17: 10(float) ConvertSToF 16
|
||||||
|
20: 11(fvec4) CompositeConstruct 17 18 18 19
|
||||||
|
22: 21(ptr) AccessChain 14(psout) 15
|
||||||
|
Store 22 20
|
||||||
|
25: 24(ptr) AccessChain 14(psout) 23
|
||||||
|
Store 25 19
|
||||||
|
26:12(PS_OUTPUT) Load 14(psout)
|
||||||
|
ReturnValue 26
|
||||||
|
FunctionEnd
|
24
Test/hlsl.pp.line.frag
Normal file
24
Test/hlsl.pp.line.frag
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
#line 1
|
||||||
|
|
||||||
|
struct PS_OUTPUT
|
||||||
|
{
|
||||||
|
float4 Color : SV_Target0;
|
||||||
|
float Depth : SV_Depth;
|
||||||
|
};
|
||||||
|
|
||||||
|
#line 2
|
||||||
|
|
||||||
|
PS_OUTPUT main()
|
||||||
|
{
|
||||||
|
PS_OUTPUT psout;
|
||||||
|
|
||||||
|
#line 123 "SomeFile.frag"
|
||||||
|
|
||||||
|
int thisLineIs = __LINE__; // gets 124
|
||||||
|
|
||||||
|
psout.Color = float4(thisLineIs, 0, 0, 1);
|
||||||
|
psout.Depth = 1.0;
|
||||||
|
|
||||||
|
return psout;
|
||||||
|
}
|
@ -119,12 +119,12 @@ public:
|
|||||||
TIntermediate& intermediate; // helper for making and hooking up pieces of the parse tree
|
TIntermediate& intermediate; // helper for making and hooking up pieces of the parse tree
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
TMap<TString, TExtensionBehavior> extensionBehavior; // for each extension string, what its current behavior is set to
|
||||||
EShMessages messages; // errors/warnings/rule-sets
|
EShMessages messages; // errors/warnings/rule-sets
|
||||||
int numErrors; // number of compile-time errors encountered
|
int numErrors; // number of compile-time errors encountered
|
||||||
TInputScanner* currentScanner;
|
TInputScanner* currentScanner;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TMap<TString, TExtensionBehavior> extensionBehavior; // for each extension string, what its current behavior is set to
|
|
||||||
explicit TParseVersions(const TParseVersions&);
|
explicit TParseVersions(const TParseVersions&);
|
||||||
TParseVersions& operator=(const TParseVersions&);
|
TParseVersions& operator=(const TParseVersions&);
|
||||||
};
|
};
|
||||||
|
@ -100,6 +100,7 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
{"hlsl.load.basic.dx10.frag", "main"},
|
{"hlsl.load.basic.dx10.frag", "main"},
|
||||||
{"hlsl.load.offset.dx10.frag", "main"},
|
{"hlsl.load.offset.dx10.frag", "main"},
|
||||||
{"hlsl.load.offsetarray.dx10.frag", "main"},
|
{"hlsl.load.offsetarray.dx10.frag", "main"},
|
||||||
|
{"hlsl.pp.line.frag", "main"},
|
||||||
{"hlsl.sample.array.dx10.frag", "main"},
|
{"hlsl.sample.array.dx10.frag", "main"},
|
||||||
{"hlsl.sample.basic.dx10.frag", "main"},
|
{"hlsl.sample.basic.dx10.frag", "main"},
|
||||||
{"hlsl.sample.offset.dx10.frag", "main"},
|
{"hlsl.sample.offset.dx10.frag", "main"},
|
||||||
|
@ -88,6 +88,14 @@ HlslParseContext::~HlslParseContext()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HlslParseContext::initializeExtensionBehavior()
|
||||||
|
{
|
||||||
|
TParseContextBase::initializeExtensionBehavior();
|
||||||
|
|
||||||
|
// HLSL allows #line by default.
|
||||||
|
extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhEnable;
|
||||||
|
}
|
||||||
|
|
||||||
void HlslParseContext::setLimits(const TBuiltInResource& r)
|
void HlslParseContext::setLimits(const TBuiltInResource& r)
|
||||||
{
|
{
|
||||||
resources = r;
|
resources = r;
|
||||||
|
@ -47,6 +47,8 @@ public:
|
|||||||
int version, EProfile, const SpvVersion& spvVersion, EShLanguage, TInfoSink&,
|
int version, EProfile, const SpvVersion& spvVersion, EShLanguage, TInfoSink&,
|
||||||
bool forwardCompatible = false, EShMessages messages = EShMsgDefault);
|
bool forwardCompatible = false, EShMessages messages = EShMsgDefault);
|
||||||
virtual ~HlslParseContext();
|
virtual ~HlslParseContext();
|
||||||
|
void initializeExtensionBehavior();
|
||||||
|
|
||||||
void setLimits(const TBuiltInResource&);
|
void setLimits(const TBuiltInResource&);
|
||||||
bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false);
|
bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false);
|
||||||
void getPreamble(std::string&);
|
void getPreamble(std::string&);
|
||||||
@ -184,7 +186,6 @@ protected:
|
|||||||
HlslParseContext(HlslParseContext&);
|
HlslParseContext(HlslParseContext&);
|
||||||
HlslParseContext& operator=(HlslParseContext&);
|
HlslParseContext& operator=(HlslParseContext&);
|
||||||
|
|
||||||
TMap<TString, TExtensionBehavior> extensionBehavior; // for each extension string, what its current behavior is set to
|
|
||||||
static const int maxSamplerIndex = EsdNumDims * (EbtNumTypes * (2 * 2 * 2)); // see computeSamplerTypeIndex()
|
static const int maxSamplerIndex = EsdNumDims * (EbtNumTypes * (2 * 2 * 2)); // see computeSamplerTypeIndex()
|
||||||
bool afterEOF;
|
bool afterEOF;
|
||||||
TQualifier globalBufferDefaults;
|
TQualifier globalBufferDefaults;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user