From d9d63c9496620b9f609abb67c51ae4f4a5c378a9 Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Fri, 31 Jul 2026 16:25:46 -0400 Subject: [PATCH] [Fix] (MG_Impl): answer ARB_transform_feedback3 limit queries The GL CTS queries GL_MAX_TRANSFORM_FEEDBACK_BUFFERS and GL_MAX_VERTEX_STREAMS before checking whether the extension is advertised and requires no GL error (desktop drivers all accept these enums). Answer with the separate-attrib capacity and a single vertex stream; the transform_feedback3 tests then report NotSupported instead of failing on GL_INVALID_ENUM. --- MobileGL/MG_Impl/GLImpl/Getter/GL_Getter.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/MobileGL/MG_Impl/GLImpl/Getter/GL_Getter.cpp b/MobileGL/MG_Impl/GLImpl/Getter/GL_Getter.cpp index a0d5f397..503f4529 100644 --- a/MobileGL/MG_Impl/GLImpl/Getter/GL_Getter.cpp +++ b/MobileGL/MG_Impl/GLImpl/Getter/GL_Getter.cpp @@ -1922,6 +1922,16 @@ namespace MobileGL::MG_Impl::GLImpl { case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: *params = kFrontendMaxTransformFeedbackSeparateComponents; break; + // ARB_transform_feedback3 limits. The GL CTS queries these before checking + // whether the extension is advertised and requires no GL error; desktop + // drivers all accept them, so answer with the separate-attrib capacity and + // the single vertex stream the backends provide. + case GL_MAX_TRANSFORM_FEEDBACK_BUFFERS: + *params = kFrontendMaxTransformFeedbackSeparateAttribs; + break; + case GL_MAX_VERTEX_STREAMS: + *params = 1; + break; case GL_MAX_TEXTURE_IMAGE_UNITS: *params = dynamicParameters.MaxTextureImageUnits; break;