diff options
| author | Stenzek <stenzek@gmail.com> | 2017-04-30 18:07:57 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2017-09-11 20:01:45 +1000 |
| commit | 836b9b9acbc2ff2d10d6f3c81e64b7b10b22f023 (patch) | |
| tree | 78f87a4af8176ec94256d3c7c63969db0d91931b /Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp | |
| parent | 2869c570f1d0b67d2ee4304ea528bef3ef4b563e (diff) | |
Renderer: Move cull mode to a rasterization state object
Also moves logic for primitive handling to VideoCommon.
Diffstat (limited to 'Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp index 5617a928a9..c82a0cba01 100644 --- a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp +++ b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp @@ -221,7 +221,8 @@ void ProgramShaderCache::UploadConstants() } } -SHADER* ProgramShaderCache::SetShader(u32 primitive_type, const GLVertexFormat* vertex_format) +SHADER* ProgramShaderCache::SetShader(PrimitiveType primitive_type, + const GLVertexFormat* vertex_format) { if (g_ActiveConfig.bDisableSpecializedShaders) return SetUberShader(primitive_type, vertex_format); @@ -292,7 +293,8 @@ SHADER* ProgramShaderCache::SetShader(u32 primitive_type, const GLVertexFormat* return &last_entry->shader; } -SHADER* ProgramShaderCache::SetUberShader(u32 primitive_type, const GLVertexFormat* vertex_format) +SHADER* ProgramShaderCache::SetUberShader(PrimitiveType primitive_type, + const GLVertexFormat* vertex_format) { UBERSHADERUID uid; std::memset(&uid, 0, sizeof(uid)); @@ -1295,7 +1297,7 @@ void ProgramShaderCache::DestroyPrerenderArrays(SharedContextData* data) } } -void ProgramShaderCache::DrawPrerenderArray(const SHADER& shader, u32 primitive_type) +void ProgramShaderCache::DrawPrerenderArray(const SHADER& shader, PrimitiveType primitive_type) { // This is called on a worker thread, so we don't want to use the normal binding process. glUseProgram(shader.glprogid); @@ -1303,15 +1305,18 @@ void ProgramShaderCache::DrawPrerenderArray(const SHADER& shader, u32 primitive_ // The number of primitives drawn depends on the type. switch (primitive_type) { - case PRIMITIVE_POINTS: + case PrimitiveType::Points: glDrawElements(GL_POINTS, 1, GL_UNSIGNED_SHORT, nullptr); break; - case PRIMITIVE_LINES: + case PrimitiveType::Lines: glDrawElements(GL_LINES, 2, GL_UNSIGNED_SHORT, nullptr); break; - case PRIMITIVE_TRIANGLES: + case PrimitiveType::Triangles: glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_SHORT, nullptr); break; + case PrimitiveType::TriangleStrip: + glDrawElements(GL_TRIANGLE_STRIP, 3, GL_UNSIGNED_SHORT, nullptr); + break; } // Has to be finished by the time the main thread picks it up. |
