Bug#803221: mesa-common-dev: incompatibility (missing typedefs) between gl.h and glext.h
Package: mesa-common-dev
Version: 10.3.2-1+deb8u1
Severity: normal
Dear Maintainer,
A number of typedefs that were defined in previous versions of Mesa
are now missing, if <GL/gl.h> is included before <GL/glext.h>. The
lack of these definitions breaks existing code.
It seems the current version of glext.h and the current version of
gl.h have a disagreement regarding what types are "supposed" to be
defined for a given version of the API.
Specifically, in version 8.0.5-4+deb7u2, the following 37 types were
defined in the '#ifndef GL_VERSION_1_3_DEPRECATED' section of glext.h:
PFNGLCLIENTACTIVETEXTUREPROC
PFNGLMULTITEXCOORD1DPROC
PFNGLMULTITEXCOORD1DVPROC
PFNGLMULTITEXCOORD1FPROC
PFNGLMULTITEXCOORD1FVPROC
PFNGLMULTITEXCOORD1IPROC
PFNGLMULTITEXCOORD1IVPROC
PFNGLMULTITEXCOORD1SPROC
PFNGLMULTITEXCOORD1SVPROC
PFNGLMULTITEXCOORD2DPROC
PFNGLMULTITEXCOORD2DVPROC
PFNGLMULTITEXCOORD2FPROC
PFNGLMULTITEXCOORD2FVPROC
PFNGLMULTITEXCOORD2IPROC
PFNGLMULTITEXCOORD2IVPROC
PFNGLMULTITEXCOORD2SPROC
PFNGLMULTITEXCOORD2SVPROC
PFNGLMULTITEXCOORD3DPROC
PFNGLMULTITEXCOORD3DVPROC
PFNGLMULTITEXCOORD3FPROC
PFNGLMULTITEXCOORD3FVPROC
PFNGLMULTITEXCOORD3IPROC
PFNGLMULTITEXCOORD3IVPROC
PFNGLMULTITEXCOORD3SPROC
PFNGLMULTITEXCOORD3SVPROC
PFNGLMULTITEXCOORD4DPROC
PFNGLMULTITEXCOORD4DVPROC
PFNGLMULTITEXCOORD4FPROC
PFNGLMULTITEXCOORD4FVPROC
PFNGLMULTITEXCOORD4IPROC
PFNGLMULTITEXCOORD4IVPROC
PFNGLMULTITEXCOORD4SPROC
PFNGLMULTITEXCOORD4SVPROC
PFNGLLOADTRANSPOSEMATRIXFPROC
PFNGLLOADTRANSPOSEMATRIXDPROC
PFNGLMULTTRANSPOSEMATRIXFPROC
PFNGLMULTTRANSPOSEMATRIXDPROC
In version 10.3.2-1+deb8u1, these types have been moved to the
'GL_VERSION_1_3' section of glext.h, but are not defined in gl.h.
Thus (since gl.h defines GL_VERSION_1_3) these types cannot be used.
Likewise, the following 32 types were previously part of the
'GL_VERSION_1_2_DEPRECATED' section in glext.h:
PFNGLCOLORTABLEPROC
PFNGLCOLORTABLEPARAMETERFVPROC
PFNGLCOLORTABLEPARAMETERIVPROC
PFNGLCOPYCOLORTABLEPROC
PFNGLGETCOLORTABLEPROC
PFNGLGETCOLORTABLEPARAMETERFVPROC
PFNGLGETCOLORTABLEPARAMETERIVPROC
PFNGLCOLORSUBTABLEPROC
PFNGLCOPYCOLORSUBTABLEPROC
PFNGLCONVOLUTIONFILTER1DPROC
PFNGLCONVOLUTIONFILTER2DPROC
PFNGLCONVOLUTIONPARAMETERFPROC
PFNGLCONVOLUTIONPARAMETERFVPROC
PFNGLCONVOLUTIONPARAMETERIPROC
PFNGLCONVOLUTIONPARAMETERIVPROC
PFNGLCOPYCONVOLUTIONFILTER1DPROC
PFNGLCOPYCONVOLUTIONFILTER2DPROC
PFNGLGETCONVOLUTIONFILTERPROC
PFNGLGETCONVOLUTIONPARAMETERFVPROC
PFNGLGETCONVOLUTIONPARAMETERIVPROC
PFNGLGETSEPARABLEFILTERPROC
PFNGLSEPARABLEFILTER2DPROC
PFNGLGETHISTOGRAMPROC
PFNGLGETHISTOGRAMPARAMETERFVPROC
PFNGLGETHISTOGRAMPARAMETERIVPROC
PFNGLGETMINMAXPROC
PFNGLGETMINMAXPARAMETERFVPROC
PFNGLGETMINMAXPARAMETERIVPROC
PFNGLHISTOGRAMPROC
PFNGLMINMAXPROC
PFNGLRESETHISTOGRAMPROC
PFNGLRESETMINMAXPROC
These types are now defined under 'GL_ARB_imaging' in glext.h, and are
not defined in gl.h.
The oldest version of Mesa that I have lying around is 6.5.2; in that
version, these typedefs appear in both gl.h and glext.h, and there are
no "deprecated" sections. I guess that at some point, the deprecated
sections were added to glext.h, and in response, the typedefs - but
not the corresponding prototypes or macros - were removed from gl.h to
avoid redefining them. (Whereas the smart thing to do would have been
to leave the typedefs alone, and #define GL_VERSION_1_2_DEPRECATED and
GL_VERSION_1_3_DEPRECATED in gl.h.) Now that the deprecated sections
have been removed, it's broken again.
Reply to: