CGSWindowID = Alias("CGSWindowID", Int)
CGSSurfaceID = Alias("CGSSurfaceID", Int)
-CGLPixelFormatAttribute = Enum("CGLPixelFormatAttribute", [
+CGLPixelFormatBoolAttributes = [
"kCGLPFAAllRenderers",
"kCGLPFADoubleBuffer",
"kCGLPFAStereo",
"kCGLPFAAuxBuffers",
- "kCGLPFAColorSize",
- "kCGLPFAAlphaSize",
- "kCGLPFADepthSize",
- "kCGLPFAStencilSize",
- "kCGLPFAAccumSize",
"kCGLPFAMinimumPolicy",
"kCGLPFAMaximumPolicy",
"kCGLPFAOffScreen",
"kCGLPFAFullScreen",
- "kCGLPFASampleBuffers",
- "kCGLPFASamples",
"kCGLPFAAuxDepthStencil",
"kCGLPFAColorFloat",
"kCGLPFAMultisample",
"kCGLPFASupersample",
"kCGLPFASampleAlpha",
- "kCGLPFARendererID",
"kCGLPFASingleRenderer",
"kCGLPFANoRecovery",
"kCGLPFAAccelerated",
"kCGLPFAClosestPolicy",
+ "kCGLPFARobust",
"kCGLPFABackingStore",
+ "kCGLPFAMPSafe",
"kCGLPFAWindow",
+ "kCGLPFAMultiScreen",
"kCGLPFACompliant",
- "kCGLPFADisplayMask",
"kCGLPFAPBuffer",
"kCGLPFARemotePBuffer",
"kCGLPFAAllowOfflineRenderers",
"kCGLPFAAcceleratedCompute",
+ "kCGLOGLPVersion_Legacy",
+ "kCGLOGLPVersion_3_2_Core"
+]
+
+CGLPixelFormatIntAttributes = [
+ "kCGLPFAColorSize",
+ "kCGLPFAAlphaSize",
+ "kCGLPFADepthSize",
+ "kCGLPFAStencilSize",
+ "kCGLPFAAccumSize",
+ "kCGLPFASampleBuffers",
+ "kCGLPFASamples",
+ "kCGLPFARendererID",
+ "kCGLPFADisplayMask",
"kCGLPFAOpenGLProfile",
- "kCGLPFAVirtualScreenCount",
- "kCGLPFARobust",
- "kCGLPFAMPSafe",
- "kCGLPFAMultiScreen",
+ "kCGLPFAVirtualScreenCount"
+]
- "kCGLOGLPVersion_Legacy",
- "kCGLOGLPVersion_3_2_Core",
-])
+CGLPixelFormatAttribute = Enum("CGLPixelFormatAttribute", CGLPixelFormatBoolAttributes + CGLPixelFormatIntAttributes)
+
+CGLPixelFormatAttribs = AttribArray(Const(CGLPixelFormatAttribute),
+ [(a, None) for a in CGLPixelFormatBoolAttributes] +
+ [(a, Int) for a in CGLPixelFormatIntAttributes])
CGLRendererProperty = Enum("CGLRendererProperty", [
"kCGLRPOffScreen",
Function(CGLContextObj, "CGLGetCurrentContext", []),
# OpenGL.h, OpenGL framework
- Function(CGLError, "CGLChoosePixelFormat", [(Array(Const(CGLPixelFormatAttribute), "_AttribList_size(attribs)"), "attribs"), Out(Pointer(CGLPixelFormatObj), "pix"), Out(Pointer(GLint), "npix")]),
+ Function(CGLError, "CGLChoosePixelFormat", [(CGLPixelFormatAttribs, "attribs"), Out(Pointer(CGLPixelFormatObj), "pix"), Out(Pointer(GLint), "npix")]),
Function(CGLError, "CGLDestroyPixelFormat", [(CGLPixelFormatObj, "pix")]),
Function(CGLError, "CGLDescribePixelFormat", [(CGLPixelFormatObj, "pix"), (GLint, "pix_num"), (CGLPixelFormatAttribute, "attrib"), Out(Pointer(GLint), "value")]),
Function(Void, "CGLReleasePixelFormat", [(CGLPixelFormatObj, "pix")]),
Function(CGLError, "CGLSetSurface", [(CGLContextObj, "ctx"), (CGSConnectionID, "cid"), (CGSWindowID, "wid"), (CGSSurfaceID, "sid")]),
Function(CGLError, "CGLGetSurface", [(CGLContextObj, "ctx"), (Pointer(CGSConnectionID), "cid"), (Pointer(CGSWindowID), "wid"), (Pointer(CGSSurfaceID), "sid")]),
Function(CGLError, "CGLUpdateContext", [(CGLContextObj, "ctx")]),
- # XXX: Confirm CGLOpenCLMuxLockDown
- Function(CGLError, "CGLOpenCLMuxLockDown", []),
- # FIXME: CGLAreContextsShared
- # FIXME: CGLBackDispatch
- # FIXME: CGLFrontDispatch
- # FIXME: CGLGetNextContext
- # FIXME: CGLRestoreDispatch
- # FIXME: CGLRestoreDispatchFunction
- # FIXME: CGLSelectDispatch
- # FIXME: CGLSelectDispatchBounded
- # FIXME: CGLSelectDispatchFunction
- # FIXME: CGLSetPBufferVolatileState
+ # XXX: All the following prototypes are little more than guesses
+ # TODO: A potentially simpler alternative would be to use the
+ # DYLD_INTERPOSE mechanism and only intercept the calls that we
+ # really care about
+ Function(CGLError, "CGLOpenCLMuxLockDown", [], internal=True),
+ Function(GLboolean, "CGLAreContextsShared", [(CGLContextObj, "ctx1"), (CGLContextObj, "ctx2")], internal=True),
+ Function(CGLContextObj, "CGLGetNextContext", [(CGLContextObj, "ctx")], internal=True),
+ Function(OpaquePointer(Void), "CGLFrontDispatch", [(CGLContextObj, "ctx")], internal=True),
+ Function(OpaquePointer(Void), "CGLBackDispatch", [(CGLContextObj, "ctx")], internal=True),
+ Function(Void, "CGLSelectDispatch", [(CGLContextObj, "ctx"), (OpaquePointer(Void), "dispatch")], internal=True),
+ Function(Void, "CGLSelectDispatchBounded", [(CGLContextObj, "ctx"), (OpaquePointer(Void), "dispatch"), (GLint, "size")], internal=True),
+ Function(Void, "CGLSelectDispatchFunction", [(CGLContextObj, "ctx"), (OpaquePointer(Void), "functionPtr"), (GLint, "functionId")], internal=True),
+ Function(Void, "CGLRestoreDispatch", [(CGLContextObj, "ctx")], internal=True),
+ Function(Void, "CGLRestoreDispatchFunction", [(CGLContextObj, "ctx"), (GLint, "functionId")], internal=True),
+ Function(CGLError, "CGLSetPBufferVolatileState", [(CGLPBufferObj, "pbuffer"), (OpaquePointer(Void), "state")], internal=True),
])