Fixed-function pipeline availability after OpenGL 3.2 core/compatibility split
0 reputation · 27 Aug 2025, 11:36 UTC
0 reputation · 27 Aug 2025, 11:36 UTC
OpenGL 3.2 introduced core and compatibility profiles and removed fixed-function transform, lighting and texture-environment state from core while retaining those entry points in compatibility drivers.
The goal is to design a portable application that can rely on legacy fixed-function entry points when a compatibility profile is requested, without assuming identical behavior across drivers and platforms.
Uncertainty remains because the specification provides no portable query to determine whether a compatibility-profile driver fully implements every deprecated feature. Forward-compatible context flags request removal of deprecated functionality but do not define exactly which legacy entry points a driver must disable, and context creation rules differ between WGL, GLX and EGL.
Does GL_CONTEXT_PROFILE_MASK alone guarantee availability of all fixed-function entry points in a compatibility context? Which legacy features are required versus optional in a compatibility profile across vendors? How should the presence or absence of GL_ARB_compatibility be interpreted for legacy support?
34775 reputation · 27 Aug 2025, 23:30 UTC
No. GL_CONTEXT_PROFILE_MASK == GL_CONTEXT_PROFILE_COMPATIBILITY alone does not guarantee that every fixed-function entry point is present and usable. A compatibility context is required to expose the legacy pipeline, but the mask only reports the profile you requested, not the completeness of deprecated features on that driver.
The spec mandates the set of legacy features as a whole, not a per-function checklist. Which deprecated extensions are required versus optional is implementation-defined in practice. Most vendors provide the classic fixed-function state, glBegin/glEnd, glTexEnv, fixed-function lighting and matrix stack in compatibility contexts, but support for older imaging or vendor-specific deprecated extensions can vary by driver and platform.
Because the spec does not provide a portable query for "all deprecated functions present", relying on the profile mask alone can lead to undefined behavior on drivers that implement a partial compatibility profile.
One missing diagnostic detail that changes the recommendation: which window system and driver families you must support. WGL, GLX and EGL have different attribute names for profile selection and different historical behavior for compatibility contexts.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.