VirtualBox

Ignore:
Timestamp:
Mar 6, 2013 7:45:08 PM (12 years ago)
Author:
vboxsync
Message:

crOpenGL: Fedora 18 saved state working, multiple saved state fixes, debugging stuff

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c

    r44924 r44937  
    10241024    GLuint width;
    10251025    GLuint height;
    1026 
    1027     CRASSERT(pCtxInfo->currentMural);
    10281026
    10291027    crMemset(pData, 0, sizeof (*pData));
     
    14981496    }
    14991497
     1498#define CR_DBG_STR_STATE_SAVE_START "VBox.Cr.StateSaveStart"
     1499#define CR_DBG_STR_STATE_SAVE_STOP "VBox.Cr.StateSaveStop"
     1500
     1501    if (cr_server.head_spu->dispatch_table.StringMarkerGREMEDY)
     1502        cr_server.head_spu->dispatch_table.StringMarkerGREMEDY(sizeof (CR_DBG_STR_STATE_SAVE_START), CR_DBG_STR_STATE_SAVE_START);
     1503
    15001504    /* Save rendering contexts creation info */
    15011505    ui32 = crHashtableNumElements(cr_server.contextTable);
     
    16141618    cr_server.bIsInSavingState = GL_FALSE;
    16151619
     1620    if (cr_server.head_spu->dispatch_table.StringMarkerGREMEDY)
     1621        cr_server.head_spu->dispatch_table.StringMarkerGREMEDY(sizeof (CR_DBG_STR_STATE_SAVE_STOP), CR_DBG_STR_STATE_SAVE_STOP);
     1622
    16161623    return VINF_SUCCESS;
    16171624}
     
    17271734    if (version >= SHCROGL_SSM_VERSION_WITH_SAVED_DEPTH_STENCIL_BUFFER)
    17281735    {
    1729         CRASSERT(cr_server.currentCtxInfo == pContextInfo);
    1730         CRASSERT(cr_server.currentMural = pMural);
    1731 
    17321736        if (!pMural->width || !pMural->height)
    17331737            return VINF_SUCCESS;
     
    17811785        CRBufferState *pBuf = &pContext->buffer;
    17821786        /* can apply the data right away */
    1783         CRASSERT(cr_server.currentCtxInfo == pContextInfo);
    1784         CRASSERT(cr_server.currentMural = pMural);
    1785 
     1787        CRASSERT(cr_server.currentCtxInfo == &cr_server.MainContextInfo);
     1788        CRASSERT(cr_server.currentMural);
     1789
     1790        cr_server.head_spu->dispatch_table.MakeCurrent( pMural->spuWindow,
     1791                                                                0,
     1792                                                                pContextInfo->SpuContext >= 0
     1793                                                                    ? pContextInfo->SpuContext
     1794                                                                      : cr_server.MainContextInfo.SpuContext);
    17861795        crStateApplyFBImage(pContext, &Data.data);
    1787         AssertRCReturn(rc, rc);
    17881796        CRASSERT(!pBuf->pFrontImg);
    17891797        CRASSERT(!pBuf->pBackImg);
     
    17941802            crServerPresentFBO(pMural);
    17951803        }
     1804
     1805        CRASSERT(cr_server.currentMural);
     1806        cr_server.head_spu->dispatch_table.MakeCurrent( cr_server.currentMural->spuWindow,
     1807                                                                    0,
     1808                                                                    cr_server.currentCtxInfo->SpuContext >= 0
     1809                                                                        ? cr_server.currentCtxInfo->SpuContext
     1810                                                                          : cr_server.MainContextInfo.SpuContext);
    17961811    }
    17971812    else
     
    18511866    }
    18521867
     1868#define CR_DBG_STR_STATE_LOAD_START "VBox.Cr.StateLoadStart"
     1869#define CR_DBG_STR_STATE_LOAD_STOP "VBox.Cr.StateLoadStop"
     1870
     1871    if (cr_server.head_spu->dispatch_table.StringMarkerGREMEDY)
     1872        cr_server.head_spu->dispatch_table.StringMarkerGREMEDY(sizeof (CR_DBG_STR_STATE_LOAD_START), CR_DBG_STR_STATE_LOAD_START);
     1873
    18531874    /* Load and recreate rendering contexts */
    18541875    rc = SSMR3GetU32(pSSM, &uiNumElems);
     
    19001921    rc = crStateLoadGlobals(pSSM, version);
    19011922    AssertRCReturn(rc, rc);
     1923
     1924    if (uiNumElems)
     1925    {
     1926        /* ensure we have main context set up as current */
     1927        CRMuralInfo *pMural;
     1928        CRASSERT(cr_server.MainContextInfo.SpuContext > 0);
     1929        CRASSERT(!cr_server.currentCtxInfo);
     1930        CRASSERT(!cr_server.currentMural);
     1931        pMural = crServerGetDummyMural(cr_server.MainContextInfo.CreateInfo.visualBits);
     1932        CRASSERT(pMural);
     1933        crServerPerformMakeCurrent(pMural, &cr_server.MainContextInfo);
     1934    }
    19021935
    19031936    /* Restore context state data */
     
    19331966                CRASSERT(pMural);
    19341967            }
    1935 
    1936             crServerPerformMakeCurrent(pMural, pContextInfo);
    19371968        }
    19381969
     
    19772008            pInitialCurMural = pContextInfo->currentMural;
    19782009
    1979             crServerPerformMakeCurrent(pMural, pContextInfo);
    1980 
    19812010            rc = crVBoxServerLoadFBImage(pSSM, version, pContextInfo, pMural);
    19822011            AssertRCReturn(rc, rc);
     
    19872016        }
    19882017
    1989         if (cr_server.currentCtxInfo != &cr_server.MainContextInfo)
    1990         {
    1991             /* most ogl data gets loaded to hw on chromium 3D state switch, i.e. inside crStateMakeCurrent -> crStateSwitchContext
    1992              * to force the crStateSwitchContext being called later, we need to  set the current context to our dummy one */
    1993             pMural = crServerGetDummyMural(cr_server.MainContextInfo.CreateInfo.visualBits);
    1994             CRASSERT(pMural);
    1995             crServerPerformMakeCurrent(pMural, &cr_server.MainContextInfo);
    1996         }
     2018        CRASSERT(cr_server.currentCtxInfo == &cr_server.MainContextInfo);
    19972019
    19982020        cr_server.curClient = NULL;
     
    21502172    crVBoxServerCheckConsistency();
    21512173#endif
     2174
     2175    if (cr_server.head_spu->dispatch_table.StringMarkerGREMEDY)
     2176        cr_server.head_spu->dispatch_table.StringMarkerGREMEDY(sizeof (CR_DBG_STR_STATE_LOAD_STOP), CR_DBG_STR_STATE_LOAD_STOP);
     2177
    21522178
    21532179    return VINF_SUCCESS;
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