diff options
| author | Scott Mansell <phiren@gmail.com> | 2016-02-28 09:46:58 +1300 |
|---|---|---|
| committer | Scott Mansell <phiren@gmail.com> | 2016-06-26 16:13:22 +1200 |
| commit | ebe5fd0b36556a39ac25052966261b56d90ea1ae (patch) | |
| tree | fa1a0be21d3d2bb2428a654015ec1f10d08017ff /Source/Core/VideoCommon/GeometryShaderGen.cpp | |
| parent | 95469ec225f325020221c4495b94a7b7cb2475a8 (diff) | |
Multithreadded Shadergen: Minor fixups.
Diffstat (limited to 'Source/Core/VideoCommon/GeometryShaderGen.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/GeometryShaderGen.cpp | 23 |
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" |
