From 95547ab9ce89e69bfbf43d508cb76e910219144d Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Sat, 1 Aug 2026 00:30:01 -0400 Subject: [PATCH] [Fix] (MG_Util): map GL adjacency primitives to their Vulkan topologies GL_LINES_ADJACENCY / GL_LINE_STRIP_ADJACENCY / GL_TRIANGLES_ADJACENCY / GL_TRIANGLE_STRIP_ADJACENCY fell through to the TRIANGLE_LIST default, so adjacency draws assembled garbage. They now map to the matching *_WITH_ADJACENCY topologies (adjacency vertices are discarded by Vulkan when no geometry shader is active, matching GL semantics); KHR-GL33.primitive_restart.restart_mode passes. --- .../Converters/MGToVk/RenderStateEnumConverter.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/MobileGL/MG_Util/Converters/MGToVk/RenderStateEnumConverter.cpp b/MobileGL/MG_Util/Converters/MGToVk/RenderStateEnumConverter.cpp index 8a32b3ef..1d9e1bbd 100644 --- a/MobileGL/MG_Util/Converters/MGToVk/RenderStateEnumConverter.cpp +++ b/MobileGL/MG_Util/Converters/MGToVk/RenderStateEnumConverter.cpp @@ -30,6 +30,14 @@ namespace MobileGL { // degrade to an open strip, which only misses the closing segment. MGLOG_W("GL_LINE_LOOP without index rewrite; drawing as LINE_STRIP"); return VK_PRIMITIVE_TOPOLOGY_LINE_STRIP; + case GL_LINES_ADJACENCY: + return VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY; + case GL_LINE_STRIP_ADJACENCY: + return VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY; + case GL_TRIANGLES_ADJACENCY: + return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY; + case GL_TRIANGLE_STRIP_ADJACENCY: + return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY; default: MGLOG_W("Unrecognized primitive topology"); return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;