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
f0bc598d
Commit
f0bc598d
authored
Jun 20, 2017
by
John Kessenich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
HLSL: Force flat interpolation for structure members. Fixes #940.
parent
be1085cb
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
26 additions
and
17 deletions
+26
-17
hlsl.entry-in.frag.out
Test/baseResults/hlsl.entry-in.frag.out
+9
-8
hlsl.struct.frag.out
Test/baseResults/hlsl.struct.frag.out
+0
-0
Types.h
glslang/Include/Types.h
+2
-3
hlslParseHelper.cpp
hlsl/hlslParseHelper.cpp
+15
-6
No files found.
Test/baseResults/hlsl.entry-in.frag.out
View file @
f0bc598d
...
@@ -58,7 +58,7 @@ gl_FragCoord origin is upper left
...
@@ -58,7 +58,7 @@ gl_FragCoord origin is upper left
0:13 Constant:
0:13 Constant:
0:13 0 (const int)
0:13 0 (const int)
0:13 v: direct index for structure ( temp 2-component vector of float)
0:13 v: direct index for structure ( temp 2-component vector of float)
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v,
flat
temp 2-component vector of int i2})
0:13 Constant:
0:13 Constant:
0:13 0 (const int)
0:13 0 (const int)
0:13 move second child to first child ( temp 4-component vector of float)
0:13 move second child to first child ( temp 4-component vector of float)
...
@@ -72,8 +72,8 @@ gl_FragCoord origin is upper left
...
@@ -72,8 +72,8 @@ gl_FragCoord origin is upper left
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:13 Constant:
0:13 Constant:
0:13 2 (const int)
0:13 2 (const int)
0:13 i2: direct index for structure ( temp 2-component vector of int)
0:13 i2: direct index for structure (
flat
temp 2-component vector of int)
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v,
flat
temp 2-component vector of int i2})
0:13 Constant:
0:13 Constant:
0:13 1 (const int)
0:13 1 (const int)
0:13 move second child to first child ( temp 4-component vector of float)
0:13 move second child to first child ( temp 4-component vector of float)
...
@@ -82,7 +82,7 @@ gl_FragCoord origin is upper left
...
@@ -82,7 +82,7 @@ gl_FragCoord origin is upper left
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:? Linker Objects
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
0:? 'i' (layout( location=0) in structure{ temp 2-component vector of float v,
flat
temp 2-component vector of int i2})
0:? 'i_fragCoord' ( in 4-component vector of float FragCoord)
0:? 'i_fragCoord' ( in 4-component vector of float FragCoord)
...
@@ -148,7 +148,7 @@ gl_FragCoord origin is upper left
...
@@ -148,7 +148,7 @@ gl_FragCoord origin is upper left
0:13 Constant:
0:13 Constant:
0:13 0 (const int)
0:13 0 (const int)
0:13 v: direct index for structure ( temp 2-component vector of float)
0:13 v: direct index for structure ( temp 2-component vector of float)
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v,
flat
temp 2-component vector of int i2})
0:13 Constant:
0:13 Constant:
0:13 0 (const int)
0:13 0 (const int)
0:13 move second child to first child ( temp 4-component vector of float)
0:13 move second child to first child ( temp 4-component vector of float)
...
@@ -162,8 +162,8 @@ gl_FragCoord origin is upper left
...
@@ -162,8 +162,8 @@ gl_FragCoord origin is upper left
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:13 Constant:
0:13 Constant:
0:13 2 (const int)
0:13 2 (const int)
0:13 i2: direct index for structure ( temp 2-component vector of int)
0:13 i2: direct index for structure (
flat
temp 2-component vector of int)
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v,
flat
temp 2-component vector of int i2})
0:13 Constant:
0:13 Constant:
0:13 1 (const int)
0:13 1 (const int)
0:13 move second child to first child ( temp 4-component vector of float)
0:13 move second child to first child ( temp 4-component vector of float)
...
@@ -172,7 +172,7 @@ gl_FragCoord origin is upper left
...
@@ -172,7 +172,7 @@ gl_FragCoord origin is upper left
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:? Linker Objects
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
0:? 'i' (layout( location=0) in structure{ temp 2-component vector of float v,
flat
temp 2-component vector of int i2})
0:? 'i_fragCoord' ( in 4-component vector of float FragCoord)
0:? 'i_fragCoord' ( in 4-component vector of float FragCoord)
// Module Version 10000
// Module Version 10000
...
@@ -207,6 +207,7 @@ gl_FragCoord origin is upper left
...
@@ -207,6 +207,7 @@ gl_FragCoord origin is upper left
Name 63 "i_fragCoord"
Name 63 "i_fragCoord"
Name 73 "@entryPointOutput"
Name 73 "@entryPointOutput"
Name 74 "param"
Name 74 "param"
MemberDecorate 54(InParam) 1 Flat
Decorate 56(i) Location 0
Decorate 56(i) Location 0
Decorate 63(i_fragCoord) BuiltIn FragCoord
Decorate 63(i_fragCoord) BuiltIn FragCoord
Decorate 73(@entryPointOutput) Location 0
Decorate 73(@entryPointOutput) Location 0
...
...
Test/baseResults/hlsl.struct.frag.out
View file @
f0bc598d
This diff is collapsed.
Click to expand it.
glslang/Include/Types.h
View file @
f0bc598d
...
@@ -1349,7 +1349,6 @@ public:
...
@@ -1349,7 +1349,6 @@ public:
case
EbtInt16
:
case
EbtInt16
:
case
EbtUint16
:
case
EbtUint16
:
#endif
#endif
case
EbtBool
:
case
EbtAtomicUint
:
case
EbtAtomicUint
:
return
true
;
return
true
;
default
:
default
:
...
@@ -1469,9 +1468,9 @@ public:
...
@@ -1469,9 +1468,9 @@ public:
case
EbtUint16
:
case
EbtUint16
:
#endif
#endif
case
EbtBool
:
case
EbtBool
:
return
true
;
return
true
;
default
:
default
:
return
false
;
return
false
;
}
}
};
};
...
...
hlsl/hlslParseHelper.cpp
View file @
f0bc598d
...
@@ -791,7 +791,7 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc,
...
@@ -791,7 +791,7 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc,
index
=
makeIntegerIndex
(
index
);
index
=
makeIntegerIndex
(
index
);
if
(
index
==
nullptr
)
{
if
(
index
==
nullptr
)
{
error
(
loc
,
" unknown
u
ndex type "
,
""
,
""
);
error
(
loc
,
" unknown
i
ndex type "
,
""
,
""
);
return
nullptr
;
return
nullptr
;
}
}
...
@@ -1554,11 +1554,20 @@ void HlslParseContext::assignToInterface(TVariable& variable)
...
@@ -1554,11 +1554,20 @@ void HlslParseContext::assignToInterface(TVariable& variable)
nextOutLocation
+=
size
;
nextOutLocation
+=
size
;
}
}
}
}
// Going into the fragment stage, integer-based stuff must be flat/nointerpolation
if
(
qualifier
.
storage
==
EvqVaryingIn
&&
language
==
EShLangFragment
)
{
if
(
type
.
isIntegerDomain
()
&&
qualifier
.
builtIn
==
EbvNone
&&
// Going into the fragment stage, integer-based stuff must be flat/nointerpolation
qualifier
.
storage
==
EvqVaryingIn
&&
language
==
EShLangFragment
)
{
const
auto
fixQualifier
=
[](
TType
&
type
)
{
qualifier
.
clearInterpolation
();
if
(
type
.
getQualifier
().
builtIn
==
EbvNone
&&
qualifier
.
flat
=
true
;
(
type
.
isIntegerDomain
()
||
type
.
getBasicType
()
==
EbtBool
))
{
type
.
getQualifier
().
clearInterpolation
();
type
.
getQualifier
().
flat
=
true
;
}
};
if
(
type
.
isStruct
())
for
(
auto
mem
=
(
*
type
.
getStruct
()).
begin
();
mem
!=
(
*
type
.
getStruct
()).
end
();
++
mem
)
fixQualifier
(
*
mem
->
type
);
else
fixQualifier
(
type
);
}
}
trackLinkage
(
variable
);
trackLinkage
(
variable
);
}
}
...
...
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