VirtualBox

Changeset 20411 in vbox


Ignore:
Timestamp:
Jun 8, 2009 2:38:19 PM (16 years ago)
Author:
vboxsync
Message:

crOpenGL: allow wine to query real host gpu vendor/version/renderer strings (public #3541)

Location:
trunk/src/VBox
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/crOpenGL/pack/packspu.h

    r20084 r20411  
    4141    GLint serverCtx;         /* context ID returned by server */
    4242    char glVersion[100];     /* GL_VERSION string */
     43    char pszRealVendor[100];
     44    char pszRealVersion[100];
     45    char pszRealRenderer[100];
    4346};
    4447
  • trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_getstring.c

    r20401 r20411  
    6060}
    6161
     62static void GetString(GLenum name, char *pszStr)
     63{
     64    GET_THREAD(thread);
     65    int writeback = 1;
     66
     67    if (pack_spu.swap)
     68        crPackGetStringSWAP(name, pszStr, &writeback);
     69    else
     70        crPackGetString(name, pszStr, &writeback);
     71    packspuFlush( (void *) thread );
     72
     73    while (writeback)
     74        crNetRecv();
     75}
    6276
    6377static GLfloat
     
    6579{
    6680    GLubyte return_value[100];
    67     GET_THREAD(thread);
    6881    int writeback = 1;
    6982    GLfloat version;
    7083
    71     if (pack_spu.swap)
    72         crPackGetStringSWAP( GL_VERSION, return_value, &writeback );
    73     else
    74         crPackGetString( GL_VERSION, return_value, &writeback );
    75     packspuFlush( (void *) thread );
    76 
    77     while (writeback)
    78         crNetRecv();
    79 
     84    GetString(GL_VERSION, return_value);
    8085    CRASSERT(crStrlen((char *)return_value) < 100);
    8186
     
    8691}
    8792
     93#ifdef WINDOWS
     94static bool packspuRunningUnderWine(void)
     95{
     96    return NULL != GetModuleHandle("wined3d.dll");
     97}
     98#endif
     99
    88100const GLubyte * PACKSPU_APIENTRY packspu_GetString( GLenum name )
    89101{
    90102    GET_CONTEXT(ctx);
    91103
    92     if (name == GL_EXTENSIONS)
     104    switch(name)
    93105    {
    94         return GetExtensions();
    95     }
    96     else if (name == GL_VERSION)
    97     {
    98         float version = GetVersionString();
    99         sprintf(ctx->glVersion, "%.1f Chromium %s", version, CR_VERSION_STRING);
    100         return (const GLubyte *) ctx->glVersion;
    101     }
     106        case GL_EXTENSIONS:
     107            return GetExtensions();
     108        case GL_VERSION:
     109#ifdef WINDOWS
     110            if (packspuRunningUnderWine())
     111            {
     112                GetString(GL_REAL_VERSION, ctx->pszRealVersion);
     113                return (const GLubyte*) ctx->pszRealVersion;               
     114            }
     115            else
     116#endif
     117            {
     118                float version = GetVersionString();
     119                sprintf(ctx->glVersion, "%.1f Chromium %s", version, CR_VERSION_STRING);
     120                return (const GLubyte *) ctx->glVersion;
     121            }
     122        case GL_VENDOR:
     123#ifdef WINDOWS
     124            if (packspuRunningUnderWine())
     125            {
     126                GetString(GL_REAL_VENDOR, ctx->pszRealVendor);
     127                return (const GLubyte*) ctx->pszRealVendor;
     128            }
     129            else
     130#endif
     131            {
     132                return crStateGetString(name);
     133            }
     134        case GL_RENDERER:
     135#ifdef WINDOWS
     136            if (packspuRunningUnderWine())
     137            {
     138                GetString(GL_REAL_RENDERER, ctx->pszRealRenderer);
     139                return (const GLubyte*) ctx->pszRealRenderer;
     140            }
     141            else
     142#endif
     143            {
     144                return crStateGetString(name);
     145            }
     146
    102147#ifdef CR_OPENGL_VERSION_2_0
    103     else if (name == GL_SHADING_LANGUAGE_VERSION)
    104     {
    105         GET_THREAD(thread);
    106         int writeback = 1;
    107 
    108         crPackGetString(GL_SHADING_LANGUAGE_VERSION, gpszShadingVersion, &writeback);
    109         packspuFlush( (void *) thread );
    110 
    111         while (writeback)
    112             crNetRecv();
    113 
    114         return gpszShadingVersion;
    115     }
     148        case GL_SHADING_LANGUAGE_VERSION:
     149            GetString(GL_SHADING_LANGUAGE_VERSION, gpszShadingVersion);
     150            return gpszShadingVersion;
    116151#endif
    117     else
    118     {
    119         return crStateGetString(name);
     152#ifdef GL_CR_real_vendor_strings
     153        case GL_REAL_VENDOR:
     154            GetString(GL_REAL_VENDOR, ctx->pszRealVendor);
     155            return (const GLubyte*) ctx->pszRealVendor;
     156        case GL_REAL_VERSION:
     157            GetString(GL_REAL_VERSION, ctx->pszRealVersion);
     158            return (const GLubyte*) ctx->pszRealVersion;
     159        case GL_REAL_RENDERER:
     160            GetString(GL_REAL_RENDERER, ctx->pszRealRenderer);
     161            return (const GLubyte*) ctx->pszRealRenderer;
     162#endif
     163        default:
     164            return crStateGetString(name);
    120165    }
    121166}
  • trunk/src/VBox/GuestHost/OpenGL/include/chromium.h

    r15532 r20411  
    545545#endif /* GL_CR_zpix */
    546546
     547/*Allow to use glGetString to query real host GPU info*/
     548#ifndef GL_CR_real_vendor_strings
     549#define GL_CR_real_vendor_strings 1
     550#define GL_REAL_VENDOR   0x8B23
     551#define GL_REAL_VERSION  0x8B24
     552#define GL_REAL_RENDERER 0x8B25
     553#endif
     554
    547555
    548556/**********************************************************************/
     
    618626#endif
    619627
    620 
    621628#ifdef __cplusplus
    622629}
  • trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu.c

    r20392 r20411  
    10001000        return render_spu.ws.glGetString(GL_SHADING_LANGUAGE_VERSION);
    10011001#endif
     1002#ifdef GL_CR_real_vendor_strings
     1003    else if (pname == GL_REAL_VENDOR)
     1004        return render_spu.ws.glGetString(GL_VENDOR);
     1005    else if (pname == GL_REAL_VERSION)
     1006        return render_spu.ws.glGetString(GL_VERSION);
     1007    else if (pname == GL_REAL_RENDERER)
     1008        return render_spu.ws.glGetString(GL_RENDERER);
     1009#endif
    10021010    else
    10031011        return NULL;
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