Changeset 29928 in vbox
- Timestamp:
- May 31, 2010 8:55:34 PM (15 years ago)
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoVhwa.cpp
r29922 r29928 556 556 { 557 557 /* should be set by host */ 558 Assert(pInfo->flags & VBOXVHWA_SD_PITCH);558 // Assert(pInfo->flags & VBOXVHWA_SD_PITCH); 559 559 pSurf->SurfDesc.cbSize = pInfo->sizeX * pInfo->sizeY; 560 560 Assert(pSurf->SurfDesc.cbSize); -
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.cpp
r29922 r29928 36 36 { 37 37 ExFreePool(pvMem); 38 } 39 40 DECLINLINE(PVBOXWDDM_ALLOCATION) vboxWddmGetAllocationFromOpenData(PDEVICE_EXTENSION pDevExt, PVBOXWDDM_OPENALLOCATION pOa) 41 { 42 DXGKARGCB_GETHANDLEDATA GhData; 43 GhData.hObject = pOa->hAllocation; 44 GhData.Type = DXGK_HANDLE_ALLOCATION; 45 GhData.Flags.Value = 0; 46 return (PVBOXWDDM_ALLOCATION)pDevExt->u.primary.DxgkInterface.DxgkCbGetHandleData(&GhData); 38 47 } 39 48 … … 1524 1533 if (RT_SUCCESS(rc)) 1525 1534 { 1526 pAlloc Info->SurfDesc = pAllocation->SurfDesc;1535 pAllocationInfo->Size = pAllocation->SurfDesc.cbSize; 1527 1536 } 1528 1537 else … … 3261 3270 3262 3271 NTSTATUS Status = STATUS_SUCCESS; 3263 3264 for (UINT i = 0; i < pOpenAllocation->NumAllocations; ++i) 3265 { 3266 DXGK_OPENALLOCATIONINFO* pInfo = &pOpenAllocation->pOpenAllocation[i]; 3267 PVBOXWDDM_OPENALLOCATION pOa = (PVBOXWDDM_OPENALLOCATION)vboxWddmMemAllocZero(sizeof (VBOXWDDM_OPENALLOCATION)); 3268 pOa->hAllocation = pInfo->hAllocation; 3269 pInfo->hDeviceSpecificAllocation = pOa; 3270 } 3271 3272 PVBOXWDDM_DEVICE pDevice = (PVBOXWDDM_DEVICE)hDevice; 3273 PDEVICE_EXTENSION pDevExt = pDevice->pAdapter; 3274 PVBOXWDDM_RCINFO pRcInfo = NULL; 3275 if (pOpenAllocation->PrivateDriverSize) 3276 { 3277 Assert(pOpenAllocation->PrivateDriverSize == sizeof (VBOXWDDM_RCINFO)); 3278 Assert(pOpenAllocation->pPrivateDriverData); 3279 if (pOpenAllocation->PrivateDriverSize >= sizeof (VBOXWDDM_RCINFO)) 3280 { 3281 pRcInfo = (PVBOXWDDM_RCINFO)pOpenAllocation->pPrivateDriverData; 3282 Assert(pRcInfo->cAllocInfos == pOpenAllocation->NumAllocations); 3283 } 3284 else 3285 Status = STATUS_INVALID_PARAMETER; 3286 } 3287 3288 if (Status == STATUS_SUCCESS) 3289 { 3290 for (UINT i = 0; i < pOpenAllocation->NumAllocations; ++i) 3291 { 3292 DXGK_OPENALLOCATIONINFO* pInfo = &pOpenAllocation->pOpenAllocation[i]; 3293 Assert(pInfo->PrivateDriverDataSize == sizeof (VBOXWDDM_ALLOCINFO)); 3294 Assert(pInfo->pPrivateDriverData); 3295 PVBOXWDDM_OPENALLOCATION pOa = (PVBOXWDDM_OPENALLOCATION)vboxWddmMemAllocZero(sizeof (VBOXWDDM_OPENALLOCATION)); 3296 pOa->hAllocation = pInfo->hAllocation; 3297 pInfo->hDeviceSpecificAllocation = pOa; 3298 3299 if (pRcInfo) 3300 { 3301 #ifdef VBOX_WITH_VIDEOHWACCEL 3302 if (pRcInfo->RcDesc.fFlags.Overlay) 3303 { 3304 if (pInfo->PrivateDriverDataSize >= sizeof (VBOXWDDM_ALLOCINFO)) 3305 { 3306 PVBOXWDDM_ALLOCINFO pAllocInfo = (PVBOXWDDM_ALLOCINFO)pInfo->pPrivateDriverData; 3307 PVBOXWDDM_ALLOCATION pAllocation = vboxWddmGetAllocationFromOpenData(pDevExt, pOa); 3308 Assert(pAllocation); 3309 if (pAllocation) 3310 { 3311 /* we have queried host for some surface info, like pitch & size, 3312 * need to return it back to the UMD (User Mode Drive) */ 3313 pAllocInfo->SurfDesc = pAllocation->SurfDesc; 3314 /* success, just contionue */ 3315 continue; 3316 } 3317 else 3318 Status = STATUS_INVALID_PARAMETER; 3319 } 3320 else 3321 Status = STATUS_INVALID_PARAMETER; 3322 3323 /* we are here in case of error */ 3324 AssertBreakpoint(); 3325 3326 for (UINT j = 0; j < i; ++j) 3327 { 3328 DXGK_OPENALLOCATIONINFO* pInfo2Free = &pOpenAllocation->pOpenAllocation[j]; 3329 PVBOXWDDM_OPENALLOCATION pOa2Free = (PVBOXWDDM_OPENALLOCATION)pInfo2Free->hDeviceSpecificAllocation; 3330 vboxWddmMemFree(pOa2Free); 3331 } 3332 } 3333 #endif 3334 } 3335 } 3336 } 3272 3337 dfprintf(("<== "__FUNCTION__ ", hDevice(0x%x)\n", hDevice)); 3273 3338 … … 3315 3380 #define VBOXVDMACMD_DMA_PRESENT_BLT_MINSIZE() (VBOXVDMACMD_SIZE(VBOXVDMACMD_DMA_PRESENT_BLT)) 3316 3381 #define VBOXVDMACMD_DMA_PRESENT_BLT_SIZE(_c) (VBOXVDMACMD_BODY_FIELD_OFFSET(UINT, VBOXVDMACMD_DMA_PRESENT_BLT, aDstSubRects[_c])) 3317 3318 DECLINLINE(PVBOXWDDM_ALLOCATION) vboxWddmGetAllocationFromOpenData(PDEVICE_EXTENSION pDevExt, PVBOXWDDM_OPENALLOCATION pOa)3319 {3320 DXGKARGCB_GETHANDLEDATA GhData;3321 GhData.hObject = pOa->hAllocation;3322 GhData.Type = DXGK_HANDLE_ALLOCATION;3323 GhData.Flags.Value = 0;3324 return (PVBOXWDDM_ALLOCATION)pDevExt->u.primary.DxgkInterface.DxgkCbGetHandleData(&GhData);3325 }3326 3382 3327 3383 DECLINLINE(PVBOXWDDM_ALLOCATION) vboxWddmGetAllocationFromAllocList(PDEVICE_EXTENSION pDevExt, DXGK_ALLOCATIONLIST *pAllocList)
Note:
See TracChangeset
for help on using the changeset viewer.