Changeset 80475 in vbox for trunk/src/VBox/Additions/WINNT
- Timestamp:
- Aug 28, 2019 12:30:03 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 132966
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVhwa.cpp
r76553 r80475 19 19 #include "VBoxMPVhwa.h" 20 20 21 #ifndef VBOXVHWA_WITH_SHGSMI 22 # include <iprt/semaphore.h> 23 # include <iprt/asm.h> 24 #endif 21 #include <iprt/semaphore.h> 22 #include <iprt/asm.h> 25 23 26 24 #define VBOXVHWA_PRIMARY_ALLOCATION(_pSrc) ((_pSrc)->pPrimaryAllocation) … … 41 39 pHdr->rc = VERR_GENERAL_FAILURE; 42 40 pHdr->enmCmd = enmCmd; 43 #ifndef VBOXVHWA_WITH_SHGSMI44 41 pHdr->cRefs = 1; 45 #endif 46 } 47 48 #ifdef VBOXVHWA_WITH_SHGSMI 49 static int vboxVhwaCommandSubmitHgsmi(struct _DEVICE_EXTENSION *pDevExt, HGSMIOFFSET offDr) 50 { 51 VBoxHGSMIGuestWrite(pDevExt, offDr); 52 return VINF_SUCCESS; 53 } 54 #else 42 } 43 55 44 DECLINLINE(void) vbvaVhwaCommandRelease(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd) 56 45 { … … 102 91 vboxVhwaCommandSubmitAsynch(pDevExt, pCmd, vboxVhwaCompletionSetEvent, hEvent); 103 92 } 104 #endif105 93 106 94 void vboxVhwaCommandCheckCompletion(PVBOXMP_DEVEXT pDevExt) … … 115 103 vboxVhwaCommandCheckCompletion(pDevExt); 116 104 VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pHdr; 117 #ifdef VBOXVHWA_WITH_SHGSMI118 pHdr = (VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *)VBoxSHGSMICommandAlloc(&pDevExt->u.primary.hgsmiAdapterHeap,119 cbCmd + VBOXVHWACMD_HEADSIZE(),120 HGSMI_CH_VBVA,121 VBVA_VHWA_CMD);122 #else123 105 pHdr = (VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *)VBoxHGSMIBufferAlloc(&VBoxCommonFromDeviceExt(pDevExt)->guestCtx, 124 106 cbCmd + VBOXVHWACMD_HEADSIZE(), 125 107 HGSMI_CH_VBVA, 126 108 VBVA_VHWA_CMD); 127 #endif128 109 Assert(pHdr); 129 110 if (!pHdr) … … 137 118 void vboxVhwaCommandFree(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd) 138 119 { 139 #ifdef VBOXVHWA_WITH_SHGSMI140 VBoxSHGSMICommandFree(&pDevExt->u.primary.hgsmiAdapterHeap, pCmd);141 #else142 120 vbvaVhwaCommandRelease(pDevExt, pCmd); 143 #endif144 121 } 145 122 146 123 int vboxVhwaCommandSubmit(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd) 147 124 { 148 #ifdef VBOXVHWA_WITH_SHGSMI149 const VBOXSHGSMIHEADER* pHdr = VBoxSHGSMICommandPrepSynch(&pDevExt->u.primary.hgsmiAdapterHeap, pCmd);150 Assert(pHdr);151 int rc = VERR_GENERAL_FAILURE;152 if (pHdr)153 {154 do155 {156 HGSMIOFFSET offCmd = VBoxSHGSMICommandOffset(&pDevExt->u.primary.hgsmiAdapterHeap, pHdr);157 Assert(offCmd != HGSMIOFFSET_VOID);158 if (offCmd != HGSMIOFFSET_VOID)159 {160 rc = vboxVhwaCommandSubmitHgsmi(pDevExt, offCmd);161 AssertRC(rc);162 if (RT_SUCCESS(rc))163 {164 VBoxSHGSMICommandDoneSynch(&pDevExt->u.primary.hgsmiAdapterHeap, pHdr);165 AssertRC(rc);166 break;167 }168 }169 else170 rc = VERR_INVALID_PARAMETER;171 /* fail to submit, cancel it */172 VBoxSHGSMICommandCancelSynch(&pDevExt->u.primary.hgsmiAdapterHeap, pHdr);173 } while (0);174 }175 else176 rc = VERR_INVALID_PARAMETER;177 return rc;178 #else179 125 RTSEMEVENT hEvent; 180 126 int rc = RTSemEventCreate(&hEvent); … … 190 136 } 191 137 return rc; 192 #endif 193 } 194 195 #ifndef VBOXVHWA_WITH_SHGSMI 138 } 139 196 140 /** @callback_method_impl{FNVBOXVHWACMDCOMPLETION} */ 197 141 static DECLCALLBACK(void) … … 216 160 } 217 161 218 #endif219 162 220 163 void vboxVhwaCommandSubmitAsynchAndComplete(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd) 221 164 { 222 #ifdef VBOXVHWA_WITH_SHGSMI223 # error "port me"224 #else225 165 pCmd->Flags |= VBOXVHWACMD_FLAG_GH_ASYNCH_NOCOMPLETION; 226 166 227 167 vboxVhwaCommandSubmitAsynch(pDevExt, pCmd, vboxVhwaCompletionFreeCmd, NULL); 228 #endif229 168 } 230 169 -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVhwa.h
r76563 r80475 35 35 void vboxVhwaCommandSubmitAsynchAndComplete(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd); 36 36 37 #ifndef VBOXVHWA_WITH_SHGSMI38 37 typedef DECLCALLBACK(void) FNVBOXVHWACMDCOMPLETION(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST * pCmd, 39 38 void *pvContext); … … 53 52 54 53 void vboxVhwaCompletionListProcess(PVBOXMP_DEVEXT pDevExt, VBOXVTLIST *pList); 55 #endif56 54 57 55 int vboxVhwaEnable(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId);
Note:
See TracChangeset
for help on using the changeset viewer.