mirror of
https://github.com/ARMSX2/ARMSX2.git
synced 2026-08-24 16:50:16 -07:00
Extract the fused packed-vertex parse (STQRGBAXYZF2/STQRGBAXYZ2) and the per-prim accept/cull decision out of GSState.cpp into pure free functions (GS/GSVertexKick.h, namespace GSVertexKernels). No behavior change: gsrunner frame hashes over all 15 local dumps are bit-identical on both the software and Vulkan renderers. New gtest target gs_vertex_tests pins the kernels against independent scalar models of the GIF/GS semantics (plain integer C, no GSVector) over directed edges (Q==+0.0 vs -0.0, 16-subtexel boundaries, duplicate vertices) plus 3.5M-case randomized sweeps per prim class. Optimized kernel implementations in the GV campaign must pass the same suite bit-for-bit. Also adds the GS_VERTEX_CROSSCHECK CMake option (default OFF) that later GV items use to run legacy+new kernels side by side during dump replays. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>