Changeset 86886 in vbox
- Timestamp:
- Nov 14, 2020 2:30:53 AM (4 years ago)
- Location:
- trunk/src/VBox/Devices/Graphics
- Files:
-
- 5 edited
-
DevVGA-SVGA-cmd.cpp (modified) (7 diffs)
-
DevVGA-SVGA-internal.h (modified) (1 diff)
-
DevVGA-SVGA.cpp (modified) (3 diffs)
-
DevVGA-SVGA3d-win-dx.cpp (modified) (5 diffs)
-
DevVGA-SVGA3d.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA-cmd.cpp
r86885 r86886 279 279 # ifdef VBOX_WITH_VMSVGA3D 280 280 /* 281 * Stub sfor old backends.281 * Stub for old backends. 282 282 */ 283 int vmsvga3dScreenTargetBind(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, uint32_t sid)284 {285 RT_NOREF(pThisCC, pScreen, sid);286 return VERR_NOT_IMPLEMENTED;287 }288 289 int vmsvga3dScreenTargetUpdate(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, SVGA3dRect const *pRect)290 {291 RT_NOREF(pThisCC, pScreen, pRect);292 return VERR_NOT_IMPLEMENTED;293 }294 295 int vmsvga3dSurfaceMap(PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pImage, SVGA3dBox const *pBox, VMSVGA3D_SURFACE_MAP enmMapType, VMSVGA3D_MAPPED_SURFACE *pMap)296 {297 RT_NOREF(pThisCC, pImage, pBox, enmMapType, pMap);298 return VERR_NOT_IMPLEMENTED;299 }300 301 int vmsvga3dSurfaceUnmap(PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pImage, VMSVGA3D_MAPPED_SURFACE *pMap, bool fWritten)302 {303 RT_NOREF(pThisCC, pImage, pMap, fWritten);304 return VERR_NOT_IMPLEMENTED;305 }306 307 283 int vmsvga3dQueryInterface(PVGASTATECC pThisCC, char const *pszInterfaceName, void *pvInterfaceFuncs, size_t cbInterfaceFuncs) 308 284 { … … 1245 1221 { 1246 1222 VMSVGA3D_MAPPED_SURFACE map; 1247 rc = vmsvga3dSurfaceMap(pThisCC, &pCmd->image, &pCmd->box, VMSVGA3D_SURFACE_MAP_WRITE_DISCARD, &map);1223 rc = pSvgaR3State->pFuncsMap->pfnSurfaceMap(pThisCC, &pCmd->image, &pCmd->box, VMSVGA3D_SURFACE_MAP_WRITE_DISCARD, &map); 1248 1224 if (RT_SUCCESS(rc)) 1249 1225 { … … 1271 1247 // vmsvga3dMapWriteBmpFile(&map, "Dynamic"); 1272 1248 1273 vmsvga3dSurfaceUnmap(pThisCC, &pCmd->image, &map, /* fWritten = */true);1249 pSvgaR3State->pFuncsMap->pfnSurfaceUnmap(pThisCC, &pCmd->image, &map, /* fWritten = */true); 1274 1250 } 1275 1251 } … … 1441 1417 { 1442 1418 VMSVGASCREENOBJECT *pScreen = &pSvgaR3State->aScreens[pCmd->stid]; 1443 rc = vmsvga3dScreenTargetBind(pThisCC, pScreen, pCmd->image.sid);1419 rc = pSvgaR3State->pFuncsGBO->pfnScreenTargetBind(pThisCC, pScreen, pCmd->image.sid); 1444 1420 AssertRC(rc); 1445 1421 } … … 1485 1461 { 1486 1462 /* Copy the screen target surface to the backend's screen. */ 1487 vmsvga3dScreenTargetUpdate(pThisCC, pScreen, &targetRect);1463 pSvgaR3State->pFuncsGBO->pfnScreenTargetUpdate(pThisCC, pScreen, &targetRect); 1488 1464 } 1489 1465 else if (pScreen->pvScreenBitmap) … … 1491 1467 /* Copy the screen target surface to the memory buffer. */ 1492 1468 VMSVGA3D_MAPPED_SURFACE map; 1493 rc = vmsvga3dSurfaceMap(pThisCC, &entryScreenTarget.image, NULL, VMSVGA3D_SURFACE_MAP_READ, &map);1469 rc = pSvgaR3State->pFuncsMap->pfnSurfaceMap(pThisCC, &entryScreenTarget.image, NULL, VMSVGA3D_SURFACE_MAP_READ, &map); 1494 1470 if (RT_SUCCESS(rc)) 1495 1471 { … … 1508 1484 } 1509 1485 1510 vmsvga3dSurfaceUnmap(pThisCC, &entryScreenTarget.image, &map, /* fWritten = */ false);1486 pSvgaR3State->pFuncsMap->pfnSurfaceUnmap(pThisCC, &entryScreenTarget.image, &map, /* fWritten = */ false); 1511 1487 1512 1488 vmsvgaR3UpdateScreen(pThisCC, pScreen, pCmd->rect.x, pCmd->rect.y, pCmd->rect.w, pCmd->rect.h); -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA-internal.h
r86885 r86886 190 190 191 191 # ifdef VBOX_WITH_VMSVGA3D 192 VMSVGA3DBACKENDFUNCSMAP *pFuncsMap; 193 VMSVGA3DBACKENDFUNCSGBO *pFuncsGBO; 192 194 VMSVGA3DBACKENDFUNCSDX *pFuncsDX; 193 195 # endif -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.cpp
r86885 r86886 5666 5666 5667 5667 # ifdef VBOX_WITH_VMSVGA3D 5668 RTMemFree(pSVGAState->pFuncsMap); 5669 pSVGAState->pFuncsMap = NULL; 5670 RTMemFree(pSVGAState->pFuncsGBO); 5671 pSVGAState->pFuncsGBO = NULL; 5668 5672 RTMemFree(pSVGAState->pFuncsDX); 5669 5673 pSVGAState->pFuncsDX = NULL; … … 5721 5725 5722 5726 vmsvga3dQueryInterface(pThisCC, VMSVGA3D_BACKEND_INTERFACE_NAME_DX, pSVGAState->pFuncsDX, sizeof(VMSVGA3DBACKENDFUNCSDX)); 5727 } 5728 5729 rc = vmsvga3dQueryInterface(pThisCC, VMSVGA3D_BACKEND_INTERFACE_NAME_MAP, NULL, sizeof(VMSVGA3DBACKENDFUNCSMAP)); 5730 if (RT_SUCCESS(rc)) 5731 { 5732 pSVGAState->pFuncsMap = (VMSVGA3DBACKENDFUNCSMAP *)RTMemAllocZ(sizeof(VMSVGA3DBACKENDFUNCSMAP)); 5733 AssertReturn(pSVGAState->pFuncsMap, VERR_NO_MEMORY); 5734 5735 vmsvga3dQueryInterface(pThisCC, VMSVGA3D_BACKEND_INTERFACE_NAME_MAP, pSVGAState->pFuncsMap, sizeof(VMSVGA3DBACKENDFUNCSMAP)); 5736 } 5737 5738 rc = vmsvga3dQueryInterface(pThisCC, VMSVGA3D_BACKEND_INTERFACE_NAME_GBO, NULL, sizeof(VMSVGA3DBACKENDFUNCSGBO)); 5739 if (RT_SUCCESS(rc)) 5740 { 5741 pSVGAState->pFuncsGBO = (VMSVGA3DBACKENDFUNCSGBO *)RTMemAllocZ(sizeof(VMSVGA3DBACKENDFUNCSGBO)); 5742 AssertReturn(pSVGAState->pFuncsGBO, VERR_NO_MEMORY); 5743 5744 vmsvga3dQueryInterface(pThisCC, VMSVGA3D_BACKEND_INTERFACE_NAME_GBO, pSVGAState->pFuncsGBO, sizeof(VMSVGA3DBACKENDFUNCSGBO)); 5723 5745 } 5724 5746 … … 5755 5777 pThis->svga.u32DeviceCaps |= SVGA_CAP_COMMAND_BUFFERS /* Enable register based command buffer submission. */ 5756 5778 // | SVGA_CAP_CMD_BUFFERS_2 /* Support for SVGA_REG_CMD_PREPEND_LOW/HIGH */ 5757 // | SVGA_CAP_GBOBJECTS /* Enable guest-backed objects and surfaces. */5758 5779 ; 5759 5780 5760 5781 # ifdef VBOX_WITH_VMSVGA3D 5761 5782 PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State; 5783 if (pSVGAState->pFuncsGBO) 5784 pThis->svga.u32DeviceCaps |= SVGA_CAP_GBOBJECTS; /* Enable guest-backed objects and surfaces. */ 5762 5785 if (pSVGAState->pFuncsDX) 5763 5786 pThis->svga.u32DeviceCaps |= SVGA_CAP_CMD_BUFFERS_3; /* AKA SVGA_CAP_DX. Enable support for DX commands, and command buffers in a mob. */ -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win-dx.cpp
r86885 r86886 893 893 894 894 895 intvmsvga3dSurfaceMap(PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pImage, SVGA3dBox const *pBox,896 VMSVGA3D_SURFACE_MAP enmMapType, VMSVGA3D_MAPPED_SURFACE *pMap)895 static DECLCALLBACK(int) vmsvga3dSurfaceMap(PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pImage, SVGA3dBox const *pBox, 896 VMSVGA3D_SURFACE_MAP enmMapType, VMSVGA3D_MAPPED_SURFACE *pMap) 897 897 { 898 898 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 987 987 988 988 989 intvmsvga3dSurfaceUnmap(PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pImage, VMSVGA3D_MAPPED_SURFACE *pMap, bool fWritten)989 static DECLCALLBACK(int) vmsvga3dSurfaceUnmap(PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pImage, VMSVGA3D_MAPPED_SURFACE *pMap, bool fWritten) 990 990 { 991 991 PVMSVGA3DSTATE pState = pThisCC->svga.p3dState; … … 1122 1122 1123 1123 1124 intvmsvga3dScreenTargetBind(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, uint32_t sid)1124 static DECLCALLBACK(int) vmsvga3dScreenTargetBind(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, uint32_t sid) 1125 1125 { 1126 1126 int rc = VINF_SUCCESS; … … 1173 1173 1174 1174 1175 intvmsvga3dScreenTargetUpdate(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, SVGA3dRect const *pRect)1175 static DECLCALLBACK(int) vmsvga3dScreenTargetUpdate(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, SVGA3dRect const *pRect) 1176 1176 { 1177 1177 VMSVGAHWSCREEN *pHwScreen = pScreen->pHwScreen; … … 3117 3117 } 3118 3118 } 3119 else if (RTStrCmp(pszInterfaceName, VMSVGA3D_BACKEND_INTERFACE_NAME_MAP) == 0) 3120 { 3121 if (cbInterfaceFuncs == sizeof(VMSVGA3DBACKENDFUNCSMAP)) 3122 { 3123 if (pvInterfaceFuncs) 3124 { 3125 VMSVGA3DBACKENDFUNCSMAP *p = (VMSVGA3DBACKENDFUNCSMAP *)pvInterfaceFuncs; 3126 p->pfnSurfaceMap = vmsvga3dSurfaceMap; 3127 p->pfnSurfaceUnmap = vmsvga3dSurfaceUnmap; 3128 } 3129 } 3130 else 3131 { 3132 AssertFailed(); 3133 rc = VERR_INVALID_PARAMETER; 3134 } 3135 } 3136 else if (RTStrCmp(pszInterfaceName, VMSVGA3D_BACKEND_INTERFACE_NAME_GBO) == 0) 3137 { 3138 if (cbInterfaceFuncs == sizeof(VMSVGA3DBACKENDFUNCSGBO)) 3139 { 3140 if (pvInterfaceFuncs) 3141 { 3142 VMSVGA3DBACKENDFUNCSGBO *p = (VMSVGA3DBACKENDFUNCSGBO *)pvInterfaceFuncs; 3143 p->pfnScreenTargetBind = vmsvga3dScreenTargetBind; 3144 p->pfnScreenTargetUpdate = vmsvga3dScreenTargetUpdate; 3145 } 3146 } 3147 else 3148 { 3149 AssertFailed(); 3150 rc = VERR_INVALID_PARAMETER; 3151 } 3152 } 3119 3153 else 3120 3154 rc = VERR_NOT_IMPLEMENTED; -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h
r86885 r86886 130 130 int vmsvga3dQueryWait(PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t cid, SVGA3dQueryType type, SVGAGuestPtr guestResult); 131 131 132 int vmsvga3dScreenTargetBind(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, uint32_t sid);133 int vmsvga3dScreenTargetUpdate(PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, SVGA3dRect const *pRect);134 135 int vmsvga3dSurfaceMap(PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pImage, SVGA3dBox const *pBox, VMSVGA3D_SURFACE_MAP enmMapType, VMSVGA3D_MAPPED_SURFACE *pMap);136 int vmsvga3dSurfaceUnmap(PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pImage, VMSVGA3D_MAPPED_SURFACE *pMap, bool fWritten);137 138 132 /* DevVGA-SVGA3d-shared.h: */ 139 133 #if defined(RT_OS_WINDOWS) && defined(IN_RING3) … … 271 265 const char *vmsvga3dPrimitiveType2String(SVGA3dPrimitiveType PrimitiveType); 272 266 #endif 267 268 269 #define VMSVGA3D_BACKEND_INTERFACE_NAME_GBO "GBO" 270 typedef struct 271 { 272 DECLCALLBACKMEMBER(int, pfnScreenTargetBind, (PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, uint32_t sid)); 273 DECLCALLBACKMEMBER(int, pfnScreenTargetUpdate, (PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen, SVGA3dRect const *pRect)); 274 } VMSVGA3DBACKENDFUNCSGBO; 275 276 #define VMSVGA3D_BACKEND_INTERFACE_NAME_MAP "MAP" 277 typedef struct 278 { 279 DECLCALLBACKMEMBER(int, pfnSurfaceMap, (PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pImage, SVGA3dBox const *pBox, VMSVGA3D_SURFACE_MAP enmMapType, VMSVGA3D_MAPPED_SURFACE *pMap)); 280 DECLCALLBACKMEMBER(int, pfnSurfaceUnmap, (PVGASTATECC pThisCC, SVGA3dSurfaceImageId const *pImage, VMSVGA3D_MAPPED_SURFACE *pMap, bool fWritten)); 281 } VMSVGA3DBACKENDFUNCSMAP; 273 282 274 283 #define VMSVGA3D_BACKEND_INTERFACE_NAME_DX "DX"
Note:
See TracChangeset
for help on using the changeset viewer.

