VirtualBox

Ignore:
Timestamp:
May 3, 2019 9:51:02 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
130368
Message:

Additions/common/crOpengl,GuestHost/OpenGL,HostServices/SharedOpenGL: Eliminate all global variables from the state tracker library (state_tracker) in preparation of the SPU DLL merging, bugref:9435

Location:
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib
Files:
26 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/presenter/server_presenter.cpp

    r78264 r78375  
    975975
    976976        crStateReleaseTexture(cr_server.MainContextInfo.pContext, pTobj);
    977 
    978 
    979         crStateGlobalSharedRelease();
     977        crStateGlobalSharedRelease(&cr_server.StateTracker);
    980978    }
    981979
     
    10261024    }
    10271025
    1028     CRSharedState *pShared = crStateGlobalSharedAcquire();
     1026    CRSharedState *pShared = crStateGlobalSharedAcquire(&cr_server.StateTracker);
    10291027    if (!pShared)
    10301028    {
     
    10371035    {
    10381036        LOG(("pTobj is null!"));
    1039         crStateGlobalSharedRelease();
     1037        crStateGlobalSharedRelease(&cr_server.StateTracker);
    10401038        return NULL;
    10411039    }
     
    10431041    Assert(pTobj->id == idTexture);
    10441042
    1045     GLuint hwid = crStateGetTextureObjHWID(pTobj);
     1043    GLuint hwid = crStateGetTextureObjHWID(&cr_server.StateTracker, pTobj);
    10461044    if (!hwid)
    10471045    {
    10481046        WARN(("hwId is null!"));
    1049         crStateGlobalSharedRelease();
     1047        crStateGlobalSharedRelease(&cr_server.StateTracker);
    10501048        return NULL;
    10511049    }
     
    10611059    {
    10621060        WARN(("crFbTexCreate failed!"));
    1063         crStateGlobalSharedRelease();
     1061        crStateGlobalSharedRelease(&cr_server.StateTracker);
    10641062        return NULL;
    10651063    }
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server.h

    r78263 r78375  
    341341    CRContext *pCurCtx = pCurCtxInfo ? pCurCtxInfo->pContext : NULL;
    342342
    343     CRASSERT(pCurCtx == crStateGetCurrent());
     343    CRASSERT(pCurCtx == crStateGetCurrent(&cr_server.StateTracker));
    344344
    345345    if (pCurrentMural)
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_bufferobject.cpp

    r78263 r78375  
    4646    }
    4747
    48     crStateGenBuffersARB(n, local_buffers);
     48    crStateGenBuffersARB(&cr_server.StateTracker, n, local_buffers);
    4949
    5050    crServerReturnValue( local_buffers, n * sizeof(*local_buffers) );
     
    6060    }
    6161
    62     crStateDeleteBuffersARB( n, buffer );
     62    crStateDeleteBuffersARB(&cr_server.StateTracker, n, buffer );
    6363}
    6464
     
    101101crServerDispatchBindBufferARB(GLenum target, GLuint buffer)
    102102{
    103     crStateBindBufferARB(target, buffer);
    104     cr_server.head_spu->dispatch_table.BindBufferARB(target, crStateGetBufferHWID(buffer));
     103    crStateBindBufferARB(&cr_server.StateTracker, target, buffer);
     104    cr_server.head_spu->dispatch_table.BindBufferARB(target, crStateGetBufferHWID(&cr_server.StateTracker, buffer));
    105105}
    106106
     
    110110    /* since GenBuffersARB issued to host ogl only on bind + some other ops, the host drivers may not know about them
    111111     * so use state data*/
    112     GLboolean retval = crStateIsBufferARB(buffer);
     112    GLboolean retval = crStateIsBufferARB(&cr_server.StateTracker, buffer);
    113113    crServerReturnValue( &retval, sizeof(retval) );
    114114    return retval; /* WILL PROBABLY BE IGNORED */
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_clear.cpp

    r78263 r78375  
    423423                window = 0;
    424424
    425         ctx = crStateGetCurrent();
     425        ctx = crStateGetCurrent(&cr_server.StateTracker);
    426426
    427427        CRASSERT(cr_server.curClient && cr_server.curClient->currentMural == mural);
     
    449449crServerDispatchFlush(void)
    450450{
    451     CRContext *ctx = crStateGetCurrent();
     451    CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    452452    cr_server.head_spu->dispatch_table.Flush();
    453453
     
    470470crServerDispatchFinish(void)
    471471{
    472     CRContext *ctx = crStateGetCurrent();
     472    CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    473473
    474474    cr_server.head_spu->dispatch_table.Finish();
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_context.cpp

    r78263 r78375  
    6363            return -1;
    6464        }
    65         cr_server.MainContextInfo.pContext = crStateCreateContext(&cr_server.limits, visualBits, NULL);
     65        cr_server.MainContextInfo.pContext = crStateCreateContext(&cr_server.StateTracker, &cr_server.limits, visualBits, NULL);
    6666        CRASSERT(cr_server.MainContextInfo.pContext);
    6767        cr_server.firstCallCreateContext = GL_FALSE;
     
    114114        if (pContextInfo->SpuContext < 0) {
    115115            crWarning("crServerDispatchCreateContext() failed.");
    116             crStateEnableDiffOnMakeCurrent(GL_TRUE);
     116            crStateEnableDiffOnMakeCurrent(&cr_server.StateTracker, GL_TRUE);
    117117            cr_server.bUseMultipleContexts = GL_FALSE;
    118118            if (!fFirst)
     
    121121        else if (fFirst)
    122122        {
    123             crStateEnableDiffOnMakeCurrent(GL_FALSE);
     123            crStateEnableDiffOnMakeCurrent(&cr_server.StateTracker, GL_FALSE);
    124124        }
    125125    }
     
    132132     * dispatch function pointers.
    133133     */
    134     newCtx = crStateCreateContextEx(&cr_server.limits, visualBits, NULL, internalID);
     134    newCtx = crStateCreateContextEx(&cr_server.StateTracker, &cr_server.limits, visualBits, NULL, internalID);
    135135    if (newCtx) {
    136         crStateSetCurrentPointers( newCtx, &(cr_server.current) );
     136        crStateSetCurrentPointers(newCtx, &(cr_server.current) );
    137137        crStateResetCurrentPointers(&(cr_server.current));
    138138        retVal = preloadCtxID<0 ? (GLint)crHashtableAllocKeys( cr_server.contextTable, 1 ) : preloadCtxID;
     
    214214    crCtxInfo->currentMural = NULL;
    215215    crHashtableDelete(cr_server.contextTable, ctx, NULL);
    216     crStateDestroyContext( crCtx );
     216    crStateDestroyContext(&cr_server.StateTracker, crCtx);
    217217
    218218    if (crCtxInfo->CreateInfo.pszDpyName)
     
    306306     * crStateSwitchPrepare restores the FBO state to its default values before the context window switch,
    307307     * while crStateSwitchPostprocess restores it back to the original values */
    308     oldCtx = crStateGetCurrent();
     308    oldCtx = crStateGetCurrent(&cr_server.StateTracker);
    309309    if (oldMural && oldMural->fRedirected && crServerSupportRedirMuralFBO())
    310310    {
     
    335335
    336336    /* This is a hack to force updating the 'current' attribs */
    337     crStateUpdateColorBits();
     337    crStateUpdateColorBits(&cr_server.StateTracker);
    338338
    339339    if (ctx)
    340         crStateSetCurrentPointers( ctx, &(cr_server.current) );
     340        crStateSetCurrentPointers(ctx, &(cr_server.current) );
    341341
    342342    /* check if being made current for first time, update viewport */
     
    387387
    388388    /* This used to be earlier, after crStateUpdateColorBits() call */
    389     crStateMakeCurrent( ctx );
     389    crStateMakeCurrent(&cr_server.StateTracker, ctx );
    390390
    391391    if (mural && mural->fRedirected  && crServerSupportRedirMuralFBO())
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_dispatch.py

    r78190 r78375  
    3737    print('void SERVER_DISPATCH_APIENTRY crServerDispatch%s(%s)' % ( func_name, apiutil.MakeDeclarationStringForDispatcher( params ) ))
    3838    print('{')
    39     print('\tcrState%s(%s);' % (func_name, apiutil.MakeCallStringForDispatcher( params ) ))
     39    if len(params) == 0:
     40        print('\tcrState%s(&cr_server.StateTracker);' % (func_name))
     41    else:
     42        print('\tcrState%s(&cr_server.StateTracker, %s);' % (func_name, apiutil.MakeCallStringForDispatcher( params ) ))
    4043    print('\tcr_server.head_spu->dispatch_table.%s(%s);' % (func_name, apiutil.MakeCallStringForDispatcher( params ) ))
    4144    print('}')
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_framebuffer.cpp

    r78190 r78375  
    3838    local_buffers = (GLuint *)crCalloc(n * sizeof(*local_buffers));
    3939
    40     crStateGenFramebuffersEXT(n, local_buffers);
     40    crStateGenFramebuffersEXT(&cr_server.StateTracker, n, local_buffers);
    4141
    4242    crServerReturnValue(local_buffers, n * sizeof(*local_buffers));
     
    5858    local_buffers = (GLuint *)crCalloc(n * sizeof(*local_buffers));
    5959
    60     crStateGenRenderbuffersEXT(n, local_buffers);
     60    crStateGenRenderbuffersEXT(&cr_server.StateTracker, n, local_buffers);
    6161
    6262    crServerReturnValue(local_buffers, n * sizeof(*local_buffers));
     
    6666void SERVER_DISPATCH_APIENTRY crServerDispatchFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
    6767{
    68     crStateFramebufferTexture1DEXT(target, attachment, textarget, texture, level);
    69     cr_server.head_spu->dispatch_table.FramebufferTexture1DEXT(target, attachment, textarget, crStateGetTextureHWID(texture), level);
     68    crStateFramebufferTexture1DEXT(&cr_server.StateTracker, target, attachment, textarget, texture, level);
     69    cr_server.head_spu->dispatch_table.FramebufferTexture1DEXT(target, attachment, textarget, crStateGetTextureHWID(&cr_server.StateTracker, texture), level);
    7070}
    7171
    7272void SERVER_DISPATCH_APIENTRY crServerDispatchFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
    7373{
    74     crStateFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
    75     cr_server.head_spu->dispatch_table.FramebufferTexture2DEXT(target, attachment, textarget, crStateGetTextureHWID(texture), level);
     74    crStateFramebufferTexture2DEXT(&cr_server.StateTracker, target, attachment, textarget, texture, level);
     75    cr_server.head_spu->dispatch_table.FramebufferTexture2DEXT(target, attachment, textarget, crStateGetTextureHWID(&cr_server.StateTracker, texture), level);
    7676}
    7777
    7878void SERVER_DISPATCH_APIENTRY crServerDispatchFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
    7979{
    80     crStateFramebufferTexture3DEXT(target, attachment, textarget, texture, level, zoffset);
    81     cr_server.head_spu->dispatch_table.FramebufferTexture3DEXT(target, attachment, textarget, crStateGetTextureHWID(texture), level, zoffset);
     80    crStateFramebufferTexture3DEXT(&cr_server.StateTracker, target, attachment, textarget, texture, level, zoffset);
     81    cr_server.head_spu->dispatch_table.FramebufferTexture3DEXT(target, attachment, textarget, crStateGetTextureHWID(&cr_server.StateTracker, texture), level, zoffset);
    8282}
    8383
     
    8787    GLint rfb = 0, dfb = 0;
    8888#endif
    89         crStateBindFramebufferEXT(target, framebuffer);
     89    crStateBindFramebufferEXT(&cr_server.StateTracker, target, framebuffer);
    9090
    9191    if (0==framebuffer)
    9292    {
    93         CRContext *ctx = crStateGetCurrent();
     93        CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    9494        if (ctx->buffer.drawBuffer == GL_FRONT || ctx->buffer.drawBuffer == GL_FRONT_LEFT || ctx->buffer.drawBuffer == GL_FRONT_RIGHT)
    9595            cr_server.curClient->currentMural->bFbDraw = GL_TRUE;
     
    149149    else
    150150    {
    151         cr_server.head_spu->dispatch_table.BindFramebufferEXT(target, crStateGetFramebufferHWID(framebuffer));
     151        cr_server.head_spu->dispatch_table.BindFramebufferEXT(target, crStateGetFramebufferHWID(&cr_server.StateTracker, framebuffer));
    152152#ifdef DEBUG_misha
    153153        cr_server.head_spu->dispatch_table.GetIntegerv(GL_READ_FRAMEBUFFER_BINDING_EXT, &rfb);
     
    155155        if (GL_FRAMEBUFFER_EXT == target)
    156156        {
    157             Assert(rfb == crStateGetFramebufferHWID(framebuffer));
    158             Assert(dfb == crStateGetFramebufferHWID(framebuffer));
     157            Assert(rfb == crStateGetFramebufferHWID(&cr_server.StateTracker, framebuffer));
     158            Assert(dfb == crStateGetFramebufferHWID(&cr_server.StateTracker, framebuffer));
    159159        }
    160160        else if (GL_READ_FRAMEBUFFER_EXT == target)
    161161        {
    162             Assert(rfb == crStateGetFramebufferHWID(framebuffer));
     162            Assert(rfb == crStateGetFramebufferHWID(&cr_server.StateTracker, framebuffer));
    163163        }
    164164        else if (GL_DRAW_FRAMEBUFFER_EXT == target)
    165165        {
    166             Assert(dfb == crStateGetFramebufferHWID(framebuffer));
     166            Assert(dfb == crStateGetFramebufferHWID(&cr_server.StateTracker, framebuffer));
    167167        }
    168168        else
     
    176176void SERVER_DISPATCH_APIENTRY crServerDispatchBindRenderbufferEXT(GLenum target, GLuint renderbuffer)
    177177{
    178         crStateBindRenderbufferEXT(target, renderbuffer);
    179         cr_server.head_spu->dispatch_table.BindRenderbufferEXT(target, crStateGetRenderbufferHWID(renderbuffer));
     178        crStateBindRenderbufferEXT(&cr_server.StateTracker, target, renderbuffer);
     179        cr_server.head_spu->dispatch_table.BindRenderbufferEXT(target, crStateGetRenderbufferHWID(&cr_server.StateTracker, renderbuffer));
    180180}
    181181
     
    188188    }
    189189
    190     crStateDeleteFramebuffersEXT(n, framebuffers);
     190    crStateDeleteFramebuffersEXT(&cr_server.StateTracker, n, framebuffers);
    191191}
    192192
     
    199199    }
    200200
    201     crStateDeleteRenderbuffersEXT(n, renderbuffers);
     201    crStateDeleteRenderbuffersEXT(&cr_server.StateTracker, n, renderbuffers);
    202202}
    203203
     
    205205crServerDispatchFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
    206206{
    207         crStateFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);
    208         cr_server.head_spu->dispatch_table.FramebufferRenderbufferEXT(target, attachment, renderbuffertarget, crStateGetRenderbufferHWID(renderbuffer));
     207        crStateFramebufferRenderbufferEXT(&cr_server.StateTracker, target, attachment, renderbuffertarget, renderbuffer);
     208        cr_server.head_spu->dispatch_table.FramebufferRenderbufferEXT(target, attachment, renderbuffertarget, crStateGetRenderbufferHWID(&cr_server.StateTracker, renderbuffer));
    209209}
    210210
     
    214214        GLint local_params[1];
    215215        (void) params;
    216         crStateGetFramebufferAttachmentParameterivEXT(target, attachment, pname, local_params);
     216        crStateGetFramebufferAttachmentParameterivEXT(&cr_server.StateTracker, target, attachment, pname, local_params);
    217217
    218218        crServerReturnValue(&(local_params[0]), 1*sizeof(GLint));
     
    223223    /* since GenFramebuffers/Renderbuffers issued to host ogl only on bind + some other ops, the host drivers may not know about them
    224224     * so use state data*/
    225     GLboolean retval = crStateIsFramebufferEXT(framebuffer);
     225    GLboolean retval = crStateIsFramebufferEXT(&cr_server.StateTracker, framebuffer);
    226226    crServerReturnValue( &retval, sizeof(retval) );
    227227    return retval; /* WILL PROBABLY BE IGNORED */
     
    232232    /* since GenFramebuffers/Renderbuffers issued to host ogl only on bind + some other ops, the host drivers may not know about them
    233233     * so use state data*/
    234     GLboolean retval = crStateIsRenderbufferEXT(renderbuffer);
     234    GLboolean retval = crStateIsRenderbufferEXT(&cr_server.StateTracker, renderbuffer);
    235235    crServerReturnValue( &retval, sizeof(retval) );
    236236    return retval; /* WILL PROBABLY BE IGNORED */
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_gentextures.cpp

    r78190 r78375  
    3131    }
    3232
    33     crStateGenTextures(n, local_textures);
     33    crStateGenTextures(&cr_server.StateTracker, n, local_textures);
    3434
    3535    crServerReturnValue(local_textures, n*sizeof(*local_textures));
     
    112112    {
    113113        GLuint tID = crServerTranslateProgramID(local_progs[i]);
    114         while (crStateIsProgramARB(tID))
     114        while (crStateIsProgramARB(&cr_server.StateTracker, tID))
    115115        {
    116116            cr_server.head_spu->dispatch_table.GenProgramsARB(1, &tID);
     
    138138    }
    139139
    140     crStateCopyTexImage2D(target, level, internalFormat, x, y, width, height, border);
     140    crStateCopyTexImage2D(&cr_server.StateTracker, target, level, internalFormat, x, y, width, height, border);
    141141    cr_server.head_spu->dispatch_table.CopyTexImage2D(target, level, internalFormat, x, y, width, height, border);
    142142}
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_get.py

    r78105 r78375  
    138138        if func_name in convert_bufferid:
    139139            print('\tif (pname==GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB){')
    140             print('\t\tlocal_params[0]=(%s)crStateBufferHWIDtoID((GLint)local_params[0]);' % (local_argtype))
     140            print('\t\tlocal_params[0]=(%s)crStateBufferHWIDtoID(&cr_server.StateTracker, (GLint)local_params[0]);' % (local_argtype))
    141141            print('\t}')
    142142
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getpixelmap.cpp

    r78190 r78375  
    6464{
    6565#ifdef CR_ARB_pixel_buffer_object
    66     if (crStateIsBufferBound(GL_PIXEL_PACK_BUFFER_ARB))
     66    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_PACK_BUFFER_ARB))
    6767    {
    6868        GLvoid *pbo_offset;
     
    9191{
    9292#ifdef CR_ARB_pixel_buffer_object
    93     if (crStateIsBufferBound(GL_PIXEL_PACK_BUFFER_ARB))
     93    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_PACK_BUFFER_ARB))
    9494    {
    9595        GLvoid *pbo_offset;
     
    118118{
    119119#ifdef CR_ARB_pixel_buffer_object
    120     if (crStateIsBufferBound(GL_PIXEL_PACK_BUFFER_ARB))
     120    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_PACK_BUFFER_ARB))
    121121    {
    122122        GLvoid *pbo_offset;
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getshaders.cpp

    r78263 r78375  
    5252    }
    5353
    54     cr_server.head_spu->dispatch_table.GetActiveAttrib(crStateGetProgramHWID(program), index, bufSize, &pLocal->length, &pLocal->size, &pLocal->type, (char*)&pLocal[1]);
     54    cr_server.head_spu->dispatch_table.GetActiveAttrib(crStateGetProgramHWID(&cr_server.StateTracker, program), index, bufSize, &pLocal->length, &pLocal->size, &pLocal->type, (char*)&pLocal[1]);
    5555    crServerReturnValue(pLocal, pLocal->length+1+sizeof(crGetActive_t));
    5656    crFree(pLocal);
     
    7474    }
    7575
    76     cr_server.head_spu->dispatch_table.GetActiveUniform(crStateGetProgramHWID(program), index, bufSize, &pLocal->length, &pLocal->size, &pLocal->type, (char*)&pLocal[1]);
     76    cr_server.head_spu->dispatch_table.GetActiveUniform(crStateGetProgramHWID(&cr_server.StateTracker, program), index, bufSize, &pLocal->length, &pLocal->size, &pLocal->type, (char*)&pLocal[1]);
    7777    crServerReturnValue(pLocal, pLocal->length+1+sizeof(crGetActive_t));
    7878    crFree(pLocal);
     
    9696    /* initial (fallback )value */
    9797    *pLocal = 0;
    98     cr_server.head_spu->dispatch_table.GetAttachedShaders(crStateGetProgramHWID(program), maxCount, pLocal, (GLuint*)&pLocal[1]);
     98    cr_server.head_spu->dispatch_table.GetAttachedShaders(crStateGetProgramHWID(&cr_server.StateTracker, program), maxCount, pLocal, (GLuint*)&pLocal[1]);
    9999
    100100    {
     
    103103
    104104        for (i=0; i<*pLocal; ++i)
    105           ids[i] = crStateGLSLShaderHWIDtoID(ids[i]);
     105          ids[i] = crStateGLSLShaderHWIDtoID(&cr_server.StateTracker, ids[i]);
    106106    }
    107107
     
    127127    /* initial (fallback )value */
    128128    *pLocal = 0;
    129     cr_server.head_spu->dispatch_table.GetAttachedObjectsARB(crStateGetProgramHWID(containerObj), maxCount, pLocal, (VBoxGLhandleARB*)&pLocal[1]);
     129    cr_server.head_spu->dispatch_table.GetAttachedObjectsARB(crStateGetProgramHWID(&cr_server.StateTracker, containerObj), maxCount, pLocal, (VBoxGLhandleARB*)&pLocal[1]);
    130130
    131131    {
     
    134134
    135135        for (i=0; i<*pLocal; ++i)
    136           ids[i] = crStateGLSLShaderHWIDtoID(ids[i]);
     136          ids[i] = crStateGLSLShaderHWIDtoID(&cr_server.StateTracker, ids[i]);
    137137    }
    138138
     
    162162    *pLocal = 0;
    163163    /** @todo recheck*/
    164     hwid = crStateGetProgramHWID(obj);
    165     if (!hwid) hwid = crStateGetShaderHWID(obj);
     164    hwid = crStateGetProgramHWID(&cr_server.StateTracker, obj);
     165    if (!hwid) hwid = crStateGetShaderHWID(&cr_server.StateTracker, obj);
    166166    cr_server.head_spu->dispatch_table.GetInfoLogARB(hwid, maxLength, pLocal, (char*)&pLocal[1]);
    167167    CRASSERT((*pLocal) <= maxLength);
     
    187187    /* initial (fallback )value */
    188188    *pLocal = 0;
    189     cr_server.head_spu->dispatch_table.GetShaderInfoLog(crStateGetShaderHWID(shader), bufSize, pLocal, (char*)&pLocal[1]);
     189    cr_server.head_spu->dispatch_table.GetShaderInfoLog(crStateGetShaderHWID(&cr_server.StateTracker, shader), bufSize, pLocal, (char*)&pLocal[1]);
    190190    crServerReturnValue(pLocal, pLocal[0]+sizeof(GLsizei));
    191191    crFree(pLocal);
     
    209209    /* initial (fallback )value */
    210210    *pLocal = 0;
    211     cr_server.head_spu->dispatch_table.GetProgramInfoLog(crStateGetProgramHWID(program), bufSize, pLocal, (char*)&pLocal[1]);
     211    cr_server.head_spu->dispatch_table.GetProgramInfoLog(crStateGetProgramHWID(&cr_server.StateTracker, program), bufSize, pLocal, (char*)&pLocal[1]);
    212212    CRASSERT(pLocal[0] <= bufSize);
    213213    crServerReturnValue(pLocal, pLocal[0]+sizeof(GLsizei));
     
    232232    /* initial (fallback )value */
    233233    *pLocal = 0;
    234     cr_server.head_spu->dispatch_table.GetShaderSource(crStateGetShaderHWID(shader), bufSize, pLocal, (char*)&pLocal[1]);
     234    cr_server.head_spu->dispatch_table.GetShaderSource(crStateGetShaderHWID(&cr_server.StateTracker, shader), bufSize, pLocal, (char*)&pLocal[1]);
    235235    CRASSERT(pLocal[0] <= bufSize);
    236236    crServerReturnValue(pLocal, pLocal[0]+sizeof(GLsizei));
     
    258258    /* initial (fallback )value */
    259259    *pLocal = 0;
    260     crStateGLSLProgramCacheUniforms(program, maxcbData, pLocal, (char*)&pLocal[1]);
     260    crStateGLSLProgramCacheUniforms(&cr_server.StateTracker, program, maxcbData, pLocal, (char*)&pLocal[1]);
    261261
    262262    crServerReturnValue(pLocal, (*pLocal)+sizeof(GLsizei));
     
    284284    /* initial (fallback )value */
    285285    *pLocal = 0;
    286     crStateGLSLProgramCacheAttribs(program, maxcbData, pLocal, (char*)&pLocal[1]);
     286    crStateGLSLProgramCacheAttribs(&cr_server.StateTracker, program, maxcbData, pLocal, (char*)&pLocal[1]);
    287287
    288288    crServerReturnValue(pLocal, (*pLocal)+sizeof(GLsizei));
     
    296296
    297297    /** @todo check if index and location is the same*/
    298     cr_server.head_spu->dispatch_table.GetActiveUniform(crStateGetProgramHWID(program), location, 0, NULL, &size, &type, NULL);
    299 
    300     return crStateGetUniformSize(type);
     298    cr_server.head_spu->dispatch_table.GetActiveUniform(crStateGetProgramHWID(&cr_server.StateTracker, program), location, 0, NULL, &size, &type, NULL);
     299
     300    return crStateGetUniformSize(&cr_server.StateTracker, type);
    301301}
    302302
     
    316316    }
    317317
    318     cr_server.head_spu->dispatch_table.GetUniformfv(crStateGetProgramHWID(program), location, pLocal);
     318    cr_server.head_spu->dispatch_table.GetUniformfv(crStateGetProgramHWID(&cr_server.StateTracker, program), location, pLocal);
    319319
    320320    crServerReturnValue(pLocal, size);
     
    337337    }
    338338
    339     cr_server.head_spu->dispatch_table.GetUniformiv(crStateGetProgramHWID(program), location, pLocal);
     339    cr_server.head_spu->dispatch_table.GetUniformiv(crStateGetProgramHWID(&cr_server.StateTracker, program), location, pLocal);
    340340
    341341    crServerReturnValue(pLocal, size);
     
    347347    GLuint retval, hwVal;
    348348    hwVal = cr_server.head_spu->dispatch_table.CreateShader(type);
    349     retval = crStateCreateShader(hwVal, type);
     349    retval = crStateCreateShader(&cr_server.StateTracker, hwVal, type);
    350350    crServerReturnValue(&retval, sizeof(retval));
    351351    return retval; /* ignored */
     
    356356    GLuint retval, hwVal;
    357357    hwVal = cr_server.head_spu->dispatch_table.CreateProgram();
    358     retval = crStateCreateProgram(hwVal);
     358    retval = crStateCreateProgram(&cr_server.StateTracker, hwVal);
    359359    crServerReturnValue(&retval, sizeof(retval));
    360360    return retval; /* ignored */
     
    364364{
    365365    GLboolean retval;
    366     retval = cr_server.head_spu->dispatch_table.IsShader(crStateGetShaderHWID(shader));
     366    retval = cr_server.head_spu->dispatch_table.IsShader(crStateGetShaderHWID(&cr_server.StateTracker, shader));
    367367    crServerReturnValue(&retval, sizeof(retval));
    368368    return retval; /* ignored */
     
    372372{
    373373    GLboolean retval;
    374     retval = cr_server.head_spu->dispatch_table.IsProgram(crStateGetProgramHWID(program));
     374    retval = cr_server.head_spu->dispatch_table.IsProgram(crStateGetProgramHWID(&cr_server.StateTracker, program));
    375375    crServerReturnValue(&retval, sizeof(retval));
    376376    return retval; /* ignored */
     
    380380{
    381381    GLfloat local_params[1] = {0};
    382     GLuint hwid = crStateGetProgramHWID(obj);
     382    GLuint hwid = crStateGetProgramHWID(&cr_server.StateTracker, obj);
    383383    (void) params;
    384384
    385385    if (!hwid)
    386386    {
    387         hwid = crStateGetShaderHWID(obj);
     387        hwid = crStateGetShaderHWID(&cr_server.StateTracker, obj);
    388388        if (!hwid)
    389389        {
     
    399399{
    400400    GLint local_params[1] = {0};
    401     GLuint hwid = crStateGetProgramHWID(obj);
     401    GLuint hwid = crStateGetProgramHWID(&cr_server.StateTracker, obj);
    402402    if (!hwid)
    403403    {
    404         hwid = crStateGetShaderHWID(obj);
     404        hwid = crStateGetShaderHWID(&cr_server.StateTracker, obj);
    405405        if (!hwid)
    406406        {
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getteximage.cpp

    r78190 r78375  
    2121
    2222#ifdef CR_ARB_pixel_buffer_object
    23     if (crStateIsBufferBound(GL_PIXEL_PACK_BUFFER_ARB))
     23    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_PACK_BUFFER_ARB))
    2424    {
    2525        GLvoid *pbo_offset;
     
    104104
    105105#ifdef CR_ARB_pixel_buffer_object
    106     if (crStateIsBufferBound(GL_PIXEL_PACK_BUFFER_ARB))
     106    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_PACK_BUFFER_ARB))
    107107    {
    108108        GLvoid *pbo_offset;
     
    136136{
    137137#ifdef CR_ARB_pixel_buffer_object
    138     if (crStateIsBufferBound(GL_PIXEL_PACK_BUFFER_ARB))
     138    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_PACK_BUFFER_ARB))
    139139    {
    140140        GLvoid *pbo_offset;
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.cpp

    r78190 r78375  
    3232    GLenum err = cr_server.head_spu->dispatch_table.GetError();
    3333#endif
    34     cr_server.head_spu->dispatch_table.ShaderSource(crStateGetShaderHWID(shader), count, string, length);
     34    cr_server.head_spu->dispatch_table.ShaderSource(crStateGetShaderHWID(&cr_server.StateTracker, shader), count, string, length);
    3535#ifdef DEBUG_misha
    3636    err = cr_server.head_spu->dispatch_table.GetError();
     
    4545    GLint iCompileStatus = GL_FALSE;
    4646#endif
    47     crStateCompileShader(shader);
    48     cr_server.head_spu->dispatch_table.CompileShader(crStateGetShaderHWID(shader));
    49 #ifdef DEBUG_misha
    50     cr_server.head_spu->dispatch_table.GetShaderiv(crStateGetShaderHWID(shader), GL_COMPILE_STATUS, &iCompileStatus);
     47    crStateCompileShader(&cr_server.StateTracker, shader);
     48    cr_server.head_spu->dispatch_table.CompileShader(crStateGetShaderHWID(&cr_server.StateTracker, shader));
     49#ifdef DEBUG_misha
     50    cr_server.head_spu->dispatch_table.GetShaderiv(crStateGetShaderHWID(&cr_server.StateTracker, shader), GL_COMPILE_STATUS, &iCompileStatus);
    5151    Assert(iCompileStatus == GL_TRUE);
    5252#endif
     
    5656void SERVER_DISPATCH_APIENTRY crServerDispatchDeleteShader(GLuint shader)
    5757{
    58     GLuint shaderHW = crStateGetShaderHWID(shader);
    59     crStateDeleteShader(shader);
     58    GLuint shaderHW = crStateGetShaderHWID(&cr_server.StateTracker, shader);
     59    crStateDeleteShader(&cr_server.StateTracker, shader);
    6060    if (shaderHW)
    6161        cr_server.head_spu->dispatch_table.DeleteShader(shaderHW);
     
    6666void SERVER_DISPATCH_APIENTRY crServerDispatchAttachShader(GLuint program, GLuint shader)
    6767{
    68     crStateAttachShader(program, shader);
    69     cr_server.head_spu->dispatch_table.AttachShader(crStateGetProgramHWID(program), crStateGetShaderHWID(shader));
     68    crStateAttachShader(&cr_server.StateTracker, program, shader);
     69    cr_server.head_spu->dispatch_table.AttachShader(crStateGetProgramHWID(&cr_server.StateTracker, program),
     70                                                    crStateGetShaderHWID(&cr_server.StateTracker, shader));
    7071}
    7172
    7273void SERVER_DISPATCH_APIENTRY crServerDispatchDetachShader(GLuint program, GLuint shader)
    7374{
    74     crStateDetachShader(program, shader);
    75     cr_server.head_spu->dispatch_table.DetachShader(crStateGetProgramHWID(program), crStateGetShaderHWID(shader));
     75    crStateDetachShader(&cr_server.StateTracker, program, shader);
     76    cr_server.head_spu->dispatch_table.DetachShader(crStateGetProgramHWID(&cr_server.StateTracker, program),
     77                                                    crStateGetShaderHWID(&cr_server.StateTracker, shader));
    7678}
    7779
    7880void SERVER_DISPATCH_APIENTRY crServerDispatchLinkProgram(GLuint program)
    7981{
    80     crStateLinkProgram(program);
    81     cr_server.head_spu->dispatch_table.LinkProgram(crStateGetProgramHWID(program));
     82    crStateLinkProgram(&cr_server.StateTracker, program);
     83    cr_server.head_spu->dispatch_table.LinkProgram(crStateGetProgramHWID(&cr_server.StateTracker, program));
    8284    CR_SERVER_DUMP_LINK_PROGRAM(program);
    8385}
     
    8587void SERVER_DISPATCH_APIENTRY crServerDispatchUseProgram(GLuint program)
    8688{
    87     crStateUseProgram(program);
    88     cr_server.head_spu->dispatch_table.UseProgram(crStateGetProgramHWID(program));
     89    crStateUseProgram(&cr_server.StateTracker, program);
     90    cr_server.head_spu->dispatch_table.UseProgram(crStateGetProgramHWID(&cr_server.StateTracker, program));
    8991}
    9092
    9193void SERVER_DISPATCH_APIENTRY crServerDispatchDeleteProgram(GLuint program)
    9294{
    93     GLuint hwId = crStateGetProgramHWID(program);
    94     crStateDeleteProgram(program);
     95    GLuint hwId = crStateGetProgramHWID(&cr_server.StateTracker, program);
     96    crStateDeleteProgram(&cr_server.StateTracker, program);
    9597    if (hwId)
    9698        cr_server.head_spu->dispatch_table.DeleteProgram(hwId);
     
    101103void SERVER_DISPATCH_APIENTRY crServerDispatchValidateProgram(GLuint program)
    102104{
    103     crStateValidateProgram(program);
    104     cr_server.head_spu->dispatch_table.ValidateProgram(crStateGetProgramHWID(program));
     105    crStateValidateProgram(&cr_server.StateTracker, program);
     106    cr_server.head_spu->dispatch_table.ValidateProgram(crStateGetProgramHWID(&cr_server.StateTracker, program));
    105107}
    106108
    107109void SERVER_DISPATCH_APIENTRY crServerDispatchBindAttribLocation(GLuint program, GLuint index, const char * name)
    108110{
    109     crStateBindAttribLocation(program, index, name);
    110     cr_server.head_spu->dispatch_table.BindAttribLocation(crStateGetProgramHWID(program), index, name);
     111    crStateBindAttribLocation(&cr_server.StateTracker, program, index, name);
     112    cr_server.head_spu->dispatch_table.BindAttribLocation(crStateGetProgramHWID(&cr_server.StateTracker, program), index, name);
    111113}
    112114
    113115void SERVER_DISPATCH_APIENTRY crServerDispatchDeleteObjectARB(VBoxGLhandleARB obj)
    114116{
    115     GLuint hwid =  crStateDeleteObjectARB(obj);
     117    GLuint hwid =  crStateDeleteObjectARB(&cr_server.StateTracker, obj);
    116118
    117119    if (hwid)
     
    124126{
    125127    GLint retval;
    126     retval = cr_server.head_spu->dispatch_table.GetAttribLocation(crStateGetProgramHWID(program), name );
     128    retval = cr_server.head_spu->dispatch_table.GetAttribLocation(crStateGetProgramHWID(&cr_server.StateTracker, program), name );
    127129    crServerReturnValue( &retval, sizeof(retval) );
    128130    return retval; /* WILL PROBABLY BE IGNORED */
     
    135137    if (pname==GL_PROGRAM_OBJECT_ARB)
    136138    {
    137         retval = crStateGLSLProgramHWIDtoID(retval);
     139        retval = crStateGLSLProgramHWIDtoID(&cr_server.StateTracker, retval);
    138140    }
    139141    crServerReturnValue( &retval, sizeof(retval) );
     
    144146{
    145147    GLint retval;
    146     retval = cr_server.head_spu->dispatch_table.GetUniformLocation(crStateGetProgramHWID(program), name);
     148    retval = cr_server.head_spu->dispatch_table.GetUniformLocation(crStateGetProgramHWID(&cr_server.StateTracker, program), name);
    147149    crServerReturnValue( &retval, sizeof(retval) );
    148150    return retval; /* WILL PROBABLY BE IGNORED */
     
    153155    GLint local_params[1] = {0};
    154156    (void) params;
    155     cr_server.head_spu->dispatch_table.GetProgramiv(crStateGetProgramHWID(program), pname, local_params);
     157    cr_server.head_spu->dispatch_table.GetProgramiv(crStateGetProgramHWID(&cr_server.StateTracker, program), pname, local_params);
    156158    crServerReturnValue( &(local_params[0]), 1*sizeof(GLint) );
    157159}
     
    161163    GLint local_params[1] = {0};
    162164    (void) params;
    163     cr_server.head_spu->dispatch_table.GetShaderiv( crStateGetShaderHWID(shader), pname, local_params );
     165    cr_server.head_spu->dispatch_table.GetShaderiv( crStateGetShaderHWID(&cr_server.StateTracker, shader), pname, local_params );
    164166    crServerReturnValue( &(local_params[0]), 1*sizeof(GLint) );
    165167}
     
    197199        pLocalProgs[i] = crServerTranslateProgramID(programs[i]);
    198200    }
    199     crStateDeleteProgramsARB(n, pLocalProgs);
     201    crStateDeleteProgramsARB(&cr_server.StateTracker, n, pLocalProgs);
    200202    cr_server.head_spu->dispatch_table.DeleteProgramsARB(n, pLocalProgs);
    201203    crFree(pLocalProgs);
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_lists.cpp

    r78190 r78375  
    6464
    6565    list = TranslateListID( list );
    66     crStateNewList( list, mode );
     66    crStateNewList(&cr_server.StateTracker, list, mode );
    6767    cr_server.head_spu->dispatch_table.NewList( list, mode );
    6868}
     
    8484            fbFbo = bbFbo = 0;
    8585        }
    86         crStateQueryHWState(fbFbo, bbFbo);
     86        crStateQueryHWState(&cr_server.StateTracker, fbFbo, bbFbo);
    8787    }
    8888}
     
    9090void SERVER_DISPATCH_APIENTRY crServerDispatchEndList(void)
    9191{
    92     CRContext *g = crStateGetCurrent();
     92    CRContext *g = crStateGetCurrent(&cr_server.StateTracker);
    9393    CRListsState *l = &(g->lists);
    9494
    9595    cr_server.head_spu->dispatch_table.EndList();
    96     crStateEndList();
     96    crStateEndList(&cr_server.StateTracker);
    9797
    9898#ifndef IN_GUEST
     
    272272{
    273273    list = TranslateListID( list );
    274     crStateDeleteLists( list, range );
     274    crStateDeleteLists(&cr_server.StateTracker, list, range );
    275275    cr_server.head_spu->dispatch_table.DeleteLists( list, range );
    276276}
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.cpp

    r78263 r78375  
    5151 */
    5252CRServer cr_server;
     53DECLHIDDEN(PCRStateTracker) g_pStateTracker;
    5354
    5455int tearingdown = 0; /* can't be static */
     
    124125{
    125126    CRContextInfo *c = (CRContextInfo *) data;
    126     crStateDestroyContext(c->pContext);
     127    crStateDestroyContext(&cr_server.StateTracker, c->pContext);
    127128    if (c->CreateInfo.pszDpyName)
    128129        crFree(c->CreateInfo.pszDpyName);
     
    180181    }
    181182
    182     crStateSetCurrent( NULL );
     183    crStateSetCurrent(&cr_server.StateTracker, NULL);
    183184
    184185    cr_server.curClient = NULL;
     
    218219    if (!fContextsDeleted)
    219220    {
    220         fOldEnableDiff = crStateEnableDiffOnMakeCurrent(GL_FALSE);
     221        fOldEnableDiff = crStateEnableDiffOnMakeCurrent(&cr_server.StateTracker, GL_FALSE);
    221222        if(cr_server.MainContextInfo.pContext)
    222             crStateMakeCurrent(cr_server.MainContextInfo.pContext);
    223         crStateEnableDiffOnMakeCurrent(fOldEnableDiff);
     223            crStateMakeCurrent(&cr_server.StateTracker, cr_server.MainContextInfo.pContext);
     224        crStateEnableDiffOnMakeCurrent(&cr_server.StateTracker, fOldEnableDiff);
    224225    }
    225226
     
    270271#endif
    271272
    272     crStateDestroy();
     273    crStateDestroy(&cr_server.StateTracker);
    273274
    274275    crNetTearDown();
     
    356357    cr_server.programTable = crAllocHashtable();
    357358
    358     crStateInit();
     359    crStateInit(&cr_server.StateTracker);
     360    g_pStateTracker = &cr_server.StateTracker;
    359361
    360362    crStateLimitsInit( &(cr_server.limits) );
     
    393395    if (!cr_server.head_spu)
    394396    {
    395         crStateDestroy();
     397        crStateDestroy(&cr_server.StateTracker);
    396398        return GL_FALSE;
    397399    }
     
    399401    crServerInitDispatch();
    400402    crServerInitTmpCtxDispatch();
    401     crStateDiffAPI( &(cr_server.head_spu->dispatch_table) );
     403    crStateDiffAPI(&cr_server.StateTracker, &(cr_server.head_spu->dispatch_table) );
    402404
    403405#ifdef VBOX_WITH_CRSERVER_DUMPER
     
    410412
    411413    /*Check for PBO support*/
    412     if (crStateGetCurrent()->extensions.ARB_pixel_buffer_object)
     414    if (crStateGetCurrent(&cr_server.StateTracker)->extensions.ARB_pixel_buffer_object)
    413415    {
    414416        cr_server.bUsePBOForReadback=GL_TRUE;
     
    14221424    crVBoxServerBuildSaveStateGlobal(&Data);
    14231425
    1424     rc = crStateSaveGlobals(pSSM);
     1426    rc = crStateSaveGlobals(&cr_server.StateTracker, pSSM);
    14251427    AssertRCReturn(rc, rc);
    14261428
     
    20842086    }
    20852087
    2086     rc = crStateLoadGlobals(pSSM, version);
     2088    rc = crStateLoadGlobals(&cr_server.StateTracker, pSSM, version);
    20872089    AssertLogRelRCReturn(rc, rc);
    20882090
     
    26042606
    26052607    cr_server.head_spu->dispatch_table.MakeCurrent(0, 0, 0);
    2606     crStateCleanupCurrent();
     2608    crStateCleanupCurrent(&cr_server.StateTracker);
    26072609
    26082610    /* note: we need to clean all contexts, since otherwise renderspu leanup won't work,
     
    26122614    {
    26132615        cr_server.head_spu->dispatch_table.DestroyContext(cr_server.MainContextInfo.SpuContext);
    2614         crStateDestroyContext(cr_server.MainContextInfo.pContext);
     2616        crStateDestroyContext(&cr_server.StateTracker, cr_server.MainContextInfo.pContext);
    26152617        if (cr_server.MainContextInfo.CreateInfo.pszDpyName)
    26162618            crFree(cr_server.MainContextInfo.CreateInfo.pszDpyName);
     
    26302632    cr_server.currentMural = NULL;
    26312633
    2632     crStateDestroy();
     2634    crStateDestroy(&cr_server.StateTracker);
    26332635//    crStateCleanupCurrent();
    26342636
     
    26512653
    26522654//    crStateSetCurrent(NULL);
    2653     crStateInit();
    2654     crStateDiffAPI( &(cr_server.head_spu->dispatch_table) );
     2655    crStateInit(&cr_server.StateTracker);
     2656    crStateDiffAPI(&cr_server.StateTracker, &(cr_server.head_spu->dispatch_table) );
    26552657
    26562658    CrPMgrEnable();
     
    38353837}
    38363838
     3839void crVBoxServerDetachThread(void)
     3840{
     3841    crStateVBoxDetachThread(&cr_server.StateTracker);
     3842}
     3843
     3844void crVBoxServerAttachThread(void)
     3845{
     3846    crStateVBoxAttachThread(&cr_server.StateTracker);
     3847}
     3848
     3849
    38373850#endif
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_misc.cpp

    r78263 r78375  
    328328  switch (target) {
    329329    case GL_SHARE_CONTEXT_RESOURCES_CR:
    330         crStateShareContext(value);
     330        crStateShareContext(&cr_server.StateTracker, value);
    331331        break;
    332332    case GL_RCUSAGE_TEXTURE_SET_CR:
    333         crStateSetTextureUsed(value, GL_TRUE);
     333        crStateSetTextureUsed(&cr_server.StateTracker, value, GL_TRUE);
    334334        break;
    335335    case GL_RCUSAGE_TEXTURE_CLEAR_CR:
    336         crStateSetTextureUsed(value, GL_FALSE);
     336        crStateSetTextureUsed(&cr_server.StateTracker, value, GL_FALSE);
    337337        break;
    338338    case GL_PIN_TEXTURE_SET_CR:
    339         crStatePinTexture(value, GL_TRUE);
     339        crStatePinTexture(&cr_server.StateTracker, value, GL_TRUE);
    340340        break;
    341341    case GL_PIN_TEXTURE_CLEAR_CR:
    342         crStatePinTexture(value, GL_FALSE);
     342        crStatePinTexture(&cr_server.StateTracker, value, GL_FALSE);
    343343        break;
    344344    case GL_SHARED_DISPLAY_LISTS_CR:
     
    502502            GLuint tID, fboID;
    503503            GLenum status;
    504             CRContext *ctx = crStateGetCurrent();
     504            CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    505505
    506506            gl->GenTextures(1, &tID);
     
    601601            GLint dRow;
    602602            GLuint pboId, sRow;
    603             CRContext *ctx = crStateGetCurrent();
     603            CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    604604
    605605            gl->GenBuffersARB(1, &pboId);
     
    897897    CR_BLITTER_CONTEXT Ctx;
    898898    CRMuralInfo *mural;
    899     CRContext *ctx = crStateGetCurrent();
     899    CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    900900    PVBOXVR_TEXTURE pDrawTex, pReadTex;
    901901    VBOXVR_TEXTURE DrawTex, ReadTex;
     
    992992                                   GLbitfield mask, GLenum filter)
    993993{
    994     CRContext *ctx = crStateGetCurrent();
     994    CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    995995    bool fTryBlitter = false;
    996996#ifdef CR_CHECK_BLITS
     
    12741274void SERVER_DISPATCH_APIENTRY crServerDispatchDrawBuffer( GLenum mode )
    12751275{
    1276     crStateDrawBuffer( mode );
    1277 
    1278     if (!crStateGetCurrent()->framebufferobject.drawFB)
     1276    crStateDrawBuffer(&cr_server.StateTracker, mode );
     1277
     1278    if (!crStateGetCurrent(&cr_server.StateTracker)->framebufferobject.drawFB)
    12791279    {
    12801280        if (mode == GL_FRONT || mode == GL_FRONT_LEFT || mode == GL_FRONT_RIGHT)
     
    13621362void SERVER_DISPATCH_APIENTRY crServerDispatchReadBuffer( GLenum mode )
    13631363{
    1364     crStateReadBuffer( mode );
     1364    crStateReadBuffer(&cr_server.StateTracker, mode );
    13651365
    13661366    if (crServerIsRedirectedToFBO()
    13671367            && cr_server.curClient->currentMural->aidFBOs[0]
    1368             && !crStateGetCurrent()->framebufferobject.readFB)
     1368            && !crStateGetCurrent(&cr_server.StateTracker)->framebufferobject.readFB)
    13691369    {
    13701370        CRMuralInfo *mural = cr_server.curClient->currentMural;
     
    14331433{
    14341434    GLenum retval, err;
    1435     CRContext *ctx = crStateGetCurrent();
     1435    CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    14361436    retval = ctx->error;
    14371437
     
    14531453crServerMakeTmpCtxCurrent( GLint window, GLint nativeWindow, GLint context )
    14541454{
    1455     CRContext *pCtx = crStateGetCurrent();
     1455    CRContext *pCtx = crStateGetCurrent(&cr_server.StateTracker);
    14561456    CRContext *pCurCtx = NULL;
    14571457    GLuint idDrawFBO = 0, idReadFBO = 0;
     
    18901890GLvoid crServerSpriteCoordReplEnable(GLboolean fEnable)
    18911891{
    1892     CRContext *g = crStateGetCurrent();
     1892    CRContext *g = crStateGetCurrent(&cr_server.StateTracker);
    18931893    CRTextureState *t = &(g->texture);
    18941894    GLuint curTextureUnit = t->curTextureUnit;
     
    19481948void SERVER_DISPATCH_APIENTRY crServerDispatchEnd( void )
    19491949{
    1950     CRContext *g = crStateGetCurrent();
     1950    CRContext *g = crStateGetCurrent(&cr_server.StateTracker);
    19511951    GLenum mode = g->current.mode;
    19521952
    1953     crStateEnd();
     1953    crStateEnd(&cr_server.StateTracker);
    19541954    cr_server.head_spu->dispatch_table.End();
    19551955
     
    19631963{
    19641964#ifdef DEBUG
    1965     CRContext *ctx = crStateGetCurrent();
     1965    CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    19661966    SPUDispatchTable *gl = &cr_server.head_spu->dispatch_table;
    19671967
     
    20122012    CR_SERVER_DUMP_DRAW_ENTER();
    20132013
    2014     crStateBegin(mode);
     2014    crStateBegin(&cr_server.StateTracker, mode);
    20152015    cr_server.head_spu->dispatch_table.Begin(mode);
    20162016}
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_muralfbo.cpp

    r78263 r78375  
    477477        if (cr_server.curClient && cr_server.curClient->currentMural == mural)
    478478        {
    479             if (!crStateGetCurrent()->framebufferobject.drawFB)
     479            CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
     480
     481            if (!ctx->framebufferobject.drawFB)
    480482            {
    481483                cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_DRAW_FRAMEBUFFER, CR_SERVER_FBO_FOR_IDX(mural, mural->iCurDrawBuffer));
    482484            }
    483             if (!crStateGetCurrent()->framebufferobject.readFB)
     485            if (!ctx->framebufferobject.readFB)
    484486            {
    485487                cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_READ_FRAMEBUFFER, CR_SERVER_FBO_FOR_IDX(mural, mural->iCurReadBuffer));
    486488            }
    487489
    488             crStateGetCurrent()->buffer.width = 0;
    489             crStateGetCurrent()->buffer.height = 0;
     490            ctx->buffer.width = 0;
     491            ctx->buffer.height = 0;
    490492        }
    491493    }
     
    494496        if (cr_server.curClient && cr_server.curClient->currentMural == mural)
    495497        {
    496             if (!crStateGetCurrent()->framebufferobject.drawFB)
     498            CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
     499
     500            if (!ctx->framebufferobject.drawFB)
    497501            {
    498502                cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_DRAW_FRAMEBUFFER, 0);
    499503            }
    500             if (!crStateGetCurrent()->framebufferobject.readFB)
     504            if (!ctx->framebufferobject.readFB)
    501505            {
    502506                cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_READ_FRAMEBUFFER, 0);
    503507            }
    504508
    505             crStateGetCurrent()->buffer.width = mural->width;
    506             crStateGetCurrent()->buffer.height = mural->height;
     509            ctx->buffer.width = mural->width;
     510            ctx->buffer.height = mural->height;
    507511        }
    508512    }
     
    513517static void crServerCreateMuralFBO(CRMuralInfo *mural)
    514518{
    515     CRContext *ctx = crStateGetCurrent();
     519    CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    516520    GLuint uid, i;
    517521    GLenum status;
     
    540544    /*Color texture*/
    541545
    542     if (crStateIsBufferBound(GL_PIXEL_UNPACK_BUFFER_ARB))
     546    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_UNPACK_BUFFER_ARB))
    543547    {
    544548        gl->BindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
     
    605609    gl->BindFramebufferEXT(GL_READ_FRAMEBUFFER, uid);
    606610
    607     if (crStateIsBufferBound(GL_PIXEL_UNPACK_BUFFER_ARB))
     611    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_UNPACK_BUFFER_ARB))
    608612    {
    609613        gl->BindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, ctx->bufferobject.unpackBuffer->hwid);
    610614    }
    611615
    612     if (crStateIsBufferBound(GL_PIXEL_PACK_BUFFER_ARB))
     616    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_PACK_BUFFER_ARB))
    613617    {
    614618        gl->BindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, ctx->bufferobject.packBuffer->hwid);
     
    825829void crServerMuralFBOSwapBuffers(CRMuralInfo *mural)
    826830{
    827     CRContext *ctx = crStateGetCurrent();
     831    CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    828832    GLint iOldCurDrawBuffer = mural->iCurDrawBuffer;
    829833    GLint iOldCurReadBuffer = mural->iCurReadBuffer;
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_projmatrix.cpp

    r78263 r78375  
    4444    const GLenum matMode = cr_server.curClient->currentCtxInfo->pContext->transform.matrixMode;
    4545
    46     crStateLoadMatrixf( m );
     46    crStateLoadMatrixf(&cr_server.StateTracker, m );
    4747
    4848    if (matMode == GL_MODELVIEW && cr_server.viewOverride) {
     
    6060    const GLenum matMode = cr_server.curClient->currentCtxInfo->pContext->transform.matrixMode;
    6161
    62     crStateLoadMatrixd( m );
     62    crStateLoadMatrixd(&cr_server.StateTracker, m );
    6363
    6464    if (matMode == GL_MODELVIEW && cr_server.viewOverride) {
     
    7979        /* load the overriding projection matrix */
    8080        int eye = crServerGetCurrentEye();
    81         crStateLoadMatrix( &cr_server.projectionMatrix[eye] );
     81        crStateLoadMatrix(&cr_server.StateTracker, &cr_server.projectionMatrix[eye] );
    8282    }
    8383    else {
    8484        /* the usual case */
    85         crStateMultMatrixf( m );
     85        crStateMultMatrixf(&cr_server.StateTracker, m );
    8686        cr_server.head_spu->dispatch_table.MultMatrixf( m );
    8787    }
     
    9696        /* load the overriding projection matrix */
    9797        int eye = crServerGetCurrentEye();
    98         crStateLoadMatrix( &cr_server.projectionMatrix[eye] );
     98        crStateLoadMatrix(&cr_server.StateTracker, &cr_server.projectionMatrix[eye] );
    9999    }
    100100    else {
    101101        /* the usual case */
    102         crStateMultMatrixd( m );
     102        crStateMultMatrixd(&cr_server.StateTracker, m );
    103103        cr_server.head_spu->dispatch_table.MultMatrixd( m );
    104104    }
     
    111111    const GLenum matMode = cr_server.curClient->currentCtxInfo->pContext->transform.matrixMode;
    112112
    113     crStateLoadIdentity();
     113    crStateLoadIdentity(&cr_server.StateTracker);
    114114
    115115    if (matMode == GL_MODELVIEW && cr_server.viewOverride) {
     
    322322
    323323    /* pass through */
    324     crStateProgramStringARB(target, format, len, string);
     324    crStateProgramStringARB(&cr_server.StateTracker, target, format, len, string);
    325325    cr_server.head_spu->dispatch_table.ProgramStringARB(target, format, len, string);
    326326}
     
    364364
    365365    /* pass through */
    366     crStateLoadProgramNV(target, id, len, string);
     366    crStateLoadProgramNV(&cr_server.StateTracker, target, id, len, string);
    367367    cr_server.head_spu->dispatch_table.LoadProgramNV(target, id, len, string);
    368368}
     
    381381
    382382    /* pass through */
    383     crStateBindProgramARB(target, id);
     383    crStateBindProgramARB(&cr_server.StateTracker, target, id);
    384384    cr_server.head_spu->dispatch_table.BindProgramARB(target, id);
    385385}
     
    395395    }
    396396    /* pass through */
    397     crStateBindProgramNV(target, id);
     397    crStateBindProgramNV(&cr_server.StateTracker, target, id);
    398398    cr_server.head_spu->dispatch_table.BindProgramNV(target, id);
    399399}
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_readpixels.cpp

    r78190 r78375  
    3333
    3434#ifdef CR_ARB_pixel_buffer_object
    35     if (crStateIsBufferBound(GL_PIXEL_PACK_BUFFER_ARB))
     35    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_PACK_BUFFER_ARB))
    3636    {
    3737        GLvoid *pbo_offset;
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_rpw.cpp

    r78263 r78375  
    470470    pContext = cr_server.currentCtxInfo->pContext;
    471471
    472     if (crStateIsBufferBound(GL_PIXEL_UNPACK_BUFFER_ARB))
     472    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_UNPACK_BUFFER_ARB))
    473473    {
    474474        cr_server.head_spu->dispatch_table.BindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
     
    490490    pEntry->iTexDraw = -pEntry->iTexDraw;
    491491
    492     if (crStateIsBufferBound(GL_PIXEL_UNPACK_BUFFER_ARB))
     492    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_UNPACK_BUFFER_ARB))
    493493    {
    494494        cr_server.head_spu->dispatch_table.BindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pContext->bufferobject.unpackBuffer->hwid);
     
    504504        }
    505505
    506         if (crStateIsBufferBound(GL_PIXEL_PACK_BUFFER_ARB))
     506        if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_PACK_BUFFER_ARB))
    507507        {
    508508            cr_server.head_spu->dispatch_table.BindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pContext->bufferobject.packBuffer->hwid);
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_simpleget.py

    r69390 r78375  
    6262        CRASSERT(tablesize/sizeof(%s)==1);
    6363        texid = (GLuint) *get_values;
    64         *get_values = (%s) crStateTextureHWIDtoID(texid);
     64        *get_values = (%s) crStateTextureHWIDtoID(&cr_server.StateTracker, texid);
    6565    }
    6666    else if (GL_CURRENT_PROGRAM==pname)
     
    6969        CRASSERT(tablesize/sizeof(%s)==1);
    7070        programid = (GLuint) *get_values;
    71         *get_values = (%s) crStateGLSLProgramHWIDtoID(programid);
     71        *get_values = (%s) crStateGLSLProgramHWIDtoID(&cr_server.StateTracker, programid);
    7272    }
    7373    else if (GL_FRAMEBUFFER_BINDING_EXT==pname
     
    8585        else
    8686        {
    87                 fboid = crStateFBOHWIDtoID(fboid);
     87                fboid = crStateFBOHWIDtoID(&cr_server.StateTracker, fboid);
    8888        }
    8989        *get_values = (%s) fboid;
     
    9393        if (crServerIsRedirectedToFBO()
    9494            && CR_SERVER_FBO_FOR_IDX(cr_server.curClient->currentMural, cr_server.curClient->currentMural->iCurReadBuffer)
    95             && !crStateGetCurrent()->framebufferobject.readFB)
     95            && !crStateGetCurrent(&cr_server.StateTracker)->framebufferobject.readFB)
    9696        {
    97             *get_values = (%s) crStateGetCurrent()->buffer.readBuffer;
    98             Assert(crStateGetCurrent()->buffer.readBuffer == GL_BACK || crStateGetCurrent()->buffer.readBuffer == GL_FRONT);
     97            *get_values = (%s) crStateGetCurrent(&cr_server.StateTracker)->buffer.readBuffer;
     98            Assert(crStateGetCurrent(&cr_server.StateTracker)->buffer.readBuffer == GL_BACK || crStateGetCurrent(&cr_server.StateTracker)->buffer.readBuffer == GL_FRONT);
    9999        }
    100100    }
     
    103103        if (crServerIsRedirectedToFBO()
    104104            && CR_SERVER_FBO_FOR_IDX(cr_server.curClient->currentMural, cr_server.curClient->currentMural->iCurDrawBuffer)
    105             && !crStateGetCurrent()->framebufferobject.drawFB)
     105            && !crStateGetCurrent(&cr_server.StateTracker)->framebufferobject.drawFB)
    106106        {
    107             *get_values = (%s) crStateGetCurrent()->buffer.drawBuffer;
    108             Assert(crStateGetCurrent()->buffer.drawBuffer == GL_BACK || crStateGetCurrent()->buffer.drawBuffer == GL_FRONT);
     107            *get_values = (%s) crStateGetCurrent(&cr_server.StateTracker)->buffer.drawBuffer;
     108            Assert(crStateGetCurrent(&cr_server.StateTracker)->buffer.drawBuffer == GL_BACK || crStateGetCurrent(&cr_server.StateTracker)->buffer.drawBuffer == GL_FRONT);
    109109        }
    110110    }
     
    114114        CRASSERT(tablesize/sizeof(%s)==1);
    115115        rbid = (GLuint) *get_values;
    116         *get_values = (%s) crStateRBOHWIDtoID(rbid);
     116        *get_values = (%s) crStateRBOHWIDtoID(&cr_server.StateTracker, rbid);
    117117    }
    118118    else if (GL_ARRAY_BUFFER_BINDING_ARB==pname
     
    131131        CRASSERT(tablesize/sizeof(%s)==1);
    132132        bufid = (GLuint) *get_values;
    133         *get_values = (%s) crStateBufferHWIDtoID(bufid);
     133        *get_values = (%s) crStateBufferHWIDtoID(&cr_server.StateTracker, bufid);
    134134    }
    135135    else if (GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS==pname)
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_stream.cpp

    r78263 r78375  
    580580        UnpackerState.pDispatchTbl     = &(cr_server.dispatch);
    581581        UnpackerState.rcUnpack         = VINF_SUCCESS;
     582        UnpackerState.pStateTracker    = &cr_server.StateTracker;
    582583
    583584        cr_server.pUnpackerState = &UnpackerState;
     
    695696        UnpackerState.pDispatchTbl     = &(cr_server.dispatch);
    696697        UnpackerState.rcUnpack         = VINF_SUCCESS;
     698        UnpackerState.pStateTracker    = &cr_server.StateTracker;
    697699
    698700        cr_server.pUnpackerState = &UnpackerState;
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_texture.cpp

    r78190 r78375  
    3939#if defined(CR_ARB_pixel_buffer_object)
    4040# define CR_CHECKBUFFER(name, checkptr)                     \
    41     if (crStateIsBufferBound(GL_PIXEL_UNPACK_BUFFER_ARB))   \
     41    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_UNPACK_BUFFER_ARB))   \
    4242    {                                                       \
    4343        CR_FIXPTR();                                        \
     
    5353#if defined(CR_ARB_pixel_buffer_object) && !defined(CR_STATE_NO_TEXTURE_IMAGE_STORE)
    5454# define CR_FINISHBUFFER()                                                                  \
    55     if (crStateIsBufferBound(GL_PIXEL_UNPACK_BUFFER_ARB))                                   \
     55    if (crStateIsBufferBound(&cr_server.StateTracker, GL_PIXEL_UNPACK_BUFFER_ARB))          \
    5656    {                                                                                       \
    5757        if (!cr_server.head_spu->dispatch_table.UnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB)) \
     
    6464#endif
    6565
    66 #define CR_FUNC_SUBIMAGE(name, def, call, ptrname)          \
    67 void SERVER_DISPATCH_APIENTRY                               \
    68 crServerDispatch##name def                                  \
    69 {                                                           \
    70     const GLvoid *realptr = ptrname;                        \
    71     CR_CHECKBUFFER(name, CR_CHECKPTR(name))                 \
    72     crState##name call;                                     \
    73     CR_FINISHBUFFER()                                       \
    74     realptr = ptrname;                                      \
    75     cr_server.head_spu->dispatch_table.name call;           \
    76 }
    77 
    78 #define CR_FUNC_IMAGE(name, def, call, ptrname)             \
    79 void SERVER_DISPATCH_APIENTRY                               \
    80 crServerDispatch##name def                                  \
    81 {                                                           \
    82     const GLvoid *realptr = ptrname;                        \
    83     CR_CHECKBUFFER(name, CR_NOTHING())                      \
    84     crState##name call;                                     \
    85     CR_FINISHBUFFER()                                       \
    86     realptr = ptrname;                                      \
    87     cr_server.head_spu->dispatch_table.name call;           \
     66#define CR_FUNC_SUBIMAGE(name, def, state_call, call, ptrname)          \
     67void SERVER_DISPATCH_APIENTRY                                           \
     68crServerDispatch##name def                                              \
     69{                                                                       \
     70    const GLvoid *realptr = ptrname;                                    \
     71    CR_CHECKBUFFER(name, CR_CHECKPTR(name))                             \
     72    crState##name state_call;                                           \
     73    CR_FINISHBUFFER()                                                   \
     74    realptr = ptrname;                                                  \
     75    cr_server.head_spu->dispatch_table.name call;                       \
     76}
     77
     78#define CR_FUNC_IMAGE(name, def, state_call, call, ptrname)             \
     79void SERVER_DISPATCH_APIENTRY                                           \
     80crServerDispatch##name def                                              \
     81{                                                                       \
     82    const GLvoid *realptr = ptrname;                                    \
     83    CR_CHECKBUFFER(name, CR_NOTHING())                                  \
     84    crState##name state_call;                                           \
     85    CR_FINISHBUFFER()                                                   \
     86    realptr = ptrname;                                                  \
     87    cr_server.head_spu->dispatch_table.name call;                       \
    8888}
    8989
     
    9191CR_FUNC_SUBIMAGE(CompressedTexSubImage1DARB,
    9292    (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imagesize, const GLvoid * data),
     93    (&cr_server.StateTracker, target, level, xoffset, width, format, imagesize, realptr),
    9394    (target, level, xoffset, width, format, imagesize, realptr), data)
    9495
    9596CR_FUNC_SUBIMAGE(CompressedTexSubImage2DARB,
    9697    (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imagesize, const GLvoid * data),
     98    (&cr_server.StateTracker, target, level, xoffset, yoffset, width, height, format, imagesize, realptr),
    9799    (target, level, xoffset, yoffset, width, height, format, imagesize, realptr), data)
    98100
    99101CR_FUNC_SUBIMAGE(CompressedTexSubImage3DARB,
    100102    (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imagesize, const GLvoid * data),
     103    (&cr_server.StateTracker, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imagesize, realptr),
    101104    (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imagesize, realptr), data)
    102105
    103106CR_FUNC_IMAGE(CompressedTexImage1DARB,
    104107    (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLsizei imagesize, const GLvoid * data),
     108    (&cr_server.StateTracker, target, level, internalFormat, width, border, imagesize, realptr),
    105109    (target, level, internalFormat, width, border, imagesize, realptr), data)
    106110
    107111CR_FUNC_IMAGE(CompressedTexImage2DARB,
    108112    (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imagesize, const GLvoid * data),
     113    (&cr_server.StateTracker, target, level, internalFormat, width, height, border, imagesize, realptr),
    109114    (target, level, internalFormat, width, height, border, imagesize, realptr), data)
    110115
    111116CR_FUNC_IMAGE(CompressedTexImage3DARB,
    112117    (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imagesize, const GLvoid * data),
     118    (&cr_server.StateTracker, target, level, internalFormat, width, height, depth, border, imagesize, realptr),
    113119    (target, level, internalFormat, width, height, depth, border, imagesize, realptr), data)
    114120#endif
     
    116122CR_FUNC_SUBIMAGE(TexSubImage1D,
    117123    (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels),
     124    (&cr_server.StateTracker, target, level, xoffset, width, format, type, realptr),
    118125    (target, level, xoffset, width, format, type, realptr), pixels)
    119126
    120127CR_FUNC_SUBIMAGE(TexSubImage2D,
    121128    (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels),
     129    (&cr_server.StateTracker, target, level, xoffset, yoffset, width, height, format, type, realptr),
    122130    (target, level, xoffset, yoffset, width, height, format, type, realptr), pixels)
    123131
    124132CR_FUNC_SUBIMAGE(TexSubImage3D,
    125133    (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels),
     134    (&cr_server.StateTracker, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, realptr),
    126135    (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, realptr), pixels)
    127136
    128137CR_FUNC_IMAGE(TexImage1D,
    129138    (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels),
     139    (&cr_server.StateTracker, target, level, internalFormat, width, border, format, type, realptr),
    130140    (target, level, internalFormat, width, border, format, type, realptr), pixels)
    131141
    132142CR_FUNC_IMAGE(TexImage2D,
    133143    (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels),
     144    (&cr_server.StateTracker, target, level, internalFormat, width, height, border, format, type, realptr),
    134145    (target, level, internalFormat, width, height, border, format, type, realptr), pixels)
    135146
    136147CR_FUNC_IMAGE(TexImage3D,
    137148    (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels),
     149    (&cr_server.StateTracker, target, level, internalFormat, width, height, depth, border, format, type, realptr),
    138150    (target, level, internalFormat, width, height, depth, border, format, type, realptr), pixels)
    139151
     
    141153void SERVER_DISPATCH_APIENTRY crServerDispatchTexEnvf( GLenum target, GLenum pname, GLfloat param )
    142154{
    143     crStateTexEnvf( target, pname, param );
     155    crStateTexEnvf(&cr_server.StateTracker, target, pname, param );
    144156    if (GL_POINT_SPRITE != target && pname != GL_COORD_REPLACE)
    145157        CR_GLERR_CHECK(cr_server.head_spu->dispatch_table.TexEnvf( target, pname, param ););
     
    148160void SERVER_DISPATCH_APIENTRY crServerDispatchTexEnvfv( GLenum target, GLenum pname, const GLfloat * params )
    149161{
    150     crStateTexEnvfv( target, pname, params );
     162    crStateTexEnvfv(&cr_server.StateTracker, target, pname, params );
    151163    if (GL_POINT_SPRITE != target && pname != GL_COORD_REPLACE)
    152164        CR_GLERR_CHECK(cr_server.head_spu->dispatch_table.TexEnvfv( target, pname, params ););
     
    155167void SERVER_DISPATCH_APIENTRY crServerDispatchTexEnvi( GLenum target, GLenum pname, GLint param )
    156168{
    157     crStateTexEnvi( target, pname, param );
     169    crStateTexEnvi(&cr_server.StateTracker, target, pname, param );
    158170    if (GL_POINT_SPRITE != target && pname != GL_COORD_REPLACE)
    159171        CR_GLERR_CHECK(cr_server.head_spu->dispatch_table.TexEnvi( target, pname, param ););
     
    162174void SERVER_DISPATCH_APIENTRY crServerDispatchTexEnviv( GLenum target, GLenum pname, const GLint * params )
    163175{
    164     crStateTexEnviv( target, pname, params );
     176    crStateTexEnviv(&cr_server.StateTracker, target, pname, params );
    165177    if (GL_POINT_SPRITE != target && pname != GL_COORD_REPLACE)
    166178        CR_GLERR_CHECK(cr_server.head_spu->dispatch_table.TexEnviv( target, pname, params ););
     
    175187        cr_server.head_spu->dispatch_table.GetTexEnvfv( target, pname, local_params );
    176188    else
    177         crStateGetTexEnvfv( target, pname, local_params );
     189        crStateGetTexEnvfv(&cr_server.StateTracker, target, pname, local_params );
    178190
    179191    cComponents = RT_MIN(crStateHlpComponentsCount(pname), RT_ELEMENTS(local_params));
     
    189201        cr_server.head_spu->dispatch_table.GetTexEnviv( target, pname, local_params );
    190202    else
    191         crStateGetTexEnviv( target, pname, local_params );
     203        crStateGetTexEnviv(&cr_server.StateTracker, target, pname, local_params );
    192204
    193205    cComponents = RT_MIN(crStateHlpComponentsCount(pname), RT_ELEMENTS(local_params));
     
    197209void SERVER_DISPATCH_APIENTRY crServerDispatchBindTexture( GLenum target, GLuint texture )
    198210{
    199     crStateBindTexture( target, texture );
    200     cr_server.head_spu->dispatch_table.BindTexture(target, crStateGetTextureHWID(texture));
     211    crStateBindTexture(&cr_server.StateTracker, target, texture );
     212    cr_server.head_spu->dispatch_table.BindTexture(target, crStateGetTextureHWID(&cr_server.StateTracker, texture));
    201213}
    202214
     
    223235    for (i = 0; i < n; i++)
    224236    {
    225         newTextures[i] = crStateGetTextureHWID(textures[i]);
     237        newTextures[i] = crStateGetTextureHWID(&cr_server.StateTracker, textures[i]);
    226238    }
    227239
     
    232244
    233245
    234     crStateDeleteTextures(n, textures);
     246    crStateDeleteTextures(&cr_server.StateTracker, n, textures);
    235247    cr_server.head_spu->dispatch_table.DeleteTextures(n, newTextures);
    236248    crFree(newTextures);
     
    257269    }
    258270
    259     crStatePrioritizeTextures(n, textures, priorities);
     271    crStatePrioritizeTextures(&cr_server.StateTracker, n, textures, priorities);
    260272
    261273    for (i = 0; i < n; i++)
    262274    {
    263         newTextures[i] = crStateGetTextureHWID(textures[i]);
     275        newTextures[i] = crStateGetTextureHWID(&cr_server.StateTracker, textures[i]);
    264276    }
    265277
     
    273285{
    274286    GLboolean retval;
    275     retval = cr_server.head_spu->dispatch_table.IsTexture(crStateGetTextureHWID(texture));
     287    retval = cr_server.head_spu->dispatch_table.IsTexture(crStateGetTextureHWID(&cr_server.StateTracker, texture));
    276288    crServerReturnValue( &retval, sizeof(retval) );
    277289    return retval; /* WILL PROBABLY BE IGNORED */
     
    313325    for (i = 0; i < n; i++)
    314326    {
    315         textures2[i] = crStateGetTextureHWID(textures[i]);
     327        textures2[i] = crStateGetTextureHWID(&cr_server.StateTracker, textures[i]);
    316328    }
    317329    retval = cr_server.head_spu->dispatch_table.AreTexturesResident(n, textures2, res);
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_viewport.cpp

    r78263 r78375  
    276276void SERVER_DISPATCH_APIENTRY crServerDispatchViewport( GLint x, GLint y, GLsizei width, GLsizei height )
    277277{
    278         CRContext *ctx = crStateGetCurrent();
     278        CRContext *ctx = crStateGetCurrent(&cr_server.StateTracker);
    279279
    280280        if (ctx->viewport.viewportX != x ||
     
    284284                 /* Note -- If there are tiles, this will be overridden in the
    285285                        * process of decoding the BoundsInfo packet, so no worries. */
    286                  crStateViewport( x, y, width, height );
     286                 crStateViewport(&cr_server.StateTracker, x, y, width, height );
    287287        }
    288288
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.cpp

    r78263 r78375  
    351351            && !mural->fRedirected)
    352352    {
    353         crStateGetCurrent()->buffer.width = mural->width;
    354         crStateGetCurrent()->buffer.height = mural->height;
     353        crStateGetCurrent(&cr_server.StateTracker)->buffer.width = mural->width;
     354        crStateGetCurrent(&cr_server.StateTracker)->buffer.height = mural->height;
    355355    }
    356356
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_winpos.cpp

    r78190 r78375  
    99static void crServerWindowPos( GLfloat x, GLfloat y, GLfloat z )
    1010{
    11         crStateWindowPos3fARB(x, y, z);
     11        crStateWindowPos3fARB(&cr_server.StateTracker, x, y, z);
    1212        cr_server.head_spu->dispatch_table.WindowPos3fARB(x, y, z);
    1313}
Note: See TracChangeset for help on using the changeset viewer.

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