mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-20 13:53:14 +01:00
Updated glslang.
This commit is contained in:
4
3rdparty/glslang/CMakeLists.txt
vendored
4
3rdparty/glslang/CMakeLists.txt
vendored
@@ -45,7 +45,7 @@ if(USE_CCACHE)
|
||||
endif()
|
||||
|
||||
# Precompiled header macro. Parameters are source file list and filename for pch cpp file.
|
||||
macro(PCH SRCS PCHCPP)
|
||||
macro(glslang_pch SRCS PCHCPP)
|
||||
if(MSVC)
|
||||
if (CMAKE_GENERATOR MATCHES "^Visual Studio")
|
||||
set(PCH_NAME "$(IntDir)\\pch.pch")
|
||||
@@ -58,7 +58,7 @@ macro(PCH SRCS PCHCPP)
|
||||
set_source_files_properties(${PCHCPP} PROPERTIES COMPILE_FLAGS "/Ycpch.h /Fp${PCH_NAME} /Zm300" OBJECT_OUTPUTS "${PCH_NAME}")
|
||||
list(APPEND ${SRCS} "${PCHCPP}")
|
||||
endif()
|
||||
endmacro(PCH)
|
||||
endmacro(glslang_pch)
|
||||
|
||||
project(glslang)
|
||||
# make testing optional
|
||||
|
||||
1
3rdparty/glslang/SPIRV/SpvTools.cpp
vendored
1
3rdparty/glslang/SPIRV/SpvTools.cpp
vendored
@@ -152,6 +152,7 @@ void SpirvToolsLegalize(const glslang::TIntermediate&, std::vector<unsigned int>
|
||||
out << std::endl;
|
||||
});
|
||||
|
||||
optimizer.RegisterPass(spvtools::CreateDeadBranchElimPass());
|
||||
optimizer.RegisterPass(spvtools::CreateMergeReturnPass());
|
||||
optimizer.RegisterPass(spvtools::CreateInlineExhaustivePass());
|
||||
optimizer.RegisterPass(spvtools::CreateEliminateDeadFunctionsPass());
|
||||
|
||||
@@ -10,6 +10,7 @@ ERROR: 5 compilation errors. No code generated.
|
||||
Shader version: 100
|
||||
ERROR: node is still EOpNull!
|
||||
0:? Linker Objects
|
||||
0:? 'n' ( global highp int)
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
@@ -19,4 +20,5 @@ ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry
|
||||
Shader version: 100
|
||||
ERROR: node is still EOpNull!
|
||||
0:? Linker Objects
|
||||
0:? 'n' ( global highp int)
|
||||
|
||||
|
||||
@@ -35,9 +35,9 @@ ERROR: 0:155: '#else' : unexpected tokens following directive
|
||||
ERROR: 0:158: '#else' : #else after #else
|
||||
ERROR: 0:160: '#endif' : unexpected tokens following directive
|
||||
ERROR: 0:164: '#define' : duplicate macro parameter
|
||||
ERROR: 0:173: '#define' : Macro redefined; different number of arguments: m4
|
||||
ERROR: 0:178: '#define' : Macro redefined; different number of arguments: m5
|
||||
ERROR: 0:182: '#define' : Macro redefined; different number of arguments: m6
|
||||
ERROR: 0:173: '#define' : Macro redefined; function-like versus object-like: m4
|
||||
ERROR: 0:177: '#define' : Macro redefined; function-like versus object-like: m5
|
||||
ERROR: 0:181: '#define' : Macro redefined; different number of arguments: m6
|
||||
ERROR: 0:185: '#define' : Macro redefined; different substitutions: m7
|
||||
ERROR: 0:192: '#define' : Macro redefined; different substitutions: m8
|
||||
ERROR: 0:196: '#define' : Macro redefined; different argument names: m9
|
||||
@@ -77,7 +77,7 @@ ERROR: 12:9000: 'preprocessor evaluation' : expected ')'
|
||||
ERROR: 12:9002: '#if' : unexpected tokens following directive
|
||||
ERROR: 12:9014: 'FOOOM' : undeclared identifier
|
||||
ERROR: 12:9014: '=' : cannot convert from ' temp float' to ' global int'
|
||||
ERROR: 12:9016: 'preprocessor evaluation' : can't evaluate expression
|
||||
ERROR: 12:9015: 'preprocessor evaluation' : can't evaluate expression
|
||||
ERROR: 12:9016: 'preprocessor evaluation' : bad expression
|
||||
ERROR: 12:9500: 'preprocessor evaluation' : bad expression
|
||||
ERROR: 12:9500: '#if' : unexpected tokens following directive
|
||||
|
||||
@@ -28,3 +28,39 @@ int main(){
|
||||
1.2 2E10 5u - 5l f
|
||||
}
|
||||
|
||||
struct S {
|
||||
int member1;
|
||||
float member2;
|
||||
vec4 member3;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void foo()
|
||||
{
|
||||
S s;
|
||||
s . member2 + s . member1;
|
||||
s . member3 . zyx;
|
||||
s . member2 . xxyz;
|
||||
s . member2 . yyz;
|
||||
s . member2 . xxyz();
|
||||
s . member2 . yzy;
|
||||
vec3 a = vec3(0);vec3 b = a . zxyz;vec3 b = a . xxyz;vec3 b = a . yyz;vec3 b = a . xxyz();vec3 b = a . yzy;vec3 b = a . z;
|
||||
|
||||
|
||||
yyz;
|
||||
yzy
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
93
3rdparty/glslang/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out
vendored
Normal file
93
3rdparty/glslang/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
spv.xfbOffsetOnStructMembersAssignment.vert
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 40
|
||||
|
||||
Capability Shader
|
||||
Capability TransformFeedback
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4 "main" 9 21 34 38 39
|
||||
ExecutionMode 4 Xfb
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 7 "S"
|
||||
MemberName 7(S) 0 "x1_out"
|
||||
MemberName 7(S) 1 "x2_out"
|
||||
Name 9 "s1"
|
||||
Name 19 "S2"
|
||||
MemberName 19(S2) 0 "y1_out"
|
||||
MemberName 19(S2) 1 "y2_out"
|
||||
Name 21 "s2"
|
||||
Name 32 "gl_PerVertex"
|
||||
MemberName 32(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 32(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 32(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
MemberName 32(gl_PerVertex) 3 "gl_CullDistance"
|
||||
Name 34 ""
|
||||
Name 38 "gl_VertexID"
|
||||
Name 39 "gl_InstanceID"
|
||||
MemberDecorate 7(S) 0 Offset 16
|
||||
MemberDecorate 7(S) 1 Offset 20
|
||||
Decorate 9(s1) Location 0
|
||||
Decorate 9(s1) XfbBuffer 2
|
||||
Decorate 9(s1) XfbStride 24
|
||||
MemberDecorate 19(S2) 0 Offset 8
|
||||
MemberDecorate 19(S2) 1 Offset 12
|
||||
Decorate 21(s2) Location 5
|
||||
Decorate 21(s2) XfbBuffer 1
|
||||
Decorate 21(s2) XfbStride 28
|
||||
MemberDecorate 32(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 32(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 32(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
MemberDecorate 32(gl_PerVertex) 3 BuiltIn CullDistance
|
||||
Decorate 32(gl_PerVertex) Block
|
||||
Decorate 34 XfbBuffer 0
|
||||
Decorate 34 XfbStride 0
|
||||
Decorate 38(gl_VertexID) BuiltIn VertexId
|
||||
Decorate 39(gl_InstanceID) BuiltIn InstanceId
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7(S): TypeStruct 6(float) 6(float)
|
||||
8: TypePointer Output 7(S)
|
||||
9(s1): 8(ptr) Variable Output
|
||||
10: TypeInt 32 1
|
||||
11: 10(int) Constant 0
|
||||
12: 6(float) Constant 1084227584
|
||||
13: TypePointer Output 6(float)
|
||||
15: 10(int) Constant 1
|
||||
16: 6(float) Constant 1086324736
|
||||
18: TypeVector 6(float) 4
|
||||
19(S2): TypeStruct 6(float) 18(fvec4)
|
||||
20: TypePointer Output 19(S2)
|
||||
21(s2): 20(ptr) Variable Output
|
||||
22: 6(float) Constant 1088421888
|
||||
24: 6(float) Constant 1065353216
|
||||
25: 6(float) Constant 0
|
||||
26: 18(fvec4) ConstantComposite 24 25 25 24
|
||||
27: TypePointer Output 18(fvec4)
|
||||
29: TypeInt 32 0
|
||||
30: 29(int) Constant 1
|
||||
31: TypeArray 6(float) 30
|
||||
32(gl_PerVertex): TypeStruct 18(fvec4) 6(float) 31 31
|
||||
33: TypePointer Output 32(gl_PerVertex)
|
||||
34: 33(ptr) Variable Output
|
||||
35: 18(fvec4) ConstantComposite 25 25 25 25
|
||||
37: TypePointer Input 10(int)
|
||||
38(gl_VertexID): 37(ptr) Variable Input
|
||||
39(gl_InstanceID): 37(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
14: 13(ptr) AccessChain 9(s1) 11
|
||||
Store 14 12
|
||||
17: 13(ptr) AccessChain 9(s1) 15
|
||||
Store 17 16
|
||||
23: 13(ptr) AccessChain 21(s2) 11
|
||||
Store 23 22
|
||||
28: 27(ptr) AccessChain 21(s2) 15
|
||||
Store 28 26
|
||||
36: 27(ptr) AccessChain 34 11
|
||||
Store 36 35
|
||||
Return
|
||||
FunctionEnd
|
||||
4
3rdparty/glslang/Test/cppSimple.vert
vendored
Normal file → Executable file
4
3rdparty/glslang/Test/cppSimple.vert
vendored
Normal file → Executable file
@@ -170,7 +170,7 @@ int a = length("aoenatuh"); // ERROR
|
||||
|
||||
// ERROR
|
||||
#define m4(b)
|
||||
#define m4 (b)
|
||||
#define m4
|
||||
|
||||
// ERROR
|
||||
#define m5 (b)
|
||||
@@ -178,7 +178,7 @@ int a = length("aoenatuh"); // ERROR
|
||||
|
||||
// ERROR
|
||||
#define m6(a)
|
||||
#define m6
|
||||
#define m6(a,b)
|
||||
|
||||
// ERROR (whitespace)
|
||||
#define m7 (a)
|
||||
|
||||
36
3rdparty/glslang/Test/preprocessor.simple.vert
vendored
Normal file → Executable file
36
3rdparty/glslang/Test/preprocessor.simple.vert
vendored
Normal file → Executable file
@@ -27,3 +27,39 @@ int main() {
|
||||
+= -= *= /= %= <<= >>= &= |= ^=
|
||||
1.2 2E10 5u -5lf
|
||||
}
|
||||
|
||||
struct S {
|
||||
int member1;
|
||||
float member2;
|
||||
vec4 member3;
|
||||
};
|
||||
|
||||
#define xyz xxyz
|
||||
#define yzy() yyz
|
||||
|
||||
#define FUN_MAC() \
|
||||
vec3 a = vec3(0); \
|
||||
vec3 b = a.zxyz; \
|
||||
vec3 b = a.xyz; \
|
||||
vec3 b = a.yzy(); \
|
||||
vec3 b = a.xyz(); \
|
||||
vec3 b = a.yzy; \
|
||||
vec3 b = a.z;
|
||||
|
||||
void foo()
|
||||
{
|
||||
S s;
|
||||
s.member2 + s.member1;
|
||||
s.member3.zyx;
|
||||
s.member2.xyz;
|
||||
s.member2.yzy();
|
||||
s.member2.xyz();
|
||||
s.member2.yzy;
|
||||
FUN_MAC()
|
||||
yzy
|
||||
|
||||
();
|
||||
yzy
|
||||
|
||||
|
||||
}
|
||||
|
||||
23
3rdparty/glslang/Test/spv.xfbOffsetOnStructMembersAssignment.vert
vendored
Normal file
23
3rdparty/glslang/Test/spv.xfbOffsetOnStructMembersAssignment.vert
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
#version 450
|
||||
|
||||
layout(xfb_buffer=2) out;
|
||||
|
||||
struct S {
|
||||
float x1_out;
|
||||
float x2_out;
|
||||
};
|
||||
|
||||
layout(location=0, xfb_offset = 16) out S s1;
|
||||
|
||||
layout(location=5, xfb_buffer=1, xfb_offset=8) out struct S2 {
|
||||
float y1_out;
|
||||
vec4 y2_out;
|
||||
}s2;
|
||||
|
||||
void main() {
|
||||
s1.x1_out = 5.0;
|
||||
s1.x2_out = 6.0;
|
||||
s2.y1_out = 7.0;
|
||||
s2.y2_out = vec4(1.0, 0.0, 0.0, 1.0);
|
||||
gl_Position = vec4(0.0);
|
||||
}
|
||||
2
3rdparty/glslang/glslang/CMakeLists.txt
vendored
2
3rdparty/glslang/glslang/CMakeLists.txt
vendored
@@ -80,7 +80,7 @@ set(HEADERS
|
||||
# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
# set(BISON_GLSLParser_OUTPUT_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp)
|
||||
|
||||
PCH(SOURCES MachineIndependent/pch.cpp)
|
||||
glslang_pch(SOURCES MachineIndependent/pch.cpp)
|
||||
|
||||
add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS})
|
||||
set_property(TARGET glslang PROPERTY FOLDER glslang)
|
||||
|
||||
@@ -4041,7 +4041,7 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT
|
||||
if (currentBlockQualifier.storage == EvqVaryingOut && globalOutputDefaults.hasXfbBuffer()) {
|
||||
if (!currentBlockQualifier.hasXfbBuffer())
|
||||
currentBlockQualifier.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer;
|
||||
fixBlockXfbOffsets(currentBlockQualifier, newTypeList);
|
||||
fixXfbOffsets(currentBlockQualifier, newTypeList);
|
||||
}
|
||||
|
||||
// Edit and error check the container against the redeclaration
|
||||
@@ -6116,6 +6116,11 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden
|
||||
// fix up
|
||||
fixOffset(loc, *symbol);
|
||||
|
||||
if (symbol->getType().getBasicType() == EbtStruct) {
|
||||
fixXfbOffsets(symbol->getWritableType().getQualifier(),
|
||||
*(symbol->getWritableType().getWritableStruct()));
|
||||
}
|
||||
|
||||
return initNode;
|
||||
}
|
||||
|
||||
@@ -6840,7 +6845,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
|
||||
|
||||
// Process the members
|
||||
fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation);
|
||||
fixBlockXfbOffsets(currentBlockQualifier, typeList);
|
||||
fixXfbOffsets(currentBlockQualifier, typeList);
|
||||
fixBlockUniformOffsets(currentBlockQualifier, typeList);
|
||||
for (unsigned int member = 0; member < typeList.size(); ++member)
|
||||
layoutTypeCheck(typeList[member].loc, *typeList[member].type);
|
||||
@@ -7091,7 +7096,7 @@ void TParseContext::fixBlockLocations(const TSourceLoc& loc, TQualifier& qualifi
|
||||
}
|
||||
}
|
||||
|
||||
void TParseContext::fixBlockXfbOffsets(TQualifier& qualifier, TTypeList& typeList)
|
||||
void TParseContext::fixXfbOffsets(TQualifier& qualifier, TTypeList& typeList)
|
||||
{
|
||||
// "If a block is qualified with xfb_offset, all its
|
||||
// members are assigned transform feedback buffer offsets. If a block is not qualified with xfb_offset, any
|
||||
|
||||
@@ -403,7 +403,7 @@ public:
|
||||
void blockStageIoCheck(const TSourceLoc&, const TQualifier&);
|
||||
void blockQualifierCheck(const TSourceLoc&, const TQualifier&, bool instanceName);
|
||||
void fixBlockLocations(const TSourceLoc&, TQualifier&, TTypeList&, bool memberWithLocation, bool memberWithoutLocation);
|
||||
void fixBlockXfbOffsets(TQualifier&, TTypeList&);
|
||||
void fixXfbOffsets(TQualifier&, TTypeList&);
|
||||
void fixBlockUniformOffsets(TQualifier&, TTypeList&);
|
||||
void addQualifierToExisting(const TSourceLoc&, TQualifier, const TString& identifier);
|
||||
void addQualifierToExisting(const TSourceLoc&, TQualifier, TIdentifierList&);
|
||||
|
||||
25
3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
vendored
Normal file → Executable file
25
3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
vendored
Normal file → Executable file
@@ -109,11 +109,12 @@ int TPpContext::CPPdefine(TPpToken* ppToken)
|
||||
|
||||
// save the macro name
|
||||
const int defAtom = atomStrings.getAddAtom(ppToken->name);
|
||||
TSourceLoc defineLoc = ppToken->loc; // because ppToken might go to the next line before we report errors
|
||||
|
||||
// gather parameters to the macro, between (...)
|
||||
token = scanToken(ppToken);
|
||||
if (token == '(' && ! ppToken->space) {
|
||||
mac.emptyArgs = 1;
|
||||
if (token == '(' && !ppToken->space) {
|
||||
mac.functionLike = 1;
|
||||
do {
|
||||
token = scanToken(ppToken);
|
||||
if (mac.args.size() == 0 && token == ')')
|
||||
@@ -123,7 +124,6 @@ int TPpContext::CPPdefine(TPpToken* ppToken)
|
||||
|
||||
return token;
|
||||
}
|
||||
mac.emptyArgs = 0;
|
||||
const int argAtom = atomStrings.getAddAtom(ppToken->name);
|
||||
|
||||
// check for duplication of parameter name
|
||||
@@ -149,7 +149,6 @@ int TPpContext::CPPdefine(TPpToken* ppToken)
|
||||
}
|
||||
|
||||
// record the definition of the macro
|
||||
TSourceLoc defineLoc = ppToken->loc; // because ppToken is going to go to the next line before we report errors
|
||||
while (token != '\n' && token != EndOfInput) {
|
||||
mac.body.putToken(token, ppToken);
|
||||
token = scanToken(ppToken);
|
||||
@@ -164,7 +163,9 @@ int TPpContext::CPPdefine(TPpToken* ppToken)
|
||||
// Already defined -- need to make sure they are identical:
|
||||
// "Two replacement lists are identical if and only if the preprocessing tokens in both have the same number,
|
||||
// ordering, spelling, and white-space separation, where all white-space separations are considered identical."
|
||||
if (existing->args.size() != mac.args.size() || existing->emptyArgs != mac.emptyArgs)
|
||||
if (existing->functionLike != mac.functionLike)
|
||||
parseContext.ppError(defineLoc, "Macro redefined; function-like versus object-like:", "#define", atomStrings.getString(defAtom));
|
||||
else if (existing->args.size() != mac.args.size())
|
||||
parseContext.ppError(defineLoc, "Macro redefined; different number of arguments:", "#define", atomStrings.getString(defAtom));
|
||||
else {
|
||||
if (existing->args != mac.args)
|
||||
@@ -1190,14 +1191,20 @@ MacroExpandResult TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, b
|
||||
|
||||
TSourceLoc loc = ppToken->loc; // in case we go to the next line before discovering the error
|
||||
in->mac = macro;
|
||||
if (macro->args.size() > 0 || macro->emptyArgs) {
|
||||
int token = scanToken(ppToken);
|
||||
if (macro->functionLike) {
|
||||
// We don't know yet if this will be a successful call of a
|
||||
// function-like macro; need to look for a '(', but without trashing
|
||||
// the passed in ppToken, until we know we are no longer speculative.
|
||||
TPpToken parenToken;
|
||||
int token = scanToken(&parenToken);
|
||||
if (newLineOkay) {
|
||||
while (token == '\n')
|
||||
token = scanToken(ppToken);
|
||||
token = scanToken(&parenToken);
|
||||
}
|
||||
if (token != '(') {
|
||||
UngetToken(token, ppToken);
|
||||
// Function-like macro called with object-like syntax: okay, don't expand.
|
||||
// (We ate exactly one token that might not be white space; put it back.
|
||||
UngetToken(token, &parenToken);
|
||||
delete in;
|
||||
return MacroExpandNotStarted;
|
||||
}
|
||||
|
||||
@@ -267,12 +267,12 @@ public:
|
||||
//
|
||||
|
||||
struct MacroSymbol {
|
||||
MacroSymbol() : emptyArgs(0), busy(0), undef(0) { }
|
||||
MacroSymbol() : functionLike(0), busy(0), undef(0) { }
|
||||
TVector<int> args;
|
||||
TokenStream body;
|
||||
unsigned emptyArgs : 1;
|
||||
unsigned busy : 1;
|
||||
unsigned undef : 1;
|
||||
unsigned functionLike : 1; // 0 means object-like, 1 means function-like
|
||||
unsigned busy : 1;
|
||||
unsigned undef : 1;
|
||||
};
|
||||
|
||||
typedef TMap<int, MacroSymbol> TSymbolMap;
|
||||
|
||||
2
3rdparty/glslang/gtests/CMakeLists.txt
vendored
2
3rdparty/glslang/gtests/CMakeLists.txt
vendored
@@ -25,7 +25,7 @@ if(BUILD_TESTING)
|
||||
# -- Remapper tests
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp)
|
||||
|
||||
PCH(TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/pch.cpp)
|
||||
glslang_pch(TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/pch.cpp)
|
||||
|
||||
add_executable(glslangtests ${TEST_SOURCES})
|
||||
set_property(TARGET glslangtests PROPERTY FOLDER tests)
|
||||
|
||||
1
3rdparty/glslang/gtests/Spv.FromFile.cpp
vendored
1
3rdparty/glslang/gtests/Spv.FromFile.cpp
vendored
@@ -440,6 +440,7 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"spv.rankShift.comp",
|
||||
"spv.specConst.vert",
|
||||
"spv.OVR_multiview.vert",
|
||||
"spv.xfbOffsetOnStructMembersAssignment.vert",
|
||||
})),
|
||||
FileNameAsCustomTestSuffix
|
||||
);
|
||||
|
||||
2
3rdparty/glslang/hlsl/CMakeLists.txt
vendored
2
3rdparty/glslang/hlsl/CMakeLists.txt
vendored
@@ -17,7 +17,7 @@ set(HEADERS
|
||||
hlslGrammar.h
|
||||
hlslParseables.h)
|
||||
|
||||
PCH(SOURCES pch.cpp)
|
||||
glslang_pch(SOURCES pch.cpp)
|
||||
|
||||
add_library(HLSL ${LIB_TYPE} ${SOURCES} ${HEADERS})
|
||||
set_property(TARGET HLSL PROPERTY FOLDER hlsl)
|
||||
|
||||
4
3rdparty/glslang/hlsl/hlslParseHelper.cpp
vendored
4
3rdparty/glslang/hlsl/hlslParseHelper.cpp
vendored
@@ -8555,7 +8555,7 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS
|
||||
|
||||
// Process the members
|
||||
fixBlockLocations(loc, type.getQualifier(), typeList, memberWithLocation, memberWithoutLocation);
|
||||
fixBlockXfbOffsets(type.getQualifier(), typeList);
|
||||
fixXfbOffsets(type.getQualifier(), typeList);
|
||||
fixBlockUniformOffsets(type.getQualifier(), typeList);
|
||||
|
||||
// reverse merge, so that currentBlockQualifier now has all layout information
|
||||
@@ -8638,7 +8638,7 @@ void HlslParseContext::fixBlockLocations(const TSourceLoc& loc, TQualifier& qual
|
||||
}
|
||||
}
|
||||
|
||||
void HlslParseContext::fixBlockXfbOffsets(TQualifier& qualifier, TTypeList& typeList)
|
||||
void HlslParseContext::fixXfbOffsets(TQualifier& qualifier, TTypeList& typeList)
|
||||
{
|
||||
// "If a block is qualified with xfb_offset, all its
|
||||
// members are assigned transform feedback buffer offsets. If a block is not qualified with xfb_offset, any
|
||||
|
||||
2
3rdparty/glslang/hlsl/hlslParseHelper.h
vendored
2
3rdparty/glslang/hlsl/hlslParseHelper.h
vendored
@@ -155,7 +155,7 @@ public:
|
||||
void declareBlock(const TSourceLoc&, TType&, const TString* instanceName = 0);
|
||||
void declareStructBufferCounter(const TSourceLoc& loc, const TType& bufferType, const TString& name);
|
||||
void fixBlockLocations(const TSourceLoc&, TQualifier&, TTypeList&, bool memberWithLocation, bool memberWithoutLocation);
|
||||
void fixBlockXfbOffsets(TQualifier&, TTypeList&);
|
||||
void fixXfbOffsets(TQualifier&, TTypeList&);
|
||||
void fixBlockUniformOffsets(const TQualifier&, TTypeList&);
|
||||
void addQualifierToExisting(const TSourceLoc&, TQualifier, const TString& identifier);
|
||||
void addQualifierToExisting(const TSourceLoc&, TQualifier, TIdentifierList&);
|
||||
|
||||
2
3rdparty/glslang/known_good.json
vendored
2
3rdparty/glslang/known_good.json
vendored
@@ -5,7 +5,7 @@
|
||||
"site" : "github",
|
||||
"subrepo" : "KhronosGroup/SPIRV-Tools",
|
||||
"subdir" : "External/spirv-tools",
|
||||
"commit" : "fb996dce752507132c40c255898154cce6c072c5"
|
||||
"commit" : "9d699f6d4038f432c55310d5d0b4a6d507c1b686"
|
||||
},
|
||||
{
|
||||
"name" : "spirv-tools/external/spirv-headers",
|
||||
|
||||
Reference in New Issue
Block a user