gl_rasterizer: Move PrimitiveTopology check to MaxwellToGL.

This commit is contained in:
bunnei 2018-03-26 20:09:01 -04:00
parent 666d53299c
commit 67bc2f5ecd
2 changed files with 12 additions and 11 deletions

View File

@ -326,17 +326,7 @@ void RasterizerOpenGL::DrawArrays() {
state.Apply(); state.Apply();
// Draw the vertex batch // 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; const bool is_indexed = accelerate_draw == AccelDraw::Indexed;
AnalyzeVertexArray(is_indexed); AnalyzeVertexArray(is_indexed);
state.draw.vertex_buffer = stream_buffer->GetHandle(); state.draw.vertex_buffer = stream_buffer->GetHandle();
state.Apply(); state.Apply();
@ -384,7 +374,8 @@ void RasterizerOpenGL::DrawArrays() {
if (is_indexed) { if (is_indexed) {
UNREACHABLE(); UNREACHABLE();
} else { } else {
glDrawArrays(primitive_mode, 0, regs.vertex_buffer.count); glDrawArrays(MaxwellToGL::PrimitiveTopology(regs.draw.topology), 0,
regs.vertex_buffer.count);
} }
// Disable scissor test // Disable scissor test

View File

@ -37,4 +37,14 @@ inline GLenum VertexType(Maxwell::VertexAttribute attrib) {
return {}; 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 } // namespace MaxwellToGL