Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
c1941677
Commit
c1941677
authored
Dec 13, 2018
by
John Kessenich
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'built-in-block-streams'
parents
a54a4594
47736cf0
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
12 additions
and
10 deletions
+12
-10
GlslangToSpv.cpp
SPIRV/GlslangToSpv.cpp
+0
-4
spv.150.geom.out
Test/baseResults/spv.150.geom.out
+0
-3
spv.420.geom.out
Test/baseResults/spv.420.geom.out
+0
-1
ParseHelper.cpp
glslang/MachineIndependent/ParseHelper.cpp
+12
-2
No files found.
SPIRV/GlslangToSpv.cpp
View file @
c1941677
...
...
@@ -3279,10 +3279,6 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
// Decorate the structure
builder
.
addDecoration
(
spvType
,
TranslateLayoutDecoration
(
type
,
qualifier
.
layoutMatrix
));
builder
.
addDecoration
(
spvType
,
TranslateBlockDecoration
(
type
,
glslangIntermediate
->
usingStorageBuffer
()));
if
(
type
.
getQualifier
().
hasStream
()
&&
glslangIntermediate
->
isMultiStream
())
{
builder
.
addCapability
(
spv
::
CapabilityGeometryStreams
);
builder
.
addDecoration
(
spvType
,
spv
::
DecorationStream
,
type
.
getQualifier
().
layoutStream
);
}
}
// Turn the expression forming the array size into an id.
...
...
Test/baseResults/spv.150.geom.out
View file @
c1941677
...
...
@@ -38,14 +38,12 @@ spv.150.geom
MemberName 68(toFragment) 0 "color"
Name 70 "toF"
Decorate 8(fromVertex) Block
Decorate 8(fromVertex) Stream 3
Decorate 10 Stream 3
Decorate 13(fromVertex) Block
MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 27(gl_PerVertex) Block
Decorate 27(gl_PerVertex) Stream 0
Decorate 29 Stream 0
MemberDecorate 30(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 30(gl_PerVertex) 1 BuiltIn PointSize
...
...
@@ -57,7 +55,6 @@ spv.150.geom
Decorate 51(gl_Layer) Stream 0
Decorate 51(gl_Layer) BuiltIn Layer
Decorate 68(toFragment) Block
Decorate 68(toFragment) Stream 3
Decorate 70(toF) Stream 3
2: TypeVoid
3: TypeFunction 2
...
...
Test/baseResults/spv.420.geom.out
View file @
c1941677
...
...
@@ -36,7 +36,6 @@ spv.420.geom
Decorate 9(gl_PerVertex) Block
MemberDecorate 21(gl_PerVertex) 0 BuiltIn PointSize
Decorate 21(gl_PerVertex) Block
Decorate 21(gl_PerVertex) Stream 0
Decorate 23 Stream 0
Decorate 28(gl_ViewportIndex) Stream 0
Decorate 28(gl_ViewportIndex) BuiltIn ViewportIndex
...
...
glslang/MachineIndependent/ParseHelper.cpp
100644 → 100755
View file @
c1941677
...
...
@@ -4059,6 +4059,8 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT
if
(
currentBlockQualifier
.
storage
==
EvqVaryingOut
&&
globalOutputDefaults
.
hasXfbBuffer
())
{
if
(
!
currentBlockQualifier
.
hasXfbBuffer
())
currentBlockQualifier
.
layoutXfbBuffer
=
globalOutputDefaults
.
layoutXfbBuffer
;
if
(
!
currentBlockQualifier
.
hasStream
())
currentBlockQualifier
.
layoutStream
=
globalOutputDefaults
.
layoutStream
;
fixXfbOffsets
(
currentBlockQualifier
,
newTypeList
);
}
...
...
@@ -4141,6 +4143,9 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT
if
(
newType
.
getQualifier
().
hasXfbBuffer
()
&&
newType
.
getQualifier
().
layoutXfbBuffer
!=
currentBlockQualifier
.
layoutXfbBuffer
)
error
(
memberLoc
,
"member cannot contradict block (or what block inherited from global)"
,
"xfb_buffer"
,
""
);
if
(
newType
.
getQualifier
().
hasStream
()
&&
newType
.
getQualifier
().
layoutStream
!=
currentBlockQualifier
.
layoutStream
)
error
(
memberLoc
,
"member cannot contradict block (or what block inherited from global)"
,
"xfb_stream"
,
""
);
oldType
.
getQualifier
().
centroid
=
newType
.
getQualifier
().
centroid
;
oldType
.
getQualifier
().
sample
=
newType
.
getQualifier
().
sample
;
oldType
.
getQualifier
().
invariant
=
newType
.
getQualifier
().
invariant
;
...
...
@@ -4152,8 +4157,8 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT
oldType
.
getQualifier
().
layoutXfbBuffer
=
newType
.
getQualifier
().
layoutXfbBuffer
;
oldType
.
getQualifier
().
layoutXfbStride
=
newType
.
getQualifier
().
layoutXfbStride
;
if
(
oldType
.
getQualifier
().
layoutXfbOffset
!=
TQualifier
::
layoutXfbBufferEnd
)
{
//
if any member
as an xfb_offset, then the block's xfb_buffer inherents current xfb_buffer,
// and for xfb processing, the member needs it as well, along with xfb_stride
//
If any member h
as an xfb_offset, then the block's xfb_buffer inherents current xfb_buffer,
// and for xfb processing, the member needs it as well, along with xfb_stride
.
type
.
getQualifier
().
layoutXfbBuffer
=
currentBlockQualifier
.
layoutXfbBuffer
;
oldType
.
getQualifier
().
layoutXfbBuffer
=
currentBlockQualifier
.
layoutXfbBuffer
;
}
...
...
@@ -4178,6 +4183,11 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT
}
}
if
(
spvVersion
.
vulkan
>
0
)
{
// ...then streams apply to built-in blocks, instead of them being only on stream 0
type
.
getQualifier
().
layoutStream
=
currentBlockQualifier
.
layoutStream
;
}
if
(
numOriginalMembersFound
<
newTypeList
.
size
())
error
(
loc
,
"block redeclaration has extra members"
,
blockName
.
c_str
(),
""
);
if
(
type
.
isArray
()
!=
(
arraySizes
!=
nullptr
)
||
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment