From 9dcda82d71f6e838a2dbd9cfac8fc0e5a8b01789 Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Tue, 4 Aug 2026 19:10:40 -0400 Subject: [PATCH] [Fix] (DirectVulkan): advertise GL_ARB_get_program_binary on Magma too The extension and its three entry points are frontend state - no binary format is exposed on either backend - but only DirectGLES listed it, so on Magma dEQP's loader still left glProgramParameteri null and KHR-GL40.api.coverage called straight through the null pointer. The entry point is not core before GL 4.1; this is what exposes it. --- .../MG_Backend/DirectVulkan/BackendObject_DirectVulkan.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/MobileGL/MG_Backend/DirectVulkan/BackendObject_DirectVulkan.cpp b/MobileGL/MG_Backend/DirectVulkan/BackendObject_DirectVulkan.cpp index 33adfa4e..ef45fbcd 100644 --- a/MobileGL/MG_Backend/DirectVulkan/BackendObject_DirectVulkan.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/BackendObject_DirectVulkan.cpp @@ -530,7 +530,11 @@ namespace MobileGL::MG_Backend::DirectVulkan { E_GL_ARB_shader_draw_parameters, E_GL_ARB_gpu_shader_int64, E_GL_KHR_debug, E_GL_ARB_gpu_shader5, E_GL_ARB_multi_bind, E_GL_ARB_shading_language_420pack, E_GL_ARB_vertex_attrib_binding, E_GL_ARB_shader_image_size, - E_GL_ARB_explicit_attrib_location}; + E_GL_ARB_explicit_attrib_location, + // Advertised with GL_NUM_PROGRAM_BINARY_FORMATS = 0, which the + // extension explicitly permits. It is also the only thing that + // exposes glProgramParameteri before GL 4.1. + E_GL_ARB_get_program_binary}; if (shaderSubgroupSupported && !MG_Config::Features.DisableSubgroup) { extensions.push_back(E_GL_KHR_shader_subgroup); }