Lines Matching refs:pCmd

48 DECLINLINE(void) vbvaVhwaCommandRelease(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD* pCmd)
50 uint32_t cRefs = ASMAtomicDecU32(&pCmd->cRefs);
54 VBoxHGSMIBufferFree(&VBoxCommonFromDeviceExt(pDevExt)->guestCtx, pCmd);
58 DECLINLINE(void) vbvaVhwaCommandRetain(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD* pCmd)
60 ASMAtomicIncU32(&pCmd->cRefs);
64 void vboxVhwaCommandSubmitAsynch(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD* pCmd, PFNVBOXVHWACMDCOMPLETION pfnCompletion, void * pContext)
66 pCmd->GuestVBVAReserved1 = (uintptr_t)pfnCompletion;
67 pCmd->GuestVBVAReserved2 = (uintptr_t)pContext;
68 vbvaVhwaCommandRetain(pDevExt, pCmd);
70 VBoxHGSMIBufferSubmit(&VBoxCommonFromDeviceExt(pDevExt)->guestCtx, pCmd);
72 if(!(pCmd->Flags & VBOXVHWACMD_FLAG_HG_ASYNCH)
73 || ((pCmd->Flags & VBOXVHWACMD_FLAG_GH_ASYNCH_NOCOMPLETION)
74 && (pCmd->Flags & VBOXVHWACMD_FLAG_HG_ASYNCH_RETURNED)))
77 pfnCompletion(pDevExt, pCmd, pContext);
80 vbvaVhwaCommandRelease(pDevExt, pCmd);
83 static DECLCALLBACK(void) vboxVhwaCompletionSetEvent(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD * pCmd, void * pvContext)
88 void vboxVhwaCommandSubmitAsynchByEvent(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD* pCmd, RTSEMEVENT hEvent)
90 vboxVhwaCommandSubmitAsynch(pDevExt, pCmd, vboxVhwaCompletionSetEvent, hEvent);
127 void vboxVhwaCommandFree(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD* pCmd)
130 VBoxSHGSMICommandFree(&pDevExt->u.primary.hgsmiAdapterHeap, pCmd);
132 vbvaVhwaCommandRelease(pDevExt, pCmd);
136 int vboxVhwaCommandSubmit(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD* pCmd)
139 const VBOXSHGSMIHEADER* pHdr = VBoxSHGSMICommandPrepSynch(&pDevExt->u.primary.hgsmiAdapterHeap, pCmd);
174 pCmd->Flags |= VBOXVHWACMD_FLAG_GH_ASYNCH_IRQ;
175 vboxVhwaCommandSubmitAsynchByEvent(pDevExt, pCmd, hEvent);
186 static DECLCALLBACK(void) vboxVhwaCompletionFreeCmd(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD * pCmd, void * pContext)
188 vboxVhwaCommandFree(pDevExt, pCmd);
198 VBOXVHWACMD *pCmd = VBOXVHWA_LISTENTRY2CMD(pCur);
199 PFNVBOXVHWACMDCOMPLETION pfnCallback = (PFNVBOXVHWACMDCOMPLETION)pCmd->GuestVBVAReserved1;
200 void *pvCallback = (void*)pCmd->GuestVBVAReserved2;
201 pfnCallback(pDevExt, pCmd, pvCallback);
207 void vboxVhwaCommandSubmitAsynchAndComplete(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD* pCmd)
212 pCmd->Flags |= VBOXVHWACMD_FLAG_GH_ASYNCH_NOCOMPLETION;
214 vboxVhwaCommandSubmitAsynch(pDevExt, pCmd, vboxVhwaCompletionFreeCmd, NULL);
220 VBOXVHWACMD* pCmd = VBOXVHWACMD_HEAD(pInfo);
221 vboxVhwaCommandFree(pDevExt, pCmd);
226 VBOXVHWACMD* pCmd = VBOXVHWACMD_HEAD(pInfo);
227 vboxVhwaCommandFree(pDevExt, pCmd);
232 VBOXVHWACMD* pCmd = vboxVhwaCommandCreate(pDevExt, srcId, VBOXVHWACMD_TYPE_QUERY_INFO1, sizeof(VBOXVHWACMD_QUERYINFO1));
235 Assert(pCmd);
236 if (!pCmd)
242 pInfo1 = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO1);
248 int rc = vboxVhwaCommandSubmit(pDevExt, pCmd);
252 if(RT_SUCCESS(pCmd->rc))
254 return VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO1);
258 vboxVhwaCommandFree(pDevExt, pCmd);
264 VBOXVHWACMD* pCmd = vboxVhwaCommandCreate(pDevExt, srcId, VBOXVHWACMD_TYPE_QUERY_INFO2, VBOXVHWAINFO2_SIZE(numFourCC));
266 Assert(pCmd);
267 if (!pCmd)
273 pInfo2 = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO2);
276 int rc = vboxVhwaCommandSubmit(pDevExt, pCmd);
280 AssertRC(pCmd->rc);
281 if(RT_SUCCESS(pCmd->rc))
290 vboxVhwaCommandFree(pDevExt, pCmd);
297 VBOXVHWACMD* pCmd;
299 pCmd = vboxVhwaCommandCreate(pDevExt, srcId, VBOXVHWACMD_TYPE_ENABLE, 0);
300 Assert(pCmd);
301 if (!pCmd)
307 rc = vboxVhwaCommandSubmit(pDevExt, pCmd);
311 AssertRC(pCmd->rc);
312 if(RT_SUCCESS(pCmd->rc))
315 rc = pCmd->rc;
318 vboxVhwaCommandFree(pDevExt, pCmd);
327 VBOXVHWACMD* pCmd;
329 pCmd = vboxVhwaCommandCreate(pDevExt, srcId, VBOXVHWACMD_TYPE_DISABLE, 0);
330 Assert(pCmd);
331 if (!pCmd)
337 rc = vboxVhwaCommandSubmit(pDevExt, pCmd);
341 if(RT_SUCCESS(pCmd->rc))
344 rc = pCmd->rc;
347 vboxVhwaCommandFree(pDevExt, pCmd);
512 VBOXVHWACMD* pCmd = vboxVhwaCommandCreate(pDevExt, VidPnSourceId,
514 Assert(pCmd);
515 if(pCmd)
517 VBOXVHWACMD_SURF_DESTROY * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_DESTROY);
524 vboxVhwaCommandSubmitAsynchAndComplete(pDevExt, pCmd);
625 VBOXVHWACMD* pCmd = vboxVhwaCommandCreate(pDevExt, VidPnSourceId,
627 Assert(pCmd);
628 if (pCmd)
630 VBOXVHWACMD_SURF_CREATE * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_CREATE);
641 vboxVhwaCommandSubmit(pDevExt, pCmd);
642 Assert(pCmd->rc == VINF_SUCCESS);
643 if(pCmd->rc == VINF_SUCCESS)
648 rc = pCmd->rc;
650 vboxVhwaCommandFree(pDevExt, pCmd);
660 VBOXVHWACMD* pCmd = vboxVhwaCommandCreate(pDevExt, VidPnSourceId,
662 Assert(pCmd);
663 if (pCmd)
665 VBOXVHWACMD_SURF_GETINFO * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_GETINFO);
676 vboxVhwaCommandSubmit(pDevExt, pCmd);
677 Assert(pCmd->rc == VINF_SUCCESS);
678 if(pCmd->rc == VINF_SUCCESS)
683 rc = pCmd->rc;
685 vboxVhwaCommandFree(pDevExt, pCmd);
833 VBOXVHWACMD* pCmd = vboxVhwaCommandCreate(pOverlay->pDevExt, pOverlay->VidPnSourceId,
835 Assert(pCmd);
836 if(pCmd)
838 VBOXVHWACMD_SURF_FLIP * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_FLIP);
863 vboxVhwaCommandSubmitAsynchAndComplete(pOverlay->pDevExt, pCmd);
904 VBOXVHWACMD* pCmd = vboxVhwaCommandCreate(pOverlay->pDevExt, pOverlay->VidPnSourceId,
906 Assert(pCmd);
907 if(pCmd)
909 VBOXVHWACMD_SURF_COLORFILL * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_COLORFILL);
917 vboxVhwaCommandSubmitAsynchAndComplete(pOverlay->pDevExt, pCmd);
992 VBOXVHWACMD* pCmd = vboxVhwaCommandCreate(pOverlay->pDevExt, pOverlay->VidPnSourceId,
994 Assert(pCmd);
995 if(pCmd)
997 VBOXVHWACMD_SURF_OVERLAY_UPDATE * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_OVERLAY_UPDATE);
1043 vboxVhwaCommandSubmitAsynchAndComplete(pOverlay->pDevExt, pCmd);