summaryrefslogtreecommitdiff
path: root/specs/glxapi.py
diff options
context:
space:
mode:
Diffstat (limited to 'specs/glxapi.py')
-rw-r--r--specs/glxapi.py104
1 files changed, 69 insertions, 35 deletions
diff --git a/specs/glxapi.py b/specs/glxapi.py
index ac7525c1..0d3cd969 100644
--- a/specs/glxapi.py
+++ b/specs/glxapi.py
@@ -106,6 +106,8 @@ GLXEnum = FakeEnum(Int, [
"GLX_CONTEXT_MINOR_VERSION_ARB", # 0x2092
"GLX_CONTEXT_FLAGS_ARB", # 0x2094
"GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB", # 0x2095
+ "GLX_CONTEXT_RELEASE_BEHAVIOR_ARB", # 0x2097
+ "GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB", # 0x2098
"GLX_FLOAT_COMPONENTS_NV", # 0x20B0
"GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT", # 0x20B1
"GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB", # 0x20B2
@@ -275,7 +277,10 @@ GLXbuffer = Flags(Int, [
UnusedAttribs = AttribArray(Const(GLXEnum), [])
-GLXCommonSizeAttribs = [
+GLXCommonAttribs = [
+ ('GLX_BUFFER_SIZE', UInt),
+ ('GLX_LEVEL', Int),
+ ('GLX_AUX_BUFFERS', UInt),
('GLX_RED_SIZE', UInt),
('GLX_GREEN_SIZE', UInt),
('GLX_BLUE_SIZE', UInt),
@@ -285,60 +290,66 @@ GLXCommonSizeAttribs = [
('GLX_ACCUM_RED_SIZE', UInt),
('GLX_ACCUM_GREEN_SIZE', UInt),
('GLX_ACCUM_BLUE_SIZE', UInt),
- ('GLX_ACCUM_ALPHA_SIZE', UInt)
+ ('GLX_ACCUM_ALPHA_SIZE', UInt),
+ ('GLX_CONFIG_CAVEAT', FakeEnum(Int, ["GLX_NONE", "GLX_SLOW_CONFIG", "GLX_NON_CONFORMANT_CONFIG"])),
+ ('GLX_X_VISUAL_TYPE', FakeEnum(Int, ["GLX_TRUE_COLOR", "GLX_DIRECT_COLOR", "GLX_PSEUDO_COLOR", "GLX_STATIC_COLOR"])),
+ ('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),
+ ('GLX_SAMPLE_BUFFERS', UInt),
+ ('GLX_SAMPLES', UInt),
]
-GLXVisualAttribs = AttribArray(GLXEnum, GLXCommonSizeAttribs + [
+GLXVisualAttribs = AttribArray(GLXEnum, GLXCommonAttribs + [
('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),
+GLXFBConfigCommonAttribs = GLXCommonAttribs + [
('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_FBCONFIG_ID', GLXFBConfigID),
('GLX_MAX_PBUFFER_WIDTH', Int),
('GLX_MAX_PBUFFER_HEIGHT', Int),
('GLX_MAX_PBUFFER_PIXELS', Int),
- ('GLX_VISUAL_ID', Int) # another XID
+ ('GLX_VISUAL_ID', VisualID),
]
GLXFBConfigAttribs = AttribArray(Const(GLXEnum), GLXFBConfigGLXAttribs)
GLXFBConfigSGIXAttribs = AttribArray(GLXEnum, GLXFBConfigCommonAttribs)
+GLXContextProfileMask = Flags(Int, [
+ "GLX_CONTEXT_CORE_PROFILE_BIT_ARB",
+ "GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB",
+ "GLX_CONTEXT_ES_PROFILE_BIT_EXT",
+])
+
GLXContextARBAttribs = AttribArray(Const(GLXEnum), [
- ('GLX_RENDER_TYPE', Flags(Int, ["GLX_RGBA_BIT", "GLX_COLOR_INDEX_BIT"])),
+ ('GLX_RENDER_TYPE', FakeEnum(Int, ["GLX_RGBA_TYPE", "GLX_COLOR_INDEX_TYPE"])),
('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_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', GLXContextProfileMask),
('GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB', GLXEnum),
+ ('GLX_CONTEXT_RELEASE_BEHAVIOR_ARB', FakeEnum(Int, [
+ 'GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB',
+ 'GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB',
+ ])),
])
GLXPbufferAttribs = AttribArray(Const(GLXEnum), [
@@ -354,6 +365,23 @@ GLXPbufferSGIXAttribs = AttribArray(GLXEnum, [
#('GLX_DIGITAL_MEDIA_PBUFFER_SGIX', Bool),
])
+GLXRendererAttrPointer = Polymorphic('attribute', [
+ ("GLX_RENDERER_VENDOR_ID_MESA", Pointer(UInt)),
+ ("GLX_RENDERER_DEVICE_ID_MESA", Pointer(UInt)),
+ ("GLX_RENDERER_VERSION_MESA", Array(UInt, 3)),
+ ("GLX_RENDERER_ACCELERATED_MESA", Pointer(Bool)),
+ ("GLX_RENDERER_VIDEO_MEMORY_MESA", Pointer(UInt)),
+ ("GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA", Pointer(Bool)),
+ ("GLX_RENDERER_PREFERRED_PROFILE_MESA", Pointer(GLXContextProfileMask)),
+ ("GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA", Array(UInt, 2) ),
+ ("GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA", Array(UInt, 2)),
+ ("GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA", Array(UInt, 2)),
+ ("GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA", Array(UInt, 2)),
+ ],
+ Pointer(UInt)
+)
+
+
glxapi = Module("GLX")
PROC = Opaque("__GLXextFuncPtr")
@@ -382,9 +410,9 @@ glxapi.addFunctions([
Function(Void, "glXUseXFont", [(Font, "font"), (Int, "first"), (Int, "count"), (Int, "list")]),
# GLX_VERSION_1_1
- Function((ConstCString), "glXQueryExtensionsString", [(Display, "dpy"), (Int, "screen")], sideeffects=False),
- Function((ConstCString), "glXQueryServerString", [(Display, "dpy"), (Int, "screen"), (GLXname, "name")], sideeffects=False),
- Function((ConstCString), "glXGetClientString", [(Display, "dpy"), (GLXname, "name")], sideeffects=False),
+ Function(ConstCString, "glXQueryExtensionsString", [(Display, "dpy"), (Int, "screen")], sideeffects=False),
+ Function(ConstCString, "glXQueryServerString", [(Display, "dpy"), (Int, "screen"), (GLXname, "name")], sideeffects=False),
+ Function(ConstCString, "glXGetClientString", [(Display, "dpy"), (GLXname, "name")], sideeffects=False),
# GLX_VERSION_1_2
Function(Display, "glXGetCurrentDisplay", [], sideeffects=False),
@@ -448,6 +476,12 @@ glxapi.addFunctions([
# GLX_MESA_pixmap_colormap
Function(GLXPixmap, "glXCreateGLXPixmapMESA", [(Display, "dpy"), (Pointer(XVisualInfo), "visual"), (Pixmap, "pixmap"), (Colormap, "cmap")]),
+ # GLX_MESA_query_renderer
+ GlFunction(Bool, "glXQueryCurrentRendererIntegerMESA", [(GLXEnum, "attribute"), Out(GLXRendererAttrPointer, "value")], sideeffects=False),
+ GlFunction(ConstCString, "glXQueryCurrentRendererStringMESA", [(GLXEnum, "attribute")], sideeffects=False),
+ GlFunction(Bool, "glXQueryRendererIntegerMESA", [(Display, "dpy"), (Int, "screen"), (Int, "renderer"), (GLXEnum, "attribute"), Out(GLXRendererAttrPointer, "value")], sideeffects=False),
+ GlFunction(ConstCString, "glXQueryRendererStringMESA", [(Display, "dpy"), (Int, "screen"), (Int, "renderer"), (GLXEnum, "attribute")], sideeffects=False),
+
# GLX_MESA_release_buffers
Function(Bool, "glXReleaseBuffersMESA", [(Display, "dpy"), (GLXDrawable, "drawable")]),
@@ -517,12 +551,12 @@ glxapi.addFunctions([
#Function(Bool, "glXAssociateDMPbufferSGIX", [(Display, "dpy"), (GLXPbufferSGIX, "pbuffer"), (OpaquePointer(DMparams), "params"), (DMbuffer, "dmbuffer")]),
# GLX_SGIX_fbconfig
- Function(Int, "glXGetFBConfigAttribSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (Int, "attribute"), Out(Pointer(Int), "value")]),
- Function(OpaquePointer(GLXFBConfigSGIX), "glXChooseFBConfigSGIX", [(Display, "dpy"), (Int, "screen"), (GLXFBConfigSGIXAttribs, "attrib_list"), Out(Pointer(Int), "nelements")]),
+ Function(Int, "glXGetFBConfigAttribSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (GLXEnum, "attribute"), Out(Pointer(Int), "value")]),
+ Function(Array(GLXFBConfigSGIX, "*nelements"), "glXChooseFBConfigSGIX", [(Display, "dpy"), (Int, "screen"), (GLXFBConfigSGIXAttribs, "attrib_list"), Out(Pointer(Int), "nelements")]),
Function(GLXPixmap, "glXCreateGLXPixmapWithConfigSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (Pixmap, "pixmap")]),
- Function(GLXContext, "glXCreateContextWithConfigSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (Int, "render_type"), (GLXContext, "share_list"), (Bool, "direct")]),
+ Function(GLXContext, "glXCreateContextWithConfigSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (GLXEnum, "render_type"), (GLXContext, "share_list"), (Bool, "direct")]),
Function(Pointer(XVisualInfo), "glXGetVisualFromFBConfigSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config")]),
- Function(GLXFBConfigSGIX, "glXGetFBConfigFromVisualSGIX", [(Display, "dpy"), Out(Pointer(XVisualInfo), "vis")]),
+ Function(GLXFBConfigSGIX, "glXGetFBConfigFromVisualSGIX", [(Display, "dpy"), (Pointer(XVisualInfo), "vis")]),
# GLX_SGIX_hyperpipe
#Function(OpaquePointer(GLXHyperpipeNetworkSGIX), "glXQueryHyperpipeNetworkSGIX", [(Display, "dpy"), (OpaquePointer(Int), "npipes")]),