+UnusedAttribs = AttribArray(Const(GLXEnum), [])
+
+GLXCommonSizeAttribs = [
+ ('GLX_RED_SIZE', UInt),
+ ('GLX_GREEN_SIZE', UInt),
+ ('GLX_BLUE_SIZE', UInt),
+ ('GLX_ALPHA_SIZE', UInt),
+ ('GLX_DEPTH_SIZE', UInt),
+ ('GLX_STENCIL_SIZE', UInt),
+ ('GLX_ACCUM_RED_SIZE', UInt),
+ ('GLX_ACCUM_GREEN_SIZE', UInt),
+ ('GLX_ACCUM_BLUE_SIZE', UInt),
+ ('GLX_ACCUM_ALPHA_SIZE', UInt)
+]
+
+GLXVisualAttribs = AttribArray(GLXEnum, GLXCommonSizeAttribs + [
+ ('GLX_USE_GL', None),
+ ('GLX_BUFFER_SIZE', UInt),
+ ('GLX_LEVEL', Int),
+ ('GLX_RGBA', None),
+ ('GLX_DOUBLEBUFFER', None),
+ ('GLX_STEREO', None),
+ ('GLX_AUX_BUFFERS', UInt),
+ ('GLX_SAMPLE_BUFFERS', UInt),
+ ('GLX_SAMPLES', UInt)],
+)
+
+GLXFBConfigCommonAttribs = GLXCommonSizeAttribs + [
+ ('GLX_BUFFER_SIZE', UInt),
+ ('GLX_LEVEL', Int),
+ ('GLX_DOUBLEBUFFER', Bool),
+ ('GLX_STEREO', Bool),
+ ('GLX_AUX_BUFFERS', UInt),
+ ('GLX_SAMPLE_BUFFERS', UInt),
+ ('GLX_SAMPLES', UInt),
+ ('GLX_RENDER_TYPE', Flags(Int, ["GLX_RGBA_BIT", "GLX_COLOR_INDEX_BIT"])),
+ ('GLX_DRAWABLE_TYPE', Flags(Int, ["GLX_WINDOW_BIT", "GLX_PIXMAP_BIT", "GLX_PBUFFER_BIT"])),
+ ('GLX_X_RENDERABLE', Bool),
+ ('GLX_X_VISUAL_TYPE', FakeEnum(Int, ["GLX_TRUE_COLOR", "GLX_DIRECT_COLOR", "GLX_PSEUDO_COLOR", "GLX_STATIC_COLOR"])),
+ ('GLX_CONFIG_CAVEAT', FakeEnum(Int, ["GLX_NONE", "GLX_SLOW_CONFIG", "GLX_NON_CONFORMANT_CONFIG"])),
+ ('GLX_TRANSPARENT_TYPE', FakeEnum(Int, ["GLX_NONE", "GLX_TRANSPARENT_RGB", "GLX_TRANSPARENT_INDEX"])),
+ ('GLX_TRANSPARENT_INDEX_VALUE', Int),
+ ('GLX_TRANSPARENT_RED_VALUE', Int),
+ ('GLX_TRANSPARENT_GREEN_VALUE', Int),
+ ('GLX_TRANSPARENT_BLUE_VALUE', Int),
+ ('GLX_TRANSPARENT_ALPHA_VALUE', Int)
+]
+
+GLXFBConfigGLXAttribs = GLXFBConfigCommonAttribs + [
+ ('GLX_FBCONFIG_ID', Int), # an XID, can we do better than int?
+ ('GLX_MAX_PBUFFER_WIDTH', Int),
+ ('GLX_MAX_PBUFFER_HEIGHT', Int),
+ ('GLX_MAX_PBUFFER_PIXELS', Int),
+ ('GLX_VISUAL_ID', Int) # another XID
+]
+
+GLXFBConfigAttribs = AttribArray(Const(GLXEnum), GLXFBConfigGLXAttribs)
+GLXFBConfigSGIXAttribs = AttribArray(GLXEnum, GLXFBConfigCommonAttribs)
+
+GLXContextARBAttribs = AttribArray(Const(GLXEnum), [
+ ('GLX_RENDER_TYPE', Flags(Int, ["GLX_RGBA_BIT", "GLX_COLOR_INDEX_BIT"])),
+ ('GLX_CONTEXT_MAJOR_VERSION_ARB', Int),
+ ('GLX_CONTEXT_MINOR_VERSION_ARB', Int),
+ ('GLX_CONTEXT_FLAGS_ARB', Flags(Int, ["GLX_CONTEXT_DEBUG_BIT_ARB", "GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB", "GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB"])),
+ ('GLX_CONTEXT_PROFILE_MASK_ARB', Flags(Int, ["GLX_CONTEXT_CORE_PROFILE_BIT_ARB", "GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB"])),
+ ('GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB', GLXEnum),
+])
+
+GLXPbufferAttribs = AttribArray(Const(GLXEnum), [
+ ('GLX_PBUFFER_WIDTH', Int),
+ ('GLX_PBUFFER_HEIGHT', Int),
+ ('GLX_LARGEST_PBUFFER', Bool),
+ ('GLX_PRESERVED_CONTENTS', Bool)
+])
+
+GLXPbufferSGIXAttribs = AttribArray(GLXEnum, [
+ ('GLX_PRESERVED_CONTENTS_SGIX', Bool),
+ ('GLX_LARGEST_PBUFFER', Bool),
+ ('GLX_DIGITAL_MEDIA_PBUFFER_SGIX', Bool)],
+)
+
+glxapi = Module("GLX")