- Timestamp:
- Apr 1, 2014 11:22:34 AM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 93088
- Location:
- trunk/src/VBox
- Files:
-
- 2 deleted
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxD3DIf.cpp
r49449 r50940 571 571 HANDLE hSharedHandle = pAllocation->hSharedHandle; 572 572 IDirect3DSurface9* pD3D9Surf; 573 if ((pDevice->pAdapter->u32VBox3DCaps & CR_VBOX_CAP_TEX_PRESENT) || pAllocation->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC) 573 if ( 574 #ifdef VBOX_WITH_CROGL 575 (pDevice->pAdapter->u32VBox3DCaps & CR_VBOX_CAP_TEX_PRESENT) || 576 #endif 577 pAllocation->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC) 574 578 { 575 579 hr = pDevice9If->CreateRenderTarget(pAllocation->SurfDesc.width, … … 825 829 VBOXWINEEX_D3DPRESENT_PARAMETERS Params; 826 830 VBoxD3DIfFillPresentParams(&Params.Base, &Rc, 2); 831 #ifdef VBOX_WITH_CRHGSMI 827 832 Params.pHgsmi = &pDevice->Uhgsmi.BasePrivate.Base; 833 #else 834 Params.pHgsmi = NULL; 835 #endif 828 836 DWORD fFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING; 829 837 PVBOXWDDMDISP_ADAPTER pAdapter = pDevice->pAdapter; -
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispCm.cpp
r49591 r50940 23 23 #include <iprt/list.h> 24 24 25 #ifdef VBOX_WITH_CROGL 25 26 #include <cr_protocol.h> 27 #endif 26 28 27 29 typedef struct VBOXDISPCM_SESSION … … 121 123 { 122 124 Info.enmType = VBOXWDDM_CONTEXT_TYPE_CUSTOM_3D; 125 #ifdef VBOX_WITH_CROGL 123 126 Info.crVersionMajor = CR_PROTOCOL_VERSION_MAJOR; 124 127 Info.crVersionMinor = CR_PROTOCOL_VERSION_MINOR; 128 #else 129 WARN(("not expected")); 130 Info.crVersionMajor = 0; 131 Info.crVersionMinor = 0; 132 #endif 125 133 fIsCrContext = TRUE; 126 134 } … … 166 174 if (fIsCrContext) 167 175 { 176 #ifdef VBOX_WITH_CRHGSMI 168 177 if (pDevice->pAdapter->u32VBox3DCaps & CR_VBOX_CAP_CMDVBVA) 169 178 vboxUhgsmiD3DInit(&pDevice->Uhgsmi, pDevice); 170 179 else 171 180 vboxUhgsmiD3DEscInit(&pDevice->Uhgsmi, pDevice); 181 #endif 172 182 } 173 183 } -
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp
r50628 r50940 1479 1479 if (!pDevice->pDevice9If) 1480 1480 { 1481 #ifdef VBOX_WITH_CRHGSMI 1481 1482 Params.pHgsmi = &pDevice->Uhgsmi.BasePrivate.Base; 1483 #else 1484 Params.pHgsmi = NULL; 1485 #endif 1482 1486 hr = pAdapter->D3D.pD3D9If->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, NULL, fFlags, &Params.Base, &pDevice9If); 1483 1487 Assert(hr == S_OK); … … 4691 4695 } 4692 4696 #endif 4697 #ifdef VBOX_WITH_CROGL 4693 4698 if (pAdapter->u32VBox3DCaps & CR_VBOX_CAP_TEX_PRESENT) 4694 4699 { … … 4709 4714 } 4710 4715 else 4716 #endif 4711 4717 { 4712 4718 pAdapter->D3D.D3D.pfnVBoxWineExD3DDev9FlushToHost((IDirect3DDevice9Ex*)pDevice->pDevice9If); -
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.h
r50628 r50940 204 204 D3DVIEWPORT9 ViewPort; 205 205 VBOXWDDMDISP_CONTEXT DefaultContext; 206 #ifdef VBOX_WITH_CRHGSMI 206 207 VBOXUHGSMI_PRIVATE_D3D Uhgsmi; 208 #endif 207 209 208 210 /* no lock is needed for this since we're guaranteed the per-device calls are not reentrant */ -
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3DCmn.h
r48070 r50940 44 44 #include "VBoxD3DIf.h" 45 45 #endif 46 #ifdef VBOX_WITH_CROGL 46 47 #include <cr_protocol.h> 48 #endif 47 49 48 50 # ifdef VBOXWDDMDISP -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/Makefile.kmk
r49332 r50940 119 119 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/HGSMIBase.cpp \ 120 120 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/VBVABase.cpp \ 121 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/Modesetting.cpp \122 $(PATH_ROOT)/src/VBox/GuestHost/OpenGL/util/vreg.cpp121 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/Modesetting.cpp 122 123 123 if defined(VBOX_WITH_CROGL) 124 124 VBoxVideoWddm_SOURCES += \ 125 $(PATH_ROOT)/src/VBox/GuestHost/OpenGL/util/vreg.cpp 125 126 $(PATH_ROOT)/src/VBox/GuestHost/OpenGL/packer/pack_buffer.c \ 126 127 $(PATH_ROOT)/src/VBox/GuestHost/OpenGL/packer/pack_bounds.c \ -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPDevExt.h
r50677 r50940 127 127 /* this is examined and swicthed by DxgkDdiSubmitCommand only! */ 128 128 volatile BOOLEAN fRenderToShadowDisabled; 129 129 #ifdef VBOX_WITH_CROGL 130 130 BOOLEAN f3DEnabled; 131 131 BOOLEAN fTexPresentEnabled; … … 138 138 VBOXMP_CRCTLCON CrCtlCon; 139 139 VBOXMP_CRSHGSMITRANSPORT CrHgsmiTransport; 140 140 #endif 141 141 VBOXWDDM_GLOBAL_POINTER_INFO PointerInfo; 142 142 … … 220 220 DECLINLINE(ULONG) vboxWddmVramCpuVisibleSize(PVBOXMP_DEVEXT pDevExt) 221 221 { 222 #ifdef VBOX_WITH_CROGL 222 223 if (pDevExt->fCmdVbvaEnabled) 223 224 { … … 229 230 return (ULONG)(pDevExt->CmdVbva.Vbva.offVRAMBuffer & ~0xfffULL); 230 231 } 232 #endif 231 233 /* all memory layout info should be initialized */ 232 234 Assert(pDevExt->aSources[0].Vbva.Vbva.offVRAMBuffer); -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPCr.cpp
r50913 r50940 16 16 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. 17 17 */ 18 #ifdef VBOX_WITH_CROGL 18 19 19 20 #include "VBoxMPWddm.h" … … 22 23 #include <VBox/HostServices/VBoxCrOpenGLSvc.h> 23 24 24 #ifdef VBOX_WITH_CROGL25 25 #include <cr_protocol.h> 26 26 … … 746 746 } 747 747 748 #endif749 750 748 static int vboxMpCrCtlAddRef(PVBOXMP_CRCTLCON pCrCtlCon) 751 749 { … … 1012 1010 g_VBoxMpCrHostCaps = 0; 1013 1011 1014 #ifdef VBOX_WITH_CROGL1015 1012 VBOXMP_CRCTLCON CrCtlCon = {0}; 1016 1013 uint32_t u32ClientID = 0; … … 1038 1035 if (RT_FAILURE(rc)) 1039 1036 WARN(("VBoxMpCrCtlConDisconnectHgcm failed rc (%d), ignoring..", rc)); 1040 #endif1041 1037 } 1042 1038 … … 1073 1069 } 1074 1070 1071 #endif -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPCr.h
r50859 r50940 18 18 #ifndef ___VBoxMPCr_h__ 19 19 #define ___VBoxMPCr_h__ 20 21 #ifdef VBOX_WITH_CROGL 20 22 21 23 #include <VBox/VBoxGuestLib.h> … … 216 218 #define VBOXMP_CRCMD_SIZE_DESTROYCONTEXT (12 + 4) 217 219 220 #endif /* #ifdef VBOX_WITH_CROGL */ 221 218 222 #endif /* #ifndef ___VBoxMPCr_h__ */ -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.cpp
r50927 r50940 180 180 return NULL; 181 181 } 182 182 #ifdef VBOX_WITH_CROGL 183 183 PVBOXWDDM_SWAPCHAIN vboxWddmSwapchainCreate(UINT w, UINT h) 184 184 { … … 572 572 vboxWddmHTableDestroy(&pContext->Swapchains); 573 573 } 574 574 #endif 575 575 NTSTATUS vboxWddmRegQueryDrvKeyName(PVBOXMP_DEVEXT pDevExt, ULONG cbBuf, PWCHAR pBuf, PULONG pcbResult) 576 576 { -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.h
r48070 r50940 70 70 PVOID vboxWddmHTableGet(PVBOXWDDM_HTABLE pTbl, VBOXWDDM_HANDLE hHandle); 71 71 72 72 #ifdef VBOX_WITH_CROGL 73 73 PVBOXWDDM_SWAPCHAIN vboxWddmSwapchainCreate(); 74 74 BOOLEAN vboxWddmSwapchainRetain(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain); … … 84 84 NTSTATUS vboxWddmSwapchainCtxInit(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext); 85 85 VOID vboxWddmSwapchainCtxTerm(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext); 86 #endif 86 87 87 88 -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPTypes.h
r50628 r50940 21 21 22 22 typedef struct _VBOXMP_DEVEXT *PVBOXMP_DEVEXT; 23 #ifdef VBOX_WITH_CROGL 23 24 typedef struct VBOXWDDM_SWAPCHAIN *PVBOXWDDM_SWAPCHAIN; 25 #endif 24 26 typedef struct VBOXWDDM_CONTEXT *PVBOXWDDM_CONTEXT; 25 27 typedef struct VBOXWDDM_ALLOCATION *PVBOXWDDM_ALLOCATION; … … 33 35 #include "VBoxMPCr.h" 34 36 37 #ifdef VBOX_WITH_CROGL 35 38 #include <cr_vreg.h> 39 #endif 36 40 37 41 #ifdef DEBUG_misha … … 126 130 uint8_t u8SyncState; 127 131 BOOLEAN bVisible; 132 #ifdef VBOX_WITH_CROGL 128 133 /* specifies whether the source has 3D overlay data visible */ 129 134 BOOLEAN fHas3DVrs; 130 135 VBOXVR_LIST VrList; 136 #endif 131 137 VBOXVBVAINFO Vbva; 132 138 #ifdef VBOX_WITH_VIDEOHWACCEL … … 231 237 #define VBOXWDDM_INVALID_COORD ((LONG)((~0UL) >> 1)) 232 238 239 #ifdef VBOX_WITH_CROGL 233 240 typedef struct VBOXWDDM_SWAPCHAIN 234 241 { … … 247 254 VBOXVR_LIST VisibleRegions; 248 255 }VBOXWDDM_SWAPCHAIN, *PVBOXWDDM_SWAPCHAIN; 256 #endif 249 257 250 258 typedef struct VBOXWDDM_CONTEXT … … 256 264 UINT EngineAffinity; 257 265 BOOLEAN fRenderFromShadowDisabled; 266 #ifdef VBOX_WITH_CROGL 258 267 int32_t hostID; 259 268 uint32_t u32CrConClientID; 260 269 VBOXMP_CRPACKER CrPacker; 261 270 VBOXWDDM_HTABLE Swapchains; 271 #endif 262 272 VBOXVIDEOCM_CTX CmContext; 263 273 VBOXVIDEOCM_ALLOC_CONTEXT AllocContext; -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVbva.cpp
r50933 r50940 98 98 } 99 99 100 #ifdef VBOX_WITH_CROGL 100 101 /* command vbva ring buffer */ 101 102 … … 1287 1288 return pCmd->Hdr.i32Result; 1288 1289 } 1290 #endif -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVbva.h
r50859 r50940 59 59 60 60 61 #ifdef VBOX_WITH_CROGL 61 62 /* customized VBVA implementation */ 62 63 struct VBVAEXBUFFERCONTEXT; … … 232 233 int VBoxCmdVbvaConCmdSubmitAsync(PVBOXMP_DEVEXT pDevExt, VBOXCMDVBVA_CRCMD_CMD* pCmd, FNVBOXSHGSMICMDCOMPLETION pfnCompletion, void *pvCompletion); 233 234 int VBoxCmdVbvaConCmdCompletionData(void *pvCmd, VBOXCMDVBVA_CRCMD_CMD **ppCmd); 235 #endif /* #ifdef VBOX_WITH_CROGL */ 234 236 235 237 #endif /* #ifndef ___VBoxMPVbva_h___ */ -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVdma.cpp
r50859 r50940 23 23 #include <iprt/asm.h> 24 24 #include "VBoxMPCr.h" 25 25 #include <iprt/mem.h> 26 27 #ifdef VBOX_WITH_CROGL 26 28 # include <packer.h> 29 #endif 27 30 28 31 NTSTATUS vboxVdmaPipeConstruct(PVBOXVDMAPIPE pPipe) … … 263 266 return true; 264 267 } 265 268 #ifdef VBOX_WITH_CROGL 266 269 NTSTATUS vboxVdmaPostHideSwapchain(PVBOXWDDM_SWAPCHAIN pSwapchain) 267 270 { … … 283 286 return STATUS_NO_MEMORY; 284 287 } 285 288 #endif 286 289 static VOID vboxWddmBltPipeRectsTranslate(VBOXVDMAPIPE_RECTS *pRects, int x, int y) 287 290 { … … 306 309 return pDup; 307 310 } 308 311 #ifdef VBOX_WITH_CROGL 309 312 typedef struct VBOXMP_VDMACR_WRITECOMPLETION 310 313 { … … 640 643 return Status; 641 644 } 645 #endif 642 646 643 647 static NTSTATUS vboxVdmaGgDmaColorFill(PVBOXMP_DEVEXT pDevExt, VBOXVDMA_CLRFILL *pCF) … … 845 849 } 846 850 851 #ifdef VBOX_WITH_CROGL 847 852 typedef struct VBOXVDMA_CRRXGENERICSYNC 848 853 { … … 1277 1282 } 1278 1283 } 1284 #endif 1279 1285 1280 1286 NTSTATUS vboxVdmaProcessBltCmd(PVBOXMP_DEVEXT pDevExt, VBOXWDDM_CONTEXT *pContext, VBOXWDDM_DMA_PRIVATEDATA_BLT *pBlt) … … 1285 1291 BOOLEAN fRenderFromSharedDisabled = pDevExt->fRenderToShadowDisabled; 1286 1292 BOOLEAN fVRAMUpdated = FALSE; 1287 1293 #ifdef VBOX_WITH_CROGL 1288 1294 if (!pDstAlloc->AllocData.hostID && !pSrcAlloc->AllocData.hostID) 1295 #endif 1289 1296 { 1290 1297 /* the allocations contain a real data in VRAM, do blitting */ … … 1293 1300 } 1294 1301 1302 #ifdef VBOX_WITH_CROGL 1295 1303 if (VBOXWDDM_IS_REAL_FB_ALLOCATION(pDevExt, pDstAlloc) 1296 1304 && pDstAlloc->bVisible) … … 1311 1319 } 1312 1320 } 1313 1321 #endif 1314 1322 return Status; 1315 1323 } … … 1321 1329 VBOXWDDM_SOURCE *pSource = &pDevExt->aSources[pAlloc->AllocData.SurfDesc.VidPnSourceId]; 1322 1330 vboxWddmAssignPrimary(pDevExt, pSource, pAlloc, pAlloc->AllocData.SurfDesc.VidPnSourceId); 1331 #ifdef VBOX_WITH_CROGL 1323 1332 if (pAlloc->AllocData.hostID) 1324 1333 { … … 1341 1350 } 1342 1351 else 1352 #endif 1353 { 1343 1354 WARN(("unexpected flip request")); 1355 } 1344 1356 1345 1357 return Status; … … 1350 1362 NTSTATUS Status = STATUS_SUCCESS; 1351 1363 PVBOXWDDM_ALLOCATION pAlloc = pCF->ClrFill.Alloc.pAlloc; 1352 1364 #ifdef VBOX_WITH_CROGL 1353 1365 if (!pAlloc->AllocData.hostID) 1366 #endif 1354 1367 { 1355 1368 Status = vboxVdmaGgDmaColorFill(pDevExt, &pCF->ClrFill); … … 1357 1370 WARN(("vboxVdmaGgDmaColorFill failed Status 0x%x", Status)); 1358 1371 } 1372 #ifdef VBOX_WITH_CROGL 1359 1373 else 1360 1374 WARN(("unexpected clrfill request")); 1375 #endif 1361 1376 1362 1377 return Status; -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVdma.h
r47566 r50940 197 197 } VBOXVDMAPIPE_CMD_RECTSINFO, *PVBOXVDMAPIPE_CMD_RECTSINFO; 198 198 199 typedef struct VBOXVDMAPIPE_CMD_FINISH200 {201 VBOXVDMAPIPE_CMD_DR Hdr;202 PVBOXWDDM_CONTEXT pContext;203 PKEVENT pEvent;204 } VBOXVDMAPIPE_CMD_FINISH, *PVBOXVDMAPIPE_CMD_FINISH;205 206 typedef struct VBOXVDMAPIPE_CMD_CANCEL207 {208 VBOXVDMAPIPE_CMD_DR Hdr;209 PVBOXWDDM_CONTEXT pContext;210 PVBOXWDDM_SWAPCHAIN pSwapchain;211 PKEVENT pEvent;212 } VBOXVDMAPIPE_CMD_CANCEL, *PVBOXVDMAPIPE_CMD_CANCEL;213 214 199 typedef struct VBOXVDMAPIPE_CMD_DMACMD 215 200 { … … 316 301 317 302 #endif 318 303 #ifdef VBOX_WITH_CROGL 319 304 NTSTATUS vboxVdmaPostHideSwapchain(PVBOXWDDM_SWAPCHAIN pSwapchain); 305 #endif 320 306 321 307 NTSTATUS vboxVdmaGgCmdDmaNotifyCompleted(PVBOXMP_DEVEXT pDevExt, PVBOXVDMAPIPE_CMD_DMACMD pCmd, DXGK_INTERRUPT_TYPE enmComplType); … … 333 319 NTSTATUS vboxVdmaProcessFlipCmd(PVBOXMP_DEVEXT pDevExt, struct VBOXWDDM_CONTEXT *pContext, struct VBOXWDDM_DMA_PRIVATEDATA_FLIP *pFlip); 334 320 NTSTATUS vboxVdmaProcessClrFillCmd(PVBOXMP_DEVEXT pDevExt, struct VBOXWDDM_CONTEXT *pContext, struct VBOXWDDM_DMA_PRIVATEDATA_CLRFILL *pCF); 335 321 #ifdef VBOX_WITH_CROGL 336 322 NTSTATUS vboxVdmaTexPresentSetAlloc(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_ALLOCATION pRealFbAlloc); 323 #endif 337 324 338 325 #endif /* #ifndef ___VBoxMPVdma_h___ */ -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp
r50929 r50940 347 347 { 348 348 NTSTATUS Status; 349 349 #ifdef VBOX_WITH_CROGL 350 350 if ((u8CurCyncState & VBOXWDDM_HGSYNC_F_CHANGED_LOCATION_ONLY) == VBOXWDDM_HGSYNC_F_CHANGED_LOCATION_ONLY 351 351 && pRealFbAlloc->AllocData.hostID) … … 356 356 return Status; 357 357 } 358 358 #endif 359 359 Status = vboxWddmGhDisplaySetMode(pDevExt, pAllocData); 360 360 if (NT_SUCCESS(Status)) … … 366 366 if (NT_SUCCESS(Status)) 367 367 { 368 #ifdef VBOX_WITH_CROGL 368 369 if (pDevExt->f3DEnabled) 369 370 { … … 374 375 WARN(("vboxVdmaTexPresentSetAlloc failed, Status 0x%x", Status)); 375 376 } 377 #else 378 return STATUS_SUCCESS; 379 #endif 376 380 } 377 381 else … … 769 773 } 770 774 } 771 775 #ifdef VBOX_WITH_CROGL 772 776 static NTSTATUS vboxWddmSetupDisplaysNew(PVBOXMP_DEVEXT pDevExt) 773 777 { … … 822 826 return STATUS_UNSUCCESSFUL; 823 827 } 824 828 #endif 825 829 static NTSTATUS vboxWddmSetupDisplays(PVBOXMP_DEVEXT pDevExt) 826 830 { 831 #ifdef VBOX_WITH_CROGL 827 832 if (pDevExt->fCmdVbvaEnabled) 828 833 { … … 832 837 return Status; 833 838 } 839 #endif 834 840 835 841 vboxWddmSetupDisplaysLegacy(pDevExt); … … 965 971 if (Status == STATUS_SUCCESS) 966 972 { 973 #ifdef VBOX_WITH_CROGL 967 974 pDevExt->f3DEnabled = VBoxMpCrCtlConIs3DSupported(); 968 975 … … 977 984 pDevExt->fCmdVbvaEnabled = FALSE; 978 985 } 986 #endif 979 987 980 988 /* Guest supports only HGSMI, the old VBVA via VMMDev is not supported. … … 1021 1029 VBoxWddmSlInit(pDevExt); 1022 1030 1031 #ifdef VBOX_WITH_CROGL 1023 1032 VBoxMpCrShgsmiTransportCreate(&pDevExt->CrHgsmiTransport, pDevExt); 1024 1033 #endif 1025 1034 1026 1035 for (UINT i = 0; i < (UINT)VBoxCommonFromDeviceExt(pDevExt)->cDisplays; ++i) … … 1028 1037 PVBOXWDDM_SOURCE pSource = &pDevExt->aSources[i]; 1029 1038 KeInitializeSpinLock(&pSource->AllocationLock); 1039 #ifdef VBOX_WITH_CROGL 1030 1040 VBoxVrListInit(&pSource->VrList); 1041 #endif 1031 1042 } 1032 1043 … … 1173 1184 NTSTATUS Status = STATUS_SUCCESS; 1174 1185 1186 #ifdef VBOX_WITH_CROGL 1175 1187 VBoxMpCrShgsmiTransportTerm(&pDevExt->CrHgsmiTransport); 1188 #endif 1176 1189 1177 1190 VBoxWddmSlTerm(pDevExt); … … 1298 1311 } 1299 1312 1300 1313 #ifdef VBOX_WITH_CROGL 1301 1314 BOOLEAN DxgkDdiInterruptRoutineNew( 1302 1315 IN CONST PVOID MiniportDeviceContext, … … 1437 1450 return bOur; 1438 1451 } 1439 1452 #endif 1440 1453 1441 1454 static BOOLEAN DxgkDdiInterruptRoutineLegacy( … … 1655 1668 vboxVtListDetach2List(&pDevExt->VhwaCmdList, &pdc->data.VhwaCmdList); 1656 1669 #endif 1670 #ifdef VBOX_WITH_CROGL 1657 1671 if (!pDevExt->fCmdVbvaEnabled) 1672 #endif 1673 { 1658 1674 vboxVdmaDdiCmdGetCompletedListIsr(pDevExt, &pdc->data.CompletedDdiCmdQueue); 1675 } 1659 1676 1660 1677 pdc->data.bNotifyDpc = pDevExt->bNotifyDxDpc; … … 1666 1683 } 1667 1684 1685 #ifdef VBOX_WITH_CROGL 1668 1686 static VOID DxgkDdiDpcRoutineNew( 1669 1687 IN CONST PVOID MiniportDeviceContext … … 1711 1729 // LOGF(("LEAVE, context(0x%p)", MiniportDeviceContext)); 1712 1730 } 1713 1731 #endif 1714 1732 1715 1733 static VOID DxgkDdiDpcRoutineLegacy( … … 1913 1931 VbglTerminate(); 1914 1932 1933 #ifdef VBOX_WITH_CROGL 1915 1934 VBoxVrTerm(); 1935 #endif 1916 1936 1917 1937 PRTLOGGER pLogger = RTLogRelSetDefaultInstance(NULL); … … 2113 2133 memset (pQi, 0, sizeof (VBOXWDDM_QI)); 2114 2134 pQi->u32Version = VBOXVIDEOIF_VERSION; 2135 #ifdef VBOX_WITH_CROGL 2115 2136 pQi->u32VBox3DCaps = VBoxMpCrGetHostCaps(); 2137 #endif 2116 2138 pQi->cInfos = VBoxCommonFromDeviceExt(pDevExt)->cDisplays; 2117 2139 #ifdef VBOX_WITH_VIDEOHWACCEL … … 2293 2315 break; 2294 2316 } 2295 2317 #ifdef VBOX_WITH_CROGL 2296 2318 PVBOXWDDM_SWAPCHAIN pSwapchain = vboxWddmSwapchainRetainByAlloc(pDevExt, pAllocation); 2297 2319 if (pSwapchain) … … 2300 2322 vboxWddmSwapchainRelease(pSwapchain); 2301 2323 } 2324 #endif 2302 2325 } 2303 2326 … … 2820 2843 } 2821 2844 2845 #ifdef VBOX_WITH_CROGL 2822 2846 static NTSTATUS 2823 2847 APIENTRY … … 2868 2892 return STATUS_SUCCESS; 2869 2893 } 2870 2894 #endif 2871 2895 2872 2896 static NTSTATUS … … 3039 3063 PVBOXWDDM_CALL_ISR pdc = (PVBOXWDDM_CALL_ISR)Context; 3040 3064 PVBOXMP_DEVEXT pDevExt = pdc->pDevExt; 3065 #ifdef VBOX_WITH_CROGL 3041 3066 if (pDevExt->fCmdVbvaEnabled) 3042 3067 return DxgkDdiInterruptRoutineNew(pDevExt, pdc->MessageNumber); 3068 #endif 3043 3069 return DxgkDdiInterruptRoutineLegacy(pDevExt, pdc->MessageNumber); 3044 3070 } … … 3071 3097 #endif 3072 3098 3099 #ifdef VBOX_WITH_CROGL 3073 3100 static NTSTATUS 3074 3101 APIENTRY … … 3162 3189 return STATUS_UNSUCCESSFUL; 3163 3190 } 3191 #endif 3164 3192 3165 3193 static NTSTATUS … … 3357 3385 } 3358 3386 3387 #ifdef VBOX_WITH_CROGL 3359 3388 static NTSTATUS 3360 3389 APIENTRY … … 3367 3396 PVBOXMP_DEVEXT pDevExt = (PVBOXMP_DEVEXT)hAdapter; 3368 3397 3398 vboxVDbgBreakF(); 3399 3369 3400 VBoxCmdVbvaPreempt(pDevExt, &pDevExt->CmdVbva, pPreemptCommand->PreemptionFenceId); 3370 3401 … … 3373 3404 return STATUS_SUCCESS; 3374 3405 } 3375 3406 #endif 3376 3407 3377 3408 static NTSTATUS … … 3391 3422 } 3392 3423 3424 #ifdef VBOX_WITH_CROGL 3393 3425 /* 3394 3426 * DxgkDdiBuildPagingBuffer … … 3544 3576 return STATUS_SUCCESS; 3545 3577 } 3546 3578 #endif 3547 3579 3548 3580 static NTSTATUS … … 4093 4125 break; 4094 4126 } 4095 #endif 4127 4096 4128 case VBOXESC_UHGSMI_ALLOCATE: 4097 4129 { … … 4134 4166 Status = vboxVideoAMgrCtxAllocDestroy(&pContext->AllocContext, pDealocate->hAlloc); 4135 4167 Assert(Status == STATUS_SUCCESS); 4136 }4137 else4138 Status = STATUS_BUFFER_TOO_SMALL;4139 4140 break;4141 }4142 4143 case VBOXESC_GETVBOXVIDEOCMCMD:4144 {4145 if (pDevExt->fCmdVbvaEnabled || pDevExt->fTexPresentEnabled)4146 {4147 WARN(("VBOXESC_GETVBOXVIDEOCMCMD not supported for CmdVbva or TexPresent mode"));4148 Status = STATUS_INVALID_PARAMETER;4149 break;4150 }4151 4152 /* get the list of r0->r3 commands (d3d window visible regions reporting )*/4153 PVBOXWDDM_CONTEXT pContext = (PVBOXWDDM_CONTEXT)pEscape->hContext;4154 PVBOXDISPIFESCAPE_GETVBOXVIDEOCMCMD pRegions = (PVBOXDISPIFESCAPE_GETVBOXVIDEOCMCMD)pEscapeHdr;4155 Assert(pEscape->PrivateDriverDataSize >= sizeof (VBOXDISPIFESCAPE_GETVBOXVIDEOCMCMD));4156 if (pEscape->PrivateDriverDataSize >= sizeof (VBOXDISPIFESCAPE_GETVBOXVIDEOCMCMD))4157 {4158 if (pContext->enmType == VBOXWDDM_CONTEXT_TYPE_CUSTOM_3D)4159 {4160 Status = vboxVideoCmEscape(&pContext->CmContext, pRegions, pEscape->PrivateDriverDataSize);4161 Assert(Status == STATUS_SUCCESS);4162 }4163 else4164 {4165 WARN(("VBOXESC_GETVBOXVIDEOCMCMD recieved invalid context type %d", pContext->enmType));4166 Status = STATUS_INVALID_PARAMETER;4167 }4168 4168 } 4169 4169 else … … 4220 4220 break; 4221 4221 } 4222 #endif 4222 4223 4223 4224 case VBOXESC_SETVISIBLEREGION: … … 4337 4338 break; 4338 4339 } 4340 #ifdef VBOX_WITH_CROGL 4339 4341 case VBOXESC_SETCTXHOSTID: 4340 4342 { … … 4382 4384 break; 4383 4385 } 4386 #endif 4384 4387 case VBOXESC_REINITVIDEOMODES: 4385 4388 { … … 4766 4769 } 4767 4770 4771 #ifdef VBOX_WITH_CROGL 4768 4772 static NTSTATUS 4769 4773 APIENTRY … … 4783 4787 return STATUS_SUCCESS; 4784 4788 } 4785 4789 #endif 4786 4790 4787 4791 static NTSTATUS … … 5765 5769 } 5766 5770 5771 #ifdef VBOX_WITH_CROGL 5767 5772 static NTSTATUS 5768 5773 APIENTRY … … 5932 5937 return STATUS_SUCCESS; 5933 5938 } 5939 #endif 5934 5940 5935 5941 static void vboxWddmPatchLocationInit(D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut, UINT idx, UINT offPatch) … … 6083 6089 } 6084 6090 6091 #ifdef VBOX_WITH_CROGL 6085 6092 /** 6086 6093 * DxgkDdiPresent … … 6362 6369 return STATUS_SUCCESS; 6363 6370 } 6371 #endif 6364 6372 6365 6373 /** … … 6682 6690 Assert(tmpStatus == STATUS_SUCCESS); 6683 6691 } 6684 6692 #ifdef VBOX_WITH_CROGL 6685 6693 if (!VBOXWDDM_IS_DISPLAYONLY() && pDevExt->f3DEnabled) 6686 6694 { … … 6690 6698 WARN(("VBoxMpCrCtlConConnect failed rc (%d), ignoring for system context", rc)); 6691 6699 } 6692 6700 #endif 6693 6701 Status = STATUS_SUCCESS; 6694 6702 } … … 6703 6711 switch (pInfo->enmType) 6704 6712 { 6713 #ifdef VBOX_WITH_CROGL 6705 6714 case VBOXWDDM_CONTEXT_TYPE_CUSTOM_3D: 6706 6715 { … … 6806 6815 break; 6807 6816 } 6817 #endif 6808 6818 case VBOXWDDM_CONTEXT_TYPE_CUSTOM_2D: 6809 6819 { … … 6915 6925 } 6916 6926 6927 #ifdef VBOX_WITH_CROGL 6917 6928 if (pContext->u32CrConClientID) 6918 6929 { 6919 6930 VBoxMpCrCtlConDisconnect(pDevExt, &pDevExt->CrCtlCon, pContext->u32CrConClientID); 6920 6931 } 6932 #endif 6921 6933 6922 6934 vboxWddmModeRenderFromShadowDisableUnregister(pDevExt, pContext); 6923 6935 6936 #ifdef VBOX_WITH_CROGL 6924 6937 /* first terminate the swapchain, this will also ensure 6925 6938 * all currently pending driver->user Cm commands 6926 6939 * (i.e. visible regions commands) are completed */ 6927 6940 vboxWddmSwapchainCtxTerm(pDevExt, pContext); 6941 #endif 6928 6942 6929 6943 Status = vboxVideoAMgrCtxDestroy(&pContext->AllocContext); … … 7240 7254 static NTSTATUS vboxWddmInitFullGraphicsDriver(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath, BOOLEAN fCmdVbva) 7241 7255 { 7256 #ifdef VBOX_WITH_CROGL 7242 7257 #define VBOXWDDM_CALLBACK_NAME(_base, _fCmdVbva) ((_fCmdVbva) ? _base##New : _base##Legacy) 7258 #else 7259 #define VBOXWDDM_CALLBACK_NAME(_base, _fCmdVbva) (_base##Legacy) 7260 #endif 7243 7261 7244 7262 DRIVER_INITIALIZATION_DATA DriverInitializationData = {'\0'}; … … 7401 7419 7402 7420 Status = STATUS_SUCCESS; 7403 7421 #ifdef VBOX_WITH_CROGL 7404 7422 VBoxMpCrCtlConInit(); 7405 7423 … … 7407 7425 LOG(("Doing the 3D check..")); 7408 7426 if (!VBoxMpCrCtlConIs3DSupported()) 7427 #endif 7409 7428 { 7410 7429 #ifdef VBOX_WDDM_WIN8 … … 7431 7450 if (NT_SUCCESS(Status)) 7432 7451 { 7452 #ifdef VBOX_WITH_CROGL 7433 7453 rc = VBoxVrInit(); 7434 7454 if (RT_SUCCESS(rc)) 7455 #endif 7435 7456 { 7436 7457 #ifdef VBOX_WDDM_WIN8 … … 7442 7463 #endif 7443 7464 { 7444 Status = vboxWddmInitFullGraphicsDriver(DriverObject, RegistryPath, !!(VBoxMpCrGetHostCaps() & CR_VBOX_CAP_CMDVBVA)); 7465 Status = vboxWddmInitFullGraphicsDriver(DriverObject, RegistryPath, 7466 #ifdef VBOX_WITH_CROGL 7467 !!(VBoxMpCrGetHostCaps() & CR_VBOX_CAP_CMDVBVA) 7468 #else 7469 FALSE 7470 #endif 7471 ); 7445 7472 } 7446 7473 7447 7474 if (NT_SUCCESS(Status)) 7448 7475 return Status; 7449 7476 #ifdef VBOX_WITH_CROGL 7450 7477 VBoxVrTerm(); 7451 } 7478 #endif 7479 } 7480 #ifdef VBOX_WITH_CROGL 7452 7481 else 7453 7482 { … … 7455 7484 Status = STATUS_UNSUCCESSFUL; 7456 7485 } 7486 #endif 7457 7487 } 7458 7488 else -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.h
r50628 r50940 128 128 DECLINLINE(void) vboxWddmAssignShadow(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SOURCE pSource, PVBOXWDDM_ALLOCATION pAllocation, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId) 129 129 { 130 #ifdef VBOX_WITH_CROGL 130 131 if (pDevExt->fCmdVbvaEnabled) 131 132 { … … 133 134 return; 134 135 } 136 #endif 135 137 136 138 if (pSource->pShadowAllocation == pAllocation) … … 238 240 bool vboxWddmGhDisplayCheckSetInfoFromSource(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SOURCE pSource); 239 241 242 #ifdef VBOX_WITH_CROGL 240 243 #define VBOXWDDMENTRY_2_SWAPCHAIN(_pE) ((PVBOXWDDM_SWAPCHAIN)((uint8_t*)(_pE) - RT_OFFSETOF(VBOXWDDM_SWAPCHAIN, DevExtListEntry))) 241 244 … … 244 247 IN ULONG MessageNumber 245 248 ); 249 #endif 246 250 247 251 #ifdef VBOX_WDDM_WIN8 -
trunk/src/VBox/Devices/Graphics/DevVGA.cpp
r50848 r50940 5232 5232 #endif 5233 5233 5234 #ifdef VBOX_WITH_CRHGSMI 5234 5235 vboxCmdVBVACmdTimer(pThis); 5236 #endif 5235 5237 } 5236 5238 … … 5952 5954 pThis->IVBVACallbacks.pfnCrHgsmiCommandCompleteAsync = vboxVDMACrHgsmiCommandCompleteAsync; 5953 5955 pThis->IVBVACallbacks.pfnCrHgsmiControlCompleteAsync = vboxVDMACrHgsmiControlCompleteAsync; 5954 # endif 5955 #endif 5956 5956 5957 pThis->IVBVACallbacks.pfnCrCtlSubmit = vboxCmdVBVACmdHostCtl; 5957 5958 pThis->IVBVACallbacks.pfnCrCtlSubmitSync = vboxCmdVBVACmdHostCtlSync; 5958 5959 # endif 5960 #endif 5959 5961 /* 5960 5962 * We use our own critical section to avoid unncessary pointer indirections -
trunk/src/VBox/Devices/Graphics/DevVGA.h
r50850 r50940 622 622 int vboxVDMACrHgsmiCommandCompleteAsync(PPDMIDISPLAYVBVACALLBACKS pInterface, PVBOXVDMACMD_CHROMIUM_CMD pCmd, int rc); 623 623 int vboxVDMACrHgsmiControlCompleteAsync(PPDMIDISPLAYVBVACALLBACKS pInterface, PVBOXVDMACMD_CHROMIUM_CTL pCmd, int rc); 624 # endif625 624 int vboxCmdVBVACmdHostCtl(PPDMIDISPLAYVBVACALLBACKS pInterface, 626 625 struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, … … 629 628 int vboxCmdVBVACmdHostCtlSync(PPDMIDISPLAYVBVACALLBACKS pInterface, 630 629 struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd); 630 # endif 631 631 632 632 int vboxVBVASaveStateExec (PPDMDEVINS pDevIns, PSSMHANDLE pSSM); … … 645 645 # endif /* VBOX_WITH_VDMA */ 646 646 647 # ifdef VBOX_WITH_CRHGSMI 647 648 int vboxCmdVBVACmdSubmit(PVGASTATE pVGAState); 648 649 int vboxCmdVBVACmdFlush(PVGASTATE pVGAState); 649 650 void vboxCmdVBVACmdTimer(PVGASTATE pVGAState); 650 651 int vboxCmdVBVACmdCtl(PVGASTATE pVGAState, VBOXCMDVBVA_CTL *pCtl, uint32_t cbCtl); 651 652 # endif /* VBOX_WITH_CRHGSMI */ 652 653 #endif /* VBOX_WITH_HGSMI */ 653 654 -
trunk/src/VBox/Devices/Graphics/DevVGA_VBVA.cpp
r50754 r50940 1942 1942 case VBVA_CMDVBVA_SUBMIT: 1943 1943 { 1944 # ifdef VBOX_WITH_CRHGSMI 1944 1945 rc = vboxCmdVBVACmdSubmit(pVGAState); 1946 #endif 1945 1947 break; 1946 1948 } 1947 1949 case VBVA_CMDVBVA_FLUSH: 1948 1950 { 1951 # ifdef VBOX_WITH_CRHGSMI 1949 1952 rc =vboxCmdVBVACmdFlush(pVGAState); 1953 #endif 1950 1954 break; 1951 1955 } 1952 1956 case VBVA_CMDVBVA_CTL: 1953 1957 { 1958 #ifdef VBOX_WITH_CRHGSMI 1954 1959 if (cbBuffer < VBoxSHGSMIBufferHeaderSize() + sizeof (VBOXCMDVBVA_CTL)) 1955 1960 { … … 1961 1966 break; 1962 1967 } 1963 1964 1968 VBOXCMDVBVA_CTL *pCtl = (VBOXCMDVBVA_CTL*)VBoxSHGSMIBufferData((PVBOXSHGSMIHEADER)pvBuffer); 1965 1969 rc = vboxCmdVBVACmdCtl(pVGAState, pCtl, cbBuffer - VBoxSHGSMIBufferHeaderSize()); 1970 #endif 1966 1971 break; 1967 1972 } -
trunk/src/VBox/Devices/Graphics/DevVGA_VDMA.cpp
r50928 r50940 666 666 PHGSMIINSTANCE pHgsmi; 667 667 PVGASTATE pVGAState; 668 #ifdef VBOX_WITH_CRHGSMI 668 669 VBVAEXHOSTCONTEXT CmdVbva; 669 670 VBOXVDMATHREAD Thread; … … 672 673 RTSEMEVENTMULTI HostCrCtlCompleteEvent; 673 674 int32_t volatile i32cHostCrCtlCompleted; 675 #endif 674 676 #ifdef VBOX_VDMA_WITH_WATCHDOG 675 677 PTMTIMERR3 WatchDogTimer; 676 678 #endif 677 679 } VBOXVDMAHOST, *PVBOXVDMAHOST; 680 681 #ifdef VBOX_WITH_CRHGSMI 678 682 679 683 int VBoxVDMAThreadNotifyConstructSucceeded(PVBOXVDMATHREAD pThread) … … 778 782 779 783 static int vdmaVBVACtlSubmitSync(PVBOXVDMAHOST pVdma, VBVAEXHOSTCTL* pCtl, VBVAEXHOSTCTL_SOURCE enmSource); 780 781 #ifdef VBOX_WITH_CRHGSMI782 784 783 785 typedef DECLCALLBACK(void) FNVBOXVDMACRCTL_CALLBACK(PVGASTATE pVGAState, PVBOXVDMACMD_CHROMIUM_CTL pCmd, void* pvContext); … … 1706 1708 } 1707 1709 1708 #endif1709 1710 #ifdef VBOX_VDMA_WITH_WORKERTHREAD1711 /* to simplify things and to avoid extra backend if modifications we assume the VBOXVDMA_RECTL is the same as VBVACMDHDR */1712 AssertCompile(sizeof(VBOXVDMA_RECTL) == sizeof(VBVACMDHDR));1713 AssertCompile(RT_SIZEOFMEMB(VBOXVDMA_RECTL, left) == RT_SIZEOFMEMB(VBVACMDHDR, x));1714 AssertCompile(RT_SIZEOFMEMB(VBOXVDMA_RECTL, top) == RT_SIZEOFMEMB(VBVACMDHDR, y));1715 AssertCompile(RT_SIZEOFMEMB(VBOXVDMA_RECTL, width) == RT_SIZEOFMEMB(VBVACMDHDR, w));1716 AssertCompile(RT_SIZEOFMEMB(VBOXVDMA_RECTL, height) == RT_SIZEOFMEMB(VBVACMDHDR, h));1717 AssertCompile(RT_OFFSETOF(VBOXVDMA_RECTL, left) == RT_OFFSETOF(VBVACMDHDR, x));1718 AssertCompile(RT_OFFSETOF(VBOXVDMA_RECTL, top) == RT_OFFSETOF(VBVACMDHDR, y));1719 AssertCompile(RT_OFFSETOF(VBOXVDMA_RECTL, width) == RT_OFFSETOF(VBVACMDHDR, w));1720 AssertCompile(RT_OFFSETOF(VBOXVDMA_RECTL, height) == RT_OFFSETOF(VBVACMDHDR, h));1721 1722 static int vboxVDMANotifyPrimaryUpdate (PVGASTATE pVGAState, unsigned uScreenId, const VBOXVDMA_RECTL * pRectl)1723 {1724 pVGAState->pDrv->pfnVBVAUpdateBegin (pVGAState->pDrv, uScreenId);1725 1726 /* Updates the rectangle and sends the command to the VRDP server. */1727 pVGAState->pDrv->pfnVBVAUpdateProcess (pVGAState->pDrv, uScreenId,1728 (const PVBVACMDHDR)pRectl /* <- see above AssertCompile's and comments */,1729 sizeof (VBOXVDMA_RECTL));1730 1731 pVGAState->pDrv->pfnVBVAUpdateEnd (pVGAState->pDrv, uScreenId, pRectl->left, pRectl->top,1732 pRectl->width, pRectl->height);1733 1734 return VINF_SUCCESS;1735 }1736 #endif1737 1738 1710 static int vboxVDMACmdExecBltPerform(PVBOXVDMAHOST pVdma, 1739 1711 uint8_t *pvDstSurf, const uint8_t *pvSrcSurf, … … 1889 1861 vboxVDMARectlUnite(&updateRectl, &pBlt->dstRectl); 1890 1862 } 1891 1892 #ifdef VBOX_VDMA_WITH_WORKERTHREAD1893 int iView = 0;1894 /* @todo: fixme: check if update is needed and get iView */1895 vboxVDMANotifyPrimaryUpdate (pVdma->pVGAState, iView, &updateRectl);1896 #endif1897 1863 1898 1864 return cbBlt; … … 2192 2158 } 2193 2159 2160 #endif /* #ifdef VBOX_WITH_CRHGSMI */ 2161 2194 2162 #ifdef VBOX_VDMA_WITH_WATCHDOG 2195 2163 static DECLCALLBACK(void) vboxVDMAWatchDogTimer(PPDMDEVINS pDevIns, PTMTIMER pTimer, void *pvUser) … … 2214 2182 { 2215 2183 int rc; 2216 #ifdef VBOX_VDMA_WITH_WORKERTHREAD2217 PVBOXVDMAHOST pVdma = (PVBOXVDMAHOST)RTMemAllocZ(RT_OFFSETOF(VBOXVDMAHOST, CmdPool.aCmds[cPipeElements]));2218 #else2219 2184 PVBOXVDMAHOST pVdma = (PVBOXVDMAHOST)RTMemAllocZ(sizeof(*pVdma)); 2220 #endif2221 2185 Assert(pVdma); 2222 2186 if (pVdma) … … 2225 2189 pVdma->pVGAState = pVGAState; 2226 2190 2227 rc = RTSemEventMultiCreate(&pVdma->HostCrCtlCompleteEvent);2228 if (RT_SUCCESS(rc))2229 {2230 2191 #ifdef VBOX_VDMA_WITH_WATCHDOG 2231 2192 rc = PDMDevHlpTMTimerCreate(pVGAState->pDevInsR3, TMCLOCK_REAL, vboxVDMAWatchDogTimer, … … 2234 2195 AssertRC(rc); 2235 2196 #endif 2197 2198 #ifdef VBOX_WITH_CRHGSMI 2199 rc = RTSemEventMultiCreate(&pVdma->HostCrCtlCompleteEvent); 2200 if (RT_SUCCESS(rc)) 2201 { 2236 2202 rc = VBoxVBVAExHSInit(&pVdma->CmdVbva); 2237 2203 if (RT_SUCCESS(rc)) … … 2241 2207 { 2242 2208 pVGAState->pVdma = pVdma; 2243 #ifdef VBOX_WITH_CRHGSMI2244 2209 int rcIgnored = vboxVDMACrCtlHgsmiSetup(pVdma); NOREF(rcIgnored); /** @todo is this ignoring intentional? */ 2245 #endif2246 2210 return VINF_SUCCESS; 2247 2211 } … … 2261 2225 2262 2226 RTMemFree(pVdma); 2227 #else 2228 pVGAState->pVdma = pVdma; 2229 return VINF_SUCCESS; 2230 #endif 2263 2231 } 2264 2232 else … … 2270 2238 int vboxVDMAReset(struct VBOXVDMAHOST *pVdma) 2271 2239 { 2240 #ifdef VBOX_WITH_CRHGSMI 2272 2241 VBVAEXHOSTCTL Ctl; 2273 2242 Ctl.enmType = VBVAEXHOSTCTL_TYPE_HH_RESET; … … 2278 2247 return rc; 2279 2248 } 2249 #endif 2280 2250 return VINF_SUCCESS; 2281 2251 } … … 2283 2253 int vboxVDMADestruct(struct VBOXVDMAHOST *pVdma) 2284 2254 { 2255 #ifdef VBOX_WITH_CRHGSMI 2285 2256 VBVAEXHOSTCTL Ctl; 2286 2257 Ctl.enmType = VBVAEXHOSTCTL_TYPE_HH_TERM; … … 2294 2265 VBoxVBVAExHSTerm(&pVdma->CmdVbva); 2295 2266 RTSemEventMultiDestroy(pVdma->HostCrCtlCompleteEvent); 2267 #endif 2296 2268 RTMemFree(pVdma); 2297 2269 return VINF_SUCCESS; … … 2348 2320 void vboxVDMAControl(struct VBOXVDMAHOST *pVdma, PVBOXVDMA_CTL pCmd, uint32_t cbCmd) 2349 2321 { 2350 #if 12351 2322 PHGSMIINSTANCE pIns = pVdma->pHgsmi; 2352 2323 … … 2368 2339 #endif 2369 2340 default: 2370 AssertBreakpoint();2341 WARN(("cmd not supported")); 2371 2342 pCmd->i32Result = VERR_NOT_SUPPORTED; 2372 2343 } … … 2374 2345 int rc = VBoxSHGSMICommandComplete (pIns, pCmd); 2375 2346 AssertRC(rc); 2376 #else2377 /* test asinch completion */2378 VBOXVDMACMD_SUBMIT_CONTEXT Context;2379 Context.pVdma = pVdma;2380 Context.Cmd.enmType = VBOXVDMAPIPE_CMD_TYPE_DMACTL;2381 Context.Cmd.u.pCtl = pCmd;2382 2383 int rc = vboxVDMAPipeModifyClient(&pVdma->Pipe, vboxVDMACommandSubmitCb, &Context);2384 AssertRC(rc);2385 if (RT_SUCCESS(rc))2386 {2387 Assert(Context.bQueued);2388 if (Context.bQueued)2389 {2390 /* success */2391 return;2392 }2393 rc = VERR_OUT_OF_RESOURCES;2394 }2395 2396 /* failure */2397 Assert(RT_FAILURE(rc));2398 PHGSMIINSTANCE pIns = pVdma->pHgsmi;2399 pCmd->i32Result = rc;2400 int tmpRc = VBoxSHGSMICommandComplete (pIns, pCmd);2401 AssertRC(tmpRc);2402 2403 #endif2404 2347 } 2405 2348 … … 2422 2365 return; 2423 2366 } 2424 #endif 2425 2426 #ifndef VBOX_VDMA_WITH_WORKERTHREAD 2367 2427 2368 vboxVDMACommandProcess(pVdma, pCmd, cbCmd); 2428 2369 #else 2429 2430 # ifdef DEBUG_misha 2431 Assert(0); 2432 # endif 2433 2434 VBOXVDMACMD_SUBMIT_CONTEXT Context; 2435 Context.pVdma = pVdma; 2436 Context.Cmd.enmType = VBOXVDMAPIPE_CMD_TYPE_DMACMD; 2437 Context.Cmd.u.pDr = pCmd; 2438 2439 rc = vboxVDMAPipeModifyClient(&pVdma->Pipe, vboxVDMACommandSubmitCb, &Context); 2370 pCmd->rc = rc; 2371 rc = VBoxSHGSMICommandComplete (pVdma->pHgsmi, pCmd); 2440 2372 AssertRC(rc); 2441 if (RT_SUCCESS(rc))2442 {2443 Assert(Context.bQueued);2444 if (Context.bQueued)2445 {2446 /* success */2447 return;2448 }2449 rc = VERR_OUT_OF_RESOURCES;2450 }2451 /* failure */2452 Assert(RT_FAILURE(rc));2453 PHGSMIINSTANCE pIns = pVdma->pHgsmi;2454 pCmd->rc = rc;2455 int tmpRc = VBoxSHGSMICommandComplete (pIns, pCmd);2456 AssertRC(tmpRc);2457 2373 #endif 2458 2374 } 2459 2375 2460 2376 /**/ 2461 2377 #ifdef VBOX_WITH_CRHGSMI 2462 2378 static int vdmaVBVACtlSubmit(PVBOXVDMAHOST pVdma, VBVAEXHOSTCTL* pCtl, VBVAEXHOSTCTL_SOURCE enmSource, PFNVBVAEXHOSTCTL_COMPLETE pfnComplete, void *pvComplete) 2463 2379 { … … 2794 2710 vboxVDMACmdSubmitPerform(pVGAState->pVdma); 2795 2711 } 2712 2713 #endif -
trunk/src/VBox/Main/include/DisplayImpl.h
r50848 r50940 174 174 void handleCrHgsmiControlProcess(PVBOXVDMACMD_CHROMIUM_CTL pCtl, uint32_t cbCtl); 175 175 #endif 176 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 176 177 int handleCrHgcmCtlSubmit(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, 177 178 PFNCRCTLCOMPLETION pfnCompletion, 178 179 void *pvCompletion); 179 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL)180 180 void handleCrVRecScreenshotPerform(uint32_t uScreen, 181 181 uint32_t x, uint32_t y, uint32_t uPixelFormat, uint32_t uBitsPerPixel, … … 243 243 #endif 244 244 245 #if def VBOX_WITH_CROGL245 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 246 246 void crViewportNotify(class VMMDev *pVMMDev, ULONG aScreenId, ULONG x, ULONG y, ULONG width, ULONG height); 247 247 #endif … … 272 272 static DECLCALLBACK(void) displayCrHgsmiControlCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext); 273 273 #endif 274 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 274 275 static DECLCALLBACK(int) displayCrHgcmCtlSubmit(PPDMIDISPLAYCONNECTOR pInterface, 275 276 struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, … … 277 278 void *pvCompletion); 278 279 static DECLCALLBACK(void) displayCrHgcmCtlSubmitCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext); 280 #endif 279 281 #ifdef VBOX_WITH_HGSMI 280 282 static DECLCALLBACK(int) displayVBVAEnable(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, PVBVAHOSTFLAGS pHostFlags); … … 370 372 static int displayTakeScreenshotEMT(Display *pDisplay, ULONG aScreenId, uint8_t **ppu8Data, size_t *pcbData, uint32_t *pu32Width, uint32_t *pu32Height); 371 373 372 #if def VBOX_WITH_CROGL374 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 373 375 static BOOL displayCheckTakeScreenshotCrOgl(Display *pDisplay, ULONG aScreenId, uint8_t *pu8Data, uint32_t u32Width, uint32_t u32Height); 374 #endif375 376 376 int crCtlSubmit(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, PFNCRCTLCOMPLETION pfnCompletion, void *pvCompletion); 377 377 int crCtlSubmitSync(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd); 378 #endif 378 379 379 380 private: … … 387 388 void videoAccelFlush(void); 388 389 389 #if def VBOX_WITH_CROGL390 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 390 391 int crOglWindowsShow(bool fShow); 391 392 #endif -
trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
r50914 r50940 2131 2131 } 2132 2132 2133 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 2133 2134 VBOXCRCMDCTL_HGCM data; 2134 2135 data.Hdr.enmType = VBOXCRCMDCTL_TYPE_HGCM; … … 2147 2148 2148 2149 LogRel(("VRDE: %s 3D redirect.\n", fEnable? "Enabled": "Disabled")); 2149 # ifdef DEBUG_misha2150 # ifdef DEBUG_misha 2150 2151 AssertFailed(); 2152 # endif 2151 2153 #endif 2152 2154 -
trunk/src/VBox/Main/src-client/DisplayImpl.cpp
r50908 r50940 315 315 uint32_t cy = 0; 316 316 317 #if def VBOX_WITH_CROGL317 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 318 318 BOOL f3DSnapshot = FALSE; 319 319 BOOL is3denabled; … … 731 731 } 732 732 733 #if def VBOX_WITH_CROGL733 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 734 734 int Display::crOglWindowsShow(bool fShow) 735 735 { … … 2446 2446 } 2447 2447 } 2448 #endif /* VBOX_WITH_CROGL*/2448 #endif /* #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) */ 2449 2449 } 2450 2450 else … … 2597 2597 } 2598 2598 2599 #if def VBOX_WITH_CROGL2599 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 2600 2600 BOOL Display::displayCheckTakeScreenshotCrOgl(Display *pDisplay, ULONG aScreenId, uint8_t *pu8Data, uint32_t u32Width, uint32_t u32Height) 2601 2601 { … … 3610 3610 } 3611 3611 3612 #if def VBOX_WITH_CROGL3612 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 3613 3613 void Display::crViewportNotify(VMMDev *pVMMDev, ULONG aScreenId, ULONG x, ULONG y, ULONG width, ULONG height) 3614 3614 { … … 4394 4394 #endif 4395 4395 4396 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 4396 4397 DECLCALLBACK(void) Display::displayCrHgcmCtlSubmitCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext) 4397 4398 { … … 4446 4447 } 4447 4448 4448 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL)4449 4449 bool Display::handleCrVRecScreenshotBegin(uint32_t uScreen, uint64_t u64TimeStamp) 4450 4450 { … … 5056 5056 pThis->IConnector.pfnCrHgsmiControlProcess = Display::displayCrHgsmiControlProcess; 5057 5057 #endif 5058 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 5058 5059 pThis->IConnector.pfnCrHgcmCtlSubmit = Display::displayCrHgcmCtlSubmit; 5060 #endif 5059 5061 #ifdef VBOX_WITH_HGSMI 5060 5062 pThis->IConnector.pfnVBVAEnable = Display::displayVBVAEnable;
Note:
See TracChangeset
for help on using the changeset viewer.