diff --git a/GPU/GLES/GLES_GPU.cpp b/GPU/GLES/GLES_GPU.cpp index e43262d80a..dcbfe55ab2 100644 --- a/GPU/GLES/GLES_GPU.cpp +++ b/GPU/GLES/GLES_GPU.cpp @@ -645,7 +645,10 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) { u32 count = data & 0xFFFF; GEPrimitiveType prim = static_cast(data >> 16); - + + if (count == 0) + break; + // Discard AA lines as we can't do anything that makes sense with these anyway. The SW plugin might, though. // Discard AA lines in DOA diff --git a/GPU/GLES/TransformPipeline.cpp b/GPU/GLES/TransformPipeline.cpp index 50d11d95aa..dde37fd379 100644 --- a/GPU/GLES/TransformPipeline.cpp +++ b/GPU/GLES/TransformPipeline.cpp @@ -838,7 +838,18 @@ void TransformDrawEngine::SubmitPrim(void *verts, void *inds, GEPrimitiveType pr if (!indexGen.PrimCompatible(prevPrim_, prim) || numDrawCalls >= MAX_DEFERRED_DRAW_CALLS) Flush(); + + if (prim == GE_PRIM_KEEP_PREVIOUS) { + switch(prevPrim_) { + case GE_PRIM_LINE_STRIP: + case GE_PRIM_TRIANGLE_STRIP: + case GE_PRIM_TRIANGLE_FAN: + break; + } + prim = prevPrim_; + } prevPrim_ = prim; + SetupVertexDecoder(vertType); dec_->IncrementStat(STAT_VERTSSUBMITTED, vertexCount);