- Timestamp:
- Nov 22, 2019 11:05:31 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 134924
- Location:
- trunk/src/VBox/Devices/Graphics
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.cpp
r82110 r82114 497 497 static SSMFIELD const g_aVGAStateSVGAFields[] = 498 498 { 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),505 499 SSMFIELD_ENTRY_IGN_GCPHYS( VMSVGAState, GCPhysFIFO), 506 500 SSMFIELD_ENTRY_IGNORE( VMSVGAState, cbFIFO), … … 521 515 SSMFIELD_ENTRY( VMSVGAState, u32IndexReg), 522 516 SSMFIELD_ENTRY_IGNORE( VMSVGAState, hFIFORequestSem), 523 SSMFIELD_ENTRY_IGNORE( VMSVGAState, hFIFOExtCmdSem),524 SSMFIELD_ENTRY_IGN_HCPTR( VMSVGAState, pFIFOIOThread),525 517 SSMFIELD_ENTRY_IGNORE( VMSVGAState, uLastCursorUpdateCount), 526 518 SSMFIELD_ENTRY_IGNORE( VMSVGAState, fFIFOThreadSleeping), … … 549 541 #ifdef IN_RING3 550 542 static 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); 543 static int vmsvgaR3LoadExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PVGASTATECC pThisCC, PSSMHANDLE pSSM, 544 uint32_t uVersion, uint32_t uPass); 545 static int vmsvgaR3SaveExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATECC pThisCC, PSSMHANDLE pSSM); 546 static void vmsvgaR3GmrFree(PVGASTATECC pThisCC, uint32_t idGMR); 553 547 #endif /* IN_RING3 */ 554 548 … … 556 550 557 551 #ifdef IN_RING3 558 VMSVGASCREENOBJECT *vmsvgaR3GetScreenObject(PVGASTATE pThis, uint32_t idScreen)552 VMSVGASCREENOBJECT *vmsvgaR3GetScreenObject(PVGASTATECC pThisCC, uint32_t idScreen) 559 553 { 560 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;554 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 561 555 if ( idScreen < (uint32_t)RT_ELEMENTS(pSVGAState->aScreens) 562 556 && pSVGAState … … 725 719 726 720 /** @todo Test how it interacts with multiple screen objects. */ 727 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis , idScreen);721 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, idScreen); 728 722 uint32_t const uWidth = pScreen ? pScreen->cWidth : 0; 729 723 uint32_t const uHeight = pScreen ? pScreen->cHeight : 0; … … 761 755 */ 762 756 if (pThis->svga.f3DEnabled) 763 vmsvga3dUpdateHostScreenViewport(pThis , idScreen, &OldViewport);757 vmsvga3dUpdateHostScreenViewport(pThisCC, idScreen, &OldViewport); 764 758 # else 765 759 RT_NOREF(OldViewport); … … 1078 1072 /* The guest is basically doing a HLT via the device here, but with 1079 1073 a special wake up condition on FIFO completion. */ 1080 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;1074 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 1081 1075 STAM_REL_PROFILE_START(&pSVGAState->StatBusyDelayEmts, EmtDelay); 1082 1076 PVM pVM = PDMDevHlpGetVM(pDevIns); … … 1097 1091 This used to be a crude 50 ms sleep. The current code tries to be 1098 1092 more efficient, but the consept is still very crude. */ 1099 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;1093 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 1100 1094 STAM_REL_PROFILE_START(&pSVGAState->StatBusyDelayEmts, EmtDelay); 1101 1095 RTThreadYield(); … … 1300 1294 1301 1295 /* 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; 1305 1299 1306 1300 pThisCC->pDrv->pfnLFBModeChange(pThisCC->pDrv, true); … … 1444 1438 * Safely updates the SVGA_FIFO_BUSY register (in shared memory). 1445 1439 * 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. 1448 1443 */ 1449 DECLINLINE(void) vmsvgaHCSafeFifoBusyRegUpdate(PVGASTATE pThis, bool fState)1444 DECLINLINE(void) vmsvgaHCSafeFifoBusyRegUpdate(PVGASTATE pThis, PVGASTATECC pThisCC, bool fState) 1450 1445 { 1451 ASMAtomicWriteU32(&pThis ->svga.CTX_SUFF(pFIFO)[SVGA_FIFO_BUSY], fState);1446 ASMAtomicWriteU32(&pThisCC->svga.pau32FIFO[SVGA_FIFO_BUSY], fState); 1452 1447 1453 1448 if (RT_UNLIKELY(fState != (pThis->svga.fBusy != 0))) … … 1459 1454 ASMNopPause(); 1460 1455 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); 1462 1457 } while (cLoops-- > 0 && fState != (pThis->svga.fBusy != 0)); 1463 1458 } … … 1470 1465 * 1471 1466 * @param pThis The shared VGA/VMSVGA state. 1467 * @param pThisCC The VGA/VMSVGA state for the current context. 1472 1468 */ 1473 DECLINLINE(void) vmsvgaHCUpdatePitch(PVGASTATE pThis )1469 DECLINLINE(void) vmsvgaHCUpdatePitch(PVGASTATE pThis, PVGASTATECC pThisCC) 1474 1470 { 1475 uint32_t RT_UNTRUSTED_VOLATILE_GUEST *pFIFO = pThis ->svga.CTX_SUFF(pFIFO);1471 uint32_t RT_UNTRUSTED_VOLATILE_GUEST *pFIFO = pThisCC->svga.pau32FIFO; 1476 1472 uint32_t uFifoPitchLock = pFIFO[SVGA_FIFO_PITCHLOCK]; 1477 1473 uint32_t uRegPitchLock = pThis->svga.u32PitchLock; … … 1518 1514 { 1519 1515 #ifdef IN_RING3 1520 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;1516 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 1521 1517 #endif 1522 1518 VBOXSTRICTRC rc = VINF_SUCCESS; … … 1576 1572 /* Make a backup copy of the first 512kb in order to save font data etc. */ 1577 1573 /** @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); 1579 1575 memset(pThisCC->pbVRam, 0, VMSVGA_VGA_FB_BACKUP_SIZE); 1580 1576 } … … 1598 1594 ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE); 1599 1595 # ifdef LOG_ENABLED 1600 uint32_t *pFIFO = pThis ->svga.pFIFOR3;1596 uint32_t *pFIFO = pThisCC->svga.pau32FIFO; 1601 1597 Log(("configured=%d busy=%d\n", pThis->svga.fConfigured, pFIFO[SVGA_FIFO_BUSY])); 1602 1598 Log(("next %x stop %x\n", pFIFO[SVGA_FIFO_NEXT_CMD], pFIFO[SVGA_FIFO_STOP])); … … 1613 1609 { 1614 1610 /* 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); 1616 1612 1617 1613 pThisCC->pDrv->pfnLFBModeChange(pThisCC->pDrv, false); … … 1638 1634 #if defined(IN_RING3) || defined(IN_RING0) 1639 1635 pThis->svga.uWidth = u32; 1640 vmsvgaHCUpdatePitch(pThis );1636 vmsvgaHCUpdatePitch(pThis, pThisCC); 1641 1637 if (pThis->svga.fEnabled) 1642 1638 ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE); … … 1670 1666 #if defined(IN_RING3) || defined(IN_RING0) 1671 1667 pThis->svga.uBpp = u32; 1672 vmsvgaHCUpdatePitch(pThis );1668 vmsvgaHCUpdatePitch(pThis, pThisCC); 1673 1669 if (pThis->svga.fEnabled) 1674 1670 ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE); … … 1703 1699 { 1704 1700 #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])); 1706 1702 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); 1709 1705 1710 1706 /* Kick the FIFO thread to start processing commands again. */ … … 1800 1796 1801 1797 /* Free the old GMR if present. */ 1802 vmsvgaR3GmrFree(pThis , idGMR);1798 vmsvgaR3GmrFree(pThisCC, idGMR); 1803 1799 1804 1800 /* Just undefine the GMR? */ … … 2065 2061 RT_NOREF(pVM); 2066 2062 RTGCPHYS GCPhysOffset = GCPhys - pThis->svga.GCPhysFIFO; 2067 uint32_t *pFIFO = pThis ->svga.pFIFOR3;2063 uint32_t *pFIFO = pThisCC->svga.pau32FIFO; 2068 2064 2069 2065 switch (GCPhysOffset >> 2) … … 2436 2432 * Temporarily disable the access handler now that we've kicked the FIFO thread. 2437 2433 */ 2438 STAM_REL_COUNTER_INC(&pThis ->svga.pSvgaR3State->StatFifoAccessHandler);2434 STAM_REL_COUNTER_INC(&pThisCC->svga.pSvgaR3State->StatFifoAccessHandler); 2439 2435 rc = PGMHandlerPhysicalPageTempOff(pVM, pThis->svga.GCPhysFIFO, pThis->svga.GCPhysFIFO); 2440 2436 # endif … … 2472 2468 PVGASTATE pThis = (PVGASTATE)pvUser; 2473 2469 Assert(pThis); 2474 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;2470 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 2475 2471 NOREF(pVCpu); NOREF(pvPhys); NOREF(pvBuf); NOREF(cbBuf); NOREF(enmAccessType); NOREF(enmOrigin); 2476 2472 … … 2507 2503 { 2508 2504 PVGASTATE pThis = PDMDEVINS_2_DATA(pDevIns, PVGASTATE); 2509 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;2505 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 2510 2506 PGMR pGMR = &pSVGAState->paGMR[gmrId]; 2511 2507 int rc; … … 2525 2521 { 2526 2522 PVGASTATE pThis = PDMDEVINS_2_DATA(pDevIns, PVGASTATE); 2527 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;2523 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 2528 2524 PGMR pGMR = &pSVGAState->paGMR[gmrId]; 2529 2525 … … 2539 2535 static DECLCALLBACK(int) vmsvgaR3ResetGmrHandlers(PVGASTATE pThis) 2540 2536 { 2541 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;2537 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 2542 2538 2543 2539 for (uint32_t i = 0; i < pThis->svga.cGMR; ++i) … … 2903 2899 case VMSVGA_FIFO_EXTCMD_RESET: 2904 2900 Log(("vmsvgaR3FifoLoop: reset the fifo thread.\n")); 2905 Assert(pThis ->svga.pvFIFOExtCmdParam == NULL);2901 Assert(pThisCC->svga.pvFIFOExtCmdParam == NULL); 2906 2902 # ifdef VBOX_WITH_VMSVGA3D 2907 2903 if (pThis->svga.f3DEnabled) 2908 2904 { 2909 2905 /* The 3d subsystem must be reset from the fifo thread. */ 2910 vmsvga3dReset(pThis );2906 vmsvga3dReset(pThisCC); 2911 2907 } 2912 2908 # endif … … 2915 2911 case VMSVGA_FIFO_EXTCMD_TERMINATE: 2916 2912 Log(("vmsvgaR3FifoLoop: terminate the fifo thread.\n")); 2917 Assert(pThis ->svga.pvFIFOExtCmdParam == NULL);2913 Assert(pThisCC->svga.pvFIFOExtCmdParam == NULL); 2918 2914 # ifdef VBOX_WITH_VMSVGA3D 2919 2915 if (pThis->svga.f3DEnabled) 2920 2916 { 2921 2917 /* The 3d subsystem must be shut down from the fifo thread. */ 2922 vmsvga3dTerminate(pThis );2918 vmsvga3dTerminate(pThisCC); 2923 2919 } 2924 2920 # endif … … 2928 2924 { 2929 2925 Log(("vmsvgaR3FifoLoop: VMSVGA_FIFO_EXTCMD_SAVESTATE.\n")); 2930 PSSMHANDLE pSSM = (PSSMHANDLE)pThis ->svga.pvFIFOExtCmdParam;2926 PSSMHANDLE pSSM = (PSSMHANDLE)pThisCC->svga.pvFIFOExtCmdParam; 2931 2927 AssertLogRelMsgBreak(RT_VALID_PTR(pSSM), ("pSSM=%p\n", pSSM)); 2932 vmsvgaR3SaveExecFifo(pDevIns->pHlpR3, pThis , pSSM);2928 vmsvgaR3SaveExecFifo(pDevIns->pHlpR3, pThisCC, pSSM); 2933 2929 # ifdef VBOX_WITH_VMSVGA3D 2934 2930 if (pThis->svga.f3DEnabled) 2935 vmsvga3dSaveExec(pDevIns, pThis , pSSM);2931 vmsvga3dSaveExec(pDevIns, pThisCC, pSSM); 2936 2932 # endif 2937 2933 break; … … 2941 2937 { 2942 2938 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; 2944 2940 AssertLogRelMsgBreak(RT_VALID_PTR(pLoadState), ("pLoadState=%p\n", pLoadState)); 2945 vmsvgaR3LoadExecFifo(pDevIns->pHlpR3, pThis, p LoadState->pSSM, pLoadState->uVersion, pLoadState->uPass);2941 vmsvgaR3LoadExecFifo(pDevIns->pHlpR3, pThis, pThisCC, pLoadState->pSSM, pLoadState->uVersion, pLoadState->uPass); 2946 2942 # ifdef VBOX_WITH_VMSVGA3D 2947 2943 if (pThis->svga.f3DEnabled) … … 2954 2950 { 2955 2951 # 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; 2957 2953 Log(("vmsvgaR3FifoLoop: VMSVGA_FIFO_EXTCMD_UPDATE_SURFACE_HEAP_BUFFERS sid=%#x\n", sid)); 2958 vmsvga3dUpdateHeapBuffersForSurfaces(pThis , sid);2954 vmsvga3dUpdateHeapBuffersForSurfaces(pThisCC, sid); 2959 2955 # endif 2960 2956 break; … … 2963 2959 2964 2960 default: 2965 AssertLogRelMsgFailed(("uExtCmd=%#x pvFIFOExtCmdParam=%p\n", uExtCmd, pThis ->svga.pvFIFOExtCmdParam));2961 AssertLogRelMsgFailed(("uExtCmd=%#x pvFIFOExtCmdParam=%p\n", uExtCmd, pThisCC->svga.pvFIFOExtCmdParam)); 2966 2962 break; 2967 2963 } … … 2970 2966 * Signal the end of the external command. 2971 2967 */ 2972 pThis ->svga.pvFIFOExtCmdParam = NULL;2968 pThisCC->svga.pvFIFOExtCmdParam = NULL; 2973 2969 pThis->svga.u8FIFOExtCommand = VMSVGA_FIFO_EXTCMD_NONE; 2974 2970 ASMMemoryFence(); /* paranoia^2 */ 2975 int rc = RTSemEventSignal(pThis ->svga.hFIFOExtCmdSem);2971 int rc = RTSemEventSignal(pThisCC->svga.hFIFOExtCmdSem); 2976 2972 AssertLogRelRC(rc); 2977 2973 } … … 2984 2980 * @param pDevIns The device instance. 2985 2981 * @param pThis The shared VGA/VMSVGA instance data. 2982 * @param pThisCC The VGA/VMSVGA state for ring-3. 2986 2983 * @param uExtCmd The command to execute on the FIFO thread. 2987 2984 * @param pvParam Pointer to command parameters. … … 2989 2986 * milliseconds. 2990 2987 */ 2991 static int vmsvgaR3RunExtCmdOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis, 2988 static int vmsvgaR3RunExtCmdOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, 2992 2989 uint8_t uExtCmd, void *pvParam, RTMSINTERVAL cMsWait) 2993 2990 { … … 2997 2994 2998 2995 int rc; 2999 PPDMTHREAD pThread = pThis ->svga.pFIFOIOThread;2996 PPDMTHREAD pThread = pThisCC->svga.pFIFOIOThread; 3000 2997 PDMTHREADSTATE enmState = pThread->enmState; 3001 2998 if (enmState == PDMTHREADSTATE_SUSPENDED) … … 3009 3006 /* Post the request. */ 3010 3007 pThis->svga.fFifoExtCommandWakeup = true; 3011 pThis ->svga.pvFIFOExtCmdParam = pvParam;3008 pThisCC->svga.pvFIFOExtCmdParam = pvParam; 3012 3009 pThis->svga.u8FIFOExtCommand = uExtCmd; 3013 3010 ASMMemoryFence(); /* paranoia^3 */ … … 3019 3016 { 3020 3017 /* 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); 3022 3019 if ( rc == VINF_SUCCESS 3023 3020 && pThis->svga.u8FIFOExtCommand == uExtCmd) 3024 rc = RTSemEventWait(pThis ->svga.hFIFOExtCmdSem, cMsWait);3021 rc = RTSemEventWait(pThisCC->svga.hFIFOExtCmdSem, cMsWait); 3025 3022 AssertLogRelMsg(pThis->svga.u8FIFOExtCommand != uExtCmd || RT_FAILURE_NP(rc), 3026 3023 ("%#x %Rrc\n", pThis->svga.u8FIFOExtCommand, rc)); … … 3034 3031 } 3035 3032 pThis->svga.fFifoExtCommandWakeup = false; 3036 pThis ->svga.pvFIFOExtCmdParam = NULL;3033 pThisCC->svga.pvFIFOExtCmdParam = NULL; 3037 3034 } 3038 3035 else if (enmState == PDMTHREADSTATE_RUNNING) … … 3046 3043 3047 3044 /* Post the request. */ 3048 pThis ->svga.pvFIFOExtCmdParam = pvParam;3045 pThisCC->svga.pvFIFOExtCmdParam = pvParam; 3049 3046 pThis->svga.u8FIFOExtCommand = uExtCmd; 3050 3047 ASMMemoryFence(); /* paranoia^2 */ … … 3053 3050 3054 3051 /* 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); 3056 3053 if ( rc == VINF_SUCCESS 3057 3054 && 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. */ 3059 3056 AssertLogRelMsg(pThis->svga.u8FIFOExtCommand != uExtCmd || RT_FAILURE_NP(rc), 3060 3057 ("%#x %Rrc\n", pThis->svga.u8FIFOExtCommand, rc)); 3061 3058 3062 pThis ->svga.pvFIFOExtCmdParam = NULL;3059 pThisCC->svga.pvFIFOExtCmdParam = NULL; 3063 3060 } 3064 3061 else … … 3079 3076 * @param pDevIns The device instance. 3080 3077 * @param pThis The shared VGA/VMSVGA instance data. 3078 * @param pThisCC The VGA/VMSVGA state for ring-3. 3081 3079 * @param pSVGAState Pointer to the ring-3 only SVGA state data. 3082 3080 * @param offFifoMin The start byte offset of the command FIFO. 3083 3081 */ 3084 static void vmsvgaR3FifoSetNotBusy(PPDMDEVINS pDevIns, PVGASTATE pThis, PV MSVGAR3STATE pSVGAState, uint32_t offFifoMin)3082 static void vmsvgaR3FifoSetNotBusy(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, PVMSVGAR3STATE pSVGAState, uint32_t offFifoMin) 3085 3083 { 3086 3084 ASMAtomicAndU32(&pThis->svga.fBusy, ~VMSVGA_BUSY_F_FIFO); 3087 3085 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); 3089 3087 3090 3088 /* Wake up any waiting EMTs. */ … … 3361 3359 * Called by the VGA refresh timer to wake up the FIFO thread when needed. 3362 3360 * 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. 3364 3364 */ 3365 void vmsvgaR3FifoWatchdogTimer(PPDMDEVINS pDevIns, PVGASTATE pThis )3365 void vmsvgaR3FifoWatchdogTimer(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC) 3366 3366 { 3367 3367 /* Caller already checked pThis->svga.fFIFOThreadSleeping, so we only have 3368 3368 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; 3370 3370 AssertReturnVoid(pFIFO); 3371 3371 if ( vmsvgaR3FifoHasWork(pFIFO, ASMAtomicReadU32(&pThis->svga.uLastCursorUpdateCount)) … … 3374 3374 int rc = PDMDevHlpSUPSemEventSignal(pDevIns, pThis->svga.hFIFORequestSem); 3375 3375 AssertRC(rc); 3376 STAM_REL_COUNTER_INC(&pThis ->svga.pSvgaR3State->StatFifoWatchdogWakeUps);3376 STAM_REL_COUNTER_INC(&pThisCC->svga.pSvgaR3State->StatFifoWatchdogWakeUps); 3377 3377 } 3378 3378 } … … 3386 3386 PVGASTATE pThis = PDMDEVINS_2_DATA(pDevIns, PVGASTATE); 3387 3387 PVGASTATER3 pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC); 3388 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;3388 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 3389 3389 int rc; 3390 3390 … … 3447 3447 * xLastCursor, yLastCursor and fLastCursorVisible are set to report the first update. 3448 3448 */ 3449 uint32_t RT_UNTRUSTED_VOLATILE_GUEST * const pFIFO = pThis ->svga.pFIFOR3;3449 uint32_t RT_UNTRUSTED_VOLATILE_GUEST * const pFIFO = pThisCC->svga.pau32FIFO; 3450 3450 pThis->svga.uLastCursorUpdateCount = pFIFO[SVGA_FIFO_CURSOR_COUNT]; 3451 3451 uint32_t xLastCursor = ~pFIFO[SVGA_FIFO_CURSOR_X]; … … 3540 3540 || !pThis->svga.fConfigured) 3541 3541 { 3542 vmsvgaR3FifoSetNotBusy(pDevIns, pThis, p SVGAState, pFIFO[SVGA_FIFO_MIN]);3542 vmsvgaR3FifoSetNotBusy(pDevIns, pThis, pThisCC, pSVGAState, pFIFO[SVGA_FIFO_MIN]); 3543 3543 fBadOrDisabledFifo = true; 3544 3544 cMsSleep = cMsMaxSleep; /* cheat */ … … 3566 3566 STAM_REL_COUNTER_INC(&pSVGAState->StatFifoErrors); 3567 3567 LogRelMax(8, ("vmsvgaR3FifoLoop: Bad fifo: min=%#x stop=%#x max=%#x\n", offFifoMin, offCurrentCmd, offFifoMax)); 3568 vmsvgaR3FifoSetNotBusy(pDevIns, pThis, p SVGAState, offFifoMin);3568 vmsvgaR3FifoSetNotBusy(pDevIns, pThis, pThisCC, pSVGAState, offFifoMin); 3569 3569 fBadOrDisabledFifo = true; 3570 3570 continue; … … 3654 3654 vmsvgaR3ChangeMode(pThis, pThisCC); 3655 3655 # ifdef VBOX_WITH_VMSVGA3D 3656 if (pThis ->svga.p3dState != NULL)3657 vmsvga3dChangeMode(pThis );3656 if (pThisCC->svga.p3dState != NULL) 3657 vmsvga3dChangeMode(pThisCC); 3658 3658 # endif 3659 3659 } … … 3716 3716 Log(("vmsvgaR3FifoLoop: UPDATE (%d,%d)(%d,%d)\n", pUpdate->x, pUpdate->y, pUpdate->width, pUpdate->height)); 3717 3717 /** @todo Multiple screens? */ 3718 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis , 0);3718 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, 0); 3719 3719 AssertBreak(pScreen); 3720 3720 vmsvgaR3UpdateScreen(pThisCC, pScreen, pUpdate->x, pUpdate->y, pUpdate->width, pUpdate->height); … … 3860 3860 { 3861 3861 STAM_REL_COUNTER_INC(&pSVGAState->StatR3CmdDefineGmr2Free); 3862 vmsvgaR3GmrFree(pThis , pCmd->gmrId);3862 vmsvgaR3GmrFree(pThisCC, pCmd->gmrId); 3863 3863 } 3864 3864 else … … 3872 3872 /** @todo always free the descriptor in SVGA_CMD_DEFINE_GMR2? */ 3873 3873 if (pGMR->cbTotal / X86_PAGE_SIZE > pGMR->cMaxPages) 3874 vmsvgaR3GmrFree(pThis , pCmd->gmrId);3874 vmsvgaR3GmrFree(pThisCC, pCmd->gmrId); 3875 3875 3876 3876 pGMR->cMaxPages = pCmd->numPages; … … 4056 4056 4057 4057 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)); 4059 4059 4060 4060 uint32_t const uWidth = pCmd->screen.size.width; … … 4077 4077 RT_UNTRUSTED_VALIDATED_FENCE(); 4078 4078 4079 VMSVGASCREENOBJECT *pScreen = &pThis ->svga.pSvgaR3State->aScreens[idScreen];4079 VMSVGASCREENOBJECT *pScreen = &pThisCC->svga.pSvgaR3State->aScreens[idScreen]; 4080 4080 4081 4081 bool const fBlank = RT_BOOL(pCmd->screen.flags & (SVGA_SCREEN_DEACTIVATE | SVGA_SCREEN_BLANKING)); … … 4116 4116 4117 4117 uint32_t const idScreen = pCmd->screenId; 4118 AssertBreak(idScreen < RT_ELEMENTS(pThis ->svga.pSvgaR3State->aScreens));4118 AssertBreak(idScreen < RT_ELEMENTS(pThisCC->svga.pSvgaR3State->aScreens)); 4119 4119 RT_UNTRUSTED_VALIDATED_FENCE(); 4120 4120 4121 VMSVGASCREENOBJECT *pScreen = &pThis ->svga.pSvgaR3State->aScreens[idScreen];4121 VMSVGASCREENOBJECT *pScreen = &pThisCC->svga.pSvgaR3State->aScreens[idScreen]; 4122 4122 pScreen->fModified = true; 4123 4123 pScreen->fDefined = false; … … 4150 4150 pCmd->srcOrigin.x, pCmd->srcOrigin.y, pCmd->destScreenId, pCmd->destRect.left, pCmd->destRect.top, pCmd->destRect.right, pCmd->destRect.bottom)); 4151 4151 4152 AssertBreak(pCmd->destScreenId < RT_ELEMENTS(pThis ->svga.pSvgaR3State->aScreens));4152 AssertBreak(pCmd->destScreenId < RT_ELEMENTS(pThisCC->svga.pSvgaR3State->aScreens)); 4153 4153 RT_UNTRUSTED_VALIDATED_FENCE(); 4154 4154 4155 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis , pCmd->destScreenId);4155 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, pCmd->destScreenId); 4156 4156 AssertBreak(pScreen); 4157 4157 … … 4222 4222 pCmd->destOrigin.x, pCmd->destOrigin.y, pCmd->srcScreenId, pCmd->srcRect.left, pCmd->srcRect.top, pCmd->srcRect.right, pCmd->srcRect.bottom)); 4223 4223 4224 AssertBreak(pCmd->srcScreenId < RT_ELEMENTS(pThis ->svga.pSvgaR3State->aScreens));4224 AssertBreak(pCmd->srcScreenId < RT_ELEMENTS(pThisCC->svga.pSvgaR3State->aScreens)); 4225 4225 RT_UNTRUSTED_VALIDATED_FENCE(); 4226 4226 4227 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis , pCmd->srcScreenId);4227 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, pCmd->srcScreenId); 4228 4228 AssertBreak(pScreen); 4229 4229 … … 4348 4348 4349 4349 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, 4351 4351 SVGA3D_TEX_FILTER_NONE, cMipLevels, (SVGA3dSize *)(pCmd + 1)); 4352 4352 # ifdef DEBUG_GMR_ACCESS … … 4364 4364 4365 4365 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, 4367 4367 pCmd->multisampleCount, pCmd->autogenFilter, 4368 4368 cMipLevels, (SVGA3dSize *)(pCmd + 1)); … … 4375 4375 VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd)); 4376 4376 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceDestroy); 4377 rc = vmsvga3dSurfaceDestroy(pThis , pCmd->sid);4377 rc = vmsvga3dSurfaceDestroy(pThisCC, pCmd->sid); 4378 4378 break; 4379 4379 } … … 4387 4387 4388 4388 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)); 4390 4390 break; 4391 4391 } … … 4397 4397 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceStretchBlt); 4398 4398 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); 4400 4401 break; 4401 4402 } … … 4435 4436 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dContextDefine); 4436 4437 4437 rc = vmsvga3dContextDefine(pThis , pCmd->cid);4438 rc = vmsvga3dContextDefine(pThisCC, pCmd->cid); 4438 4439 break; 4439 4440 } … … 4445 4446 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dContextDestroy); 4446 4447 4447 rc = vmsvga3dContextDestroy(pThis , pCmd->cid);4448 rc = vmsvga3dContextDestroy(pThisCC, pCmd->cid); 4448 4449 break; 4449 4450 } … … 4455 4456 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetTransform); 4456 4457 4457 rc = vmsvga3dSetTransform(pThis , pCmd->cid, pCmd->type, pCmd->matrix);4458 rc = vmsvga3dSetTransform(pThisCC, pCmd->cid, pCmd->type, pCmd->matrix); 4458 4459 break; 4459 4460 } … … 4465 4466 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetZRange); 4466 4467 4467 rc = vmsvga3dSetZRange(pThis , pCmd->cid, pCmd->zRange);4468 rc = vmsvga3dSetZRange(pThisCC, pCmd->cid, pCmd->zRange); 4468 4469 break; 4469 4470 } … … 4477 4478 4478 4479 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)); 4480 4481 break; 4481 4482 } … … 4487 4488 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetRenderTarget); 4488 4489 4489 rc = vmsvga3dSetRenderTarget(pThis , pCmd->cid, pCmd->type, pCmd->target);4490 rc = vmsvga3dSetRenderTarget(pThisCC, pCmd->cid, pCmd->type, pCmd->target); 4490 4491 break; 4491 4492 } … … 4499 4500 4500 4501 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)); 4502 4503 break; 4503 4504 } … … 4509 4510 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetMaterial); 4510 4511 4511 rc = vmsvga3dSetMaterial(pThis , pCmd->cid, pCmd->face, &pCmd->material);4512 rc = vmsvga3dSetMaterial(pThisCC, pCmd->cid, pCmd->face, &pCmd->material); 4512 4513 break; 4513 4514 } … … 4519 4520 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetLightData); 4520 4521 4521 rc = vmsvga3dSetLightData(pThis , pCmd->cid, pCmd->index, &pCmd->data);4522 rc = vmsvga3dSetLightData(pThisCC, pCmd->cid, pCmd->index, &pCmd->data); 4522 4523 break; 4523 4524 } … … 4529 4530 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetLightEnable); 4530 4531 4531 rc = vmsvga3dSetLightEnabled(pThis , pCmd->cid, pCmd->index, pCmd->enabled);4532 rc = vmsvga3dSetLightEnabled(pThisCC, pCmd->cid, pCmd->index, pCmd->enabled); 4532 4533 break; 4533 4534 } … … 4539 4540 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetViewPort); 4540 4541 4541 rc = vmsvga3dSetViewPort(pThis , pCmd->cid, &pCmd->rect);4542 rc = vmsvga3dSetViewPort(pThisCC, pCmd->cid, &pCmd->rect); 4542 4543 break; 4543 4544 } … … 4549 4550 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetClipPlane); 4550 4551 4551 rc = vmsvga3dSetClipPlane(pThis , pCmd->cid, pCmd->index, pCmd->plane);4552 rc = vmsvga3dSetClipPlane(pThisCC, pCmd->cid, pCmd->index, pCmd->plane); 4552 4553 break; 4553 4554 } … … 4560 4561 4561 4562 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)); 4563 4564 break; 4564 4565 } … … 4589 4590 4590 4591 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)); 4592 4593 break; 4593 4594 } … … 4599 4600 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dShaderDestroy); 4600 4601 4601 rc = vmsvga3dShaderDestroy(pThis , pCmd->cid, pCmd->shid, pCmd->type);4602 rc = vmsvga3dShaderDestroy(pThisCC, pCmd->cid, pCmd->shid, pCmd->type); 4602 4603 break; 4603 4604 } … … 4609 4610 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetShader); 4610 4611 4611 rc = vmsvga3dShaderSet(pThis , NULL, pCmd->cid, pCmd->type, pCmd->shid);4612 rc = vmsvga3dShaderSet(pThisCC, NULL, pCmd->cid, pCmd->type, pCmd->shid); 4612 4613 break; 4613 4614 } … … 4620 4621 4621 4622 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); 4623 4624 break; 4624 4625 } … … 4646 4647 4647 4648 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, 4649 4650 pNumRange, cVertexDivisor, pVertexDivisor); 4650 4651 STAM_PROFILE_STOP(&pSVGAState->StatR3Cmd3dDrawPrimitivesProf, a); … … 4658 4659 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetScissorRect); 4659 4660 4660 rc = vmsvga3dSetScissorRect(pThis , pCmd->cid, &pCmd->rect);4661 rc = vmsvga3dSetScissorRect(pThisCC, pCmd->cid, &pCmd->rect); 4661 4662 break; 4662 4663 } … … 4668 4669 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dBeginQuery); 4669 4670 4670 rc = vmsvga3dQueryBegin(pThis , pCmd->cid, pCmd->type);4671 rc = vmsvga3dQueryBegin(pThisCC, pCmd->cid, pCmd->type); 4671 4672 break; 4672 4673 } … … 4678 4679 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dEndQuery); 4679 4680 4680 rc = vmsvga3dQueryEnd(pThis , pCmd->cid, pCmd->type, pCmd->guestResult);4681 rc = vmsvga3dQueryEnd(pThisCC, pCmd->cid, pCmd->type, pCmd->guestResult); 4681 4682 break; 4682 4683 } … … 4698 4699 STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dGenerateMipmaps); 4699 4700 4700 rc = vmsvga3dGenerateMipmaps(pThis , pCmd->sid, pCmd->filter);4701 rc = vmsvga3dGenerateMipmaps(pThisCC, pCmd->sid, pCmd->filter); 4701 4702 break; 4702 4703 } … … 4771 4772 { 4772 4773 Log(("vmsvgaR3FifoLoop: emptied the FIFO next=%x stop=%x\n", pFIFO[SVGA_FIFO_NEXT_CMD], offCurrentCmd)); 4773 vmsvgaR3FifoSetNotBusy(pDevIns, pThis, p SVGAState, offFifoMin);4774 vmsvgaR3FifoSetNotBusy(pDevIns, pThis, pThisCC, pSVGAState, offFifoMin); 4774 4775 } 4775 4776 } … … 4786 4787 * Free the specified GMR 4787 4788 * 4788 * @param pThis The shared VGA/VMSVGA instance data.4789 * @param pThisCC The VGA/VMSVGA state for ring-3. 4789 4790 * @param idGMR GMR id 4790 4791 */ 4791 void vmsvgaR3GmrFree(PVGASTATE pThis, uint32_t idGMR)4792 static void vmsvgaR3GmrFree(PVGASTATECC pThisCC, uint32_t idGMR) 4792 4793 { 4793 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;4794 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 4794 4795 4795 4796 /* Free the old descriptor if present. */ … … 4799 4800 { 4800 4801 # ifdef DEBUG_GMR_ACCESS 4801 VMR3ReqCallWaitU(PDMDevHlpGetUVM(p DevIns), VMCPUID_ANY, (PFNRT)vmsvgaR3DeregisterGmr, 2, pDevIns, idGMR);4802 VMR3ReqCallWaitU(PDMDevHlpGetUVM(pThisCC->pDevIns), VMCPUID_ANY, (PFNRT)vmsvgaR3DeregisterGmr, 2, pDevIns, idGMR); 4802 4803 # endif 4803 4804 … … 4835 4836 uint32_t cbWidth, uint32_t cHeight) 4836 4837 { 4837 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;4838 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 4838 4839 PPDMDEVINS pDevIns = pThisCC->pDevIns; /* simpler */ 4839 4840 int rc; … … 5328 5329 * surfaces to VMSVGA3DMIPMAPLEVEL::pSurfaceData heap buffers. 5329 5330 * 5330 * @param pDevIns 5331 * @param pThis 5332 * @param sid Either UINT32_MAX or the ID of a specific5333 * surface. If UINT32_MAX is used, all surfaces5334 * 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. 5335 5336 */ 5336 void vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis, uint32_t sid)5337 void vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t sid) 5337 5338 { 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, 5339 5340 sid == UINT32_MAX ? 10 * RT_MS_1SEC : RT_MS_1MIN); 5340 5341 } … … 5381 5382 fInvY = true; 5382 5383 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); 5384 5386 } 5385 5387 … … 5406 5408 const uint32_t cxAscii = 0; /* No ASCII */ 5407 5409 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); 5409 5412 } 5410 5413 … … 5428 5431 fVerbose = false; 5429 5432 5430 vmsvga3dInfoContextWorker(PDMDEVINS_2_DATA (pDevIns, PVGASTATE), pHlp, sid, fVerbose);5433 vmsvga3dInfoContextWorker(PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC), pHlp, sid, fVerbose); 5431 5434 } 5432 5435 … … 5440 5443 PVGASTATE pThis = PDMDEVINS_2_DATA(pDevIns, PVGASTATE); 5441 5444 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; 5444 5447 RT_NOREF(pszArgs); 5445 5448 … … 5488 5491 * Portion of VMSVGA state which must be loaded oin the FIFO thread. 5489 5492 */ 5490 static int vmsvgaR3LoadExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass) 5493 static int vmsvgaR3LoadExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PVGASTATECC pThisCC, 5494 PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass) 5491 5495 { 5492 5496 RT_NOREF(uPass); 5493 5497 5494 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;5498 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 5495 5499 int rc; 5496 5500 … … 5551 5555 RT_NOREF(uPass); 5552 5556 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; 5554 5559 PCPDMDEVHLPR3 pHlp = pDevIns->pHlpR3; 5555 5560 int rc; … … 5572 5577 AssertCompile(RT_IS_POWER_OF_TWO(VMSVGA_VGA_FB_BACKUP_SIZE)); 5573 5578 } 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)); 5575 5580 AssertRCReturn(rc, rc); 5576 5581 if (cbVgaFramebuffer > VMSVGA_VGA_FB_BACKUP_SIZE) 5577 5582 pHlp->pfnSSMSkip(pSSM, cbVgaFramebuffer - VMSVGA_VGA_FB_BACKUP_SIZE); 5578 5583 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); 5580 5585 5581 5586 /* Load the VMSVGA state. */ … … 5644 5649 LoadState.uVersion = uVersion; 5645 5650 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); 5647 5652 AssertLogRelRCReturn(rc, rc); 5648 5653 … … 5657 5662 PVGASTATE pThis = PDMDEVINS_2_DATA(pDevIns, PVGASTATE); 5658 5663 PVGASTATECC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC); 5659 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;5664 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 5660 5665 5661 5666 ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE); … … 5680 5685 * Portion of SVGA state which must be saved in the FIFO thread. 5681 5686 */ 5682 static int vmsvgaR3SaveExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PSSMHANDLE pSSM)5687 static int vmsvgaR3SaveExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATECC pThisCC, PSSMHANDLE pSSM) 5683 5688 { 5684 PVMSVGAR3STATE pSVGAState = pThis ->svga.pSvgaR3State;5689 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 5685 5690 int rc; 5686 5691 … … 5713 5718 { 5714 5719 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; 5716 5722 PCPDMDEVHLPR3 pHlp = pDevIns->pHlpR3; 5717 5723 int rc; … … 5723 5729 /* Save the framebuffer backup. */ 5724 5730 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); 5726 5732 AssertLogRelRCReturn(rc, rc); 5727 5733 … … 5757 5763 * Must save some state (3D in particular) in the FIFO thread. 5758 5764 */ 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); 5760 5766 AssertLogRelRCReturn(rc, rc); 5761 5767 … … 5766 5772 * Destructor for PVMSVGAR3STATE structure. 5767 5773 * 5768 * @param pThis The VGA instance.5774 * @param pThis The shared VGA/VMSVGA instance data. 5769 5775 * @param pSVGAState Pointer to the structure. It is not deallocated. 5770 5776 */ … … 5801 5807 * 5802 5808 * @returns VBox status code. 5803 * @param pThis The VGA instance.5809 * @param pThis The shared VGA/VMSVGA instance data. 5804 5810 * @param pSVGAState Pointer to the structure. It is already allocated. 5805 5811 */ … … 5825 5831 * 5826 5832 * @returns VBox status code. 5827 * @param pThis The VGA instance.5833 * @param pThis The shared VGA/VMSVGA instance data. 5828 5834 */ 5829 static void vmsvgaR3InitCaps(PVGASTATE pThis )5835 static void vmsvgaR3InitCaps(PVGASTATE pThis, PVGASTATECC pThisCC) 5830 5836 { 5831 5837 /* Register caps. */ … … 5845 5851 5846 5852 /* Clear the FIFO. */ 5847 RT_BZERO(pThis ->svga.pFIFOR3, pThis->svga.cbFIFO);5853 RT_BZERO(pThisCC->svga.pau32FIFO, pThis->svga.cbFIFO); 5848 5854 5849 5855 /* Setup FIFO capabilities. */ 5850 pThis ->svga.pFIFOR3[SVGA_FIFO_CAPABILITIES] = SVGA_FIFO_CAP_FENCE5856 pThisCC->svga.pau32FIFO[SVGA_FIFO_CAPABILITIES] = SVGA_FIFO_CAP_FENCE 5851 5857 | SVGA_FIFO_CAP_CURSOR_BYPASS_3 5852 5858 | SVGA_FIFO_CAP_GMR2 … … 5857 5863 5858 5864 /* 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; 5860 5866 } 5861 5867 … … 5954 5960 * 5955 5961 * @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. 5957 5964 */ 5958 static void vmsvgaR3InitFifo3DCaps(PVGASTATE pThis)5965 static void vmsvgaR3InitFifo3DCaps(PVGASTATECC pThisCC) 5959 5966 { 5960 5967 /** @todo Probably query the capabilities once and cache in a memory buffer. */ … … 5965 5972 5966 5973 /* 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]; 5971 5978 pCaps->header.type = SVGA3DCAPS_RECORD_DEVCAPS; 5972 5979 pData = (SVGA3dCapPair *)&pCaps->data; … … 5977 5984 uint32_t val = 0; 5978 5985 5979 int rc = vmsvga3dQueryCaps(pThis , i, &val);5986 int rc = vmsvga3dQueryCaps(pThisCC, i, &val); 5980 5987 if (RT_SUCCESS(rc)) 5981 5988 { … … 6011 6018 int vmsvgaR3Reset(PPDMDEVINS pDevIns) 6012 6019 { 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; 6015 6023 6016 6024 /* Reset before init? */ … … 6021 6029 6022 6030 /* 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*/); 6025 6033 6026 6034 /* Reset other stuff. */ … … 6028 6036 RT_ZERO(pThis->svga.au32ScratchRegion); 6029 6037 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); 6034 6042 6035 6043 /* Initialize FIFO and register capabilities. */ 6036 vmsvgaR3InitCaps(pThis );6044 vmsvgaR3InitCaps(pThis, pThisCC); 6037 6045 6038 6046 # ifdef VBOX_WITH_VMSVGA3D 6039 6047 if (pThis->svga.f3DEnabled) 6040 vmsvgaR3InitFifo3DCaps(pThis );6048 vmsvgaR3InitFifo3DCaps(pThisCC); 6041 6049 # endif 6042 6050 … … 6063 6071 int vmsvgaR3Destruct(PPDMDEVINS pDevIns) 6064 6072 { 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); 6066 6075 6067 6076 /* 6068 6077 * Ask the FIFO thread to terminate the 3d state and then terminate it. 6069 6078 */ 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*/); 6073 6083 AssertLogRelRC(rc); 6074 6084 6075 rc = PDMDevHlpThreadDestroy(pDevIns, pThis ->svga.pFIFOIOThread, NULL);6085 rc = PDMDevHlpThreadDestroy(pDevIns, pThisCC->svga.pFIFOIOThread, NULL); 6076 6086 AssertLogRelRC(rc); 6077 pThis ->svga.pFIFOIOThread = NULL;6087 pThisCC->svga.pFIFOIOThread = NULL; 6078 6088 } 6079 6089 … … 6081 6091 * Destroy the special SVGA state. 6082 6092 */ 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; 6089 6099 } 6090 6100 … … 6092 6102 * Free our resources residing in the VGA state. 6093 6103 */ 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; 6103 6113 } 6104 6114 if (pThis->svga.hFIFORequestSem != NIL_SUPSEMEVENT) … … 6130 6140 6131 6141 /* 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); 6134 6144 6135 6145 /* Create event semaphore. */ … … 6138 6148 6139 6149 /* Create event semaphore. */ 6140 rc = RTSemEventCreate(&pThis ->svga.hFIFOExtCmdSem);6150 rc = RTSemEventCreate(&pThisCC->svga.hFIFOExtCmdSem); 6141 6151 AssertRCReturn(rc, rc); 6142 6152 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); 6147 6157 AssertMsgRCReturn(rc, ("Failed to create pSvgaR3State.\n"), rc); 6148 6158 6149 pSVGAState = pThis ->svga.pSvgaR3State;6159 pSVGAState = pThisCC->svga.pSvgaR3State; 6150 6160 6151 6161 /* Initialize FIFO and register capabilities. */ 6152 vmsvgaR3InitCaps(pThis );6162 vmsvgaR3InitCaps(pThis, pThisCC); 6153 6163 6154 6164 # ifdef VBOX_WITH_VMSVGA3D … … 6209 6219 6210 6220 /* 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, 6212 6222 RTTHREADTYPE_IO, "VMSVGA FIFO"); 6213 6223 if (RT_FAILURE(rc)) … … 6425 6435 { 6426 6436 /* Initialize FIFO 3D capabilities. */ 6427 vmsvgaR3InitFifo3DCaps(pThis );6437 vmsvgaR3InitFifo3DCaps(pThisCC); 6428 6438 } 6429 6439 } -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.h
r82109 r82114 166 166 typedef struct VMSVGAState 167 167 { 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 a179 * separate frame buffer for VGA and allows concurrent use of both. The SVGA180 * SDK is making use of this to do VGA text output while testing other things in181 * 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 and183 * 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 188 168 /** Guest physical address of the FIFO memory range. */ 189 169 RTGCPHYS GCPhysFIFO; … … 225 205 /** FIFO request semaphore. */ 226 206 SUPSEMEVENT hFIFORequestSem; 227 /** FIFO external command semaphore. */228 R3PTRTYPE(RTSEMEVENT) hFIFOExtCmdSem;229 /** FIFO IO Thread. */230 R3PTRTYPE(PPDMTHREAD) pFIFOIOThread;231 207 /** The last seen SVGA_FIFO_CURSOR_COUNT value. 232 208 * Used by the FIFO thread and its watchdog. */ … … 357 333 STAMCOUNTER StatRegWidthRd; 358 334 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 */ 343 typedef 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 */ 374 typedef 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 360 381 361 382 typedef struct VGAState *PVGASTATE; … … 381 402 DECLCALLBACK(void) vmsvgaR3PowerOn(PPDMDEVINS pDevIns); 382 403 DECLCALLBACK(void) vmsvgaR3PowerOff(PPDMDEVINS pDevIns); 383 void vmsvgaR3FifoWatchdogTimer(PPDMDEVINS pDevIns, PVGASTATE pThis );404 void vmsvgaR3FifoWatchdogTimer(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC); 384 405 385 406 #ifdef IN_RING3 386 VMSVGASCREENOBJECT *vmsvgaR3GetScreenObject(PVGASTATE pThis, uint32_t idScreen);407 VMSVGASCREENOBJECT *vmsvgaR3GetScreenObject(PVGASTATECC pThisCC, uint32_t idScreen); 387 408 int vmsvgaR3UpdateScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, int x, int y, int w, int h); 388 409 #endif 389 410 390 void vmsvgaR3GmrFree(PVGASTATE pThis, uint32_t idGMR);391 411 int vmsvgaR3GmrTransfer(PVGASTATE pThis, PVGASTATECC pThisCC, const SVGA3dTransferType enmTransferType, 392 412 uint8_t *pbHstBuf, uint32_t cbHstBuf, uint32_t offHst, int32_t cbHstPitch, -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-info.cpp
r82109 r82114 512 512 * Updates the heap buffers for all surfaces or one specific one. 513 513 * 514 * @param pThis The shared VGA instance data.515 * @param sid 514 * @param pThisCC The VGA/VMSVGA state for ring-3. 515 * @param sid The surface ID, UINT32_MAX if all. 516 516 * @thread VMSVGAFIFO 517 517 */ 518 void vmsvga3dUpdateHeapBuffersForSurfaces(PVGASTATE pThis, uint32_t sid)519 { 520 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;518 void vmsvga3dUpdateHeapBuffersForSurfaces(PVGASTATECC pThisCC, uint32_t sid) 519 { 520 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 521 521 AssertReturnVoid(pState); 522 522 … … 1715 1715 1716 1716 1717 void vmsvga3dInfoContextWorker(PVGASTATE pThis, PCDBGFINFOHLP pHlp, uint32_t cid, bool fVerbose)1717 void vmsvga3dInfoContextWorker(PVGASTATECC pThisCC, PCDBGFINFOHLP pHlp, uint32_t cid, bool fVerbose) 1718 1718 { 1719 1719 /* Warning! This code is currently racing papContexts reallocation! */ 1720 1720 /* Warning! This code is currently racing papContexts reallocation! */ 1721 1721 /* Warning! This code is currently racing papContexts reallocation! */ 1722 VMSVGA3DSTATE volatile *pState = pThis ->svga.p3dState;1722 VMSVGA3DSTATE volatile *pState = pThisCC->svga.p3dState; 1723 1723 if (pState) 1724 1724 { … … 2104 2104 2105 2105 2106 void vmsvga3dInfoSurfaceWorker(PPDMDEVINS pDevIns, PVGASTATE pThis, P CDBGFINFOHLP pHlp, uint32_t sid, bool fVerbose,2107 uint32_t cxAscii, bool fInvY, const char *pszBitmapPath)2106 void vmsvga3dInfoSurfaceWorker(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, PCDBGFINFOHLP pHlp, uint32_t sid, 2107 bool fVerbose, uint32_t cxAscii, bool fInvY, const char *pszBitmapPath) 2108 2108 { 2109 2109 /* Warning! This code is currently racing papSurfaces reallocation! */ 2110 2110 /* Warning! This code is currently racing papSurfaces reallocation! */ 2111 2111 /* Warning! This code is currently racing papSurfaces reallocation! */ 2112 VMSVGA3DSTATE volatile *pState = pThis ->svga.p3dState;2112 VMSVGA3DSTATE volatile *pState = pThisCC->svga.p3dState; 2113 2113 if (pState) 2114 2114 { … … 2124 2124 { 2125 2125 if (fVerbose) 2126 vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(pDevIns, pThis, sid);2126 vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(pDevIns, pThis, pThisCC, sid); 2127 2127 vmsvga3dInfoSurfaceWorkerOne(pHlp, pSurface, fVerbose, cxAscii, fInvY); 2128 2128 if (pszBitmapPath && *pszBitmapPath) … … 2139 2139 */ 2140 2140 if (fVerbose) 2141 vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(pDevIns, pThis, UINT32_MAX);2141 vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(pDevIns, pThis, pThisCC, UINT32_MAX); 2142 2142 uint32_t cSurfaces = pState->cSurfaces; 2143 2143 pHlp->pfnPrintf(pHlp, "cSurfaces=%d\n", cSurfaces); -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-internal.h
r82109 r82114 1210 1210 # define VMSVGA3D_DEF_CTX_F_INIT RT_BIT_32(2) 1211 1211 /** @} */ 1212 int vmsvga3dContextDefineOgl(PVGASTATE pThis, uint32_t cid, uint32_t fFlags);1212 int vmsvga3dContextDefineOgl(PVGASTATECC pThisCC, uint32_t cid, uint32_t fFlags); 1213 1213 void vmsvga3dSurfaceFormat2OGL(PVMSVGA3DSURFACE pSurface, SVGA3dSurfaceFormat format); 1214 1214 -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp
r82110 r82114 168 168 * Internal Functions * 169 169 *********************************************************************************************************************************/ 170 static int vmsvga3dContextDestroyOgl(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext, uint32_t cid);170 static int vmsvga3dContextDestroyOgl(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid); 171 171 static void vmsvgaColor2GLFloatArray(uint32_t color, GLfloat *pRed, GLfloat *pGreen, GLfloat *pBlue, GLfloat *pAlpha); 172 172 … … 591 591 { 592 592 int rc; 593 RT_NOREF(pDevIns, pThis CC);593 RT_NOREF(pDevIns, pThis); 594 594 595 595 AssertCompile(GL_TRUE == 1); … … 627 627 * Allocate the state. 628 628 */ 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); 631 631 632 632 #ifdef RT_OS_WINDOWS 633 633 /* Create event semaphore and async IO thread. */ 634 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;634 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 635 635 rc = RTSemEventCreate(&pState->WndRequestSem); 636 636 if (RT_SUCCESS(rc)) … … 647 647 else 648 648 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; 651 651 return rc; 652 652 #else … … 815 815 int vmsvga3dPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC) 816 816 { 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); 819 819 PVMSVGA3DCONTEXT pContext; 820 820 #ifdef VBOX_VMSVGA3D_DUAL_OPENGL_PROFILE … … 822 822 #endif 823 823 int rc; 824 RT_NOREF(pDevIns, pThis CC);824 RT_NOREF(pDevIns, pThis); 825 825 826 826 if (pState->rsGLVersion != 0.0) … … 830 830 * OpenGL function calls aren't possible without a valid current context, so create a fake one here. 831 831 */ 832 rc = vmsvga3dContextDefineOgl(pThis , 1, VMSVGA3D_DEF_CTX_F_INIT);832 rc = vmsvga3dContextDefineOgl(pThisCC, 1, VMSVGA3D_DEF_CTX_F_INIT); 833 833 AssertRCReturn(rc, rc); 834 834 … … 865 865 * figure out the shader model and stuff. 866 866 */ 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); 868 868 AssertLogRelRCReturn(rc, rc); 869 869 pContext = pState->papContexts[1]; /* Array may have been reallocated. */ … … 1118 1118 1119 1119 /* Cleanup */ 1120 rc = vmsvga3dContextDestroy(pThis , 1);1120 rc = vmsvga3dContextDestroy(pThisCC, 1); 1121 1121 AssertRC(rc); 1122 1122 #ifdef VBOX_VMSVGA3D_DUAL_OPENGL_PROFILE 1123 rc = vmsvga3dContextDestroy(pThis , 2);1123 rc = vmsvga3dContextDestroy(pThisCC, 2); 1124 1124 AssertRC(rc); 1125 1125 #endif … … 1135 1135 } 1136 1136 1137 int vmsvga3dReset(PVGASTATE pThis)1138 { 1139 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;1140 AssertReturn(pThis ->svga.p3dState, VERR_NO_MEMORY);1137 int vmsvga3dReset(PVGASTATECC pThisCC) 1138 { 1139 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 1140 AssertReturn(pThisCC->svga.p3dState, VERR_NO_MEMORY); 1141 1141 1142 1142 /* Destroy all leftover surfaces. */ … … 1144 1144 { 1145 1145 if (pState->papSurfaces[i]->id != SVGA3D_INVALID_ID) 1146 vmsvga3dSurfaceDestroy(pThis , pState->papSurfaces[i]->id);1146 vmsvga3dSurfaceDestroy(pThisCC, pState->papSurfaces[i]->id); 1147 1147 } 1148 1148 … … 1151 1151 { 1152 1152 if (pState->papContexts[i]->id != SVGA3D_INVALID_ID) 1153 vmsvga3dContextDestroy(pThis , pState->papContexts[i]->id);1153 vmsvga3dContextDestroy(pThisCC, pState->papContexts[i]->id); 1154 1154 } 1155 1155 1156 1156 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); 1158 1158 1159 1159 return VINF_SUCCESS; 1160 1160 } 1161 1161 1162 int vmsvga3dTerminate(PVGASTATE pThis)1163 { 1164 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;1162 int vmsvga3dTerminate(PVGASTATECC pThisCC) 1163 { 1164 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 1165 1165 AssertReturn(pState, VERR_WRONG_ORDER); 1166 1166 int rc; 1167 1167 1168 rc = vmsvga3dReset(pThis );1168 rc = vmsvga3dReset(pThisCC); 1169 1169 AssertRCReturn(rc, rc); 1170 1170 … … 1201 1201 1202 1202 1203 void vmsvga3dUpdateHostScreenViewport(PVGASTATE pThis, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport)1203 void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport) 1204 1204 { 1205 1205 /** @todo Move the visible framebuffer content here, don't wait for the guest to … … 1208 1208 #ifdef RT_OS_DARWIN 1209 1209 RT_NOREF(pOldViewport); 1210 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;1210 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 1211 1211 if ( pState 1212 1212 && idScreen == 0 … … 1216 1216 } 1217 1217 #else 1218 RT_NOREF(pThis , idScreen, pOldViewport);1218 RT_NOREF(pThisCC, idScreen, pOldViewport); 1219 1219 #endif 1220 1220 } … … 1366 1366 1367 1367 1368 int vmsvga3dQueryCaps(PVGASTATE pThis, uint32_t idx3dCaps, uint32_t *pu32Val)1369 { 1370 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;1368 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, uint32_t idx3dCaps, uint32_t *pu32Val) 1369 { 1370 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 1371 1371 AssertReturn(pState, VERR_NO_MEMORY); 1372 1372 int rc = VINF_SUCCESS; … … 2032 2032 2033 2033 2034 int vmsvga3dSurfaceCopy(PVGASTATE pThis, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src, uint32_t cCopyBoxes, SVGA3dCopyBox *pBox) 2034 int vmsvga3dSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src, 2035 uint32_t cCopyBoxes, SVGA3dCopyBox *pBox) 2035 2036 { 2036 2037 int rc; … … 2039 2040 cCopyBoxes, src.sid, src.face, src.mipmap, dest.sid, dest.face, dest.mipmap)); 2040 2041 2041 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;2042 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 2042 2043 AssertReturn(pState, VERR_INVALID_STATE); 2043 2044 … … 2170 2171 } 2171 2172 2173 PVGASTATE pThis = PDMDEVINS_2_DATA(pThisCC->pDevIns, PVGASTATE); 2172 2174 for (uint32_t i = 0; i < cCopyBoxes; i++) 2173 2175 { … … 2189 2191 2190 2192 /* 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); 2192 2194 AssertRCReturn(rc, rc); 2193 2195 } … … 2817 2819 * 2818 2820 * @returns Failure status code or @a rc. 2819 * @param pThis The shared VGA instance data.2821 * @param pThis The shared VGA/VMSVGA instance data. 2820 2822 * @param pThisCC The VGA/VMSVGA state for ring-3. 2821 2823 * @param pState The VMSVGA3d state. … … 3115 3117 } 3116 3118 3117 int vmsvga3dGenerateMipmaps(PVGASTATE pThis, uint32_t sid, SVGA3dTextureFilter filter)3118 { 3119 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3119 int vmsvga3dGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter) 3120 { 3121 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3120 3122 PVMSVGA3DSURFACE pSurface; 3121 3123 int rc = VINF_SUCCESS; … … 3208 3210 * 3209 3211 * @returns VBox status code. 3210 * @param pThis The shared VGA instance data.3212 * @param pThisCC The VGA/VMSVGA state for ring-3. 3211 3213 * @param cid Context id 3212 3214 * @param fFlags VMSVGA3D_DEF_CTX_F_XXX. 3213 3215 */ 3214 int vmsvga3dContextDefineOgl(PVGASTATE pThis, uint32_t cid, uint32_t fFlags)3216 int vmsvga3dContextDefineOgl(PVGASTATECC pThisCC, uint32_t cid, uint32_t fFlags) 3215 3217 { 3216 3218 int rc; 3217 3219 PVMSVGA3DCONTEXT pContext; 3218 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3220 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3219 3221 3220 3222 AssertReturn(pState, VERR_NO_MEMORY); … … 3248 3250 /* If one already exists with this id, then destroy it now. */ 3249 3251 if (pState->papContexts[cid]->id != SVGA3D_INVALID_ID) 3250 vmsvga3dContextDestroy(pThis , cid);3252 vmsvga3dContextDestroy(pThisCC, cid); 3251 3253 3252 3254 pContext = pState->papContexts[cid]; … … 3262 3264 if (pSharedCtx->id != VMSVGA3D_SHARED_CTX_ID) 3263 3265 { 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); 3265 3267 AssertLogRelRCReturn(rc, rc); 3266 3268 … … 3443 3445 * 3444 3446 * @returns VBox status code. 3445 * @param pThis The shared VGA instance data.3447 * @param pThisCC The VGA/VMSVGA state for ring-3. 3446 3448 * @param cid Context id 3447 3449 */ 3448 int vmsvga3dContextDefine(PVGASTATE pThis, uint32_t cid)3449 { 3450 return vmsvga3dContextDefineOgl(pThis , cid, 0/*fFlags*/);3450 int vmsvga3dContextDefine(PVGASTATECC pThisCC, uint32_t cid) 3451 { 3452 return vmsvga3dContextDefineOgl(pThisCC, cid, 0/*fFlags*/); 3451 3453 } 3452 3454 … … 3455 3457 * 3456 3458 * @returns VBox status code. 3457 * @param pThis The shared VGA instance data.3459 * @param pThisCC The VGA/VMSVGA state for ring-3. 3458 3460 * @param pContext The context to destroy. 3459 3461 * @param cid Context id 3460 3462 */ 3461 static int vmsvga3dContextDestroyOgl(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext, uint32_t cid)3462 { 3463 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3463 static int vmsvga3dContextDestroyOgl(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid) 3464 { 3465 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3464 3466 AssertReturn(pState, VERR_NO_MEMORY); 3465 3467 AssertReturn(pContext, VERR_INVALID_PARAMETER); … … 3479 3481 { 3480 3482 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); 3482 3484 } 3483 3485 if (pContext->paPixelShader) … … 3488 3490 { 3489 3491 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); 3491 3493 } 3492 3494 if (pContext->paVertexShader) … … 3553 3555 * 3554 3556 * @returns VBox status code. 3555 * @param pThis The shared VGA instance data.3557 * @param pThisCC The VGA/VMSVGA state for ring-3. 3556 3558 * @param cid Context id 3557 3559 */ 3558 int vmsvga3dContextDestroy(PVGASTATE pThis, uint32_t cid)3559 { 3560 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3560 int vmsvga3dContextDestroy(PVGASTATECC pThisCC, uint32_t cid) 3561 { 3562 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3561 3563 AssertReturn(pState, VERR_WRONG_ORDER); 3562 3564 … … 3566 3568 if ( cid < pState->cContexts 3567 3569 && pState->papContexts[cid]->id == cid) 3568 return vmsvga3dContextDestroyOgl(pThis , pState->papContexts[cid], cid);3570 return vmsvga3dContextDestroyOgl(pThisCC, pState->papContexts[cid], cid); 3569 3571 3570 3572 AssertReturn(cid < SVGA3D_MAX_CONTEXT_IDS, VERR_INVALID_PARAMETER); … … 3575 3577 * Worker for vmsvga3dChangeMode that resizes a context. 3576 3578 * 3577 * @param pThis The shared VGA instance data.3578 3579 * @param pState The VMSVGA3d state. 3579 3580 * @param pContext The context. 3580 3581 */ 3581 static void vmsvga3dChangeModeOneContext(PV GASTATE pThis, PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext)3582 { 3583 RT_NOREF 3(pThis,pState, pContext);3582 static void vmsvga3dChangeModeOneContext(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext) 3583 { 3584 RT_NOREF(pState, pContext); 3584 3585 /* Do nothing. The window is not used for presenting. */ 3585 3586 } 3586 3587 3587 3588 /* Handle resize */ 3588 int vmsvga3dChangeMode(PVGASTATE pThis)3589 { 3590 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3589 int vmsvga3dChangeMode(PVGASTATECC pThisCC) 3590 { 3591 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3591 3592 AssertReturn(pState, VERR_NO_MEMORY); 3592 3593 3593 3594 /* Resize the shared context too. */ 3594 3595 if (pState->SharedCtx.id == VMSVGA3D_SHARED_CTX_ID) 3595 vmsvga3dChangeModeOneContext(p This, pState, &pState->SharedCtx);3596 vmsvga3dChangeModeOneContext(pState, &pState->SharedCtx); 3596 3597 3597 3598 /* Resize all active contexts. */ … … 3600 3601 PVMSVGA3DCONTEXT pContext = pState->papContexts[i]; 3601 3602 if (pContext->id != SVGA3D_INVALID_ID) 3602 vmsvga3dChangeModeOneContext(p This, pState, pContext);3603 vmsvga3dChangeModeOneContext(pState, pContext); 3603 3604 } 3604 3605 … … 3607 3608 3608 3609 3609 int vmsvga3dSetTransform(PVGASTATE pThis, uint32_t cid, SVGA3dTransformType type, float matrix[16])3610 { 3611 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3610 int vmsvga3dSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16]) 3611 { 3612 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3612 3613 AssertReturn(pState, VERR_NO_MEMORY); 3613 3614 bool fModelViewChanged = false; … … 3699 3700 { 3700 3701 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); 3702 3703 } 3703 3704 … … 3706 3707 { 3707 3708 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); 3709 3710 } 3710 3711 } … … 3713 3714 } 3714 3715 3715 int vmsvga3dSetZRange(PVGASTATE pThis, uint32_t cid, SVGA3dZRange zRange)3716 { 3717 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3716 int vmsvga3dSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange) 3717 { 3718 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3718 3719 AssertReturn(pState, VERR_NO_MEMORY); 3719 3720 … … 3851 3852 } 3852 3853 3853 int vmsvga3dSetRenderState(PVGASTATE pThis, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState)3854 int vmsvga3dSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState) 3854 3855 { 3855 3856 uint32_t val = UINT32_MAX; /* Shut up MSC. */ 3856 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3857 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3857 3858 AssertReturn(pState, VERR_NO_MEMORY); 3858 3859 … … 4150 4151 } 4151 4152 4152 rc = vmsvga3dSetRenderState(pThis , cid, 2, renderstate);4153 rc = vmsvga3dSetRenderState(pThisCC, cid, 2, renderstate); 4153 4154 AssertRCReturn(rc, rc); 4154 4155 … … 4321 4322 } 4322 4323 4323 rc = vmsvga3dSetRenderState(pThis , cid, RT_ELEMENTS(renderstate), renderstate);4324 rc = vmsvga3dSetRenderState(pThisCC, cid, RT_ELEMENTS(renderstate), renderstate); 4324 4325 AssertRCReturn(rc, rc); 4325 4326 … … 4716 4717 } 4717 4718 4718 int vmsvga3dSetRenderTarget(PVGASTATE pThis, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target)4719 { 4720 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;4719 int vmsvga3dSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target) 4720 { 4721 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 4721 4722 4722 4723 AssertReturn(pState, VERR_NO_MEMORY); … … 5048 5049 } 5049 5050 5050 int vmsvga3dSetTextureState(PVGASTATE pThis, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState)5051 int vmsvga3dSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState) 5051 5052 { 5052 5053 GLenum val = ~(GLenum)0; /* Shut up MSC. */ 5053 5054 GLenum currentStage = ~(GLenum)0; 5054 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5055 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5055 5056 AssertReturn(pState, VERR_NO_MEMORY); 5056 5057 … … 5214 5215 if ( pTextureStateIter->name != SVGA3D_TS_INVALID 5215 5216 && pTextureStateIter->name != SVGA3D_TS_BIND_TEXTURE) 5216 vmsvga3dSetTextureState(pThis , pContext->id, 1, pTextureStateIter);5217 vmsvga3dSetTextureState(pThisCC, pContext->id, 1, pTextureStateIter); 5217 5218 } 5218 5219 } … … 5382 5383 } 5383 5384 5384 int vmsvga3dSetMaterial(PVGASTATE pThis, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial)5385 { 5386 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5385 int vmsvga3dSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial) 5386 { 5387 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5387 5388 AssertReturn(pState, VERR_NO_MEMORY); 5388 5389 … … 5431 5432 5432 5433 /** @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;5434 int vmsvga3dSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData) 5435 { 5436 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5436 5437 AssertReturn(pState, VERR_NO_MEMORY); 5437 5438 … … 5608 5609 } 5609 5610 5610 int vmsvga3dSetLightEnabled(PVGASTATE pThis, uint32_t cid, uint32_t index, uint32_t enabled)5611 { 5612 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5611 int vmsvga3dSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled) 5612 { 5613 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5613 5614 AssertReturn(pState, VERR_NO_MEMORY); 5614 5615 … … 5633 5634 /* Load the default settings if none have been set yet. */ 5634 5635 if (!pContext->state.aLightData[index].fValidData) 5635 vmsvga3dSetLightData(pThis , cid, index, (SVGA3dLightData *)&vmsvga3d_default_light);5636 vmsvga3dSetLightData(pThisCC, cid, index, (SVGA3dLightData *)&vmsvga3d_default_light); 5636 5637 } 5637 5638 glEnable(GL_LIGHT0 + index); … … 5644 5645 } 5645 5646 5646 int vmsvga3dSetViewPort(PVGASTATE pThis, uint32_t cid, SVGA3dRect *pRect)5647 { 5648 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5647 int vmsvga3dSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 5648 { 5649 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5649 5650 AssertReturn(pState, VERR_NO_MEMORY); 5650 5651 … … 5667 5668 /* Reset the projection matrix as that relies on the viewport setting. */ 5668 5669 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); 5672 5672 else 5673 5673 { … … 5680 5680 matrix[10] = 1.0; 5681 5681 matrix[15] = 1.0; 5682 vmsvga3dSetTransform(pThis , cid, SVGA3D_TRANSFORM_PROJECTION, matrix);5682 vmsvga3dSetTransform(pThisCC, cid, SVGA3D_TRANSFORM_PROJECTION, matrix); 5683 5683 } 5684 5684 … … 5686 5686 } 5687 5687 5688 int vmsvga3dSetClipPlane(PVGASTATE pThis, uint32_t cid, uint32_t index, float plane[4])5689 { 5690 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5688 int vmsvga3dSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4]) 5689 { 5690 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5691 5691 AssertReturn(pState, VERR_NO_MEMORY); 5692 5692 double oglPlane[4]; … … 5717 5717 } 5718 5718 5719 int vmsvga3dSetScissorRect(PVGASTATE pThis, uint32_t cid, SVGA3dRect *pRect)5720 { 5721 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5719 int vmsvga3dSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 5720 { 5721 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5722 5722 AssertReturn(pState, VERR_NO_MEMORY); 5723 5723 … … 5749 5749 } 5750 5750 5751 int vmsvga3dCommandClear(PVGASTATE pThis, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil,5751 int vmsvga3dCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil, 5752 5752 uint32_t cRects, SVGA3dRect *pRect) 5753 5753 { 5754 5754 GLbitfield mask = 0; 5755 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5755 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5756 5756 AssertReturn(pState, VERR_NO_MEMORY); 5757 5757 GLboolean fDepthWriteEnabled = GL_FALSE; … … 5953 5953 } 5954 5954 5955 int vmsvga3dResetTransformMatrices(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext)5955 static int vmsvga3dResetTransformMatrices(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 5956 5956 { 5957 5957 int rc; … … 5959 5959 /* Reset the view matrix (also takes the world matrix into account). */ 5960 5960 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); 5964 5963 else 5965 5964 { … … 5972 5971 matrix[10] = 1.0; 5973 5972 matrix[15] = 1.0; 5974 rc = vmsvga3dSetTransform(pThis , pContext->id, SVGA3D_TRANSFORM_VIEW, matrix);5973 rc = vmsvga3dSetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_VIEW, matrix); 5975 5974 } 5976 5975 … … 5978 5977 if (pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].fValid == true) 5979 5978 { 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); 5981 5980 } 5982 5981 else … … 5990 5989 matrix[10] = 1.0; 5991 5990 matrix[15] = 1.0; 5992 rc = vmsvga3dSetTransform(pThis , pContext->id, SVGA3D_TRANSFORM_PROJECTION, matrix);5991 rc = vmsvga3dSetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_PROJECTION, matrix); 5993 5992 } 5994 5993 AssertRC(rc); … … 5996 5995 } 5997 5996 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;5997 static 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; 6004 6003 unsigned const sidVertex = pVertexDecl[0].array.surfaceId; 6005 6004 … … 6182 6181 } 6183 6182 6184 int vmsvga3dDrawPrimitivesCleanupVertexDecls(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext, uint32_t iVertexDeclBase, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl) 6185 { 6186 PVMSVGA3DSTATE pState = pThis->svga.p3dState; 6183 static int vmsvga3dDrawPrimitivesCleanupVertexDecls(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t iVertexDeclBase, 6184 uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl) 6185 { 6186 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 6187 6187 6188 6188 /* Clean up the vertex declarations. */ … … 6193 6193 /* Reset the transformation matrices in case of a switch back from pretransformed mode. */ 6194 6194 Log(("vmsvga3dDrawPrimitivesCleanupVertexDecls: reset world and projection matrices after transformation reset (pre-transformed -> transformed)\n")); 6195 vmsvga3dResetTransformMatrices(pThis , pContext);6195 vmsvga3dResetTransformMatrices(pThisCC, pContext); 6196 6196 } 6197 6197 … … 6262 6262 } 6263 6263 6264 int vmsvga3dDrawPrimitives(PVGASTATE pThis, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl,6264 int vmsvga3dDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl, 6265 6265 uint32_t numRanges, SVGA3dPrimitiveRange *pRange, uint32_t cVertexDivisor, 6266 6266 SVGA3dVertexDivisor *pVertexDivisor) 6267 6267 { 6268 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;6268 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 6269 6269 AssertReturn(pState, VERR_INTERNAL_ERROR); 6270 6270 uint32_t iCurrentVertex; … … 6403 6403 } 6404 6404 6405 rc = vmsvga3dDrawPrimitivesProcessVertexDecls(pThis , pContext, iCurrentVertex, iVertex - iCurrentVertex,6405 rc = vmsvga3dDrawPrimitivesProcessVertexDecls(pThisCC, pContext, iCurrentVertex, iVertex - iCurrentVertex, 6406 6406 &pVertexDecl[iCurrentVertex], pVertexDivisor, cInstances); 6407 6407 AssertRCReturn(rc, rc); … … 6562 6562 } 6563 6563 6564 rc = vmsvga3dDrawPrimitivesCleanupVertexDecls(pThis, pContext, iCurrentVertex, iVertex - iCurrentVertex, &pVertexDecl[iCurrentVertex]); 6564 rc = vmsvga3dDrawPrimitivesCleanupVertexDecls(pThisCC, pContext, iCurrentVertex, 6565 iVertex - iCurrentVertex, &pVertexDecl[iCurrentVertex]); 6565 6566 AssertRCReturn(rc, rc); 6566 6567 … … 6631 6632 6632 6633 6633 int vmsvga3dShaderDefine(PVGASTATE pThis, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData)6634 int vmsvga3dShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData) 6634 6635 { 6635 6636 PVMSVGA3DSHADER pShader; 6636 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;6637 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 6637 6638 AssertReturn(pState, VERR_NO_MEMORY); 6638 6639 … … 6661 6662 /* If one already exists with this id, then destroy it now. */ 6662 6663 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); 6664 6665 6665 6666 pShader = &pContext->paVertexShader[shid]; … … 6680 6681 /* If one already exists with this id, then destroy it now. */ 6681 6682 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); 6683 6684 6684 6685 pShader = &pContext->paPixelShader[shid]; … … 6729 6730 } 6730 6731 6731 int vmsvga3dShaderDestroy(PVGASTATE pThis, uint32_t cid, uint32_t shid, SVGA3dShaderType type)6732 { 6733 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;6732 int vmsvga3dShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type) 6733 { 6734 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 6734 6735 AssertReturn(pState, VERR_NO_MEMORY); 6735 6736 PVMSVGA3DSHADER pShader = NULL; … … 6778 6779 } 6779 6780 6780 int vmsvga3dShaderSet(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid)6781 { 6782 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;6781 int vmsvga3dShaderSet(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid) 6782 { 6783 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 6783 6784 AssertReturn(pState, VERR_NO_MEMORY); 6784 6785 int rc; … … 6849 6850 } 6850 6851 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;6852 int 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; 6854 6855 AssertReturn(pState, VERR_NO_MEMORY); 6855 6856 -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-savedstate.cpp
r82110 r82114 45 45 * 46 46 * @returns VBox status code. 47 * @param pThis The VMSVGA device state.48 * @param pContext 47 * @param pThisCC The VGA/VMSVGA state for ring-3. 48 * @param pContext The freshly loaded context to reinitialize. 49 49 */ 50 static int vmsvga3dLoadReinitContext(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext)50 static int vmsvga3dLoadReinitContext(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 51 51 { 52 52 int rc; … … 65 65 target.face = 0; 66 66 target.mipmap = 0; 67 rc = vmsvga3dSetRenderTarget(pThis , cid, (SVGA3dRenderTargetType)j, target);67 rc = vmsvga3dSetRenderTarget(pThisCC, cid, (SVGA3dRenderTargetType)j, target); 68 68 AssertRCReturn(rc, rc); 69 69 } … … 78 78 79 79 if (pRenderState->state != SVGA3D_RS_INVALID) 80 vmsvga3dSetRenderState(pThis , pContext->id, 1, pRenderState);80 vmsvga3dSetRenderState(pThisCC, pContext->id, 1, pRenderState); 81 81 } 82 82 Log(("vmsvga3dLoadReinitContext: Recreate render state END\n")); … … 91 91 92 92 if (pTextureState->name != SVGA3D_TS_INVALID) 93 vmsvga3dSetTextureState(pThis , pContext->id, 1, pTextureState);93 vmsvga3dSetTextureState(pThisCC, pContext->id, 1, pTextureState); 94 94 } 95 95 } … … 100 100 { 101 101 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); 103 103 } 104 104 … … 107 107 { 108 108 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); 110 110 if (pContext->state.aLightData[j].fEnabled) 111 vmsvga3dSetLightEnabled(pThis , cid, j, true);111 vmsvga3dSetLightEnabled(pThisCC, cid, j, true); 112 112 } 113 113 … … 118 118 { 119 119 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); 121 121 } 122 122 } … … 128 128 { 129 129 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); 131 131 } 132 132 } 133 133 134 134 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_SCISSORRECT) 135 vmsvga3dSetScissorRect(pThis , cid, &pContext->state.RectScissor);135 vmsvga3dSetScissorRect(pThisCC, cid, &pContext->state.RectScissor); 136 136 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_ZRANGE) 137 vmsvga3dSetZRange(pThis , cid, pContext->state.zRange);137 vmsvga3dSetZRange(pThisCC, cid, pContext->state.zRange); 138 138 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_VIEWPORT) 139 vmsvga3dSetViewPort(pThis , cid, &pContext->state.RectViewPort);139 vmsvga3dSetViewPort(pThisCC, cid, &pContext->state.RectViewPort); 140 140 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); 142 142 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); 144 144 145 145 Log(("vmsvga3dLoadReinitContext: returns [cid=%#x]\n", cid)); … … 150 150 { 151 151 RT_NOREF(pDevIns, pThisCC, uPass); 152 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;152 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 153 153 AssertReturn(pState, VERR_NO_MEMORY); 154 154 PCPDMDEVHLPR3 pHlp = pDevIns->pHlpR3; … … 193 193 if (pContext->id != VMSVGA3D_SHARED_CTX_ID) 194 194 { 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); 196 196 AssertRCReturn(rc, rc); 197 197 } … … 200 200 #endif 201 201 { 202 rc = vmsvga3dContextDefine(pThis , cid);202 rc = vmsvga3dContextDefine(pThisCC, cid); 203 203 AssertRCReturn(rc, rc); 204 204 … … 243 243 AssertRCReturn(rc, rc); 244 244 245 rc = vmsvga3dShaderDefine(pThis , cid, shid, shader.type, shader.cbData, pData);245 rc = vmsvga3dShaderDefine(pThisCC, cid, shid, shader.type, shader.cbData, pData); 246 246 AssertRCReturn(rc, rc); 247 247 … … 274 274 AssertRCReturn(rc, rc); 275 275 276 rc = vmsvga3dShaderDefine(pThis , cid, shid, shader.type, shader.cbData, pData);276 rc = vmsvga3dShaderDefine(pThisCC, cid, shid, shader.type, shader.cbData, pData); 277 277 AssertRCReturn(rc, rc); 278 278 … … 291 291 if (ShaderConst.fValid) 292 292 { 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); 294 294 AssertRCReturn(rc, rc); 295 295 } … … 306 306 if (ShaderConst.fValid) 307 307 { 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); 309 309 AssertRCReturn(rc, rc); 310 310 } … … 358 358 case VMSVGA3DQUERYSTATE_BUILDING: 359 359 /* Start collecting data. */ 360 vmsvga3dQueryBegin(pThis , cid, SVGA3D_QUERYTYPE_OCCLUSION);360 vmsvga3dQueryBegin(pThisCC, cid, SVGA3D_QUERYTYPE_OCCLUSION); 361 361 /* Partial result. */ 362 362 pContext->occlusion.u32QueryResult = query.u32QueryResult; … … 425 425 uint32_t idx = j + face * surface.faces[0].numMipLevels; 426 426 /* 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); 428 429 AssertRCReturn(rc, rc); 429 430 … … 432 433 } 433 434 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); 435 437 AssertRCReturn(rc, rc); 436 438 … … 480 482 if (pState->SharedCtx.id == VMSVGA3D_SHARED_CTX_ID) 481 483 { 482 rc = vmsvga3dLoadReinitContext(pThis , &pState->SharedCtx);484 rc = vmsvga3dLoadReinitContext(pThisCC, &pState->SharedCtx); 483 485 AssertRCReturn(rc, rc); 484 486 } … … 491 493 if (pContext->id != SVGA3D_INVALID_ID) 492 494 { 493 rc = vmsvga3dLoadReinitContext(pThis , pContext);495 rc = vmsvga3dLoadReinitContext(pThisCC, pContext); 494 496 AssertRCReturn(rc, rc); 495 497 } … … 501 503 502 504 503 static int vmsvga3dSaveContext(PCPDMDEVHLPR3 pHlp, PVGASTATE pThis, PSSMHANDLE pSSM, PVMSVGA3DCONTEXT pContext)505 static int vmsvga3dSaveContext(PCPDMDEVHLPR3 pHlp, PVGASTATECC pThisCC, PSSMHANDLE pSSM, PVMSVGA3DCONTEXT pContext) 504 506 { 505 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;507 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 506 508 uint32_t cid = pContext->id; 507 509 … … 637 639 } 638 640 639 int vmsvga3dSaveExec(PPDMDEVINS pDevIns, PVGASTATE pThis, PSSMHANDLE pSSM)641 int vmsvga3dSaveExec(PPDMDEVINS pDevIns, PVGASTATECC pThisCC, PSSMHANDLE pSSM) 640 642 { 641 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;643 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 642 644 AssertReturn(pState, VERR_NO_MEMORY); 643 645 PCPDMDEVHLPR3 pHlp = pDevIns->pHlpR3; … … 652 654 if (pState->SharedCtx.id == VMSVGA3D_SHARED_CTX_ID) 653 655 { 654 rc = vmsvga3dSaveContext(pHlp, pThis , pSSM, &pState->SharedCtx);656 rc = vmsvga3dSaveContext(pHlp, pThisCC, pSSM, &pState->SharedCtx); 655 657 AssertRCReturn(rc, rc); 656 658 } … … 660 662 for (uint32_t i = 0; i < pState->cContexts; i++) 661 663 { 662 rc = vmsvga3dSaveContext(pHlp, pThis , pSSM, pState->papContexts[i]);664 rc = vmsvga3dSaveContext(pHlp, pThisCC, pSSM, pState->papContexts[i]); 663 665 AssertRCReturn(rc, rc); 664 666 } -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win.cpp
r82109 r82114 163 163 int vmsvga3dInit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC) 164 164 { 165 RT_NOREF(pDevIns, pThis CC);165 RT_NOREF(pDevIns, pThis); 166 166 167 167 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); 170 170 171 171 /* Create event semaphore. */ … … 190 190 int vmsvga3dPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC) 191 191 { 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); 194 194 HRESULT hr; 195 RT_NOREF(pDevIns, pThis CC);195 RT_NOREF(pDevIns, pThis); 196 196 197 197 if (pState->pD3D9) … … 277 277 } 278 278 279 int vmsvga3dReset(PVGASTATE pThis)280 { 281 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;282 AssertReturn(pThis ->svga.p3dState, VERR_NO_MEMORY);279 int vmsvga3dReset(PVGASTATECC pThisCC) 280 { 281 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 282 AssertReturn(pThisCC->svga.p3dState, VERR_NO_MEMORY); 283 283 284 284 /* Destroy all leftover surfaces. */ … … 286 286 { 287 287 if (pState->papSurfaces[i]->id != SVGA3D_INVALID_ID) 288 vmsvga3dSurfaceDestroy(pThis , pState->papSurfaces[i]->id);288 vmsvga3dSurfaceDestroy(pThisCC, pState->papSurfaces[i]->id); 289 289 } 290 290 … … 293 293 { 294 294 if (pState->papContexts[i]->id != SVGA3D_INVALID_ID) 295 vmsvga3dContextDestroy(pThis , pState->papContexts[i]->id);295 vmsvga3dContextDestroy(pThisCC, pState->papContexts[i]->id); 296 296 } 297 297 return VINF_SUCCESS; 298 298 } 299 299 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 );300 int vmsvga3dTerminate(PVGASTATECC pThisCC) 301 { 302 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 303 AssertReturn(pThisCC->svga.p3dState, VERR_NO_MEMORY); 304 305 int rc = vmsvga3dReset(pThisCC); 306 306 AssertRCReturn(rc, rc); 307 307 … … 317 317 } 318 318 319 void vmsvga3dUpdateHostScreenViewport(PVGASTATE pThis, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport)319 void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport) 320 320 { 321 321 /** @todo Scroll the screen content without requiring the guest to redraw. */ 322 NOREF(pThis); NOREF(idScreen); NOREF(pOldViewport);322 RT_NOREF(pThisCC, idScreen, pOldViewport); 323 323 } 324 324 … … 424 424 425 425 426 int vmsvga3dQueryCaps(PVGASTATE pThis, uint32_t idx3dCaps, uint32_t *pu32Val)427 { 428 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;426 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, uint32_t idx3dCaps, uint32_t *pu32Val) 427 { 428 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 429 429 AssertReturn(pState, VERR_NO_MEMORY); 430 430 D3DCAPS9 *pCaps = &pState->caps; … … 1474 1474 } 1475 1475 1476 int vmsvga3dSurfaceCopy(PVGASTATE pThis, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src,1476 int vmsvga3dSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src, 1477 1477 uint32_t cCopyBoxes, SVGA3dCopyBox *pBox) 1478 1478 { 1479 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;1479 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 1480 1480 AssertReturn(pState, VERR_NO_MEMORY); 1481 1481 … … 2320 2320 * 2321 2321 * @returns Failure status code or @a rc. 2322 * @param pThis The shared VGA instance data.2322 * @param pThis The shared VGA/VMSVGA instance data. 2323 2323 * @param pThisCC The VGA/VMSVGA state for ring-3. 2324 2324 * @param pState The VMSVGA3d state. … … 2515 2515 } 2516 2516 2517 int vmsvga3dGenerateMipmaps(PVGASTATE pThis, uint32_t sid, SVGA3dTextureFilter filter)2518 { 2519 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;2517 int vmsvga3dGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter) 2518 { 2519 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 2520 2520 HRESULT hr; 2521 2521 … … 2562 2562 * 2563 2563 * @returns VBox status code. 2564 * @param pThis The shared VGA instance data.2564 * @param pThisCC The VGA/VMSVGA state for ring-3. 2565 2565 * @param cid Context id 2566 2566 */ 2567 int vmsvga3dContextDefine(PVGASTATE pThis, uint32_t cid)2567 int vmsvga3dContextDefine(PVGASTATECC pThisCC, uint32_t cid) 2568 2568 { 2569 2569 int rc; … … 2571 2571 HRESULT hr; 2572 2572 D3DPRESENT_PARAMETERS PresParam; 2573 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;2573 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 2574 2574 2575 2575 Log(("vmsvga3dContextDefine id %x\n", cid)); … … 2595 2595 /* If one already exists with this id, then destroy it now. */ 2596 2596 if (pState->papContexts[cid]->id != SVGA3D_INVALID_ID) 2597 vmsvga3dContextDestroy(pThis , cid);2597 vmsvga3dContextDestroy(pThisCC, cid); 2598 2598 2599 2599 pContext = pState->papContexts[cid]; … … 2660 2660 * 2661 2661 * @returns VBox status code. 2662 * @param pThis The shared VGA instance data.2662 * @param pThisCC The VGA/VMSVGA state for ring-3. 2663 2663 * @param cid Context id 2664 2664 */ 2665 int vmsvga3dContextDestroy(PVGASTATE pThis, uint32_t cid)2666 { 2667 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;2665 int vmsvga3dContextDestroy(PVGASTATECC pThisCC, uint32_t cid) 2666 { 2667 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 2668 2668 AssertReturn(pState, VERR_NO_MEMORY); 2669 2669 … … 2718 2718 #endif 2719 2719 2720 rc = vmsvga3dSurfaceDestroy(pThis , sid);2720 rc = vmsvga3dSurfaceDestroy(pThisCC, sid); 2721 2721 AssertRC(rc); 2722 2722 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); 2724 2725 AssertRC(rc); 2725 2726 … … 2765 2766 { 2766 2767 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); 2768 2769 } 2769 2770 if (pContext->paPixelShader) … … 2774 2775 { 2775 2776 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); 2777 2778 } 2778 2779 if (pContext->paVertexShader) … … 2802 2803 } 2803 2804 2804 static int vmsvga3dContextTrackUsage(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext)2805 static int vmsvga3dContextTrackUsage(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 2805 2806 { 2806 2807 #ifndef VBOX_VMSVGA3D_WITH_WINE_OPENGL 2807 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;2808 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 2808 2809 AssertReturn(pState, VERR_NO_MEMORY); 2809 2810 … … 2822 2823 2823 2824 /* Handle resize */ 2824 int vmsvga3dChangeMode(PVGASTATE pThis)2825 { 2826 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;2825 int vmsvga3dChangeMode(PVGASTATECC pThisCC) 2826 { 2827 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 2827 2828 AssertReturn(pState, VERR_NO_MEMORY); 2828 2829 … … 3016 3017 target.face = 0; 3017 3018 target.mipmap = 0; 3018 int rc = vmsvga3dSetRenderTarget(pThis , cid, (SVGA3dRenderTargetType)j, target);3019 int rc = vmsvga3dSetRenderTarget(pThisCC, cid, (SVGA3dRenderTargetType)j, target); 3019 3020 AssertRCReturn(rc, rc); 3020 3021 } … … 3029 3030 3030 3031 if (pRenderState->state != SVGA3D_RS_INVALID) 3031 vmsvga3dSetRenderState(pThis , pContext->id, 1, pRenderState);3032 vmsvga3dSetRenderState(pThisCC, pContext->id, 1, pRenderState); 3032 3033 } 3033 3034 Log(("vmsvga3dChangeMode: Recreate render state END\n")); … … 3042 3043 3043 3044 if (pTextureState->name != SVGA3D_RS_INVALID) 3044 vmsvga3dSetTextureState(pThis , pContext->id, 1, pTextureState);3045 vmsvga3dSetTextureState(pThisCC, pContext->id, 1, pTextureState); 3045 3046 } 3046 3047 } … … 3050 3051 vmsvga3dSetScissorRect(pThis, cid, &pContext->state.RectScissor); 3051 3052 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_ZRANGE) 3052 vmsvga3dSetZRange(pThis , cid, pContext->state.zRange);3053 vmsvga3dSetZRange(pThisCC, cid, pContext->state.zRange); 3053 3054 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_VIEWPORT) 3054 3055 vmsvga3dSetViewPort(pThis, cid, &pContext->state.RectViewPort); … … 3065 3066 3066 3067 3067 int vmsvga3dSetTransform(PVGASTATE pThis, uint32_t cid, SVGA3dTransformType type, float matrix[16])3068 int vmsvga3dSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16]) 3068 3069 { 3069 3070 D3DTRANSFORMSTATETYPE d3dState; 3070 3071 HRESULT hr; 3071 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3072 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3072 3073 AssertReturn(pState, VERR_NO_MEMORY); 3073 3074 … … 3144 3145 } 3145 3146 3146 int vmsvga3dSetZRange(PVGASTATE pThis, uint32_t cid, SVGA3dZRange zRange)3147 int vmsvga3dSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange) 3147 3148 { 3148 3149 D3DVIEWPORT9 viewport; 3149 3150 HRESULT hr; 3150 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3151 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3151 3152 AssertReturn(pState, VERR_NO_MEMORY); 3152 3153 … … 3216 3217 } 3217 3218 3218 int vmsvga3dSetRenderState(PVGASTATE pThis, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState)3219 int vmsvga3dSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState) 3219 3220 { 3220 3221 DWORD val = 0; /* Shut up MSC */ 3221 3222 HRESULT hr; 3222 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3223 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3223 3224 AssertReturn(pState, VERR_NO_MEMORY); 3224 3225 … … 3887 3888 } 3888 3889 3889 int vmsvga3dSetRenderTarget(PVGASTATE pThis, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target)3890 int vmsvga3dSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target) 3890 3891 { 3891 3892 HRESULT hr; 3892 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;3893 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 3893 3894 3894 3895 AssertReturn(pState, VERR_NO_MEMORY); … … 4170 4171 /* Changing the render target resets the viewport; restore it here. */ 4171 4172 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_VIEWPORT) 4172 vmsvga3dSetViewPort(pThis , cid, &pContext->state.RectViewPort);4173 vmsvga3dSetViewPort(pThisCC, cid, &pContext->state.RectViewPort); 4173 4174 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_ZRANGE) 4174 vmsvga3dSetZRange(pThis , cid, pContext->state.zRange);4175 vmsvga3dSetZRange(pThisCC, cid, pContext->state.zRange); 4175 4176 /* Changing the render target also resets the scissor rectangle; restore it as well. */ 4176 4177 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_SCISSORRECT) 4177 vmsvga3dSetScissorRect(pThis , cid, &pContext->state.RectScissor);4178 vmsvga3dSetScissorRect(pThisCC, cid, &pContext->state.RectScissor); 4178 4179 4179 4180 break; … … 4308 4309 } 4309 4310 4310 int vmsvga3dSetTextureState(PVGASTATE pThis, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState)4311 int vmsvga3dSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState) 4311 4312 { 4312 4313 DWORD val = 0; /* Shut up MSC */ 4313 4314 HRESULT hr; 4314 4315 PVMSVGA3DCONTEXT pContext; 4315 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;4316 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 4316 4317 AssertReturn(pState, VERR_NO_MEMORY); 4317 4318 … … 4596 4597 } 4597 4598 4598 int vmsvga3dSetMaterial(PVGASTATE pThis, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial)4599 int vmsvga3dSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial) 4599 4600 { 4600 4601 HRESULT hr; 4601 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;4602 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 4602 4603 AssertReturn(pState, VERR_NO_MEMORY); 4603 4604 … … 4646 4647 } 4647 4648 4648 int vmsvga3dSetLightData(PVGASTATE pThis, uint32_t cid, uint32_t index, SVGA3dLightData *pData)4649 int vmsvga3dSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData) 4649 4650 { 4650 4651 HRESULT hr; 4651 4652 D3DLIGHT9 light; 4652 4653 PVMSVGA3DCONTEXT pContext; 4653 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;4654 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 4654 4655 AssertReturn(pState, VERR_NO_MEMORY); 4655 4656 … … 4720 4721 } 4721 4722 4722 int vmsvga3dSetLightEnabled(PVGASTATE pThis, uint32_t cid, uint32_t index, uint32_t enabled)4723 int vmsvga3dSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled) 4723 4724 { 4724 4725 HRESULT hr; 4725 4726 PVMSVGA3DCONTEXT pContext; 4726 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;4727 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 4727 4728 AssertReturn(pState, VERR_NO_MEMORY); 4728 4729 … … 4742 4743 } 4743 4744 4744 int vmsvga3dSetViewPort(PVGASTATE pThis, uint32_t cid, SVGA3dRect *pRect)4745 int vmsvga3dSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 4745 4746 { 4746 4747 HRESULT hr; 4747 4748 D3DVIEWPORT9 viewPort; 4748 4749 PVMSVGA3DCONTEXT pContext; 4749 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;4750 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 4750 4751 AssertReturn(pState, VERR_NO_MEMORY); 4751 4752 … … 4774 4775 } 4775 4776 4776 int vmsvga3dSetClipPlane(PVGASTATE pThis, uint32_t cid, uint32_t index, float plane[4])4777 int vmsvga3dSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4]) 4777 4778 { 4778 4779 HRESULT hr; 4779 4780 PVMSVGA3DCONTEXT pContext; 4780 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;4781 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 4781 4782 AssertReturn(pState, VERR_NO_MEMORY); 4782 4783 … … 4796 4797 } 4797 4798 4798 int vmsvga3dCommandClear(PVGASTATE pThis, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect) 4799 int vmsvga3dCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, 4800 uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect) 4799 4801 { 4800 4802 DWORD clearFlagD3D = 0; … … 4802 4804 HRESULT hr; 4803 4805 PVMSVGA3DCONTEXT pContext; 4804 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;4806 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 4805 4807 AssertReturn(pState, VERR_NO_MEMORY); 4806 4808 … … 5047 5049 } 5048 5050 5049 int vmsvga3dDrawPrimitives(PVGASTATE pThis, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl,5051 int vmsvga3dDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl, 5050 5052 uint32_t numRanges, SVGA3dPrimitiveRange *pRange, 5051 5053 uint32_t cVertexDivisor, SVGA3dVertexDivisor *pVertexDivisor) … … 5053 5055 static const D3DVERTEXELEMENT9 sVertexEnd = D3DDECL_END(); 5054 5056 5055 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5057 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5056 5058 AssertReturn(pState, VERR_INTERNAL_ERROR); 5057 5059 … … 5329 5331 5330 5332 /* Make sure we can track drawing usage of active render targets and textures. */ 5331 vmsvga3dContextTrackUsage(pThis , pContext);5333 vmsvga3dContextTrackUsage(pThisCC, pContext); 5332 5334 } 5333 5335 … … 5358 5360 5359 5361 5360 int vmsvga3dSetScissorRect(PVGASTATE pThis, uint32_t cid, SVGA3dRect *pRect)5362 int vmsvga3dSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 5361 5363 { 5362 5364 HRESULT hr; 5363 5365 RECT rect; 5364 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5366 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5365 5367 AssertReturn(pState, VERR_NO_MEMORY); 5366 5368 … … 5387 5389 5388 5390 5389 int vmsvga3dShaderDefine(PVGASTATE pThis, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData) 5391 int vmsvga3dShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type, 5392 uint32_t cbData, uint32_t *pShaderData) 5390 5393 { 5391 5394 HRESULT hr; 5392 5395 PVMSVGA3DSHADER pShader; 5393 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5396 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5394 5397 AssertReturn(pState, VERR_NO_MEMORY); 5395 5398 … … 5434 5437 /* If one already exists with this id, then destroy it now. */ 5435 5438 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); 5437 5440 5438 5441 pShader = &pContext->paVertexShader[shid]; … … 5453 5456 /* If one already exists with this id, then destroy it now. */ 5454 5457 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); 5456 5459 5457 5460 pShader = &pContext->paPixelShader[shid]; … … 5526 5529 } 5527 5530 5528 int vmsvga3dShaderDestroy(PVGASTATE pThis, uint32_t cid, uint32_t shid, SVGA3dShaderType type)5529 { 5530 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5531 int vmsvga3dShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type) 5532 { 5533 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5531 5534 AssertReturn(pState, VERR_NO_MEMORY); 5532 5535 PVMSVGA3DSHADER pShader = NULL; … … 5572 5575 } 5573 5576 5574 int vmsvga3dShaderSet(PVGASTATE pThis, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid)5575 { 5576 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5577 int vmsvga3dShaderSet(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid) 5578 { 5579 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5577 5580 AssertReturn(pState, VERR_NO_MEMORY); 5578 5581 HRESULT hr; … … 5639 5642 } 5640 5643 5641 int vmsvga3dShaderSetConst(PVGASTATE pThis, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues) 5644 int vmsvga3dShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type, 5645 SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues) 5642 5646 { 5643 5647 HRESULT hr; 5644 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;5648 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 5645 5649 AssertReturn(pState, VERR_NO_MEMORY); 5646 5650 -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp
r82109 r82114 46 46 * 47 47 * @returns VBox status code (currently ignored). 48 * @param pThis The shared VGA instance data.48 * @param pThisCC The VGA/VMSVGA state for ring-3. 49 49 * @param sid The ID of the surface to (re-)define. 50 50 * @param surfaceFlags . … … 56 56 * @param paMipLevelSizes . 57 57 */ 58 int vmsvga3dSurfaceDefine(PVGASTATE pThis, uint32_t sid, uint32_t surfaceFlags, SVGA3dSurfaceFormat format,58 int vmsvga3dSurfaceDefine(PVGASTATECC pThisCC, uint32_t sid, uint32_t surfaceFlags, SVGA3dSurfaceFormat format, 59 59 SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES], uint32_t multisampleCount, 60 60 SVGA3dTextureFilter autogenFilter, uint32_t cMipLevels, SVGA3dSize *paMipLevelSizes) 61 61 { 62 62 PVMSVGA3DSURFACE pSurface; 63 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;63 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 64 64 AssertReturn(pState, VERR_NO_MEMORY); 65 65 … … 119 119 /* If one already exists with this id, then destroy it now. */ 120 120 if (pSurface->id != SVGA3D_INVALID_ID) 121 vmsvga3dSurfaceDestroy(pThis , sid);121 vmsvga3dSurfaceDestroy(pThisCC, sid); 122 122 123 123 RT_ZERO(*pSurface); … … 330 330 * 331 331 * @returns VBox status code (currently ignored). 332 * @param pThis The shared VGA instance data.333 * @param sid 332 * @param pThisCC The VGA/VMSVGA state for ring-3. 333 * @param sid The ID of the surface to destroy. 334 334 */ 335 int vmsvga3dSurfaceDestroy(PVGASTATE pThis, uint32_t sid)335 int vmsvga3dSurfaceDestroy(PVGASTATECC pThisCC, uint32_t sid) 336 336 { 337 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;337 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 338 338 AssertReturn(pState, VERR_NO_MEMORY); 339 339 … … 379 379 * 380 380 * @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. 382 383 * @param pDstSfcImg 383 384 * @param pDstBox … … 386 387 * @param enmMode 387 388 */ 388 int vmsvga3dSurfaceStretchBlt(PVGASTATE pThis, SVGA3dSurfaceImageId const *pDstSfcImg, SVGA3dBox const *pDstBox,389 int vmsvga3dSurfaceStretchBlt(PVGASTATE pThis, PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pDstSfcImg, SVGA3dBox const *pDstBox, 389 390 SVGA3dSurfaceImageId const *pSrcSfcImg, SVGA3dBox const *pSrcBox, SVGA3dStretchBltMode enmMode) 390 391 { 391 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;392 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 392 393 AssertReturn(pState, VERR_NO_MEMORY); 393 394 … … 472 473 * 473 474 * @returns VBox status code (currently ignored). 474 * @param pThis The shared VGA instance data.475 * @param pThis The shared VGA/VMSVGA instance data. 475 476 * @param pThisCC The VGA/VMSVGA state for ring-3. 476 477 * @param guest . … … 483 484 SVGA3dTransferType transfer, uint32_t cCopyBoxes, SVGA3dCopyBox *paBoxes) 484 485 { 485 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;486 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 486 487 AssertReturn(pState, VERR_NO_MEMORY); 487 488 … … 694 695 } 695 696 696 int vmsvga3dQueryBegin(PVGASTATE pThis, uint32_t cid, SVGA3dQueryType type)697 int vmsvga3dQueryBegin(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type) 697 698 { 698 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;699 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 699 700 AssertReturn(pState, VERR_NO_MEMORY); 700 701 … … 728 729 } 729 730 730 int vmsvga3dQueryEnd(PVGASTATE pThis, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult)731 int vmsvga3dQueryEnd(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult) 731 732 { 732 733 RT_NOREF(guestResult); 733 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;734 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 734 735 AssertReturn(pState, VERR_NO_MEMORY); 735 736 … … 761 762 int vmsvga3dQueryWait(PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult) 762 763 { 763 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;764 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 764 765 AssertReturn(pState, VERR_NO_MEMORY); 765 766 … … 824 825 } 825 826 826 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis , idDstScreen);827 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, idDstScreen); 827 828 AssertReturn(pScreen, VERR_INTERNAL_ERROR); 828 829 … … 902 903 { 903 904 /* Deprecated according to svga3d_reg.h. */ 904 PVMSVGA3DSTATE pState = pThis ->svga.p3dState;905 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 905 906 AssertReturn(pState, VERR_NO_MEMORY); 906 907 … … 910 911 911 912 /** @todo Detect screen from coords? Or split rect to screens? */ 912 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThis , 0);913 VMSVGASCREENOBJECT *pScreen = vmsvgaR3GetScreenObject(pThisCC, 0); 913 914 AssertReturn(pScreen, VERR_INTERNAL_ERROR); 914 915 -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h
r82109 r82114 52 52 53 53 /* DevVGA-SVGA.cpp: */ 54 void vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis, uint32_t sid);54 void vmsvgaR33dSurfaceUpdateHeapBuffersOnFifoThread(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t sid); 55 55 56 56 … … 59 59 int vmsvga3dPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC); 60 60 int 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, 61 int vmsvga3dSaveExec(PPDMDEVINS pDevIns, PVGASTATECC pThisCC, PSSMHANDLE pSSM); 62 int vmsvga3dTerminate(PVGASTATECC pThisCC); 63 int vmsvga3dReset(PVGASTATECC pThisCC); 64 void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport); 65 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, uint32_t idx3dCaps, uint32_t *pu32Val); 66 67 int 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); 70 int vmsvga3dSurfaceDestroy(PVGASTATECC pThisCC, uint32_t sid); 71 int vmsvga3dSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src, 72 uint32_t cCopyBoxes, SVGA3dCopyBox *pBox); 73 int vmsvga3dSurfaceStretchBlt(PVGASTATE pThis, PVGASTATECC pThisCC, 74 SVGA3dSurfaceImageId const *pDstSfcImg, SVGA3dBox const *pDstBox, 71 75 SVGA3dSurfaceImageId const *pSrcSfcImg, SVGA3dBox const *pSrcBox, SVGA3dStretchBltMode enmMode); 72 76 int vmsvga3dSurfaceDMA(PVGASTATE pThis, PVGASTATECC pThisCC, SVGA3dGuestImage guest, SVGA3dSurfaceImageId host, SVGA3dTransferType transfer, uint32_t cCopyBoxes, SVGA3dCopyBox *pBoxes); 73 77 int vmsvga3dSurfaceBlitToScreen(PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t dest, SVGASignedRect destRect, SVGA3dSurfaceImageId src, SVGASignedRect srcRect, uint32_t cRects, SVGASignedRect *pRect); 74 78 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);79 int vmsvga3dContextDefine(PVGASTATECC pThisCC, uint32_t cid); 80 int vmsvga3dContextDestroy(PVGASTATECC pThisCC, uint32_t cid); 81 82 int vmsvga3dChangeMode(PVGASTATECC pThisCC); 83 84 int vmsvga3dSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16]); 85 int vmsvga3dSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange); 86 int vmsvga3dSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState); 87 int vmsvga3dSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target); 88 int vmsvga3dSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState); 89 int vmsvga3dSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial); 90 int vmsvga3dSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData); 91 int vmsvga3dSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled); 92 int vmsvga3dSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect); 93 int vmsvga3dSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4]); 94 int vmsvga3dCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect); 91 95 int 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);96 int vmsvga3dDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl, uint32_t numRanges, SVGA3dPrimitiveRange *pNumRange, uint32_t cVertexDivisor, SVGA3dVertexDivisor *pVertexDivisor); 97 int vmsvga3dSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect); 98 int vmsvga3dGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter); 99 100 int vmsvga3dShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData); 101 int vmsvga3dShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type); 102 int vmsvga3dShaderSet(PVGASTATECC pThisCC, struct VMSVGA3DCONTEXT *pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid); 103 int vmsvga3dShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues); 104 105 int vmsvga3dQueryBegin(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type); 106 int vmsvga3dQueryEnd(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult); 103 107 int vmsvga3dQueryWait(PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult); 104 108 … … 118 122 #endif 119 123 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, P CDBGFINFOHLP pHlp, uint32_t sid, bool fVerbose,123 uint32_t cxAscii, bool fInvY, const char *pszBitmapPath);124 void vmsvga3dUpdateHeapBuffersForSurfaces(PVGASTATECC pThisCC, uint32_t sid); 125 void vmsvga3dInfoContextWorker(PVGASTATECC pThisCC, PCDBGFINFOHLP pHlp, uint32_t cid, bool fVerbose); 126 void vmsvga3dInfoSurfaceWorker(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, PCDBGFINFOHLP pHlp, uint32_t sid, 127 bool fVerbose, uint32_t cxAscii, bool fInvY, const char *pszBitmapPath); 124 128 125 129 /* DevVGA-SVGA3d-shared.cpp: */ -
trunk/src/VBox/Devices/Graphics/DevVGA.cpp
r82112 r82114 1243 1243 #ifdef VMSVGA_WITH_VGA_FB_BACKUP_AND_IN_RING3 1244 1244 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; 1246 1246 #else 1247 1247 ret = pThisCC->pbVRam[addr]; … … 1255 1255 #ifdef VMSVGA_WITH_VGA_FB_BACKUP_AND_IN_RING3 1256 1256 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; 1258 1258 #else 1259 1259 ret = pThisCC->pbVRam[off]; … … 1264 1264 #ifdef VMSVGA_WITH_VGA_FB_BACKUP_AND_IN_RING3 1265 1265 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; 1267 1267 #else 1268 1268 pThis->latch = ((uint32_t *)pThisCC->pbVRam)[addr]; … … 1352 1352 pThisCC->pbVRam[addr] = val; 1353 1353 else if (addr < VMSVGA_VGA_FB_BACKUP_SIZE) 1354 pThis ->svga.pbVgaFrameBufferR3[addr] = val;1354 pThisCC->svga.pbVgaFrameBufferR3[addr] = val; 1355 1355 else 1356 1356 { … … 1381 1381 pThisCC->pbVRam[addr] = val; 1382 1382 else if (addr < VMSVGA_VGA_FB_BACKUP_SIZE) 1383 pThis ->svga.pbVgaFrameBufferR3[addr] = val;1383 pThisCC->svga.pbVgaFrameBufferR3[addr] = val; 1384 1384 else 1385 1385 { … … 1466 1466 pu32Dst = &((uint32_t *)pThisCC->pbVRam)[addr]; 1467 1467 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]; 1469 1469 else 1470 1470 { … … 5564 5564 */ 5565 5565 if (pThis->svga.fFIFOThreadSleeping && pThis->svga.fEnabled && pThis->svga.fConfigured) 5566 vmsvgaR3FifoWatchdogTimer(pDevIns, pThis );5566 vmsvgaR3FifoWatchdogTimer(pDevIns, pThis, pThisCC); 5567 5567 # endif 5568 5568 } … … 6587 6587 rc = PDMDevHlpPCIIORegionCreateMmio2Ex(pDevIns, pThis->pciRegions.iFIFO, pThis->svga.cbFIFO, 6588 6588 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); 6590 6590 AssertRCReturn(rc, PDMDevHlpVMSetError(pDevIns, rc, RT_SRC_POS, 6591 6591 N_("Failed to create VMSVGA FIFO (%u bytes)"), pThis->svga.cbFIFO)); … … 7335 7335 { 7336 7336 rc = PDMDevHlpMmio2SetUpContext(pDevIns, pThis->hMmio2VmSvgaFifo, 0 /* off */, PAGE_SIZE, 7337 (void **)&pThis ->svga.CTX_SUFF(pFIFO));7337 (void **)&pThisCC->svga.pau32FIFO); 7338 7338 AssertLogRelMsgRCReturn(rc, ("PDMDevHlpMapMMIO2IntoR0(%#x,) -> %Rrc\n", pThis->svga.cbFIFO, rc), rc); 7339 7339 } -
trunk/src/VBox/Devices/Graphics/DevVGA.h
r82109 r82114 342 342 343 343 #ifdef VBOX_WITH_VMSVGA 344 VMSVGAS tatesvga;344 VMSVGASTATE svga; 345 345 #endif 346 346 … … 571 571 /** Status LUN: Partner of ILeds. */ 572 572 R3PTRTYPE(PPDMILEDCONNECTORS) pLedsConnector; 573 574 #ifdef VBOX_WITH_VMSVGA 575 /** The VMSVGA ring-3 state. */ 576 VMSVGASTATER3 svga; 577 #endif 573 578 574 579 /** The VGA BIOS ROM data. */ … … 636 641 typedef struct VGASTATER0 637 642 { 638 /** The R0 vram pointer. ..*/643 /** The R0 vram pointer. */ 639 644 R0PTRTYPE(uint8_t *) pbVRam; 645 #ifdef VBOX_WITH_VMSVGA 646 /** The VMSVGA ring-0 state. */ 647 VMSVGASTATER0 svga; 648 #endif 640 649 } VGASTATER0; 641 650 /** Pointer to the ring-0 VGA state. */ … … 648 657 typedef struct VGASTATERC 649 658 { 650 /** Pointer to the GC vram mapping. */659 /** Pointer to the RC vram mapping. */ 651 660 RCPTRTYPE(uint8_t *) pbVRam; 652 661 } VGASTATERC;
Note:
See TracChangeset
for help on using the changeset viewer.