From 67bc2f5ecd325d8d23d6d3d1ac979c8c78fdd743 Mon Sep 17 00:00:00 2001
From: bunnei <bunneidev@gmail.com>
Date: Mon, 26 Mar 2018 20:09:01 -0400
Subject: [PATCH] gl_rasterizer: Move PrimitiveTopology check to MaxwellToGL.

---
 src/video_core/renderer_opengl/gl_rasterizer.cpp | 13 ++-----------
 src/video_core/renderer_opengl/maxwell_to_gl.h   | 10 ++++++++++
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index c4abbb2cd..487d37a26 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -326,17 +326,7 @@ void RasterizerOpenGL::DrawArrays() {
     state.Apply();
 
     // Draw the vertex batch
-    GLenum primitive_mode;
-    switch (regs.draw.topology) {
-    case Maxwell::PrimitiveTopology::TriangleStrip:
-        primitive_mode = GL_TRIANGLE_STRIP;
-        break;
-    default:
-        UNREACHABLE();
-    }
-
     const bool is_indexed = accelerate_draw == AccelDraw::Indexed;
-
     AnalyzeVertexArray(is_indexed);
     state.draw.vertex_buffer = stream_buffer->GetHandle();
     state.Apply();
@@ -384,7 +374,8 @@ void RasterizerOpenGL::DrawArrays() {
     if (is_indexed) {
         UNREACHABLE();
     } else {
-        glDrawArrays(primitive_mode, 0, regs.vertex_buffer.count);
+        glDrawArrays(MaxwellToGL::PrimitiveTopology(regs.draw.topology), 0,
+                     regs.vertex_buffer.count);
     }
 
     // Disable scissor test
diff --git a/src/video_core/renderer_opengl/maxwell_to_gl.h b/src/video_core/renderer_opengl/maxwell_to_gl.h
index 003ee2fd9..d847317ac 100644
--- a/src/video_core/renderer_opengl/maxwell_to_gl.h
+++ b/src/video_core/renderer_opengl/maxwell_to_gl.h
@@ -37,4 +37,14 @@ inline GLenum VertexType(Maxwell::VertexAttribute attrib) {
     return {};
 }
 
+inline GLenum PrimitiveTopology(Maxwell::PrimitiveTopology topology) {
+    switch (topology) {
+    case Maxwell::PrimitiveTopology::TriangleStrip:
+        return GL_TRIANGLE_STRIP;
+    }
+    LOG_CRITICAL(Render_OpenGL, "Unimplemented primitive topology=%d", topology);
+    UNREACHABLE();
+    return {};
+}
+
 } // namespace MaxwellToGL