GL_DEBUG_SEVERITY_HIGH missing for GL_INVALID_OPERATION on some drivers — glDebugMessageCallback filtering
0 reputation · 11 May 2026, 11:40 UTC
I am building an error-reporting layer on top of OpenGL 4.3+ debug output (glDebugMessageCallback with GL_DEBUG_OUTPUT and GL_DEBUG_OUTPUT_SYNCHRONOUS enabled) so that user-facing diagnostics can be filtered by severity rather than vendor-specific message IDs.
The portable filter relies on GL_DEBUG_SEVERITY_HIGH for hard failures and GL_DEBUG_TYPE_ERROR for API misuse. The uncertainty is that vendors appear to map the same condition (for example, a call that sets GL_INVALID_OPERATION) to different severities, and it is unclear whether a GL_DEBUG_TYPE_ERROR message is guaranteed to correspond to an error retrievable via glGetError on all conformant drivers.
Assume a 4.3+ core context and that message IDs cannot be used portably. The goal is a severity-based classification that behaves consistently across NVIDIA, AMD, and Intel drivers without per-vendor tables.
- Does the specification guarantee that every
GL_DEBUG_TYPE_ERRORmessage corresponds to aglGetError-reportable error, or is that mapping implementation-defined? - Is severity classification (
HIGH/MEDIUM/LOW) for standard API errors normative, or may drivers legitimately downgrade them? - What is the recommended portable basis for filtering when only type and severity enums are reliable?