renderspu.h revision a79e8ee6782877eb8d4c8363875379d49b23acd8
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync/* Copyright (c) 2001, Stanford University
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync * All rights reserved.
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync * See the file LICENSE.txt for information on redistributing this software.
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync /* Event classes */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync /* Event kinds */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncpascal OSStatus windowEvtHndlr(EventHandlerCallRef myHandler, EventRef event, void* userData);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync#endif /* RT_OS_DARWIN */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync * Visual info
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsynctypedef struct {
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync// HDC device_context;
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync#endif /* GLX_VERSION_1_3 */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync * Window info
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsynctypedef struct {
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync GLboolean everCurrent; /**< has this window ever been bound? */
ea4433aedd4105e6599e57e0c5f6cb32a68e963cvboxsync WindowRef nativeWindow; /**< for render_to_app_window */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync /* unsigned long context_ptr; */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync NativeNSViewRef nativeWindow; /**< for render_to_app_window */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync Window nativeWindow; /**< for render_to_app_window */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync Window appWindow; /**< Same as nativeWindow but for garbage collections purposes */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync GLubyte *buffer; /**< for rendering to off screen buffer. */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync * Context Info
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsynctypedef struct _ContextInfo {
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync * Barrier info
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsynctypedef struct {
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync * Renderspu state info
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsynctypedef struct {
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync unsigned int window_id;
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync unsigned int context_id;
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync /** config options */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync#if defined(GLX)
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync crOpenGLInterface ws; /**< Window System interface */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync /** Off screen rendering hooks. */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync OSMesaContext (*OSMesaCreateContext)( GLenum format, OSMesaContext sharelist );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync GLboolean (* OSMesaMakeCurrent)( OSMesaContext ctx,
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync#endif /* RT_OS_DARWIN */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync/* Asks window thread to create new window.
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync msg.lParam - holds pointer to CREATESTRUCT structure
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync note that lpCreateParams is used to specify address to store handle of created window
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync msg.wParam - unused, should be NULL
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync/* Asks window thread to destroy previously created window.
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync msg.lParam - holds pointer to RENDERSPU_VBOX_WINDOW_DESTROY structure
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync msg.wParam - unused, should be NULL
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync/* @todo remove this hack */
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync#define GET_CONTEXT(T) ContextInfo *T = (ContextInfo *) crGetTSD(&_RenderTSD)
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync#define GET_CONTEXT(T) ContextInfo *T = render_spu.currentContext
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspuSetVBoxConfiguration( RenderSPU *spu );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspuMakeVisString( GLbitfield visAttribs, char *s );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern VisualInfo *renderspuFindVisual(const char *displayName, GLbitfield visAttribs );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern GLboolean renderspu_SystemInitVisual( VisualInfo *visual );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern GLboolean renderspu_SystemCreateContext( VisualInfo *visual, ContextInfo *context, ContextInfo *sharedContext );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemDestroyContext( ContextInfo *context );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern GLboolean renderspu_SystemCreateWindow( VisualInfo *visual, GLboolean showIt, WindowInfo *window );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern GLboolean renderspu_SystemVBoxCreateWindow( VisualInfo *visual, GLboolean showIt, WindowInfo *window );
ea4433aedd4105e6599e57e0c5f6cb32a68e963cvboxsyncextern void renderspu_SystemDestroyWindow( WindowInfo *window );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemWindowSize( WindowInfo *window, GLint w, GLint h );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemGetWindowGeometry( WindowInfo *window, GLint *x, GLint *y, GLint *w, GLint *h );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemGetMaxWindowSize( WindowInfo *window, GLint *w, GLint *h );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemWindowPosition( WindowInfo *window, GLint x, GLint y );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemWindowVisibleRegion(WindowInfo *window, GLint cRects, GLint* pRects);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemWindowApplyVisibleRegion(WindowInfo *window);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemSetRootVisibleRegion(GLint cRects, GLint *pRects);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemBindFramebufferEXT(GLenum target, GLuint framebuffer);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemGetIntegerv(GLenum pname, GLint *params);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemReadBuffer(GLenum mode);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemDrawBuffer(GLenum mode);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemShowWindow( WindowInfo *window, GLboolean showIt );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemMakeCurrent( WindowInfo *window, GLint windowInfor, ContextInfo *context );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemSwapBuffers( WindowInfo *window, GLint flags );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_SystemReparentWindow(WindowInfo *window);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void renderspu_GCWindow(void);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern int renderspuCreateFunctions( SPUNamedFunctionTable table[] );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern GLint RENDER_APIENTRY renderspuWindowCreate( const char *dpyName, GLint visBits );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncvoid RENDER_APIENTRY renderspuWindowDestroy( GLint win );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern GLint RENDER_APIENTRY renderspuCreateContext( const char *dpyname, GLint visBits, GLint shareCtx );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void RENDER_APIENTRY renderspuMakeCurrent(GLint crWindow, GLint nativeWindow, GLint ctx);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern void RENDER_APIENTRY renderspuSwapBuffers( GLint window, GLint flags );
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncextern "C" {
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncDECLEXPORT(void) renderspuSetWindowId(uint64_t winId);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncDECLEXPORT(void) renderspuSetRootVisibleRegion(GLint cRects, GLint *pRects);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsyncDECLEXPORT(void) renderspuReparentWindow(GLint window);
65c72795ab90d3daefa759b716fbb5c6352c7a56vboxsync#endif /* CR_RENDERSPU_H */