diff options
Diffstat (limited to 'src/video_core/primitive_assembly.cpp')
-rw-r--r-- | src/video_core/primitive_assembly.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/video_core/primitive_assembly.cpp b/src/video_core/primitive_assembly.cpp index 44a8dbfe9..0061690f1 100644 --- a/src/video_core/primitive_assembly.cpp +++ b/src/video_core/primitive_assembly.cpp @@ -39,13 +39,12 @@ void PrimitiveAssembler<VertexType>::SubmitVertex(VertexType& vtx, TriangleHandl buffer[buffer_index] = vtx; - if (topology == Regs::TriangleTopology::Strip) { - strip_ready |= (buffer_index == 1); + strip_ready |= (buffer_index == 1); + + if (topology == Regs::TriangleTopology::Strip) buffer_index = !buffer_index; - } else if (topology == Regs::TriangleTopology::Fan) { + else if (topology == Regs::TriangleTopology::Fan) buffer_index = 1; - strip_ready = true; - } break; default: @@ -54,6 +53,18 @@ void PrimitiveAssembler<VertexType>::SubmitVertex(VertexType& vtx, TriangleHandl } } +template<typename VertexType> +void PrimitiveAssembler<VertexType>::Reset() { + buffer_index = 0; + strip_ready = false; +} + +template<typename VertexType> +void PrimitiveAssembler<VertexType>::Reconfigure(Regs::TriangleTopology topology) { + Reset(); + this->topology = topology; +} + // explicitly instantiate use cases template struct PrimitiveAssembler<Shader::OutputVertex>; |