Changeset 89121 in vbox for trunk/src/VBox/Devices/Graphics
- Timestamp:
- May 17, 2021 7:30:44 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 144462
- Location:
- trunk/src/VBox/Devices/Graphics
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA-cmd.cpp
r88904 r89121 418 418 419 419 420 #ifdef VBOX_WITH_VMSVGA3D 420 421 static int vmsvgaR3GboCreate(PVMSVGAR3STATE pSvgaR3State, SVGAMobFormat ptDepth, PPN64 baseAddress, uint32_t sizeInBytes, bool fGCPhys64, bool fWriteProtected, PVMSVGAGBO pGbo) 421 422 { … … 941 942 942 943 943 #ifdef VBOX_WITH_VMSVGA3D944 944 int vmsvgaR3UpdateGBSurface(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dSurfaceImageId const *pImageId, SVGA3dBox const *pBox) 945 945 { … … 4171 4171 STAM_REL_COUNTER_INC(&pSvgaR3State->StatR3Cmd3dEndQuery); 4172 4172 4173 vmsvga3dQueryEnd(pThisCC, pCmd->cid, pCmd->type , pCmd->guestResult);4173 vmsvga3dQueryEnd(pThisCC, pCmd->cid, pCmd->type); 4174 4174 break; 4175 4175 } … … 4181 4181 STAM_REL_COUNTER_INC(&pSvgaR3State->StatR3Cmd3dWaitForQuery); 4182 4182 4183 vmsvga3dQueryWait(pThis , pThisCC, pCmd->cid, pCmd->type,pCmd->guestResult);4183 vmsvga3dQueryWait(pThisCC, pCmd->cid, pCmd->type, pThis, &pCmd->guestResult); 4184 4184 break; 4185 4185 } -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA-internal.h
r88787 r89121 143 143 144 144 # ifdef VBOX_WITH_VMSVGA3D 145 VMSVGA3DBACKENDFUNCS3D *pFuncs3D; 146 VMSVGA3DBACKENDFUNCSVGPU9 *pFuncsVGPU9; 145 147 VMSVGA3DBACKENDFUNCSMAP *pFuncsMap; 146 148 VMSVGA3DBACKENDFUNCSGBO *pFuncsGBO; -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.cpp
r88835 r89121 423 423 static int vmsvgaR3SaveExecFifo(PCPDMDEVHLPR3 pHlp, PVGASTATECC pThisCC, PSSMHANDLE pSSM); 424 424 static void vmsvgaR3CmdBufSubmit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, RTGCPHYS GCPhysCB, SVGACBContext CBCtx); 425 # ifdef VBOX_WITH_VMSVGA3D 426 static void vmsvga3dR3Free3dInterfaces(PVGASTATECC pThisCC); 427 # endif 425 428 #endif /* IN_RING3 */ 426 429 … … 3888 3891 { 3889 3892 /* The 3d subsystem must be reset from the fifo thread. */ 3890 vmsvga3dReset(pThisCC); 3893 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 3894 pSVGAState->pFuncs3D->pfnReset(pThisCC); 3891 3895 } 3892 3896 # endif … … 3908 3912 { 3909 3913 /* The 3d subsystem must be shut down from the fifo thread. */ 3910 vmsvga3dTerminate(pThisCC); 3914 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 3915 pSVGAState->pFuncs3D->pfnTerminate(pThisCC); 3911 3916 } 3912 3917 # endif … … 3934 3939 # ifdef VBOX_WITH_VMSVGA3D 3935 3940 if (pThis->svga.f3DEnabled) 3941 { 3942 /* The following RT_OS_DARWIN code was in vmsvga3dLoadExec and therefore must be executed before each vmsvga3dLoadExec invocation. */ 3943 # ifndef RT_OS_DARWIN /** @todo r=bird: this is normally done on the EMT, so for DARWIN we do that when loading saved state too now. See DevVGA-SVGA.cpp */ 3944 /* Must initialize now as the recreation calls below rely on an initialized 3d subsystem. */ 3945 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 3946 pSVGAState->pFuncs3D->pfnPowerOn(pDevIns, pThis, pThisCC); 3947 # endif 3948 3936 3949 vmsvga3dLoadExec(pDevIns, pThis, pThisCC, pLoadState->pSSM, pLoadState->uVersion, pLoadState->uPass); 3950 } 3937 3951 # endif 3938 3952 break; … … 5553 5567 5554 5568 # ifdef RT_OS_DARWIN /** @todo r=bird: this is normally done on the EMT, so for DARWIN we do that when loading saved state too now. See DevVGA-SVGA3d-shared.h. */ 5555 vmsvga3dPowerOn(pDevIns, pThis, PDMDEVINS_2_DATA_CC(pDevIns, PVGASTATECC));5569 pSVGAState->pFuncs3D->pfnPowerOn(pDevIns, pThis, pThisCC); 5556 5570 # endif 5557 5571 … … 5704 5718 * @param pSVGAState Pointer to the structure. It is not deallocated. 5705 5719 */ 5706 static void vmsvgaR3StateTerm(PVGASTATE pThis, PVMSVGAR3STATE pSVGAState) 5707 { 5720 static void vmsvgaR3StateTerm(PVGASTATE pThis, PVGASTATECC pThisCC) 5721 { 5722 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 5723 5708 5724 # ifndef VMSVGA_USE_EMT_HALT_CODE 5709 5725 if (pSVGAState->hBusyDelayedEmts != NIL_RTSEMEVENTMULTI) … … 5745 5761 5746 5762 # ifdef VBOX_WITH_VMSVGA3D 5763 vmsvga3dR3Free3dInterfaces(pThisCC); 5764 # endif 5765 } 5766 5767 /** 5768 * Constructor for PVMSVGAR3STATE structure. 5769 * 5770 * @returns VBox status code. 5771 * @param pDevIns The PDM device instance. 5772 * @param pThis The shared VGA/VMSVGA instance data. 5773 * @param pSVGAState Pointer to the structure. It is already allocated. 5774 */ 5775 static int vmsvgaR3StateInit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVMSVGAR3STATE pSVGAState) 5776 { 5777 int rc = VINF_SUCCESS; 5778 5779 pSVGAState->pDevIns = pDevIns; 5780 5781 pSVGAState->paGMR = (PGMR)RTMemAllocZ(pThis->svga.cGMR * sizeof(GMR)); 5782 AssertReturn(pSVGAState->paGMR, VERR_NO_MEMORY); 5783 5784 # ifndef VMSVGA_USE_EMT_HALT_CODE 5785 /* Create semaphore for delaying EMTs wait for the FIFO to stop being busy. */ 5786 rc = RTSemEventMultiCreate(&pSVGAState->hBusyDelayedEmts); 5787 AssertRCReturn(rc, rc); 5788 # endif 5789 5790 rc = RTCritSectInit(&pSVGAState->CritSectCmdBuf); 5791 AssertRCReturn(rc, rc); 5792 5793 vmsvgaR3CmdBufCtxInit(&pSVGAState->CmdBufCtxDC); 5794 5795 RTListInit(&pSVGAState->MOBLRUList); 5796 return rc; 5797 } 5798 5799 # ifdef VBOX_WITH_VMSVGA3D 5800 static void vmsvga3dR3Free3dInterfaces(PVGASTATECC pThisCC) 5801 { 5802 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 5803 5747 5804 RTMemFree(pSVGAState->pFuncsMap); 5748 5805 pSVGAState->pFuncsMap = NULL; … … 5751 5808 RTMemFree(pSVGAState->pFuncsDX); 5752 5809 pSVGAState->pFuncsDX = NULL; 5753 # endif 5754 } 5755 5756 /** 5757 * Constructor for PVMSVGAR3STATE structure. 5758 * 5759 * @returns VBox status code. 5760 * @param pDevIns The PDM device instance. 5761 * @param pThis The shared VGA/VMSVGA instance data. 5762 * @param pSVGAState Pointer to the structure. It is already allocated. 5763 */ 5764 static int vmsvgaR3StateInit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVMSVGAR3STATE pSVGAState) 5765 { 5766 int rc = VINF_SUCCESS; 5767 5768 pSVGAState->pDevIns = pDevIns; 5769 5770 pSVGAState->paGMR = (PGMR)RTMemAllocZ(pThis->svga.cGMR * sizeof(GMR)); 5771 AssertReturn(pSVGAState->paGMR, VERR_NO_MEMORY); 5772 5773 # ifndef VMSVGA_USE_EMT_HALT_CODE 5774 /* Create semaphore for delaying EMTs wait for the FIFO to stop being busy. */ 5775 rc = RTSemEventMultiCreate(&pSVGAState->hBusyDelayedEmts); 5776 AssertRCReturn(rc, rc); 5777 # endif 5778 5779 rc = RTCritSectInit(&pSVGAState->CritSectCmdBuf); 5780 AssertRCReturn(rc, rc); 5781 5782 vmsvgaR3CmdBufCtxInit(&pSVGAState->CmdBufCtxDC); 5783 5784 RTListInit(&pSVGAState->MOBLRUList); 5785 return rc; 5786 } 5787 5788 # ifdef VBOX_WITH_VMSVGA3D 5810 RTMemFree(pSVGAState->pFuncsVGPU9); 5811 pSVGAState->pFuncsVGPU9 = NULL; 5812 RTMemFree(pSVGAState->pFuncs3D); 5813 pSVGAState->pFuncs3D = NULL; 5814 } 5815 5816 /* This structure is used only by vmsvgaR3Init3dInterfaces */ 5817 typedef struct VMSVGA3DINTERFACE 5818 { 5819 char const *pcszName; 5820 uint32_t cbFuncs; 5821 void **ppvFuncs; 5822 } VMSVGA3DINTERFACE; 5823 5789 5824 /** 5790 5825 * Initializes the optional host 3D backend interfaces. … … 5797 5832 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 5798 5833 5799 int rc = vmsvga3dQueryInterface(pThisCC, VMSVGA3D_BACKEND_INTERFACE_NAME_DX, NULL, sizeof(VMSVGA3DBACKENDFUNCSDX)); 5834 #define ENTRY_3D_INTERFACE(a_Name, a_Field) { VMSVGA3D_BACKEND_INTERFACE_NAME_##a_Name, sizeof(VMSVGA3DBACKENDFUNCS##a_Name), (void **)&pSVGAState->a_Field } 5835 VMSVGA3DINTERFACE a3dInterface[] = 5836 { 5837 ENTRY_3D_INTERFACE(3D, pFuncs3D), 5838 ENTRY_3D_INTERFACE(VGPU9, pFuncsVGPU9), 5839 ENTRY_3D_INTERFACE(DX, pFuncsDX), 5840 ENTRY_3D_INTERFACE(MAP, pFuncsMap), 5841 ENTRY_3D_INTERFACE(GBO, pFuncsGBO), 5842 }; 5843 #undef ENTRY_3D_INTERFACE 5844 5845 int rc = VINF_SUCCESS; 5846 for (uint32_t i = 0; i < RT_ELEMENTS(a3dInterface); ++i) 5847 { 5848 VMSVGA3DINTERFACE *p = &a3dInterface[i]; 5849 5850 int rc2 = vmsvga3dQueryInterface(pThisCC, p->pcszName, NULL, p->cbFuncs); 5851 if (RT_SUCCESS(rc2)) 5852 { 5853 *p->ppvFuncs = RTMemAllocZ(p->cbFuncs); 5854 AssertBreakStmt(*p->ppvFuncs, rc = VERR_NO_MEMORY); 5855 5856 vmsvga3dQueryInterface(pThisCC, p->pcszName, *p->ppvFuncs, p->cbFuncs); 5857 } 5858 } 5859 5800 5860 if (RT_SUCCESS(rc)) 5801 5861 { 5802 pSVGAState->pFuncsDX = (VMSVGA3DBACKENDFUNCSDX *)RTMemAllocZ(sizeof(VMSVGA3DBACKENDFUNCSDX)); 5803 AssertReturn(pSVGAState->pFuncsDX, VERR_NO_MEMORY); 5804 5805 vmsvga3dQueryInterface(pThisCC, VMSVGA3D_BACKEND_INTERFACE_NAME_DX, pSVGAState->pFuncsDX, sizeof(VMSVGA3DBACKENDFUNCSDX)); 5806 } 5807 5808 rc = vmsvga3dQueryInterface(pThisCC, VMSVGA3D_BACKEND_INTERFACE_NAME_MAP, NULL, sizeof(VMSVGA3DBACKENDFUNCSMAP)); 5809 if (RT_SUCCESS(rc)) 5810 { 5811 pSVGAState->pFuncsMap = (VMSVGA3DBACKENDFUNCSMAP *)RTMemAllocZ(sizeof(VMSVGA3DBACKENDFUNCSMAP)); 5812 AssertReturn(pSVGAState->pFuncsMap, VERR_NO_MEMORY); 5813 5814 vmsvga3dQueryInterface(pThisCC, VMSVGA3D_BACKEND_INTERFACE_NAME_MAP, pSVGAState->pFuncsMap, sizeof(VMSVGA3DBACKENDFUNCSMAP)); 5815 } 5816 5817 rc = vmsvga3dQueryInterface(pThisCC, VMSVGA3D_BACKEND_INTERFACE_NAME_GBO, NULL, sizeof(VMSVGA3DBACKENDFUNCSGBO)); 5818 if (RT_SUCCESS(rc)) 5819 { 5820 pSVGAState->pFuncsGBO = (VMSVGA3DBACKENDFUNCSGBO *)RTMemAllocZ(sizeof(VMSVGA3DBACKENDFUNCSGBO)); 5821 AssertReturn(pSVGAState->pFuncsGBO, VERR_NO_MEMORY); 5822 5823 vmsvga3dQueryInterface(pThisCC, VMSVGA3D_BACKEND_INTERFACE_NAME_GBO, pSVGAState->pFuncsGBO, sizeof(VMSVGA3DBACKENDFUNCSGBO)); 5824 } 5825 5826 return VINF_SUCCESS; 5827 } 5828 # endif 5862 /* 3D interface is required. */ 5863 if (pSVGAState->pFuncs3D) 5864 return VINF_SUCCESS; 5865 5866 rc = VERR_NOT_SUPPORTED; 5867 } 5868 5869 vmsvga3dR3Free3dInterfaces(pThisCC); 5870 return rc; 5871 } 5872 # endif /* VBOX_WITH_VMSVGA3D */ 5829 5873 5830 5874 /** … … 5837 5881 static void vmsvgaR3InitCaps(PVGASTATE pThis, PVGASTATECC pThisCC) 5838 5882 { 5883 # ifdef VBOX_WITH_VMSVGA3D 5884 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 5885 # endif 5886 5839 5887 /* Device caps. */ 5840 5888 pThis->svga.u32DeviceCaps = SVGA_CAP_GMR … … 5859 5907 5860 5908 # ifdef VBOX_WITH_VMSVGA3D 5861 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State;5862 5909 if (pSVGAState->pFuncsGBO) 5863 5910 pThis->svga.u32DeviceCaps |= SVGA_CAP_GBOBJECTS; /* Enable guest-backed objects and surfaces. */ … … 5868 5915 5869 5916 # ifdef VBOX_WITH_VMSVGA3D 5870 pThis->svga.u32DeviceCaps |= SVGA_CAP_3D; 5917 if (pSVGAState->pFuncs3D) 5918 pThis->svga.u32DeviceCaps |= SVGA_CAP_3D; 5871 5919 # endif 5872 5920 … … 5993 6041 ASMAtomicWriteBool(&pThis->svga.fBadGuest, false); 5994 6042 5995 vmsvgaR3StateTerm(pThis, pThisCC ->svga.pSvgaR3State);6043 vmsvgaR3StateTerm(pThis, pThisCC); 5996 6044 vmsvgaR3StateInit(pDevIns, pThis, pThisCC->svga.pSvgaR3State); 5997 6045 5998 6046 RT_BZERO(pThisCC->svga.pbVgaFrameBufferR3, VMSVGA_VGA_FB_BACKUP_SIZE); 5999 6000 # ifdef VBOX_WITH_VMSVGA3D6001 /* Device capabilities depend on this. */6002 if (pThis->svga.f3DEnabled)6003 vmsvgaR3Init3dInterfaces(pThisCC);6004 # endif6005 6047 6006 6048 /* Initialize FIFO and register capabilities. */ … … 6056 6098 if (pThisCC->svga.pSvgaR3State) 6057 6099 { 6058 vmsvgaR3StateTerm(pThis, pThisCC ->svga.pSvgaR3State);6100 vmsvgaR3StateTerm(pThis, pThisCC); 6059 6101 6060 6102 RTMemFree(pThisCC->svga.pSvgaR3State); … … 6145 6187 if (pThis->svga.f3DEnabled) 6146 6188 { 6147 rc = vmsvga3dInit(pDevIns, pThis, pThisCC); 6189 /* Load a 3D backend. */ 6190 rc = vmsvgaR3Init3dInterfaces(pThisCC); 6148 6191 if (RT_SUCCESS(rc)) 6149 { 6150 /* Device capabilities depend on this. */ 6151 vmsvgaR3Init3dInterfaces(pThisCC); 6152 } 6153 else 6192 rc = pSVGAState->pFuncs3D->pfnInit(pDevIns, pThis, pThisCC); 6193 6194 if (RT_FAILURE(rc)) 6154 6195 { 6155 6196 LogRel(("VMSVGA3d: 3D support disabled! (vmsvga3dInit -> %Rrc)\n", rc)); … … 6456 6497 if (pThis->svga.f3DEnabled) 6457 6498 { 6458 int rc = vmsvga3dPowerOn(pDevIns, pThis, pThisCC); 6499 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 6500 int rc = pSVGAState->pFuncs3D->pfnPowerOn(pDevIns, pThis, pThisCC); 6459 6501 if (RT_SUCCESS(rc)) 6460 6502 { -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-internal.h
r88787 r89121 805 805 #elif defined(VMSVGA3D_D3D11) 806 806 /** @todo */ 807 #define VMSVGA3DQUERY_EXISTS(p) ( false)807 #define VMSVGA3DQUERY_EXISTS(p) ((p)->enmQueryState != VMSVGA3DQUERYSTATE_NULL) 808 808 #else 809 809 #define VMSVGA3DQUERY_EXISTS(p) ((p)->idQuery && (p)->enmQueryState != VMSVGA3DQUERYSTATE_NULL) … … 1252 1252 #endif /* VMSVGA3D_INCL_STRUCTURE_DESCRIPTORS */ 1253 1253 1254 int vmsvga3dBackDefineScreen(PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen);1255 int vmsvga3dBackDestroyScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen);1256 1257 int vmsvga3dBackSurfaceBlitToScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen,1258 SVGASignedRect destRect, SVGA3dSurfaceImageId srcImage,1259 SVGASignedRect srcRect, uint32_t cRects, SVGASignedRect *paRects);1260 1254 1261 1255 #ifdef VMSVGA3D_DIRECT3D … … 1336 1330 1337 1331 1338 1339 /* Command implementation workers. */1340 void vmsvga3dBackSurfaceDestroy(PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface);1341 int vmsvga3dBackSurfaceStretchBlt(PVGASTATE pThis, PVMSVGA3DSTATE pState,1342 PVMSVGA3DSURFACE pDstSurface, uint32_t uDstFace, uint32_t uDstMipmap, SVGA3dBox const *pDstBox,1343 PVMSVGA3DSURFACE pSrcSurface, uint32_t uSrcFace, uint32_t uSrcMipmap, SVGA3dBox const *pSrcBox,1344 SVGA3dStretchBltMode enmMode, PVMSVGA3DCONTEXT pContext);1345 int vmsvga3dBackSurfaceDMACopyBox(PVGASTATE pThis, PVGASTATECC pThisCC, PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface,1346 PVMSVGA3DMIPMAPLEVEL pMipLevel, uint32_t uHostFace, uint32_t uHostMipmap,1347 SVGAGuestPtr GuestPtr, uint32_t cbGuestPitch, SVGA3dTransferType transfer,1348 SVGA3dCopyBox const *pBox, PVMSVGA3DCONTEXT pContext, int rc, int iBox);1349 1350 int vmsvga3dBackCreateTexture(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext,1351 PVMSVGA3DSURFACE pSurface);1352 1353 1332 DECLINLINE(int) vmsvga3dContextFromCid(PVMSVGA3DSTATE pState, uint32_t cid, PVMSVGA3DCONTEXT *ppContext) 1354 1333 { … … 1458 1437 } 1459 1438 #endif 1460 1461 int vmsvga3dOcclusionQueryCreate(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext);1462 int vmsvga3dOcclusionQueryDelete(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext);1463 int vmsvga3dOcclusionQueryBegin(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext);1464 int vmsvga3dOcclusionQueryEnd(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext);1465 int vmsvga3dOcclusionQueryGetData(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t *pu32Pixels);1466 1439 1467 1440 void vmsvga3dInfoSurfaceToBitmap(PCDBGFINFOHLP pHlp, PVMSVGA3DSURFACE pSurface, -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp
r88787 r89121 170 170 *********************************************************************************************************************************/ 171 171 static int vmsvga3dContextDestroyOgl(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid); 172 static int vmsvga3dBackContextDestroy(PVGASTATECC pThisCC, uint32_t cid); 172 173 static void vmsvgaColor2GLFloatArray(uint32_t color, GLfloat *pRed, GLfloat *pGreen, GLfloat *pBlue, GLfloat *pAlpha); 174 static int vmsvga3dBackSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData); 175 static int vmsvga3dBackSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4]); 176 static int vmsvga3dBackShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type); 177 static int vmsvga3dBackOcclusionQueryDelete(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext); 178 static int vmsvga3dBackCreateTexture(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext, PVMSVGA3DSURFACE pSurface); 173 179 174 180 /* Generated by VBoxDef2LazyLoad from the VBoxSVGA3D.def and VBoxSVGA3DObjC.def files. */ … … 589 595 * @param pThisCC The VGA/VMSVGA state for ring-3. 590 596 */ 591 int vmsvga3dInit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC)597 static int vmsvga3dBackInit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC) 592 598 { 593 599 int rc; … … 822 828 823 829 /* We must delay window creation until the PowerOn phase. Init is too early and will cause failures. */ 824 int vmsvga3dPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC)830 static int vmsvga3dBackPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC) 825 831 { 826 832 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 1127 1133 1128 1134 /* Cleanup */ 1129 rc = vmsvga3d ContextDestroy(pThisCC, 1);1135 rc = vmsvga3dBackContextDestroy(pThisCC, 1); 1130 1136 AssertRC(rc); 1131 1137 #ifdef VBOX_VMSVGA3D_DUAL_OPENGL_PROFILE 1132 rc = vmsvga3d ContextDestroy(pThisCC, 2);1138 rc = vmsvga3dBackContextDestroy(pThisCC, 2); 1133 1139 AssertRC(rc); 1134 1140 #endif … … 1144 1150 } 1145 1151 1146 int vmsvga3dReset(PVGASTATECC pThisCC)1152 static int vmsvga3dBackReset(PVGASTATECC pThisCC) 1147 1153 { 1148 1154 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 1160 1166 { 1161 1167 if (pState->papContexts[i]->id != SVGA3D_INVALID_ID) 1162 vmsvga3d ContextDestroy(pThisCC, pState->papContexts[i]->id);1168 vmsvga3dBackContextDestroy(pThisCC, pState->papContexts[i]->id); 1163 1169 } 1164 1170 … … 1169 1175 } 1170 1176 1171 int vmsvga3dTerminate(PVGASTATECC pThisCC)1177 static int vmsvga3dBackTerminate(PVGASTATECC pThisCC) 1172 1178 { 1173 1179 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 1175 1181 int rc; 1176 1182 1177 rc = vmsvga3d Reset(pThisCC);1183 rc = vmsvga3dBackReset(pThisCC); 1178 1184 AssertRCReturn(rc, rc); 1179 1185 … … 1210 1216 1211 1217 1212 void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport)1218 static void vmsvga3dBackUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport) 1213 1219 { 1214 1220 /** @todo Move the visible framebuffer content here, don't wait for the guest to … … 1231 1237 1232 1238 /** 1233 * Worker for vmsvga3d QueryCaps that figures out supported operations for a1239 * Worker for vmsvga3dBackQueryCaps that figures out supported operations for a 1234 1240 * given surface format capability. 1235 1241 * … … 1375 1381 1376 1382 1377 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val)1383 static int vmsvga3dBackQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val) 1378 1384 { 1379 1385 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 1995 2001 * Destroy backend specific surface bits (part of SVGA_3D_CMD_SURFACE_DESTROY). 1996 2002 * 1997 * @param p State The VMSVGA3dstate.2003 * @param pThisCC The device state. 1998 2004 * @param pSurface The surface being destroyed. 1999 2005 */ 2000 void vmsvga3dBackSurfaceDestroy(PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface) 2001 { 2006 static void vmsvga3dBackSurfaceDestroy(PVGASTATECC pThisCC, PVMSVGA3DSURFACE pSurface) 2007 { 2008 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 2009 AssertReturnVoid(pState); 2010 2002 2011 PVMSVGA3DCONTEXT pContext = &pState->SharedCtx; 2003 2012 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext); … … 2044 2053 2045 2054 2046 int vmsvga3dSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src,2047 uint32_t cCopyBoxes, SVGA3dCopyBox *pBox)2055 static int vmsvga3dBackSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src, 2056 uint32_t cCopyBoxes, SVGA3dCopyBox *pBox) 2048 2057 { 2049 2058 int rc; … … 2084 2093 { 2085 2094 LogFunc(("dest sid=%u type=0x%x format=%d -> create texture\n", dest.sid, pSurfaceDst->surfaceFlags, pSurfaceDst->format)); 2086 rc = vmsvga3dBackCreateTexture(p State, pContext, pContext->id, pSurfaceDst);2095 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, pContext->id, pSurfaceDst); 2087 2096 AssertRCReturn(rc, rc); 2088 2097 } … … 2353 2362 * Surfaces are created when needed. 2354 2363 * 2355 * @param p State The VMSVGA3d state.2364 * @param pThisCC The device context. 2356 2365 * @param pContext The context. 2357 2366 * @param idAssociatedContext Probably the same as pContext->id. 2358 2367 * @param pSurface The surface to create the texture for. 2359 2368 */ 2360 int vmsvga3dBackCreateTexture(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext,2369 static int vmsvga3dBackCreateTexture(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext, 2361 2370 PVMSVGA3DSURFACE pSurface) 2362 2371 { 2372 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 2373 2363 2374 RT_NOREF(idAssociatedContext); 2364 2375 … … 2649 2660 * @param pContext The VMSVGA3d context (already current for OGL). 2650 2661 */ 2651 int vmsvga3dBackSurfaceStretchBlt(PVGASTATE pThis, PVMSVGA3DSTATE pState,2662 static int vmsvga3dBackSurfaceStretchBlt(PVGASTATE pThis, PVMSVGA3DSTATE pState, 2652 2663 PVMSVGA3DSURFACE pDstSurface, uint32_t uDstFace, uint32_t uDstMipmap, SVGA3dBox const *pDstBox, 2653 2664 PVMSVGA3DSURFACE pSrcSurface, uint32_t uSrcFace, uint32_t uSrcMipmap, SVGA3dBox const *pSrcBox, … … 2852 2863 * @param iBox The current box number (for Direct 3D). 2853 2864 */ 2854 int vmsvga3dBackSurfaceDMACopyBox(PVGASTATE pThis, PVGASTATECC pThisCC, PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface,2865 static int vmsvga3dBackSurfaceDMACopyBox(PVGASTATE pThis, PVGASTATECC pThisCC, PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface, 2855 2866 PVMSVGA3DMIPMAPLEVEL pMipLevel, uint32_t uHostFace, uint32_t uHostMipmap, 2856 2867 SVGAGuestPtr GuestPtr, uint32_t cbGuestPitch, SVGA3dTransferType transfer, … … 3138 3149 } 3139 3150 3140 int vmsvga3dGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter)3151 static int vmsvga3dBackGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter) 3141 3152 { 3142 3153 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 3166 3177 /* Unknown surface type; turn it into a texture. */ 3167 3178 LogFunc(("unknown src surface id=%x type=%d format=%d -> create texture\n", sid, pSurface->surfaceFlags, pSurface->format)); 3168 rc = vmsvga3dBackCreateTexture(p State, pContext, cid, pSurface);3179 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pSurface); 3169 3180 AssertRCReturn(rc, rc); 3170 3181 } … … 3271 3282 /* If one already exists with this id, then destroy it now. */ 3272 3283 if (pState->papContexts[cid]->id != SVGA3D_INVALID_ID) 3273 vmsvga3d ContextDestroy(pThisCC, cid);3284 vmsvga3dBackContextDestroy(pThisCC, cid); 3274 3285 3275 3286 pContext = pState->papContexts[cid]; … … 3730 3741 } while(0) 3731 3742 3732 int vmsvga3dBackDefineScreen(PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen)3743 static int vmsvga3dBackDefineScreen(PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen) 3733 3744 { 3734 3745 LogRel4(("VMSVGA: vmsvga3dBackDefineScreen: screen %u\n", pScreen->idScreen)); … … 3836 3847 } 3837 3848 3838 int vmsvga3dBackDestroyScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen)3849 static int vmsvga3dBackDestroyScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen) 3839 3850 { 3840 3851 LogRel4(("VMSVGA: vmsvga3dBackDestroyScreen: screen %u\n", pScreen->idScreen)); … … 3862 3873 3863 3874 /* Blit a surface to the GLX pixmap. */ 3864 int vmsvga3dBackSurfaceBlitToScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen,3875 static int vmsvga3dBackSurfaceBlitToScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, 3865 3876 SVGASignedRect destRect, SVGA3dSurfaceImageId srcImage, 3866 3877 SVGASignedRect srcRect, uint32_t cRects, SVGASignedRect *paRects) … … 3879 3890 { 3880 3891 LogFunc(("src sid=%u flags=0x%x format=%d -> create texture\n", srcImage.sid, pSurface->surfaceFlags, pSurface->format)); 3881 rc = vmsvga3dBackCreateTexture(p State, &pState->SharedCtx, VMSVGA3D_SHARED_CTX_ID, pSurface);3892 rc = vmsvga3dBackCreateTexture(pThisCC, &pState->SharedCtx, VMSVGA3D_SHARED_CTX_ID, pSurface); 3882 3893 AssertRCReturn(rc, rc); 3883 3894 } … … 3955 3966 #else /* !RT_OS_LINUX */ 3956 3967 3957 int vmsvga3dBackDefineScreen(PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen)3968 static int vmsvga3dBackDefineScreen(PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen) 3958 3969 { 3959 3970 RT_NOREF(pThis, pThisCC, pScreen); … … 3961 3972 } 3962 3973 3963 int vmsvga3dBackDestroyScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen)3974 static int vmsvga3dBackDestroyScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen) 3964 3975 { 3965 3976 RT_NOREF(pThisCC, pScreen); … … 3967 3978 } 3968 3979 3969 int vmsvga3dBackSurfaceBlitToScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen,3980 static int vmsvga3dBackSurfaceBlitToScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, 3970 3981 SVGASignedRect destRect, SVGA3dSurfaceImageId srcImage, 3971 3982 SVGASignedRect srcRect, uint32_t cRects, SVGASignedRect *paRects) … … 3983 3994 * @param cid Context id 3984 3995 */ 3985 int vmsvga3dContextDefine(PVGASTATECC pThisCC, uint32_t cid)3996 static int vmsvga3dBackContextDefine(PVGASTATECC pThisCC, uint32_t cid) 3986 3997 { 3987 3998 return vmsvga3dContextDefineOgl(pThisCC, cid, 0/*fFlags*/); … … 4016 4027 { 4017 4028 if (pContext->paPixelShader[i].id != SVGA3D_INVALID_ID) 4018 vmsvga3d ShaderDestroy(pThisCC, pContext->paPixelShader[i].cid, pContext->paPixelShader[i].id, pContext->paPixelShader[i].type);4029 vmsvga3dBackShaderDestroy(pThisCC, pContext->paPixelShader[i].cid, pContext->paPixelShader[i].id, pContext->paPixelShader[i].type); 4019 4030 } 4020 4031 if (pContext->paPixelShader) … … 4025 4036 { 4026 4037 if (pContext->paVertexShader[i].id != SVGA3D_INVALID_ID) 4027 vmsvga3d ShaderDestroy(pThisCC, pContext->paVertexShader[i].cid, pContext->paVertexShader[i].id, pContext->paVertexShader[i].type);4038 vmsvga3dBackShaderDestroy(pThisCC, pContext->paVertexShader[i].cid, pContext->paVertexShader[i].id, pContext->paVertexShader[i].type); 4028 4039 } 4029 4040 if (pContext->paVertexShader) … … 4061 4072 } 4062 4073 4063 vmsvga3d OcclusionQueryDelete(pState, pContext);4074 vmsvga3dBackOcclusionQueryDelete(pThisCC, pContext); 4064 4075 4065 4076 #ifdef RT_OS_WINDOWS … … 4093 4104 * @param cid Context id 4094 4105 */ 4095 int vmsvga3dContextDestroy(PVGASTATECC pThisCC, uint32_t cid)4106 static int vmsvga3dBackContextDestroy(PVGASTATECC pThisCC, uint32_t cid) 4096 4107 { 4097 4108 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 4110 4121 4111 4122 /** 4112 * Worker for vmsvga3d ChangeMode that resizes a context.4123 * Worker for vmsvga3dBackChangeMode that resizes a context. 4113 4124 * 4114 4125 * @param pState The VMSVGA3d state. … … 4122 4133 4123 4134 /* Handle resize */ 4124 int vmsvga3dChangeMode(PVGASTATECC pThisCC)4135 static int vmsvga3dBackChangeMode(PVGASTATECC pThisCC) 4125 4136 { 4126 4137 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 4143 4154 4144 4155 4145 int vmsvga3dSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16])4156 static int vmsvga3dBackSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16]) 4146 4157 { 4147 4158 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 4235 4246 { 4236 4247 if (pContext->state.aClipPlane[j].fValid == true) 4237 vmsvga3d SetClipPlane(pThisCC, cid, j, pContext->state.aClipPlane[j].plane);4248 vmsvga3dBackSetClipPlane(pThisCC, cid, j, pContext->state.aClipPlane[j].plane); 4238 4249 } 4239 4250 … … 4242 4253 { 4243 4254 if (pContext->state.aLightData[j].fValidData == true) 4244 vmsvga3d SetLightData(pThisCC, cid, j, &pContext->state.aLightData[j].data);4255 vmsvga3dBackSetLightData(pThisCC, cid, j, &pContext->state.aLightData[j].data); 4245 4256 } 4246 4257 } … … 4249 4260 } 4250 4261 4251 int vmsvga3dSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange)4262 static int vmsvga3dBackSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange) 4252 4263 { 4253 4264 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 4387 4398 } 4388 4399 4389 int vmsvga3dSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState)4400 static int vmsvga3dBackSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState) 4390 4401 { 4391 4402 uint32_t val = UINT32_MAX; /* Shut up MSC. */ … … 4685 4696 } 4686 4697 4687 rc = vmsvga3d SetRenderState(pThisCC, cid, 2, renderstate);4698 rc = vmsvga3dBackSetRenderState(pThisCC, cid, 2, renderstate); 4688 4699 AssertRCReturn(rc, rc); 4689 4700 … … 4856 4867 } 4857 4868 4858 rc = vmsvga3d SetRenderState(pThisCC, cid, RT_ELEMENTS(renderstate), renderstate);4869 rc = vmsvga3dBackSetRenderState(pThisCC, cid, RT_ELEMENTS(renderstate), renderstate); 4859 4870 AssertRCReturn(rc, rc); 4860 4871 … … 5250 5261 } 5251 5262 5252 int vmsvga3dSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target)5263 static int vmsvga3dBackSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target) 5253 5264 { 5254 5265 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 5311 5322 LogFunc(("create depth texture to be used as render target; surface id=%x type=%d format=%d -> create texture\n", 5312 5323 target.sid, pRenderTarget->surfaceFlags, pRenderTarget->format)); 5313 rc = vmsvga3dBackCreateTexture(p State, pContext, cid, pRenderTarget);5324 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pRenderTarget); 5314 5325 AssertRCReturn(rc, rc); 5315 5326 } … … 5380 5391 { 5381 5392 Log(("vmsvga3dSetRenderTarget: create texture to be used as render target; surface id=%x type=%d format=%d -> create texture\n", target.sid, pRenderTarget->surfaceFlags, pRenderTarget->format)); 5382 rc = vmsvga3dBackCreateTexture(p State, pContext, cid, pRenderTarget);5393 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pRenderTarget); 5383 5394 AssertRCReturn(rc, rc); 5384 5395 } … … 5582 5593 } 5583 5594 5584 int vmsvga3dSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState)5595 static int vmsvga3dBackSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState) 5585 5596 { 5586 5597 GLenum val = ~(GLenum)0; /* Shut up MSC. */ … … 5722 5733 Log(("CreateTexture (%d,%d) levels=%d\n", 5723 5734 pSurface->paMipmapLevels[0].mipmapSize.width, pSurface->paMipmapLevels[0].mipmapSize.height, pSurface->cLevels)); 5724 rc = vmsvga3dBackCreateTexture(p State, pContext, cid, pSurface);5735 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pSurface); 5725 5736 AssertRCReturn(rc, rc); 5726 5737 } … … 5748 5759 if ( pTextureStateIter->name != SVGA3D_TS_INVALID 5749 5760 && pTextureStateIter->name != SVGA3D_TS_BIND_TEXTURE) 5750 vmsvga3d SetTextureState(pThisCC, pContext->id, 1, pTextureStateIter);5761 vmsvga3dBackSetTextureState(pThisCC, pContext->id, 1, pTextureStateIter); 5751 5762 } 5752 5763 } … … 5916 5927 } 5917 5928 5918 int vmsvga3dSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial)5929 static int vmsvga3dBackSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial) 5919 5930 { 5920 5931 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 5965 5976 5966 5977 /** @todo Move into separate library as we are using logic from Wine here. */ 5967 int vmsvga3dSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData)5978 static int vmsvga3dBackSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData) 5968 5979 { 5969 5980 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 6138 6149 } 6139 6150 6140 int vmsvga3dSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled)6151 static int vmsvga3dBackSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled) 6141 6152 { 6142 6153 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 6163 6174 /* Load the default settings if none have been set yet. */ 6164 6175 if (!pContext->state.aLightData[index].fValidData) 6165 vmsvga3d SetLightData(pThisCC, cid, index, (SVGA3dLightData *)&vmsvga3d_default_light);6176 vmsvga3dBackSetLightData(pThisCC, cid, index, (SVGA3dLightData *)&vmsvga3d_default_light); 6166 6177 } 6167 6178 glEnable(GL_LIGHT0 + index); … … 6174 6185 } 6175 6186 6176 int vmsvga3dSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)6187 static int vmsvga3dBackSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 6177 6188 { 6178 6189 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 6197 6208 /* Reset the projection matrix as that relies on the viewport setting. */ 6198 6209 if (pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].fValid == true) 6199 vmsvga3d SetTransform(pThisCC, cid, SVGA3D_TRANSFORM_PROJECTION,6210 vmsvga3dBackSetTransform(pThisCC, cid, SVGA3D_TRANSFORM_PROJECTION, 6200 6211 pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].matrix); 6201 6212 else … … 6209 6220 matrix[10] = 1.0; 6210 6221 matrix[15] = 1.0; 6211 vmsvga3d SetTransform(pThisCC, cid, SVGA3D_TRANSFORM_PROJECTION, matrix);6222 vmsvga3dBackSetTransform(pThisCC, cid, SVGA3D_TRANSFORM_PROJECTION, matrix); 6212 6223 } 6213 6224 … … 6215 6226 } 6216 6227 6217 int vmsvga3dSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4])6228 static int vmsvga3dBackSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4]) 6218 6229 { 6219 6230 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 6246 6257 } 6247 6258 6248 int vmsvga3dSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)6259 static int vmsvga3dBackSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 6249 6260 { 6250 6261 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 6278 6289 } 6279 6290 6280 int vmsvga3dCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil,6281 uint32_t cRects, SVGA3dRect *pRect)6291 static int vmsvga3dBackCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil, 6292 uint32_t cRects, SVGA3dRect *pRect) 6282 6293 { 6283 6294 GLbitfield mask = 0; … … 6708 6719 /* Reset the view matrix (also takes the world matrix into account). */ 6709 6720 if (pContext->state.aTransformState[SVGA3D_TRANSFORM_VIEW].fValid == true) 6710 rc = vmsvga3d SetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_VIEW,6721 rc = vmsvga3dBackSetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_VIEW, 6711 6722 pContext->state.aTransformState[SVGA3D_TRANSFORM_VIEW].matrix); 6712 6723 else … … 6720 6731 matrix[10] = 1.0; 6721 6732 matrix[15] = 1.0; 6722 rc = vmsvga3d SetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_VIEW, matrix);6733 rc = vmsvga3dBackSetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_VIEW, matrix); 6723 6734 } 6724 6735 … … 6726 6737 if (pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].fValid == true) 6727 6738 { 6728 rc = vmsvga3d SetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_PROJECTION, pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].matrix);6739 rc = vmsvga3dBackSetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_PROJECTION, pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].matrix); 6729 6740 } 6730 6741 else … … 6738 6749 matrix[10] = 1.0; 6739 6750 matrix[15] = 1.0; 6740 rc = vmsvga3d SetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_PROJECTION, matrix);6751 rc = vmsvga3dBackSetTransform(pThisCC, pContext->id, SVGA3D_TRANSFORM_PROJECTION, matrix); 6741 6752 } 6742 6753 AssertRC(rc); … … 7024 7035 } 7025 7036 7026 int vmsvga3dDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl,7037 static int vmsvga3dBackDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl, 7027 7038 uint32_t numRanges, SVGA3dPrimitiveRange *pRange, uint32_t cVertexDivisor, 7028 7039 SVGA3dVertexDivisor *pVertexDivisor) … … 7340 7351 7341 7352 7342 int vmsvga3dShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData)7353 static int vmsvga3dBackShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData) 7343 7354 { 7344 7355 PVMSVGA3DSHADER pShader; … … 7378 7389 /* If one already exists with this id, then destroy it now. */ 7379 7390 if (pContext->paVertexShader[shid].id != SVGA3D_INVALID_ID) 7380 vmsvga3d ShaderDestroy(pThisCC, cid, shid, pContext->paVertexShader[shid].type);7391 vmsvga3dBackShaderDestroy(pThisCC, cid, shid, pContext->paVertexShader[shid].type); 7381 7392 7382 7393 pShader = &pContext->paVertexShader[shid]; … … 7397 7408 /* If one already exists with this id, then destroy it now. */ 7398 7409 if (pContext->paPixelShader[shid].id != SVGA3D_INVALID_ID) 7399 vmsvga3d ShaderDestroy(pThisCC, cid, shid, pContext->paPixelShader[shid].type);7410 vmsvga3dBackShaderDestroy(pThisCC, cid, shid, pContext->paPixelShader[shid].type); 7400 7411 7401 7412 pShader = &pContext->paPixelShader[shid]; … … 7448 7459 } 7449 7460 7450 int vmsvga3dShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type)7461 static int vmsvga3dBackShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type) 7451 7462 { 7452 7463 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 7497 7508 } 7498 7509 7499 int vmsvga3dShaderSet(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid)7510 static int vmsvga3dBackShaderSet(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid) 7500 7511 { 7501 7512 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 7568 7579 } 7569 7580 7570 int vmsvga3dShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues)7581 static int vmsvga3dBackShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues) 7571 7582 { 7572 7583 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 7660 7671 } 7661 7672 7662 int vmsvga3dOcclusionQueryCreate(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext) 7663 { 7673 static int vmsvga3dBackOcclusionQueryCreate(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 7674 { 7675 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 7664 7676 AssertReturn(pState->ext.glGenQueries, VERR_NOT_SUPPORTED); 7665 7677 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext); … … 7673 7685 } 7674 7686 7675 int vmsvga3dOcclusionQueryDelete(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext) 7676 { 7687 static int vmsvga3dBackOcclusionQueryDelete(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 7688 { 7689 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 7677 7690 AssertReturn(pState->ext.glDeleteQueries, VERR_NOT_SUPPORTED); 7678 7691 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext); … … 7685 7698 } 7686 7699 7687 int vmsvga3dOcclusionQueryBegin(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext) 7688 { 7700 static int vmsvga3dBackOcclusionQueryBegin(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 7701 { 7702 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 7689 7703 AssertReturn(pState->ext.glBeginQuery, VERR_NOT_SUPPORTED); 7690 7704 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext); … … 7695 7709 } 7696 7710 7697 int vmsvga3dOcclusionQueryEnd(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext) 7698 { 7711 static int vmsvga3dBackOcclusionQueryEnd(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 7712 { 7713 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 7699 7714 AssertReturn(pState->ext.glEndQuery, VERR_NOT_SUPPORTED); 7700 7715 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext); … … 7705 7720 } 7706 7721 7707 int vmsvga3dOcclusionQueryGetData(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t *pu32Pixels) 7708 { 7722 static int vmsvga3dBackOcclusionQueryGetData(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t *pu32Pixels) 7723 { 7724 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 7709 7725 AssertReturn(pState->ext.glGetQueryObjectuiv, VERR_NOT_SUPPORTED); 7710 7726 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext); … … 7720 7736 int vmsvga3dQueryInterface(PVGASTATECC pThisCC, char const *pszInterfaceName, void *pvInterfaceFuncs, size_t cbInterfaceFuncs) 7721 7737 { 7722 RT_NOREF(pThisCC, pszInterfaceName, pvInterfaceFuncs, cbInterfaceFuncs); 7723 return VERR_NOT_IMPLEMENTED; 7724 } 7738 RT_NOREF(pThisCC); 7739 7740 int rc = VINF_SUCCESS; 7741 if (RTStrCmp(pszInterfaceName, VMSVGA3D_BACKEND_INTERFACE_NAME_3D) == 0) 7742 { 7743 if (cbInterfaceFuncs == sizeof(VMSVGA3DBACKENDFUNCS3D)) 7744 { 7745 if (pvInterfaceFuncs) 7746 { 7747 VMSVGA3DBACKENDFUNCS3D *p = (VMSVGA3DBACKENDFUNCS3D *)pvInterfaceFuncs; 7748 p->pfnInit = vmsvga3dBackInit; 7749 p->pfnPowerOn = vmsvga3dBackPowerOn; 7750 p->pfnTerminate = vmsvga3dBackTerminate; 7751 p->pfnReset = vmsvga3dBackReset; 7752 p->pfnQueryCaps = vmsvga3dBackQueryCaps; 7753 p->pfnChangeMode = vmsvga3dBackChangeMode; 7754 p->pfnCreateTexture = vmsvga3dBackCreateTexture; 7755 p->pfnSurfaceDestroy = vmsvga3dBackSurfaceDestroy; 7756 p->pfnSurfaceCopy = vmsvga3dBackSurfaceCopy; 7757 p->pfnSurfaceDMACopyBox = vmsvga3dBackSurfaceDMACopyBox; 7758 p->pfnSurfaceStretchBlt = vmsvga3dBackSurfaceStretchBlt; 7759 p->pfnUpdateHostScreenViewport = vmsvga3dBackUpdateHostScreenViewport; 7760 p->pfnDefineScreen = vmsvga3dBackDefineScreen; 7761 p->pfnDestroyScreen = vmsvga3dBackDestroyScreen; 7762 p->pfnSurfaceBlitToScreen = vmsvga3dBackSurfaceBlitToScreen; 7763 } 7764 } 7765 else 7766 { 7767 AssertFailed(); 7768 rc = VERR_INVALID_PARAMETER; 7769 } 7770 } 7771 else if (RTStrCmp(pszInterfaceName, VMSVGA3D_BACKEND_INTERFACE_NAME_VGPU9) == 0) 7772 { 7773 if (cbInterfaceFuncs == sizeof(VMSVGA3DBACKENDFUNCSVGPU9)) 7774 { 7775 if (pvInterfaceFuncs) 7776 { 7777 VMSVGA3DBACKENDFUNCSVGPU9 *p = (VMSVGA3DBACKENDFUNCSVGPU9 *)pvInterfaceFuncs; 7778 p->pfnContextDefine = vmsvga3dBackContextDefine; 7779 p->pfnContextDestroy = vmsvga3dBackContextDestroy; 7780 p->pfnSetTransform = vmsvga3dBackSetTransform; 7781 p->pfnSetZRange = vmsvga3dBackSetZRange; 7782 p->pfnSetRenderState = vmsvga3dBackSetRenderState; 7783 p->pfnSetRenderTarget = vmsvga3dBackSetRenderTarget; 7784 p->pfnSetTextureState = vmsvga3dBackSetTextureState; 7785 p->pfnSetMaterial = vmsvga3dBackSetMaterial; 7786 p->pfnSetLightData = vmsvga3dBackSetLightData; 7787 p->pfnSetLightEnabled = vmsvga3dBackSetLightEnabled; 7788 p->pfnSetViewPort = vmsvga3dBackSetViewPort; 7789 p->pfnSetClipPlane = vmsvga3dBackSetClipPlane; 7790 p->pfnCommandClear = vmsvga3dBackCommandClear; 7791 p->pfnDrawPrimitives = vmsvga3dBackDrawPrimitives; 7792 p->pfnSetScissorRect = vmsvga3dBackSetScissorRect; 7793 p->pfnGenerateMipmaps = vmsvga3dBackGenerateMipmaps; 7794 p->pfnShaderDefine = vmsvga3dBackShaderDefine; 7795 p->pfnShaderDestroy = vmsvga3dBackShaderDestroy; 7796 p->pfnShaderSet = vmsvga3dBackShaderSet; 7797 p->pfnShaderSetConst = vmsvga3dBackShaderSetConst; 7798 p->pfnOcclusionQueryCreate = vmsvga3dBackOcclusionQueryCreate; 7799 p->pfnOcclusionQueryDelete = vmsvga3dBackOcclusionQueryDelete; 7800 p->pfnOcclusionQueryBegin = vmsvga3dBackOcclusionQueryBegin; 7801 p->pfnOcclusionQueryEnd = vmsvga3dBackOcclusionQueryEnd; 7802 p->pfnOcclusionQueryGetData = vmsvga3dBackOcclusionQueryGetData; 7803 } 7804 } 7805 else 7806 { 7807 AssertFailed(); 7808 rc = VERR_INVALID_PARAMETER; 7809 } 7810 } 7811 else 7812 rc = VERR_NOT_IMPLEMENTED; 7813 return rc; 7814 } -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-savedstate.cpp
r88787 r89121 233 233 LogFlow(("vmsvga3dLoadExec:\n")); 234 234 235 #ifndef RT_OS_DARWIN /** @todo r=bird: this is normally done on the EMT, so for DARWIN we do that when loading saved state too now. See DevVGA-SVGA.cpp */236 /* Must initialize now as the recreation calls below rely on an initialized 3d subsystem. */237 vmsvga3dPowerOn(pDevIns, pThis, pThisCC);238 #endif239 240 235 /* Get the generic 3d state first. */ 241 236 rc = pHlp->pfnSSMGetStructEx(pSSM, pState, sizeof(*pState), 0, g_aVMSVGA3DSTATEFields, NULL); … … 269 264 if (pContext->id != VMSVGA3D_SHARED_CTX_ID) 270 265 { 266 /** @todo Separate backend */ 271 267 rc = vmsvga3dContextDefineOgl(pThisCC, VMSVGA3D_SHARED_CTX_ID, VMSVGA3D_DEF_CTX_F_SHARED_CTX); 272 268 AssertRCReturn(rc, rc); … … 445 441 case VMSVGA3DQUERYSTATE_SIGNALED: 446 442 /* Create the query object. */ 447 vmsvga3d OcclusionQueryCreate(pState, pContext);443 vmsvga3dQueryCreate(pThisCC, cid, SVGA3D_QUERYTYPE_OCCLUSION); 448 444 449 445 /* Update result and state. */ … … 584 580 static int vmsvga3dSaveContext(PCPDMDEVHLPR3 pHlp, PVGASTATECC pThisCC, PSSMHANDLE pSSM, PVMSVGA3DCONTEXT pContext) 585 581 { 586 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;587 582 uint32_t cid = pContext->id; 588 583 … … 687 682 } 688 683 689 switch (pContext->occlusion.enmQueryState) 684 /* Save the current query state, because code below can change it. */ 685 VMSVGA3DQUERYSTATE const enmQueryState = pContext->occlusion.enmQueryState; 686 switch (enmQueryState) 690 687 { 691 688 case VMSVGA3DQUERYSTATE_BUILDING: 692 689 /* Stop collecting data. Fetch partial result. Save result. */ 693 vmsvga3d OcclusionQueryEnd(pState, pContext);690 vmsvga3dQueryEnd(pThisCC, cid, SVGA3D_QUERYTYPE_OCCLUSION); 694 691 RT_FALL_THRU(); 695 692 case VMSVGA3DQUERYSTATE_ISSUED: 696 693 /* Fetch result. Save result. */ 697 694 pContext->occlusion.u32QueryResult = 0; 698 vmsvga3d OcclusionQueryGetData(pState, pContext, &pContext->occlusion.u32QueryResult);695 vmsvga3dQueryWait(pThisCC, cid, SVGA3D_QUERYTYPE_OCCLUSION, NULL, NULL); 699 696 RT_FALL_THRU(); 700 697 case VMSVGA3DQUERYSTATE_SIGNALED: … … 710 707 break; 711 708 } 709 710 /* Restore the current actual state. */ 711 pContext->occlusion.enmQueryState = enmQueryState; 712 712 713 713 rc = pHlp->pfnSSMPutStructEx(pSSM, &pContext->occlusion, sizeof(pContext->occlusion), 0, g_aVMSVGA3DQUERYFields, NULL); -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win-dx.cpp
r88904 r89121 185 185 DXDEVICE device; /* Device for the VMSVGA3D context independent operation. */ 186 186 } VMSVGA3DBACKEND; 187 188 189 static void vmsvga3dBackSurfaceDestroy(PVGASTATECC pThisCC, PVMSVGA3DSURFACE pSurface); 187 190 188 191 … … 1163 1166 1164 1167 1165 static int vmsvga3dBackSurfaceCreateScreenTarget(PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface) 1166 { 1167 PVMSVGA3DBACKEND pBackend = pState->pBackend; 1168 static int vmsvga3dBackSurfaceCreateScreenTarget(PVGASTATECC pThisCC, PVMSVGA3DSURFACE pSurface) 1169 { 1170 PVMSVGA3DSTATE p3dState = pThisCC->svga.p3dState; 1171 AssertReturn(p3dState, VERR_INVALID_STATE); 1172 1173 PVMSVGA3DBACKEND pBackend = p3dState->pBackend; 1168 1174 AssertReturn(pBackend, VERR_INVALID_STATE); 1169 1175 … … 1177 1183 { 1178 1184 AssertFailed(); /* Should the function not be used like that? */ 1179 vmsvga3dBackSurfaceDestroy(p State, pSurface);1185 vmsvga3dBackSurfaceDestroy(pThisCC, pSurface); 1180 1186 } 1181 1187 … … 1277 1283 1278 1284 1279 static int vmsvga3dBackSurfaceCreateTexture(PVMSVGA3DSTATE p3dState, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface) 1280 { 1285 static int vmsvga3dBackSurfaceCreateTexture(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface) 1286 { 1287 PVMSVGA3DSTATE p3dState = pThisCC->svga.p3dState; 1288 AssertReturn(p3dState, VERR_INVALID_STATE); 1289 1281 1290 DXDEVICE *pDevice = &pDXContext->pBackendDXContext->device; 1282 1291 AssertReturn(pDevice->pDevice, VERR_INVALID_STATE); … … 1285 1294 { 1286 1295 AssertFailed(); /** @todo Should the function not be used like that? */ 1287 vmsvga3dBackSurfaceDestroy(p 3dState, pSurface);1296 vmsvga3dBackSurfaceDestroy(pThisCC, pSurface); 1288 1297 } 1289 1298 … … 1498 1507 1499 1508 1500 static int vmsvga3dBackSurfaceCreateDepthStencilTexture(PV MSVGA3DSTATE p3dState, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface)1509 static int vmsvga3dBackSurfaceCreateDepthStencilTexture(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface) 1501 1510 { 1502 1511 DXDEVICE *pDevice = &pDXContext->pBackendDXContext->device; … … 1506 1515 { 1507 1516 AssertFailed(); /** @todo Should the function not be used like that? */ 1508 vmsvga3dBackSurfaceDestroy(p 3dState, pSurface);1517 vmsvga3dBackSurfaceDestroy(pThisCC, pSurface); 1509 1518 } 1510 1519 … … 1552 1561 1553 1562 1554 static int vmsvga3dBackSurfaceCreateBuffer(PV MSVGA3DSTATE p3dState, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface)1563 static int vmsvga3dBackSurfaceCreateBuffer(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface) 1555 1564 { 1556 1565 DXDEVICE *pDevice = &pDXContext->pBackendDXContext->device; … … 1569 1578 { 1570 1579 AssertFailed(); /** @todo Should the function not be used like that? */ 1571 vmsvga3dBackSurfaceDestroy(p 3dState, pSurface);1580 vmsvga3dBackSurfaceDestroy(pThisCC, pSurface); 1572 1581 } 1573 1582 … … 1609 1618 1610 1619 1611 static int vmsvga3dBackSurfaceCreateConstantBuffer(PV MSVGA3DSTATE p3dState, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface)1620 static int vmsvga3dBackSurfaceCreateConstantBuffer(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface) 1612 1621 { 1613 1622 DXDEVICE *pDevice = &pDXContext->pBackendDXContext->device; … … 1620 1629 { 1621 1630 AssertFailed(); /** @todo Should the function not be used like that? */ 1622 vmsvga3dBackSurfaceDestroy(p 3dState, pSurface);1631 vmsvga3dBackSurfaceDestroy(pThisCC, pSurface); 1623 1632 } 1624 1633 … … 1689 1698 1690 1699 1691 static int vmsvga3dBackSurfaceCreate(PV MSVGA3DSTATE p3dState, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface)1700 static int vmsvga3dBackSurfaceCreate(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface) 1692 1701 { 1693 1702 DXDEVICE *pDevice = &pDXContext->pBackendDXContext->device; … … 1697 1706 { 1698 1707 AssertFailed(); /** @todo Should the function not be used like that? */ 1699 vmsvga3dBackSurfaceDestroy(p 3dState, pSurface);1708 vmsvga3dBackSurfaceDestroy(pThisCC, pSurface); 1700 1709 } 1701 1710 … … 1755 1764 1756 1765 1757 int vmsvga3dInit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC)1766 static int vmsvga3dBackInit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC) 1758 1767 { 1759 1768 RT_NOREF(pDevIns, pThis); … … 1787 1796 1788 1797 1789 int vmsvga3dPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC)1798 static int vmsvga3dBackPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC) 1790 1799 { 1791 1800 RT_NOREF(pDevIns, pThis); … … 1802 1811 1803 1812 1804 int vmsvga3dTerminate(PVGASTATECC pThisCC)1813 static int vmsvga3dBackTerminate(PVGASTATECC pThisCC) 1805 1814 { 1806 1815 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 1819 1828 1820 1829 1821 int vmsvga3dReset(PVGASTATECC pThisCC)1830 static int vmsvga3dBackReset(PVGASTATECC pThisCC) 1822 1831 { 1823 1832 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 1966 1975 1967 1976 1968 int vmsvga3dBackDefineScreen(PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen)1977 static int vmsvga3dBackDefineScreen(PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen) 1969 1978 { 1970 1979 RT_NOREF(pThis, pThisCC, pScreen); … … 2010 2019 2011 2020 2012 int vmsvga3dBackDestroyScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen)2021 static int vmsvga3dBackDestroyScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen) 2013 2022 { 2014 2023 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 2028 2037 2029 2038 2030 int vmsvga3dBackSurfaceBlitToScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen,2039 static int vmsvga3dBackSurfaceBlitToScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, 2031 2040 SVGASignedRect destRect, SVGA3dSurfaceImageId srcImage, 2032 2041 SVGASignedRect srcRect, uint32_t cRects, SVGASignedRect *paRects) … … 2114 2123 AssertRCReturn(rc, rc); 2115 2124 2116 rc = vmsvga3dBackSurfaceCreate(p State, pDXContext, pSurface);2125 rc = vmsvga3dBackSurfaceCreate(pThisCC, pDXContext, pSurface); 2117 2126 AssertRCReturn(rc, rc); 2118 2127 … … 2397 2406 { 2398 2407 /* Create the actual texture. */ 2399 rc = vmsvga3dBackSurfaceCreateScreenTarget(p State, pSurface);2408 rc = vmsvga3dBackSurfaceCreateScreenTarget(pThisCC, pSurface); 2400 2409 AssertRCReturn(rc, rc); 2401 2410 } … … 2495 2504 2496 2505 2497 void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport) 2498 { 2499 RT_NOREF(pThisCC, idScreen, pOldViewport); 2500 /** @todo Scroll the screen content without requiring the guest to redraw. */ 2501 } 2502 2503 2504 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val) 2506 /* 2507 * 2508 * 3D interface. 2509 * 2510 */ 2511 2512 static int vmsvga3dBackQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val) 2505 2513 { 2506 2514 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 3060 3068 3061 3069 3062 /* Handle resize */ 3063 int vmsvga3dChangeMode(PVGASTATECC pThisCC) 3070 static int vmsvga3dBackChangeMode(PVGASTATECC pThisCC) 3064 3071 { 3065 3072 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 3070 3077 3071 3078 3072 int vmsvga3dSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src,3073 uint32_t cCopyBoxes, SVGA3dCopyBox *pBox)3079 static int vmsvga3dBackSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src, 3080 uint32_t cCopyBoxes, SVGA3dCopyBox *pBox) 3074 3081 { 3075 3082 RT_NOREF(dest, src, cCopyBoxes, pBox); … … 3082 3089 } 3083 3090 3091 3092 static void vmsvga3dBackUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport) 3093 { 3094 RT_NOREF(pThisCC, idScreen, pOldViewport); 3095 /** @todo Scroll the screen content without requiring the guest to redraw. */ 3096 } 3084 3097 3085 3098 /** … … 3090 3103 * @param cid Context id 3091 3104 */ 3092 int vmsvga3dContextDefine(PVGASTATECC pThisCC, uint32_t cid)3105 static int vmsvga3dBackContextDefine(PVGASTATECC pThisCC, uint32_t cid) 3093 3106 { 3094 3107 RT_NOREF(cid); … … 3109 3122 * @param cid Context id 3110 3123 */ 3111 int vmsvga3dContextDestroy(PVGASTATECC pThisCC, uint32_t cid)3124 static int vmsvga3dBackContextDestroy(PVGASTATECC pThisCC, uint32_t cid) 3112 3125 { 3113 3126 RT_NOREF(cid); … … 3121 3134 3122 3135 3123 int vmsvga3dSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16])3136 static int vmsvga3dBackSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16]) 3124 3137 { 3125 3138 RT_NOREF(cid, type, matrix); … … 3133 3146 3134 3147 3135 int vmsvga3dSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange)3148 static int vmsvga3dBackSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange) 3136 3149 { 3137 3150 RT_NOREF(cid, zRange); … … 3145 3158 3146 3159 3147 int vmsvga3dSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState)3160 static int vmsvga3dBackSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState) 3148 3161 { 3149 3162 RT_NOREF(cid, cRenderStates, pRenderState); … … 3157 3170 3158 3171 3159 int vmsvga3dSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target)3172 static int vmsvga3dBackSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target) 3160 3173 { 3161 3174 RT_NOREF(cid, type, target); … … 3169 3182 3170 3183 3171 int vmsvga3dSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState)3184 static int vmsvga3dBackSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState) 3172 3185 { 3173 3186 RT_NOREF(cid, cTextureStates, pTextureState); … … 3181 3194 3182 3195 3183 int vmsvga3dSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial)3196 static int vmsvga3dBackSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial) 3184 3197 { 3185 3198 RT_NOREF(cid, face, pMaterial); … … 3193 3206 3194 3207 3195 int vmsvga3dSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData)3208 static int vmsvga3dBackSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData) 3196 3209 { 3197 3210 RT_NOREF(cid, index, pData); … … 3205 3218 3206 3219 3207 int vmsvga3dSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled)3220 static int vmsvga3dBackSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled) 3208 3221 { 3209 3222 RT_NOREF(cid, index, enabled); … … 3217 3230 3218 3231 3219 int vmsvga3dSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)3232 static int vmsvga3dBackSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 3220 3233 { 3221 3234 RT_NOREF(cid, pRect); … … 3229 3242 3230 3243 3231 int vmsvga3dSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4])3244 static int vmsvga3dBackSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4]) 3232 3245 { 3233 3246 RT_NOREF(cid, index, plane); … … 3241 3254 3242 3255 3243 int vmsvga3dCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth,3244 uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect)3256 static int vmsvga3dBackCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, 3257 uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect) 3245 3258 { 3246 3259 /* From SVGA3D_BeginClear comments: … … 3262 3275 3263 3276 3264 int vmsvga3dDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl,3265 uint32_t numRanges, SVGA3dPrimitiveRange *pRange,3266 uint32_t cVertexDivisor, SVGA3dVertexDivisor *pVertexDivisor)3277 static int vmsvga3dBackDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl, 3278 uint32_t numRanges, SVGA3dPrimitiveRange *pRange, 3279 uint32_t cVertexDivisor, SVGA3dVertexDivisor *pVertexDivisor) 3267 3280 { 3268 3281 RT_NOREF(cid, numVertexDecls, pVertexDecl, numRanges, pRange, cVertexDivisor, pVertexDivisor); … … 3276 3289 3277 3290 3278 int vmsvga3dSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)3291 static int vmsvga3dBackSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 3279 3292 { 3280 3293 RT_NOREF(cid, pRect); … … 3288 3301 3289 3302 3290 int vmsvga3dGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter)3303 static int vmsvga3dBackGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter) 3291 3304 { 3292 3305 RT_NOREF(sid, filter); … … 3300 3313 3301 3314 3302 int vmsvga3dShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type,3303 uint32_t cbData, uint32_t *pShaderData)3315 static int vmsvga3dBackShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type, 3316 uint32_t cbData, uint32_t *pShaderData) 3304 3317 { 3305 3318 RT_NOREF(cid, shid, type, cbData, pShaderData); … … 3313 3326 3314 3327 3315 int vmsvga3dShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type)3328 static int vmsvga3dBackShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type) 3316 3329 { 3317 3330 RT_NOREF(cid, shid, type); … … 3325 3338 3326 3339 3327 int vmsvga3dShaderSet(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid)3340 static int vmsvga3dBackShaderSet(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid) 3328 3341 { 3329 3342 RT_NOREF(pContext, cid, type, shid); … … 3337 3350 3338 3351 3339 int vmsvga3dShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type,3340 SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues)3352 static int vmsvga3dBackShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type, 3353 SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues) 3341 3354 { 3342 3355 RT_NOREF(cid, reg, type, ctype, cRegisters, pValues); … … 3356 3369 * @param pSurface The surface being destroyed. 3357 3370 */ 3358 void vmsvga3dBackSurfaceDestroy(PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface) 3359 { 3360 PVMSVGA3DBACKEND pBackend = pState->pBackend; 3361 AssertReturnVoid(pBackend); 3371 static void vmsvga3dBackSurfaceDestroy(PVGASTATECC pThisCC, PVMSVGA3DSURFACE pSurface) 3372 { 3373 RT_NOREF(pThisCC); 3362 3374 3363 3375 /* The caller should not use the function for system memory surfaces. */ … … 3409 3421 * @param pContext The VMSVGA3d context (already current for OGL). 3410 3422 */ 3411 int vmsvga3dBackSurfaceStretchBlt(PVGASTATE pThis, PVMSVGA3DSTATE pState,3423 static int vmsvga3dBackSurfaceStretchBlt(PVGASTATE pThis, PVMSVGA3DSTATE pState, 3412 3424 PVMSVGA3DSURFACE pDstSurface, uint32_t uDstFace, uint32_t uDstMipmap, SVGA3dBox const *pDstBox, 3413 3425 PVMSVGA3DSURFACE pSrcSurface, uint32_t uSrcFace, uint32_t uSrcMipmap, SVGA3dBox const *pSrcBox, … … 3441 3453 * @param iBox The current box number (for Direct 3D). 3442 3454 */ 3443 int vmsvga3dBackSurfaceDMACopyBox(PVGASTATE pThis, PVGASTATECC pThisCC, PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface,3455 static int vmsvga3dBackSurfaceDMACopyBox(PVGASTATE pThis, PVGASTATECC pThisCC, PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface, 3444 3456 PVMSVGA3DMIPMAPLEVEL pMipLevel, uint32_t uHostFace, uint32_t uHostMipmap, 3445 3457 SVGAGuestPtr GuestPtr, uint32_t cbGuestPitch, SVGA3dTransferType transfer, … … 3614 3626 * @param pSurface The surface to create the texture for. 3615 3627 */ 3616 int vmsvga3dBackCreateTexture(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext,3617 PVMSVGA3DSURFACE pSurface)3618 3619 { 3620 RT_NOREF(p State, pContext, idAssociatedContext, pSurface);3628 static int vmsvga3dBackCreateTexture(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext, 3629 PVMSVGA3DSURFACE pSurface) 3630 3631 { 3632 RT_NOREF(pThisCC, pContext, idAssociatedContext, pSurface); 3621 3633 3622 3634 AssertFailed(); … … 3625 3637 3626 3638 3627 int vmsvga3dOcclusionQueryCreate(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext)3628 { 3629 RT_NOREF(p State, pContext);3639 static int vmsvga3dBackOcclusionQueryCreate(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 3640 { 3641 RT_NOREF(pThisCC, pContext); 3630 3642 AssertFailed(); 3631 3643 return VINF_SUCCESS; … … 3633 3645 3634 3646 3635 int vmsvga3dOcclusionQueryBegin(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext)3636 { 3637 RT_NOREF(p State, pContext);3647 static int vmsvga3dBackOcclusionQueryBegin(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 3648 { 3649 RT_NOREF(pThisCC, pContext); 3638 3650 AssertFailed(); 3639 3651 return VINF_SUCCESS; … … 3641 3653 3642 3654 3643 int vmsvga3dOcclusionQueryEnd(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext)3644 { 3645 RT_NOREF(p State, pContext);3655 static int vmsvga3dBackOcclusionQueryEnd(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 3656 { 3657 RT_NOREF(pThisCC, pContext); 3646 3658 AssertFailed(); 3647 3659 return VINF_SUCCESS; … … 3649 3661 3650 3662 3651 int vmsvga3dOcclusionQueryGetData(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t *pu32Pixels)3652 { 3653 RT_NOREF(p State, pContext);3663 static int vmsvga3dBackOcclusionQueryGetData(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t *pu32Pixels) 3664 { 3665 RT_NOREF(pThisCC, pContext); 3654 3666 *pu32Pixels = 0; 3655 3667 AssertFailed(); … … 3658 3670 3659 3671 3660 int vmsvga3dOcclusionQueryDelete(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext)3661 { 3662 RT_NOREF(p State, pContext);3672 static int vmsvga3dBackOcclusionQueryDelete(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 3673 { 3674 RT_NOREF(pThisCC, pContext); 3663 3675 AssertFailed(); 3664 3676 return VINF_SUCCESS; … … 3752 3764 { 3753 3765 /* Create the resource. */ 3754 rc = vmsvga3dBackSurfaceCreateConstantBuffer(pThisCC ->svga.p3dState, pDXContext, pSurface);3766 rc = vmsvga3dBackSurfaceCreateConstantBuffer(pThisCC, pDXContext, pSurface); 3755 3767 AssertRCReturn(rc, rc); 3756 3768 } … … 4061 4073 { 4062 4074 /* Create the resource. */ 4063 rc = vmsvga3dBackSurfaceCreateBuffer(pThisCC ->svga.p3dState, pDXContext, pSurface);4075 rc = vmsvga3dBackSurfaceCreateBuffer(pThisCC, pDXContext, pSurface); 4064 4076 AssertRCReturn(rc, rc); 4065 4077 } … … 4128 4140 { 4129 4141 /* Create the resource. */ 4130 rc = vmsvga3dBackSurfaceCreateBuffer(pThisCC ->svga.p3dState, pDXContext, pSurface);4142 rc = vmsvga3dBackSurfaceCreateBuffer(pThisCC, pDXContext, pSurface); 4131 4143 AssertRCReturn(rc, rc); 4132 4144 } … … 4484 4496 { 4485 4497 /* Create the resource. */ 4486 rc = vmsvga3dBackSurfaceCreateTexture(pThisCC ->svga.p3dState, pDXContext, pSrcSurface);4498 rc = vmsvga3dBackSurfaceCreateTexture(pThisCC, pDXContext, pSrcSurface); 4487 4499 AssertRCReturn(rc, rc); 4488 4500 } … … 4491 4503 { 4492 4504 /* Create the resource. */ 4493 rc = vmsvga3dBackSurfaceCreateTexture(pThisCC ->svga.p3dState, pDXContext, pDstSurface);4505 rc = vmsvga3dBackSurfaceCreateTexture(pThisCC, pDXContext, pDstSurface); 4494 4506 AssertRCReturn(rc, rc); 4495 4507 } … … 4682 4694 { 4683 4695 /* Create the actual texture. */ 4684 rc = vmsvga3dBackSurfaceCreateTexture(pThisCC ->svga.p3dState, pDXContext, pSurface);4696 rc = vmsvga3dBackSurfaceCreateTexture(pThisCC, pDXContext, pSurface); 4685 4697 AssertRCReturn(rc, rc); 4686 4698 } … … 4719 4731 { 4720 4732 /* Create the actual texture. */ 4721 rc = vmsvga3dBackSurfaceCreateTexture(pThisCC ->svga.p3dState, pDXContext, pSurface);4733 rc = vmsvga3dBackSurfaceCreateTexture(pThisCC, pDXContext, pSurface); 4722 4734 AssertRCReturn(rc, rc); 4723 4735 } … … 4756 4768 { 4757 4769 /* Create the actual texture. */ 4758 rc = vmsvga3dBackSurfaceCreateDepthStencilTexture(pThisCC ->svga.p3dState, pDXContext, pSurface);4770 rc = vmsvga3dBackSurfaceCreateDepthStencilTexture(pThisCC, pDXContext, pSurface); 4759 4771 AssertRCReturn(rc, rc); 4760 4772 } … … 5771 5783 int vmsvga3dQueryInterface(PVGASTATECC pThisCC, char const *pszInterfaceName, void *pvInterfaceFuncs, size_t cbInterfaceFuncs) 5772 5784 { 5773 PVMSVGA3DSTATE p3dState = pThisCC->svga.p3dState; 5774 AssertReturn(p3dState, VERR_NOT_SUPPORTED); 5775 5776 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 5777 AssertReturn(pBackend, VERR_NOT_SUPPORTED); 5778 5779 if (pvInterfaceFuncs) 5780 RT_BZERO(pvInterfaceFuncs, cbInterfaceFuncs); 5785 RT_NOREF(pThisCC); 5781 5786 5782 5787 int rc = VINF_SUCCESS; … … 5951 5956 } 5952 5957 } 5958 else if (RTStrCmp(pszInterfaceName, VMSVGA3D_BACKEND_INTERFACE_NAME_3D) == 0) 5959 { 5960 if (cbInterfaceFuncs == sizeof(VMSVGA3DBACKENDFUNCS3D)) 5961 { 5962 if (pvInterfaceFuncs) 5963 { 5964 VMSVGA3DBACKENDFUNCS3D *p = (VMSVGA3DBACKENDFUNCS3D *)pvInterfaceFuncs; 5965 p->pfnInit = vmsvga3dBackInit; 5966 p->pfnPowerOn = vmsvga3dBackPowerOn; 5967 p->pfnTerminate = vmsvga3dBackTerminate; 5968 p->pfnReset = vmsvga3dBackReset; 5969 p->pfnQueryCaps = vmsvga3dBackQueryCaps; 5970 p->pfnChangeMode = vmsvga3dBackChangeMode; 5971 p->pfnCreateTexture = vmsvga3dBackCreateTexture; 5972 p->pfnSurfaceDestroy = vmsvga3dBackSurfaceDestroy; 5973 p->pfnSurfaceCopy = vmsvga3dBackSurfaceCopy; 5974 p->pfnSurfaceDMACopyBox = vmsvga3dBackSurfaceDMACopyBox; 5975 p->pfnSurfaceStretchBlt = vmsvga3dBackSurfaceStretchBlt; 5976 p->pfnUpdateHostScreenViewport = vmsvga3dBackUpdateHostScreenViewport; 5977 p->pfnDefineScreen = vmsvga3dBackDefineScreen; 5978 p->pfnDestroyScreen = vmsvga3dBackDestroyScreen; 5979 p->pfnSurfaceBlitToScreen = vmsvga3dBackSurfaceBlitToScreen; 5980 } 5981 } 5982 else 5983 { 5984 AssertFailed(); 5985 rc = VERR_INVALID_PARAMETER; 5986 } 5987 } 5953 5988 else 5954 5989 rc = VERR_NOT_IMPLEMENTED; -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win.cpp
r88787 r89121 159 159 *********************************************************************************************************************************/ 160 160 static void vmsvgaDumpD3DCaps(D3DCAPS9 *pCaps, D3DADAPTER_IDENTIFIER9 const *pai9); 161 162 163 int vmsvga3dInit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC) 161 static int vmsvga3dBackContextDestroy(PVGASTATECC pThisCC, uint32_t cid); 162 static int vmsvga3dBackSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState); 163 static int vmsvga3dBackSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target); 164 static int vmsvga3dBackSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState); 165 static int vmsvga3dBackSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect); 166 static int vmsvga3dBackSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect); 167 static int vmsvga3dBackShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type); 168 static int vmsvga3dBackShaderSet(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid); 169 static int vmsvga3dBackOcclusionQueryDelete(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext); 170 static int vmsvga3dBackCreateTexture(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext, PVMSVGA3DSURFACE pSurface); 171 172 173 static int vmsvga3dBackInit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC) 164 174 { 165 175 RT_NOREF(pDevIns, pThis); … … 188 198 } 189 199 190 int vmsvga3dPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC)200 static int vmsvga3dBackPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC) 191 201 { 192 202 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 277 287 } 278 288 279 int vmsvga3dReset(PVGASTATECC pThisCC)289 static int vmsvga3dBackReset(PVGASTATECC pThisCC) 280 290 { 281 291 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 293 303 { 294 304 if (pState->papContexts[i]->id != SVGA3D_INVALID_ID) 295 vmsvga3d ContextDestroy(pThisCC, pState->papContexts[i]->id);305 vmsvga3dBackContextDestroy(pThisCC, pState->papContexts[i]->id); 296 306 } 297 307 return VINF_SUCCESS; 298 308 } 299 309 300 int vmsvga3dTerminate(PVGASTATECC pThisCC)310 static int vmsvga3dBackTerminate(PVGASTATECC pThisCC) 301 311 { 302 312 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 303 313 AssertReturn(pThisCC->svga.p3dState, VERR_NO_MEMORY); 304 314 305 int rc = vmsvga3d Reset(pThisCC);315 int rc = vmsvga3dBackReset(pThisCC); 306 316 AssertRCReturn(rc, rc); 307 317 … … 317 327 } 318 328 319 void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport)329 static void vmsvga3dBackUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport) 320 330 { 321 331 /** @todo Scroll the screen content without requiring the guest to redraw. */ … … 424 434 425 435 426 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val)436 static int vmsvga3dBackQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val) 427 437 { 428 438 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 1097 1107 * Destroy backend specific surface bits (part of SVGA_3D_CMD_SURFACE_DESTROY). 1098 1108 * 1099 * @param p State The VMSVGA3dstate.1109 * @param pThisCC The device state. 1100 1110 * @param pSurface The surface being destroyed. 1101 1111 */ 1102 void vmsvga3dBackSurfaceDestroy(PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface)1103 { 1104 RT_NOREF(p State);1112 static void vmsvga3dBackSurfaceDestroy(PVGASTATECC pThisCC, PVMSVGA3DSURFACE pSurface) 1113 { 1114 RT_NOREF(pThisCC); 1105 1115 1106 1116 RTAvlU32Destroy(&pSurface->pSharedObjectTree, vmsvga3dSharedSurfaceDestroyTree, pSurface); … … 1478 1488 } 1479 1489 1480 int vmsvga3dSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src,1481 uint32_t cCopyBoxes, SVGA3dCopyBox *pBox)1490 static int vmsvga3dBackSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src, 1491 uint32_t cCopyBoxes, SVGA3dCopyBox *pBox) 1482 1492 { 1483 1493 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 1518 1528 1519 1529 LogFunc(("sid=%u type=%x format=%d -> create dest texture\n", sidDest, pSurfaceDest->surfaceFlags, pSurfaceDest->format)); 1520 rc = vmsvga3dBackCreateTexture(p State, pContextSrc, cidSrc, pSurfaceDest);1530 rc = vmsvga3dBackCreateTexture(pThisCC, pContextSrc, cidSrc, pSurfaceDest); 1521 1531 AssertRCReturn(rc, rc); 1522 1532 } … … 1831 1841 * Surfaces are created when needed. 1832 1842 * 1833 * @param p State The VMSVGA3d state.1843 * @param pThisCC The device context. 1834 1844 * @param pContext The context. 1835 1845 * @param idAssociatedContext Probably the same as pContext->id. 1836 1846 * @param pSurface The surface to create the texture for. 1837 1847 */ 1838 int vmsvga3dBackCreateTexture(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext,1848 static int vmsvga3dBackCreateTexture(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext, 1839 1849 PVMSVGA3DSURFACE pSurface) 1840 1850 1841 1851 { 1842 RT_NOREF(pState); 1852 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 1853 AssertReturn(pState, VERR_NO_MEMORY); 1854 1843 1855 HRESULT hr; 1844 1856 … … 2259 2271 * @param pContext The VMSVGA3d context (already current for OGL). 2260 2272 */ 2261 int vmsvga3dBackSurfaceStretchBlt(PVGASTATE pThis, PVMSVGA3DSTATE pState,2273 static int vmsvga3dBackSurfaceStretchBlt(PVGASTATE pThis, PVMSVGA3DSTATE pState, 2262 2274 PVMSVGA3DSURFACE pDstSurface, uint32_t uDstFace, uint32_t uDstMipmap, SVGA3dBox const *pDstBox, 2263 2275 PVMSVGA3DSURFACE pSrcSurface, uint32_t uSrcFace, uint32_t uSrcMipmap, SVGA3dBox const *pSrcBox, … … 2349 2361 * @param iBox The current box number (for Direct 3D). 2350 2362 */ 2351 int vmsvga3dBackSurfaceDMACopyBox(PVGASTATE pThis, PVGASTATECC pThisCC, PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface,2363 static int vmsvga3dBackSurfaceDMACopyBox(PVGASTATE pThis, PVGASTATECC pThisCC, PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface, 2352 2364 PVMSVGA3DMIPMAPLEVEL pMipLevel, uint32_t uHostFace, uint32_t uHostMipmap, 2353 2365 SVGAGuestPtr GuestPtr, uint32_t cbGuestPitch, SVGA3dTransferType transfer, … … 2513 2525 } 2514 2526 2515 int vmsvga3dGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter)2527 static int vmsvga3dBackGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter) 2516 2528 { 2517 2529 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 2541 2553 /* Unknown surface type; turn it into a texture. */ 2542 2554 LogFunc(("unknown src surface sid=%u type=%d format=%d -> create texture\n", sid, pSurface->surfaceFlags, pSurface->format)); 2543 rc = vmsvga3dBackCreateTexture(p State, pContext, cid, pSurface);2555 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pSurface); 2544 2556 AssertRCReturn(rc, rc); 2545 2557 } … … 2567 2579 * @param cid Context id 2568 2580 */ 2569 int vmsvga3dContextDefine(PVGASTATECC pThisCC, uint32_t cid)2581 static int vmsvga3dBackContextDefine(PVGASTATECC pThisCC, uint32_t cid) 2570 2582 { 2571 2583 int rc; … … 2596 2608 /* If one already exists with this id, then destroy it now. */ 2597 2609 if (pState->papContexts[cid]->id != SVGA3D_INVALID_ID) 2598 vmsvga3d ContextDestroy(pThisCC, cid);2610 vmsvga3dBackContextDestroy(pThisCC, cid); 2599 2611 2600 2612 pContext = pState->papContexts[cid]; … … 2674 2686 * @param cid Context id 2675 2687 */ 2676 int vmsvga3dContextDestroy(PVGASTATECC pThisCC, uint32_t cid)2688 static int vmsvga3dBackContextDestroy(PVGASTATECC pThisCC, uint32_t cid) 2677 2689 { 2678 2690 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 2777 2789 { 2778 2790 if (pContext->paPixelShader[i].id != SVGA3D_INVALID_ID) 2779 vmsvga3d ShaderDestroy(pThisCC, pContext->paPixelShader[i].cid, pContext->paPixelShader[i].id, pContext->paPixelShader[i].type);2791 vmsvga3dBackShaderDestroy(pThisCC, pContext->paPixelShader[i].cid, pContext->paPixelShader[i].id, pContext->paPixelShader[i].type); 2780 2792 } 2781 2793 if (pContext->paPixelShader) … … 2786 2798 { 2787 2799 if (pContext->paVertexShader[i].id != SVGA3D_INVALID_ID) 2788 vmsvga3d ShaderDestroy(pThisCC, pContext->paVertexShader[i].cid, pContext->paVertexShader[i].id, pContext->paVertexShader[i].type);2800 vmsvga3dBackShaderDestroy(pThisCC, pContext->paVertexShader[i].cid, pContext->paVertexShader[i].id, pContext->paVertexShader[i].type); 2789 2801 } 2790 2802 if (pContext->paVertexShader) … … 2796 2808 RTMemFree(pContext->state.paPixelShaderConst); 2797 2809 2798 vmsvga3d OcclusionQueryDelete(pState, pContext);2810 vmsvga3dBackOcclusionQueryDelete(pThisCC, pContext); 2799 2811 2800 2812 /* Release the D3D device object */ … … 2814 2826 } 2815 2827 2816 int vmsvga3dBackDefineScreen(PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen)2828 static int vmsvga3dBackDefineScreen(PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen) 2817 2829 { 2818 2830 RT_NOREF(pThis, pThisCC, pScreen); … … 2820 2832 } 2821 2833 2822 int vmsvga3dBackDestroyScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen)2834 static int vmsvga3dBackDestroyScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen) 2823 2835 { 2824 2836 RT_NOREF(pThisCC, pScreen); … … 2826 2838 } 2827 2839 2828 int vmsvga3dBackSurfaceBlitToScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen,2840 static int vmsvga3dBackSurfaceBlitToScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, 2829 2841 SVGASignedRect destRect, SVGA3dSurfaceImageId srcImage, 2830 2842 SVGASignedRect srcRect, uint32_t cRects, SVGASignedRect *paRects) … … 2854 2866 2855 2867 /* Handle resize */ 2856 int vmsvga3dChangeMode(PVGASTATECC pThisCC)2868 static int vmsvga3dBackChangeMode(PVGASTATECC pThisCC) 2857 2869 { 2858 2870 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 3050 3062 target.face = 0; 3051 3063 target.mipmap = 0; 3052 int rc = vmsvga3d SetRenderTarget(pThisCC, cid, (SVGA3dRenderTargetType)j, target);3064 int rc = vmsvga3dBackSetRenderTarget(pThisCC, cid, (SVGA3dRenderTargetType)j, target); 3053 3065 AssertRCReturn(rc, rc); 3054 3066 } … … 3063 3075 3064 3076 if (pRenderState->state != SVGA3D_RS_INVALID) 3065 vmsvga3d SetRenderState(pThisCC, pContext->id, 1, pRenderState);3077 vmsvga3dBackSetRenderState(pThisCC, pContext->id, 1, pRenderState); 3066 3078 } 3067 3079 Log(("vmsvga3dChangeMode: Recreate render state END\n")); … … 3076 3088 3077 3089 if (pTextureState->name != SVGA3D_RS_INVALID) 3078 vmsvga3d SetTextureState(pThisCC, pContext->id, 1, pTextureState);3090 vmsvga3dBackSetTextureState(pThisCC, pContext->id, 1, pTextureState); 3079 3091 } 3080 3092 } … … 3082 3094 3083 3095 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_SCISSORRECT) 3084 vmsvga3d SetScissorRect(pThis, cid, &pContext->state.RectScissor);3096 vmsvga3dBackSetScissorRect(pThis, cid, &pContext->state.RectScissor); 3085 3097 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_ZRANGE) 3086 vmsvga3d SetZRange(pThisCC, cid, pContext->state.zRange);3098 vmsvga3dBackSetZRange(pThisCC, cid, pContext->state.zRange); 3087 3099 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_VIEWPORT) 3088 vmsvga3d SetViewPort(pThis, cid, &pContext->state.RectViewPort);3100 vmsvga3dBackSetViewPort(pThis, cid, &pContext->state.RectViewPort); 3089 3101 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_VERTEXSHADER) 3090 vmsvga3d ShaderSet(pThis, pContext, cid, SVGA3D_SHADERTYPE_VS, pContext->state.shidVertex);3102 vmsvga3dBackShaderSet(pThis, pContext, cid, SVGA3D_SHADERTYPE_VS, pContext->state.shidVertex); 3091 3103 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_PIXELSHADER) 3092 vmsvga3d ShaderSet(pThis, pContext, cid, SVGA3D_SHADERTYPE_PS, pContext->state.shidPixel);3104 vmsvga3dBackShaderSet(pThis, pContext, cid, SVGA3D_SHADERTYPE_PS, pContext->state.shidPixel); 3093 3105 /** @todo restore more state data */ 3094 3106 #endif /* #ifdef VMSVGA3D_DIRECT3D9_RESET */ … … 3099 3111 3100 3112 3101 int vmsvga3dSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16])3113 static int vmsvga3dBackSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16]) 3102 3114 { 3103 3115 D3DTRANSFORMSTATETYPE d3dState; … … 3179 3191 } 3180 3192 3181 int vmsvga3dSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange)3193 static int vmsvga3dBackSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange) 3182 3194 { 3183 3195 D3DVIEWPORT9 viewport; … … 3252 3264 } 3253 3265 3254 int vmsvga3dSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState)3266 static int vmsvga3dBackSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState) 3255 3267 { 3256 3268 DWORD val = 0; /* Shut up MSC */ … … 3919 3931 } 3920 3932 3921 int vmsvga3dSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target)3933 static int vmsvga3dBackSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target) 3922 3934 { 3923 3935 HRESULT hr; … … 4027 4039 { 4028 4040 LogFunc(("Creating stencil surface as texture!\n")); 4029 int rc2 = vmsvga3dBackCreateTexture(p State, pContext, cid, pRenderTarget);4041 int rc2 = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pRenderTarget); 4030 4042 AssertRC(rc2); /* non-fatal, will use CreateDepthStencilSurface */ 4031 4043 } … … 4141 4153 { 4142 4154 LogFunc(("Create texture to be used as render target; sid=%u type=%d format=%d -> create texture\n", target.sid, pRenderTarget->surfaceFlags, pRenderTarget->format)); 4143 rc = vmsvga3dBackCreateTexture(p State, pContext, cid, pRenderTarget);4155 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pRenderTarget); 4144 4156 AssertRCReturn(rc, rc); 4145 4157 } … … 4207 4219 /* Changing the render target resets the viewport; restore it here. */ 4208 4220 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_VIEWPORT) 4209 vmsvga3d SetViewPort(pThisCC, cid, &pContext->state.RectViewPort);4221 vmsvga3dBackSetViewPort(pThisCC, cid, &pContext->state.RectViewPort); 4210 4222 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_ZRANGE) 4211 vmsvga3d SetZRange(pThisCC, cid, pContext->state.zRange);4223 vmsvga3dBackSetZRange(pThisCC, cid, pContext->state.zRange); 4212 4224 /* Changing the render target also resets the scissor rectangle; restore it as well. */ 4213 4225 if (pContext->state.u32UpdateFlags & VMSVGA3D_UPDATE_SCISSORRECT) 4214 vmsvga3d SetScissorRect(pThisCC, cid, &pContext->state.RectScissor);4226 vmsvga3dBackSetScissorRect(pThisCC, cid, &pContext->state.RectScissor); 4215 4227 4216 4228 break; … … 4345 4357 } 4346 4358 4347 int vmsvga3dSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState)4359 static int vmsvga3dBackSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState) 4348 4360 { 4349 4361 DWORD val = 0; /* Shut up MSC */ … … 4398 4410 Assert(pSurface->idAssociatedContext == SVGA3D_INVALID_ID); 4399 4411 LogFunc(("CreateTexture (%d,%d) level=%d fUsage=%x format=%x\n", pSurface->paMipmapLevels[0].mipmapSize.width, pSurface->paMipmapLevels[0].mipmapSize.height, pSurface->cLevels, pSurface->fUsageD3D, pSurface->formatD3D)); 4400 rc = vmsvga3dBackCreateTexture(p State, pContext, cid, pSurface);4412 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pSurface); 4401 4413 AssertRCReturn(rc, rc); 4402 4414 } … … 4638 4650 } 4639 4651 4640 int vmsvga3dSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial)4652 static int vmsvga3dBackSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial) 4641 4653 { 4642 4654 HRESULT hr; … … 4689 4701 } 4690 4702 4691 int vmsvga3dSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData)4703 static int vmsvga3dBackSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData) 4692 4704 { 4693 4705 HRESULT hr; … … 4760 4772 } 4761 4773 4762 int vmsvga3dSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled)4774 static int vmsvga3dBackSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled) 4763 4775 { 4764 4776 HRESULT hr; … … 4783 4795 } 4784 4796 4785 int vmsvga3dSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)4797 static int vmsvga3dBackSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 4786 4798 { 4787 4799 HRESULT hr; … … 4816 4828 } 4817 4829 4818 int vmsvga3dSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4])4830 static int vmsvga3dBackSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4]) 4819 4831 { 4820 4832 HRESULT hr; … … 4839 4851 } 4840 4852 4841 int vmsvga3dCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth,4842 uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect)4853 static int vmsvga3dBackCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, 4854 uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect) 4843 4855 { 4844 4856 /* From SVGA3D_BeginClear comments: … … 5117 5129 } 5118 5130 5119 int vmsvga3dDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl,5120 uint32_t numRanges, SVGA3dPrimitiveRange *pRange,5121 uint32_t cVertexDivisor, SVGA3dVertexDivisor *pVertexDivisor)5131 static int vmsvga3dBackDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl, 5132 uint32_t numRanges, SVGA3dPrimitiveRange *pRange, 5133 uint32_t cVertexDivisor, SVGA3dVertexDivisor *pVertexDivisor) 5122 5134 { 5123 5135 static const D3DVERTEXELEMENT9 sVertexEnd = D3DDECL_END(); … … 5469 5481 5470 5482 5471 int vmsvga3dSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)5483 static int vmsvga3dBackSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 5472 5484 { 5473 5485 HRESULT hr; … … 5499 5511 5500 5512 5501 int vmsvga3dShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type,5513 static int vmsvga3dBackShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type, 5502 5514 uint32_t cbData, uint32_t *pShaderData) 5503 5515 { … … 5538 5550 /* If one already exists with this id, then destroy it now. */ 5539 5551 if (pContext->paVertexShader[shid].id != SVGA3D_INVALID_ID) 5540 vmsvga3d ShaderDestroy(pThisCC, cid, shid, pContext->paVertexShader[shid].type);5552 vmsvga3dBackShaderDestroy(pThisCC, cid, shid, pContext->paVertexShader[shid].type); 5541 5553 5542 5554 pShader = &pContext->paVertexShader[shid]; … … 5557 5569 /* If one already exists with this id, then destroy it now. */ 5558 5570 if (pContext->paPixelShader[shid].id != SVGA3D_INVALID_ID) 5559 vmsvga3d ShaderDestroy(pThisCC, cid, shid, pContext->paPixelShader[shid].type);5571 vmsvga3dBackShaderDestroy(pThisCC, cid, shid, pContext->paPixelShader[shid].type); 5560 5572 5561 5573 pShader = &pContext->paPixelShader[shid]; … … 5608 5620 } 5609 5621 5610 int vmsvga3dShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type)5622 static int vmsvga3dBackShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type) 5611 5623 { 5612 5624 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 5654 5666 } 5655 5667 5656 int vmsvga3dShaderSet(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid)5668 static int vmsvga3dBackShaderSet(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid) 5657 5669 { 5658 5670 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 5722 5734 } 5723 5735 5724 int vmsvga3dShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type,5725 SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues)5736 static int vmsvga3dBackShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type, 5737 SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues) 5726 5738 { 5727 5739 HRESULT hr; … … 5816 5828 } 5817 5829 5818 int vmsvga3dOcclusionQueryCreate(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext)5819 { 5820 RT_NOREF(p State);5830 static int vmsvga3dBackOcclusionQueryCreate(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 5831 { 5832 RT_NOREF(pThisCC); 5821 5833 HRESULT hr = pContext->pDevice->CreateQuery(D3DQUERYTYPE_OCCLUSION, &pContext->occlusion.pQuery); 5822 5834 AssertMsgReturn(hr == D3D_OK, ("CreateQuery(D3DQUERYTYPE_OCCLUSION) failed with %x\n", hr), VERR_INTERNAL_ERROR); … … 5824 5836 } 5825 5837 5826 int vmsvga3dOcclusionQueryDelete(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext)5827 { 5828 RT_NOREF(p State);5838 static int vmsvga3dBackOcclusionQueryDelete(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 5839 { 5840 RT_NOREF(pThisCC); 5829 5841 D3D_RELEASE(pContext->occlusion.pQuery); 5830 5842 return VINF_SUCCESS; 5831 5843 } 5832 5844 5833 int vmsvga3dOcclusionQueryBegin(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext)5834 { 5835 RT_NOREF(p State);5845 static int vmsvga3dBackOcclusionQueryBegin(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 5846 { 5847 RT_NOREF(pThisCC); 5836 5848 HRESULT hr = pContext->occlusion.pQuery->Issue(D3DISSUE_BEGIN); 5837 5849 AssertMsgReturnStmt(hr == D3D_OK, ("D3DISSUE_BEGIN(D3DQUERYTYPE_OCCLUSION) failed with %x\n", hr), … … 5840 5852 } 5841 5853 5842 int vmsvga3dOcclusionQueryEnd(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext)5843 { 5844 RT_NOREF(p State);5854 static int vmsvga3dBackOcclusionQueryEnd(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext) 5855 { 5856 RT_NOREF(pThisCC); 5845 5857 HRESULT hr = pContext->occlusion.pQuery->Issue(D3DISSUE_END); 5846 5858 AssertMsgReturnStmt(hr == D3D_OK, ("D3DISSUE_END(D3DQUERYTYPE_OCCLUSION) failed with %x\n", hr), … … 5849 5861 } 5850 5862 5851 int vmsvga3dOcclusionQueryGetData(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t *pu32Pixels)5852 { 5853 RT_NOREF(p State);5863 static int vmsvga3dBackOcclusionQueryGetData(PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t *pu32Pixels) 5864 { 5865 RT_NOREF(pThisCC); 5854 5866 HRESULT hr = D3D_OK; 5855 5867 /* Wait until the data becomes available. */ … … 6174 6186 int vmsvga3dQueryInterface(PVGASTATECC pThisCC, char const *pszInterfaceName, void *pvInterfaceFuncs, size_t cbInterfaceFuncs) 6175 6187 { 6176 RT_NOREF(pThisCC, pszInterfaceName, pvInterfaceFuncs, cbInterfaceFuncs); 6177 return VERR_NOT_IMPLEMENTED; 6188 RT_NOREF(pThisCC); 6189 6190 int rc = VINF_SUCCESS; 6191 if (RTStrCmp(pszInterfaceName, VMSVGA3D_BACKEND_INTERFACE_NAME_3D) == 0) 6192 { 6193 if (cbInterfaceFuncs == sizeof(VMSVGA3DBACKENDFUNCS3D)) 6194 { 6195 if (pvInterfaceFuncs) 6196 { 6197 VMSVGA3DBACKENDFUNCS3D *p = (VMSVGA3DBACKENDFUNCS3D *)pvInterfaceFuncs; 6198 p->pfnInit = vmsvga3dBackInit; 6199 p->pfnPowerOn = vmsvga3dBackPowerOn; 6200 p->pfnTerminate = vmsvga3dBackTerminate; 6201 p->pfnReset = vmsvga3dBackReset; 6202 p->pfnQueryCaps = vmsvga3dBackQueryCaps; 6203 p->pfnChangeMode = vmsvga3dBackChangeMode; 6204 p->pfnCreateTexture = vmsvga3dBackCreateTexture; 6205 p->pfnSurfaceDestroy = vmsvga3dBackSurfaceDestroy; 6206 p->pfnSurfaceCopy = vmsvga3dBackSurfaceCopy; 6207 p->pfnSurfaceDMACopyBox = vmsvga3dBackSurfaceDMACopyBox; 6208 p->pfnSurfaceStretchBlt = vmsvga3dBackSurfaceStretchBlt; 6209 p->pfnUpdateHostScreenViewport = vmsvga3dBackUpdateHostScreenViewport; 6210 p->pfnDefineScreen = vmsvga3dBackDefineScreen; 6211 p->pfnDestroyScreen = vmsvga3dBackDestroyScreen; 6212 p->pfnSurfaceBlitToScreen = vmsvga3dBackSurfaceBlitToScreen; 6213 } 6214 } 6215 else 6216 { 6217 AssertFailed(); 6218 rc = VERR_INVALID_PARAMETER; 6219 } 6220 } 6221 else if (RTStrCmp(pszInterfaceName, VMSVGA3D_BACKEND_INTERFACE_NAME_VGPU9) == 0) 6222 { 6223 if (cbInterfaceFuncs == sizeof(VMSVGA3DBACKENDFUNCSVGPU9)) 6224 { 6225 if (pvInterfaceFuncs) 6226 { 6227 VMSVGA3DBACKENDFUNCSVGPU9 *p = (VMSVGA3DBACKENDFUNCSVGPU9 *)pvInterfaceFuncs; 6228 p->pfnContextDefine = vmsvga3dBackContextDefine; 6229 p->pfnContextDestroy = vmsvga3dBackContextDestroy; 6230 p->pfnSetTransform = vmsvga3dBackSetTransform; 6231 p->pfnSetZRange = vmsvga3dBackSetZRange; 6232 p->pfnSetRenderState = vmsvga3dBackSetRenderState; 6233 p->pfnSetRenderTarget = vmsvga3dBackSetRenderTarget; 6234 p->pfnSetTextureState = vmsvga3dBackSetTextureState; 6235 p->pfnSetMaterial = vmsvga3dBackSetMaterial; 6236 p->pfnSetLightData = vmsvga3dBackSetLightData; 6237 p->pfnSetLightEnabled = vmsvga3dBackSetLightEnabled; 6238 p->pfnSetViewPort = vmsvga3dBackSetViewPort; 6239 p->pfnSetClipPlane = vmsvga3dBackSetClipPlane; 6240 p->pfnCommandClear = vmsvga3dBackCommandClear; 6241 p->pfnDrawPrimitives = vmsvga3dBackDrawPrimitives; 6242 p->pfnSetScissorRect = vmsvga3dBackSetScissorRect; 6243 p->pfnGenerateMipmaps = vmsvga3dBackGenerateMipmaps; 6244 p->pfnShaderDefine = vmsvga3dBackShaderDefine; 6245 p->pfnShaderDestroy = vmsvga3dBackShaderDestroy; 6246 p->pfnShaderSet = vmsvga3dBackShaderSet; 6247 p->pfnShaderSetConst = vmsvga3dBackShaderSetConst; 6248 p->pfnOcclusionQueryCreate = vmsvga3dBackOcclusionQueryCreate; 6249 p->pfnOcclusionQueryDelete = vmsvga3dBackOcclusionQueryDelete; 6250 p->pfnOcclusionQueryBegin = vmsvga3dBackOcclusionQueryBegin; 6251 p->pfnOcclusionQueryEnd = vmsvga3dBackOcclusionQueryEnd; 6252 p->pfnOcclusionQueryGetData = vmsvga3dBackOcclusionQueryGetData; 6253 } 6254 } 6255 else 6256 { 6257 AssertFailed(); 6258 rc = VERR_INVALID_PARAMETER; 6259 } 6260 } 6261 else 6262 rc = VERR_NOT_IMPLEMENTED; 6263 return rc; 6178 6264 } -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp
r88831 r89121 39 39 #define VMSVGA3D_INCL_STRUCTURE_DESCRIPTORS 40 40 #include "DevVGA-SVGA3d-internal.h" 41 #include "DevVGA-SVGA-internal.h" 41 42 42 43 … … 401 402 } 402 403 403 vmsvga3dBackSurfaceDestroy(pState, pSurface); 404 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 405 if (pSvgaR3State->pFuncs3D) 406 pSvgaR3State->pFuncs3D->pfnSurfaceDestroy(pThisCC, pSurface); 404 407 405 408 if (pSurface->paMipmapLevels) … … 452 455 AssertReturn(pDstSfcImg->mipmap < pDstSurface->cLevels, VERR_INVALID_PARAMETER); 453 456 457 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 458 AssertReturn(pSvgaR3State->pFuncs3D, VERR_NOT_IMPLEMENTED); 459 454 460 PVMSVGA3DCONTEXT pContext; 455 461 #ifdef VMSVGA3D_OPENGL … … 479 485 /* Unknown surface type; turn it into a texture, which can be used for other purposes too. */ 480 486 LogFunc(("unknown src sid=%u type=%d format=%d -> create texture\n", sidSrc, pSrcSurface->surfaceFlags, pSrcSurface->format)); 481 rc = vmsvga3dBackCreateTexture(pState, pContext, pContext->id, pSrcSurface);487 rc = pSvgaR3State->pFuncs3D->pfnCreateTexture(pThisCC, pContext, pContext->id, pSrcSurface); 482 488 AssertRCReturn(rc, rc); 483 489 } … … 487 493 /* Unknown surface type; turn it into a texture, which can be used for other purposes too. */ 488 494 LogFunc(("unknown dest sid=%u type=%d format=%d -> create texture\n", sidDst, pDstSurface->surfaceFlags, pDstSurface->format)); 489 rc = vmsvga3dBackCreateTexture(pState, pContext, pContext->id, pDstSurface);495 rc = pSvgaR3State->pFuncs3D->pfnCreateTexture(pThisCC, pContext, pContext->id, pDstSurface); 490 496 AssertRCReturn(rc, rc); 491 497 } … … 504 510 vmsvgaR3ClipBox(&pDstMipmapLevel->mipmapSize, &clipDstBox); 505 511 506 return vmsvga3dBackSurfaceStretchBlt(pThis, pState,512 return pSvgaR3State->pFuncs3D->pfnSurfaceStretchBlt(pThis, pState, 507 513 pDstSurface, pDstSfcImg->face, pDstSfcImg->mipmap, &clipDstBox, 508 514 pSrcSurface, pSrcSfcImg->face, pSrcSfcImg->mipmap, &clipSrcBox, … … 540 546 rc = vmsvga3dMipmapLevel(pSurface, host.face, host.mipmap, &pMipLevel); 541 547 AssertRCReturn(rc, rc); 548 549 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 550 AssertReturn(pSvgaR3State->pFuncs3D, VERR_NOT_IMPLEMENTED); 542 551 543 552 PVMSVGA3DCONTEXT pContext = NULL; … … 708 717 clipBox.srcy = srcy; 709 718 clipBox.srcz = srcz; 710 rc = vmsvga3dBackSurfaceDMACopyBox(pThis, pThisCC, pState, pSurface, pMipLevel, host.face, host.mipmap,719 rc = pSvgaR3State->pFuncs3D->pfnSurfaceDMACopyBox(pThis, pThisCC, pState, pSurface, pMipLevel, host.face, host.mipmap, 711 720 guest.ptr, cbGuestPitch, transfer, 712 721 &clipBox, pContext, rc, i); … … 724 733 } 725 734 726 static int vmsvga3dQueryWriteResult(PVGASTATE pThis, PVGASTATECC pThisCC, SVGAGuestPtr guestResult,735 static int vmsvga3dQueryWriteResult(PVGASTATE pThis, PVGASTATECC pThisCC, SVGAGuestPtr const *pGuestResult, 727 736 SVGA3dQueryState enmState, uint32_t u32Result) 728 737 { … … 734 743 int rc = vmsvgaR3GmrTransfer(pThis, pThisCC, SVGA3D_READ_HOST_VRAM, 735 744 (uint8_t *)&queryResult, sizeof(queryResult), 0, sizeof(queryResult), 736 guestResult, 0, sizeof(queryResult), sizeof(queryResult), 1);745 *pGuestResult, 0, sizeof(queryResult), sizeof(queryResult), 1); 737 746 AssertRC(rc); 738 747 return rc; 739 748 } 740 749 741 int vmsvga3dQueryBegin(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type) 742 { 750 /* Used with saved state. */ 751 int vmsvga3dQueryCreate(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type) 752 { 753 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 754 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 755 743 756 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 744 757 AssertReturn(pState, VERR_NO_MEMORY); … … 755 768 if (!VMSVGA3DQUERY_EXISTS(p)) 756 769 { 757 /* Lazy creation of the query object. */ 758 rc = vmsvga3dOcclusionQueryCreate(pState, pContext); 770 rc = pSvgaR3State->pFuncsVGPU9->pfnOcclusionQueryCreate(pThisCC, pContext); 759 771 AssertRCReturn(rc, rc); 760 772 } 761 762 rc = vmsvga3dOcclusionQueryBegin(pState, pContext);763 AssertRCReturn(rc, rc);764 765 p->enmQueryState = VMSVGA3DQUERYSTATE_BUILDING;766 p->u32QueryResult = 0;767 773 768 774 return VINF_SUCCESS; … … 773 779 } 774 780 775 int vmsvga3dQueryEnd(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult) 776 { 777 RT_NOREF(guestResult); 781 int vmsvga3dQueryBegin(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type) 782 { 783 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 784 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 785 778 786 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 779 787 AssertReturn(pState, VERR_NO_MEMORY); 780 788 781 LogFunc(("cid=%u type=%d guestResult %d:0x%x\n", cid, type, guestResult.gmrId, guestResult.offset));789 LogFunc(("cid=%u type=%d\n", cid, type)); 782 790 783 791 PVMSVGA3DCONTEXT pContext; … … 788 796 { 789 797 VMSVGA3DQUERY *p = &pContext->occlusion; 798 if (!VMSVGA3DQUERY_EXISTS(p)) 799 { 800 /* Lazy creation of the query object. */ 801 rc = pSvgaR3State->pFuncsVGPU9->pfnOcclusionQueryCreate(pThisCC, pContext); 802 AssertRCReturn(rc, rc); 803 } 804 805 rc = pSvgaR3State->pFuncsVGPU9->pfnOcclusionQueryBegin(pThisCC, pContext); 806 AssertRCReturn(rc, rc); 807 808 p->enmQueryState = VMSVGA3DQUERYSTATE_BUILDING; 809 p->u32QueryResult = 0; 810 811 return VINF_SUCCESS; 812 } 813 814 /* Nothing else for VGPU9. */ 815 AssertFailedReturn(VERR_NOT_IMPLEMENTED); 816 } 817 818 int vmsvga3dQueryEnd(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type) 819 { 820 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 821 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 822 823 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 824 AssertReturn(pState, VERR_NO_MEMORY); 825 826 LogFunc(("cid=%u type=%d\n", cid, type)); 827 828 PVMSVGA3DCONTEXT pContext; 829 int rc = vmsvga3dContextFromCid(pState, cid, &pContext); 830 AssertRCReturn(rc, rc); 831 832 if (type == SVGA3D_QUERYTYPE_OCCLUSION) 833 { 834 VMSVGA3DQUERY *p = &pContext->occlusion; 790 835 Assert(p->enmQueryState == VMSVGA3DQUERYSTATE_BUILDING); 791 836 AssertMsgReturn(VMSVGA3DQUERY_EXISTS(p), ("Query is NULL\n"), VERR_INTERNAL_ERROR); 792 837 793 rc = vmsvga3dOcclusionQueryEnd(pState, pContext);838 rc = pSvgaR3State->pFuncsVGPU9->pfnOcclusionQueryEnd(pThisCC, pContext); 794 839 AssertRCReturn(rc, rc); 795 840 796 841 p->enmQueryState = VMSVGA3DQUERYSTATE_ISSUED; 797 798 /* Do not touch guestResult, because the guest will call WaitForQuery. */799 842 return VINF_SUCCESS; 800 843 } … … 804 847 } 805 848 806 int vmsvga3dQueryWait(PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult) 807 { 849 int vmsvga3dQueryWait(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, PVGASTATE pThis, SVGAGuestPtr const *pGuestResult) 850 { 851 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 852 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 853 808 854 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; 809 855 AssertReturn(pState, VERR_NO_MEMORY); 810 856 811 LogFunc(("cid=%u type=%d guestResult GMR%d:0x%x\n", cid, type, guestResult.gmrId, guestResult.offset));857 LogFunc(("cid=%u type=%d guestResult GMR%d:0x%x\n", cid, type, pGuestResult->gmrId, pGuestResult->offset)); 812 858 813 859 PVMSVGA3DCONTEXT pContext; … … 826 872 */ 827 873 uint32_t u32Pixels = 0; 828 rc = vmsvga3dOcclusionQueryGetData(pState, pContext, &u32Pixels);874 rc = pSvgaR3State->pFuncsVGPU9->pfnOcclusionQueryGetData(pThisCC, pContext, &u32Pixels); 829 875 if (RT_SUCCESS(rc)) 830 876 { … … 836 882 if (RT_SUCCESS(rc)) 837 883 { 838 /* Return data to the guest. */ 839 vmsvga3dQueryWriteResult(pThis, pThisCC, guestResult, SVGA3D_QUERYSTATE_SUCCEEDED, p->u32QueryResult); 884 /* pGuestResult can be NULL when saving the state. */ 885 if (pGuestResult) 886 { 887 /* Return data to the guest. */ 888 vmsvga3dQueryWriteResult(pThis, pThisCC, pGuestResult, SVGA3D_QUERYSTATE_SUCCEEDED, p->u32QueryResult); 889 } 840 890 return VINF_SUCCESS; 841 891 } … … 853 903 } 854 904 855 vmsvga3dQueryWriteResult(pThis, pThisCC, guestResult, SVGA3D_QUERYSTATE_FAILED, 0); 905 if (pGuestResult) 906 vmsvga3dQueryWriteResult(pThis, pThisCC, pGuestResult, SVGA3D_QUERYSTATE_FAILED, 0); 856 907 AssertFailedReturn(rc); 857 908 } … … 881 932 { 882 933 /* Use the backend accelerated method, if available. */ 883 int rc = vmsvga3dBackSurfaceBlitToScreen(pThisCC, pScreen, 884 destRect, src, srcRect, cRects, pRect); 885 if (rc == VINF_SUCCESS) 886 { 887 return VINF_SUCCESS; 934 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 935 if (pSvgaR3State->pFuncs3D) 936 { 937 int rc = pSvgaR3State->pFuncs3D->pfnSurfaceBlitToScreen(pThisCC, pScreen, destRect, src, srcRect, cRects, pRect); 938 if (rc == VINF_SUCCESS) 939 { 940 return VINF_SUCCESS; 941 } 888 942 } 889 943 } … … 1023 1077 int vmsvga3dDefineScreen(PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen) 1024 1078 { 1079 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1080 AssertReturn(pSvgaR3State->pFuncs3D, VERR_NOT_IMPLEMENTED); 1081 1025 1082 if (pScreen->pHwScreen) 1026 1083 { 1027 vmsvga3dBackDestroyScreen(pThisCC, pScreen);1028 } 1029 1030 int rc = vmsvga3dBackDefineScreen(pThis, pThisCC, pScreen);1084 pSvgaR3State->pFuncs3D->pfnDestroyScreen(pThisCC, pScreen); 1085 } 1086 1087 int rc = pSvgaR3State->pFuncs3D->pfnDefineScreen(pThis, pThisCC, pScreen); 1031 1088 if (RT_SUCCESS(rc)) 1032 1089 { … … 1038 1095 int vmsvga3dDestroyScreen(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen) 1039 1096 { 1040 return vmsvga3dBackDestroyScreen(pThisCC, pScreen); 1097 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1098 AssertReturn(pSvgaR3State->pFuncs3D, VERR_NOT_IMPLEMENTED); 1099 1100 return pSvgaR3State->pFuncs3D->pfnDestroyScreen(pThisCC, pScreen); 1041 1101 } 1042 1102 … … 1070 1130 return rc; 1071 1131 } 1132 1133 1134 /* 1135 * 1136 * 3D 1137 * 1138 */ 1139 1140 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val) 1141 { 1142 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1143 AssertReturn(pSvgaR3State->pFuncs3D, VERR_NOT_IMPLEMENTED); 1144 return pSvgaR3State->pFuncs3D->pfnQueryCaps(pThisCC, idx3dCaps, pu32Val); 1145 } 1146 1147 int vmsvga3dChangeMode(PVGASTATECC pThisCC) 1148 { 1149 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1150 AssertReturn(pSvgaR3State->pFuncs3D, VERR_NOT_IMPLEMENTED); 1151 return pSvgaR3State->pFuncs3D->pfnChangeMode(pThisCC); 1152 } 1153 1154 int vmsvga3dSurfaceCopy(PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src, uint32_t cCopyBoxes, SVGA3dCopyBox *pBox) 1155 { 1156 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1157 AssertReturn(pSvgaR3State->pFuncs3D, VERR_NOT_IMPLEMENTED); 1158 return pSvgaR3State->pFuncs3D->pfnSurfaceCopy(pThisCC, dest, src, cCopyBoxes, pBox); 1159 } 1160 1161 void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport) 1162 { 1163 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1164 AssertReturnVoid(pSvgaR3State->pFuncs3D); 1165 pSvgaR3State->pFuncs3D->pfnUpdateHostScreenViewport(pThisCC, idScreen, pOldViewport); 1166 } 1167 1168 1169 /* 1170 * 1171 * VGPU9 1172 * 1173 */ 1174 1175 int vmsvga3dContextDefine(PVGASTATECC pThisCC, uint32_t cid) 1176 { 1177 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1178 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1179 return pSvgaR3State->pFuncsVGPU9->pfnContextDefine(pThisCC, cid); 1180 } 1181 1182 int vmsvga3dContextDestroy(PVGASTATECC pThisCC, uint32_t cid) 1183 { 1184 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1185 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1186 return pSvgaR3State->pFuncsVGPU9->pfnContextDestroy(pThisCC, cid); 1187 } 1188 1189 int vmsvga3dSetTransform(PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16]) 1190 { 1191 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1192 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1193 return pSvgaR3State->pFuncsVGPU9->pfnSetTransform(pThisCC, cid, type, matrix); 1194 } 1195 1196 int vmsvga3dSetZRange(PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange) 1197 { 1198 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1199 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1200 return pSvgaR3State->pFuncsVGPU9->pfnSetZRange(pThisCC, cid, zRange); 1201 } 1202 1203 int vmsvga3dSetRenderState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState) 1204 { 1205 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1206 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1207 return pSvgaR3State->pFuncsVGPU9->pfnSetRenderState(pThisCC, cid, cRenderStates, pRenderState); 1208 } 1209 1210 int vmsvga3dSetRenderTarget(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target) 1211 { 1212 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1213 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1214 return pSvgaR3State->pFuncsVGPU9->pfnSetRenderTarget(pThisCC, cid, type, target); 1215 } 1216 1217 int vmsvga3dSetTextureState(PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState) 1218 { 1219 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1220 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1221 return pSvgaR3State->pFuncsVGPU9->pfnSetTextureState(pThisCC, cid, cTextureStates, pTextureState); 1222 } 1223 1224 int vmsvga3dSetMaterial(PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial) 1225 { 1226 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1227 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1228 return pSvgaR3State->pFuncsVGPU9->pfnSetMaterial(pThisCC, cid, face, pMaterial); 1229 } 1230 1231 int vmsvga3dSetLightData(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData) 1232 { 1233 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1234 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1235 return pSvgaR3State->pFuncsVGPU9->pfnSetLightData(pThisCC, cid, index, pData); 1236 } 1237 1238 int vmsvga3dSetLightEnabled(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled) 1239 { 1240 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1241 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1242 return pSvgaR3State->pFuncsVGPU9->pfnSetLightEnabled(pThisCC, cid, index, enabled); 1243 } 1244 1245 int vmsvga3dSetViewPort(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 1246 { 1247 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1248 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1249 return pSvgaR3State->pFuncsVGPU9->pfnSetViewPort(pThisCC, cid, pRect); 1250 } 1251 1252 int vmsvga3dSetClipPlane(PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4]) 1253 { 1254 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1255 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1256 return pSvgaR3State->pFuncsVGPU9->pfnSetClipPlane(pThisCC, cid, index, plane); 1257 } 1258 1259 int vmsvga3dCommandClear(PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect) 1260 { 1261 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1262 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1263 return pSvgaR3State->pFuncsVGPU9->pfnCommandClear(pThisCC, cid, clearFlag, color, depth, stencil, cRects, pRect); 1264 } 1265 1266 int vmsvga3dDrawPrimitives(PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl, uint32_t numRanges, SVGA3dPrimitiveRange *pNumRange, uint32_t cVertexDivisor, SVGA3dVertexDivisor *pVertexDivisor) 1267 { 1268 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1269 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1270 return pSvgaR3State->pFuncsVGPU9->pfnDrawPrimitives(pThisCC, cid, numVertexDecls, pVertexDecl, numRanges, pNumRange, cVertexDivisor, pVertexDivisor); 1271 } 1272 1273 int vmsvga3dSetScissorRect(PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect) 1274 { 1275 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1276 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1277 return pSvgaR3State->pFuncsVGPU9->pfnSetScissorRect(pThisCC, cid, pRect); 1278 } 1279 1280 int vmsvga3dGenerateMipmaps(PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter) 1281 { 1282 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1283 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1284 return pSvgaR3State->pFuncsVGPU9->pfnGenerateMipmaps(pThisCC, sid, filter); 1285 } 1286 1287 int vmsvga3dShaderDefine(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData) 1288 { 1289 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1290 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1291 return pSvgaR3State->pFuncsVGPU9->pfnShaderDefine(pThisCC, cid, shid, type, cbData, pShaderData); 1292 } 1293 1294 int vmsvga3dShaderDestroy(PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type) 1295 { 1296 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1297 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1298 return pSvgaR3State->pFuncsVGPU9->pfnShaderDestroy(pThisCC, cid, shid, type); 1299 } 1300 1301 int vmsvga3dShaderSet(PVGASTATECC pThisCC, struct VMSVGA3DCONTEXT *pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid) 1302 { 1303 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1304 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1305 return pSvgaR3State->pFuncsVGPU9->pfnShaderSet(pThisCC, pContext, cid, type, shid); 1306 } 1307 1308 int vmsvga3dShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues) 1309 { 1310 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 1311 AssertReturn(pSvgaR3State->pFuncsVGPU9, VERR_NOT_IMPLEMENTED); 1312 return pSvgaR3State->pFuncsVGPU9->pfnShaderSetConst(pThisCC, cid, reg, type, ctype, cRegisters, pValues); 1313 } 1314 -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h
r88904 r89121 71 71 72 72 /* DevVGA-SVGA3d-ogl.cpp & DevVGA-SVGA3d-win.cpp: */ 73 int vmsvga3dInit(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC);74 int vmsvga3dPowerOn(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC);75 73 int vmsvga3dLoadExec(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass); 76 74 int vmsvga3dSaveExec(PPDMDEVINS pDevIns, PVGASTATECC pThisCC, PSSMHANDLE pSSM); 77 int vmsvga3dTerminate(PVGASTATECC pThisCC);78 int vmsvga3dReset(PVGASTATECC pThisCC);79 75 void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport); 80 76 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val); … … 121 117 int vmsvga3dShaderSetConst(PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues); 122 118 119 int vmsvga3dQueryCreate(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type); 123 120 int vmsvga3dQueryBegin(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type); 124 int vmsvga3dQueryEnd(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type , SVGAGuestPtr guestResult);125 int vmsvga3dQueryWait(PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult);121 int vmsvga3dQueryEnd(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type); 122 int vmsvga3dQueryWait(PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, PVGASTATE pThis, SVGAGuestPtr const *pGuestResult); 126 123 127 124 int vmsvga3dSurfaceInvalidate(PVGASTATECC pThisCC, uint32_t sid, uint32_t face, uint32_t mipmap); … … 264 261 265 262 263 /* 264 * Backend interfaces. 265 */ 266 typedef struct VMSVGA3DSURFACE *PVMSVGA3DSURFACE; 267 typedef struct VMSVGA3DMIPMAPLEVEL *PVMSVGA3DMIPMAPLEVEL; 268 typedef struct VMSVGA3DCONTEXT *PVMSVGA3DCONTEXT; 269 270 /* Essential 3D backend function. */ 271 #define VMSVGA3D_BACKEND_INTERFACE_NAME_3D "3D" 272 typedef struct 273 { 274 DECLCALLBACKMEMBER(int, pfnInit, (PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC)); 275 DECLCALLBACKMEMBER(int, pfnPowerOn, (PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC)); 276 DECLCALLBACKMEMBER(int, pfnTerminate, (PVGASTATECC pThisCC)); 277 DECLCALLBACKMEMBER(int, pfnReset, (PVGASTATECC pThisCC)); 278 DECLCALLBACKMEMBER(int, pfnQueryCaps, (PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val)); 279 DECLCALLBACKMEMBER(int, pfnChangeMode, (PVGASTATECC pThisCC)); 280 DECLCALLBACKMEMBER(int, pfnCreateTexture, (PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext, PVMSVGA3DSURFACE pSurface)); 281 DECLCALLBACKMEMBER(void, pfnSurfaceDestroy, (PVGASTATECC pThisCC, PVMSVGA3DSURFACE pSurface)); 282 DECLCALLBACKMEMBER(int, pfnSurfaceCopy, (PVGASTATECC pThisCC, SVGA3dSurfaceImageId dest, SVGA3dSurfaceImageId src, uint32_t cCopyBoxes, SVGA3dCopyBox *pBox)); 283 DECLCALLBACKMEMBER(int, pfnSurfaceDMACopyBox, (PVGASTATE pThis, PVGASTATECC pThisCC, PVMSVGA3DSTATE pState, PVMSVGA3DSURFACE pSurface, 284 PVMSVGA3DMIPMAPLEVEL pMipLevel, uint32_t uHostFace, uint32_t uHostMipmap, 285 SVGAGuestPtr GuestPtr, uint32_t cbGuestPitch, SVGA3dTransferType transfer, 286 SVGA3dCopyBox const *pBox, PVMSVGA3DCONTEXT pContext, int rc, int iBox)); 287 DECLCALLBACKMEMBER(int, pfnSurfaceStretchBlt, (PVGASTATE pThis, PVMSVGA3DSTATE pState, 288 PVMSVGA3DSURFACE pDstSurface, uint32_t uDstFace, uint32_t uDstMipmap, SVGA3dBox const *pDstBox, 289 PVMSVGA3DSURFACE pSrcSurface, uint32_t uSrcFace, uint32_t uSrcMipmap, SVGA3dBox const *pSrcBox, 290 SVGA3dStretchBltMode enmMode, PVMSVGA3DCONTEXT pContext)); 291 DECLCALLBACKMEMBER(void, pfnUpdateHostScreenViewport, (PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport)); 292 /** @todo HW accelerated screen output probably needs a separate interface. */ 293 DECLCALLBACKMEMBER(int, pfnDefineScreen, (PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen)); 294 DECLCALLBACKMEMBER(int, pfnDestroyScreen, (PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen)); 295 DECLCALLBACKMEMBER(int, pfnSurfaceBlitToScreen, (PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, 296 SVGASignedRect destRect, SVGA3dSurfaceImageId srcImage, 297 SVGASignedRect srcRect, uint32_t cRects, SVGASignedRect *paRects)); 298 } VMSVGA3DBACKENDFUNCS3D; 299 300 /* VGPU9 3D */ 301 #define VMSVGA3D_BACKEND_INTERFACE_NAME_VGPU9 "VGPU9" 302 typedef struct 303 { 304 DECLCALLBACKMEMBER(int, pfnContextDefine, (PVGASTATECC pThisCC, uint32_t cid)); 305 DECLCALLBACKMEMBER(int, pfnContextDestroy, (PVGASTATECC pThisCC, uint32_t cid)); 306 DECLCALLBACKMEMBER(int, pfnSetTransform, (PVGASTATECC pThisCC, uint32_t cid, SVGA3dTransformType type, float matrix[16])); 307 DECLCALLBACKMEMBER(int, pfnSetZRange, (PVGASTATECC pThisCC, uint32_t cid, SVGA3dZRange zRange)); 308 DECLCALLBACKMEMBER(int, pfnSetRenderState, (PVGASTATECC pThisCC, uint32_t cid, uint32_t cRenderStates, SVGA3dRenderState *pRenderState)); 309 DECLCALLBACKMEMBER(int, pfnSetRenderTarget, (PVGASTATECC pThisCC, uint32_t cid, SVGA3dRenderTargetType type, SVGA3dSurfaceImageId target)); 310 DECLCALLBACKMEMBER(int, pfnSetTextureState, (PVGASTATECC pThisCC, uint32_t cid, uint32_t cTextureStates, SVGA3dTextureState *pTextureState)); 311 DECLCALLBACKMEMBER(int, pfnSetMaterial, (PVGASTATECC pThisCC, uint32_t cid, SVGA3dFace face, SVGA3dMaterial *pMaterial)); 312 DECLCALLBACKMEMBER(int, pfnSetLightData, (PVGASTATECC pThisCC, uint32_t cid, uint32_t index, SVGA3dLightData *pData)); 313 DECLCALLBACKMEMBER(int, pfnSetLightEnabled, (PVGASTATECC pThisCC, uint32_t cid, uint32_t index, uint32_t enabled)); 314 DECLCALLBACKMEMBER(int, pfnSetViewPort, (PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)); 315 DECLCALLBACKMEMBER(int, pfnSetClipPlane, (PVGASTATECC pThisCC, uint32_t cid, uint32_t index, float plane[4])); 316 DECLCALLBACKMEMBER(int, pfnCommandClear, (PVGASTATECC pThisCC, uint32_t cid, SVGA3dClearFlag clearFlag, uint32_t color, float depth, uint32_t stencil, uint32_t cRects, SVGA3dRect *pRect)); 317 DECLCALLBACKMEMBER(int, pfnDrawPrimitives, (PVGASTATECC pThisCC, uint32_t cid, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl, uint32_t numRanges, SVGA3dPrimitiveRange *pNumRange, uint32_t cVertexDivisor, SVGA3dVertexDivisor *pVertexDivisor)); 318 DECLCALLBACKMEMBER(int, pfnSetScissorRect, (PVGASTATECC pThisCC, uint32_t cid, SVGA3dRect *pRect)); 319 DECLCALLBACKMEMBER(int, pfnGenerateMipmaps, (PVGASTATECC pThisCC, uint32_t sid, SVGA3dTextureFilter filter)); 320 DECLCALLBACKMEMBER(int, pfnShaderDefine, (PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type, uint32_t cbData, uint32_t *pShaderData)); 321 DECLCALLBACKMEMBER(int, pfnShaderDestroy, (PVGASTATECC pThisCC, uint32_t cid, uint32_t shid, SVGA3dShaderType type)); 322 DECLCALLBACKMEMBER(int, pfnShaderSet, (PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t cid, SVGA3dShaderType type, uint32_t shid)); 323 DECLCALLBACKMEMBER(int, pfnShaderSetConst, (PVGASTATECC pThisCC, uint32_t cid, uint32_t reg, SVGA3dShaderType type, SVGA3dShaderConstType ctype, uint32_t cRegisters, uint32_t *pValues)); 324 DECLCALLBACKMEMBER(int, pfnOcclusionQueryCreate, (PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext)); 325 DECLCALLBACKMEMBER(int, pfnOcclusionQueryDelete, (PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext)); 326 DECLCALLBACKMEMBER(int, pfnOcclusionQueryBegin, (PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext)); 327 DECLCALLBACKMEMBER(int, pfnOcclusionQueryEnd, (PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext)); 328 DECLCALLBACKMEMBER(int, pfnOcclusionQueryGetData, (PVGASTATECC pThisCC, PVMSVGA3DCONTEXT pContext, uint32_t *pu32Pixels)); 329 } VMSVGA3DBACKENDFUNCSVGPU9; 330 331 /* Support for Guest-Backed Objects. */ 266 332 #define VMSVGA3D_BACKEND_INTERFACE_NAME_GBO "GBO" 267 333 typedef struct
Note:
See TracChangeset
for help on using the changeset viewer.