VirtualBox

Changeset 82114 in vbox for trunk/src


Ignore:
Timestamp:
Nov 22, 2019 11:05:31 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
134924
Message:

DevVGA: Splitting up the VMSVGASTATE structure. bugref:9218

Location:
trunk/src/VBox/Devices/Graphics
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.cpp

    r82110 r82114  
    497497static SSMFIELD const g_aVGAStateSVGAFields[] =
    498498{
    499     SSMFIELD_ENTRY_IGN_HCPTR(       VMSVGAState, pFIFOR3),
    500     SSMFIELD_ENTRY_IGN_HCPTR(       VMSVGAState, pFIFOR0),
    501     SSMFIELD_ENTRY_IGN_HCPTR(       VMSVGAState, pSvgaR3State),
    502     SSMFIELD_ENTRY_IGN_HCPTR(       VMSVGAState, p3dState),
    503     SSMFIELD_ENTRY_IGN_HCPTR(       VMSVGAState, pbVgaFrameBufferR3),
    504     SSMFIELD_ENTRY_IGN_HCPTR(       VMSVGAState, pvFIFOExtCmdParam),
    505499    SSMFIELD_ENTRY_IGN_GCPHYS(      VMSVGAState, GCPhysFIFO),
    506500    SSMFIELD_ENTRY_IGNORE(          VMSVGAState, cbFIFO),
     
    521515    SSMFIELD_ENTRY(                 VMSVGAState, u32IndexReg),
    522516    SSMFIELD_ENTRY_IGNORE(          VMSVGAState, hFIFORequestSem),
    523     SSMFIELD_ENTRY_IGNORE(          VMSVGAState, hFIFOExtCmdSem),
    524     SSMFIELD_ENTRY_IGN_HCPTR(       VMSVGAState, pFIFOIOThread),
    525517    SSMFIELD_ENTRY_IGNORE(          VMSVGAState, uLastCursorUpdateCount),
    526518    SSMFIELD_ENTRY_IGNORE(          VMSVGAState, fFIFOThreadSleeping),
     
    549541#ifdef IN_RING3
    550542static void vmsvgaR3SetTraces(PPDMDEVINS pDevIns, PVGASTATE pThis, bool fTraces);
    551 static int vmsvgaR3LoadExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass);
    552 static int vmsvgaR3SaveExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PSSMHANDLE pSSM);
     543static int vmsvgaR3LoadExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PVGASTATECC pThisCC, PSSMHANDLE pSSM,
     544                                uint32_t uVersion, uint32_t uPass);
     545static int vmsvgaR3SaveExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATECC pThisCC, PSSMHANDLE pSSM);
     546static void vmsvgaR3GmrFree(PVGASTATECC pThisCC, uint32_t idGMR);
    553547#endif /* IN_RING3 */
    554548
     
    556550
    557551#ifdef IN_RING3
    558 VMSVGASCREENOBJECT *vmsvgaR3GetScreenObject(PVGASTATE pThis, uint32_t idScreen)
     552VMSVGASCREENOBJECT *vmsvgaR3GetScreenObject(PVGASTATECC pThisCC, uint32_t idScreen)
    559553{
    560     PVMSVGAR3STATE pSVGAState = pThis->svga.pSvgaR3State;
     554    PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State;
    561555    if (   idScreen < (uint32_t)RT_ELEMENTS(pSVGAState->aScreens)
    562556        && pSVGAState
     
    725719
    726720    /** @todo Test how it interacts with multiple screen objects. */
    727     VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis, idScreen);
     721    VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, idScreen);
    728722    uint32_t const uWidth = pScreen ? pScreen->cWidth : 0;
    729723    uint32_t const uHeight = pScreen ? pScreen->cHeight : 0;
     
    761755     */
    762756    if (pThis->svga.f3DEnabled)
    763         vmsvga3dUpdateHostScreenViewport(pThis, idScreen, &OldViewport);
     757        vmsvga3dUpdateHostScreenViewport(pThisCC, idScreen, &OldViewport);
    764758# else
    765759    RT_NOREF(OldViewport);
     
    10781072                /* The guest is basically doing a HLT via the device here, but with
    10791073                   a special wake up condition on FIFO completion. */
    1080                 PVMSVGAR3STATE pSVGAState = pThis->svga.pSvgaR3State;
     1074                PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State;
    10811075                STAM_REL_PROFILE_START(&pSVGAState->StatBusyDelayEmts, EmtDelay);
    10821076                PVM         pVM   = PDMDevHlpGetVM(pDevIns);
     
    10971091                   This used to be a crude 50 ms sleep. The current code tries to be
    10981092                   more efficient, but the consept is still very crude. */
    1099                 PVMSVGAR3STATE pSVGAState = pThis->svga.pSvgaR3State;
     1093                PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State;
    11001094                STAM_REL_PROFILE_START(&pSVGAState->StatBusyDelayEmts, EmtDelay);
    11011095                RTThreadYield();
     
    13001294
    13011295    /* Always do changemode on FIFO thread. */
    1302     Assert(RTThreadSelf() == pThis->svga.pFIFOIOThread->Thread);
    1303 
    1304     PVMSVGAR3STATE pSVGAState = pThis->svga.pSvgaR3State;
     1296    Assert(RTThreadSelf() == pThisCC->svga.pFIFOIOThread->Thread);
     1297
     1298    PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State;
    13051299
    13061300    pThisCC->pDrv->pfnLFBModeChange(pThisCC->pDrv, true);
     
    14441438 * Safely updates the SVGA_FIFO_BUSY register (in shared memory).
    14451439 *
    1446  * @param   pThis               The VMSVGA state.
    1447  * @param   fState              The busy state.
     1440 * @param   pThis       The shared VGA/VMSVGA instance data.
     1441 * @param   pThisCC     The VGA/VMSVGA state for the current context.
     1442 * @param   fState      The busy state.
    14481443 */
    1449 DECLINLINE(void) vmsvgaHCSafeFifoBusyRegUpdate(PVGASTATE pThis, bool fState)
     1444DECLINLINE(void) vmsvgaHCSafeFifoBusyRegUpdate(PVGASTATE pThis, PVGASTATECC pThisCC, bool fState)
    14501445{
    1451     ASMAtomicWriteU32(&pThis->svga.CTX_SUFF(pFIFO)[SVGA_FIFO_BUSY], fState);
     1446    ASMAtomicWriteU32(&pThisCC->svga.pau32FIFO[SVGA_FIFO_BUSY], fState);
    14521447
    14531448    if (RT_UNLIKELY(fState != (pThis->svga.fBusy != 0)))
     
    14591454            ASMNopPause();
    14601455            fState = (pThis->svga.fBusy != 0);
    1461             ASMAtomicWriteU32(&pThis->svga.CTX_SUFF(pFIFO)[SVGA_FIFO_BUSY], fState != 0);
     1456            ASMAtomicWriteU32(&pThisCC->svga.pau32FIFO[SVGA_FIFO_BUSY], fState != 0);
    14621457        } while (cLoops-- > 0 && fState != (pThis->svga.fBusy != 0));
    14631458    }
     
    14701465 *
    14711466 * @param   pThis       The shared VGA/VMSVGA state.
     1467 * @param   pThisCC     The VGA/VMSVGA state for the current context.
    14721468 */
    1473 DECLINLINE(void) vmsvgaHCUpdatePitch(PVGASTATE pThis)
     1469DECLINLINE(void) vmsvgaHCUpdatePitch(PVGASTATE pThis, PVGASTATECC pThisCC)
    14741470{
    1475     uint32_t RT_UNTRUSTED_VOLATILE_GUEST *pFIFO = pThis->svga.CTX_SUFF(pFIFO);
     1471    uint32_t RT_UNTRUSTED_VOLATILE_GUEST *pFIFO = pThisCC->svga.pau32FIFO;
    14761472    uint32_t uFifoPitchLock = pFIFO[SVGA_FIFO_PITCHLOCK];
    14771473    uint32_t uRegPitchLock  = pThis->svga.u32PitchLock;
     
    15181514{
    15191515#ifdef IN_RING3
    1520     PVMSVGAR3STATE pSVGAState = pThis->svga.pSvgaR3State;
     1516    PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State;
    15211517#endif
    15221518    VBOXSTRICTRC rc = VINF_SUCCESS;
     
    15761572                /* Make a backup copy of the first 512kb in order to save font data etc. */
    15771573                /** @todo should probably swap here, rather than copy + zero */
    1578                 memcpy(pThis->svga.pbVgaFrameBufferR3, pThisCC->pbVRam, VMSVGA_VGA_FB_BACKUP_SIZE);
     1574                memcpy(pThisCC->svga.pbVgaFrameBufferR3, pThisCC->pbVRam, VMSVGA_VGA_FB_BACKUP_SIZE);
    15791575                memset(pThisCC->pbVRam, 0, VMSVGA_VGA_FB_BACKUP_SIZE);
    15801576            }
     
    15981594                    ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE);
    15991595# ifdef LOG_ENABLED
    1600                 uint32_t *pFIFO = pThis->svga.pFIFOR3;
     1596                uint32_t *pFIFO = pThisCC->svga.pau32FIFO;
    16011597                Log(("configured=%d busy=%d\n", pThis->svga.fConfigured, pFIFO[SVGA_FIFO_BUSY]));
    16021598                Log(("next %x stop %x\n", pFIFO[SVGA_FIFO_NEXT_CMD], pFIFO[SVGA_FIFO_STOP]));
     
    16131609            {
    16141610                /* Restore the text mode backup. */
    1615                 memcpy(pThisCC->pbVRam, pThis->svga.pbVgaFrameBufferR3, VMSVGA_VGA_FB_BACKUP_SIZE);
     1611                memcpy(pThisCC->pbVRam, pThisCC->svga.pbVgaFrameBufferR3, VMSVGA_VGA_FB_BACKUP_SIZE);
    16161612
    16171613                pThisCC->pDrv->pfnLFBModeChange(pThisCC->pDrv, false);
     
    16381634#if defined(IN_RING3) || defined(IN_RING0)
    16391635                pThis->svga.uWidth = u32;
    1640                 vmsvgaHCUpdatePitch(pThis);
     1636                vmsvgaHCUpdatePitch(pThis, pThisCC);
    16411637                if (pThis->svga.fEnabled)
    16421638                    ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE);
     
    16701666#if defined(IN_RING3) || defined(IN_RING0)
    16711667                pThis->svga.uBpp = u32;
    1672                 vmsvgaHCUpdatePitch(pThis);
     1668                vmsvgaHCUpdatePitch(pThis, pThisCC);
    16731669                if (pThis->svga.fEnabled)
    16741670                    ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE);
     
    17031699            {
    17041700#if defined(IN_RING3) || defined(IN_RING0)
    1705                 Log(("SVGA_REG_SYNC: SVGA_FIFO_BUSY=%d\n", pThis->svga.CTX_SUFF(pFIFO)[SVGA_FIFO_BUSY]));
     1701                Log(("SVGA_REG_SYNC: SVGA_FIFO_BUSY=%d\n", pThisCC->svga.pau32FIFO[SVGA_FIFO_BUSY]));
    17061702                ASMAtomicWriteU32(&pThis->svga.fBusy, VMSVGA_BUSY_F_EMT_FORCE | VMSVGA_BUSY_F_FIFO);
    1707                 if (VMSVGA_IS_VALID_FIFO_REG(SVGA_FIFO_BUSY, pThis->svga.CTX_SUFF(pFIFO)[SVGA_FIFO_MIN]))
    1708                     vmsvgaHCSafeFifoBusyRegUpdate(pThis, true);
     1703                if (VMSVGA_IS_VALID_FIFO_REG(SVGA_FIFO_BUSY, pThisCC->svga.pau32FIFO[SVGA_FIFO_MIN]))
     1704                    vmsvgaHCSafeFifoBusyRegUpdate(pThis, pThisCC, true);
    17091705
    17101706                /* Kick the FIFO thread to start processing commands again. */
     
    18001796
    18011797            /* Free the old GMR if present. */
    1802             vmsvgaR3GmrFree(pThis, idGMR);
     1798            vmsvgaR3GmrFree(pThisCC, idGMR);
    18031799
    18041800            /* Just undefine the GMR? */
     
    20652061    RT_NOREF(pVM);
    20662062    RTGCPHYS GCPhysOffset = GCPhys - pThis->svga.GCPhysFIFO;
    2067     uint32_t *pFIFO = pThis->svga.pFIFOR3;
     2063    uint32_t *pFIFO = pThisCC->svga.pau32FIFO;
    20682064
    20692065    switch (GCPhysOffset >> 2)
     
    24362432     * Temporarily disable the access handler now that we've kicked the FIFO thread.
    24372433     */
    2438     STAM_REL_COUNTER_INC(&pThis->svga.pSvgaR3State->StatFifoAccessHandler);
     2434    STAM_REL_COUNTER_INC(&pThisCC->svga.pSvgaR3State->StatFifoAccessHandler);
    24392435    rc = PGMHandlerPhysicalPageTempOff(pVM, pThis->svga.GCPhysFIFO, pThis->svga.GCPhysFIFO);
    24402436# endif
     
    24722468    PVGASTATE   pThis = (PVGASTATE)pvUser;
    24732469    Assert(pThis);
    2474     PVMSVGAR3STATE pSVGAState = pThis->svga.pSvgaR3State;
     2470    PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State;
    24752471    NOREF(pVCpu); NOREF(pvPhys); NOREF(pvBuf); NOREF(cbBuf); NOREF(enmAccessType); NOREF(enmOrigin);
    24762472
     
    25072503{
    25082504    PVGASTATE       pThis = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
    2509     PVMSVGAR3STATE  pSVGAState = pThis->svga.pSvgaR3State;
     2505    PVMSVGAR3STATE  pSVGAState = pThisCC->svga.pSvgaR3State;
    25102506    PGMR pGMR = &pSVGAState->paGMR[gmrId];
    25112507    int rc;
     
    25252521{
    25262522    PVGASTATE       pThis = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
    2527     PVMSVGAR3STATE  pSVGAState = pThis->svga.pSvgaR3State;
     2523    PVMSVGAR3STATE  pSVGAState = pThisCC->svga.pSvgaR3State;
    25282524    PGMR pGMR = &pSVGAState->paGMR[gmrId];
    25292525
     
    25392535static DECLCALLBACK(int) vmsvgaR3ResetGmrHandlers(PVGASTATE pThis)
    25402536{
    2541     PVMSVGAR3STATE pSVGAState = pThis->svga.pSvgaR3State;
     2537    PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State;
    25422538
    25432539    for (uint32_t i = 0; i < pThis->svga.cGMR; ++i)
     
    29032899        case VMSVGA_FIFO_EXTCMD_RESET:
    29042900            Log(("vmsvgaR3FifoLoop: reset the fifo thread.\n"));
    2905             Assert(pThis->svga.pvFIFOExtCmdParam == NULL);
     2901            Assert(pThisCC->svga.pvFIFOExtCmdParam == NULL);
    29062902# ifdef VBOX_WITH_VMSVGA3D
    29072903            if (pThis->svga.f3DEnabled)
    29082904            {
    29092905                /* The 3d subsystem must be reset from the fifo thread. */
    2910                 vmsvga3dReset(pThis);
     2906                vmsvga3dReset(pThisCC);
    29112907            }
    29122908# endif
     
    29152911        case VMSVGA_FIFO_EXTCMD_TERMINATE:
    29162912            Log(("vmsvgaR3FifoLoop: terminate the fifo thread.\n"));
    2917             Assert(pThis->svga.pvFIFOExtCmdParam == NULL);
     2913            Assert(pThisCC->svga.pvFIFOExtCmdParam == NULL);
    29182914# ifdef VBOX_WITH_VMSVGA3D
    29192915            if (pThis->svga.f3DEnabled)
    29202916            {
    29212917                /* The 3d subsystem must be shut down from the fifo thread. */
    2922                 vmsvga3dTerminate(pThis);
     2918                vmsvga3dTerminate(pThisCC);
    29232919            }
    29242920# endif
     
    29282924        {
    29292925            Log(("vmsvgaR3FifoLoop: VMSVGA_FIFO_EXTCMD_SAVESTATE.\n"));
    2930             PSSMHANDLE pSSM = (PSSMHANDLE)pThis->svga.pvFIFOExtCmdParam;
     2926            PSSMHANDLE pSSM = (PSSMHANDLE)pThisCC->svga.pvFIFOExtCmdParam;
    29312927            AssertLogRelMsgBreak(RT_VALID_PTR(pSSM), ("pSSM=%p\n", pSSM));
    2932             vmsvgaR3SaveExecFifo(pDevIns->pHlpR3, pThis, pSSM);
     2928            vmsvgaR3SaveExecFifo(pDevIns->pHlpR3, pThisCC, pSSM);
    29332929# ifdef VBOX_WITH_VMSVGA3D
    29342930            if (pThis->svga.f3DEnabled)
    2935                 vmsvga3dSaveExec(pDevIns, pThis, pSSM);
     2931                vmsvga3dSaveExec(pDevIns, pThisCC, pSSM);
    29362932# endif
    29372933            break;
     
    29412937        {
    29422938            Log(("vmsvgaR3FifoLoop: VMSVGA_FIFO_EXTCMD_LOADSTATE.\n"));
    2943             PVMSVGA_STATE_LOAD pLoadState = (PVMSVGA_STATE_LOAD)pThis->svga.pvFIFOExtCmdParam;
     2939            PVMSVGA_STATE_LOAD pLoadState = (PVMSVGA_STATE_LOAD)pThisCC->svga.pvFIFOExtCmdParam;
    29442940            AssertLogRelMsgBreak(RT_VALID_PTR(pLoadState), ("pLoadState=%p\n", pLoadState));
    2945             vmsvgaR3LoadExecFifo(pDevIns->pHlpR3, pThis, pLoadState->pSSM, pLoadState->uVersion, pLoadState->uPass);
     2941            vmsvgaR3LoadExecFifo(pDevIns->pHlpR3, pThis, pThisCC, pLoadState->pSSM, pLoadState->uVersion, pLoadState->uPass);
    29462942# ifdef VBOX_WITH_VMSVGA3D
    29472943            if (pThis->svga.f3DEnabled)
     
    29542950        {
    29552951# ifdef VBOX_WITH_VMSVGA3D
    2956             uint32_t sid = (uint32_t)(uintptr_t)pThis->svga.pvFIFOExtCmdParam;
     2952            uint32_t sid = (uint32_t)(uintptr_t)pThisCC->svga.pvFIFOExtCmdParam;
    29572953            Log(("vmsvgaR3FifoLoop: VMSVGA_FIFO_EXTCMD_UPDATE_SURFACE_HEAP_BUFFERS sid=%#x\n", sid));
    2958             vmsvga3dUpdateHeapBuffersForSurfaces(pThis, sid);
     2954            vmsvga3dUpdateHeapBuffersForSurfaces(pThisCC, sid);
    29592955# endif
    29602956            break;
     
    29632959
    29642960        default:
    2965             AssertLogRelMsgFailed(("uExtCmd=%#x pvFIFOExtCmdParam=%p\n", uExtCmd, pThis->svga.pvFIFOExtCmdParam));
     2961            AssertLogRelMsgFailed(("uExtCmd=%#x pvFIFOExtCmdParam=%p\n", uExtCmd, pThisCC->svga.pvFIFOExtCmdParam));
    29662962            break;
    29672963    }
     
    29702966     * Signal the end of the external command.
    29712967     */
    2972     pThis->svga.pvFIFOExtCmdParam = NULL;
     2968    pThisCC->svga.pvFIFOExtCmdParam = NULL;
    29732969    pThis->svga.u8FIFOExtCommand  = VMSVGA_FIFO_EXTCMD_NONE;
    29742970    ASMMemoryFence(); /* paranoia^2 */
    2975     int rc = RTSemEventSignal(pThis->svga.hFIFOExtCmdSem);
     2971    int rc = RTSemEventSignal(pThisCC->svga.hFIFOExtCmdSem);
    29762972    AssertLogRelRC(rc);
    29772973}
     
    29842980 * @param   pDevIns         The device instance.
    29852981 * @param   pThis           The shared VGA/VMSVGA instance data.
     2982 * @param   pThisCC         The VGA/VMSVGA state for ring-3.
    29862983 * @param   uExtCmd         The command to execute on the FIFO thread.
    29872984 * @param   pvParam         Pointer to command parameters.
     
    29892986 *                          milliseconds.
    29902987 */
    2991 static int vmsvgaR3RunExtCmdOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis,
     2988static int vmsvgaR3RunExtCmdOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC,
    29922989                                         uint8_t uExtCmd, void *pvParam, RTMSINTERVAL cMsWait)
    29932990{
     
    29972994
    29982995    int rc;
    2999     PPDMTHREAD      pThread  = pThis->svga.pFIFOIOThread;
     2996    PPDMTHREAD      pThread  = pThisCC->svga.pFIFOIOThread;
    30002997    PDMTHREADSTATE  enmState = pThread->enmState;
    30012998    if (enmState == PDMTHREADSTATE_SUSPENDED)
     
    30093006        /* Post the request. */
    30103007        pThis->svga.fFifoExtCommandWakeup = true;
    3011         pThis->svga.pvFIFOExtCmdParam     = pvParam;
     3008        pThisCC->svga.pvFIFOExtCmdParam     = pvParam;
    30123009        pThis->svga.u8FIFOExtCommand      = uExtCmd;
    30133010        ASMMemoryFence(); /* paranoia^3 */
     
    30193016        {
    30203017            /* Wait. Take care in case the semaphore was already posted (same as below). */
    3021             rc = RTSemEventWait(pThis->svga.hFIFOExtCmdSem, cMsWait);
     3018            rc = RTSemEventWait(pThisCC->svga.hFIFOExtCmdSem, cMsWait);
    30223019            if (   rc == VINF_SUCCESS
    30233020                && pThis->svga.u8FIFOExtCommand == uExtCmd)
    3024                 rc = RTSemEventWait(pThis->svga.hFIFOExtCmdSem, cMsWait);
     3021                rc = RTSemEventWait(pThisCC->svga.hFIFOExtCmdSem, cMsWait);
    30253022            AssertLogRelMsg(pThis->svga.u8FIFOExtCommand != uExtCmd || RT_FAILURE_NP(rc),
    30263023                            ("%#x %Rrc\n", pThis->svga.u8FIFOExtCommand, rc));
     
    30343031        }
    30353032        pThis->svga.fFifoExtCommandWakeup = false;
    3036         pThis->svga.pvFIFOExtCmdParam     = NULL;
     3033        pThisCC->svga.pvFIFOExtCmdParam     = NULL;
    30373034    }
    30383035    else if (enmState == PDMTHREADSTATE_RUNNING)
     
    30463043
    30473044        /* Post the request. */
    3048         pThis->svga.pvFIFOExtCmdParam = pvParam;
     3045        pThisCC->svga.pvFIFOExtCmdParam = pvParam;
    30493046        pThis->svga.u8FIFOExtCommand  = uExtCmd;
    30503047        ASMMemoryFence(); /* paranoia^2 */
     
    30533050
    30543051        /* Wait. Take care in case the semaphore was already posted (same as above). */
    3055         rc = RTSemEventWait(pThis->svga.hFIFOExtCmdSem, cMsWait);
     3052        rc = RTSemEventWait(pThisCC->svga.hFIFOExtCmdSem, cMsWait);
    30563053        if (   rc == VINF_SUCCESS
    30573054            && pThis->svga.u8FIFOExtCommand == uExtCmd)
    3058             rc = RTSemEventWait(pThis->svga.hFIFOExtCmdSem, cMsWait); /* it was already posted, retry the wait. */
     3055            rc = RTSemEventWait(pThisCC->svga.hFIFOExtCmdSem, cMsWait); /* it was already posted, retry the wait. */
    30593056        AssertLogRelMsg(pThis->svga.u8FIFOExtCommand != uExtCmd || RT_FAILURE_NP(rc),
    30603057                        ("%#x %Rrc\n", pThis->svga.u8FIFOExtCommand, rc));
    30613058
    3062         pThis->svga.pvFIFOExtCmdParam = NULL;
     3059        pThisCC->svga.pvFIFOExtCmdParam = NULL;
    30633060    }
    30643061    else
     
    30793076 * @param   pDevIns         The device instance.
    30803077 * @param   pThis           The shared VGA/VMSVGA instance data.
     3078 * @param   pThisCC         The VGA/VMSVGA state for ring-3.
    30813079 * @param   pSVGAState      Pointer to the ring-3 only SVGA state data.
    30823080 * @param   offFifoMin      The start byte offset of the command FIFO.
    30833081 */
    3084 static void vmsvgaR3FifoSetNotBusy(PPDMDEVINS pDevIns, PVGASTATE pThis, PVMSVGAR3STATE pSVGAState, uint32_t offFifoMin)
     3082static void vmsvgaR3FifoSetNotBusy(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, PVMSVGAR3STATE pSVGAState, uint32_t offFifoMin)
    30853083{
    30863084    ASMAtomicAndU32(&pThis->svga.fBusy, ~VMSVGA_BUSY_F_FIFO);
    30873085    if (VMSVGA_IS_VALID_FIFO_REG(SVGA_FIFO_BUSY, offFifoMin))
    3088         vmsvgaHCSafeFifoBusyRegUpdate(pThis, pThis->svga.fBusy != 0);
     3086        vmsvgaHCSafeFifoBusyRegUpdate(pThis, pThisCC, pThis->svga.fBusy != 0);
    30893087
    30903088    /* Wake up any waiting EMTs. */
     
    33613359 * Called by the VGA refresh timer to wake up the FIFO thread when needed.
    33623360 *
    3363  * @param   pThis   The shared VGA/VMSVGA instance data.
     3361 * @param   pDevIns     The device instance.
     3362 * @param   pThis       The shared VGA/VMSVGA instance data.
     3363 * @param   pThisCC     The VGA/VMSVGA state for ring-3.
    33643364 */
    3365 void vmsvgaR3FifoWatchdogTimer(PPDMDEVINS pDevIns, PVGASTATE pThis)
     3365void vmsvgaR3FifoWatchdogTimer(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC)
    33663366{
    33673367    /* Caller already checked pThis->svga.fFIFOThreadSleeping, so we only have
    33683368       to recheck it before doing the signalling. */
    3369     uint32_t RT_UNTRUSTED_VOLATILE_GUEST * const pFIFO = pThis->svga.pFIFOR3;
     3369    uint32_t RT_UNTRUSTED_VOLATILE_GUEST * const pFIFO = pThisCC->svga.pau32FIFO;
    33703370    AssertReturnVoid(pFIFO);
    33713371    if (   vmsvgaR3FifoHasWork(pFIFO, ASMAtomicReadU32(&pThis->svga.uLastCursorUpdateCount))
     
    33743374        int rc = PDMDevHlpSUPSemEventSignal(pDevIns, pThis->svga.hFIFORequestSem);
    33753375        AssertRC(rc);
    3376         STAM_REL_COUNTER_INC(&pThis->svga.pSvgaR3State->StatFifoWatchdogWakeUps);
     3376        STAM_REL_COUNTER_INC(&pThisCC->svga.pSvgaR3State->StatFifoWatchdogWakeUps);
    33773377    }
    33783378}
     
    33863386    PVGASTATE       pThis      = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
    33873387    PVGASTATER3     pThisCC    = PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC);
    3388     PVMSVGAR3STATE  pSVGAState = pThis->svga.pSvgaR3State;
     3388    PVMSVGAR3STATE  pSVGAState = pThisCC->svga.pSvgaR3State;
    33893389    int             rc;
    33903390
     
    34473447     * xLastCursor, yLastCursor and fLastCursorVisible are set to report the first update.
    34483448     */
    3449     uint32_t RT_UNTRUSTED_VOLATILE_GUEST * const pFIFO = pThis->svga.pFIFOR3;
     3449    uint32_t RT_UNTRUSTED_VOLATILE_GUEST * const pFIFO = pThisCC->svga.pau32FIFO;
    34503450    pThis->svga.uLastCursorUpdateCount = pFIFO[SVGA_FIFO_CURSOR_COUNT];
    34513451    uint32_t xLastCursor        = ~pFIFO[SVGA_FIFO_CURSOR_X];
     
    35403540            || !pThis->svga.fConfigured)
    35413541        {
    3542             vmsvgaR3FifoSetNotBusy(pDevIns, pThis, pSVGAState, pFIFO[SVGA_FIFO_MIN]);
     3542            vmsvgaR3FifoSetNotBusy(pDevIns, pThis, pThisCC, pSVGAState, pFIFO[SVGA_FIFO_MIN]);
    35433543            fBadOrDisabledFifo = true;
    35443544            cMsSleep           = cMsMaxSleep; /* cheat */
     
    35663566            STAM_REL_COUNTER_INC(&pSVGAState->StatFifoErrors);
    35673567            LogRelMax(8, ("vmsvgaR3FifoLoop: Bad fifo: min=%#x stop=%#x max=%#x\n", offFifoMin, offCurrentCmd, offFifoMax));
    3568             vmsvgaR3FifoSetNotBusy(pDevIns, pThis, pSVGAState, offFifoMin);
     3568            vmsvgaR3FifoSetNotBusy(pDevIns, pThis, pThisCC, pSVGAState, offFifoMin);
    35693569            fBadOrDisabledFifo = true;
    35703570            continue;
     
    36543654                vmsvgaR3ChangeMode(pThis, pThisCC);
    36553655# ifdef VBOX_WITH_VMSVGA3D
    3656                 if (pThis->svga.p3dState != NULL)
    3657                     vmsvga3dChangeMode(pThis);
     3656                if (pThisCC->svga.p3dState != NULL)
     3657                    vmsvga3dChangeMode(pThisCC);
    36583658# endif
    36593659            }
     
    37163716                Log(("vmsvgaR3FifoLoop: UPDATE (%d,%d)(%d,%d)\n", pUpdate->x, pUpdate->y, pUpdate->width, pUpdate->height));
    37173717                /** @todo Multiple screens? */
    3718                 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis, 0);
     3718                VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, 0);
    37193719                AssertBreak(pScreen);
    37203720                vmsvgaR3UpdateScreen(pThisCC, pScreen, pUpdate->x, pUpdate->y, pUpdate->width, pUpdate->height);
     
    38603860                {
    38613861                    STAM_REL_COUNTER_INC(&pSVGAState->StatR3CmdDefineGmr2Free);
    3862                     vmsvgaR3GmrFree(pThis, pCmd->gmrId);
     3862                    vmsvgaR3GmrFree(pThisCC, pCmd->gmrId);
    38633863                }
    38643864                else
     
    38723872                    /** @todo always free the descriptor in SVGA_CMD_DEFINE_GMR2? */
    38733873                    if (pGMR->cbTotal / X86_PAGE_SIZE > pGMR->cMaxPages)
    3874                         vmsvgaR3GmrFree(pThis, pCmd->gmrId);
     3874                        vmsvgaR3GmrFree(pThisCC, pCmd->gmrId);
    38753875
    38763876                    pGMR->cMaxPages = pCmd->numPages;
     
    40564056
    40574057                uint32_t const idScreen = pCmd->screen.id;
    4058                 AssertBreak(idScreen < RT_ELEMENTS(pThis->svga.pSvgaR3State->aScreens));
     4058                AssertBreak(idScreen < RT_ELEMENTS(pThisCC->svga.pSvgaR3State->aScreens));
    40594059
    40604060                uint32_t const uWidth = pCmd->screen.size.width;
     
    40774077                RT_UNTRUSTED_VALIDATED_FENCE();
    40784078
    4079                 VMSVGASCREENOBJECT *pScreen = &pThis->svga.pSvgaR3State->aScreens[idScreen];
     4079                VMSVGASCREENOBJECT *pScreen = &pThisCC->svga.pSvgaR3State->aScreens[idScreen];
    40804080
    40814081                bool const fBlank = RT_BOOL(pCmd->screen.flags & (SVGA_SCREEN_DEACTIVATE | SVGA_SCREEN_BLANKING));
     
    41164116
    41174117                uint32_t const idScreen = pCmd->screenId;
    4118                 AssertBreak(idScreen < RT_ELEMENTS(pThis->svga.pSvgaR3State->aScreens));
     4118                AssertBreak(idScreen < RT_ELEMENTS(pThisCC->svga.pSvgaR3State->aScreens));
    41194119                RT_UNTRUSTED_VALIDATED_FENCE();
    41204120
    4121                 VMSVGASCREENOBJECT *pScreen = &pThis->svga.pSvgaR3State->aScreens[idScreen];
     4121                VMSVGASCREENOBJECT *pScreen = &pThisCC->svga.pSvgaR3State->aScreens[idScreen];
    41224122                pScreen->fModified = true;
    41234123                pScreen->fDefined  = false;
     
    41504150                         pCmd->srcOrigin.x, pCmd->srcOrigin.y, pCmd->destScreenId, pCmd->destRect.left, pCmd->destRect.top, pCmd->destRect.right, pCmd->destRect.bottom));
    41514151
    4152                 AssertBreak(pCmd->destScreenId < RT_ELEMENTS(pThis->svga.pSvgaR3State->aScreens));
     4152                AssertBreak(pCmd->destScreenId < RT_ELEMENTS(pThisCC->svga.pSvgaR3State->aScreens));
    41534153                RT_UNTRUSTED_VALIDATED_FENCE();
    41544154
    4155                 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis, pCmd->destScreenId);
     4155                VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, pCmd->destScreenId);
    41564156                AssertBreak(pScreen);
    41574157
     
    42224222                         pCmd->destOrigin.x, pCmd->destOrigin.y, pCmd->srcScreenId, pCmd->srcRect.left, pCmd->srcRect.top, pCmd->srcRect.right, pCmd->srcRect.bottom));
    42234223
    4224                 AssertBreak(pCmd->srcScreenId < RT_ELEMENTS(pThis->svga.pSvgaR3State->aScreens));
     4224                AssertBreak(pCmd->srcScreenId < RT_ELEMENTS(pThisCC->svga.pSvgaR3State->aScreens));
    42254225                RT_UNTRUSTED_VALIDATED_FENCE();
    42264226
    4227                 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis, pCmd->srcScreenId);
     4227                VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, pCmd->srcScreenId);
    42284228                AssertBreak(pScreen);
    42294229
     
    43484348
    43494349                        cMipLevels = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dSize);
    4350                         rc = vmsvga3dSurfaceDefine(pThis, pCmd->sid, (uint32_t)pCmd->surfaceFlags, pCmd->format, pCmd->face, 0,
     4350                        rc = vmsvga3dSurfaceDefine(pThisCC, pCmd->sid, (uint32_t)pCmd->surfaceFlags, pCmd->format, pCmd->face, 0,
    43514351                                                   SVGA3D_TEX_FILTER_NONE, cMipLevels, (SVGA3dSize *)(pCmd + 1));
    43524352#  ifdef DEBUG_GMR_ACCESS
     
    43644364
    43654365                        cMipLevels = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dSize);
    4366                         rc = vmsvga3dSurfaceDefine(pThis, pCmd->sid, pCmd->surfaceFlags, pCmd->format, pCmd->face,
     4366                        rc = vmsvga3dSurfaceDefine(pThisCC, pCmd->sid, pCmd->surfaceFlags, pCmd->format, pCmd->face,
    43674367                                                   pCmd->multisampleCount, pCmd->autogenFilter,
    43684368                                                   cMipLevels, (SVGA3dSize *)(pCmd + 1));
     
    43754375                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    43764376                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceDestroy);
    4377                         rc = vmsvga3dSurfaceDestroy(pThis, pCmd->sid);
     4377                        rc = vmsvga3dSurfaceDestroy(pThisCC, pCmd->sid);
    43784378                        break;
    43794379                    }
     
    43874387
    43884388                        cCopyBoxes = (pHdr->size - sizeof(pCmd)) / sizeof(SVGA3dCopyBox);
    4389                         rc = vmsvga3dSurfaceCopy(pThis, pCmd->dest, pCmd->src, cCopyBoxes, (SVGA3dCopyBox *)(pCmd + 1));
     4389                        rc = vmsvga3dSurfaceCopy(pThisCC, pCmd->dest, pCmd->src, cCopyBoxes, (SVGA3dCopyBox *)(pCmd + 1));
    43904390                        break;
    43914391                    }
     
    43974397                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceStretchBlt);
    43984398
    4399                         rc = vmsvga3dSurfaceStretchBlt(pThis, &pCmd->dest, &pCmd->boxDest, &pCmd->src, &pCmd->boxSrc, pCmd->mode);
     4399                        rc = vmsvga3dSurfaceStretchBlt(pThis, pThisCC, &pCmd->dest, &pCmd->boxDest,
     4400                                                       &pCmd->src, &pCmd->boxSrc, pCmd->mode);
    44004401                        break;
    44014402                    }
     
    44354436                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dContextDefine);
    44364437
    4437                         rc = vmsvga3dContextDefine(pThis, pCmd->cid);
     4438                        rc = vmsvga3dContextDefine(pThisCC, pCmd->cid);
    44384439                        break;
    44394440                    }
     
    44454446                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dContextDestroy);
    44464447
    4447                         rc = vmsvga3dContextDestroy(pThis, pCmd->cid);
     4448                        rc = vmsvga3dContextDestroy(pThisCC, pCmd->cid);
    44484449                        break;
    44494450                    }
     
    44554456                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetTransform);
    44564457
    4457                         rc = vmsvga3dSetTransform(pThis, pCmd->cid, pCmd->type, pCmd->matrix);
     4458                        rc = vmsvga3dSetTransform(pThisCC, pCmd->cid, pCmd->type, pCmd->matrix);
    44584459                        break;
    44594460                    }
     
    44654466                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetZRange);
    44664467
    4467                         rc = vmsvga3dSetZRange(pThis, pCmd->cid, pCmd->zRange);
     4468                        rc = vmsvga3dSetZRange(pThisCC, pCmd->cid, pCmd->zRange);
    44684469                        break;
    44694470                    }
     
    44774478
    44784479                        cRenderStates = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dRenderState);
    4479                         rc = vmsvga3dSetRenderState(pThis, pCmd->cid, cRenderStates, (SVGA3dRenderState *)(pCmd + 1));
     4480                        rc = vmsvga3dSetRenderState(pThisCC, pCmd->cid, cRenderStates, (SVGA3dRenderState *)(pCmd + 1));
    44804481                        break;
    44814482                    }
     
    44874488                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetRenderTarget);
    44884489
    4489                         rc = vmsvga3dSetRenderTarget(pThis, pCmd->cid, pCmd->type, pCmd->target);
     4490                        rc = vmsvga3dSetRenderTarget(pThisCC, pCmd->cid, pCmd->type, pCmd->target);
    44904491                        break;
    44914492                    }
     
    44994500
    45004501                        cTextureStates = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dTextureState);
    4501                         rc = vmsvga3dSetTextureState(pThis, pCmd->cid, cTextureStates, (SVGA3dTextureState *)(pCmd + 1));
     4502                        rc = vmsvga3dSetTextureState(pThisCC, pCmd->cid, cTextureStates, (SVGA3dTextureState *)(pCmd + 1));
    45024503                        break;
    45034504                    }
     
    45094510                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetMaterial);
    45104511
    4511                         rc = vmsvga3dSetMaterial(pThis, pCmd->cid, pCmd->face, &pCmd->material);
     4512                        rc = vmsvga3dSetMaterial(pThisCC, pCmd->cid, pCmd->face, &pCmd->material);
    45124513                        break;
    45134514                    }
     
    45194520                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetLightData);
    45204521
    4521                         rc = vmsvga3dSetLightData(pThis, pCmd->cid, pCmd->index, &pCmd->data);
     4522                        rc = vmsvga3dSetLightData(pThisCC, pCmd->cid, pCmd->index, &pCmd->data);
    45224523                        break;
    45234524                    }
     
    45294530                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetLightEnable);
    45304531
    4531                         rc = vmsvga3dSetLightEnabled(pThis, pCmd->cid, pCmd->index, pCmd->enabled);
     4532                        rc = vmsvga3dSetLightEnabled(pThisCC, pCmd->cid, pCmd->index, pCmd->enabled);
    45324533                        break;
    45334534                    }
     
    45394540                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetViewPort);
    45404541
    4541                         rc = vmsvga3dSetViewPort(pThis, pCmd->cid, &pCmd->rect);
     4542                        rc = vmsvga3dSetViewPort(pThisCC, pCmd->cid, &pCmd->rect);
    45424543                        break;
    45434544                    }
     
    45494550                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetClipPlane);
    45504551
    4551                         rc = vmsvga3dSetClipPlane(pThis, pCmd->cid, pCmd->index, pCmd->plane);
     4552                        rc = vmsvga3dSetClipPlane(pThisCC, pCmd->cid, pCmd->index, pCmd->plane);
    45524553                        break;
    45534554                    }
     
    45604561
    45614562                        uint32_t cRects = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dRect);
    4562                         rc = vmsvga3dCommandClear(pThis, pCmd->cid, pCmd->clearFlag, pCmd->color, pCmd->depth, pCmd->stencil, cRects, (SVGA3dRect *)(pCmd + 1));
     4563                        rc = vmsvga3dCommandClear(pThisCC, pCmd->cid, pCmd->clearFlag, pCmd->color, pCmd->depth, pCmd->stencil, cRects, (SVGA3dRect *)(pCmd + 1));
    45634564                        break;
    45644565                    }
     
    45894590
    45904591                        uint32_t cbData = (pHdr->size - sizeof(*pCmd));
    4591                         rc = vmsvga3dShaderDefine(pThis, pCmd->cid, pCmd->shid, pCmd->type, cbData, (uint32_t *)(pCmd + 1));
     4592                        rc = vmsvga3dShaderDefine(pThisCC, pCmd->cid, pCmd->shid, pCmd->type, cbData, (uint32_t *)(pCmd + 1));
    45924593                        break;
    45934594                    }
     
    45994600                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dShaderDestroy);
    46004601
    4601                         rc = vmsvga3dShaderDestroy(pThis, pCmd->cid, pCmd->shid, pCmd->type);
     4602                        rc = vmsvga3dShaderDestroy(pThisCC, pCmd->cid, pCmd->shid, pCmd->type);
    46024603                        break;
    46034604                    }
     
    46094610                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetShader);
    46104611
    4611                         rc = vmsvga3dShaderSet(pThis, NULL, pCmd->cid, pCmd->type, pCmd->shid);
     4612                        rc = vmsvga3dShaderSet(pThisCC, NULL, pCmd->cid, pCmd->type, pCmd->shid);
    46124613                        break;
    46134614                    }
     
    46204621
    46214622                        uint32_t cRegisters = (pHdr->size - sizeof(*pCmd)) / sizeof(pCmd->values) + 1;
    4622                         rc = vmsvga3dShaderSetConst(pThis, pCmd->cid, pCmd->reg, pCmd->type, pCmd->ctype, cRegisters, pCmd->values);
     4623                        rc = vmsvga3dShaderSetConst(pThisCC, pCmd->cid, pCmd->reg, pCmd->type, pCmd->ctype, cRegisters, pCmd->values);
    46234624                        break;
    46244625                    }
     
    46464647
    46474648                        STAM_PROFILE_START(&pSVGAState->StatR3Cmd3dDrawPrimitivesProf, a);
    4648                         rc = vmsvga3dDrawPrimitives(pThis, pCmd->cid, pCmd->numVertexDecls, pVertexDecl, pCmd->numRanges,
     4649                        rc = vmsvga3dDrawPrimitives(pThisCC, pCmd->cid, pCmd->numVertexDecls, pVertexDecl, pCmd->numRanges,
    46494650                                                    pNumRange, cVertexDivisor, pVertexDivisor);
    46504651                        STAM_PROFILE_STOP(&pSVGAState->StatR3Cmd3dDrawPrimitivesProf, a);
     
    46584659                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetScissorRect);
    46594660
    4660                         rc = vmsvga3dSetScissorRect(pThis, pCmd->cid, &pCmd->rect);
     4661                        rc = vmsvga3dSetScissorRect(pThisCC, pCmd->cid, &pCmd->rect);
    46614662                        break;
    46624663                    }
     
    46684669                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dBeginQuery);
    46694670
    4670                         rc = vmsvga3dQueryBegin(pThis, pCmd->cid, pCmd->type);
     4671                        rc = vmsvga3dQueryBegin(pThisCC, pCmd->cid, pCmd->type);
    46714672                        break;
    46724673                    }
     
    46784679                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dEndQuery);
    46794680
    4680                         rc = vmsvga3dQueryEnd(pThis, pCmd->cid, pCmd->type, pCmd->guestResult);
     4681                        rc = vmsvga3dQueryEnd(pThisCC, pCmd->cid, pCmd->type, pCmd->guestResult);
    46814682                        break;
    46824683                    }
     
    46984699                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dGenerateMipmaps);
    46994700
    4700                         rc = vmsvga3dGenerateMipmaps(pThis, pCmd->sid, pCmd->filter);
     4701                        rc = vmsvga3dGenerateMipmaps(pThisCC, pCmd->sid, pCmd->filter);
    47014702                        break;
    47024703                    }
     
    47714772        {
    47724773            Log(("vmsvgaR3FifoLoop: emptied the FIFO next=%x stop=%x\n", pFIFO[SVGA_FIFO_NEXT_CMD], offCurrentCmd));
    4773             vmsvgaR3FifoSetNotBusy(pDevIns, pThis, pSVGAState, offFifoMin);
     4774            vmsvgaR3FifoSetNotBusy(pDevIns, pThis, pThisCC, pSVGAState, offFifoMin);
    47744775        }
    47754776    }
     
    47864787 * Free the specified GMR
    47874788 *
    4788  * @param   pThis           The shared VGA/VMSVGA instance data.
     4789 * @param   pThisCC         The VGA/VMSVGA state for ring-3.
    47894790 * @param   idGMR           GMR id
    47904791 */
    4791 void vmsvgaR3GmrFree(PVGASTATE pThis, uint32_t idGMR)
     4792static void vmsvgaR3GmrFree(PVGASTATECC pThisCC, uint32_t idGMR)
    47924793{
    4793     PVMSVGAR3STATE pSVGAState = pThis->svga.pSvgaR3State;
     4794    PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State;
    47944795
    47954796    /* Free the old descriptor if present. */
     
    47994800    {
    48004801# ifdef DEBUG_GMR_ACCESS
    4801         VMR3ReqCallWaitU(PDMDevHlpGetUVM(pDevIns), VMCPUID_ANY, (PFNRT)vmsvgaR3DeregisterGmr, 2, pDevIns, idGMR);
     4802        VMR3ReqCallWaitU(PDMDevHlpGetUVM(pThisCC->pDevIns), VMCPUID_ANY, (PFNRT)vmsvgaR3DeregisterGmr, 2, pDevIns, idGMR);
    48024803# endif
    48034804
     
    48354836                        uint32_t cbWidth, uint32_t cHeight)
    48364837{
    4837     PVMSVGAR3STATE  pSVGAState = pThis->svga.pSvgaR3State;
     4838    PVMSVGAR3STATE  pSVGAState = pThisCC->svga.pSvgaR3State;
    48384839    PPDMDEVINS      pDevIns = pThisCC->pDevIns; /* simpler */
    48394840    int             rc;
     
    53285329 * surfaces to VMSVGA3DMIPMAPLEVEL::pSurfaceData heap buffers.
    53295330 *
    5330  * @param   pDevIns             The device instance.
    5331  * @param   pThis               The The shared VGA/VMSVGA instance data.
    5332  * @param   sid                 Either UINT32_MAX or the ID of a specific
    5333  *                              surface.  If UINT32_MAX is used, all surfaces
    5334  *                              are processed.
     5331 * @param   pDevIns     The device instance.
     5332 * @param   pThis       The The shared VGA/VMSVGA instance data.
     5333 * @param   pThisCC     The VGA/VMSVGA state for ring-3.
     5334 * @param   sid         Either UINT32_MAX or the ID of a specific surface.  If
     5335 *                      UINT32_MAX is used, all surfaces are processed.
    53355336 */
    5336 void vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis, uint32_t sid)
     5337void vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t sid)
    53375338{
    5338     vmsvgaR3RunExtCmdOnFifoThread(pDevIns, pThis, VMSVGA_FIFO_EXTCMD_UPDATE_SURFACE_HEAP_BUFFERS, (void *)(uintptr_t)sid,
     5339    vmsvgaR3RunExtCmdOnFifoThread(pDevIns, pThis, pThisCC, VMSVGA_FIFO_EXTCMD_UPDATE_SURFACE_HEAP_BUFFERS, (void *)(uintptr_t)sid,
    53395340                                  sid == UINT32_MAX ? 10 * RT_MS_1SEC : RT_MS_1MIN);
    53405341}
     
    53815382        fInvY = true;
    53825383
    5383     vmsvga3dInfoSurfaceWorker(pDevIns, PDMDEVINS_2_DATA(pDevIns, PVGASTATE), pHlp, sid, fVerbose, cxAscii, fInvY, NULL);
     5384    vmsvga3dInfoSurfaceWorker(pDevIns, PDMDEVINS_2_DATA(pDevIns, PVGASTATE), PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC),
     5385                              pHlp, sid, fVerbose, cxAscii, fInvY, NULL);
    53845386}
    53855387
     
    54065408    const uint32_t cxAscii = 0; /* No ASCII */
    54075409    const bool fInvY = false;   /* Do not invert. */
    5408     vmsvga3dInfoSurfaceWorker(pDevIns, PDMDEVINS_2_DATA(pDevIns, PVGASTATE), pHlp, sid, fVerbose, cxAscii, fInvY, pszBitmapPath);
     5410    vmsvga3dInfoSurfaceWorker(pDevIns, PDMDEVINS_2_DATA(pDevIns, PVGASTATE), PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC),
     5411                              pHlp, sid, fVerbose, cxAscii, fInvY, pszBitmapPath);
    54095412}
    54105413
     
    54285431        fVerbose = false;
    54295432
    5430     vmsvga3dInfoContextWorker(PDMDEVINS_2_DATA(pDevIns, PVGASTATE), pHlp, sid, fVerbose);
     5433    vmsvga3dInfoContextWorker(PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC), pHlp, sid, fVerbose);
    54315434}
    54325435
     
    54405443    PVGASTATE       pThis      = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
    54415444    PVGASTATECC     pThisCC    = PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC);
    5442     PVMSVGAR3STATE  pSVGAState = pThis->svga.pSvgaR3State;
    5443     uint32_t RT_UNTRUSTED_VOLATILE_GUEST *pFIFO = pThis->svga.pFIFOR3;
     5445    PVMSVGAR3STATE  pSVGAState = pThisCC->svga.pSvgaR3State;
     5446    uint32_t RT_UNTRUSTED_VOLATILE_GUEST *pFIFO = pThisCC->svga.pau32FIFO;
    54445447    RT_NOREF(pszArgs);
    54455448
     
    54885491 * Portion of VMSVGA state which must be loaded oin the FIFO thread.
    54895492 */
    5490 static int vmsvgaR3LoadExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass)
     5493static int vmsvgaR3LoadExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PVGASTATECC pThisCC,
     5494                                PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass)
    54915495{
    54925496    RT_NOREF(uPass);
    54935497
    5494     PVMSVGAR3STATE  pSVGAState = pThis->svga.pSvgaR3State;
     5498    PVMSVGAR3STATE  pSVGAState = pThisCC->svga.pSvgaR3State;
    54955499    int rc;
    54965500
     
    55515555    RT_NOREF(uPass);
    55525556    PVGASTATE       pThis      = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
    5553     PVMSVGAR3STATE  pSVGAState = pThis->svga.pSvgaR3State;
     5557    PVGASTATECC     pThisCC    = PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC);
     5558    PVMSVGAR3STATE  pSVGAState = pThisCC->svga.pSvgaR3State;
    55545559    PCPDMDEVHLPR3   pHlp       = pDevIns->pHlpR3;
    55555560    int             rc;
     
    55725577        AssertCompile(RT_IS_POWER_OF_TWO(VMSVGA_VGA_FB_BACKUP_SIZE));
    55735578    }
    5574     rc = pHlp->pfnSSMGetMem(pSSM, pThis->svga.pbVgaFrameBufferR3, RT_MIN(cbVgaFramebuffer, VMSVGA_VGA_FB_BACKUP_SIZE));
     5579    rc = pHlp->pfnSSMGetMem(pSSM, pThisCC->svga.pbVgaFrameBufferR3, RT_MIN(cbVgaFramebuffer, VMSVGA_VGA_FB_BACKUP_SIZE));
    55755580    AssertRCReturn(rc, rc);
    55765581    if (cbVgaFramebuffer > VMSVGA_VGA_FB_BACKUP_SIZE)
    55775582        pHlp->pfnSSMSkip(pSSM, cbVgaFramebuffer - VMSVGA_VGA_FB_BACKUP_SIZE);
    55785583    else if (cbVgaFramebuffer < VMSVGA_VGA_FB_BACKUP_SIZE)
    5579         RT_BZERO(&pThis->svga.pbVgaFrameBufferR3[cbVgaFramebuffer], VMSVGA_VGA_FB_BACKUP_SIZE - cbVgaFramebuffer);
     5584        RT_BZERO(&pThisCC->svga.pbVgaFrameBufferR3[cbVgaFramebuffer], VMSVGA_VGA_FB_BACKUP_SIZE - cbVgaFramebuffer);
    55805585
    55815586    /* Load the VMSVGA state. */
     
    56445649    LoadState.uVersion = uVersion;
    56455650    LoadState.uPass    = uPass;
    5646     rc = vmsvgaR3RunExtCmdOnFifoThread(pDevIns, pThis, VMSVGA_FIFO_EXTCMD_LOADSTATE, &LoadState, RT_INDEFINITE_WAIT);
     5651    rc = vmsvgaR3RunExtCmdOnFifoThread(pDevIns, pThis, pThisCC, VMSVGA_FIFO_EXTCMD_LOADSTATE, &LoadState, RT_INDEFINITE_WAIT);
    56475652    AssertLogRelRCReturn(rc, rc);
    56485653
     
    56575662    PVGASTATE       pThis      = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
    56585663    PVGASTATECC     pThisCC    = PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC);
    5659     PVMSVGAR3STATE  pSVGAState = pThis->svga.pSvgaR3State;
     5664    PVMSVGAR3STATE  pSVGAState = pThisCC->svga.pSvgaR3State;
    56605665
    56615666    ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE);
     
    56805685 * Portion of SVGA state which must be saved in the FIFO thread.
    56815686 */
    5682 static int vmsvgaR3SaveExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PSSMHANDLE pSSM)
     5687static int vmsvgaR3SaveExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATECC pThisCC, PSSMHANDLE pSSM)
    56835688{
    5684     PVMSVGAR3STATE  pSVGAState = pThis->svga.pSvgaR3State;
     5689    PVMSVGAR3STATE  pSVGAState = pThisCC->svga.pSvgaR3State;
    56855690    int             rc;
    56865691
     
    57135718{
    57145719    PVGASTATE       pThis      = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
    5715     PVMSVGAR3STATE  pSVGAState = pThis->svga.pSvgaR3State;
     5720    PVGASTATECC     pThisCC    = PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC);
     5721    PVMSVGAR3STATE  pSVGAState = pThisCC->svga.pSvgaR3State;
    57165722    PCPDMDEVHLPR3   pHlp       = pDevIns->pHlpR3;
    57175723    int             rc;
     
    57235729    /* Save the framebuffer backup. */
    57245730    rc = pHlp->pfnSSMPutU32(pSSM, VMSVGA_VGA_FB_BACKUP_SIZE);
    5725     rc = pHlp->pfnSSMPutMem(pSSM, pThis->svga.pbVgaFrameBufferR3, VMSVGA_VGA_FB_BACKUP_SIZE);
     5731    rc = pHlp->pfnSSMPutMem(pSSM, pThisCC->svga.pbVgaFrameBufferR3, VMSVGA_VGA_FB_BACKUP_SIZE);
    57265732    AssertLogRelRCReturn(rc, rc);
    57275733
     
    57575763     * Must save some state (3D in particular) in the FIFO thread.
    57585764     */
    5759     rc = vmsvgaR3RunExtCmdOnFifoThread(pDevIns, pThis, VMSVGA_FIFO_EXTCMD_SAVESTATE, pSSM, RT_INDEFINITE_WAIT);
     5765    rc = vmsvgaR3RunExtCmdOnFifoThread(pDevIns, pThis, pThisCC, VMSVGA_FIFO_EXTCMD_SAVESTATE, pSSM, RT_INDEFINITE_WAIT);
    57605766    AssertLogRelRCReturn(rc, rc);
    57615767
     
    57665772 * Destructor for PVMSVGAR3STATE structure.
    57675773 *
    5768  * @param   pThis          The VGA instance.
     5774 * @param   pThis          The shared VGA/VMSVGA instance data.
    57695775 * @param   pSVGAState     Pointer to the structure. It is not deallocated.
    57705776 */
     
    58015807 *
    58025808 * @returns VBox status code.
    5803  * @param   pThis          The VGA instance.
     5809 * @param   pThis          The shared VGA/VMSVGA instance data.
    58045810 * @param   pSVGAState     Pointer to the structure. It is already allocated.
    58055811 */
     
    58255831 *
    58265832 * @returns VBox status code.
    5827  * @param   pThis     The VGA instance.
     5833 * @param   pThis     The shared VGA/VMSVGA instance data.
    58285834 */
    5829 static void vmsvgaR3InitCaps(PVGASTATE pThis)
     5835static void vmsvgaR3InitCaps(PVGASTATE pThis, PVGASTATECC pThisCC)
    58305836{
    58315837    /* Register caps. */
     
    58455851
    58465852    /* Clear the FIFO. */
    5847     RT_BZERO(pThis->svga.pFIFOR3, pThis->svga.cbFIFO);
     5853    RT_BZERO(pThisCC->svga.pau32FIFO, pThis->svga.cbFIFO);
    58485854
    58495855    /* Setup FIFO capabilities. */
    5850     pThis->svga.pFIFOR3[SVGA_FIFO_CAPABILITIES] = SVGA_FIFO_CAP_FENCE
     5856    pThisCC->svga.pau32FIFO[SVGA_FIFO_CAPABILITIES] = SVGA_FIFO_CAP_FENCE
    58515857                                                | SVGA_FIFO_CAP_CURSOR_BYPASS_3
    58525858                                                | SVGA_FIFO_CAP_GMR2
     
    58575863
    58585864    /* Valid with SVGA_FIFO_CAP_SCREEN_OBJECT_2 */
    5859     pThis->svga.pFIFOR3[SVGA_FIFO_CURSOR_SCREEN_ID] = SVGA_ID_INVALID;
     5865    pThisCC->svga.pau32FIFO[SVGA_FIFO_CURSOR_SCREEN_ID] = SVGA_ID_INVALID;
    58605866}
    58615867
     
    59545960 *
    59555961 * @returns VBox status code.
    5956  * @param   pThis     The VGA instance.
     5962 * @param   pThis     The shared VGA/VMSVGA instance data.
     5963 * @param   pThisCC   The VGA/VMSVGA state for ring-3.
    59575964 */
    5958 static void vmsvgaR3InitFifo3DCaps(PVGASTATE pThis)
     5965static void vmsvgaR3InitFifo3DCaps(PVGASTATECC pThisCC)
    59595966{
    59605967    /** @todo Probably query the capabilities once and cache in a memory buffer. */
     
    59655972
    59665973    /* 3d hardware version; latest and greatest */
    5967     pThis->svga.pFIFOR3[SVGA_FIFO_3D_HWVERSION_REVISED] = SVGA3D_HWVERSION_CURRENT;
    5968     pThis->svga.pFIFOR3[SVGA_FIFO_3D_HWVERSION]         = SVGA3D_HWVERSION_CURRENT;
    5969 
    5970     pCaps = (SVGA3dCapsRecord *)&pThis->svga.pFIFOR3[SVGA_FIFO_3D_CAPS];
     5974    pThisCC->svga.pau32FIFO[SVGA_FIFO_3D_HWVERSION_REVISED] = SVGA3D_HWVERSION_CURRENT;
     5975    pThisCC->svga.pau32FIFO[SVGA_FIFO_3D_HWVERSION]         = SVGA3D_HWVERSION_CURRENT;
     5976
     5977    pCaps = (SVGA3dCapsRecord *)&pThisCC->svga.pau32FIFO[SVGA_FIFO_3D_CAPS];
    59715978    pCaps->header.type   = SVGA3DCAPS_RECORD_DEVCAPS;
    59725979    pData = (SVGA3dCapPair *)&pCaps->data;
     
    59775984        uint32_t val = 0;
    59785985
    5979         int rc = vmsvga3dQueryCaps(pThis, i, &val);
     5986        int rc = vmsvga3dQueryCaps(pThisCC, i, &val);
    59805987        if (RT_SUCCESS(rc))
    59815988        {
     
    60116018int vmsvgaR3Reset(PPDMDEVINS pDevIns)
    60126019{
    6013     PVGASTATE       pThis = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
    6014     PVMSVGAR3STATE  pSVGAState = pThis->svga.pSvgaR3State;
     6020    PVGASTATE       pThis      = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
     6021    PVGASTATECC     pThisCC    = PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC);
     6022    PVMSVGAR3STATE  pSVGAState = pThisCC->svga.pSvgaR3State;
    60156023
    60166024    /* Reset before init? */
     
    60216029
    60226030    /* Reset the FIFO processing as well as the 3d state (if we have one). */
    6023     pThis->svga.pFIFOR3[SVGA_FIFO_NEXT_CMD] = pThis->svga.pFIFOR3[SVGA_FIFO_STOP] = 0; /** @todo should probably let the FIFO thread do this ... */
    6024     int rc = vmsvgaR3RunExtCmdOnFifoThread(pDevIns, pThis, VMSVGA_FIFO_EXTCMD_RESET, NULL /*pvParam*/, 10000 /*ms*/);
     6031    pThisCC->svga.pau32FIFO[SVGA_FIFO_NEXT_CMD] = pThisCC->svga.pau32FIFO[SVGA_FIFO_STOP] = 0; /** @todo should probably let the FIFO thread do this ... */
     6032    int rc = vmsvgaR3RunExtCmdOnFifoThread(pDevIns, pThis, pThisCC, VMSVGA_FIFO_EXTCMD_RESET, NULL /*pvParam*/, 10000 /*ms*/);
    60256033
    60266034    /* Reset other stuff. */
     
    60286036    RT_ZERO(pThis->svga.au32ScratchRegion);
    60296037
    6030     vmsvgaR3StateTerm(pThis, pThis->svga.pSvgaR3State);
    6031     vmsvgaR3StateInit(pThis, pThis->svga.pSvgaR3State);
    6032 
    6033     RT_BZERO(pThis->svga.pbVgaFrameBufferR3, VMSVGA_VGA_FB_BACKUP_SIZE);
     6038    vmsvgaR3StateTerm(pThis, pThisCC->svga.pSvgaR3State);
     6039    vmsvgaR3StateInit(pThis, pThisCC->svga.pSvgaR3State);
     6040
     6041    RT_BZERO(pThisCC->svga.pbVgaFrameBufferR3, VMSVGA_VGA_FB_BACKUP_SIZE);
    60346042
    60356043    /* Initialize FIFO and register capabilities. */
    6036     vmsvgaR3InitCaps(pThis);
     6044    vmsvgaR3InitCaps(pThis, pThisCC);
    60376045
    60386046# ifdef VBOX_WITH_VMSVGA3D
    60396047    if (pThis->svga.f3DEnabled)
    6040         vmsvgaR3InitFifo3DCaps(pThis);
     6048        vmsvgaR3InitFifo3DCaps(pThisCC);
    60416049# endif
    60426050
     
    60636071int vmsvgaR3Destruct(PPDMDEVINS pDevIns)
    60646072{
    6065     PVGASTATE pThis = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
     6073    PVGASTATE   pThis   = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
     6074    PVGASTATECC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC);
    60666075
    60676076    /*
    60686077     * Ask the FIFO thread to terminate the 3d state and then terminate it.
    60696078     */
    6070     if (pThis->svga.pFIFOIOThread)
    6071     {
    6072         int rc = vmsvgaR3RunExtCmdOnFifoThread(pDevIns, pThis, VMSVGA_FIFO_EXTCMD_TERMINATE, NULL /*pvParam*/, 30000 /*ms*/);
     6079    if (pThisCC->svga.pFIFOIOThread)
     6080    {
     6081        int rc = vmsvgaR3RunExtCmdOnFifoThread(pDevIns, pThis, pThisCC,  VMSVGA_FIFO_EXTCMD_TERMINATE,
     6082                                               NULL /*pvParam*/, 30000 /*ms*/);
    60736083        AssertLogRelRC(rc);
    60746084
    6075         rc = PDMDevHlpThreadDestroy(pDevIns, pThis->svga.pFIFOIOThread, NULL);
     6085        rc = PDMDevHlpThreadDestroy(pDevIns, pThisCC->svga.pFIFOIOThread, NULL);
    60766086        AssertLogRelRC(rc);
    6077         pThis->svga.pFIFOIOThread = NULL;
     6087        pThisCC->svga.pFIFOIOThread = NULL;
    60786088    }
    60796089
     
    60816091     * Destroy the special SVGA state.
    60826092     */
    6083     if (pThis->svga.pSvgaR3State)
    6084     {
    6085         vmsvgaR3StateTerm(pThis, pThis->svga.pSvgaR3State);
    6086 
    6087         RTMemFree(pThis->svga.pSvgaR3State);
    6088         pThis->svga.pSvgaR3State = NULL;
     6093    if (pThisCC->svga.pSvgaR3State)
     6094    {
     6095        vmsvgaR3StateTerm(pThis, pThisCC->svga.pSvgaR3State);
     6096
     6097        RTMemFree(pThisCC->svga.pSvgaR3State);
     6098        pThisCC->svga.pSvgaR3State = NULL;
    60896099    }
    60906100
     
    60926102     * Free our resources residing in the VGA state.
    60936103     */
    6094     if (pThis->svga.pbVgaFrameBufferR3)
    6095     {
    6096         RTMemFree(pThis->svga.pbVgaFrameBufferR3);
    6097         pThis->svga.pbVgaFrameBufferR3 = NULL;
    6098     }
    6099     if (pThis->svga.hFIFOExtCmdSem != NIL_RTSEMEVENT)
    6100     {
    6101         RTSemEventDestroy(pThis->svga.hFIFOExtCmdSem);
    6102         pThis->svga.hFIFOExtCmdSem = NIL_RTSEMEVENT;
     6104    if (pThisCC->svga.pbVgaFrameBufferR3)
     6105    {
     6106        RTMemFree(pThisCC->svga.pbVgaFrameBufferR3);
     6107        pThisCC->svga.pbVgaFrameBufferR3 = NULL;
     6108    }
     6109    if (pThisCC->svga.hFIFOExtCmdSem != NIL_RTSEMEVENT)
     6110    {
     6111        RTSemEventDestroy(pThisCC->svga.hFIFOExtCmdSem);
     6112        pThisCC->svga.hFIFOExtCmdSem = NIL_RTSEMEVENT;
    61036113    }
    61046114    if (pThis->svga.hFIFORequestSem != NIL_SUPSEMEVENT)
     
    61306140
    61316141    /* Necessary for creating a backup of the text mode frame buffer when switching into svga mode. */
    6132     pThis->svga.pbVgaFrameBufferR3 = (uint8_t *)RTMemAllocZ(VMSVGA_VGA_FB_BACKUP_SIZE);
    6133     AssertReturn(pThis->svga.pbVgaFrameBufferR3, VERR_NO_MEMORY);
     6142    pThisCC->svga.pbVgaFrameBufferR3 = (uint8_t *)RTMemAllocZ(VMSVGA_VGA_FB_BACKUP_SIZE);
     6143    AssertReturn(pThisCC->svga.pbVgaFrameBufferR3, VERR_NO_MEMORY);
    61346144
    61356145    /* Create event semaphore. */
     
    61386148
    61396149    /* Create event semaphore. */
    6140     rc = RTSemEventCreate(&pThis->svga.hFIFOExtCmdSem);
     6150    rc = RTSemEventCreate(&pThisCC->svga.hFIFOExtCmdSem);
    61416151    AssertRCReturn(rc, rc);
    61426152
    6143     pThis->svga.pSvgaR3State = (PVMSVGAR3STATE)RTMemAlloc(sizeof(VMSVGAR3STATE));
    6144     AssertReturn(pThis->svga.pSvgaR3State, VERR_NO_MEMORY);
    6145 
    6146     rc = vmsvgaR3StateInit(pThis, pThis->svga.pSvgaR3State);
     6153    pThisCC->svga.pSvgaR3State = (PVMSVGAR3STATE)RTMemAlloc(sizeof(VMSVGAR3STATE));
     6154    AssertReturn(pThisCC->svga.pSvgaR3State, VERR_NO_MEMORY);
     6155
     6156    rc = vmsvgaR3StateInit(pThis, pThisCC->svga.pSvgaR3State);
    61476157    AssertMsgRCReturn(rc, ("Failed to create pSvgaR3State.\n"), rc);
    61486158
    6149     pSVGAState = pThis->svga.pSvgaR3State;
     6159    pSVGAState = pThisCC->svga.pSvgaR3State;
    61506160
    61516161    /* Initialize FIFO and register capabilities. */
    6152     vmsvgaR3InitCaps(pThis);
     6162    vmsvgaR3InitCaps(pThis, pThisCC);
    61536163
    61546164# ifdef VBOX_WITH_VMSVGA3D
     
    62096219
    62106220    /* Create the async IO thread. */
    6211     rc = PDMDevHlpThreadCreate(pDevIns, &pThis->svga.pFIFOIOThread, pThis, vmsvgaR3FifoLoop, vmsvgaR3FifoLoopWakeUp, 0,
     6221    rc = PDMDevHlpThreadCreate(pDevIns, &pThisCC->svga.pFIFOIOThread, pThis, vmsvgaR3FifoLoop, vmsvgaR3FifoLoopWakeUp, 0,
    62126222                               RTTHREADTYPE_IO, "VMSVGA FIFO");
    62136223    if (RT_FAILURE(rc))
     
    64256435        {
    64266436            /* Initialize FIFO 3D capabilities. */
    6427             vmsvgaR3InitFifo3DCaps(pThis);
     6437            vmsvgaR3InitFifo3DCaps(pThisCC);
    64286438        }
    64296439    }
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.h

    r82109 r82114  
    166166typedef struct VMSVGAState
    167167{
    168     /** The R3 FIFO pointer. */
    169     R3PTRTYPE(uint32_t *)       pFIFOR3;
    170     /** The R0 FIFO pointer.
    171      * @note This only points to the _first_ _page_ of the FIFO!  */
    172     R0PTRTYPE(uint32_t *)       pFIFOR0;
    173     /** R3 Opaque pointer to svga state. */
    174     R3PTRTYPE(PVMSVGAR3STATE)   pSvgaR3State;
    175     /** R3 Opaque pointer to 3d state. */
    176     R3PTRTYPE(PVMSVGA3DSTATE)   p3dState;
    177     /** The separate VGA frame buffer in svga mode.
    178      * Unlike the the boch-based VGA device implementation, VMSVGA seems to have a
    179      * separate frame buffer for VGA and allows concurrent use of both.  The SVGA
    180      * SDK is making use of this to do VGA text output while testing other things in
    181      * SVGA mode, displaying the result by switching back to VGA text mode.  So,
    182      * when entering SVGA mode we copy the first part of the frame buffer here and
    183      * direct VGA accesses here instead.  It is copied back when leaving SVGA mode. */
    184     R3PTRTYPE(uint8_t *)        pbVgaFrameBufferR3;
    185     /** R3 Opaque pointer to an external fifo cmd parameter. */
    186     R3PTRTYPE(void * volatile)  pvFIFOExtCmdParam;
    187 
    188168    /** Guest physical address of the FIFO memory range. */
    189169    RTGCPHYS                    GCPhysFIFO;
     
    225205    /** FIFO request semaphore. */
    226206    SUPSEMEVENT                 hFIFORequestSem;
    227     /** FIFO external command semaphore. */
    228     R3PTRTYPE(RTSEMEVENT)       hFIFOExtCmdSem;
    229     /** FIFO IO Thread. */
    230     R3PTRTYPE(PPDMTHREAD)       pFIFOIOThread;
    231207    /** The last seen SVGA_FIFO_CURSOR_COUNT value.
    232208     * Used by the FIFO thread and its watchdog. */
     
    357333    STAMCOUNTER                 StatRegWidthRd;
    358334    STAMCOUNTER                 StatRegWriteOnlyRd;
    359 } VMSVGAState;
     335} VMSVGAState, VMSVGASTATE;
     336
     337
     338/**
     339 * The VMSVGA device state for ring-3
     340 *
     341 * This instantatiated as VGASTATER3::svga.
     342 */
     343typedef struct VMSVGASTATER3
     344{
     345    /** The R3 FIFO pointer. */
     346    R3PTRTYPE(uint32_t *)       pau32FIFO;
     347    /** R3 Opaque pointer to svga state. */
     348    R3PTRTYPE(PVMSVGAR3STATE)   pSvgaR3State;
     349    /** R3 Opaque pointer to 3d state. */
     350    R3PTRTYPE(PVMSVGA3DSTATE)   p3dState;
     351    /** The separate VGA frame buffer in svga mode.
     352     * Unlike the the boch-based VGA device implementation, VMSVGA seems to have a
     353     * separate frame buffer for VGA and allows concurrent use of both.  The SVGA
     354     * SDK is making use of this to do VGA text output while testing other things in
     355     * SVGA mode, displaying the result by switching back to VGA text mode.  So,
     356     * when entering SVGA mode we copy the first part of the frame buffer here and
     357     * direct VGA accesses here instead.  It is copied back when leaving SVGA mode. */
     358    R3PTRTYPE(uint8_t *)        pbVgaFrameBufferR3;
     359    /** R3 Opaque pointer to an external fifo cmd parameter. */
     360    R3PTRTYPE(void * volatile)  pvFIFOExtCmdParam;
     361
     362    /** FIFO external command semaphore. */
     363    R3PTRTYPE(RTSEMEVENT)       hFIFOExtCmdSem;
     364    /** FIFO IO Thread. */
     365    R3PTRTYPE(PPDMTHREAD)       pFIFOIOThread;
     366} VMSVGASTATER3;
     367
     368
     369/**
     370 * The VMSVGA device state for ring-0
     371 *
     372 * This instantatiated as VGASTATER0::svga.
     373 */
     374typedef struct VMSVGASTATER0
     375{
     376    /** The R0 FIFO pointer.
     377     * @note This only points to the _first_ _page_ of the FIFO!  */
     378    R0PTRTYPE(uint32_t *)       pau32FIFO;
     379} VMSVGASTATER0;
     380
    360381
    361382typedef struct VGAState   *PVGASTATE;
     
    381402DECLCALLBACK(void) vmsvgaR3PowerOn(PPDMDEVINS pDevIns);
    382403DECLCALLBACK(void) vmsvgaR3PowerOff(PPDMDEVINS pDevIns);
    383 void vmsvgaR3FifoWatchdogTimer(PPDMDEVINS pDevIns, PVGASTATE pThis);
     404void vmsvgaR3FifoWatchdogTimer(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC);
    384405
    385406#ifdef IN_RING3
    386 VMSVGASCREENOBJECT *vmsvgaR3GetScreenObject(PVGASTATE pThis, uint32_t idScreen);
     407VMSVGASCREENOBJECT *vmsvgaR3GetScreenObject(PVGASTATECC pThisCC, uint32_t idScreen);
    387408int vmsvgaR3UpdateScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, int x, int y, int w, int h);
    388409#endif
    389410
    390 void vmsvgaR3GmrFree(PVGASTATE pThis, uint32_t idGMR);
    391411int vmsvgaR3GmrTransfer(PVGASTATE pThis, PVGASTATECC pThisCC, const SVGA3dTransferType enmTransferType,
    392412                        uint8_t *pbHstBuf, uint32_t cbHstBuf, uint32_t offHst, int32_t cbHstPitch,
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-info.cpp

    r82109 r82114  
    512512 * Updates the heap buffers for all surfaces or one specific one.
    513513 *
    514  * @param   pThis               The shared VGA instance data.
    515  * @param   sid                 The surface ID, UINT32_MAX if all.
     514 * @param   pThisCC     The VGA/VMSVGA state for ring-3.
     515 * @param   sid         The surface ID, UINT32_MAX if all.
    516516 * @thread  VMSVGAFIFO
    517517 */
    518 void vmsvga3dUpdateHeapBuffersForSurfaces(PVGASTATE pThis, uint32_t sid)
    519 {
    520     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     518void vmsvga3dUpdateHeapBuffersForSurfaces(PVGASTATECC pThisCC, uint32_t sid)
     519{
     520    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    521521    AssertReturnVoid(pState);
    522522
     
    17151715
    17161716
    1717 void vmsvga3dInfoContextWorker(PVGASTATE pThis, PCDBGFINFOHLP pHlp, uint32_t cid, bool fVerbose)
     1717void vmsvga3dInfoContextWorker(PVGASTATECC pThisCC, PCDBGFINFOHLP pHlp, uint32_t cid, bool fVerbose)
    17181718{
    17191719    /* Warning! This code is currently racing papContexts reallocation! */
    17201720    /* Warning! This code is currently racing papContexts reallocation! */
    17211721    /* Warning! This code is currently racing papContexts reallocation! */
    1722     VMSVGA3DSTATE volatile *pState = pThis->svga.p3dState;
     1722    VMSVGA3DSTATE volatile *pState = pThisCC->svga.p3dState;
    17231723    if (pState)
    17241724    {
     
    21042104
    21052105
    2106 void vmsvga3dInfoSurfaceWorker(PPDMDEVINS pDevIns, PVGASTATE pThis, PCDBGFINFOHLP pHlp, uint32_t sid, bool fVerbose,
    2107                                uint32_t cxAscii, bool fInvY, const char *pszBitmapPath)
     2106void vmsvga3dInfoSurfaceWorker(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, PCDBGFINFOHLP pHlp, uint32_t sid,
     2107                               bool fVerbose, uint32_t cxAscii, bool fInvY, const char *pszBitmapPath)
    21082108{
    21092109    /* Warning! This code is currently racing papSurfaces reallocation! */
    21102110    /* Warning! This code is currently racing papSurfaces reallocation! */
    21112111    /* Warning! This code is currently racing papSurfaces reallocation! */
    2112     VMSVGA3DSTATE volatile *pState = pThis->svga.p3dState;
     2112    VMSVGA3DSTATE volatile *pState = pThisCC->svga.p3dState;
    21132113    if (pState)
    21142114    {
     
    21242124                {
    21252125                    if (fVerbose)
    2126                         vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(pDevIns, pThis, sid);
     2126                        vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(pDevIns, pThis, pThisCC, sid);
    21272127                    vmsvga3dInfoSurfaceWorkerOne(pHlp, pSurface, fVerbose, cxAscii, fInvY);
    21282128                    if (pszBitmapPath && *pszBitmapPath)
     
    21392139             */
    21402140            if (fVerbose)
    2141                 vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(pDevIns, pThis, UINT32_MAX);
     2141                vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(pDevIns, pThis, pThisCC, UINT32_MAX);
    21422142            uint32_t cSurfaces = pState->cSurfaces;
    21432143            pHlp->pfnPrintf(pHlp, "cSurfaces=%d\n", cSurfaces);
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-internal.h

    r82109 r82114  
    12101210# define VMSVGA3D_DEF_CTX_F_INIT            RT_BIT_32(2)
    12111211/** @} */
    1212 int  vmsvga3dContextDefineOgl(PVGASTATE pThis, uint32_t cid, uint32_t fFlags);
     1212int  vmsvga3dContextDefineOgl(PVGASTATECC pThisCC, uint32_t cid, uint32_t fFlags);
    12131213void vmsvga3dSurfaceFormat2OGL(PVMSVGA3DSURFACE pSurface, SVGA3dSurfaceFormat format);
    12141214
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp

    r82110 r82114  
    168168*   Internal Functions                                                                                                           *
    169169*********************************************************************************************************************************/
    170 static int  vmsvga3dContextDestroyOgl(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext, uint32_t cid);
     170static int  vmsvga3dContextDestroyOgl(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid);
    171171static void vmsvgaColor2GLFloatArray(uint32_t color, GLfloat *pRed, GLfloat *pGreen, GLfloat *pBlue, GLfloat *pAlpha);
    172172
     
    591591{
    592592    int rc;
    593     RT_NOREF(pDevIns, pThisCC);
     593    RT_NOREF(pDevIns, pThis);
    594594
    595595    AssertCompile(GL_TRUE == 1);
     
    627627     * Allocate the state.
    628628     */
    629     pThis->svga.p3dState = (PVMSVGA3DSTATE)RTMemAllocZ(sizeof(VMSVGA3DSTATE));
    630     AssertReturn(pThis->svga.p3dState, VERR_NO_MEMORY);
     629    pThisCC->svga.p3dState = (PVMSVGA3DSTATE)RTMemAllocZ(sizeof(VMSVGA3DSTATE));
     630    AssertReturn(pThisCC->svga.p3dState, VERR_NO_MEMORY);
    631631
    632632#ifdef RT_OS_WINDOWS
    633633    /* Create event semaphore and async IO thread. */
    634     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     634    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    635635    rc = RTSemEventCreate(&pState->WndRequestSem);
    636636    if (RT_SUCCESS(rc))
     
    647647    else
    648648        LogRel(("VMSVGA3d: RTSemEventCreate failed: %Rrc\n", rc));
    649     RTMemFree(pThis->svga.p3dState);
    650     pThis->svga.p3dState = NULL;
     649    RTMemFree(pThisCC->svga.p3dState);
     650    pThisCC->svga.p3dState = NULL;
    651651    return rc;
    652652#else
     
    815815int vmsvga3dPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC)
    816816{
    817     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
    818     AssertReturn(pThis->svga.p3dState, VERR_NO_MEMORY);
     817    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
     818    AssertReturn(pThisCC->svga.p3dState, VERR_NO_MEMORY);
    819819    PVMSVGA3DCONTEXT pContext;
    820820#ifdef VBOX_VMSVGA3D_DUAL_OPENGL_PROFILE
     
    822822#endif
    823823    int              rc;
    824     RT_NOREF(pDevIns, pThisCC);
     824    RT_NOREF(pDevIns, pThis);
    825825
    826826    if (pState->rsGLVersion != 0.0)
     
    830830     * OpenGL function calls aren't possible without a valid current context, so create a fake one here.
    831831     */
    832     rc = vmsvga3dContextDefineOgl(pThis, 1, VMSVGA3D_DEF_CTX_F_INIT);
     832    rc = vmsvga3dContextDefineOgl(pThisCC, 1, VMSVGA3D_DEF_CTX_F_INIT);
    833833    AssertRCReturn(rc, rc);
    834834
     
    865865     * figure out the shader model and stuff.
    866866     */
    867     rc = vmsvga3dContextDefineOgl(pThis, 2, VMSVGA3D_DEF_CTX_F_INIT | VMSVGA3D_DEF_CTX_F_OTHER_PROFILE);
     867    rc = vmsvga3dContextDefineOgl(pThisCC, 2, VMSVGA3D_DEF_CTX_F_INIT | VMSVGA3D_DEF_CTX_F_OTHER_PROFILE);
    868868    AssertLogRelRCReturn(rc, rc);
    869869    pContext = pState->papContexts[1]; /* Array may have been reallocated. */
     
    11181118
    11191119    /* Cleanup */
    1120     rc = vmsvga3dContextDestroy(pThis, 1);
     1120    rc = vmsvga3dContextDestroy(pThisCC, 1);
    11211121    AssertRC(rc);
    11221122#ifdef VBOX_VMSVGA3D_DUAL_OPENGL_PROFILE
    1123     rc = vmsvga3dContextDestroy(pThis, 2);
     1123    rc = vmsvga3dContextDestroy(pThisCC, 2);
    11241124    AssertRC(rc);
    11251125#endif
     
    11351135}
    11361136
    1137 int vmsvga3dReset(PVGASTATE pThis)
    1138 {
    1139     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
    1140     AssertReturn(pThis->svga.p3dState, VERR_NO_MEMORY);
     1137int vmsvga3dReset(PVGASTATECC pThisCC)
     1138{
     1139    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
     1140    AssertReturn(pThisCC->svga.p3dState, VERR_NO_MEMORY);
    11411141
    11421142    /* Destroy all leftover surfaces. */
     
    11441144    {
    11451145        if (pState->papSurfaces[i]->id != SVGA3D_INVALID_ID)
    1146             vmsvga3dSurfaceDestroy(pThis, pState->papSurfaces[i]->id);
     1146            vmsvga3dSurfaceDestroy(pThisCC, pState->papSurfaces[i]->id);
    11471147    }
    11481148
     
    11511151    {
    11521152        if (pState->papContexts[i]->id != SVGA3D_INVALID_ID)
    1153             vmsvga3dContextDestroy(pThis, pState->papContexts[i]->id);
     1153            vmsvga3dContextDestroy(pThisCC, pState->papContexts[i]->id);
    11541154    }
    11551155
    11561156    if (pState->SharedCtx.id == VMSVGA3D_SHARED_CTX_ID)
    1157         vmsvga3dContextDestroyOgl(pThis, &pState->SharedCtx, VMSVGA3D_SHARED_CTX_ID);
     1157        vmsvga3dContextDestroyOgl(pThisCC, &pState->SharedCtx, VMSVGA3D_SHARED_CTX_ID);
    11581158
    11591159    return VINF_SUCCESS;
    11601160}
    11611161
    1162 int vmsvga3dTerminate(PVGASTATE pThis)
    1163 {
    1164     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     1162int vmsvga3dTerminate(PVGASTATECC pThisCC)
     1163{
     1164    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    11651165    AssertReturn(pState, VERR_WRONG_ORDER);
    11661166    int            rc;
    11671167
    1168     rc = vmsvga3dReset(pThis);
     1168    rc = vmsvga3dReset(pThisCC);
    11691169    AssertRCReturn(rc, rc);
    11701170
     
    12011201
    12021202
    1203 void vmsvga3dUpdateHostScreenViewport(PVGASTATE pThis, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport)
     1203void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport)
    12041204{
    12051205    /** @todo Move the visible framebuffer content here, don't wait for the guest to
     
    12081208#ifdef RT_OS_DARWIN
    12091209    RT_NOREF(pOldViewport);
    1210     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     1210    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    12111211    if (   pState
    12121212        && idScreen == 0
     
    12161216    }
    12171217#else
    1218     RT_NOREF(pThis, idScreen, pOldViewport);
     1218    RT_NOREF(pThisCC, idScreen, pOldViewport);
    12191219#endif
    12201220}
     
    13661366
    13671367
    1368 int vmsvga3dQueryCaps(PVGASTATE pThis, uint32_t idx3dCaps, uint32_t *pu32Val)
    1369 {
    1370     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     1368int vmsvga3dQueryCaps(PVGASTATECC pThisCC, uint32_t idx3dCaps, uint32_t *pu32Val)
     1369{
     1370    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    13711371    AssertReturn(pState, VERR_NO_MEMORY);
    13721372    int       rc = VINF_SUCCESS;
     
    20322032
    20332033
    2034 int vmsvga3dSurfaceCopy(PVGASTATE pThis, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src, uint32_t cCopyBoxes, SVGA3dCopyBox *pBox)
     2034int vmsvga3dSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src,
     2035                        uint32_t cCopyBoxes, SVGA3dCopyBox *pBox)
    20352036{
    20362037    int rc;
     
    20392040             cCopyBoxes, src.sid, src.face, src.mipmap, dest.sid, dest.face, dest.mipmap));
    20402041
    2041     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     2042    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    20422043    AssertReturn(pState, VERR_INVALID_STATE);
    20432044
     
    21702171    }
    21712172
     2173    PVGASTATE pThis = PDMDEVINS_2_DATA(pThisCC->pDevIns, PVGASTATE);
    21722174    for (uint32_t i = 0; i < cCopyBoxes; i++)
    21732175    {
     
    21892191
    21902192        /* No stretching is required, therefore use SVGA3D_STRETCH_BLT_POINT which translated to GL_NEAREST. */
    2191         rc = vmsvga3dSurfaceStretchBlt(pThis, &dest, &destBox, &src, &srcBox, SVGA3D_STRETCH_BLT_POINT);
     2193        rc = vmsvga3dSurfaceStretchBlt(pThis, pThisCC, &dest, &destBox, &src, &srcBox, SVGA3D_STRETCH_BLT_POINT);
    21922194        AssertRCReturn(rc, rc);
    21932195    }
     
    28172819 *
    28182820 * @returns Failure status code or @a rc.
    2819  * @param   pThis               The shared VGA instance data.
     2821 * @param   pThis               The shared VGA/VMSVGA instance data.
    28202822 * @param   pThisCC             The VGA/VMSVGA state for ring-3.
    28212823 * @param   pState              The VMSVGA3d state.
     
    31153117}
    31163118
    3117 int vmsvga3dGenerateMipmaps(PVGASTATE pThis, uint32_t sid, SVGA3dTextureFilter filter)
    3118 {
    3119     PVMSVGA3DSTATE      pState = pThis->svga.p3dState;
     3119int vmsvga3dGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter)
     3120{
     3121    PVMSVGA3DSTATE      pState = pThisCC->svga.p3dState;
    31203122    PVMSVGA3DSURFACE    pSurface;
    31213123    int                 rc = VINF_SUCCESS;
     
    32083210 *
    32093211 * @returns VBox status code.
    3210  * @param   pThis           The shared VGA instance data.
     3212 * @param   pThisCC         The VGA/VMSVGA state for ring-3.
    32113213 * @param   cid             Context id
    32123214 * @param   fFlags          VMSVGA3D_DEF_CTX_F_XXX.
    32133215 */
    3214 int vmsvga3dContextDefineOgl(PVGASTATE pThis, uint32_t cid, uint32_t fFlags)
     3216int vmsvga3dContextDefineOgl(PVGASTATECC pThisCC, uint32_t cid, uint32_t fFlags)
    32153217{
    32163218    int                     rc;
    32173219    PVMSVGA3DCONTEXT        pContext;
    3218     PVMSVGA3DSTATE          pState = pThis->svga.p3dState;
     3220    PVMSVGA3DSTATE          pState = pThisCC->svga.p3dState;
    32193221
    32203222    AssertReturn(pState, VERR_NO_MEMORY);
     
    32483250        /* If one already exists with this id, then destroy it now. */
    32493251        if (pState->papContexts[cid]->id != SVGA3D_INVALID_ID)
    3250             vmsvga3dContextDestroy(pThis, cid);
     3252            vmsvga3dContextDestroy(pThisCC, cid);
    32513253
    32523254        pContext = pState->papContexts[cid];
     
    32623264        if (pSharedCtx->id != VMSVGA3D_SHARED_CTX_ID)
    32633265        {
    3264             rc = vmsvga3dContextDefineOgl(pThis, VMSVGA3D_SHARED_CTX_ID, VMSVGA3D_DEF_CTX_F_SHARED_CTX);
     3266            rc = vmsvga3dContextDefineOgl(pThisCC, VMSVGA3D_SHARED_CTX_ID, VMSVGA3D_DEF_CTX_F_SHARED_CTX);
    32653267            AssertLogRelRCReturn(rc, rc);
    32663268
     
    34433445 *
    34443446 * @returns VBox status code.
    3445  * @param   pThis           The shared VGA instance data.
     3447 * @param   pThisCC         The VGA/VMSVGA state for ring-3.
    34463448 * @param   cid             Context id
    34473449 */
    3448 int vmsvga3dContextDefine(PVGASTATE pThis, uint32_t cid)
    3449 {
    3450     return vmsvga3dContextDefineOgl(pThis, cid, 0/*fFlags*/);
     3450int vmsvga3dContextDefine(PVGASTATECC pThisCC, uint32_t cid)
     3451{
     3452    return vmsvga3dContextDefineOgl(pThisCC, cid, 0/*fFlags*/);
    34513453}
    34523454
     
    34553457 *
    34563458 * @returns VBox status code.
    3457  * @param   pThis           The shared VGA instance data.
     3459 * @param   pThisCC         The VGA/VMSVGA state for ring-3.
    34583460 * @param   pContext        The context to destroy.
    34593461 * @param   cid             Context id
    34603462 */
    3461 static int vmsvga3dContextDestroyOgl(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext, uint32_t cid)
    3462 {
    3463     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     3463static int vmsvga3dContextDestroyOgl(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid)
     3464{
     3465    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    34643466    AssertReturn(pState, VERR_NO_MEMORY);
    34653467    AssertReturn(pContext, VERR_INVALID_PARAMETER);
     
    34793481    {
    34803482        if (pContext->paPixelShader[i].id != SVGA3D_INVALID_ID)
    3481             vmsvga3dShaderDestroy(pThis, pContext->paPixelShader[i].cid, pContext->paPixelShader[i].id, pContext->paPixelShader[i].type);
     3483            vmsvga3dShaderDestroy(pThisCC, pContext->paPixelShader[i].cid, pContext->paPixelShader[i].id, pContext->paPixelShader[i].type);
    34823484    }
    34833485    if (pContext->paPixelShader)
     
    34883490    {
    34893491        if (pContext->paVertexShader[i].id != SVGA3D_INVALID_ID)
    3490             vmsvga3dShaderDestroy(pThis, pContext->paVertexShader[i].cid, pContext->paVertexShader[i].id, pContext->paVertexShader[i].type);
     3492            vmsvga3dShaderDestroy(pThisCC, pContext->paVertexShader[i].cid, pContext->paVertexShader[i].id, pContext->paVertexShader[i].type);
    34913493    }
    34923494    if (pContext->paVertexShader)
     
    35533555 *
    35543556 * @returns VBox status code.
    3555  * @param   pThis           The shared VGA instance data.
     3557 * @param   pThisCC         The VGA/VMSVGA state for ring-3.
    35563558 * @param   cid             Context id
    35573559 */
    3558 int vmsvga3dContextDestroy(PVGASTATE pThis, uint32_t cid)
    3559 {
    3560     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     3560int vmsvga3dContextDestroy(PVGASTATECC pThisCC, uint32_t cid)
     3561{
     3562    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    35613563    AssertReturn(pState, VERR_WRONG_ORDER);
    35623564
     
    35663568    if (   cid < pState->cContexts
    35673569        && pState->papContexts[cid]->id == cid)
    3568         return vmsvga3dContextDestroyOgl(pThis, pState->papContexts[cid], cid);
     3570        return vmsvga3dContextDestroyOgl(pThisCC, pState->papContexts[cid], cid);
    35693571
    35703572    AssertReturn(cid < SVGA3D_MAX_CONTEXT_IDS, VERR_INVALID_PARAMETER);
     
    35753577 * Worker for vmsvga3dChangeMode that resizes a context.
    35763578 *
    3577  * @param   pThis               The shared VGA instance data.
    35783579 * @param   pState              The VMSVGA3d state.
    35793580 * @param   pContext            The context.
    35803581 */
    3581 static void vmsvga3dChangeModeOneContext(PVGASTATE pThis, PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext)
    3582 {
    3583     RT_NOREF3(pThis, pState, pContext);
     3582static void vmsvga3dChangeModeOneContext(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext)
     3583{
     3584    RT_NOREF(pState, pContext);
    35843585    /* Do nothing. The window is not used for presenting. */
    35853586}
    35863587
    35873588/* Handle resize */
    3588 int vmsvga3dChangeMode(PVGASTATE pThis)
    3589 {
    3590     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     3589int vmsvga3dChangeMode(PVGASTATECC pThisCC)
     3590{
     3591    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    35913592    AssertReturn(pState, VERR_NO_MEMORY);
    35923593
    35933594    /* Resize the shared context too. */
    35943595    if (pState->SharedCtx.id == VMSVGA3D_SHARED_CTX_ID)
    3595         vmsvga3dChangeModeOneContext(pThis, pState, &pState->SharedCtx);
     3596        vmsvga3dChangeModeOneContext(pState, &pState->SharedCtx);
    35963597
    35973598    /* Resize all active contexts. */
     
    36003601        PVMSVGA3DCONTEXT pContext = pState->papContexts[i];
    36013602        if (pContext->id != SVGA3D_INVALID_ID)
    3602             vmsvga3dChangeModeOneContext(pThis, pState, pContext);
     3603            vmsvga3dChangeModeOneContext(pState, pContext);
    36033604    }
    36043605
     
    36073608
    36083609
    3609 int vmsvga3dSetTransform(PVGASTATE pThis, uint32_t cid, SVGA3dTransformType type, float matrix[16])
    3610 {
    3611     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     3610int vmsvga3dSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16])
     3611{
     3612    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    36123613    AssertReturn(pState, VERR_NO_MEMORY);
    36133614    bool                  fModelViewChanged = false;
     
    36993700        {
    37003701            if (pContext->state.aClipPlane[j].fValid == true)
    3701                 vmsvga3dSetClipPlane(pThis, cid, j, pContext->state.aClipPlane[j].plane);
     3702                vmsvga3dSetClipPlane(pThisCC, cid, j, pContext->state.aClipPlane[j].plane);
    37023703        }
    37033704
     
    37063707        {
    37073708            if (pContext->state.aLightData[j].fValidData == true)
    3708                 vmsvga3dSetLightData(pThis, cid, j, &pContext->state.aLightData[j].data);
     3709                vmsvga3dSetLightData(pThisCC, cid, j, &pContext->state.aLightData[j].data);
    37093710        }
    37103711    }
     
    37133714}
    37143715
    3715 int vmsvga3dSetZRange(PVGASTATE pThis, uint32_t cid, SVGA3dZRange zRange)
    3716 {
    3717     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     3716int vmsvga3dSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange)
     3717{
     3718    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    37183719    AssertReturn(pState, VERR_NO_MEMORY);
    37193720
     
    38513852}
    38523853
    3853 int vmsvga3dSetRenderState(PVGASTATE pThis, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState)
     3854int vmsvga3dSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState)
    38543855{
    38553856    uint32_t                    val = UINT32_MAX; /* Shut up MSC. */
    3856     PVMSVGA3DSTATE              pState = pThis->svga.p3dState;
     3857    PVMSVGA3DSTATE              pState = pThisCC->svga.p3dState;
    38573858    AssertReturn(pState, VERR_NO_MEMORY);
    38583859
     
    41504151            }
    41514152
    4152             rc = vmsvga3dSetRenderState(pThis, cid, 2, renderstate);
     4153            rc = vmsvga3dSetRenderState(pThisCC, cid, 2, renderstate);
    41534154            AssertRCReturn(rc, rc);
    41544155
     
    43214322            }
    43224323
    4323             rc = vmsvga3dSetRenderState(pThis, cid, RT_ELEMENTS(renderstate), renderstate);
     4324            rc = vmsvga3dSetRenderState(pThisCC, cid, RT_ELEMENTS(renderstate), renderstate);
    43244325            AssertRCReturn(rc, rc);
    43254326
     
    47164717}
    47174718
    4718 int vmsvga3dSetRenderTarget(PVGASTATE pThis, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target)
    4719 {
    4720     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     4719int vmsvga3dSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target)
     4720{
     4721    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    47214722
    47224723    AssertReturn(pState, VERR_NO_MEMORY);
     
    50485049}
    50495050
    5050 int vmsvga3dSetTextureState(PVGASTATE pThis, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState)
     5051int vmsvga3dSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState)
    50515052{
    50525053    GLenum                      val = ~(GLenum)0; /* Shut up MSC. */
    50535054    GLenum                      currentStage = ~(GLenum)0;
    5054     PVMSVGA3DSTATE              pState = pThis->svga.p3dState;
     5055    PVMSVGA3DSTATE              pState = pThisCC->svga.p3dState;
    50555056    AssertReturn(pState, VERR_NO_MEMORY);
    50565057
     
    52145215                            if (    pTextureStateIter->name != SVGA3D_TS_INVALID
    52155216                                &&  pTextureStateIter->name != SVGA3D_TS_BIND_TEXTURE)
    5216                                 vmsvga3dSetTextureState(pThis, pContext->id, 1, pTextureStateIter);
     5217                                vmsvga3dSetTextureState(pThisCC, pContext->id, 1, pTextureStateIter);
    52175218                        }
    52185219                    }
     
    53825383}
    53835384
    5384 int vmsvga3dSetMaterial(PVGASTATE pThis, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial)
    5385 {
    5386     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     5385int vmsvga3dSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial)
     5386{
     5387    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    53875388    AssertReturn(pState, VERR_NO_MEMORY);
    53885389
     
    54315432
    54325433/** @todo Move into separate library as we are using logic from Wine here. */
    5433 int vmsvga3dSetLightData(PVGASTATE pThis, uint32_t cid, uint32_t index, SVGA3dLightData *pData)
    5434 {
    5435     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     5434int vmsvga3dSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData)
     5435{
     5436    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    54365437    AssertReturn(pState, VERR_NO_MEMORY);
    54375438
     
    56085609}
    56095610
    5610 int vmsvga3dSetLightEnabled(PVGASTATE pThis, uint32_t cid, uint32_t index, uint32_t enabled)
    5611 {
    5612     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     5611int vmsvga3dSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled)
     5612{
     5613    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    56135614    AssertReturn(pState, VERR_NO_MEMORY);
    56145615
     
    56335634           /* Load the default settings if none have been set yet. */
    56345635           if (!pContext->state.aLightData[index].fValidData)
    5635                vmsvga3dSetLightData(pThis, cid, index, (SVGA3dLightData *)&vmsvga3d_default_light);
     5636               vmsvga3dSetLightData(pThisCC, cid, index, (SVGA3dLightData *)&vmsvga3d_default_light);
    56365637        }
    56375638        glEnable(GL_LIGHT0 + index);
     
    56445645}
    56455646
    5646 int vmsvga3dSetViewPort(PVGASTATE pThis, uint32_t cid, SVGA3dRect *pRect)
    5647 {
    5648     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     5647int vmsvga3dSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)
     5648{
     5649    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    56495650    AssertReturn(pState, VERR_NO_MEMORY);
    56505651
     
    56675668    /* Reset the projection matrix as that relies on the viewport setting. */
    56685669    if (pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].fValid == true)
    5669     {
    5670         vmsvga3dSetTransform(pThis, cid, SVGA3D_TRANSFORM_PROJECTION, pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].matrix);
    5671     }
     5670        vmsvga3dSetTransform(pThisCC, cid, SVGA3D_TRANSFORM_PROJECTION,
     5671                             pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].matrix);
    56725672    else
    56735673    {
     
    56805680        matrix[10] = 1.0;
    56815681        matrix[15] = 1.0;
    5682         vmsvga3dSetTransform(pThis, cid, SVGA3D_TRANSFORM_PROJECTION, matrix);
     5682        vmsvga3dSetTransform(pThisCC, cid, SVGA3D_TRANSFORM_PROJECTION, matrix);
    56835683    }
    56845684
     
    56865686}
    56875687
    5688 int vmsvga3dSetClipPlane(PVGASTATE pThis, uint32_t cid,  uint32_t index, float plane[4])
    5689 {
    5690     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     5688int vmsvga3dSetClipPlane(PVGASTATECC pThisCC, uint32_t cid,  uint32_t index, float plane[4])
     5689{
     5690    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    56915691    AssertReturn(pState, VERR_NO_MEMORY);
    56925692    double                oglPlane[4];
     
    57175717}
    57185718
    5719 int vmsvga3dSetScissorRect(PVGASTATE pThis, uint32_t cid, SVGA3dRect *pRect)
    5720 {
    5721     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     5719int vmsvga3dSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)
     5720{
     5721    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    57225722    AssertReturn(pState, VERR_NO_MEMORY);
    57235723
     
    57495749}
    57505750
    5751 int vmsvga3dCommandClear(PVGASTATE pThis, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil,
     5751int vmsvga3dCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil,
    57525752                         uint32_t cRects, SVGA3dRect *pRect)
    57535753{
    57545754    GLbitfield            mask = 0;
    5755     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     5755    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    57565756    AssertReturn(pState, VERR_NO_MEMORY);
    57575757    GLboolean             fDepthWriteEnabled = GL_FALSE;
     
    59535953}
    59545954
    5955 int vmsvga3dResetTransformMatrices(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext)
     5955static int vmsvga3dResetTransformMatrices(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext)
    59565956{
    59575957    int rc;
     
    59595959    /* Reset the view matrix (also takes the world matrix into account). */
    59605960    if (pContext->state.aTransformState[SVGA3D_TRANSFORM_VIEW].fValid == true)
    5961     {
    5962         rc = vmsvga3dSetTransform(pThis, pContext->id, SVGA3D_TRANSFORM_VIEW, pContext->state.aTransformState[SVGA3D_TRANSFORM_VIEW].matrix);
    5963     }
     5961        rc = vmsvga3dSetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_VIEW,
     5962                                  pContext->state.aTransformState[SVGA3D_TRANSFORM_VIEW].matrix);
    59645963    else
    59655964    {
     
    59725971        matrix[10] = 1.0;
    59735972        matrix[15] = 1.0;
    5974         rc = vmsvga3dSetTransform(pThis, pContext->id, SVGA3D_TRANSFORM_VIEW, matrix);
     5973        rc = vmsvga3dSetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_VIEW, matrix);
    59755974    }
    59765975
     
    59785977    if (pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].fValid == true)
    59795978    {
    5980         rc = vmsvga3dSetTransform(pThis, pContext->id, SVGA3D_TRANSFORM_PROJECTION, pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].matrix);
     5979        rc = vmsvga3dSetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_PROJECTION, pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].matrix);
    59815980    }
    59825981    else
     
    59905989        matrix[10] = 1.0;
    59915990        matrix[15] = 1.0;
    5992         rc = vmsvga3dSetTransform(pThis, pContext->id, SVGA3D_TRANSFORM_PROJECTION, matrix);
     5991        rc = vmsvga3dSetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_PROJECTION, matrix);
    59935992    }
    59945993    AssertRC(rc);
     
    59965995}
    59975996
    5998 int vmsvga3dDrawPrimitivesProcessVertexDecls(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext,
    5999                                              uint32_t iVertexDeclBase, uint32_t numVertexDecls,
    6000                                              SVGA3dVertexDecl *pVertexDecl,
    6001                                              SVGA3dVertexDivisor const *paVertexDivisors, uint32_t cInstances)
    6002 {
    6003     PVMSVGA3DSTATE      pState = pThis->svga.p3dState;
     5997static int vmsvga3dDrawPrimitivesProcessVertexDecls(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext,
     5998                                                    uint32_t iVertexDeclBase, uint32_t numVertexDecls,
     5999                                                    SVGA3dVertexDecl *pVertexDecl,
     6000                                                    SVGA3dVertexDivisor const *paVertexDivisors, uint32_t cInstances)
     6001{
     6002    PVMSVGA3DSTATE      pState = pThisCC->svga.p3dState;
    60046003    unsigned const      sidVertex = pVertexDecl[0].array.surfaceId;
    60056004
     
    61826181}
    61836182
    6184 int vmsvga3dDrawPrimitivesCleanupVertexDecls(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext, uint32_t iVertexDeclBase, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl)
    6185 {
    6186     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     6183static int vmsvga3dDrawPrimitivesCleanupVertexDecls(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t iVertexDeclBase,
     6184                                                    uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl)
     6185{
     6186    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    61876187
    61886188    /* Clean up the vertex declarations. */
     
    61936193            /* Reset the transformation matrices in case of a switch back from pretransformed mode. */
    61946194            Log(("vmsvga3dDrawPrimitivesCleanupVertexDecls: reset world and projection matrices after transformation reset (pre-transformed -> transformed)\n"));
    6195             vmsvga3dResetTransformMatrices(pThis, pContext);
     6195            vmsvga3dResetTransformMatrices(pThisCC, pContext);
    61966196        }
    61976197
     
    62626262}
    62636263
    6264 int vmsvga3dDrawPrimitives(PVGASTATE pThis, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl,
     6264int vmsvga3dDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl,
    62656265                           uint32_t numRanges, SVGA3dPrimitiveRange *pRange, uint32_t cVertexDivisor,
    62666266                           SVGA3dVertexDivisor *pVertexDivisor)
    62676267{
    6268     PVMSVGA3DSTATE               pState = pThis->svga.p3dState;
     6268    PVMSVGA3DSTATE               pState = pThisCC->svga.p3dState;
    62696269    AssertReturn(pState, VERR_INTERNAL_ERROR);
    62706270    uint32_t                     iCurrentVertex;
     
    64036403        }
    64046404
    6405         rc = vmsvga3dDrawPrimitivesProcessVertexDecls(pThis, pContext, iCurrentVertex, iVertex - iCurrentVertex,
     6405        rc = vmsvga3dDrawPrimitivesProcessVertexDecls(pThisCC, pContext, iCurrentVertex, iVertex - iCurrentVertex,
    64066406                                                      &pVertexDecl[iCurrentVertex], pVertexDivisor, cInstances);
    64076407        AssertRCReturn(rc, rc);
     
    65626562        }
    65636563
    6564         rc = vmsvga3dDrawPrimitivesCleanupVertexDecls(pThis, pContext, iCurrentVertex, iVertex - iCurrentVertex, &pVertexDecl[iCurrentVertex]);
     6564        rc = vmsvga3dDrawPrimitivesCleanupVertexDecls(pThisCC, pContext, iCurrentVertex,
     6565                                                      iVertex - iCurrentVertex, &pVertexDecl[iCurrentVertex]);
    65656566        AssertRCReturn(rc, rc);
    65666567
     
    66316632
    66326633
    6633 int vmsvga3dShaderDefine(PVGASTATE pThis, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData)
     6634int vmsvga3dShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData)
    66346635{
    66356636    PVMSVGA3DSHADER       pShader;
    6636     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     6637    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    66376638    AssertReturn(pState, VERR_NO_MEMORY);
    66386639
     
    66616662        /* If one already exists with this id, then destroy it now. */
    66626663        if (pContext->paVertexShader[shid].id != SVGA3D_INVALID_ID)
    6663             vmsvga3dShaderDestroy(pThis, cid, shid, pContext->paVertexShader[shid].type);
     6664            vmsvga3dShaderDestroy(pThisCC, cid, shid, pContext->paVertexShader[shid].type);
    66646665
    66656666        pShader = &pContext->paVertexShader[shid];
     
    66806681        /* If one already exists with this id, then destroy it now. */
    66816682        if (pContext->paPixelShader[shid].id != SVGA3D_INVALID_ID)
    6682             vmsvga3dShaderDestroy(pThis, cid, shid, pContext->paPixelShader[shid].type);
     6683            vmsvga3dShaderDestroy(pThisCC, cid, shid, pContext->paPixelShader[shid].type);
    66836684
    66846685        pShader = &pContext->paPixelShader[shid];
     
    67296730}
    67306731
    6731 int vmsvga3dShaderDestroy(PVGASTATE pThis, uint32_t cid, uint32_t shid, SVGA3dShaderType type)
    6732 {
    6733     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     6732int vmsvga3dShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type)
     6733{
     6734    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    67346735    AssertReturn(pState, VERR_NO_MEMORY);
    67356736    PVMSVGA3DSHADER       pShader = NULL;
     
    67786779}
    67796780
    6780 int vmsvga3dShaderSet(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid)
    6781 {
    6782     PVMSVGA3DSTATE      pState = pThis->svga.p3dState;
     6781int vmsvga3dShaderSet(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid)
     6782{
     6783    PVMSVGA3DSTATE      pState = pThisCC->svga.p3dState;
    67836784    AssertReturn(pState, VERR_NO_MEMORY);
    67846785    int                 rc;
     
    68496850}
    68506851
    6851 int vmsvga3dShaderSetConst(PVGASTATE pThis, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues)
    6852 {
    6853     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     6852int vmsvga3dShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues)
     6853{
     6854    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    68546855    AssertReturn(pState, VERR_NO_MEMORY);
    68556856
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-savedstate.cpp

    r82110 r82114  
    4545 *
    4646 * @returns VBox status code.
    47  * @param   pThis               The VMSVGA device state.
    48  * @param   pContext            The freshly loaded context to reinitialize.
     47 * @param   pThisCC         The VGA/VMSVGA state for ring-3.
     48 * @param   pContext        The freshly loaded context to reinitialize.
    4949 */
    50 static int vmsvga3dLoadReinitContext(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext)
     50static int vmsvga3dLoadReinitContext(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext)
    5151{
    5252    int      rc;
     
    6565            target.face     = 0;
    6666            target.mipmap   = 0;
    67             rc = vmsvga3dSetRenderTarget(pThis, cid, (SVGA3dRenderTargetType)j, target);
     67            rc = vmsvga3dSetRenderTarget(pThisCC, cid, (SVGA3dRenderTargetType)j, target);
    6868            AssertRCReturn(rc, rc);
    6969        }
     
    7878
    7979        if (pRenderState->state != SVGA3D_RS_INVALID)
    80             vmsvga3dSetRenderState(pThis, pContext->id, 1, pRenderState);
     80            vmsvga3dSetRenderState(pThisCC, pContext->id, 1, pRenderState);
    8181    }
    8282    Log(("vmsvga3dLoadReinitContext: Recreate render state END\n"));
     
    9191
    9292            if (pTextureState->name != SVGA3D_TS_INVALID)
    93                 vmsvga3dSetTextureState(pThis, pContext->id, 1, pTextureState);
     93                vmsvga3dSetTextureState(pThisCC, pContext->id, 1, pTextureState);
    9494        }
    9595    }
     
    100100    {
    101101        if (pContext->state.aClipPlane[j].fValid == true)
    102             vmsvga3dSetClipPlane(pThis, cid, j, pContext->state.aClipPlane[j].plane);
     102            vmsvga3dSetClipPlane(pThisCC, cid, j, pContext->state.aClipPlane[j].plane);
    103103    }
    104104
     
    107107    {
    108108        if (pContext->state.aLightData[j].fValidData == true)
    109             vmsvga3dSetLightData(pThis, cid, j, &pContext->state.aLightData[j].data);
     109            vmsvga3dSetLightData(pThisCC, cid, j, &pContext->state.aLightData[j].data);
    110110        if (pContext->state.aLightData[j].fEnabled)
    111             vmsvga3dSetLightEnabled(pThis, cid, j, true);
     111            vmsvga3dSetLightEnabled(pThisCC, cid, j, true);
    112112    }
    113113
     
    118118        {
    119119            if (pContext->state.aTransformState[j].fValid == true)
    120                 vmsvga3dSetTransform(pThis, cid, (SVGA3dTransformType)j, pContext->state.aTransformState[j].matrix);
     120                vmsvga3dSetTransform(pThisCC, cid, (SVGA3dTransformType)j, pContext->state.aTransformState[j].matrix);
    121121        }
    122122    }
     
    128128        {
    129129            if (pContext->state.aMaterial[j].fValid == true)
    130                 vmsvga3dSetMaterial(pThis, cid, (SVGA3dFace)j, &pContext->state.aMaterial[j].material);
     130                vmsvga3dSetMaterial(pThisCC, cid, (SVGA3dFace)j, &pContext->state.aMaterial[j].material);
    131131        }
    132132    }
    133133
    134134    if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_SCISSORRECT)
    135         vmsvga3dSetScissorRect(pThis, cid, &pContext->state.RectScissor);
     135        vmsvga3dSetScissorRect(pThisCC, cid, &pContext->state.RectScissor);
    136136    if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_ZRANGE)
    137         vmsvga3dSetZRange(pThis, cid, pContext->state.zRange);
     137        vmsvga3dSetZRange(pThisCC, cid, pContext->state.zRange);
    138138    if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_VIEWPORT)
    139         vmsvga3dSetViewPort(pThis, cid, &pContext->state.RectViewPort);
     139        vmsvga3dSetViewPort(pThisCC, cid, &pContext->state.RectViewPort);
    140140    if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_VERTEXSHADER)
    141         vmsvga3dShaderSet(pThis, pContext, cid, SVGA3D_SHADERTYPE_VS, pContext->state.shidVertex);
     141        vmsvga3dShaderSet(pThisCC, pContext, cid, SVGA3D_SHADERTYPE_VS, pContext->state.shidVertex);
    142142    if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_PIXELSHADER)
    143         vmsvga3dShaderSet(pThis, pContext, cid, SVGA3D_SHADERTYPE_PS, pContext->state.shidPixel);
     143        vmsvga3dShaderSet(pThisCC, pContext, cid, SVGA3D_SHADERTYPE_PS, pContext->state.shidPixel);
    144144
    145145    Log(("vmsvga3dLoadReinitContext: returns [cid=%#x]\n", cid));
     
    150150{
    151151    RT_NOREF(pDevIns, pThisCC, uPass);
    152     PVMSVGA3DSTATE  pState = pThis->svga.p3dState;
     152    PVMSVGA3DSTATE  pState = pThisCC->svga.p3dState;
    153153    AssertReturn(pState, VERR_NO_MEMORY);
    154154    PCPDMDEVHLPR3   pHlp = pDevIns->pHlpR3;
     
    193193                if (pContext->id != VMSVGA3D_SHARED_CTX_ID)
    194194                {
    195                     rc = vmsvga3dContextDefineOgl(pThis, VMSVGA3D_SHARED_CTX_ID, VMSVGA3D_DEF_CTX_F_SHARED_CTX);
     195                    rc = vmsvga3dContextDefineOgl(pThisCC, VMSVGA3D_SHARED_CTX_ID, VMSVGA3D_DEF_CTX_F_SHARED_CTX);
    196196                    AssertRCReturn(rc, rc);
    197197                }
     
    200200#endif
    201201            {
    202                 rc = vmsvga3dContextDefine(pThis, cid);
     202                rc = vmsvga3dContextDefine(pThisCC, cid);
    203203                AssertRCReturn(rc, rc);
    204204
     
    243243                    AssertRCReturn(rc, rc);
    244244
    245                     rc = vmsvga3dShaderDefine(pThis, cid, shid, shader.type, shader.cbData, pData);
     245                    rc = vmsvga3dShaderDefine(pThisCC, cid, shid, shader.type, shader.cbData, pData);
    246246                    AssertRCReturn(rc, rc);
    247247
     
    274274                    AssertRCReturn(rc, rc);
    275275
    276                     rc = vmsvga3dShaderDefine(pThis, cid, shid, shader.type, shader.cbData, pData);
     276                    rc = vmsvga3dShaderDefine(pThisCC, cid, shid, shader.type, shader.cbData, pData);
    277277                    AssertRCReturn(rc, rc);
    278278
     
    291291                if (ShaderConst.fValid)
    292292                {
    293                     rc = vmsvga3dShaderSetConst(pThis, cid, j, SVGA3D_SHADERTYPE_PS, ShaderConst.ctype, 1, ShaderConst.value);
     293                    rc = vmsvga3dShaderSetConst(pThisCC, cid, j, SVGA3D_SHADERTYPE_PS, ShaderConst.ctype, 1, ShaderConst.value);
    294294                    AssertRCReturn(rc, rc);
    295295                }
     
    306306                if (ShaderConst.fValid)
    307307                {
    308                     rc = vmsvga3dShaderSetConst(pThis, cid, j, SVGA3D_SHADERTYPE_VS, ShaderConst.ctype, 1, ShaderConst.value);
     308                    rc = vmsvga3dShaderSetConst(pThisCC, cid, j, SVGA3D_SHADERTYPE_VS, ShaderConst.ctype, 1, ShaderConst.value);
    309309                    AssertRCReturn(rc, rc);
    310310                }
     
    358358                    case VMSVGA3DQUERYSTATE_BUILDING:
    359359                        /* Start collecting data. */
    360                         vmsvga3dQueryBegin(pThis, cid, SVGA3D_QUERYTYPE_OCCLUSION);
     360                        vmsvga3dQueryBegin(pThisCC, cid, SVGA3D_QUERYTYPE_OCCLUSION);
    361361                        /* Partial result. */
    362362                        pContext->occlusion.u32QueryResult = query.u32QueryResult;
     
    425425                        uint32_t idx = j + face * surface.faces[0].numMipLevels;
    426426                        /* Load the mip map level struct. */
    427                         rc = pHlp->pfnSSMGetStructEx(pSSM, &pMipmapLevel[idx], sizeof(pMipmapLevel[idx]), 0, g_aVMSVGA3DMIPMAPLEVELFields, NULL);
     427                        rc = pHlp->pfnSSMGetStructEx(pSSM, &pMipmapLevel[idx], sizeof(pMipmapLevel[idx]), 0,
     428                                                     g_aVMSVGA3DMIPMAPLEVELFields, NULL);
    428429                        AssertRCReturn(rc, rc);
    429430
     
    432433                }
    433434
    434                 rc = vmsvga3dSurfaceDefine(pThis, sid, surface.surfaceFlags, surface.format, surface.faces, surface.multiSampleCount, surface.autogenFilter, cMipLevels, pMipmapLevelSize);
     435                rc = vmsvga3dSurfaceDefine(pThisCC, sid, surface.surfaceFlags, surface.format, surface.faces,
     436                                           surface.multiSampleCount, surface.autogenFilter, cMipLevels, pMipmapLevelSize);
    435437                AssertRCReturn(rc, rc);
    436438
     
    480482    if (pState->SharedCtx.id == VMSVGA3D_SHARED_CTX_ID)
    481483    {
    482         rc = vmsvga3dLoadReinitContext(pThis, &pState->SharedCtx);
     484        rc = vmsvga3dLoadReinitContext(pThisCC, &pState->SharedCtx);
    483485        AssertRCReturn(rc, rc);
    484486    }
     
    491493        if (pContext->id != SVGA3D_INVALID_ID)
    492494        {
    493             rc = vmsvga3dLoadReinitContext(pThis, pContext);
     495            rc = vmsvga3dLoadReinitContext(pThisCC, pContext);
    494496            AssertRCReturn(rc, rc);
    495497        }
     
    501503
    502504
    503 static int vmsvga3dSaveContext(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PSSMHANDLE pSSM, PVMSVGA3DCONTEXT pContext)
     505static int vmsvga3dSaveContext(PCPDMDEVHLPR3 pHlp, PVGASTATECC pThisCC, PSSMHANDLE pSSM, PVMSVGA3DCONTEXT pContext)
    504506{
    505     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     507    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    506508    uint32_t cid = pContext->id;
    507509
     
    637639}
    638640
    639 int vmsvga3dSaveExec(PPDMDEVINS pDevIns, PVGASTATE pThis, PSSMHANDLE pSSM)
     641int vmsvga3dSaveExec(PPDMDEVINS pDevIns, PVGASTATECC pThisCC, PSSMHANDLE pSSM)
    640642{
    641     PVMSVGA3DSTATE  pState = pThis->svga.p3dState;
     643    PVMSVGA3DSTATE  pState = pThisCC->svga.p3dState;
    642644    AssertReturn(pState, VERR_NO_MEMORY);
    643645    PCPDMDEVHLPR3   pHlp   = pDevIns->pHlpR3;
     
    652654    if (pState->SharedCtx.id == VMSVGA3D_SHARED_CTX_ID)
    653655    {
    654         rc = vmsvga3dSaveContext(pHlp, pThis, pSSM, &pState->SharedCtx);
     656        rc = vmsvga3dSaveContext(pHlp, pThisCC, pSSM, &pState->SharedCtx);
    655657        AssertRCReturn(rc, rc);
    656658    }
     
    660662    for (uint32_t i = 0; i < pState->cContexts; i++)
    661663    {
    662         rc = vmsvga3dSaveContext(pHlp, pThis, pSSM, pState->papContexts[i]);
     664        rc = vmsvga3dSaveContext(pHlp, pThisCC, pSSM, pState->papContexts[i]);
    663665        AssertRCReturn(rc, rc);
    664666    }
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win.cpp

    r82109 r82114  
    163163int vmsvga3dInit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC)
    164164{
    165     RT_NOREF(pDevIns, pThisCC);
     165    RT_NOREF(pDevIns, pThis);
    166166
    167167    PVMSVGA3DSTATE pState;
    168     pThis->svga.p3dState = pState = (PVMSVGA3DSTATE)RTMemAllocZ(sizeof(VMSVGA3DSTATE));
    169     AssertReturn(pThis->svga.p3dState, VERR_NO_MEMORY);
     168    pThisCC->svga.p3dState = pState = (PVMSVGA3DSTATE)RTMemAllocZ(sizeof(VMSVGA3DSTATE));
     169    AssertReturn(pThisCC->svga.p3dState, VERR_NO_MEMORY);
    170170
    171171    /* Create event semaphore. */
     
    190190int vmsvga3dPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC)
    191191{
    192     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
    193     AssertReturn(pThis->svga.p3dState, VERR_NO_MEMORY);
     192    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
     193    AssertReturn(pThisCC->svga.p3dState, VERR_NO_MEMORY);
    194194    HRESULT hr;
    195     RT_NOREF(pDevIns, pThisCC);
     195    RT_NOREF(pDevIns, pThis);
    196196
    197197    if (pState->pD3D9)
     
    277277}
    278278
    279 int vmsvga3dReset(PVGASTATE pThis)
    280 {
    281     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
    282     AssertReturn(pThis->svga.p3dState, VERR_NO_MEMORY);
     279int vmsvga3dReset(PVGASTATECC pThisCC)
     280{
     281    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
     282    AssertReturn(pThisCC->svga.p3dState, VERR_NO_MEMORY);
    283283
    284284    /* Destroy all leftover surfaces. */
     
    286286    {
    287287        if (pState->papSurfaces[i]->id != SVGA3D_INVALID_ID)
    288             vmsvga3dSurfaceDestroy(pThis, pState->papSurfaces[i]->id);
     288            vmsvga3dSurfaceDestroy(pThisCC, pState->papSurfaces[i]->id);
    289289    }
    290290
     
    293293    {
    294294        if (pState->papContexts[i]->id != SVGA3D_INVALID_ID)
    295             vmsvga3dContextDestroy(pThis, pState->papContexts[i]->id);
     295            vmsvga3dContextDestroy(pThisCC, pState->papContexts[i]->id);
    296296    }
    297297    return VINF_SUCCESS;
    298298}
    299299
    300 int vmsvga3dTerminate(PVGASTATE pThis)
    301 {
    302     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
    303     AssertReturn(pThis->svga.p3dState, VERR_NO_MEMORY);
    304 
    305     int rc = vmsvga3dReset(pThis);
     300int vmsvga3dTerminate(PVGASTATECC pThisCC)
     301{
     302    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
     303    AssertReturn(pThisCC->svga.p3dState, VERR_NO_MEMORY);
     304
     305    int rc = vmsvga3dReset(pThisCC);
    306306    AssertRCReturn(rc, rc);
    307307
     
    317317}
    318318
    319 void vmsvga3dUpdateHostScreenViewport(PVGASTATE pThis, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport)
     319void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport)
    320320{
    321321    /** @todo Scroll the screen content without requiring the guest to redraw. */
    322     NOREF(pThis); NOREF(idScreen); NOREF(pOldViewport);
     322    RT_NOREF(pThisCC, idScreen, pOldViewport);
    323323}
    324324
     
    424424
    425425
    426 int vmsvga3dQueryCaps(PVGASTATE pThis, uint32_t idx3dCaps, uint32_t *pu32Val)
    427 {
    428     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     426int vmsvga3dQueryCaps(PVGASTATECC pThisCC, uint32_t idx3dCaps, uint32_t *pu32Val)
     427{
     428    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    429429    AssertReturn(pState, VERR_NO_MEMORY);
    430430    D3DCAPS9 *pCaps = &pState->caps;
     
    14741474}
    14751475
    1476 int vmsvga3dSurfaceCopy(PVGASTATE pThis, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src,
     1476int vmsvga3dSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src,
    14771477                        uint32_t cCopyBoxes, SVGA3dCopyBox *pBox)
    14781478{
    1479     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     1479    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    14801480    AssertReturn(pState, VERR_NO_MEMORY);
    14811481
     
    23202320 *
    23212321 * @returns Failure status code or @a rc.
    2322  * @param   pThis               The shared VGA instance data.
     2322 * @param   pThis               The shared VGA/VMSVGA instance data.
    23232323 * @param   pThisCC             The VGA/VMSVGA state for ring-3.
    23242324 * @param   pState              The VMSVGA3d state.
     
    25152515}
    25162516
    2517 int vmsvga3dGenerateMipmaps(PVGASTATE pThis, uint32_t sid, SVGA3dTextureFilter filter)
    2518 {
    2519     PVMSVGA3DSTATE      pState = pThis->svga.p3dState;
     2517int vmsvga3dGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter)
     2518{
     2519    PVMSVGA3DSTATE      pState = pThisCC->svga.p3dState;
    25202520    HRESULT             hr;
    25212521
     
    25622562 *
    25632563 * @returns VBox status code.
    2564  * @param   pThis           The shared VGA instance data.
     2564 * @param   pThisCC         The VGA/VMSVGA state for ring-3.
    25652565 * @param   cid             Context id
    25662566 */
    2567 int vmsvga3dContextDefine(PVGASTATE pThis, uint32_t cid)
     2567int vmsvga3dContextDefine(PVGASTATECC pThisCC, uint32_t cid)
    25682568{
    25692569    int                     rc;
     
    25712571    HRESULT                 hr;
    25722572    D3DPRESENT_PARAMETERS   PresParam;
    2573     PVMSVGA3DSTATE          pState = pThis->svga.p3dState;
     2573    PVMSVGA3DSTATE          pState = pThisCC->svga.p3dState;
    25742574
    25752575    Log(("vmsvga3dContextDefine id %x\n", cid));
     
    25952595    /* If one already exists with this id, then destroy it now. */
    25962596    if (pState->papContexts[cid]->id != SVGA3D_INVALID_ID)
    2597         vmsvga3dContextDestroy(pThis, cid);
     2597        vmsvga3dContextDestroy(pThisCC, cid);
    25982598
    25992599    pContext = pState->papContexts[cid];
     
    26602660 *
    26612661 * @returns VBox status code.
    2662  * @param   pThis           The shared VGA instance data.
     2662 * @param   pThisCC         The VGA/VMSVGA state for ring-3.
    26632663 * @param   cid             Context id
    26642664 */
    2665 int vmsvga3dContextDestroy(PVGASTATE pThis, uint32_t cid)
    2666 {
    2667     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     2665int vmsvga3dContextDestroy(PVGASTATECC pThisCC, uint32_t cid)
     2666{
     2667    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    26682668    AssertReturn(pState, VERR_NO_MEMORY);
    26692669
     
    27182718#endif
    27192719
    2720                 rc = vmsvga3dSurfaceDestroy(pThis, sid);
     2720                rc = vmsvga3dSurfaceDestroy(pThisCC, sid);
    27212721                AssertRC(rc);
    27222722
    2723                 rc = vmsvga3dSurfaceDefine(pThis, sid, surfaceFlags, format, face, multisampleCount, autogenFilter, face[0].numMipLevels * cFaces, pMipLevelSize);
     2723                rc = vmsvga3dSurfaceDefine(pThisCC, sid, surfaceFlags, format, face, multisampleCount, autogenFilter,
     2724                                           face[0].numMipLevels * cFaces, pMipLevelSize);
    27242725                AssertRC(rc);
    27252726
     
    27652766        {
    27662767            if (pContext->paPixelShader[i].id != SVGA3D_INVALID_ID)
    2767                 vmsvga3dShaderDestroy(pThis, pContext->paPixelShader[i].cid, pContext->paPixelShader[i].id, pContext->paPixelShader[i].type);
     2768                vmsvga3dShaderDestroy(pThisCC, pContext->paPixelShader[i].cid, pContext->paPixelShader[i].id, pContext->paPixelShader[i].type);
    27682769        }
    27692770        if (pContext->paPixelShader)
     
    27742775        {
    27752776            if (pContext->paVertexShader[i].id != SVGA3D_INVALID_ID)
    2776                 vmsvga3dShaderDestroy(pThis, pContext->paVertexShader[i].cid, pContext->paVertexShader[i].id, pContext->paVertexShader[i].type);
     2777                vmsvga3dShaderDestroy(pThisCC, pContext->paVertexShader[i].cid, pContext->paVertexShader[i].id, pContext->paVertexShader[i].type);
    27772778        }
    27782779        if (pContext->paVertexShader)
     
    28022803}
    28032804
    2804 static int vmsvga3dContextTrackUsage(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext)
     2805static int vmsvga3dContextTrackUsage(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext)
    28052806{
    28062807#ifndef VBOX_VMSVGA3D_WITH_WINE_OPENGL
    2807     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     2808    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    28082809    AssertReturn(pState, VERR_NO_MEMORY);
    28092810
     
    28222823
    28232824/* Handle resize */
    2824 int vmsvga3dChangeMode(PVGASTATE pThis)
    2825 {
    2826     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     2825int vmsvga3dChangeMode(PVGASTATECC pThisCC)
     2826{
     2827    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    28272828    AssertReturn(pState, VERR_NO_MEMORY);
    28282829
     
    30163017                    target.face     = 0;
    30173018                    target.mipmap   = 0;
    3018                     int rc = vmsvga3dSetRenderTarget(pThis, cid, (SVGA3dRenderTargetType)j, target);
     3019                    int rc = vmsvga3dSetRenderTarget(pThisCC, cid, (SVGA3dRenderTargetType)j, target);
    30193020                    AssertRCReturn(rc, rc);
    30203021                }
     
    30293030
    30303031                if (pRenderState->state != SVGA3D_RS_INVALID)
    3031                     vmsvga3dSetRenderState(pThis, pContext->id, 1, pRenderState);
     3032                    vmsvga3dSetRenderState(pThisCC, pContext->id, 1, pRenderState);
    30323033            }
    30333034            Log(("vmsvga3dChangeMode: Recreate render state END\n"));
     
    30423043
    30433044                    if (pTextureState->name != SVGA3D_RS_INVALID)
    3044                         vmsvga3dSetTextureState(pThis, pContext->id, 1, pTextureState);
     3045                        vmsvga3dSetTextureState(pThisCC, pContext->id, 1, pTextureState);
    30453046                }
    30463047            }
     
    30503051                vmsvga3dSetScissorRect(pThis, cid, &pContext->state.RectScissor);
    30513052            if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_ZRANGE)
    3052                 vmsvga3dSetZRange(pThis, cid, pContext->state.zRange);
     3053                vmsvga3dSetZRange(pThisCC, cid, pContext->state.zRange);
    30533054            if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_VIEWPORT)
    30543055                vmsvga3dSetViewPort(pThis, cid, &pContext->state.RectViewPort);
     
    30653066
    30663067
    3067 int vmsvga3dSetTransform(PVGASTATE pThis, uint32_t cid, SVGA3dTransformType type, float matrix[16])
     3068int vmsvga3dSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16])
    30683069{
    30693070    D3DTRANSFORMSTATETYPE d3dState;
    30703071    HRESULT               hr;
    3071     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     3072    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    30723073    AssertReturn(pState, VERR_NO_MEMORY);
    30733074
     
    31443145}
    31453146
    3146 int vmsvga3dSetZRange(PVGASTATE pThis, uint32_t cid, SVGA3dZRange zRange)
     3147int vmsvga3dSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange)
    31473148{
    31483149    D3DVIEWPORT9          viewport;
    31493150    HRESULT               hr;
    3150     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     3151    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    31513152    AssertReturn(pState, VERR_NO_MEMORY);
    31523153
     
    32163217}
    32173218
    3218 int vmsvga3dSetRenderState(PVGASTATE pThis, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState)
     3219int vmsvga3dSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState)
    32193220{
    32203221    DWORD                       val = 0; /* Shut up MSC */
    32213222    HRESULT                     hr;
    3222     PVMSVGA3DSTATE              pState = pThis->svga.p3dState;
     3223    PVMSVGA3DSTATE              pState = pThisCC->svga.p3dState;
    32233224    AssertReturn(pState, VERR_NO_MEMORY);
    32243225
     
    38873888}
    38883889
    3889 int vmsvga3dSetRenderTarget(PVGASTATE pThis, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target)
     3890int vmsvga3dSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target)
    38903891{
    38913892    HRESULT        hr;
    3892     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     3893    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    38933894
    38943895    AssertReturn(pState, VERR_NO_MEMORY);
     
    41704171        /* Changing the render target resets the viewport; restore it here. */
    41714172        if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_VIEWPORT)
    4172             vmsvga3dSetViewPort(pThis, cid, &pContext->state.RectViewPort);
     4173            vmsvga3dSetViewPort(pThisCC, cid, &pContext->state.RectViewPort);
    41734174        if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_ZRANGE)
    4174             vmsvga3dSetZRange(pThis, cid, pContext->state.zRange);
     4175            vmsvga3dSetZRange(pThisCC, cid, pContext->state.zRange);
    41754176        /* Changing the render target also resets the scissor rectangle; restore it as well. */
    41764177        if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_SCISSORRECT)
    4177             vmsvga3dSetScissorRect(pThis, cid, &pContext->state.RectScissor);
     4178            vmsvga3dSetScissorRect(pThisCC, cid, &pContext->state.RectScissor);
    41784179
    41794180        break;
     
    43084309}
    43094310
    4310 int vmsvga3dSetTextureState(PVGASTATE pThis, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState)
     4311int vmsvga3dSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState)
    43114312{
    43124313    DWORD                       val = 0; /* Shut up MSC */
    43134314    HRESULT                     hr;
    43144315    PVMSVGA3DCONTEXT            pContext;
    4315     PVMSVGA3DSTATE              pState = pThis->svga.p3dState;
     4316    PVMSVGA3DSTATE              pState = pThisCC->svga.p3dState;
    43164317    AssertReturn(pState, VERR_NO_MEMORY);
    43174318
     
    45964597}
    45974598
    4598 int vmsvga3dSetMaterial(PVGASTATE pThis, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial)
     4599int vmsvga3dSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial)
    45994600{
    46004601    HRESULT               hr;
    4601     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     4602    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    46024603    AssertReturn(pState, VERR_NO_MEMORY);
    46034604
     
    46464647}
    46474648
    4648 int vmsvga3dSetLightData(PVGASTATE pThis, uint32_t cid, uint32_t index, SVGA3dLightData *pData)
     4649int vmsvga3dSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData)
    46494650{
    46504651    HRESULT               hr;
    46514652    D3DLIGHT9             light;
    46524653    PVMSVGA3DCONTEXT      pContext;
    4653     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     4654    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    46544655    AssertReturn(pState, VERR_NO_MEMORY);
    46554656
     
    47204721}
    47214722
    4722 int vmsvga3dSetLightEnabled(PVGASTATE pThis, uint32_t cid, uint32_t index, uint32_t enabled)
     4723int vmsvga3dSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled)
    47234724{
    47244725    HRESULT               hr;
    47254726    PVMSVGA3DCONTEXT      pContext;
    4726     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     4727    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    47274728    AssertReturn(pState, VERR_NO_MEMORY);
    47284729
     
    47424743}
    47434744
    4744 int vmsvga3dSetViewPort(PVGASTATE pThis, uint32_t cid, SVGA3dRect *pRect)
     4745int vmsvga3dSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)
    47454746{
    47464747    HRESULT               hr;
    47474748    D3DVIEWPORT9          viewPort;
    47484749    PVMSVGA3DCONTEXT      pContext;
    4749     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     4750    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    47504751    AssertReturn(pState, VERR_NO_MEMORY);
    47514752
     
    47744775}
    47754776
    4776 int vmsvga3dSetClipPlane(PVGASTATE pThis, uint32_t cid, uint32_t index, float plane[4])
     4777int vmsvga3dSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4])
    47774778{
    47784779    HRESULT               hr;
    47794780    PVMSVGA3DCONTEXT      pContext;
    4780     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     4781    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    47814782    AssertReturn(pState, VERR_NO_MEMORY);
    47824783
     
    47964797}
    47974798
    4798 int vmsvga3dCommandClear(PVGASTATE pThis, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect)
     4799int vmsvga3dCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth,
     4800                         uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect)
    47994801{
    48004802    DWORD                 clearFlagD3D = 0;
     
    48024804    HRESULT               hr;
    48034805    PVMSVGA3DCONTEXT      pContext;
    4804     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     4806    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    48054807    AssertReturn(pState, VERR_NO_MEMORY);
    48064808
     
    50475049}
    50485050
    5049 int vmsvga3dDrawPrimitives(PVGASTATE pThis, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl,
     5051int vmsvga3dDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl,
    50505052                           uint32_t numRanges, SVGA3dPrimitiveRange *pRange,
    50515053                           uint32_t cVertexDivisor, SVGA3dVertexDivisor *pVertexDivisor)
     
    50535055    static const D3DVERTEXELEMENT9 sVertexEnd = D3DDECL_END();
    50545056
    5055     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     5057    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    50565058    AssertReturn(pState, VERR_INTERNAL_ERROR);
    50575059
     
    53295331
    53305332        /* Make sure we can track drawing usage of active render targets and textures. */
    5331         vmsvga3dContextTrackUsage(pThis, pContext);
     5333        vmsvga3dContextTrackUsage(pThisCC, pContext);
    53325334    }
    53335335
     
    53585360
    53595361
    5360 int vmsvga3dSetScissorRect(PVGASTATE pThis, uint32_t cid, SVGA3dRect *pRect)
     5362int vmsvga3dSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)
    53615363{
    53625364    HRESULT               hr;
    53635365    RECT                  rect;
    5364     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     5366    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    53655367    AssertReturn(pState, VERR_NO_MEMORY);
    53665368
     
    53875389
    53885390
    5389 int vmsvga3dShaderDefine(PVGASTATE pThis, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData)
     5391int vmsvga3dShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type,
     5392                         uint32_t cbData, uint32_t *pShaderData)
    53905393{
    53915394    HRESULT               hr;
    53925395    PVMSVGA3DSHADER       pShader;
    5393     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     5396    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    53945397    AssertReturn(pState, VERR_NO_MEMORY);
    53955398
     
    54345437        /* If one already exists with this id, then destroy it now. */
    54355438        if (pContext->paVertexShader[shid].id != SVGA3D_INVALID_ID)
    5436             vmsvga3dShaderDestroy(pThis, cid, shid, pContext->paVertexShader[shid].type);
     5439            vmsvga3dShaderDestroy(pThisCC, cid, shid, pContext->paVertexShader[shid].type);
    54375440
    54385441        pShader = &pContext->paVertexShader[shid];
     
    54535456        /* If one already exists with this id, then destroy it now. */
    54545457        if (pContext->paPixelShader[shid].id != SVGA3D_INVALID_ID)
    5455             vmsvga3dShaderDestroy(pThis, cid, shid, pContext->paPixelShader[shid].type);
     5458            vmsvga3dShaderDestroy(pThisCC, cid, shid, pContext->paPixelShader[shid].type);
    54565459
    54575460        pShader = &pContext->paPixelShader[shid];
     
    55265529}
    55275530
    5528 int vmsvga3dShaderDestroy(PVGASTATE pThis, uint32_t cid, uint32_t shid, SVGA3dShaderType type)
    5529 {
    5530     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     5531int vmsvga3dShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type)
     5532{
     5533    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    55315534    AssertReturn(pState, VERR_NO_MEMORY);
    55325535    PVMSVGA3DSHADER       pShader = NULL;
     
    55725575}
    55735576
    5574 int vmsvga3dShaderSet(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid)
    5575 {
    5576     PVMSVGA3DSTATE      pState = pThis->svga.p3dState;
     5577int vmsvga3dShaderSet(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid)
     5578{
     5579    PVMSVGA3DSTATE      pState = pThisCC->svga.p3dState;
    55775580    AssertReturn(pState, VERR_NO_MEMORY);
    55785581    HRESULT             hr;
     
    56395642}
    56405643
    5641 int vmsvga3dShaderSetConst(PVGASTATE pThis, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues)
     5644int vmsvga3dShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type,
     5645                           SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues)
    56425646{
    56435647    HRESULT               hr;
    5644     PVMSVGA3DSTATE        pState = pThis->svga.p3dState;
     5648    PVMSVGA3DSTATE        pState = pThisCC->svga.p3dState;
    56455649    AssertReturn(pState, VERR_NO_MEMORY);
    56465650
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp

    r82109 r82114  
    4646 *
    4747 * @returns VBox status code (currently ignored).
    48  * @param   pThis               The shared VGA instance data.
     48 * @param   pThisCC             The VGA/VMSVGA state for ring-3.
    4949 * @param   sid                 The ID of the surface to (re-)define.
    5050 * @param   surfaceFlags        .
     
    5656 * @param   paMipLevelSizes     .
    5757 */
    58 int vmsvga3dSurfaceDefine(PVGASTATE pThis, uint32_t sid, uint32_t surfaceFlags, SVGA3dSurfaceFormat format,
     58int vmsvga3dSurfaceDefine(PVGASTATECC pThisCC, uint32_t sid, uint32_t surfaceFlags, SVGA3dSurfaceFormat format,
    5959                          SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES], uint32_t multisampleCount,
    6060                          SVGA3dTextureFilter autogenFilter, uint32_t cMipLevels, SVGA3dSize *paMipLevelSizes)
    6161{
    6262    PVMSVGA3DSURFACE pSurface;
    63     PVMSVGA3DSTATE   pState = pThis->svga.p3dState;
     63    PVMSVGA3DSTATE   pState = pThisCC->svga.p3dState;
    6464    AssertReturn(pState, VERR_NO_MEMORY);
    6565
     
    119119    /* If one already exists with this id, then destroy it now. */
    120120    if (pSurface->id != SVGA3D_INVALID_ID)
    121         vmsvga3dSurfaceDestroy(pThis, sid);
     121        vmsvga3dSurfaceDestroy(pThisCC, sid);
    122122
    123123    RT_ZERO(*pSurface);
     
    330330 *
    331331 * @returns VBox status code (currently ignored).
    332  * @param   pThis               The shared VGA instance data.
    333  * @param   sid                 The ID of the surface to destroy.
     332 * @param   pThisCC         The VGA/VMSVGA state for ring-3.
     333 * @param   sid             The ID of the surface to destroy.
    334334 */
    335 int vmsvga3dSurfaceDestroy(PVGASTATE pThis, uint32_t sid)
     335int vmsvga3dSurfaceDestroy(PVGASTATECC pThisCC, uint32_t sid)
    336336{
    337     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     337    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    338338    AssertReturn(pState, VERR_NO_MEMORY);
    339339
     
    379379 *
    380380 * @returns VBox status code (currently ignored).
    381  * @param   pThis               The shared VGA instance data.
     381 * @param   pThis               The shared VGA/VMSVGA state.
     382 * @param   pThisCC             The VGA/VMSVGA state for ring-3.
    382383 * @param   pDstSfcImg
    383384 * @param   pDstBox
     
    386387 * @param   enmMode
    387388 */
    388 int vmsvga3dSurfaceStretchBlt(PVGASTATE pThis, SVGA3dSurfaceImageId const *pDstSfcImg, SVGA3dBox const *pDstBox,
     389int vmsvga3dSurfaceStretchBlt(PVGASTATE pThis, PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pDstSfcImg, SVGA3dBox const *pDstBox,
    389390                              SVGA3dSurfaceImageId const *pSrcSfcImg, SVGA3dBox const *pSrcBox, SVGA3dStretchBltMode enmMode)
    390391{
    391     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     392    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    392393    AssertReturn(pState, VERR_NO_MEMORY);
    393394
     
    472473 *
    473474 * @returns VBox status code (currently ignored).
    474  * @param   pThis               The shared VGA instance data.
     475 * @param   pThis               The shared VGA/VMSVGA instance data.
    475476 * @param   pThisCC             The VGA/VMSVGA state for ring-3.
    476477 * @param   guest               .
     
    483484                       SVGA3dTransferType transfer, uint32_t cCopyBoxes, SVGA3dCopyBox *paBoxes)
    484485{
    485     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     486    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    486487    AssertReturn(pState, VERR_NO_MEMORY);
    487488
     
    694695}
    695696
    696 int vmsvga3dQueryBegin(PVGASTATE pThis, uint32_t cid, SVGA3dQueryType type)
     697int vmsvga3dQueryBegin(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type)
    697698{
    698     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     699    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    699700    AssertReturn(pState, VERR_NO_MEMORY);
    700701
     
    728729}
    729730
    730 int vmsvga3dQueryEnd(PVGASTATE pThis, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult)
     731int vmsvga3dQueryEnd(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult)
    731732{
    732733    RT_NOREF(guestResult);
    733     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     734    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    734735    AssertReturn(pState, VERR_NO_MEMORY);
    735736
     
    761762int vmsvga3dQueryWait(PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult)
    762763{
    763     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     764    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    764765    AssertReturn(pState, VERR_NO_MEMORY);
    765766
     
    824825    }
    825826
    826     VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis, idDstScreen);
     827    VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, idDstScreen);
    827828    AssertReturn(pScreen, VERR_INTERNAL_ERROR);
    828829
     
    902903{
    903904    /* Deprecated according to svga3d_reg.h. */
    904     PVMSVGA3DSTATE pState = pThis->svga.p3dState;
     905    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
    905906    AssertReturn(pState, VERR_NO_MEMORY);
    906907
     
    910911
    911912    /** @todo Detect screen from coords? Or split rect to screens? */
    912     VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis, 0);
     913    VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, 0);
    913914    AssertReturn(pScreen, VERR_INTERNAL_ERROR);
    914915
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h

    r82109 r82114  
    5252
    5353/* DevVGA-SVGA.cpp: */
    54 void vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis, uint32_t sid);
     54void vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t sid);
    5555
    5656
     
    5959int vmsvga3dPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC);
    6060int vmsvga3dLoadExec(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass);
    61 int vmsvga3dSaveExec(PPDMDEVINS pDevIns, PVGASTATE pThis, PSSMHANDLE pSSM);
    62 int vmsvga3dTerminate(PVGASTATE pThis);
    63 int vmsvga3dReset(PVGASTATE pThis);
    64 void vmsvga3dUpdateHostScreenViewport(PVGASTATE pThis, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport);
    65 int vmsvga3dQueryCaps(PVGASTATE pThis, uint32_t idx3dCaps, uint32_t *pu32Val);
    66 
    67 int vmsvga3dSurfaceDefine(PVGASTATE pThis, uint32_t sid, uint32_t surfaceFlags, SVGA3dSurfaceFormat format, SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES], uint32_t multisampleCount, SVGA3dTextureFilter autogenFilter, uint32_t cMipLevels, SVGA3dSize *pMipLevelSize);
    68 int vmsvga3dSurfaceDestroy(PVGASTATE pThis, uint32_t sid);
    69 int vmsvga3dSurfaceCopy(PVGASTATE pThis, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src, uint32_t cCopyBoxes, SVGA3dCopyBox *pBox);
    70 int vmsvga3dSurfaceStretchBlt(PVGASTATE pThis, SVGA3dSurfaceImageId const *pDstSfcImg, SVGA3dBox const *pDstBox,
     61int vmsvga3dSaveExec(PPDMDEVINS pDevIns, PVGASTATECC pThisCC, PSSMHANDLE pSSM);
     62int vmsvga3dTerminate(PVGASTATECC pThisCC);
     63int vmsvga3dReset(PVGASTATECC pThisCC);
     64void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport);
     65int vmsvga3dQueryCaps(PVGASTATECC pThisCC, uint32_t idx3dCaps, uint32_t *pu32Val);
     66
     67int vmsvga3dSurfaceDefine(PVGASTATECC pThisCC, uint32_t sid, uint32_t surfaceFlags, SVGA3dSurfaceFormat format,
     68                          SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES], uint32_t multisampleCount,
     69                          SVGA3dTextureFilter autogenFilter, uint32_t cMipLevels, SVGA3dSize *pMipLevelSize);
     70int vmsvga3dSurfaceDestroy(PVGASTATECC pThisCC, uint32_t sid);
     71int vmsvga3dSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src,
     72                        uint32_t cCopyBoxes, SVGA3dCopyBox *pBox);
     73int vmsvga3dSurfaceStretchBlt(PVGASTATE pThis, PVGASTATECC pThisCC,
     74                              SVGA3dSurfaceImageId const *pDstSfcImg, SVGA3dBox const *pDstBox,
    7175                              SVGA3dSurfaceImageId const *pSrcSfcImg, SVGA3dBox const *pSrcBox, SVGA3dStretchBltMode enmMode);
    7276int vmsvga3dSurfaceDMA(PVGASTATE pThis, PVGASTATECC pThisCC, SVGA3dGuestImage guest, SVGA3dSurfaceImageId host, SVGA3dTransferType transfer, uint32_t cCopyBoxes, SVGA3dCopyBox *pBoxes);
    7377int vmsvga3dSurfaceBlitToScreen(PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t dest, SVGASignedRect destRect, SVGA3dSurfaceImageId src, SVGASignedRect srcRect, uint32_t cRects, SVGASignedRect *pRect);
    7478
    75 int vmsvga3dContextDefine(PVGASTATE pThis, uint32_t cid);
    76 int vmsvga3dContextDestroy(PVGASTATE pThis, uint32_t cid);
    77 
    78 int vmsvga3dChangeMode(PVGASTATE pThis);
    79 
    80 int vmsvga3dSetTransform(PVGASTATE pThis, uint32_t cid, SVGA3dTransformType type, float matrix[16]);
    81 int vmsvga3dSetZRange(PVGASTATE pThis, uint32_t cid, SVGA3dZRange zRange);
    82 int vmsvga3dSetRenderState(PVGASTATE pThis, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState);
    83 int vmsvga3dSetRenderTarget(PVGASTATE pThis, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target);
    84 int vmsvga3dSetTextureState(PVGASTATE pThis, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState);
    85 int vmsvga3dSetMaterial(PVGASTATE pThis, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial);
    86 int vmsvga3dSetLightData(PVGASTATE pThis, uint32_t cid, uint32_t index, SVGA3dLightData *pData);
    87 int vmsvga3dSetLightEnabled(PVGASTATE pThis, uint32_t cid, uint32_t index, uint32_t enabled);
    88 int vmsvga3dSetViewPort(PVGASTATE pThis, uint32_t cid, SVGA3dRect *pRect);
    89 int vmsvga3dSetClipPlane(PVGASTATE pThis, uint32_t cid,  uint32_t index, float plane[4]);
    90 int vmsvga3dCommandClear(PVGASTATE pThis, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect);
     79int vmsvga3dContextDefine(PVGASTATECC pThisCC, uint32_t cid);
     80int vmsvga3dContextDestroy(PVGASTATECC pThisCC, uint32_t cid);
     81
     82int vmsvga3dChangeMode(PVGASTATECC pThisCC);
     83
     84int vmsvga3dSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16]);
     85int vmsvga3dSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange);
     86int vmsvga3dSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState);
     87int vmsvga3dSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target);
     88int vmsvga3dSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState);
     89int vmsvga3dSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial);
     90int vmsvga3dSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData);
     91int vmsvga3dSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled);
     92int vmsvga3dSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect);
     93int vmsvga3dSetClipPlane(PVGASTATECC pThisCC, uint32_t cid,  uint32_t index, float plane[4]);
     94int vmsvga3dCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect);
    9195int vmsvga3dCommandPresent(PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t sid, uint32_t cRects, SVGA3dCopyRect *pRect);
    92 int vmsvga3dDrawPrimitives(PVGASTATE pThis, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl, uint32_t numRanges, SVGA3dPrimitiveRange *pNumRange, uint32_t cVertexDivisor, SVGA3dVertexDivisor *pVertexDivisor);
    93 int vmsvga3dSetScissorRect(PVGASTATE pThis, uint32_t cid, SVGA3dRect *pRect);
    94 int vmsvga3dGenerateMipmaps(PVGASTATE pThis, uint32_t sid, SVGA3dTextureFilter filter);
    95 
    96 int vmsvga3dShaderDefine(PVGASTATE pThis, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData);
    97 int vmsvga3dShaderDestroy(PVGASTATE pThis, uint32_t cid, uint32_t shid, SVGA3dShaderType type);
    98 int vmsvga3dShaderSet(PVGASTATE pThis, struct VMSVGA3DCONTEXT *pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid);
    99 int vmsvga3dShaderSetConst(PVGASTATE pThis, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues);
    100 
    101 int vmsvga3dQueryBegin(PVGASTATE pThis, uint32_t cid, SVGA3dQueryType type);
    102 int vmsvga3dQueryEnd(PVGASTATE pThis, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult);
     96int vmsvga3dDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl, uint32_t numRanges, SVGA3dPrimitiveRange *pNumRange, uint32_t cVertexDivisor, SVGA3dVertexDivisor *pVertexDivisor);
     97int vmsvga3dSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect);
     98int vmsvga3dGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter);
     99
     100int vmsvga3dShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData);
     101int vmsvga3dShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type);
     102int vmsvga3dShaderSet(PVGASTATECC pThisCC, struct VMSVGA3DCONTEXT *pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid);
     103int vmsvga3dShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues);
     104
     105int vmsvga3dQueryBegin(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type);
     106int vmsvga3dQueryEnd(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult);
    103107int vmsvga3dQueryWait(PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult);
    104108
     
    118122#endif
    119123
    120 void vmsvga3dUpdateHeapBuffersForSurfaces(PVGASTATE pThis, uint32_t sid);
    121 void vmsvga3dInfoContextWorker(PVGASTATE pThis, PCDBGFINFOHLP pHlp, uint32_t cid, bool fVerbose);
    122 void vmsvga3dInfoSurfaceWorker(PPDMDEVINS pDevIns, PVGASTATE pThis, PCDBGFINFOHLP pHlp, uint32_t sid, bool fVerbose,
    123                                uint32_t cxAscii, bool fInvY, const char *pszBitmapPath);
     124void vmsvga3dUpdateHeapBuffersForSurfaces(PVGASTATECC pThisCC, uint32_t sid);
     125void vmsvga3dInfoContextWorker(PVGASTATECC pThisCC, PCDBGFINFOHLP pHlp, uint32_t cid, bool fVerbose);
     126void vmsvga3dInfoSurfaceWorker(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, PCDBGFINFOHLP pHlp, uint32_t sid,
     127                               bool fVerbose, uint32_t cxAscii, bool fInvY, const char *pszBitmapPath);
    124128
    125129/* DevVGA-SVGA3d-shared.cpp: */
  • trunk/src/VBox/Devices/Graphics/DevVGA.cpp

    r82112 r82114  
    12431243#ifdef VMSVGA_WITH_VGA_FB_BACKUP_AND_IN_RING3
    12441244        ret = !pThis->svga.fEnabled            ? pThisCC->pbVRam[addr]
    1245             : addr < VMSVGA_VGA_FB_BACKUP_SIZE ? pThis->svga.pbVgaFrameBufferR3[addr] : 0xff;
     1245            : addr < VMSVGA_VGA_FB_BACKUP_SIZE ? pThisCC->svga.pbVgaFrameBufferR3[addr] : 0xff;
    12461246#else
    12471247        ret = pThisCC->pbVRam[addr];
     
    12551255#ifdef VMSVGA_WITH_VGA_FB_BACKUP_AND_IN_RING3
    12561256        ret = !pThis->svga.fEnabled           ? pThisCC->pbVRam[off]
    1257             : off < VMSVGA_VGA_FB_BACKUP_SIZE ? pThis->svga.pbVgaFrameBufferR3[off] : 0xff;
     1257            : off < VMSVGA_VGA_FB_BACKUP_SIZE ? pThisCC->svga.pbVgaFrameBufferR3[off] : 0xff;
    12581258#else
    12591259        ret = pThisCC->pbVRam[off];
     
    12641264#ifdef VMSVGA_WITH_VGA_FB_BACKUP_AND_IN_RING3
    12651265        pThis->latch = !pThis->svga.fEnabled            ? ((uint32_t *)pThisCC->pbVRam)[addr]
    1266                      : addr < VMSVGA_VGA_FB_BACKUP_SIZE ? ((uint32_t *)pThis->svga.pbVgaFrameBufferR3)[addr] : UINT32_MAX;
     1266                     : addr < VMSVGA_VGA_FB_BACKUP_SIZE ? ((uint32_t *)pThisCC->svga.pbVgaFrameBufferR3)[addr] : UINT32_MAX;
    12671267#else
    12681268        pThis->latch = ((uint32_t *)pThisCC->pbVRam)[addr];
     
    13521352                pThisCC->pbVRam[addr]      = val;
    13531353            else if (addr < VMSVGA_VGA_FB_BACKUP_SIZE)
    1354                 pThis->svga.pbVgaFrameBufferR3[addr] = val;
     1354                pThisCC->svga.pbVgaFrameBufferR3[addr] = val;
    13551355            else
    13561356            {
     
    13811381                pThisCC->pbVRam[addr]      = val;
    13821382            else if (addr < VMSVGA_VGA_FB_BACKUP_SIZE)
    1383                 pThis->svga.pbVgaFrameBufferR3[addr] = val;
     1383                pThisCC->svga.pbVgaFrameBufferR3[addr] = val;
    13841384            else
    13851385            {
     
    14661466            pu32Dst = &((uint32_t *)pThisCC->pbVRam)[addr];
    14671467        else if (addr * 4 + 3 < VMSVGA_VGA_FB_BACKUP_SIZE)
    1468             pu32Dst = &((uint32_t *)pThis->svga.pbVgaFrameBufferR3)[addr];
     1468            pu32Dst = &((uint32_t *)pThisCC->svga.pbVgaFrameBufferR3)[addr];
    14691469        else
    14701470        {
     
    55645564     */
    55655565    if (pThis->svga.fFIFOThreadSleeping && pThis->svga.fEnabled && pThis->svga.fConfigured)
    5566         vmsvgaR3FifoWatchdogTimer(pDevIns, pThis);
     5566        vmsvgaR3FifoWatchdogTimer(pDevIns, pThis, pThisCC);
    55675567# endif
    55685568}
     
    65876587        rc = PDMDevHlpPCIIORegionCreateMmio2Ex(pDevIns, pThis->pciRegions.iFIFO, pThis->svga.cbFIFO,
    65886588                                               PCI_ADDRESS_SPACE_MEM_PREFETCH, 0 /*fFlags*/, vmsvgaR3PciIORegionFifoMapUnmap,
    6589                                                "VMSVGA-FIFO", (void **)&pThis->svga.pFIFOR3, &pThis->hMmio2VmSvgaFifo);
     6589                                               "VMSVGA-FIFO", (void **)&pThisCC->svga.pau32FIFO, &pThis->hMmio2VmSvgaFifo);
    65906590        AssertRCReturn(rc, PDMDevHlpVMSetError(pDevIns, rc, RT_SRC_POS,
    65916591                                               N_("Failed to create VMSVGA FIFO (%u bytes)"), pThis->svga.cbFIFO));
     
    73357335    {
    73367336        rc = PDMDevHlpMmio2SetUpContext(pDevIns, pThis->hMmio2VmSvgaFifo, 0 /* off */, PAGE_SIZE,
    7337                                         (void **)&pThis->svga.CTX_SUFF(pFIFO));
     7337                                        (void **)&pThisCC->svga.pau32FIFO);
    73387338        AssertLogRelMsgRCReturn(rc, ("PDMDevHlpMapMMIO2IntoR0(%#x,) -> %Rrc\n", pThis->svga.cbFIFO, rc), rc);
    73397339    }
  • trunk/src/VBox/Devices/Graphics/DevVGA.h

    r82109 r82114  
    342342
    343343#ifdef VBOX_WITH_VMSVGA
    344     VMSVGAState                 svga;
     344    VMSVGASTATE                 svga;
    345345#endif
    346346
     
    571571    /** Status LUN: Partner of ILeds. */
    572572    R3PTRTYPE(PPDMILEDCONNECTORS) pLedsConnector;
     573
     574#ifdef VBOX_WITH_VMSVGA
     575    /** The VMSVGA ring-3 state. */
     576    VMSVGASTATER3               svga;
     577#endif
    573578
    574579    /** The VGA BIOS ROM data. */
     
    636641typedef struct VGASTATER0
    637642{
    638     /** The R0 vram pointer... */
     643    /** The R0 vram pointer. */
    639644    R0PTRTYPE(uint8_t *)        pbVRam;
     645#ifdef VBOX_WITH_VMSVGA
     646    /** The VMSVGA ring-0 state. */
     647    VMSVGASTATER0               svga;
     648#endif
    640649} VGASTATER0;
    641650/** Pointer to the ring-0 VGA state. */
     
    648657typedef struct VGASTATERC
    649658{
    650     /** Pointer to the GC vram mapping. */
     659    /** Pointer to the RC vram mapping. */
    651660    RCPTRTYPE(uint8_t *)        pbVRam;
    652661} VGASTATERC;
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