dri_glx.h revision ad27e1d5e48ca41245120c331cc88b50464813ce
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* $Id$ */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/** @file
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * VirtualBox guest OpenGL DRI GLX header
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2009 Oracle Corporation
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * available from http://www.virtualbox.org. This file is free software;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * you can redistribute it and/or modify it under the terms of the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * General Public License (GPL) as published by the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync#ifndef ___CROPENGL_DRI_GLX_H
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync#define ___CROPENGL_DRI_GLX_H
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync#include "chromium.h"
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync#include "stub.h"
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync#if defined(VBOXOGL_FAKEDRI) || defined(VBOXOGL_DRI)
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync #define VBOXGLXTAG(Func) vboxstub_##Func
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync #define VBOXGLXENTRYTAG(Func) vbox_##Func
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync #define VBOXGLTAG(Func) cr_##Func
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync #define VBOXGLXTAG(Func) Func
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync #define VBOXGLXENTRYTAG(Func) Func
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync #define VBOXGLTAG(Func) Func
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef VBOXOGL_FAKEDRI
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(const char *) VBOXGLXTAG(glXGetDriverConfig)(const char *driverName);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXFreeMemoryMESA)(Display *dpy, int scrn, void *pointer);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(GLXContext) VBOXGLXTAG(glXImportContextEXT)(Display *dpy, GLXContextID contextID);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(GLXContextID) VBOXGLXTAG(glXGetContextIDEXT)(const GLXContext ctx);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(Bool) VBOXGLXTAG(glXMakeCurrentReadSGI)(Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(const char *) VBOXGLXTAG(glXGetScreenDriver)(Display *dpy, int scrNum);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(Display *) VBOXGLXTAG(glXGetCurrentDisplayEXT)(void);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXFreeContextEXT)(Display *dpy, GLXContext ctx);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*Mesa internal*/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(int) VBOXGLXTAG(glXQueryContextInfoEXT)(Display *dpy, GLXContext ctx);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(void *) VBOXGLXTAG(glXAllocateMemoryMESA)(Display *dpy, int scrn,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync size_t size, float readFreq,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync float writeFreq, float priority);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(GLuint) VBOXGLXTAG(glXGetMemoryOffsetMESA)(Display *dpy, int scrn, const void *pointer );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(GLXPixmap) VBOXGLXTAG(glXCreateGLXPixmapMESA)(Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*Common glX functions*/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXCopyContext)( Display *dpy, GLXContext src, GLXContext dst,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if defined(SunOS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncunsigned long mask);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncunsigned long mask);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXUseXFont)(Font font, int first, int count, int listBase);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(CR_GLXFuncPtr) VBOXGLXTAG(glXGetProcAddress)(const GLubyte *name);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(Bool) VBOXGLXTAG(glXQueryExtension)(Display *dpy, int *errorBase, int *eventBase);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(Bool) VBOXGLXTAG(glXIsDirect)(Display *dpy, GLXContext ctx);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(GLXPixmap) VBOXGLXTAG(glXCreateGLXPixmap)(Display *dpy, XVisualInfo *vis, Pixmap pixmap);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXSwapBuffers)(Display *dpy, GLXDrawable drawable);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(GLXDrawable) VBOXGLXTAG(glXGetCurrentDrawable)(void);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXWaitGL)(void);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(Display *) VBOXGLXTAG(glXGetCurrentDisplay)(void);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(const char *) VBOXGLXTAG(glXQueryServerString)(Display *dpy, int screen, int name);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(GLXContext) VBOXGLXTAG(glXCreateContext)(Display *dpy, XVisualInfo *vis, GLXContext share, Bool direct);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(int) VBOXGLXTAG(glXGetConfig)(Display *dpy, XVisualInfo *vis, int attrib, int *value);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXWaitX)(void);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(GLXContext) VBOXGLXTAG(glXGetCurrentContext)(void);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(const char *) VBOXGLXTAG(glXGetClientString)(Display *dpy, int name);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(Bool) VBOXGLXTAG(glXMakeCurrent)(Display *dpy, GLXDrawable drawable, GLXContext ctx);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXDestroyContext)(Display *dpy, GLXContext ctx);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(CR_GLXFuncPtr) VBOXGLXTAG(glXGetProcAddressARB)(const GLubyte *name);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(void) VBOXGLXTAG(glXDestroyGLXPixmap)(Display *dpy, GLXPixmap pix);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(Bool) VBOXGLXTAG(glXQueryVersion)(Display *dpy, int *major, int *minor);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(XVisualInfo *) VBOXGLXTAG(glXChooseVisual)(Display *dpy, int screen, int *attribList);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern DECLEXPORT(const char *) VBOXGLXTAG(glXQueryExtensionsString)(Display *dpy, int screen);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/**
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Set this to 1 if you want to build stub functions for the
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * GL_SGIX_pbuffer and GLX_SGIX_fbconfig extensions.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This used to be disabled, due to "messy compilation issues",
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * according to the earlier comment; but they're needed just
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * to resolve symbols for OpenInventor applications, and I
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * haven't found any reference to exactly what the "messy compilation
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * issues" are, so I'm re-enabling the code by default.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
#define GLX_EXTRAS 1
#define GLX_SGIX_video_resize 1
/**
* Prototypes, in case they're not in glx.h or glxext.h
* Unfortunately, there's some inconsistency between the extension
* specs, and the SGI, NVIDIA, XFree86 and common glxext.h header
* files.
*/
#if defined(GLX_GLXEXT_VERSION)
/* match glxext.h, XFree86, Mesa */
#define ATTRIB_TYPE const int
#else
#define ATTRIB_TYPE int
#endif
#if GLX_EXTRAS
extern DECLEXPORT(GLXPbufferSGIX) VBOXGLXTAG(glXCreateGLXPbufferSGIX)
(Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list);
extern DECLEXPORT(int) VBOXGLXTAG(glXQueryGLXPbufferSGIX)
(Display *dpy, GLXPbuffer pbuf, int attribute, unsigned int *value);
extern DECLEXPORT(GLXFBConfigSGIX *) VBOXGLXTAG(glXChooseFBConfigSGIX)
(Display *dpy, int screen, int *attrib_list, int *nelements);
extern DECLEXPORT(void) VBOXGLXTAG(glXDestroyGLXPbufferSGIX)(Display *dpy, GLXPbuffer pbuf);
extern DECLEXPORT(void) VBOXGLXTAG(glXSelectEventSGIX)(Display *dpy, GLXDrawable drawable, unsigned long mask);
extern DECLEXPORT(void) VBOXGLXTAG(glXGetSelectedEventSGIX)(Display *dpy, GLXDrawable drawable, unsigned long *mask);
extern DECLEXPORT(GLXFBConfigSGIX) VBOXGLXTAG(glXGetFBConfigFromVisualSGIX)(Display *dpy, XVisualInfo *vis);
extern DECLEXPORT(XVisualInfo *) VBOXGLXTAG(glXGetVisualFromFBConfigSGIX)(Display *dpy, GLXFBConfig config);
extern DECLEXPORT(GLXContext) VBOXGLXTAG(glXCreateContextWithConfigSGIX)
(Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
extern DECLEXPORT(GLXPixmap) VBOXGLXTAG(glXCreateGLXPixmapWithConfigSGIX)(Display *dpy, GLXFBConfig config, Pixmap pixmap);
extern DECLEXPORT(int) VBOXGLXTAG(glXGetFBConfigAttribSGIX)(Display *dpy, GLXFBConfig config, int attribute, int *value);
/*
* GLX 1.3 functions
*/
extern DECLEXPORT(GLXFBConfig *) VBOXGLXTAG(glXChooseFBConfig)(Display *dpy, int screen, ATTRIB_TYPE *attrib_list, int *nelements);
extern DECLEXPORT(GLXPbuffer) VBOXGLXTAG(glXCreatePbuffer)(Display *dpy, GLXFBConfig config, ATTRIB_TYPE *attrib_list);
extern DECLEXPORT(GLXPixmap) VBOXGLXTAG(glXCreatePixmap)(Display *dpy, GLXFBConfig config, Pixmap pixmap, const ATTRIB_TYPE *attrib_list);
extern DECLEXPORT(GLXWindow) VBOXGLXTAG(glXCreateWindow)(Display *dpy, GLXFBConfig config, Window win, ATTRIB_TYPE *attrib_list);
extern DECLEXPORT(GLXContext) VBOXGLXTAG(glXCreateNewContext)
(Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
extern DECLEXPORT(void) VBOXGLXTAG(glXDestroyPbuffer)(Display *dpy, GLXPbuffer pbuf);
extern DECLEXPORT(void) VBOXGLXTAG(glXDestroyPixmap)(Display *dpy, GLXPixmap pixmap);
extern DECLEXPORT(void) VBOXGLXTAG(glXDestroyWindow)(Display *dpy, GLXWindow win);
extern DECLEXPORT(GLXDrawable) VBOXGLXTAG(glXGetCurrentReadDrawable)(void);
extern DECLEXPORT(int) VBOXGLXTAG(glXGetFBConfigAttrib)(Display *dpy, GLXFBConfig config, int attribute, int *value);
extern DECLEXPORT(GLXFBConfig *) VBOXGLXTAG(glXGetFBConfigs)(Display *dpy, int screen, int *nelements);
extern DECLEXPORT(void) VBOXGLXTAG(glXGetSelectedEvent)(Display *dpy, GLXDrawable draw, unsigned long *event_mask);
extern DECLEXPORT(XVisualInfo *) VBOXGLXTAG(glXGetVisualFromFBConfig)(Display *dpy, GLXFBConfig config);
extern DECLEXPORT(Bool) VBOXGLXTAG(glXMakeContextCurrent)(Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
extern DECLEXPORT(int) VBOXGLXTAG(glXQueryContext)(Display *dpy, GLXContext ctx, int attribute, int *value);
extern DECLEXPORT(void) VBOXGLXTAG(glXQueryDrawable)(Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
extern DECLEXPORT(void) VBOXGLXTAG(glXSelectEvent)(Display *dpy, GLXDrawable draw, unsigned long event_mask);
#ifdef CR_EXT_texture_from_pixmap
extern DECLEXPORT(void) VBOXGLXTAG(glXBindTexImageEXT)(Display *dpy, GLXDrawable draw, int buffer, const int *attrib_list);
extern DECLEXPORT(void) VBOXGLXTAG(glXReleaseTexImageEXT)(Display *dpy, GLXDrawable draw, int buffer);
#endif
#endif /* GLX_EXTRAS */
#endif //___CROPENGL_DRI_GLX_H