dri_glx.h revision 9a4748c9b04aa33bb54066d49bd27d4c9f0cf33e
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync/* $Id$ */
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync/** @file
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync *
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * VirtualBox guest OpenGL DRI GLX header
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync */
772269936494ffaddd0750ba9e28e805ba81398cvboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync/*
78f327ee942771169c65c91baf789fd10e72b01avboxsync * Copyright (C) 2009 Sun Microsystems, Inc.
78f327ee942771169c65c91baf789fd10e72b01avboxsync *
78f327ee942771169c65c91baf789fd10e72b01avboxsync * Sun Microsystems, Inc. confidential
78f327ee942771169c65c91baf789fd10e72b01avboxsync * All rights reserved
78f327ee942771169c65c91baf789fd10e72b01avboxsync */
78f327ee942771169c65c91baf789fd10e72b01avboxsync
78f327ee942771169c65c91baf789fd10e72b01avboxsync#ifndef ___CROPENGL_DRI_GLX_H
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#define ___CROPENGL_DRI_GLX_H
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#include "chromium.h"
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#include "stub.h"
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#if defined(VBOXOGL_FAKEDRI) || defined(VBOXOGL_DRI)
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync #define VBOXGLXTAG(Func) vboxstub_##Func
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync #define VBOXGLXENTRYTAG(Func) vbox_##Func
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync #define VBOXGLTAG(Func) cr_##Func
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#else
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync #define VBOXGLXTAG(Func) Func
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync #define VBOXGLXENTRYTAG(Func) Func
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync #define VBOXGLTAG(Func) Func
512b50d0f507b10c8c3fc445c12396cb19133d46vboxsync#endif
512b50d0f507b10c8c3fc445c12396cb19133d46vboxsync
512b50d0f507b10c8c3fc445c12396cb19133d46vboxsync#ifdef VBOXOGL_FAKEDRI
512b50d0f507b10c8c3fc445c12396cb19133d46vboxsyncextern DECLEXPORT(const char *) VBOXGLXTAG(glXGetDriverConfig)(const char *driverName);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXFreeMemoryMESA)(Display *dpy, int scrn, void *pointer);
512b50d0f507b10c8c3fc445c12396cb19133d46vboxsyncextern DECLEXPORT(GLXContext) VBOXGLXTAG(glXImportContextEXT)(Display *dpy, GLXContextID contextID);
512b50d0f507b10c8c3fc445c12396cb19133d46vboxsyncextern DECLEXPORT(GLXContextID) VBOXGLXTAG(glXGetContextIDEXT)(const GLXContext ctx);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(Bool) VBOXGLXTAG(glXMakeCurrentReadSGI)(Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
512b50d0f507b10c8c3fc445c12396cb19133d46vboxsyncextern DECLEXPORT(const char *) VBOXGLXTAG(glXGetScreenDriver)(Display *dpy, int scrNum);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(Display *) VBOXGLXTAG(glXGetCurrentDisplayEXT)(void);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXFreeContextEXT)(Display *dpy, GLXContext ctx);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync/*Mesa insternal*/
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(int) VBOXGLXTAG(glXQueryContextInfoEXT)(Display *dpy, GLXContext ctx);
0b5a8149b371102414e6ceec061e01b5da4d5353vboxsyncextern DECLEXPORT(void *) VBOXGLXTAG(glXAllocateMemoryMESA)(Display *dpy, int scrn,
0b5a8149b371102414e6ceec061e01b5da4d5353vboxsync size_t size, float readFreq,
0b5a8149b371102414e6ceec061e01b5da4d5353vboxsync float writeFreq, float priority);
0b5a8149b371102414e6ceec061e01b5da4d5353vboxsyncextern DECLEXPORT(GLuint) VBOXGLXTAG(glXGetMemoryOffsetMESA)(Display *dpy, int scrn, const void *pointer );
0b5a8149b371102414e6ceec061e01b5da4d5353vboxsyncextern DECLEXPORT(GLXPixmap) VBOXGLXTAG(glXCreateGLXPixmapMESA)(Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);
0b5a8149b371102414e6ceec061e01b5da4d5353vboxsync#endif
a9ceb1b76f2372385c1477c4bbdc5ceeb45f1d2cvboxsync
0b5a8149b371102414e6ceec061e01b5da4d5353vboxsync/*Common glX functions*/
0b5a8149b371102414e6ceec061e01b5da4d5353vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXCopyContext)( Display *dpy, GLXContext src, GLXContext dst,
0b5a8149b371102414e6ceec061e01b5da4d5353vboxsync#if defined(SunOS)
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncunsigned long mask);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#else
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncunsigned long mask);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#endif
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXUseXFont)(Font font, int first, int count, int listBase);
fed925e2b5fa0a79528be261fa0f4e44b3f615b0vboxsyncextern DECLEXPORT(CR_GLXFuncPtr) VBOXGLXTAG(glXGetProcAddress)(const GLubyte *name);
fed925e2b5fa0a79528be261fa0f4e44b3f615b0vboxsyncextern DECLEXPORT(Bool) VBOXGLXTAG(glXQueryExtension)(Display *dpy, int *errorBase, int *eventBase);
fed925e2b5fa0a79528be261fa0f4e44b3f615b0vboxsyncextern DECLEXPORT(Bool) VBOXGLXTAG(glXIsDirect)(Display *dpy, GLXContext ctx);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXPixmap) VBOXGLXTAG(glXCreateGLXPixmap)(Display *dpy, XVisualInfo *vis, Pixmap pixmap);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXSwapBuffers)(Display *dpy, GLXDrawable drawable);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXDrawable) VBOXGLXTAG(glXGetCurrentDrawable)(void);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXWaitGL)(void);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(Display *) VBOXGLXTAG(glXGetCurrentDisplay)(void);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(const char *) VBOXGLXTAG(glXQueryServerString)(Display *dpy, int screen, int name);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXContext) VBOXGLXTAG(glXCreateContext)(Display *dpy, XVisualInfo *vis, GLXContext share, Bool direct);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(int) VBOXGLXTAG(glXGetConfig)(Display *dpy, XVisualInfo *vis, int attrib, int *value);
574aed7e768c6d52536e267d996ce2831d80c63bvboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXWaitX)(void);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXContext) VBOXGLXTAG(glXGetCurrentContext)(void);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(const char *) VBOXGLXTAG(glXGetClientString)(Display *dpy, int name);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(Bool) VBOXGLXTAG(glXMakeCurrent)(Display *dpy, GLXDrawable drawable, GLXContext ctx);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXDestroyContext)(Display *dpy, GLXContext ctx);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(CR_GLXFuncPtr) VBOXGLXTAG(glXGetProcAddressARB)(const GLubyte *name);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXDestroyGLXPixmap)(Display *dpy, GLXPixmap pix);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(Bool) VBOXGLXTAG(glXQueryVersion)(Display *dpy, int *major, int *minor);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(XVisualInfo *) VBOXGLXTAG(glXChooseVisual)(Display *dpy, int screen, int *attribList);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(const char *) VBOXGLXTAG(glXQueryExtensionsString)(Display *dpy, int screen);
772269936494ffaddd0750ba9e28e805ba81398cvboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync/**
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * Set this to 1 if you want to build stub functions for the
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * GL_SGIX_pbuffer and GLX_SGIX_fbconfig extensions.
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * This used to be disabled, due to "messy compilation issues",
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * according to the earlier comment; but they're needed just
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * to resolve symbols for OpenInventor applications, and I
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * haven't found any reference to exactly what the "messy compilation
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * issues" are, so I'm re-enabling the code by default.
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync */
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#define GLX_EXTRAS 1
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#define GLX_SGIX_video_resize 1
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync/**
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * Prototypes, in case they're not in glx.h or glxext.h
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * Unfortunately, there's some inconsistency between the extension
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * specs, and the SGI, NVIDIA, XFree86 and common glxext.h header
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * files.
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync */
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#if defined(GLX_GLXEXT_VERSION)
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync/* match glxext.h, XFree86, Mesa */
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#define ATTRIB_TYPE const int
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#else
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#define ATTRIB_TYPE int
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#endif
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#if GLX_EXTRAS
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXPbufferSGIX) VBOXGLXTAG(glXCreateGLXPbufferSGIX)
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync(Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
3ba6e4f605cf69125a4be16cd3ded4a6a6ce763bvboxsyncextern DECLEXPORT(int) VBOXGLXTAG(glXQueryGLXPbufferSGIX)
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync(Display *dpy, GLXPbuffer pbuf, int attribute, unsigned int *value);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXFBConfigSGIX *) VBOXGLXTAG(glXChooseFBConfigSGIX)
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync(Display *dpy, int screen, int *attrib_list, int *nelements);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXDestroyGLXPbufferSGIX)(Display *dpy, GLXPbuffer pbuf);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXSelectEventSGIX)(Display *dpy, GLXDrawable drawable, unsigned long mask);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXGetSelectedEventSGIX)(Display *dpy, GLXDrawable drawable, unsigned long *mask);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXFBConfigSGIX) VBOXGLXTAG(glXGetFBConfigFromVisualSGIX)(Display *dpy, XVisualInfo *vis);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(XVisualInfo *) VBOXGLXTAG(glXGetVisualFromFBConfigSGIX)(Display *dpy, GLXFBConfig config);
3ba6e4f605cf69125a4be16cd3ded4a6a6ce763bvboxsyncextern DECLEXPORT(GLXContext) VBOXGLXTAG(glXCreateContextWithConfigSGIX)
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync(Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXPixmap) VBOXGLXTAG(glXCreateGLXPixmapWithConfigSGIX)(Display *dpy, GLXFBConfig config, Pixmap pixmap);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(int) VBOXGLXTAG(glXGetFBConfigAttribSGIX)(Display *dpy, GLXFBConfig config, int attribute, int *value);
1855fbac7276892a8adda221c3319264077f4969vboxsync
1855fbac7276892a8adda221c3319264077f4969vboxsync/*
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync * GLX 1.3 functions
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync */
fed925e2b5fa0a79528be261fa0f4e44b3f615b0vboxsyncextern DECLEXPORT(GLXFBConfig *) VBOXGLXTAG(glXChooseFBConfig)(Display *dpy, int screen, ATTRIB_TYPE *attrib_list, int *nelements);
fed925e2b5fa0a79528be261fa0f4e44b3f615b0vboxsyncextern DECLEXPORT(GLXPbuffer) VBOXGLXTAG(glXCreatePbuffer)(Display *dpy, GLXFBConfig config, ATTRIB_TYPE *attrib_list);
fed925e2b5fa0a79528be261fa0f4e44b3f615b0vboxsyncextern DECLEXPORT(GLXPixmap) VBOXGLXTAG(glXCreatePixmap)(Display *dpy, GLXFBConfig config, Pixmap pixmap, const ATTRIB_TYPE *attrib_list);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXWindow) VBOXGLXTAG(glXCreateWindow)(Display *dpy, GLXFBConfig config, Window win, ATTRIB_TYPE *attrib_list);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXContext) VBOXGLXTAG(glXCreateNewContext)
9861c0b65e277a32017144a858b6fe83638ad1b6vboxsync(Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXDestroyPbuffer)(Display *dpy, GLXPbuffer pbuf);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXDestroyPixmap)(Display *dpy, GLXPixmap pixmap);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXDestroyWindow)(Display *dpy, GLXWindow win);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXDrawable) VBOXGLXTAG(glXGetCurrentReadDrawable)(void);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(int) VBOXGLXTAG(glXGetFBConfigAttrib)(Display *dpy, GLXFBConfig config, int attribute, int *value);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(GLXFBConfig *) VBOXGLXTAG(glXGetFBConfigs)(Display *dpy, int screen, int *nelements);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXGetSelectedEvent)(Display *dpy, GLXDrawable draw, unsigned long *event_mask);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(XVisualInfo *) VBOXGLXTAG(glXGetVisualFromFBConfig)(Display *dpy, GLXFBConfig config);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(Bool) VBOXGLXTAG(glXMakeContextCurrent)(Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(int) VBOXGLXTAG(glXQueryContext)(Display *dpy, GLXContext ctx, int attribute, int *value);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXQueryDrawable)(Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXSelectEvent)(Display *dpy, GLXDrawable draw, unsigned long event_mask);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#ifdef CR_EXT_texture_from_pixmap
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXBindTexImageEXT)(Display *dpy, GLXDrawable draw, int buffer, const int *attrib_list);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXReleaseTexImageEXT)(Display *dpy, GLXDrawable draw, int buffer);
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#endif
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#endif /* GLX_EXTRAS */
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync#endif //___CROPENGL_DRI_GLX_H
8bb6eae3e57f347417428c80dacf9d9a460b2a97vboxsync