Lines Matching refs:pCmd

24 static void VBoxDispVHWACommandFree(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
26 VBoxHGSMIBufferFree(&pDev->hgsmi.ctx, pCmd);
29 static void VBoxDispVHWACommandRetain(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
31 ASMAtomicIncU32(&pCmd->cRefs);
34 static void VBoxDispVHWACommandSubmitAsynchByEvent(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd, VBOXPEVENT pEvent)
36 pCmd->GuestVBVAReserved1 = (uintptr_t)pEvent;
37 pCmd->GuestVBVAReserved2 = 0;
39 VBoxDispVHWACommandRetain(pDev, pCmd);
42 pCmd->Flags |= VBOXVHWACMD_FLAG_GH_ASYNCH_EVENT;
43 VBoxHGSMIBufferSubmit(&pDev->hgsmi.ctx, pCmd);
45 if(!(ASMAtomicReadU32((volatile uint32_t *)&pCmd->Flags) & VBOXVHWACMD_FLAG_HG_ASYNCH))
51 VBoxDispVHWACommandRelease(pDev, pCmd);
66 static void VBoxVHWAHostCommandHandler(PVBOXDISPDEV pDev, VBVAHOSTCMD * pCmd)
68 switch(pCmd->customOpCode)
72 VBoxDispVHWAHanldeVHWACmdCompletion(pDev, pCmd);
77 VBoxDispVBVAHostCommandComplete(pDev, pCmd);
99 VBOXVHWACMD* pCmd;
106 pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_ENABLE, 0);
107 if (!pCmd)
113 if(VBoxDispVHWACommandSubmit(pDev, pCmd))
115 if(RT_SUCCESS(pCmd->rc))
121 VBoxDispVHWACommandRelease(pDev, pCmd);
150 void VBoxDispVHWACommandRelease(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
152 uint32_t cRefs = ASMAtomicDecU32(&pCmd->cRefs);
156 VBoxDispVHWACommandFree(pDev, pCmd);
160 BOOL VBoxDispVHWACommandSubmit(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
167 pCmd->Flags |= VBOXVHWACMD_FLAG_GH_ASYNCH_IRQ;
168 VBoxDispVHWACommandSubmitAsynchByEvent(pDev, pCmd, pEvent);
184 VBVAHOSTCMD *pCmd, *pNextCmd;
185 int rc = pDev->hgsmi.mp.pfnRequestCommandsHandler(pDev->hgsmi.mp.hContext, HGSMI_CH_VBVA, pDev->iDevice, &pCmd);
189 for(;pCmd; pCmd = pNextCmd)
191 pNextCmd = pCmd->u.pNext;
192 VBoxVHWAHostCommandHandler(pDev, pCmd);
197 static DECLCALLBACK(void) VBoxDispVHWACommandCompletionCallbackEvent(PVBOXDISPDEV pDev, VBOXVHWACMD * pCmd, void * pContext)
205 void VBoxDispVHWACommandSubmitAsynch (PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd, PFNVBOXVHWACMDCOMPLETION pfnCompletion, void * pContext)
207 pCmd->GuestVBVAReserved1 = (uintptr_t)pfnCompletion;
208 pCmd->GuestVBVAReserved2 = (uintptr_t)pContext;
209 VBoxDispVHWACommandRetain(pDev, pCmd);
211 VBoxHGSMIBufferSubmit(&pDev->hgsmi.ctx, pCmd);
213 if(!(pCmd->Flags & VBOXVHWACMD_FLAG_HG_ASYNCH))
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)
229 pCmd->GuestVBVAReserved1 = (uintptr_t)VBoxDispVHWAFreeCmdCompletion;
231 VBoxDispVHWACommandRetain(pDev, pCmd);
233 pCmd->Flags |= VBOXVHWACMD_FLAG_GH_ASYNCH_NOCOMPLETION;
235 VBoxHGSMIBufferSubmit(&pDev->hgsmi.ctx, pCmd);
237 if(!(pCmd->Flags & VBOXVHWACMD_FLAG_HG_ASYNCH)
238 || pCmd->Flags & VBOXVHWACMD_FLAG_HG_ASYNCH_RETURNED)
241 VBoxDispVHWAFreeCmdCompletion(pDev, pCmd, NULL);
244 VBoxDispVHWACommandRelease(pDev, pCmd);
249 VBOXVHWACMD* pCmd = VBOXVHWACMD_HEAD(pInfo);
250 VBoxDispVHWACommandRelease(pDev, pCmd);
255 VBOXVHWACMD* pCmd = VBOXVHWACMD_HEAD(pInfo);
256 VBoxDispVHWACommandRelease(pDev, pCmd);
261 VBOXVHWACMD* pCmd = VBoxDispVHWACommandCreate (pDev, VBOXVHWACMD_TYPE_QUERY_INFO1, sizeof(VBOXVHWACMD_QUERYINFO1));
263 if (!pCmd)
269 pInfo1 = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO1);
275 if(VBoxDispVHWACommandSubmit (pDev, pCmd))
277 if(RT_SUCCESS(pCmd->rc))
279 return VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO1);
283 VBoxDispVHWACommandRelease(pDev, pCmd);
289 VBOXVHWACMD* pCmd = VBoxDispVHWACommandCreate (pDev, VBOXVHWACMD_TYPE_QUERY_INFO2, VBOXVHWAINFO2_SIZE(numFourCC));
291 if (!pCmd)
297 pInfo2 = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO2);
300 if(VBoxDispVHWACommandSubmit (pDev, pCmd))
302 if(RT_SUCCESS(pCmd->rc))
311 VBoxDispVHWACommandRelease(pDev, pCmd);
373 VBOXVHWACMD* pCmd;
378 pCmd = VBoxDispVHWACommandCreate (pDev, VBOXVHWACMD_TYPE_DISABLE, 0);
379 if (!pCmd)
385 if(VBoxDispVHWACommandSubmit (pDev, pCmd))
387 if(RT_SUCCESS(pCmd->rc))
393 VBoxDispVHWACommandRelease(pDev, pCmd);