Changeset 46885 in vbox for trunk/src/VBox/Additions
- Timestamp:
- Jul 1, 2013 2:02:37 PM (12 years ago)
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPDevExt.h
r46757 r46885 117 117 BOOLEAN fTexPresentEnabled; 118 118 119 uint32_t u32CrConDefaultClientID; 120 119 121 VBOXMP_CRCTLCON CrCtlCon; 120 122 VBOXMP_CRSHGSMITRANSPORT CrHgsmiTransport; -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVdma.cpp
r46783 r46885 932 932 #endif 933 933 934 static NTSTATUS vboxVdma SubitVBoxTexPresent(PVBOXMP_DEVEXT pDevExt,934 static NTSTATUS vboxVdmaTexPresentSubmit(PVBOXMP_DEVEXT pDevExt, 935 935 VBOXMP_CRPACKER *pCrPacker, 936 936 uint32_t u32CrConClientID, … … 965 965 } 966 966 967 static NTSTATUS vboxVdmaCrCtlGetDefaultClientId(PVBOXMP_DEVEXT pDevExt, uint32_t *pu32ClienID) 968 { 969 if (!pDevExt->u32CrConDefaultClientID) 970 { 971 int rc = VBoxMpCrCtlConConnect(&pDevExt->CrCtlCon, CR_PROTOCOL_VERSION_MAJOR, CR_PROTOCOL_VERSION_MINOR, &pDevExt->u32CrConDefaultClientID); 972 if (!RT_SUCCESS(rc)) 973 { 974 WARN(("VBoxMpCrCtlConConnect failed, rc %d", rc)); 975 return STATUS_UNSUCCESSFUL; 976 } 977 } 978 979 *pu32ClienID = pDevExt->u32CrConDefaultClientID; 980 return STATUS_SUCCESS; 981 } 982 983 NTSTATUS vboxVdmaTexPresentSetAlloc(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, PVBOXWDDM_ALLOCATION pAllocation) 984 { 985 RTRECT Rect, *pRect = NULL; 986 uint32_t cRects = 0; 987 uint32_t hostID = 0; 988 uint32_t cfg = VidPnSourceId | CR_PRESENT_FLAG_CLEAR_RECTS; 989 uint32_t u32CrConClientID; 990 NTSTATUS Status = vboxVdmaCrCtlGetDefaultClientId(pDevExt, &u32CrConClientID); 991 if (!NT_SUCCESS(Status)) 992 { 993 WARN(("vboxVdmaCrCtlGetDefaultClientId failed Status 0x%x", Status)); 994 return Status; 995 } 996 997 VBOXMP_CRPACKER CrPacker; 998 VBoxMpCrPackerInit(&CrPacker); 999 1000 if (pAllocation && pAllocation->hostID) 1001 { 1002 hostID = pAllocation->hostID; 1003 cRects = 1; 1004 Rect.xLeft = 0; 1005 Rect.yTop = 0; 1006 Rect.xRight = pAllocation->AllocData.SurfDesc.width; 1007 Rect.yBottom = pAllocation->AllocData.SurfDesc.height; 1008 pRect = &Rect; 1009 cfg = VidPnSourceId; 1010 } 1011 1012 Status = vboxVdmaTexPresentSubmit(pDevExt, &CrPacker, u32CrConClientID, 1013 hostID, cfg, 0, 0, cRects, pRect); 1014 if (!NT_SUCCESS(Status)) 1015 { 1016 WARN(("vboxVdmaCrCtlGetDefaultClientId failed Status 0x%x", Status)); 1017 return Status; 1018 } 1019 1020 return STATUS_SUCCESS; 1021 } 1022 967 1023 static NTSTATUS vboxVdmaProcessVRegCmd(PVBOXMP_DEVEXT pDevExt, VBOXWDDM_CONTEXT *pContext, 968 1024 VBOXWDDM_DMA_ALLOCINFO *pSrcAllocInfo, … … 994 1050 int32_t posY = pDstRects->ContextRect.top - pSrcRect->top; 995 1051 996 Status = vboxVdma SubitVBoxTexPresent(pDevExt, &pContext->CrPacker, pContext->u32CrConClientID, hostID, srcId, posX, posY, pDstRects->UpdateRects.cRects, (const RTRECT*)pDstRects->UpdateRects.aRects);1052 Status = vboxVdmaTexPresentSubmit(pDevExt, &pContext->CrPacker, pContext->u32CrConClientID, hostID, srcId, posX, posY, pDstRects->UpdateRects.cRects, (const RTRECT*)pDstRects->UpdateRects.aRects); 997 1053 if (NT_SUCCESS(Status)) 998 1054 { … … 1004 1060 } 1005 1061 else 1006 WARN(("vboxVdma SubitVBoxTexPresent failed Status 0x%x", Status));1062 WARN(("vboxVdmaTexPresentSubmit failed Status 0x%x", Status)); 1007 1063 } 1008 1064 else if (pSource->pPrimaryAllocation == pDstAlloc) … … 1015 1071 if (fChanged) 1016 1072 { 1017 Status = vboxVdma SubitVBoxTexPresent(pDevExt, &pContext->CrPacker, pContext->u32CrConClientID, hostID, srcId, 0, 0, pDstRects->UpdateRects.cRects, (const RTRECT*)pDstRects->UpdateRects.aRects);1073 Status = vboxVdmaTexPresentSubmit(pDevExt, &pContext->CrPacker, pContext->u32CrConClientID, hostID, srcId, 0, 0, pDstRects->UpdateRects.cRects, (const RTRECT*)pDstRects->UpdateRects.aRects); 1018 1074 if (NT_SUCCESS(Status)) 1019 1075 { … … 1035 1091 } 1036 1092 else 1037 WARN(("vboxVdma SubitVBoxTexPresent failed Status 0x%x", Status));1093 WARN(("vboxVdmaTexPresentSubmit failed Status 0x%x", Status)); 1038 1094 } 1039 1095 } -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVdma.h
r46757 r46885 347 347 NTSTATUS vboxVdmaProcessClrFillCmd(PVBOXMP_DEVEXT pDevExt, struct VBOXWDDM_CONTEXT *pContext, struct VBOXWDDM_DMA_PRIVATEDATA_CLRFILL *pCF, struct VBOXVDMAPIPE_FLAGS_DMACMD fFlags); 348 348 349 350 NTSTATUS vboxVdmaTexPresentSetAlloc(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, PVBOXWDDM_ALLOCATION pAllocation); 351 349 352 #endif /* #ifndef ___VBoxMPVdma_h___ */ -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp
r46852 r46885 3063 3063 Assert(pDstAlloc->AllocData.SurfDesc.VidPnSourceId < VBOX_VIDEO_MAX_SCREENS); 3064 3064 3065 if (pSource->fHas3DVrs) 3066 fBltFlags.fVisibleRegions = 1; 3067 3065 3068 if (!fRenderFromSharedDisabled && pSource->bVisible) 3066 3069 { … … 5556 5559 if (pDstAlloc) 5557 5560 { 5561 PVBOXWDDM_SOURCE pSource = &pDevExt->aSources[pDstAlloc->AllocData.SurfDesc.VidPnSourceId]; 5558 5562 do 5559 5563 { … … 5573 5577 /* issue VBOXWDDM_ALLOC_TYPE_STD_SHADOWSURFACE ONLY in case there are no 3D contexts currently 5574 5578 * otherwise we would need info about all rects being updated on primary for visible rect reporting */ 5575 if (!cContexts3D && !cContexts2D )5579 if (!cContexts3D && !cContexts2D && !pSource->fHas3DVrs) 5576 5580 { 5577 5581 if (pDstAlloc->enmType == VBOXWDDM_ALLOC_TYPE_STD_SHAREDPRIMARYSURFACE -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.h
r46757 r46885 168 168 } 169 169 170 if (pAllocation && pAllocation->enmType == VBOXWDDM_ALLOC_TYPE_STD_SHAREDPRIMARYSURFACE) 171 { 170 if (pAllocation && pAllocation->hostID) 171 { 172 NTSTATUS Status = vboxVdmaTexPresentSetAlloc(pDevExt, srcId, pAllocation); 173 if (!NT_SUCCESS(Status)) 174 { 175 WARN(("vboxVdmaTexPresentSetAlloc failed, Status 0x%x", Status)); 176 } 177 178 VBoxVrListClear(&pSource->VrList); 179 pSource->fHas3DVrs = TRUE; 180 } 181 else 182 { 183 if (pSource->fHas3DVrs) 184 { 185 NTSTATUS Status = vboxVdmaTexPresentSetAlloc(pDevExt, srcId, NULL); 186 if (!NT_SUCCESS(Status)) 187 { 188 WARN(("vboxVdmaTexPresentSetAlloc failed, Status 0x%x", Status)); 189 } 190 pSource->fHas3DVrs = FALSE; 191 } 192 172 193 RTRECT Rect; 173 194 Rect.xLeft = 0; 174 195 Rect.yTop = 0; 175 Rect.xRight = pAllocation ->AllocData.SurfDesc.width;176 Rect.yBottom = pAllocation ->AllocData.SurfDesc.height;196 Rect.xRight = pAllocation ? pAllocation->AllocData.SurfDesc.width : pSource->AllocData.SurfDesc.width; 197 Rect.yBottom = pAllocation ? pAllocation->AllocData.SurfDesc.height : pSource->AllocData.SurfDesc.height; 177 198 178 199 VBoxVrListRectsSet(&pSource->VrList, 1, &Rect, NULL); 179 200 } 180 else181 VBoxVrListClear(&pSource->VrList);182 183 pSource->fHas3DVrs = FALSE;184 201 185 202 KIRQL OldIrql; -
trunk/src/VBox/Additions/WINNT/Graphics/Wine_new/d3d9/device.c
r46661 r46885 293 293 if (refs != 1) 294 294 { 295 ERR("unexpected ref count %d, destroying in anyway", refs);295 WARN("unexpected ref count %d, destroying in anyway", refs); 296 296 } 297 297 … … 3917 3917 if (device->refcount != 1) 3918 3918 { 3919 ERR("unexpected ref count %d, destroying in anyway", device->refcount);3919 WARN("unexpected ref count %d, destroying in anyway", device->refcount); 3920 3920 } 3921 3921 wined3d_refs = d3d9_device_Term(device);
Note:
See TracChangeset
for help on using the changeset viewer.