DevVGA_VBVA.cpp revision 056c5b715ad0f5858968db03fe44bc966e2d8b4b
1N/A * available from http://www.virtualbox.org. This file is free software;
1N/A * Clara, CA 95054 USA or visit http://www.sun.com if you need
1N/A#ifdef VBOX_WITH_VIDEOHWACCEL
1N/A#define LOGVBVABUFFER(a) do {} while(0)
1N/Atypedef struct _VBVAPARTIALRECORD
1N/Atypedef struct _VBVACONTEXT
1N/Astatic bool vbvaPartialRead (VBVAPARTIALRECORD *pPartialRecord, uint32_t cbRecord, VBVABUFFER *pVBVA)
static bool vbvaFetchCmd (VBVAPARTIALRECORD *pPartialRecord, VBVABUFFER *pVBVA, VBVACMDHDR **ppHdr, uint32_t *pcbCmd)
if (cbRecord)
if (!dst)
static void vbvaReleaseCmd (VBVAPARTIALRECORD *pPartialRecord, VBVABUFFER *pVBVA, VBVACMDHDR *pHdr, uint32_t cbCmd)
static int vbvaFlushProcess (unsigned uScreenId, PVGASTATE pVGAState, VBVAPARTIALRECORD *pPartialRecord, VBVABUFFER *pVBVA)
LOGVBVABUFFER(("uScreenId %d, indexRecordFirst = %d, indexRecordFree = %d, off32Data = %d, off32Free = %d\n",
} dirtyRect;
return VERR_NOT_SUPPORTED;
if (cbCmd != 0)
if (!fUpdate)
fUpdate = true;
if (fUpdate)
return VINF_SUCCESS;
unsigned uScreenId;
if (pVBVA)
return VINF_SUCCESS;
return rc;
static int vbvaEnable (unsigned uScreenId, PVGASTATE pVGAState, VBVACONTEXT *pCtx, VBVABUFFER *pVBVA, uint32_t u32Offset)
int rc;
return rc;
return VINF_SUCCESS;
static int vbvaMousePointerShape (PVGASTATE pVGAState, VBVACONTEXT *pCtx, const VBVAMOUSEPOINTERSHAPE *pShape, HGSMISIZE cbShape)
if (fShape)
return VERR_INVALID_PARAMETER;
return VERR_NOT_SUPPORTED;
int rc;
if (fShape)
NULL);
return rc;
unsigned uScreenId;
#ifdef DEBUG_sunlover
if (!pCtx)
AssertFailed();
#ifdef DEBUG_sunlover
return rc;
return VINF_SUCCESS;
if (!pCtx)
AssertFailed();
if (!pu8)
return VERR_NO_MEMORY;
#ifdef DEBUG_sunlover
return rc;
if (pCtx)
return VINF_SUCCESS;
#ifdef VBOX_WITH_VIDEOHWACCEL
static VBOXVHWACMD* vbvaVHWAHHCommandCreate (PVGASTATE pVGAState, VBOXVHWACMD_TYPE enmCmd, VBOXVHWACMD_LENGTH cbCmd)
if (pHdr)
return pHdr;
if(!cRefs)
return rc;
VBOXVHWACMD *pCmd = vbvaVHWAHHCommandCreate(pVGAState, VBOXVHWACMD_TYPE_HH_CONSTRUCT, sizeof(VBOXVHWACMD_HH_CONSTRUCT));
if(pCmd)
#ifdef DEBUG_misha
return rc;
return VERR_OUT_OF_RESOURCES;
if(pCmd)
#ifdef DEBUG_misha
return rc;
return VERR_OUT_OF_RESOURCES;
if(pCmd)
#ifdef DEBUG_misha
return rc;
return VERR_OUT_OF_RESOURCES;
#define PPDMDDISPLAYVBVACALLBACKS_2_PVGASTATE(_pcb) ( (PVGASTATE)((uint8_t *)(_pcb) - RT_OFFSETOF(VGASTATE, VBVACallbacks)) )
int rc;
(void**)&pHostCmd,
(void**)&pHostCmd,
rc = HGSMIHostCommandProcessAndFreeAsynch(pIns, pHostCmd, (pCmd->Flags & VBOXVHWACMD_FLAG_GH_ASYNCH_IRQ) != 0);
return rc;
return rc;
static DECLCALLBACK(int) vbvaChannelHandler (void *pvHandler, uint16_t u16ChannelInfo, void *pvBuffer, HGSMISIZE cbBuffer)
switch (u16ChannelInfo)
case VBVA_QUERY_CONF32:
case VBVA_SET_CONF32:
case VBVA_INFO_VIEW:
case VBVA_INFO_HEAP:
case VBVA_FLUSH:
case VBVA_INFO_SCREEN:
case VBVA_ENABLE:
if (uScreenId == ~0U)
if (pVBVA)
case VBVA_MOUSE_POINTER_SHAPE:
LogFlowFunc(("VBVA_MOUSE_POINTER_SHAPE: i32Result 0x%x, fu32Flags 0x%x, hot spot %d,%d, size %dx%d\n",
#ifdef VBOX_WITH_VIDEOHWACCEL
case VBVA_VHWA_CMD:
return rc;
#ifdef VBOX_WITH_VIDEOHWACCEL
if (pCtx)
unsigned uScreenId;
if (pCtx)
return rc;
pVM,
sizeof (VBVACONTEXT));
return rc;