d0442182bcb269db0e724161682f61b63188c127vboxsync/* $Id$ */
d0442182bcb269db0e724161682f61b63188c127vboxsync/** @file
d0442182bcb269db0e724161682f61b63188c127vboxsync *
d0442182bcb269db0e724161682f61b63188c127vboxsync * VirtualBox guest OpenGL DRI GLX header C prototypes
d0442182bcb269db0e724161682f61b63188c127vboxsync */
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsync/*
c58f1213e628a545081c70e26c6b67a841cff880vboxsync * Copyright (C) 2006-2010 Oracle Corporation
d0442182bcb269db0e724161682f61b63188c127vboxsync *
d0442182bcb269db0e724161682f61b63188c127vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
d0442182bcb269db0e724161682f61b63188c127vboxsync * available from http://www.virtualbox.org. This file is free software;
d0442182bcb269db0e724161682f61b63188c127vboxsync * you can redistribute it and/or modify it under the terms of the GNU
d0442182bcb269db0e724161682f61b63188c127vboxsync * General Public License (GPL) as published by the Free Software
d0442182bcb269db0e724161682f61b63188c127vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
d0442182bcb269db0e724161682f61b63188c127vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
d0442182bcb269db0e724161682f61b63188c127vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
d0442182bcb269db0e724161682f61b63188c127vboxsync */
d0442182bcb269db0e724161682f61b63188c127vboxsync
ee3d6f4872abc2f63389d7611780280103f3f347vboxsync#ifndef ___CROPENGL_GLX_PROTO_H
ee3d6f4872abc2f63389d7611780280103f3f347vboxsync#define ___CROPENGL_GLX_PROTO_H
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsync#include "chromium.h"
d0442182bcb269db0e724161682f61b63188c127vboxsync#include "stub.h"
d0442182bcb269db0e724161682f61b63188c127vboxsync
81805e56ed549411b9a4e39e74129bfc9322261bvboxsync#if defined(VBOXOGL_FAKEDRI) || defined(VBOXOGL_DRI)
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef const char * (*PGLXFUNC_GetDriverConfig)(const char *driverName);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_FreeMemoryMESA)(Display *dpy, int scrn, void *pointer);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXContext (*PGLXFUNC_ImportContextEXT)(Display *dpy, GLXContextID contextID);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXContextID (*PGLXFUNC_GetContextIDEXT)(const GLXContext ctx);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef Bool (*PGLXFUNC_MakeCurrentReadSGI)(Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef const char * (*PGLXFUNC_GetScreenDriver)(Display *dpy, int scrNum);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef Display * (*PGLXFUNC_GetCurrentDisplayEXT)(void);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_FreeContextEXT)(Display *dpy, GLXContext ctx);
d0442182bcb269db0e724161682f61b63188c127vboxsync
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync/*Mesa internal*/
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef int (*PGLXFUNC_QueryContextInfoEXT)(Display *dpy, GLXContext ctx);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void * (*PGLXFUNC_AllocateMemoryMESA)(Display *dpy, int scrn,
d0442182bcb269db0e724161682f61b63188c127vboxsync size_t size, float readFreq,
d0442182bcb269db0e724161682f61b63188c127vboxsync float writeFreq, float priority);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLuint (*PGLXFUNC_GetMemoryOffsetMESA)(Display *dpy, int scrn, const void *pointer );
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXPixmap (*PGLXFUNC_CreateGLXPixmapMESA)(Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);
d0442182bcb269db0e724161682f61b63188c127vboxsync#endif
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsync/*Common glX functions*/
ee3d6f4872abc2f63389d7611780280103f3f347vboxsynctypedef void (*PGLXFUNC_CopyContext)(Display *dpy, GLXContext src, GLXContext dst,unsigned long mask);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_UseXFont)(Font font, int first, int count, int listBase);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef CR_GLXFuncPtr (*PGLXFUNC_GetProcAddress)(const GLubyte *name);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef Bool (*PGLXFUNC_QueryExtension)(Display *dpy, int *errorBase, int *eventBase);
6a70a0a14269f2378b042dd512a737a3e1a93dd7vboxsynctypedef Bool (*PGLXFUNC_IsDirect)(Display *dpy, GLXContext ctx);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXPixmap (*PGLXFUNC_CreateGLXPixmap)(Display *dpy, XVisualInfo *vis, Pixmap pixmap);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_SwapBuffers)(Display *dpy, GLXDrawable drawable);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXDrawable (*PGLXFUNC_GetCurrentDrawable)(void);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_WaitGL)(void);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef Display * (*PGLXFUNC_GetCurrentDisplay)(void);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef const char * (*PGLXFUNC_QueryServerString)(Display *dpy, int screen, int name);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXContext (*PGLXFUNC_CreateContext)(Display *dpy, XVisualInfo *vis, GLXContext share, Bool direct);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef int (*PGLXFUNC_GetConfig)(Display *dpy, XVisualInfo *vis, int attrib, int *value);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_WaitX)(void);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXContext (*PGLXFUNC_GetCurrentContext)(void);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef const char * (*PGLXFUNC_GetClientString)(Display *dpy, int name);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef Bool (*PGLXFUNC_MakeCurrent)(Display *dpy, GLXDrawable drawable, GLXContext ctx);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_DestroyContext)(Display *dpy, GLXContext ctx);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef CR_GLXFuncPtr (*PGLXFUNC_GetProcAddressARB)(const GLubyte *name);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_DestroyGLXPixmap)(Display *dpy, GLXPixmap pix);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef Bool (*PGLXFUNC_QueryVersion)(Display *dpy, int *major, int *minor);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef XVisualInfo * (*PGLXFUNC_ChooseVisual)(Display *dpy, int screen, int *attribList);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef const char * (*PGLXFUNC_QueryExtensionsString)(Display *dpy, int screen);
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsync/**
d0442182bcb269db0e724161682f61b63188c127vboxsync * Set this to 1 if you want to build stub functions for the
d0442182bcb269db0e724161682f61b63188c127vboxsync * GL_SGIX_pbuffer and GLX_SGIX_fbconfig extensions.
d0442182bcb269db0e724161682f61b63188c127vboxsync * This used to be disabled, due to "messy compilation issues",
d0442182bcb269db0e724161682f61b63188c127vboxsync * according to the earlier comment; but they're needed just
d0442182bcb269db0e724161682f61b63188c127vboxsync * to resolve symbols for OpenInventor applications, and I
d0442182bcb269db0e724161682f61b63188c127vboxsync * haven't found any reference to exactly what the "messy compilation
d0442182bcb269db0e724161682f61b63188c127vboxsync * issues" are, so I'm re-enabling the code by default.
d0442182bcb269db0e724161682f61b63188c127vboxsync */
d0442182bcb269db0e724161682f61b63188c127vboxsync#define GLX_EXTRAS 1
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsync#define GLX_SGIX_video_resize 1
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsync/**
d0442182bcb269db0e724161682f61b63188c127vboxsync * Prototypes, in case they're not in glx.h or glxext.h
d0442182bcb269db0e724161682f61b63188c127vboxsync * Unfortunately, there's some inconsistency between the extension
d0442182bcb269db0e724161682f61b63188c127vboxsync * specs, and the SGI, NVIDIA, XFree86 and common glxext.h header
d0442182bcb269db0e724161682f61b63188c127vboxsync * files.
d0442182bcb269db0e724161682f61b63188c127vboxsync */
d0442182bcb269db0e724161682f61b63188c127vboxsync#if defined(GLX_GLXEXT_VERSION)
d0442182bcb269db0e724161682f61b63188c127vboxsync/* match glxext.h, XFree86, Mesa */
d0442182bcb269db0e724161682f61b63188c127vboxsync#define ATTRIB_TYPE const int
d0442182bcb269db0e724161682f61b63188c127vboxsync#else
d0442182bcb269db0e724161682f61b63188c127vboxsync#define ATTRIB_TYPE int
d0442182bcb269db0e724161682f61b63188c127vboxsync#endif
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsync#if GLX_EXTRAS
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXPbufferSGIX (*PGLXFUNC_CreateGLXPbufferSGIX)
d0442182bcb269db0e724161682f61b63188c127vboxsync(Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list);
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef int (*PGLXFUNC_QueryGLXPbufferSGIX)
d0442182bcb269db0e724161682f61b63188c127vboxsync(Display *dpy, GLXPbuffer pbuf, int attribute, unsigned int *value);
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXFBConfigSGIX * (*PGLXFUNC_ChooseFBConfigSGIX)
d0442182bcb269db0e724161682f61b63188c127vboxsync(Display *dpy, int screen, int *attrib_list, int *nelements);
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_DestroyGLXPbufferSGIX)(Display *dpy, GLXPbuffer pbuf);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_SelectEventSGIX)(Display *dpy, GLXDrawable drawable, unsigned long mask);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_GetSelectedEventSGIX)(Display *dpy, GLXDrawable drawable, unsigned long *mask);
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXFBConfigSGIX (*PGLXFUNC_GetFBConfigFromVisualSGIX)(Display *dpy, XVisualInfo *vis);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef XVisualInfo * (*PGLXFUNC_GetVisualFromFBConfigSGIX)(Display *dpy, GLXFBConfig config);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXContext (*PGLXFUNC_CreateContextWithConfigSGIX)
d0442182bcb269db0e724161682f61b63188c127vboxsync(Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXPixmap (*PGLXFUNC_CreateGLXPixmapWithConfigSGIX)(Display *dpy, GLXFBConfig config, Pixmap pixmap);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef int (*PGLXFUNC_GetFBConfigAttribSGIX)(Display *dpy, GLXFBConfig config, int attribute, int *value);
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsync/*
d0442182bcb269db0e724161682f61b63188c127vboxsync * GLX 1.3 functions
d0442182bcb269db0e724161682f61b63188c127vboxsync */
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXFBConfig * (*PGLXFUNC_ChooseFBConfig)(Display *dpy, int screen, ATTRIB_TYPE *attrib_list, int *nelements);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXPbuffer (*PGLXFUNC_CreatePbuffer)(Display *dpy, GLXFBConfig config, ATTRIB_TYPE *attrib_list);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXPixmap (*PGLXFUNC_CreatePixmap)(Display *dpy, GLXFBConfig config, Pixmap pixmap, const ATTRIB_TYPE *attrib_list);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXWindow (*PGLXFUNC_CreateWindow)(Display *dpy, GLXFBConfig config, Window win, ATTRIB_TYPE *attrib_list);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXContext (*PGLXFUNC_CreateNewContext)
d0442182bcb269db0e724161682f61b63188c127vboxsync(Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_DestroyPbuffer)(Display *dpy, GLXPbuffer pbuf);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_DestroyPixmap)(Display *dpy, GLXPixmap pixmap);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_DestroyWindow)(Display *dpy, GLXWindow win);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXDrawable (*PGLXFUNC_GetCurrentReadDrawable)(void);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef int (*PGLXFUNC_GetFBConfigAttrib)(Display *dpy, GLXFBConfig config, int attribute, int *value);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef GLXFBConfig * (*PGLXFUNC_GetFBConfigs)(Display *dpy, int screen, int *nelements);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_GetSelectedEvent)(Display *dpy, GLXDrawable draw, unsigned long *event_mask);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef XVisualInfo * (*PGLXFUNC_GetVisualFromFBConfig)(Display *dpy, GLXFBConfig config);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef Bool (*PGLXFUNC_MakeContextCurrent)(Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef int (*PGLXFUNC_QueryContext)(Display *dpy, GLXContext ctx, int attribute, int *value);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_QueryDrawable)(Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_SelectEvent)(Display *dpy, GLXDrawable draw, unsigned long event_mask);
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsync#ifdef CR_EXT_texture_from_pixmap
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_BindTexImageEXT)(Display *dpy, GLXDrawable draw, int buffer, const int *attrib_list);
d0442182bcb269db0e724161682f61b63188c127vboxsynctypedef void (*PGLXFUNC_ReleaseTexImageEXT)(Display *dpy, GLXDrawable draw, int buffer);
d0442182bcb269db0e724161682f61b63188c127vboxsync#endif
d0442182bcb269db0e724161682f61b63188c127vboxsync
d0442182bcb269db0e724161682f61b63188c127vboxsync#endif /* GLX_EXTRAS */
d0442182bcb269db0e724161682f61b63188c127vboxsync
ee3d6f4872abc2f63389d7611780280103f3f347vboxsync#endif //___CROPENGL_GLX_PROTO_H