VirtualBox

Changeset 25248 in vbox


Ignore:
Timestamp:
Dec 8, 2009 2:21:34 PM (15 years ago)
Author:
vboxsync
Message:

crOpenGL: use PIC code for VBoxOGL on 32bit Linuxes

Location:
trunk/src/VBox/Additions/common/crOpenGL
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/crOpenGL/Makefile.kmk

    r23694 r25248  
    5555 # Only Solaris right now needs C stubs because I can't figure out how to
    5656 # generate the GOT based relocation ASM yet.
    57  ifeq ($(KBUILD_TARGET),solaris)
    58   ifdef VBoxOGL_FAKEDRI
     57 ifdef VBoxOGL_FAKEDRI
     58  if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),solaris.x86 solaris.amd64 linux.x86)
    5959   VBOX_OGL_GLX_USE_CSTUBS = 1
    6060  endif
     
    8787 VBoxOGL_DEFS     += VBOX_NO_NATIVEGL
    8888endif
     89
    8990ifdef VBoxOGL_DRI
    9091 VBoxOGL_DEFS          += VBOXOGL_DRI IN_DRI_DRIVER
    9192else ifdef VBoxOGL_FAKEDRI
    9293 VBoxOGL_DEFS          += VBOXOGL_FAKEDRI
    93  VBoxOGL_DEFS.solaris  += VBOX_OGL_GLX_USE_CSTUBS
    94 endif
     94 ifdef VBOX_OGL_GLX_USE_CSTUBS
     95  VBoxOGL_DEFS         += VBOX_OGL_GLX_USE_CSTUBS
     96 endif
     97endif
     98
    9599ifeq ($(KBUILD_TARGET),win)
    96100#fixme?, INTERMEDIATES.win ain't working
     
    132136  VBoxOGL_SOURCES += \
    133137        fakedri_drv.c
    134   VBoxOGL_SOURCES.linux += \
    135         $(VBOX_PATH_CROGL_GENFILES)/linux_glxapi_exports.asm \
    136         $(VBOX_PATH_CROGL_GENFILES)/linux_exports_dri.asm
    137138  ifndef VBOX_OGL_GLX_USE_CSTUBS
    138139   VBoxOGL_SOURCES.solaris += \
    139140        $(VBOX_PATH_CROGL_GENFILES)/solaris_glxapi_exports.asm \
    140141        $(VBOX_PATH_CROGL_GENFILES)/solaris_exports_dri.asm
     142  VBoxOGL_SOURCES.linux += \
     143        $(VBOX_PATH_CROGL_GENFILES)/linux_glxapi_exports.asm \
     144        $(VBOX_PATH_CROGL_GENFILES)/linux_exports_dri.asm
    141145  else
    142146   VBoxOGL_SOURCES.solaris += \
    143147        $(VBOX_PATH_CROGL_GENFILES)/solaris_exports.c 
     148  VBoxOGL_SOURCES.linux += \
     149        $(VBOX_PATH_CROGL_GENFILES)/linux_exports.c 
    144150  endif
    145151 else
     
    295301  endif
    296302 else
    297   # @todo linux if required
    298303  ifeq ($(KBUILD_TARGET),solaris)
    299304$(VBOX_PATH_CROGL_GENFILES)/solaris_exports.c: \
    300305                $(PATH_SUB_CURRENT)/SunOS_exports.py \
     306                $(VBOX_CROGL_API_FILES) $(PATH_SUB_CURRENT)/entrypoints.py \
     307                | $$(dir $$@)
     308        $(call MSG_GENERATE,python,$@,$<)
     309        $(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI)
     310  else
     311$(VBOX_PATH_CROGL_GENFILES)/linux_exports.c: \
     312                $(PATH_SUB_CURRENT)/Linux_exports.py \
    301313                $(VBOX_CROGL_API_FILES) $(PATH_SUB_CURRENT)/entrypoints.py \
    302314                | $$(dir $$@)
  • trunk/src/VBox/Additions/common/crOpenGL/fakedri_drv.c

    r25161 r25248  
    140140    void *alPatch;
    141141    void *pMesaEntry;
    142 #ifdef RT_ARCH_AMD64
    143142    char patch[5];
    144143    void *shift;
    145 #endif
    146144
    147145#ifndef VBOX_NO_MESA_PATCH_REPORTS
    148     crDebug("");
    149     crDebug("vboxPatchMesaExport: %s", psFuncName);
     146    crDebug("\nvboxPatchMesaExport: %s", psFuncName);
    150147#endif
    151148
     
    172169
    173170        rv = dladdr1(pStart, &dlip1, (void**)&sym1, RTLD_DL_SYMENT);
    174         if (!rv || !sym)
     171        if (!rv || !sym1)
    175172        {
    176173            crError("Failed to get size for %p", pStart);
     
    188185#endif
    189186
     187#ifndef VBOX_OGL_GLX_USE_CSTUBS
    190188    if (sym->st_size<(pEnd-pStart))
    191     {
    192 #ifdef RT_ARCH_AMD64
    193         /* Try to insert 5 bytes jmpq to our stub code */
     189#endif
     190    {
     191        /* Try to insert 5 bytes jmp/jmpq to our stub code */
    194192
    195193        if (5>(pEnd-pStart))
     
    201199        shift = (void*)((intptr_t)pStart-((intptr_t)dlip.dli_saddr+5));
    202200# ifndef VBOX_NO_MESA_PATCH_REPORTS
    203         crDebug("Size is small, inserting jmpq with shift %p instead", shift);
     201        crDebug("Inserting jmp[q] with shift %p instead", shift);
    204202# endif
    205203
    206         if ( ((((long)shift)&0x00000000) != 0)
    207              && ((((long)shift)&0x00000000) != 0xFFFFFFFF00000000))
    208204        {
    209             crDebug("Can't patch offset is too big.(%s)", psFuncName);
    210             return;
     205#ifdef RT_ARCH_AMD64
     206            int64_t offset = (intptr_t)shift;           
     207#else
     208            int64_t offset = (int64_t)((intptr_t)pStart)-((int64_t)((intptr_t)dlip.dli_saddr)+5);
     209#endif
     210            if ( (RT_HIDWORD(offset) != 0) && (RT_HIDWORD(offset) != 0xFFFFFFFF)
     211                 && (((int32_t)offset > INT32_MAX) || ((int32_t)offset < INT32_MIN)))
     212            {
     213                crDebug("Can't patch offset is too big.(%s)", psFuncName);
     214                return;
     215            }
    211216        }
    212217
     
    222227        pStart = &patch[0];
    223228        pEnd = &patch[5];
    224 #else
    225         crDebug("Can't patch size too small.(%s)", psFuncName);
    226         return;
    227 #endif //ifdef RT_ARCH_AMD64
    228229    }
    229230
  • trunk/src/VBox/Additions/common/crOpenGL/glx_c_exports.c

    r18549 r25248  
    2727
    2828#ifdef VBOXOGL_FAKEDRI
    29 /*void VBOXGLXENTRYTAG(glXGetDriverConfig)(const char *driverName)
     29/*DECLEXPORT(void) VBOXGLXENTRYTAG(glXGetDriverConfig)(const char *driverName)
    3030{
    3131    return glxim.GetDriverConfig(driverName);
    3232}*/
    3333
    34 void VBOXGLXENTRYTAG(glXFreeMemoryMESA)(Display *dpy, int scrn, void *pointer)
     34DECLEXPORT(void) VBOXGLXENTRYTAG(glXFreeMemoryMESA)(Display *dpy, int scrn, void *pointer)
    3535{
    3636    return glxim.FreeMemoryMESA(dpy, scrn, pointer);
    3737}
    3838
    39 GLXContext VBOXGLXENTRYTAG(glXImportContextEXT)(Display *dpy, GLXContextID contextID)
     39DECLEXPORT(GLXContext) VBOXGLXENTRYTAG(glXImportContextEXT)(Display *dpy, GLXContextID contextID)
    4040{
    4141    return glxim.ImportContextEXT(dpy, contextID);
    4242}
    4343
    44 GLXContextID VBOXGLXENTRYTAG(glXGetContextIDEXT)(const GLXContext ctx)
     44DECLEXPORT(GLXContextID) VBOXGLXENTRYTAG(glXGetContextIDEXT)(const GLXContext ctx)
    4545{
    4646    return glxim.GetContextIDEXT(ctx);
    4747}
    4848
    49 Bool VBOXGLXENTRYTAG(glXMakeCurrentReadSGI)(Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx)
     49DECLEXPORT(Bool) VBOXGLXENTRYTAG(glXMakeCurrentReadSGI)(Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx)
    5050{
    5151    return glxim.MakeCurrentReadSGI(display, draw, read, ctx);
     
    5959
    6060
    61 Display * VBOXGLXENTRYTAG(glXGetCurrentDisplayEXT)(void)
     61DECLEXPORT(Display*) VBOXGLXENTRYTAG(glXGetCurrentDisplayEXT)(void)
    6262{
    6363    return glxim.GetCurrentDisplayEXT();
    6464}
    6565
    66 void VBOXGLXENTRYTAG(glXFreeContextEXT)(Display *dpy, GLXContext ctx)
     66DECLEXPORT(void) VBOXGLXENTRYTAG(glXFreeContextEXT)(Display *dpy, GLXContext ctx)
    6767{
    6868    return glxim.FreeContextEXT(dpy, ctx);
     
    7070
    7171/*Mesa insternal*/
    72 int VBOXGLXENTRYTAG(glXQueryContextInfoEXT)(Display *dpy, GLXContext ctx)
     72DECLEXPORT(int) VBOXGLXENTRYTAG(glXQueryContextInfoEXT)(Display *dpy, GLXContext ctx)
    7373{
    7474    return glxim.QueryContextInfoEXT(dpy, ctx);
    7575}
    7676
    77 void * VBOXGLXENTRYTAG(glXAllocateMemoryMESA)(Display *dpy, int scrn,
     77DECLEXPORT(void *) VBOXGLXENTRYTAG(glXAllocateMemoryMESA)(Display *dpy, int scrn,
    7878                                                       size_t size, float readFreq,
    7979                                                       float writeFreq, float priority)
     
    8282}
    8383
    84 GLuint VBOXGLXENTRYTAG(glXGetMemoryOffsetMESA)(Display *dpy, int scrn, const void *pointer )
     84DECLEXPORT(GLuint) VBOXGLXENTRYTAG(glXGetMemoryOffsetMESA)(Display *dpy, int scrn, const void *pointer )
    8585{
    8686    return glxim.GetMemoryOffsetMESA(dpy, scrn, pointer);
     
    8888
    8989
    90 GLXPixmap VBOXGLXENTRYTAG(glXCreateGLXPixmapMESA)(Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap)
     90DECLEXPORT(GLXPixmap) VBOXGLXENTRYTAG(glXCreateGLXPixmapMESA)(Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap)
    9191{
    9292    return glxim.CreateGLXPixmapMESA(dpy, visual, pixmap, cmap);
     
    9595
    9696/*Common glX functions*/
    97 void VBOXGLXENTRYTAG(glXCopyContext)( Display *dpy, GLXContext src, GLXContext dst, unsigned long mask)
     97DECLEXPORT(void) VBOXGLXENTRYTAG(glXCopyContext)( Display *dpy, GLXContext src, GLXContext dst, unsigned long mask)
    9898{
    9999    return glxim.CopyContext(dpy, src, dst, mask);
     
    101101
    102102
    103 void VBOXGLXENTRYTAG(glXUseXFont)(Font font, int first, int count, int listBase)
     103DECLEXPORT(void) VBOXGLXENTRYTAG(glXUseXFont)(Font font, int first, int count, int listBase)
    104104{
    105105    return glxim.UseXFont(font, first, count, listBase);
    106106}
    107107
    108 CR_GLXFuncPtr VBOXGLXENTRYTAG(glXGetProcAddress)(const GLubyte *name)
     108DECLEXPORT(CR_GLXFuncPtr) VBOXGLXENTRYTAG(glXGetProcAddress)(const GLubyte *name)
    109109{
    110110    return glxim.GetProcAddress(name);
    111111}
    112112
    113 Bool VBOXGLXENTRYTAG(glXQueryExtension)(Display *dpy, int *errorBase, int *eventBase)
     113DECLEXPORT(Bool) VBOXGLXENTRYTAG(glXQueryExtension)(Display *dpy, int *errorBase, int *eventBase)
    114114{
    115115    return glxim.QueryExtension(dpy, errorBase, eventBase);
    116116}
    117117
    118 Bool VBOXGLXENTRYTAG(glXIsDirect)(Display *dpy, GLXContext ctx)
     118DECLEXPORT(Bool) VBOXGLXENTRYTAG(glXIsDirect)(Display *dpy, GLXContext ctx)
    119119{
    120120    return glxim.IsDirect(dpy, ctx);
    121121}
    122122
    123 GLXPixmap VBOXGLXENTRYTAG(glXCreateGLXPixmap)(Display *dpy, XVisualInfo *vis, Pixmap pixmap)
     123DECLEXPORT(GLXPixmap) VBOXGLXENTRYTAG(glXCreateGLXPixmap)(Display *dpy, XVisualInfo *vis, Pixmap pixmap)
    124124{
    125125    return glxim.CreateGLXPixmap(dpy, vis, pixmap);
    126126}
    127127
    128 void VBOXGLXENTRYTAG(glXSwapBuffers)(Display *dpy, GLXDrawable drawable)
     128DECLEXPORT(void) VBOXGLXENTRYTAG(glXSwapBuffers)(Display *dpy, GLXDrawable drawable)
    129129{
    130130    return glxim.SwapBuffers(dpy, drawable);
     
    132132
    133133
    134 GLXDrawable VBOXGLXENTRYTAG(glXGetCurrentDrawable)(void)
     134DECLEXPORT(GLXDrawable) VBOXGLXENTRYTAG(glXGetCurrentDrawable)(void)
    135135{
    136136    return glxim.GetCurrentDrawable();
    137137}
    138138
    139 void VBOXGLXENTRYTAG(glXWaitGL)(void)
     139DECLEXPORT(void) VBOXGLXENTRYTAG(glXWaitGL)(void)
    140140{
    141141    return glxim.WaitGL();
    142142}
    143143
    144 Display * VBOXGLXENTRYTAG(glXGetCurrentDisplay)(void)
     144DECLEXPORT(Display *) VBOXGLXENTRYTAG(glXGetCurrentDisplay)(void)
    145145{
    146146    return glxim.GetCurrentDisplay();
    147147}
    148148
    149 const char * VBOXGLXENTRYTAG(glXQueryServerString)(Display *dpy, int screen, int name)
     149DECLEXPORT(const char *) VBOXGLXENTRYTAG(glXQueryServerString)(Display *dpy, int screen, int name)
    150150{
    151151    return glxim.QueryServerString(dpy, screen, name);
    152152}
    153153
    154 GLXContext VBOXGLXENTRYTAG(glXCreateContext)(Display *dpy, XVisualInfo *vis, GLXContext share, Bool direct)
     154DECLEXPORT(GLXContext) VBOXGLXENTRYTAG(glXCreateContext)(Display *dpy, XVisualInfo *vis, GLXContext share, Bool direct)
    155155{
    156156    return glxim.CreateContext(dpy, vis, share, direct);
    157157}
    158158
    159 int VBOXGLXENTRYTAG(glXGetConfig)(Display *dpy, XVisualInfo *vis, int attrib, int *value)
     159DECLEXPORT(int) VBOXGLXENTRYTAG(glXGetConfig)(Display *dpy, XVisualInfo *vis, int attrib, int *value)
    160160{
    161161    return glxim.GetConfig(dpy, vis, attrib, value);
    162162}
    163163
    164 void VBOXGLXENTRYTAG(glXWaitX)(void)
     164DECLEXPORT(void) VBOXGLXENTRYTAG(glXWaitX)(void)
    165165{
    166166    return glxim.WaitX();
    167167}
    168168
    169 GLXContext VBOXGLXENTRYTAG(glXGetCurrentContext)(void)
     169DECLEXPORT(GLXContext) VBOXGLXENTRYTAG(glXGetCurrentContext)(void)
    170170{
    171171    return glxim.GetCurrentContext();
    172172}
    173173
    174 const char * VBOXGLXENTRYTAG(glXGetClientString)(Display *dpy, int name)
     174DECLEXPORT(const char *) VBOXGLXENTRYTAG(glXGetClientString)(Display *dpy, int name)
    175175{
    176176    return glxim.GetClientString(dpy, name);
    177177}
    178178
    179 Bool VBOXGLXENTRYTAG(glXMakeCurrent)(Display *dpy, GLXDrawable drawable, GLXContext ctx)
     179DECLEXPORT(Bool) VBOXGLXENTRYTAG(glXMakeCurrent)(Display *dpy, GLXDrawable drawable, GLXContext ctx)
    180180{
    181181    return glxim.MakeCurrent(dpy, drawable, ctx);
    182182}
    183183
    184 void VBOXGLXENTRYTAG(glXDestroyContext)(Display *dpy, GLXContext ctx)
     184DECLEXPORT(void) VBOXGLXENTRYTAG(glXDestroyContext)(Display *dpy, GLXContext ctx)
    185185{
    186186    return glxim.DestroyContext(dpy, ctx);
    187187}
    188188
    189 CR_GLXFuncPtr VBOXGLXENTRYTAG(glXGetProcAddressARB)(const GLubyte *name)
     189DECLEXPORT(CR_GLXFuncPtr) VBOXGLXENTRYTAG(glXGetProcAddressARB)(const GLubyte *name)
    190190{
    191191    return glxim.GetProcAddressARB(name);
    192192}
    193193
    194 void VBOXGLXENTRYTAG(glXDestroyGLXPixmap)(Display *dpy, GLXPixmap pix)
     194DECLEXPORT(void) VBOXGLXENTRYTAG(glXDestroyGLXPixmap)(Display *dpy, GLXPixmap pix)
    195195{
    196196    return glxim.DestroyGLXPixmap(dpy, pix);
    197197}
    198198
    199 Bool VBOXGLXENTRYTAG(glXQueryVersion)(Display *dpy, int *major, int *minor)
     199DECLEXPORT(Bool) VBOXGLXENTRYTAG(glXQueryVersion)(Display *dpy, int *major, int *minor)
    200200{
    201201    return glxim.QueryVersion(dpy, major, minor);
    202202}
    203203
    204 XVisualInfo * VBOXGLXENTRYTAG(glXChooseVisual)(Display *dpy, int screen, int *attribList)
     204DECLEXPORT(XVisualInfo *) VBOXGLXENTRYTAG(glXChooseVisual)(Display *dpy, int screen, int *attribList)
    205205{
    206206    return glxim.ChooseVisual(dpy, screen, attribList);
    207207}
    208208
    209 const char * VBOXGLXENTRYTAG(glXQueryExtensionsString)(Display *dpy, int screen)
     209DECLEXPORT(const char *) VBOXGLXENTRYTAG(glXQueryExtensionsString)(Display *dpy, int screen)
    210210{
    211211    return glxim.QueryExtensionsString(dpy, screen);
     
    213213
    214214#if GLX_EXTRAS
    215 GLXPbufferSGIX VBOXGLXENTRYTAG(glXCreateGLXPbufferSGIX)
     215DECLEXPORT(GLXPbufferSGIX) VBOXGLXENTRYTAG(glXCreateGLXPbufferSGIX)
    216216(Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list)
    217217{
     
    219219}
    220220
    221 int VBOXGLXENTRYTAG(glXQueryGLXPbufferSGIX)
     221DECLEXPORT(int) VBOXGLXENTRYTAG(glXQueryGLXPbufferSGIX)
    222222(Display *dpy, GLXPbuffer pbuf, int attribute, unsigned int *value)
    223223{
     
    225225}
    226226
    227 GLXFBConfigSGIX * VBOXGLXENTRYTAG(glXChooseFBConfigSGIX)
     227DECLEXPORT(GLXFBConfigSGIX *) VBOXGLXENTRYTAG(glXChooseFBConfigSGIX)
    228228(Display *dpy, int screen, int *attrib_list, int *nelements)
    229229{
     
    231231}
    232232
    233 void VBOXGLXENTRYTAG(glXDestroyGLXPbufferSGIX)(Display *dpy, GLXPbuffer pbuf)
     233DECLEXPORT(void) VBOXGLXENTRYTAG(glXDestroyGLXPbufferSGIX)(Display *dpy, GLXPbuffer pbuf)
    234234{
    235235    return glxim.DestroyGLXPbufferSGIX(dpy, pbuf);
    236236}
    237237
    238 void VBOXGLXENTRYTAG(glXSelectEventSGIX)(Display *dpy, GLXDrawable drawable, unsigned long mask)
     238DECLEXPORT(void) VBOXGLXENTRYTAG(glXSelectEventSGIX)(Display *dpy, GLXDrawable drawable, unsigned long mask)
    239239{
    240240    return glxim.SelectEventSGIX(dpy, drawable, mask);
    241241}
    242242
    243 void VBOXGLXENTRYTAG(glXGetSelectedEventSGIX)(Display *dpy, GLXDrawable drawable, unsigned long *mask)
     243DECLEXPORT(void) VBOXGLXENTRYTAG(glXGetSelectedEventSGIX)(Display *dpy, GLXDrawable drawable, unsigned long *mask)
    244244{
    245245    return glxim.GetSelectedEventSGIX(dpy, drawable, mask);
    246246}
    247247
    248 GLXFBConfigSGIX VBOXGLXENTRYTAG(glXGetFBConfigFromVisualSGIX)(Display *dpy, XVisualInfo *vis)
     248DECLEXPORT(GLXFBConfigSGIX) VBOXGLXENTRYTAG(glXGetFBConfigFromVisualSGIX)(Display *dpy, XVisualInfo *vis)
    249249{
    250250    return glxim.GetFBConfigFromVisualSGIX(dpy, vis);
    251251}
    252252
    253 XVisualInfo * VBOXGLXENTRYTAG(glXGetVisualFromFBConfigSGIX)(Display *dpy, GLXFBConfig config)
     253DECLEXPORT(XVisualInfo *) VBOXGLXENTRYTAG(glXGetVisualFromFBConfigSGIX)(Display *dpy, GLXFBConfig config)
    254254{
    255255    return glxim.GetVisualFromFBConfigSGIX(dpy, config);
    256256}
    257257
    258 GLXContext VBOXGLXENTRYTAG(glXCreateContextWithConfigSGIX)
     258DECLEXPORT(GLXContext) VBOXGLXENTRYTAG(glXCreateContextWithConfigSGIX)
    259259(Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct)
    260260{
     
    262262}
    263263
    264 GLXPixmap VBOXGLXENTRYTAG(glXCreateGLXPixmapWithConfigSGIX)(Display *dpy, GLXFBConfig config, Pixmap pixmap)
     264DECLEXPORT(GLXPixmap) VBOXGLXENTRYTAG(glXCreateGLXPixmapWithConfigSGIX)(Display *dpy, GLXFBConfig config, Pixmap pixmap)
    265265{
    266266    return glxim.CreateGLXPixmapWithConfigSGIX(dpy, config, pixmap);
    267267}
    268268
    269 int VBOXGLXENTRYTAG(glXGetFBConfigAttribSGIX)(Display *dpy, GLXFBConfig config, int attribute, int *value)
     269DECLEXPORT(int) VBOXGLXENTRYTAG(glXGetFBConfigAttribSGIX)(Display *dpy, GLXFBConfig config, int attribute, int *value)
    270270{
    271271    return glxim.GetFBConfigAttribSGIX(dpy, config, attribute, value);
     
    276276 * GLX 1.3 functions
    277277 */
    278 GLXFBConfig * VBOXGLXENTRYTAG(glXChooseFBConfig)(Display *dpy, int screen, ATTRIB_TYPE *attrib_list, int *nelements)
     278DECLEXPORT(GLXFBConfig *) VBOXGLXENTRYTAG(glXChooseFBConfig)(Display *dpy, int screen, ATTRIB_TYPE *attrib_list, int *nelements)
    279279{
    280280    return glxim.ChooseFBConfig(dpy, screen, attrib_list, nelements);
    281281}
    282282
    283 GLXPbuffer VBOXGLXENTRYTAG(glXCreatePbuffer)(Display *dpy, GLXFBConfig config, ATTRIB_TYPE *attrib_list)
     283DECLEXPORT(GLXPbuffer) VBOXGLXENTRYTAG(glXCreatePbuffer)(Display *dpy, GLXFBConfig config, ATTRIB_TYPE *attrib_list)
    284284{
    285285    return glxim.CreatePbuffer(dpy, config, attrib_list);
    286286}
    287287
    288 GLXPixmap VBOXGLXENTRYTAG(glXCreatePixmap)(Display *dpy, GLXFBConfig config, Pixmap pixmap, const ATTRIB_TYPE *attrib_list)
     288DECLEXPORT(GLXPixmap) VBOXGLXENTRYTAG(glXCreatePixmap)(Display *dpy, GLXFBConfig config, Pixmap pixmap, const ATTRIB_TYPE *attrib_list)
    289289{
    290290    return glxim.CreatePixmap(dpy, config, pixmap, attrib_list);
    291291}
    292292
    293 GLXWindow VBOXGLXENTRYTAG(glXCreateWindow)(Display *dpy, GLXFBConfig config, Window win, ATTRIB_TYPE *attrib_list)
     293DECLEXPORT(GLXWindow) VBOXGLXENTRYTAG(glXCreateWindow)(Display *dpy, GLXFBConfig config, Window win, ATTRIB_TYPE *attrib_list)
    294294{
    295295    return glxim.CreateWindow(dpy, config, win, attrib_list);
     
    297297
    298298
    299 GLXContext VBOXGLXENTRYTAG(glXCreateNewContext)
     299DECLEXPORT(GLXContext) VBOXGLXENTRYTAG(glXCreateNewContext)
    300300(Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct)
    301301{
     
    303303}
    304304
    305 void VBOXGLXENTRYTAG(glXDestroyPbuffer)(Display *dpy, GLXPbuffer pbuf)
     305DECLEXPORT(void) VBOXGLXENTRYTAG(glXDestroyPbuffer)(Display *dpy, GLXPbuffer pbuf)
    306306{
    307307    return glxim.DestroyPbuffer(dpy, pbuf);
    308308}
    309309
    310 void VBOXGLXENTRYTAG(glXDestroyPixmap)(Display *dpy, GLXPixmap pixmap)
     310DECLEXPORT(void) VBOXGLXENTRYTAG(glXDestroyPixmap)(Display *dpy, GLXPixmap pixmap)
    311311{
    312312    return glxim.DestroyPixmap(dpy, pixmap);
    313313}
    314314
    315 void VBOXGLXENTRYTAG(glXDestroyWindow)(Display *dpy, GLXWindow win)
     315DECLEXPORT(void) VBOXGLXENTRYTAG(glXDestroyWindow)(Display *dpy, GLXWindow win)
    316316{
    317317    return glxim.DestroyWindow(dpy, win);
    318318}
    319319
    320 GLXDrawable VBOXGLXENTRYTAG(glXGetCurrentReadDrawable)(void)
     320DECLEXPORT(GLXDrawable) VBOXGLXENTRYTAG(glXGetCurrentReadDrawable)(void)
    321321{
    322322    return glxim.GetCurrentReadDrawable();
    323323}
    324324
    325 int VBOXGLXENTRYTAG(glXGetFBConfigAttrib)(Display *dpy, GLXFBConfig config, int attribute, int *value)
     325DECLEXPORT(int) VBOXGLXENTRYTAG(glXGetFBConfigAttrib)(Display *dpy, GLXFBConfig config, int attribute, int *value)
    326326{
    327327    return glxim.GetFBConfigAttrib(dpy, config, attribute, value);
    328328}
    329329
    330 GLXFBConfig * VBOXGLXENTRYTAG(glXGetFBConfigs)(Display *dpy, int screen, int *nelements)
     330DECLEXPORT(GLXFBConfig *) VBOXGLXENTRYTAG(glXGetFBConfigs)(Display *dpy, int screen, int *nelements)
    331331{
    332332    return glxim.GetFBConfigs(dpy, screen, nelements);
    333333}
    334334
    335 void VBOXGLXENTRYTAG(glXGetSelectedEvent)(Display *dpy, GLXDrawable draw, unsigned long *event_mask)
     335DECLEXPORT(void) VBOXGLXENTRYTAG(glXGetSelectedEvent)(Display *dpy, GLXDrawable draw, unsigned long *event_mask)
    336336{
    337337    return glxim.GetSelectedEvent(dpy, draw, event_mask);
    338338}
    339339
    340 XVisualInfo * VBOXGLXENTRYTAG(glXGetVisualFromFBConfig)(Display *dpy, GLXFBConfig config)
     340DECLEXPORT(XVisualInfo *) VBOXGLXENTRYTAG(glXGetVisualFromFBConfig)(Display *dpy, GLXFBConfig config)
    341341{
    342342    return glxim.GetVisualFromFBConfig(dpy, config);
    343343}
    344344
    345 Bool VBOXGLXENTRYTAG(glXMakeContextCurrent)(Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx)
     345DECLEXPORT(Bool) VBOXGLXENTRYTAG(glXMakeContextCurrent)(Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx)
    346346{
    347347    return glxim.MakeContextCurrent(display, draw, read, ctx);
    348348}
    349349
    350 int VBOXGLXENTRYTAG(glXQueryContext)(Display *dpy, GLXContext ctx, int attribute, int *value)
     350DECLEXPORT(int) VBOXGLXENTRYTAG(glXQueryContext)(Display *dpy, GLXContext ctx, int attribute, int *value)
    351351{
    352352    return glxim.QueryContext(dpy, ctx, attribute, value);
    353353}
    354354
    355 void VBOXGLXENTRYTAG(glXQueryDrawable)(Display *dpy, GLXDrawable draw, int attribute, unsigned int *value)
     355DECLEXPORT(void) VBOXGLXENTRYTAG(glXQueryDrawable)(Display *dpy, GLXDrawable draw, int attribute, unsigned int *value)
    356356{
    357357    return glxim.QueryDrawable(dpy, draw, attribute, value);
    358358}
    359359
    360 void VBOXGLXENTRYTAG(glXSelectEvent)(Display *dpy, GLXDrawable draw, unsigned long event_mask)
     360DECLEXPORT(void) VBOXGLXENTRYTAG(glXSelectEvent)(Display *dpy, GLXDrawable draw, unsigned long event_mask)
    361361{
    362362    return glxim.SelectEvent(dpy, draw, event_mask);
     
    365365/*
    366366#ifdef CR_EXT_texture_from_pixmap
    367 void VBOXGLXENTRYTAG(glXBindTexImageEXT)(Display *dpy, GLXDrawable draw, int buffer, const int *attrib_list)
     367DECLEXPORT(void) VBOXGLXENTRYTAG(glXBindTexImageEXT)(Display *dpy, GLXDrawable draw, int buffer, const int *attrib_list)
    368368{
    369369    return glxim.BindTexImageEXT(dpy, draw, buffer, attrib_list);
    370370}
    371371
    372 void VBOXGLXENTRYTAG(glXReleaseTexImageEXT)(Display *dpy, GLXDrawable draw, int buffer)
     372DECLEXPORT(void) VBOXGLXENTRYTAG(glXReleaseTexImageEXT)(Display *dpy, GLXDrawable draw, int buffer)
    373373{
    374374    return glxim.ReleaseTexImageEXT(dpy, draw, buffer);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette