Lines Matching refs:pDev

24 static void VBoxDispVHWACommandFree(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
26 VBoxHGSMIBufferFree(&pDev->hgsmi.ctx, pCmd);
29 static void VBoxDispVHWACommandRetain(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
34 static void VBoxDispVHWACommandSubmitAsynchByEvent(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd, VBOXPEVENT pEvent)
39 VBoxDispVHWACommandRetain(pDev, pCmd);
43 VBoxHGSMIBufferSubmit(&pDev->hgsmi.ctx, pCmd);
48 pDev->vpAPI.VideoPortProcs.pfnSetEvent(pDev->vpAPI.pContext, pEvent);
51 VBoxDispVHWACommandRelease(pDev, pCmd);
54 static void VBoxDispVHWAHanldeVHWACmdCompletion(PVBOXDISPDEV pDev, VBVAHOSTCMD * pHostCmd)
57 VBOXVHWACMD* pComplCmd = (VBOXVHWACMD*)HGSMIOffsetToPointer(&pDev->hgsmi.ctx.heapCtx.area, pComplete->offCmd);
61 pfnCompletion(pDev, pComplCmd, pContext);
63 VBoxDispVBVAHostCommandComplete(pDev, pHostCmd);
66 static void VBoxVHWAHostCommandHandler(PVBOXDISPDEV pDev, VBVAHOSTCMD * pCmd)
72 VBoxDispVHWAHanldeVHWACmdCompletion(pDev, pCmd);
77 VBoxDispVBVAHostCommandComplete(pDev, pCmd);
82 void VBoxDispVHWAInit(PVBOXDISPDEV pDev)
87 rc = VBoxDispMPVHWAQueryInfo(pDev->hDriver, &info);
92 pDev->vhwa.offVramBase = info.offVramBase;
96 int VBoxDispVHWAEnable(PVBOXDISPDEV pDev)
101 if (!pDev->hgsmi.bSupported)
106 pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_ENABLE, 0);
113 if(VBoxDispVHWACommandSubmit(pDev, pCmd))
121 VBoxDispVHWACommandRelease(pDev, pCmd);
125 VBOXVHWACMD* VBoxDispVHWACommandCreate(PVBOXDISPDEV pDev, VBOXVHWACMD_TYPE enmCmd, VBOXVHWACMD_LENGTH cbCmd)
127 VBOXVHWACMD* pHdr = (VBOXVHWACMD*)VBoxHGSMIBufferAlloc(&pDev->hgsmi.ctx,
138 pHdr->iDisplay = pDev->iDevice;
145 VBoxDispVHWACommandCheckHostCmds(pDev);
150 void VBoxDispVHWACommandRelease(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
156 VBoxDispVHWACommandFree(pDev, pCmd);
160 BOOL VBoxDispVHWACommandSubmit(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
163 VBOXVP_STATUS rc = pDev->vpAPI.VideoPortProcs.pfnCreateEvent(pDev->vpAPI.pContext, VBOXNOTIFICATION_EVENT, NULL, &pEvent);
168 VBoxDispVHWACommandSubmitAsynchByEvent(pDev, pCmd, pEvent);
170 rc = pDev->vpAPI.VideoPortProcs.pfnWaitForSingleObject(pDev->vpAPI.pContext, pEvent,
176 pDev->vpAPI.VideoPortProcs.pfnDeleteEvent(pDev->vpAPI.pContext, pEvent);
182 void VBoxDispVHWACommandCheckHostCmds(PVBOXDISPDEV pDev)
185 int rc = pDev->hgsmi.mp.pfnRequestCommandsHandler(pDev->hgsmi.mp.hContext, HGSMI_CH_VBVA, pDev->iDevice, &pCmd);
192 VBoxVHWAHostCommandHandler(pDev, pCmd);
197 static DECLCALLBACK(void) VBoxDispVHWACommandCompletionCallbackEvent(PVBOXDISPDEV pDev, VBOXVHWACMD * pCmd, void * pContext)
200 LONG oldState = pDev->vpAPI.VideoPortProcs.pfnSetEvent(pDev->vpAPI.pContext, pEvent);
205 void VBoxDispVHWACommandSubmitAsynch (PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd, PFNVBOXVHWACMDCOMPLETION pfnCompletion, void * pContext)
209 VBoxDispVHWACommandRetain(pDev, pCmd);
211 VBoxHGSMIBufferSubmit(&pDev->hgsmi.ctx, pCmd);
216 pfnCompletion(pDev, pCmd, pContext);
219 VBoxDispVHWACommandRelease(pDev, pCmd);
222 static DECLCALLBACK(void) VBoxDispVHWAFreeCmdCompletion(PVBOXDISPDEV pDev, VBOXVHWACMD * pCmd, void * pContext)
224 VBoxDispVHWACommandRelease(pDev, pCmd);
227 void VBoxDispVHWACommandSubmitAsynchAndComplete (PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
231 VBoxDispVHWACommandRetain(pDev, pCmd);
235 VBoxHGSMIBufferSubmit(&pDev->hgsmi.ctx, pCmd);
241 VBoxDispVHWAFreeCmdCompletion(pDev, pCmd, NULL);
244 VBoxDispVHWACommandRelease(pDev, pCmd);
247 void VBoxDispVHWAFreeHostInfo1(PVBOXDISPDEV pDev, VBOXVHWACMD_QUERYINFO1* pInfo)
250 VBoxDispVHWACommandRelease(pDev, pCmd);
253 void VBoxDispVHWAFreeHostInfo2(PVBOXDISPDEV pDev, VBOXVHWACMD_QUERYINFO2* pInfo)
256 VBoxDispVHWACommandRelease(pDev, pCmd);
259 VBOXVHWACMD_QUERYINFO1* VBoxDispVHWAQueryHostInfo1(PVBOXDISPDEV pDev)
261 VBOXVHWACMD* pCmd = VBoxDispVHWACommandCreate (pDev, VBOXVHWACMD_TYPE_QUERY_INFO1, sizeof(VBOXVHWACMD_QUERYINFO1));
275 if(VBoxDispVHWACommandSubmit (pDev, pCmd))
283 VBoxDispVHWACommandRelease(pDev, pCmd);
287 VBOXVHWACMD_QUERYINFO2* VBoxDispVHWAQueryHostInfo2(PVBOXDISPDEV pDev, uint32_t numFourCC)
289 VBOXVHWACMD* pCmd = VBoxDispVHWACommandCreate (pDev, VBOXVHWACMD_TYPE_QUERY_INFO2, VBOXVHWAINFO2_SIZE(numFourCC));
300 if(VBoxDispVHWACommandSubmit (pDev, pCmd))
311 VBoxDispVHWACommandRelease(pDev, pCmd);
315 int VBoxDispVHWAInitHostInfo1(PVBOXDISPDEV pDev)
319 if (!pDev->hgsmi.bSupported)
322 pInfo = VBoxDispVHWAQueryHostInfo1(pDev);
325 pDev->vhwa.bEnabled = false;
329 pDev->vhwa.caps = pInfo->u.out.caps;
330 pDev->vhwa.caps2 = pInfo->u.out.caps2;
331 pDev->vhwa.colorKeyCaps = pInfo->u.out.colorKeyCaps;
332 pDev->vhwa.stretchCaps = pInfo->u.out.stretchCaps;
333 pDev->vhwa.surfaceCaps = pInfo->u.out.surfaceCaps;
334 pDev->vhwa.numOverlays = pInfo->u.out.numOverlays;
335 pDev->vhwa.numFourCC = pInfo->u.out.numFourCC;
336 pDev->vhwa.bEnabled = (pInfo->u.out.cfgFlags & VBOXVHWA_CFG_ENABLED);
337 VBoxDispVHWAFreeHostInfo1(pDev, pInfo);
341 int VBoxDispVHWAInitHostInfo2(PVBOXDISPDEV pDev, DWORD *pFourCC)
346 if (!pDev->hgsmi.bSupported)
349 pInfo = VBoxDispVHWAQueryHostInfo2(pDev, pDev->vhwa.numFourCC);
355 if(pDev->vhwa.numFourCC)
357 memcpy(pFourCC, pInfo->FourCC, pDev->vhwa.numFourCC * sizeof(pFourCC[0]));
365 VBoxDispVHWAFreeHostInfo2(pDev, pInfo);
370 int VBoxDispVHWADisable(PVBOXDISPDEV pDev)
375 if (!pDev->hgsmi.bSupported)
378 pCmd = VBoxDispVHWACommandCreate (pDev, VBOXVHWACMD_TYPE_DISABLE, 0);
385 if(VBoxDispVHWACommandSubmit (pDev, pCmd))
393 VBoxDispVHWACommandRelease(pDev, pCmd);
395 VBoxDispVHWACommandCheckHostCmds(pDev);
411 uint64_t VBoxDispVHWAVramOffsetFromPDEV(PVBOXDISPDEV pDev, ULONG_PTR offPdev)
413 return (uint64_t)(pDev->vhwa.offVramBase + offPdev);