summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/GeometryShaderGen.cpp
diff options
context:
space:
mode:
authorScott Mansell <phiren@gmail.com>2016-02-28 09:46:58 +1300
committerScott Mansell <phiren@gmail.com>2016-06-26 16:13:22 +1200
commitebe5fd0b36556a39ac25052966261b56d90ea1ae (patch)
treefa1a0be21d3d2bb2428a654015ec1f10d08017ff /Source/Core/VideoCommon/GeometryShaderGen.cpp
parent95469ec225f325020221c4495b94a7b7cb2475a8 (diff)
Multithreadded Shadergen: Minor fixups.
Diffstat (limited to 'Source/Core/VideoCommon/GeometryShaderGen.cpp')
-rw-r--r--Source/Core/VideoCommon/GeometryShaderGen.cpp23
1 files changed, 11 insertions, 12 deletions
diff --git a/Source/Core/VideoCommon/GeometryShaderGen.cpp b/Source/Core/VideoCommon/GeometryShaderGen.cpp
index f509072f8e..a137b7ff06 100644
--- a/Source/Core/VideoCommon/GeometryShaderGen.cpp
+++ b/Source/Core/VideoCommon/GeometryShaderGen.cpp
@@ -42,14 +42,13 @@ static void EmitVertex(ShaderCode& out, const geometry_shader_uid_data* uid_data
static void EndPrimitive(ShaderCode& out, const geometry_shader_uid_data* uid_data,
API_TYPE ApiType);
-ShaderCode GenerateGeometryShaderCode(u32 primitive_type, API_TYPE ApiType,
- const geometry_shader_uid_data* uid_data)
+ShaderCode GenerateGeometryShaderCode(API_TYPE ApiType, const geometry_shader_uid_data* uid_data)
{
ShaderCode out;
// Non-uid template parameters will write to the dummy data (=> gets optimized out)
- const unsigned int vertex_in = primitive_type + 1;
- unsigned int vertex_out = primitive_type == PRIMITIVE_TRIANGLES ? 3 : 4;
+ const unsigned int vertex_in = uid_data->primitive_type + 1;
+ unsigned int vertex_out = uid_data->primitive_type == PRIMITIVE_TRIANGLES ? 3 : 4;
if (uid_data->wireframe)
vertex_out++;
@@ -59,14 +58,14 @@ ShaderCode GenerateGeometryShaderCode(u32 primitive_type, API_TYPE ApiType,
// Insert layout parameters
if (g_ActiveConfig.backend_info.bSupportsGSInstancing)
{
- out.Write("layout(%s, invocations = %d) in;\n", primitives_ogl[primitive_type],
+ out.Write("layout(%s, invocations = %d) in;\n", primitives_ogl[uid_data->primitive_type],
uid_data->stereo ? 2 : 1);
out.Write("layout(%s_strip, max_vertices = %d) out;\n",
uid_data->wireframe ? "line" : "triangle", vertex_out);
}
else
{
- out.Write("layout(%s) in;\n", primitives_ogl[primitive_type]);
+ out.Write("layout(%s) in;\n", primitives_ogl[uid_data->primitive_type]);
out.Write("layout(%s_strip, max_vertices = %d) out;\n",
uid_data->wireframe ? "line" : "triangle",
uid_data->stereo ? vertex_out * 2 : vertex_out);
@@ -130,21 +129,21 @@ ShaderCode GenerateGeometryShaderCode(u32 primitive_type, API_TYPE ApiType,
out.Write("[maxvertexcount(%d)]\n[instance(%d)]\n", vertex_out, uid_data->stereo ? 2 : 1);
out.Write("void main(%s VS_OUTPUT o[%d], inout %sStream<VertexData> output, in uint "
"InstanceID : SV_GSInstanceID)\n{\n",
- primitives_d3d[primitive_type], vertex_in,
+ primitives_d3d[uid_data->primitive_type], vertex_in,
uid_data->wireframe ? "Line" : "Triangle");
}
else
{
out.Write("[maxvertexcount(%d)]\n", uid_data->stereo ? vertex_out * 2 : vertex_out);
out.Write("void main(%s VS_OUTPUT o[%d], inout %sStream<VertexData> output)\n{\n",
- primitives_d3d[primitive_type], vertex_in,
+ primitives_d3d[uid_data->primitive_type], vertex_in,
uid_data->wireframe ? "Line" : "Triangle");
}
out.Write("\tVertexData ps;\n");
}
- if (primitive_type == PRIMITIVE_LINES)
+ if (uid_data->primitive_type == PRIMITIVE_LINES)
{
if (ApiType == API_OPENGL)
{
@@ -175,7 +174,7 @@ ShaderCode GenerateGeometryShaderCode(u32 primitive_type, API_TYPE ApiType,
"\t\toffset = float2(0, -" I_LINEPTPARAMS ".z / " I_LINEPTPARAMS ".y);\n"
"\t}\n");
}
- else if (primitive_type == PRIMITIVE_POINTS)
+ else if (uid_data->primitive_type == PRIMITIVE_POINTS)
{
if (ApiType == API_OPENGL)
{
@@ -235,7 +234,7 @@ ShaderCode GenerateGeometryShaderCode(u32 primitive_type, API_TYPE ApiType,
out.Write("\tf.pos.x += " I_STEREOPARAMS "[eye] * (f.pos.w - " I_STEREOPARAMS "[2]);\n");
}
- if (primitive_type == PRIMITIVE_LINES)
+ if (uid_data->primitive_type == PRIMITIVE_LINES)
{
out.Write("\tVS_OUTPUT l = f;\n"
"\tVS_OUTPUT r = f;\n");
@@ -256,7 +255,7 @@ ShaderCode GenerateGeometryShaderCode(u32 primitive_type, API_TYPE ApiType,
EmitVertex(out, uid_data, "l", ApiType, true);
EmitVertex(out, uid_data, "r", ApiType);
}
- else if (primitive_type == PRIMITIVE_POINTS)
+ else if (uid_data->primitive_type == PRIMITIVE_POINTS)
{
out.Write("\tVS_OUTPUT ll = f;\n"
"\tVS_OUTPUT lr = f;\n"