| ########################################################################## |
| # |
| # Copyright 2008-2009 VMware, Inc. |
| # All Rights Reserved. |
| # |
| # Permission is hereby granted, free of charge, to any person obtaining a copy |
| # of this software and associated documentation files (the "Software"), to deal |
| # in the Software without restriction, including without limitation the rights |
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| # copies of the Software, and to permit persons to whom the Software is |
| # furnished to do so, subject to the following conditions: |
| # |
| # The above copyright notice and this permission notice shall be included in |
| # all copies or substantial portions of the Software. |
| # |
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| # THE SOFTWARE. |
| # |
| ##########################################################################/ |
| |
| """CGL API description. |
| |
| http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CGL_OpenGL/Reference/reference.html |
| """ |
| |
| |
| from .stdapi import * |
| from .glapi import * |
| from .glapi import glapi |
| |
| IOSurfaceRef = Opaque("IOSurfaceRef") |
| CGLContextObj = Opaque("CGLContextObj") |
| CGLPixelFormatObj = Opaque("CGLPixelFormatObj") |
| CGLRendererInfoObj = Opaque("CGLRendererInfoObj") |
| CGLPBufferObj = Opaque("CGLPBufferObj") |
| CGLShareGroup = Opaque("CGLShareGroup") |
| CGLShareGroupObj = Opaque("CGLShareGroupObj") |
| CGSConnectionID = Opaque("CGSConnectionID") |
| CGSWindowID = Alias("CGSWindowID", Int) |
| CGSSurfaceID = Alias("CGSSurfaceID", Int) |
| |
| CGLOpenGLProfile = Enum("CGLOpenGLProfile", [ |
| 'kCGLOGLPVersion_Legacy', |
| 'kCGLOGLPVersion_3_2_Core', |
| #'kCGLOGLPVersion_GL3_Core', # Same as kCGLOGLPVersion_3_2_Core |
| 'kCGLOGLPVersion_GL4_Core', |
| ]) |
| |
| CGLPixelFormatAttributes = [ |
| ("kCGLPFAAllRenderers", None), |
| ("kCGLPFATripleBuffer", None), |
| ("kCGLPFADoubleBuffer", None), |
| ("kCGLPFAStereo", None), |
| ("kCGLPFAColorSize", Int), |
| ("kCGLPFAAlphaSize", Int), |
| ("kCGLPFADepthSize", Int), |
| ("kCGLPFAStencilSize", Int), |
| ("kCGLPFAMinimumPolicy", None), |
| ("kCGLPFAMaximumPolicy", None), |
| ("kCGLPFASampleBuffers", Int), |
| ("kCGLPFASamples", Int), |
| ("kCGLPFAColorFloat", None), |
| ("kCGLPFAMultisample", None), |
| ("kCGLPFASupersample", None), |
| ("kCGLPFASampleAlpha", None), |
| ("kCGLPFARendererID", Int), |
| ("kCGLPFANoRecovery", None), |
| ("kCGLPFAAccelerated", None), |
| ("kCGLPFAClosestPolicy", None), |
| ("kCGLPFABackingStore", None), |
| ("kCGLPFABackingVolatile", None), |
| ("kCGLPFADisplayMask", Int), |
| ("kCGLPFAAllowOfflineRenderers", None), |
| ("kCGLPFAAcceleratedCompute", None), |
| ("kCGLPFAOpenGLProfile", CGLOpenGLProfile), |
| ("kCGLPFASupportsAutomaticGraphicsSwitching", None), |
| ("kCGLPFAVirtualScreenCount", Int), |
| ("kCGLPFAAuxBuffers", Int), |
| ("kCGLPFAAccumSize", Int), |
| ("kCGLPFAAuxDepthStencil", None), |
| ("kCGLPFAOffScreen", None), |
| ("kCGLPFAWindow", None), |
| ("kCGLPFACompliant", None), |
| ("kCGLPFAPBuffer", None), |
| ("kCGLPFARemotePBuffer", None), |
| ("kCGLPFASingleRenderer", None), |
| ("kCGLPFARobust", None), |
| ("kCGLPFAMPSafe", None), |
| ("kCGLPFAMultiScreen", None), |
| ("kCGLPFAFullScreen", None), |
| (1262, None), # XXX: Undocumented, but looks like a boolean |
| ] |
| |
| CGLPixelFormatAttribute = Enum("CGLPixelFormatAttribute", |
| [attrib for attrib, _ in CGLPixelFormatAttributes if isinstance(attrib, str)] |
| ) |
| |
| CGLPixelFormatAttribs = AttribArray( |
| Const(CGLPixelFormatAttribute), |
| CGLPixelFormatAttributes |
| ) |
| |
| CGLRendererProperty = Enum("CGLRendererProperty", [ |
| "kCGLRPOffScreen", |
| "kCGLRPFullScreen", |
| "kCGLRPRendererID", |
| "kCGLRPAccelerated", |
| "kCGLRPRobust", |
| "kCGLRPBackingStore", |
| "kCGLRPMPSafe", |
| "kCGLRPWindow", |
| "kCGLRPMultiScreen", |
| "kCGLRPCompliant", |
| "kCGLRPDisplayMask", |
| "kCGLRPBufferModes", |
| "kCGLRPColorModes", |
| "kCGLRPAccumModes", |
| "kCGLRPDepthModes", |
| "kCGLRPStencilModes", |
| "kCGLRPMaxAuxBuffers", |
| "kCGLRPMaxSampleBuffers", |
| "kCGLRPMaxSamples", |
| "kCGLRPSampleModes", |
| "kCGLRPSampleAlpha", |
| "kCGLRPVideoMemory", |
| "kCGLRPTextureMemory", |
| "kCGLRPGPUVertProcCapable", |
| "kCGLRPGPUFragProcCapable", |
| "kCGLRPRendererCount", |
| "kCGLRPOnline", |
| "kCGLRPAcceleratedCompute", |
| "kCGLRPVideoMemoryMegabytes", |
| "kCGLRPTextureMemoryMegabytes", |
| "kCGLRPMajorGLVersion", |
| ]) |
| |
| CGLContextEnable = Enum("CGLContextEnable", [ |
| "kCGLCESwapRectangle", |
| "kCGLCESwapLimit", |
| "kCGLCERasterization", |
| "kCGLCEStateValidation", |
| "kCGLCESurfaceBackingSize", |
| "kCGLCEDisplayListOptimization", |
| "kCGLCEMPEngine", |
| "kCGLCECrashOnRemovedFunctions", |
| ]) |
| |
| CGLContextParameter = Enum("CGLContextParameter", [ |
| "kCGLCPSwapRectangle", |
| "kCGLCPSwapInterval", |
| "kCGLCPDispatchTableSize", |
| "kCGLCPClientStorage", |
| "kCGLCPSurfaceTexture", |
| "kCGLCPSurfaceOrder", |
| "kCGLCPSurfaceOpacity", |
| "kCGLCPSurfaceBackingSize", |
| "kCGLCPSurfaceSurfaceVolatile", |
| "kCGLCPReclaimResources", |
| "kCGLCPCurrentRendererID", |
| "kCGLCPGPUVertexProcessing", |
| "kCGLCPGPUFragmentProcessing", |
| "kCGLCPHasDrawable", |
| "kCGLCPMPSwapsInFlight", |
| # CGLProfiler.h |
| "kCGLCPComment", |
| "kCGLCPDumpState", |
| "kCGLCPEnableForceFlush", |
| ]) |
| |
| CGLGlobalOption = Enum("CGLGlobalOption", [ |
| "kCGLGOFormatCacheSize", |
| "kCGLGOClearFormatCache", |
| "kCGLGORetainRenderers", |
| "kCGLGOResetLibrary", |
| "kCGLGOUseErrorHandler", |
| "kCGLGOUseBuildCache", |
| # CGLProfiler.h |
| "kCGLGOComment", |
| "kCGLGOEnableFunctionTrace", |
| "kCGLGOEnableFunctionStatistics", |
| "kCGLGOResetFunctionTrace", |
| "kCGLGOPageBreak", |
| "kCGLGOResetFunctionStatistics", |
| "kCGLGOEnableDebugAttach", |
| "kCGLGOHideObjects", |
| "kCGLGOEnableBreakpoint", |
| "kCGLGOForceSlowRenderingPath", |
| "kCGLGODisableImmediateRenderPath", |
| "kCGLGODisableCVARenderPath", |
| "kCGLGODisableVARRenderPath", |
| "kCGLGOForceWireframeRendering", |
| "kCGLGOSubmitOnImmediateRenderCommand", |
| "kCGLGOSubmitOnCVARenderCommand", |
| "kCGLGOSubmitOnVAORenderCommand", |
| "kCGLGOSubmitOnClearCommand", |
| "kCGLGOForceSoftwareTransformLighting", |
| "kCGLGOForceSoftwareTexgen", |
| "kCGLGOForceSoftwareTRUFORM_ATI", |
| "kCGLGOForceSoftwareVertexShaders", |
| "kCGLGODisableFragmentShaders_ATI", |
| "kCGLGODisableTexturing", |
| "kCGLGOOutlineTexture", |
| "kCGLGOOutlineTextureColor", |
| "kCGLGOForceSlowBitmapPath", |
| "kCGLGODisableBitmap", |
| "kCGLGOForceSlowReadPixelsPath", |
| "kCGLGODisableReadPixels", |
| "kCGLGOOutlineReadPixelsBuffer", |
| "kCGLGOOutlineReadPixelsBufferColor", |
| "kCGLGOForceSlowDrawPixelsPath", |
| "kCGLGODisableDrawPixels", |
| "kCGLGOOutlineDrawPixelsBuffer", |
| "kCGLGOOutlineDrawPixelsBufferColor", |
| "kCGLGOForceSlowCopyPixelsPath", |
| "kCGLGODisableCopyPixels", |
| "kCGLGOOutlineCopyPixelsBuffer", |
| "kCGLGOOutlineCopyPixelsBufferColor", |
| "kCGLGOMakeAllGLObjectsRequireUpdate", |
| "kCGLGOMakeAllGLStateRequireUpdate", |
| ]) |
| |
| CGLError = Enum("CGLError", [ |
| "kCGLNoError", |
| "kCGLBadAttribute", |
| "kCGLBadProperty", |
| "kCGLBadPixelFormat", |
| "kCGLBadRendererInfo", |
| "kCGLBadContext", |
| "kCGLBadDrawable", |
| "kCGLBadDisplay", |
| "kCGLBadState", |
| "kCGLBadValue", |
| "kCGLBadMatch", |
| "kCGLBadEnumeration", |
| "kCGLBadOffScreen", |
| "kCGLBadFullScreen", |
| "kCGLBadWindow", |
| "kCGLBadAddress", |
| "kCGLBadCodeModule", |
| "kCGLBadAlloc", |
| "kCGLBadConnection", |
| ]) |
| |
| CGLContextObj = Opaque("CGLContextObj") |
| |
| cglapi = Module("CGL") |
| |
| cglapi.addFunctions([ |
| # CGLCurrent.h, libGL.dylib |
| Function(CGLError, "CGLSetCurrentContext", [(CGLContextObj, "ctx")]), |
| Function(CGLContextObj, "CGLGetCurrentContext", []), |
| |
| # OpenGL.h, OpenGL framework |
| 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")], sideeffects=False), |
| Function(Void, "CGLReleasePixelFormat", [(CGLPixelFormatObj, "pix")]), |
| Function(CGLPixelFormatObj, "CGLRetainPixelFormat", [(CGLPixelFormatObj, "pix")]), |
| Function(GLuint, "CGLGetPixelFormatRetainCount", [(CGLPixelFormatObj, "pix")]), |
| Function(CGLError, "CGLQueryRendererInfo", [(GLuint, "display_mask"), Out(Pointer(CGLRendererInfoObj), "rend"), Out(Pointer(GLint), "nrend")]), |
| Function(CGLError, "CGLDestroyRendererInfo", [(CGLRendererInfoObj, "rend")]), |
| Function(CGLError, "CGLDescribeRenderer", [(CGLRendererInfoObj, "rend"), (GLint, "rend_num"), (CGLRendererProperty, "prop"), Out(Pointer(GLint), "value")], sideeffects=False), |
| Function(CGLError, "CGLCreateContext", [(CGLPixelFormatObj, "pix"), (CGLContextObj, "share"), Out(Pointer(CGLContextObj), "ctx")]), |
| Function(CGLError, "CGLDestroyContext", [(CGLContextObj, "ctx")]), |
| Function(CGLError, "CGLCopyContext", [(CGLContextObj, "src"), (CGLContextObj, "dst"), (GLbitfield, "mask")]), |
| Function(CGLContextObj, "CGLRetainContext", [(CGLContextObj, "ctx")]), |
| Function(Void, "CGLReleaseContext", [(CGLContextObj, "ctx")]), |
| Function(GLuint, "CGLGetContextRetainCount", [(CGLContextObj, "ctx")]), |
| Function(CGLPixelFormatObj, "CGLGetPixelFormat", [(CGLContextObj, "ctx")]), |
| Function(CGLError, "CGLCreatePBuffer", [(GLsizei, "width"), (GLsizei, "height"), (GLenum, "target"), (GLenum, "internalFormat"), (GLint, "max_level"), Out(Pointer(CGLPBufferObj), "pbuffer")]), |
| Function(CGLError, "CGLDestroyPBuffer", [(CGLPBufferObj, "pbuffer")]), |
| Function(CGLError, "CGLDescribePBuffer", [(CGLPBufferObj, "obj"), Out(Pointer(GLsizei), "width"), Out(Pointer(GLsizei), "height"), Out(Pointer(GLenum), "target"), Out(Pointer(GLenum), "internalFormat"), Out(Pointer(GLint), "mipmap")]), |
| Function(CGLError, "CGLTexImagePBuffer", [(CGLContextObj, "ctx"), (CGLPBufferObj, "pbuffer"), (GLenum, "source")]), |
| Function(CGLPBufferObj, "CGLRetainPBuffer", [(CGLPBufferObj, "pbuffer")]), |
| Function(Void, "CGLReleasePBuffer", [(CGLPBufferObj, "pbuffer")]), |
| Function(GLuint, "CGLGetPBufferRetainCount", [(CGLPBufferObj, "pbuffer")]), |
| Function(CGLError, "CGLSetOffScreen", [(CGLContextObj, "ctx"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "rowbytes"), (OpaquePointer(Void), "baseaddr")]), |
| Function(CGLError, "CGLGetOffScreen", [(CGLContextObj, "ctx"), Out(Pointer(GLsizei), "width"), Out(Pointer(GLsizei), "height"), Out(Pointer(GLint), "rowbytes"), Out(Pointer(OpaquePointer(Void)), "baseaddr")]), |
| Function(CGLError, "CGLSetFullScreen", [(CGLContextObj, "ctx")]), |
| Function(CGLError, "CGLSetFullScreenOnDisplay", [(CGLContextObj, "ctx"), (GLuint, "display_mask")]), |
| Function(CGLError, "CGLSetPBuffer", [(CGLContextObj, "ctx"), (CGLPBufferObj, "pbuffer"), (GLenum, "face"), (GLint, "level"), (GLint, "screen")]), |
| Function(CGLError, "CGLGetPBuffer", [(CGLContextObj, "ctx"), Out(Pointer(CGLPBufferObj), "pbuffer"), Out(Pointer(GLenum), "face"), Out(Pointer(GLint), "level"), Out(Pointer(GLint), "screen")]), |
| Function(CGLError, "CGLClearDrawable", [(CGLContextObj, "ctx")]), |
| Function(CGLError, "CGLFlushDrawable", [(CGLContextObj, "ctx")]), |
| Function(CGLError, "CGLEnable", [(CGLContextObj, "ctx"), (CGLContextEnable, "pname")]), |
| Function(CGLError, "CGLDisable", [(CGLContextObj, "ctx"), (CGLContextEnable, "pname")]), |
| Function(CGLError, "CGLIsEnabled", [(CGLContextObj, "ctx"), (CGLContextEnable, "pname"), Out(Pointer(GLint), "enable")], sideeffects=False), |
| Function(CGLError, "CGLSetParameter", [(CGLContextObj, "ctx"), (CGLContextParameter, "pname"), (Array(Const(GLint), 1), "params")]), |
| Function(CGLError, "CGLGetParameter", [(CGLContextObj, "ctx"), (CGLContextParameter, "pname"), Out(Array(GLint, 1), "params")], sideeffects=False), |
| Function(CGLError, "CGLSetVirtualScreen", [(CGLContextObj, "ctx"), (GLint, "screen")]), |
| Function(CGLError, "CGLGetVirtualScreen", [(CGLContextObj, "ctx"), Out(Pointer(GLint), "screen")], sideeffects=False), |
| Function(CGLError, "CGLSetGlobalOption", [(CGLGlobalOption, "pname"), (OpaquePointer(Const(GLint)), "params")]), |
| Function(CGLError, "CGLGetGlobalOption", [(CGLGlobalOption, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False), |
| Function(CGLError, "CGLSetOption", [(CGLGlobalOption, "pname"), (GLint, "param")]), |
| Function(CGLError, "CGLGetOption", [(CGLGlobalOption, "pname"), Out(Pointer(GLint), "param")], sideeffects=False), |
| Function(CGLError, "CGLLockContext", [(CGLContextObj, "ctx")]), |
| Function(CGLError, "CGLUnlockContext", [(CGLContextObj, "ctx")]), |
| Function(Void, "CGLGetVersion", [Out(Pointer(GLint), "majorvers"), Out(Pointer(GLint), "minorvers")], sideeffects=False), |
| Function(ConstCString, "CGLErrorString", [(CGLError, "error")], sideeffects=False), |
| |
| # CGLIOSurface.h, OpenGL framework |
| Function(CGLError, "CGLTexImageIOSurface2D", [(CGLContextObj, "ctx"), (GLenum, "target"), (GLenum, "internal_format"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (IOSurfaceRef, "ioSurface"), (GLuint, "plane")]), |
| |
| # CGLDevice.h, OpenGL framework |
| Function(CGLShareGroupObj, "CGLGetShareGroup", [(CGLContextObj, "ctx")]), |
| |
| # Undocumented, OpenGL framework |
| Function(CGLError, "CGLSetSurface", [(CGLContextObj, "ctx"), (CGSConnectionID, "cid"), (CGSWindowID, "wid"), (CGSSurfaceID, "sid")]), |
| Function(CGLError, "CGLGetSurface", [(CGLContextObj, "ctx"), Out(Pointer(CGSConnectionID), "cid"), Out(Pointer(CGSWindowID), "wid"), Out(Pointer(CGSSurfaceID), "sid")]), |
| Function(CGLError, "CGLUpdateContext", [(CGLContextObj, "ctx")]), |
| # 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), |
| ]) |
| |