Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenFlipper-Free
OpenFlipper
Commits
681956a6
Commit
681956a6
authored
Oct 20, 2017
by
Martin Schultz
Browse files
fixed shader compile error on amd cards osx, thanks to kschuster
parent
3e4cb250
Changes
1
Hide whitespace changes
Inline
Side-by-side
libs_required/ACG/GL/ShaderGenerator.cc
View file @
681956a6
...
...
@@ -1338,11 +1338,11 @@ void ShaderProgGenerator::buildTessControlShader()
// add simple io passthrough mapper
{
mainCode
.
push_back
(
"void sg_MapIO(const int inIdx)"
);
mainCode
.
push_back
(
"
{
"
);
// Write function as macro so that compiler knows there is no index indirection (thx AMD)
mainCode
.
push_back
(
"
#define sg_MapIO(inIdx) do {
\\
"
);
// built-in IO
mainCode
.
push_back
(
"gl_out[gl_InvocationID].gl_Position = gl_in[inIdx].gl_Position;"
);
mainCode
.
push_back
(
"gl_out[gl_InvocationID].gl_Position = gl_in[inIdx].gl_Position;
\\
"
);
// custom IO
for
(
int
i
=
0
;
i
<
tessControl_
->
getNumInputs
();
++
i
)
...
...
@@ -1350,12 +1350,13 @@ void ShaderProgGenerator::buildTessControlShader()
QString
inputName
=
tessControl_
->
getInputName
(
i
);
QString
outputName
=
tessControl_
->
getIOMapName
(
i
);
QString
outputAssignCode
=
outputName
+
QString
(
"[gl_InvocationID] = "
)
+
inputName
+
QString
(
"[inIdx];"
);
QString
outputAssignCode
=
outputName
+
QString
(
"[gl_InvocationID] = "
)
+
inputName
+
QString
(
"[inIdx];
\\
"
);
mainCode
.
push_back
(
outputAssignCode
);
}
mainCode
.
push_back
(
"}"
);
// Enforce semicolon when using macro
mainCode
.
push_back
(
"} while(false)"
);
}
...
...
@@ -1608,12 +1609,12 @@ void ShaderProgGenerator::buildGeometryShader()
// add simple io passthrough mapper
{
mainCode
.
push_back
(
"void sg_MapIO(const int inIdx)"
);
mainCode
.
push_back
(
"
{
"
);
// Write function as macro so that compiler knows there is no index indirection (thx AMD)
mainCode
.
push_back
(
"
#define sg_MapIO(inIdx) do {
\\
"
);
// built-in IO
mainCode
.
push_back
(
"gl_Position = gl_in[inIdx].gl_Position;"
);
mainCode
.
push_back
(
"gl_PrimitiveID = gl_PrimitiveIDIn;"
);
mainCode
.
push_back
(
"gl_Position = gl_in[inIdx].gl_Position;
\\
"
);
mainCode
.
push_back
(
"gl_PrimitiveID = gl_PrimitiveIDIn;
\\
"
);
// built-in gl_ClipDistance[]
...
...
@@ -1630,7 +1631,7 @@ void ShaderProgGenerator::buildGeometryShader()
for
(
int
i
=
0
;
i
<
maxClipDistances
;
++
i
)
{
if
(
desc_
.
clipDistanceMask
&
(
1
<<
i
))
mainCode
.
push_back
(
QString
(
"gl_ClipDistance[%1] = gl_in[inIdx].gl_ClipDistance[%1];"
).
arg
(
i
));
mainCode
.
push_back
(
QString
(
"gl_ClipDistance[%1] = gl_in[inIdx].gl_ClipDistance[%1];
\\
"
).
arg
(
i
));
}
// custom IO
...
...
@@ -1639,12 +1640,13 @@ void ShaderProgGenerator::buildGeometryShader()
QString
inputName
=
geometry_
->
getInputName
(
i
);
QString
outputName
=
geometry_
->
getIOMapName
(
i
);
QString
outputAssignCode
=
outputName
+
QString
(
" = "
)
+
inputName
+
QString
(
"[inIdx];"
);
QString
outputAssignCode
=
outputName
+
QString
(
" = "
)
+
inputName
+
QString
(
"[inIdx];
\\
"
);
mainCode
.
push_back
(
outputAssignCode
);
}
mainCode
.
push_back
(
"}"
);
// Enforce semicolon when using macro
mainCode
.
push_back
(
"} while(false)"
);
}
...
...
Write
Preview
Supports
Markdown
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