diff --git a/GPU/Software/TransformUnit.cpp b/GPU/Software/TransformUnit.cpp index ce026495a7..d0ac3a28a1 100644 --- a/GPU/Software/TransformUnit.cpp +++ b/GPU/Software/TransformUnit.cpp @@ -461,6 +461,12 @@ void TransformUnit::SubmitPrimitive(void* vertices, void* indices, GEPrimitiveTy if (gstate_c.skipDrawReason & SKIPDRAW_SKIPFRAME) { return; } + // Throughmode never draws 8-bit primitives, maybe because they can't fully specify the screen? + if ((vertex_type & GE_VTYPE_THROUGH_MASK) != 0 && (vertex_type & GE_VTYPE_POS_MASK) == GE_VTYPE_POS_8BIT) + return; + // Vertices without position are just entirely culled. + if ((vertex_type & GE_VTYPE_POS_MASK) == 0) + return; u16 index_lower_bound = 0; u16 index_upper_bound = vertex_count - 1; diff --git a/test.py b/test.py index 502b91bff6..01eeeb17d7 100755 --- a/test.py +++ b/test.py @@ -148,6 +148,7 @@ tests_good = [ "gpu/ge/enqueueparam", "gpu/ge/queue", "gpu/primitives/indices", + "gpu/primitives/triangles", "gpu/rendertarget/depal", "gpu/signals/pause", "gpu/signals/pause2", @@ -393,7 +394,6 @@ tests_next = [ "gpu/primitives/rectangles", "gpu/primitives/spline", "gpu/primitives/trianglefan", - "gpu/primitives/triangles", "gpu/primitives/trianglestrip", "gpu/reflection/reflection", "gpu/rendertarget/copy",