Changeset 41058 in vbox for trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp
- Timestamp:
- Apr 25, 2012 9:42:29 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 77623
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp
r40897 r41058 1962 1962 { 1963 1963 if (pAllocation->pSynchEvent) 1964 {1965 1964 ObDereferenceObject(pAllocation->pSynchEvent); 1966 }1967 1965 break; 1968 1966 } … … 2151 2149 { 2152 2150 pAllocationInfo->Size = pAllocInfo->cbBuffer; 2153 pAllocation-> enmSynchType = pAllocInfo->enmSynchType;2151 pAllocation->fUhgsmiType = pAllocInfo->fUhgsmiType; 2154 2152 pAllocation->SurfDesc.cbSize = pAllocInfo->cbBuffer; 2155 2153 pAllocationInfo->Flags.CpuVisible = 1; 2156 2154 // pAllocationInfo->Flags.SynchronousPaging = 1; 2157 2155 pAllocationInfo->AllocationPriority = D3DDDI_ALLOCATIONPRIORITY_MAXIMUM; 2158 switch (pAllocInfo->enmSynchType)2156 if (pAllocInfo->hSynch) 2159 2157 { 2160 case VBOXUHGSMI_SYNCHOBJECT_TYPE_EVENT: 2161 Status = ObReferenceObjectByHandle((HANDLE)pAllocInfo->hSynch, EVENT_MODIFY_STATE, *ExEventObjectType, UserMode, 2162 (PVOID*)&pAllocation->pSynchEvent, 2163 NULL); 2164 Assert(Status == STATUS_SUCCESS); 2165 break; 2166 case VBOXUHGSMI_SYNCHOBJECT_TYPE_SEMAPHORE: 2167 Status = ObReferenceObjectByHandle((HANDLE)pAllocInfo->hSynch, EVENT_MODIFY_STATE, *ExSemaphoreObjectType, UserMode, 2168 (PVOID*)&pAllocation->pSynchSemaphore, 2169 NULL); 2170 Assert(Status == STATUS_SUCCESS); 2171 break; 2172 case VBOXUHGSMI_SYNCHOBJECT_TYPE_NONE: 2173 pAllocation->pSynchEvent = NULL; 2174 Status = STATUS_SUCCESS; 2175 break; 2176 default: 2177 LOGREL(("ERROR: invalid synch info type(%d)", pAllocInfo->enmSynchType)); 2178 AssertBreakpoint(); 2179 Status = STATUS_INVALID_PARAMETER; 2180 break; 2158 Status = ObReferenceObjectByHandle((HANDLE)pAllocInfo->hSynch, EVENT_MODIFY_STATE, *ExEventObjectType, UserMode, 2159 (PVOID*)&pAllocation->pSynchEvent, 2160 NULL); 2161 Assert(Status == STATUS_SUCCESS); 2181 2162 } 2182 2163 break; … … 2763 2744 { 2764 2745 VBOXVDMACMD_CHROMIUM_BUFFER *pBufCmd = &pBody->aBuffers[i]; 2765 if (!pBufCmd->u32Gues Data)2746 if (!pBufCmd->u32GuestData) 2766 2747 { 2767 2748 /* signal completion */ 2768 PVBOXWDDM_ALLOCATION pAlloc = (PVBOXWDDM_ALLOCATION)pBufCmd->u64GuesData; 2769 switch (pAlloc->enmSynchType) 2770 { 2771 case VBOXUHGSMI_SYNCHOBJECT_TYPE_EVENT: 2772 KeSetEvent(pAlloc->pSynchEvent, 3, FALSE); 2773 break; 2774 case VBOXUHGSMI_SYNCHOBJECT_TYPE_SEMAPHORE: 2775 KeReleaseSemaphore(pAlloc->pSynchSemaphore, 2776 3, 2777 1, 2778 FALSE); 2779 break; 2780 case VBOXUHGSMI_SYNCHOBJECT_TYPE_NONE: 2781 break; 2782 default: 2783 Assert(0); 2784 } 2749 PVBOXWDDM_ALLOCATION pAlloc = (PVBOXWDDM_ALLOCATION)pBufCmd->u64GuestData; 2750 if (pAlloc->pSynchEvent) 2751 KeSetEvent(pAlloc->pSynchEvent, 3, FALSE); 2785 2752 } 2786 2753 } … … 3035 3002 pBufCmd->offBuffer = pBufInfo->Alloc.offAlloc; 3036 3003 pBufCmd->cbBuffer = pBufInfo->cbData; 3037 pBufCmd->u32Gues Data = pBufInfo->bDoNotSignalCompletion;3038 pBufCmd->u64Gues Data = (uint64_t)pBufInfo->Alloc.pAlloc;3004 pBufCmd->u32GuestData = pBufInfo->bDoNotSignalCompletion; 3005 pBufCmd->u64GuestData = (uint64_t)pBufInfo->Alloc.pAlloc; 3039 3006 } 3040 3007 … … 5136 5103 5137 5104 pSubmInfo->cbData = pSubmUmInfo->cbData; 5138 pSubmInfo->bDoNotSignalCompletion = pSubmUmInfo-> fSubFlags.bDoNotSignalCompletion;5105 pSubmInfo->bDoNotSignalCompletion = pSubmUmInfo->bDoNotSignalCompletion; 5139 5106 5140 5107 pPLL->AllocationIndex = i;
Note:
See TracChangeset
for help on using the changeset viewer.