diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index 270a9dc2b..c2ec120ba 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp | |||
| @@ -112,25 +112,25 @@ constexpr GLenum GetGLShaderType(ShaderType shader_type) { | |||
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | /// Describes primitive behavior on geometry shaders | 114 | /// Describes primitive behavior on geometry shaders |
| 115 | constexpr std::tuple<const char*, const char*, u32> GetPrimitiveDescription(GLenum primitive_mode) { | 115 | constexpr std::pair<const char*, u32> GetPrimitiveDescription(GLenum primitive_mode) { |
| 116 | switch (primitive_mode) { | 116 | switch (primitive_mode) { |
| 117 | case GL_POINTS: | 117 | case GL_POINTS: |
| 118 | return {"points", "Points", 1}; | 118 | return {"points", 1}; |
| 119 | case GL_LINES: | 119 | case GL_LINES: |
| 120 | case GL_LINE_STRIP: | 120 | case GL_LINE_STRIP: |
| 121 | return {"lines", "Lines", 2}; | 121 | return {"lines", 2}; |
| 122 | case GL_LINES_ADJACENCY: | 122 | case GL_LINES_ADJACENCY: |
| 123 | case GL_LINE_STRIP_ADJACENCY: | 123 | case GL_LINE_STRIP_ADJACENCY: |
| 124 | return {"lines_adjacency", "LinesAdj", 4}; | 124 | return {"lines_adjacency", 4}; |
| 125 | case GL_TRIANGLES: | 125 | case GL_TRIANGLES: |
| 126 | case GL_TRIANGLE_STRIP: | 126 | case GL_TRIANGLE_STRIP: |
| 127 | case GL_TRIANGLE_FAN: | 127 | case GL_TRIANGLE_FAN: |
| 128 | return {"triangles", "Triangles", 3}; | 128 | return {"triangles", 3}; |
| 129 | case GL_TRIANGLES_ADJACENCY: | 129 | case GL_TRIANGLES_ADJACENCY: |
| 130 | case GL_TRIANGLE_STRIP_ADJACENCY: | 130 | case GL_TRIANGLE_STRIP_ADJACENCY: |
| 131 | return {"triangles_adjacency", "TrianglesAdj", 6}; | 131 | return {"triangles_adjacency", 6}; |
| 132 | default: | 132 | default: |
| 133 | return {"points", "Invalid", 1}; | 133 | return {"points", 1}; |
| 134 | } | 134 | } |
| 135 | } | 135 | } |
| 136 | 136 | ||
| @@ -267,11 +267,9 @@ CachedProgram BuildShader(const Device& device, u64 unique_identifier, ShaderTyp | |||
| 267 | source += '\n'; | 267 | source += '\n'; |
| 268 | 268 | ||
| 269 | if (shader_type == ShaderType::Geometry) { | 269 | if (shader_type == ShaderType::Geometry) { |
| 270 | const auto [glsl_topology, debug_name, max_vertices] = | 270 | const auto [glsl_topology, max_vertices] = GetPrimitiveDescription(variant.primitive_mode); |
| 271 | GetPrimitiveDescription(variant.primitive_mode); | ||
| 272 | |||
| 273 | source += fmt::format("layout ({}) in;\n\n", glsl_topology); | ||
| 274 | source += fmt::format("#define MAX_VERTEX_INPUT {}\n", max_vertices); | 271 | source += fmt::format("#define MAX_VERTEX_INPUT {}\n", max_vertices); |
| 272 | source += fmt::format("layout ({}) in;\n\n", glsl_topology); | ||
| 275 | } | 273 | } |
| 276 | if (shader_type == ShaderType::Compute) { | 274 | if (shader_type == ShaderType::Compute) { |
| 277 | source += | 275 | source += |