VirtualBox

Changeset 71592 in vbox


Ignore:
Timestamp:
Mar 31, 2018 7:51:41 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
121581
Message:

DevVGA,VBoxVideo: Code cleanup in progress. bugref:9094

Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/Graphics/VBoxVideo.h

    r71590 r71592  
    347347} VBOXVHWACMD_TYPE;
    348348
    349 /* the command processing was asynch, set by the host to indicate asynch command completion
    350  * must not be cleared once set, the command completion is performed by issuing a host->guest completion command
    351  * while keeping this flag unchanged */
    352 #define VBOXVHWACMD_FLAG_HG_ASYNCH               0x00010000
    353 /* asynch completion is performed by issuing the event */
    354 #define VBOXVHWACMD_FLAG_GH_ASYNCH_EVENT         0x00000001
    355 /* issue interrupt on asynch completion */
    356 #define VBOXVHWACMD_FLAG_GH_ASYNCH_IRQ           0x00000002
    357 /* guest does not do any op on completion of this command, the host may copy the command and indicate that it does not need the command anymore
     349/** The command processing was asynch, set by the host to indicate asynch
     350 * command completion. Must not be cleared once set, the command completion is
     351 * performed by issuing a host->guest completion command while keeping this
     352 * flag unchanged */
     353#define VBOXVHWACMD_FLAG_HG_ASYNCH               UINT32_C(0x00010000)
     354/** asynch completion is performed by issuing the event */
     355#define VBOXVHWACMD_FLAG_GH_ASYNCH_EVENT         UINT32_C(0x00000001)
     356/** issue interrupt on asynch completion */
     357#define VBOXVHWACMD_FLAG_GH_ASYNCH_IRQ           UINT32_C(0x00000002)
     358/** Guest does not do any op on completion of this command, the host may copy
     359 * the command and indicate that it does not need the command anymore
    358360 * by setting the VBOXVHWACMD_FLAG_HG_ASYNCH_RETURNED flag */
    359 #define VBOXVHWACMD_FLAG_GH_ASYNCH_NOCOMPLETION  0x00000004
    360 /* the host has copied the VBOXVHWACMD_FLAG_GH_ASYNCH_NOCOMPLETION command and returned it to the guest */
    361 #define VBOXVHWACMD_FLAG_HG_ASYNCH_RETURNED      0x00020000
    362 /* this is the host->host cmd, i.e. a configuration command posted by the host to the framebuffer */
    363 #define VBOXVHWACMD_FLAG_HH_CMD                  0x10000000
     361#define VBOXVHWACMD_FLAG_GH_ASYNCH_NOCOMPLETION  UINT32_C(0x00000004)
     362/** the host has copied the VBOXVHWACMD_FLAG_GH_ASYNCH_NOCOMPLETION command and returned it to the guest */
     363#define VBOXVHWACMD_FLAG_HG_ASYNCH_RETURNED      UINT32_C(0x00020000)
     364/** this is the host->host cmd, i.e. a configuration command posted by the host to the framebuffer */
     365#define VBOXVHWACMD_FLAG_HH_CMD                  UINT32_C(0x10000000)
    364366
    365367typedef struct VBOXVHWACMD
    366368{
    367     VBOXVHWACMD_TYPE enmCmd; /* command type */
    368     volatile int32_t rc; /* command result */
    369     int32_t iDisplay; /* display index */
    370     volatile int32_t Flags; /* ored VBOXVHWACMD_FLAG_xxx values */
    371     uint64_t GuestVBVAReserved1; /* field internally used by the guest VBVA cmd handling, must NOT be modified by clients */
    372     uint64_t GuestVBVAReserved2; /* field internally used by the guest VBVA cmd handling, must NOT be modified by clients */
     369    VBOXVHWACMD_TYPE enmCmd;     /**< command type */
     370    volatile int32_t rc;         /**< command result */
     371    int32_t iDisplay;            /**< display index */
     372    volatile int32_t Flags;      /**< ORed VBOXVHWACMD_FLAG_xxx values */
     373    uint64_t GuestVBVAReserved1; /**< field internally used by the guest VBVA cmd handling, must NOT be modified by clients */
     374    uint64_t GuestVBVAReserved2; /**< field internally used by the guest VBVA cmd handling, must NOT be modified by clients */
    373375    volatile uint32_t cRefs;
    374376    int32_t Reserved;
     
    376378    {
    377379        struct VBOXVHWACMD *pNext;
    378         uint32_t             offNext;
    379         uint64_t Data; /* the body is 64-bit aligned */
     380        uint32_t            offNext;
     381        uint64_t Data;                  /**< the body is 64-bit aligned */
    380382    } u;
    381383    char body[1];
    382384} VBOXVHWACMD;
    383385
    384 #define VBOXVHWACMD_HEADSIZE() (RT_OFFSETOF(VBOXVHWACMD, body))
    385 #define VBOXVHWACMD_SIZE_FROMBODYSIZE(_s) (VBOXVHWACMD_HEADSIZE() + (_s))
    386 #define VBOXVHWACMD_SIZE(_tCmd) (VBOXVHWACMD_SIZE_FROMBODYSIZE(sizeof(_tCmd)))
     386#define VBOXVHWACMD_HEADSIZE()                          (RT_OFFSETOF(VBOXVHWACMD, body))
     387#define VBOXVHWACMD_SIZE_FROMBODYSIZE(a_cbBody)         (VBOXVHWACMD_HEADSIZE() + (a_cbBody))
     388#define VBOXVHWACMD_SIZE(a_tTypeCmd)                    (VBOXVHWACMD_SIZE_FROMBODYSIZE(sizeof(a_tTypeCmd)))
    387389typedef unsigned int VBOXVHWACMD_LENGTH;
    388390typedef uint64_t VBOXVHWA_SURFHANDLE;
    389 #define VBOXVHWA_SURFHANDLE_INVALID 0ULL
    390 #define VBOXVHWACMD_BODY(_p, _t) ((_t*)(_p)->body)
    391 #define VBOXVHWACMD_HEAD(_pb) ((VBOXVHWACMD*)((uint8_t *)(_pb) - RT_OFFSETOF(VBOXVHWACMD, body)))
     391#define VBOXVHWA_SURFHANDLE_INVALID                     UINT64_C(0)
     392#define VBOXVHWACMD_BODY(a_pHdr, a_TypeBody)            ( (a_TypeBody RT_UNTRUSTED_VOLATILE_HSTGST *)&(a_pHdr)->body[0] )
     393#if !defined(IN_GUEST) && defined(IN_RING3)
     394# define VBOXVHWACMD_BODY_HOST_HEAP(a_pHdr, a_TypeBody) ( (a_TypeBody *)&(a_pHdr)->body[0] )
     395#endif
     396#define VBOXVHWACMD_HEAD(a_pBody)\
     397    ( (VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HSTGST *)((uint8_t *)(a_pBody) - RT_OFFSETOF(VBOXVHWACMD, body)))
    392398
    393399typedef struct VBOXVHWA_RECTL
     
    968974    } u;
    969975    char body[1];
    970 }VBVAHOSTCMD;
    971 
    972 #define VBVAHOSTCMD_SIZE(_size) (sizeof(VBVAHOSTCMD) + (_size))
    973 #define VBVAHOSTCMD_BODY(_pCmd, _tBody) ((_tBody*)(_pCmd)->body)
    974 #define VBVAHOSTCMD_HDR(_pBody) ((VBVAHOSTCMD*)(((uint8_t*)_pBody) - RT_OFFSETOF(VBVAHOSTCMD, body)))
    975 #define VBVAHOSTCMD_HDRSIZE (RT_OFFSETOF(VBVAHOSTCMD, body))
     976} VBVAHOSTCMD;
     977
     978#define VBVAHOSTCMD_SIZE(a_cb)                  (sizeof(VBVAHOSTCMD) + (a_cb))
     979#define VBVAHOSTCMD_BODY(a_pCmd, a_TypeBody)    ((a_TypeBody RT_UNTRUSTED_VOLATILE_HSTGST *)&(a_pCmd)->body[0])
     980#define VBVAHOSTCMD_HDR(a_pBody) \
     981    ( (VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HSTGST *)( (uint8_t *)(a_pBody) - RT_OFFSETOF(VBVAHOSTCMD, body)) )
     982#define VBVAHOSTCMD_HDRSIZE                     (RT_OFFSETOF(VBVAHOSTCMD, body))
    976983
    977984#pragma pack()
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/common/xpdm/VBoxVideoIOCTL.h

    r71179 r71592  
    6565typedef void* HVBOXVIDEOHGSMI;
    6666
    67 /* Complete host commands addressed to the display */
    68 typedef DECLCALLBACK(void) FNVBOXVIDEOHGSMICOMPLETION(HVBOXVIDEOHGSMI hHGSMI, struct VBVAHOSTCMD * pCmd);
     67/** Complete host commands addressed to the display */
     68typedef DECLCALLBACK(void) FNVBOXVIDEOHGSMICOMPLETION(HVBOXVIDEOHGSMI hHGSMI, struct VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST * pCmd);
    6969typedef FNVBOXVIDEOHGSMICOMPLETION *PFNVBOXVIDEOHGSMICOMPLETION;
    7070
    71 /* request the host commands addressed to the display */
    72 typedef DECLCALLBACK(int) FNVBOXVIDEOHGSMICOMMANDS(HVBOXVIDEOHGSMI hHGSMI, uint8_t u8Channel, uint32_t iDevice, struct VBVAHOSTCMD ** ppCmd);
     71/** request the host commands addressed to the display */
     72typedef DECLCALLBACK(int) FNVBOXVIDEOHGSMICOMMANDS(HVBOXVIDEOHGSMI hHGSMI, uint8_t u8Channel, uint32_t iDevice,
     73                                                   struct VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST ** ppCmd);
    7374typedef FNVBOXVIDEOHGSMICOMMANDS *PFNVBOXVIDEOHGSMICOMMANDS;
    7475
    75 /* post guest command (offset) to the host */
     76/** post guest command (offset) to the host */
    7677typedef DECLCALLBACK(void) FNVBOXVIDEOHGSMIPOSTCOMMAND(HVBOXVIDEOHGSMI hHGSMI, HGSMIOFFSET offCmd);
    7778typedef FNVBOXVIDEOHGSMIPOSTCOMMAND *PFNVBOXVIDEOHGSMIPOSTCOMMAND;
     
    105106} HGSMIQUERYCPORTPROCS;
    106107
    107 /* Data returned by IOCTL_VIDEO_HGSMI_QUERY_CALLBACKS. */
     108/** Data returned by IOCTL_VIDEO_HGSMI_QUERY_CALLBACKS. */
    108109typedef struct _HGSMIQUERYCALLBACKS
    109110{
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/xpdm/VBoxDispDDraw.cpp

    r69500 r71592  
    3232    if(pDev->vhwa.bEnabled)
    3333    {
    34         VBOXVHWACMD* pCmd;
    35 
    3634        uint32_t unsupportedSCaps = VBoxDispVHWAUnsupportedDDSCAPS(lpDDS->ddsCaps.dwCaps);
    3735        if(unsupportedSCaps)
     
    5048        }
    5149
    52         pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_CANCREATE, sizeof(VBOXVHWACMD_SURF_CANCREATE));
    53         if(pCmd)
     50        VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST * pCmd
     51            = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_CANCREATE, sizeof(VBOXVHWACMD_SURF_CANCREATE));
     52        if (pCmd)
    5453        {
    5554            int rc;
    56             VBOXVHWACMD_SURF_CANCREATE *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_CANCREATE);
    57             memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_CANCREATE));
     55            VBOXVHWACMD_SURF_CANCREATE RT_UNTRUSTED_VOLATILE_HOST  *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_CANCREATE);
    5856
    5957            rc = VBoxDispVHWAFromDDSURFACEDESC(&pBody->SurfInfo, lpDDS);
     
    140138    if(pDev->vhwa.bEnabled)
    141139    {
    142         VBOXVHWACMD* pCmd;
    143 
    144         pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_CREATE, sizeof(VBOXVHWACMD_SURF_CREATE));
     140        VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd
     141            = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_CREATE, sizeof(VBOXVHWACMD_SURF_CREATE));
    145142        if (pCmd)
    146143        {
    147             VBOXVHWACMD_SURF_CREATE *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_CREATE);
     144            VBOXVHWACMD_SURF_CREATE RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_CREATE);
    148145            PVBOXVHWASURFDESC pDesc;
    149146            int rc;
    150147
    151             memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_CREATE));
    152148            rc = VBoxDispVHWAFromDDSURFACEDESC(&pBody->SurfInfo, lpCreateSurface->lpDDSurfaceDesc);
    153149            VBOX_WARNRC(rc);
     
    259255    if (pDev->vhwa.bEnabled)
    260256    {
    261         VBOXVHWACMD* pCmd;
    262 
    263         pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_DESTROY, sizeof(VBOXVHWACMD_SURF_DESTROY));
     257        VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST  *pCmd
     258            = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_DESTROY, sizeof(VBOXVHWACMD_SURF_DESTROY));
    264259        if (pCmd)
    265260        {
    266             VBOXVHWACMD_SURF_DESTROY *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_DESTROY);
    267261            PVBOXVHWASURFDESC pDesc = (PVBOXVHWASURFDESC)lpDestroySurface->lpDDSurface->lpGbl->dwReserved1;
    268 
    269262            if (pDesc)
    270263            {
    271                 memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_DESTROY));
     264                VBOXVHWACMD_SURF_DESTROY RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_DESTROY);
    272265                pBody->u.in.hSurf = pDesc->hHostHandle;
    273266
     
    403396        else
    404397        {
    405             VBOXVHWACMD *pCmd;
    406             pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_LOCK, sizeof(VBOXVHWACMD_SURF_LOCK));
    407 
     398            VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd
     399                = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_LOCK, sizeof(VBOXVHWACMD_SURF_LOCK));
    408400            if (pCmd)
    409401            {
    410                 VBOXVHWACMD_SURF_LOCK *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_LOCK);
    411                 memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_LOCK));
     402                VBOXVHWACMD_SURF_LOCK RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_LOCK);
    412403
    413404                pBody->u.in.offSurface = VBoxDispVHWAVramOffsetFromPDEV(pDev, pSurf->lpGbl->fpVidMem);
     
    500491                 || ((pSurf->ddsCaps.dwCaps & DDSCAPS_OVERLAY) && pDesc->bVisible))
    501492        {
    502             VBOXVHWACMD *pCmd;
    503             pCmd = VBoxDispVHWACommandCreate (pDev, VBOXVHWACMD_TYPE_SURF_UNLOCK, sizeof(VBOXVHWACMD_SURF_UNLOCK));
    504 
    505             if(pCmd)
    506             {
    507                 VBOXVHWACMD_SURF_UNLOCK *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_UNLOCK);
    508                 memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_UNLOCK));
     493            VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd
     494                = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_UNLOCK, sizeof(VBOXVHWACMD_SURF_UNLOCK));
     495            if (pCmd)
     496            {
     497                VBOXVHWACMD_SURF_UNLOCK RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_UNLOCK);
    509498
    510499                pBody->u.in.hSurf = pDesc->hHostHandle;
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/xpdm/VBoxDispDDrawVHWA.cpp

    r69500 r71592  
    2020#include <iprt/asm.h>
    2121
    22 static DECLCALLBACK(void) VBoxDispVHWASurfBltCompletion(PVBOXDISPDEV pDev, VBOXVHWACMD *pCmd, void *pvContext)
     22/** @callback_method_impl{FNVBOXVHWACMDCOMPLETION} */
     23static DECLCALLBACK(void)
     24VBoxDispVHWASurfBltCompletion(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd, void *pvContext)
    2325{
    2426    RT_NOREF(pvContext);
    25     VBOXVHWACMD_SURF_BLT *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_BLT);
    26     PVBOXVHWASURFDESC pSrcDesc = (PVBOXVHWASURFDESC)pBody->SrcGuestSurfInfo;
    27     PVBOXVHWASURFDESC pDestDesc = (PVBOXVHWASURFDESC)pBody->DstGuestSurfInfo;
     27    VBOXVHWACMD_SURF_BLT RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_BLT);
     28    PVBOXVHWASURFDESC pSrcDesc  = (PVBOXVHWASURFDESC)(uintptr_t)pBody->SrcGuestSurfInfo;
     29    PVBOXVHWASURFDESC pDestDesc = (PVBOXVHWASURFDESC)(uintptr_t)pBody->DstGuestSurfInfo;
    2830
    2931    ASMAtomicDecU32(&pSrcDesc->cPendingBltsSrc);
     
    3335}
    3436
    35 static DECLCALLBACK(void) VBoxDispVHWASurfFlipCompletion(PVBOXDISPDEV pDev, VBOXVHWACMD *pCmd, void *pvContext)
     37/** @callback_method_impl{FNVBOXVHWACMDCOMPLETION} */
     38static DECLCALLBACK(void)
     39VBoxDispVHWASurfFlipCompletion(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd, void *pvContext)
    3640{
    3741    RT_NOREF(pvContext);
    38     VBOXVHWACMD_SURF_FLIP *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_FLIP);
    39     PVBOXVHWASURFDESC pCurrDesc = (PVBOXVHWASURFDESC)pBody->CurrGuestSurfInfo;
    40     PVBOXVHWASURFDESC pTargDesc = (PVBOXVHWASURFDESC)pBody->TargGuestSurfInfo;
     42    VBOXVHWACMD_SURF_FLIP RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_FLIP);
     43    PVBOXVHWASURFDESC pCurrDesc = (PVBOXVHWASURFDESC)(uintptr_t)pBody->CurrGuestSurfInfo;
     44    PVBOXVHWASURFDESC pTargDesc = (PVBOXVHWASURFDESC)(uintptr_t)pBody->TargGuestSurfInfo;
    4145
    4246    ASMAtomicDecU32(&pCurrDesc->cPendingFlipsCurr);
     
    164168    DD_SURFACE_LOCAL *pSurf = lpSetColorKey->lpDDSurface;
    165169    PVBOXVHWASURFDESC pDesc = (PVBOXVHWASURFDESC)pSurf->lpGbl->dwReserved1;
    166     VBOXVHWACMD* pCmd;
    167170
    168171    lpSetColorKey->ddRVal = DD_OK;
     
    170173    if (pDesc)
    171174    {
    172         pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_COLORKEY_SET, sizeof(VBOXVHWACMD_SURF_COLORKEY_SET));
    173 
     175        VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd =
     176            VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_COLORKEY_SET, sizeof(VBOXVHWACMD_SURF_COLORKEY_SET));
    174177        if (pCmd)
    175178        {
    176             VBOXVHWACMD_SURF_COLORKEY_SET *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_COLORKEY_SET);
    177             memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_COLORKEY_SET));
     179            VBOXVHWACMD_SURF_COLORKEY_SET RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_COLORKEY_SET);
    178180
    179181            pBody->u.in.offSurface = VBoxDispVHWAVramOffsetFromPDEV(pDev, pSurf->lpGbl->fpVidMem);
     
    222224    if (pSrcDesc && pDstDesc)
    223225    {
    224         VBOXVHWACMD *pCmd;
     226        VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST  *pCmd;
    225227
    226228        pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_BLT, sizeof(VBOXVHWACMD_SURF_BLT));
    227229        if (pCmd)
    228230        {
    229             VBOXVHWACMD_SURF_BLT *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_BLT);
    230             memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_BLT));
     231            VBOXVHWACMD_SURF_BLT RT_UNTRUSTED_VOLATILE_HOST  *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_BLT);
    231232
    232233            pBody->u.in.offSrcSurface = VBoxDispVHWAVramOffsetFromPDEV(pDev, pSrcSurf->lpGbl->fpVidMem);
     
    301302        }
    302303
    303         VBOXVHWACMD *pCmd;
    304 
    305         pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_FLIP, sizeof(VBOXVHWACMD_SURF_FLIP));
    306 
     304        VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd
     305            = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_FLIP, sizeof(VBOXVHWACMD_SURF_FLIP));
    307306        if (pCmd)
    308307        {
    309             VBOXVHWACMD_SURF_FLIP *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_FLIP);
    310             memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_FLIP));
     308            VBOXVHWACMD_SURF_FLIP RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_FLIP);
    311309
    312310            pBody->u.in.offCurrSurface = VBoxDispVHWAVramOffsetFromPDEV(pDev, pCurrSurf->lpGbl->fpVidMem);
     
    457455        }
    458456
    459         VBOXVHWACMD *pCmd;
    460 
    461         pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_OVERLAY_SETPOSITION, sizeof(VBOXVHWACMD_SURF_OVERLAY_SETPOSITION));
     457        VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd
     458            = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_OVERLAY_SETPOSITION, sizeof(VBOXVHWACMD_SURF_OVERLAY_SETPOSITION));
    462459        if (pCmd)
    463460        {
    464             VBOXVHWACMD_SURF_OVERLAY_SETPOSITION *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_OVERLAY_SETPOSITION);
    465             memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_OVERLAY_SETPOSITION));
     461            VBOXVHWACMD_SURF_OVERLAY_SETPOSITION RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_OVERLAY_SETPOSITION);
    466462
    467463            pBody->u.in.offSrcSurface = VBoxDispVHWAVramOffsetFromPDEV(pDev, pSrcSurf->lpGbl->fpVidMem);
     
    505501    if (pSrcDesc)
    506502    {
    507         VBOXVHWACMD* pCmd;
    508 
    509         pCmd = VBoxDispVHWACommandCreate (pDev, VBOXVHWACMD_TYPE_SURF_OVERLAY_UPDATE, sizeof(VBOXVHWACMD_SURF_OVERLAY_UPDATE));
     503        VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd
     504            = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_SURF_OVERLAY_UPDATE, sizeof(VBOXVHWACMD_SURF_OVERLAY_UPDATE));
    510505        if (pCmd)
    511506        {
    512             VBOXVHWACMD_SURF_OVERLAY_UPDATE *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_OVERLAY_UPDATE);
    513             memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_OVERLAY_UPDATE));
     507            VBOXVHWACMD_SURF_OVERLAY_UPDATE RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_OVERLAY_UPDATE);
    514508
    515509            pBody->u.in.offSrcSurface = VBoxDispVHWAVramOffsetFromPDEV(pDev, pSrcSurf->lpGbl->fpVidMem);
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/xpdm/VBoxDispInternal.h

    r69500 r71592  
    131131/* VBVA related */
    132132int VBoxDispVBVAInit(PVBOXDISPDEV pDev);
    133 void VBoxDispVBVAHostCommandComplete(PVBOXDISPDEV pDev, VBVAHOSTCMD *pCmd);
     133void VBoxDispVBVAHostCommandComplete(PVBOXDISPDEV pDev, VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST *pCmd);
    134134
    135135void vrdpReportDirtyRect(PVBOXDISPDEV pDev, RECTL *prcl);
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/xpdm/VBoxDispVBVA.cpp

    r69500 r71592  
    482482}
    483483
    484 void VBoxDispVBVAHostCommandComplete(PVBOXDISPDEV pDev, VBVAHOSTCMD *pCmd)
     484void VBoxDispVBVAHostCommandComplete(PVBOXDISPDEV pDev, VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST *pCmd)
    485485{
    486486    pDev->hgsmi.mp.pfnCompletionHandler(pDev->hgsmi.mp.hContext, pCmd);
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/xpdm/VBoxDispVHWA.cpp

    r69500 r71592  
    2121#include <iprt/asm-amd64-x86.h>
    2222
    23 static void VBoxDispVHWACommandFree(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
     23static void VBoxDispVHWACommandFree(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd)
    2424{
    2525    VBoxHGSMIBufferFree(&pDev->hgsmi.ctx, pCmd);
    2626}
    2727
    28 static void VBoxDispVHWACommandRetain(VBOXVHWACMD* pCmd)
     28static void VBoxDispVHWACommandRetain(VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd)
    2929{
    3030    ASMAtomicIncU32(&pCmd->cRefs);
    3131}
    3232
    33 static void VBoxDispVHWACommandSubmitAsynchByEvent(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd, VBOXPEVENT pEvent)
     33static void VBoxDispVHWACommandSubmitAsynchByEvent(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd,
     34                                                   VBOXPEVENT pEvent)
    3435{
    3536    pCmd->GuestVBVAReserved1 = (uintptr_t)pEvent;
     
    5152}
    5253
    53 static void VBoxDispVHWAHanldeVHWACmdCompletion(PVBOXDISPDEV pDev, VBVAHOSTCMD * pHostCmd)
    54 {
    55     VBVAHOSTCMDVHWACMDCOMPLETE * pComplete = VBVAHOSTCMD_BODY(pHostCmd, VBVAHOSTCMDVHWACMDCOMPLETE);
    56     VBOXVHWACMD* pComplCmd = (VBOXVHWACMD*)HGSMIOffsetToPointer(&pDev->hgsmi.ctx.heapCtx.area, pComplete->offCmd);
    57     PFNVBOXVHWACMDCOMPLETION pfnCompletion = (PFNVBOXVHWACMDCOMPLETION)pComplCmd->GuestVBVAReserved1;
    58     void *pContext = (void *)pComplCmd->GuestVBVAReserved2;
     54static void VBoxDispVHWAHanldeVHWACmdCompletion(PVBOXDISPDEV pDev, VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST *pHostCmd)
     55{
     56    VBVAHOSTCMDVHWACMDCOMPLETE RT_UNTRUSTED_VOLATILE_HOST *pComplete = VBVAHOSTCMD_BODY(pHostCmd, VBVAHOSTCMDVHWACMDCOMPLETE);
     57    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST                *pComplCmd =
     58        (VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *)HGSMIOffsetToPointer(&pDev->hgsmi.ctx.heapCtx.area, pComplete->offCmd);
     59
     60    PFNVBOXVHWACMDCOMPLETION pfnCompletion = (PFNVBOXVHWACMDCOMPLETION)(uintptr_t)pComplCmd->GuestVBVAReserved1;
     61    void                    *pContext      = (void *)(uintptr_t)pComplCmd->GuestVBVAReserved2;
    5962
    6063    pfnCompletion(pDev, pComplCmd, pContext);
     
    6366}
    6467
    65 static void VBoxVHWAHostCommandHandler(PVBOXDISPDEV pDev, VBVAHOSTCMD * pCmd)
    66 {
    67     switch(pCmd->customOpCode)
     68static void VBoxVHWAHostCommandHandler(PVBOXDISPDEV pDev, VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST *pCmd)
     69{
     70    switch (pCmd->customOpCode)
    6871    {
    6972        case VBVAHG_DCUSTOM_VHWA_CMDCOMPLETE:
    70         {
    7173            VBoxDispVHWAHanldeVHWACmdCompletion(pDev, pCmd);
    7274            break;
    73         }
     75
    7476        default:
    75         {
    7677            VBoxDispVBVAHostCommandComplete(pDev, pCmd);
    77         }
    7878    }
    7979}
     
    9696{
    9797    int rc = VERR_GENERAL_FAILURE;
    98     VBOXVHWACMD* pCmd;
    9998
    10099    if (!pDev->hgsmi.bSupported)
     
    103102    }
    104103
    105     pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_ENABLE, 0);
     104    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_ENABLE, 0);
    106105    if (!pCmd)
    107106    {
     
    110109    }
    111110
    112     if(VBoxDispVHWACommandSubmit(pDev, pCmd))
    113     {
    114         if(RT_SUCCESS(pCmd->rc))
    115         {
     111    if (VBoxDispVHWACommandSubmit(pDev, pCmd))
     112        if (RT_SUCCESS(pCmd->rc))
    116113            rc = VINF_SUCCESS;
    117         }
    118     }
    119114
    120115    VBoxDispVHWACommandRelease(pDev, pCmd);
     
    122117}
    123118
    124 VBOXVHWACMD* VBoxDispVHWACommandCreate(PVBOXDISPDEV pDev, VBOXVHWACMD_TYPE enmCmd, VBOXVHWACMD_LENGTH cbCmd)
    125 {
    126     VBOXVHWACMD* pHdr = (VBOXVHWACMD*)VBoxHGSMIBufferAlloc(&pDev->hgsmi.ctx,
    127                               cbCmd + VBOXVHWACMD_HEADSIZE(),
    128                               HGSMI_CH_VBVA,
    129                               VBVA_VHWA_CMD);
     119VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *
     120VBoxDispVHWACommandCreate(PVBOXDISPDEV pDev, VBOXVHWACMD_TYPE enmCmd, VBOXVHWACMD_LENGTH cbCmd)
     121{
     122    uint32_t                                cbTotal = cbCmd + VBOXVHWACMD_HEADSIZE();
     123    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pHdr
     124        = (VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *)VBoxHGSMIBufferAlloc(&pDev->hgsmi.ctx, cbTotal, HGSMI_CH_VBVA, VBVA_VHWA_CMD);
    130125    if (!pHdr)
    131126    {
     
    134129    else
    135130    {
    136         memset(pHdr, 0, sizeof(VBOXVHWACMD));
     131        memset((void *)pHdr, 0, cbTotal); /* always clear the whole body so caller doesn't need to */
    137132        pHdr->iDisplay = pDev->iDevice;
    138133        pHdr->rc = VERR_GENERAL_FAILURE;
     
    147142}
    148143
    149 void VBoxDispVHWACommandRelease(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
     144void VBoxDispVHWACommandRelease(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd)
    150145{
    151146    uint32_t cRefs = ASMAtomicDecU32(&pCmd->cRefs);
    152147    Assert(cRefs < UINT32_MAX / 2);
    153     if(!cRefs)
    154     {
     148    if (!cRefs)
    155149        VBoxDispVHWACommandFree(pDev, pCmd);
    156     }
    157 }
    158 
    159 BOOL VBoxDispVHWACommandSubmit(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
     150}
     151
     152BOOL VBoxDispVHWACommandSubmit(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd)
    160153{
    161154    VBOXPEVENT pEvent;
     
    181174void VBoxDispVHWACommandCheckHostCmds(PVBOXDISPDEV pDev)
    182175{
    183     VBVAHOSTCMD *pCmd, *pNextCmd;
     176    VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST *pCmd;
    184177    int rc = pDev->hgsmi.mp.pfnRequestCommandsHandler(pDev->hgsmi.mp.hContext, HGSMI_CH_VBVA, pDev->iDevice, &pCmd);
    185178    /* don't assert here, otherwise NT4 will be unhappy */
    186     if(RT_SUCCESS(rc))
    187     {
    188         for(;pCmd; pCmd = pNextCmd)
     179    if (RT_SUCCESS(rc))
     180    {
     181        while (pCmd)
    189182        {
    190             pNextCmd = pCmd->u.pNext;
     183            VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST *pNextCmd = pCmd->u.pNext;
    191184            VBoxVHWAHostCommandHandler(pDev, pCmd);
     185            pCmd = pNextCmd;
    192186        }
    193187    }
     
    203197
    204198/* do not wait for completion */
    205 void VBoxDispVHWACommandSubmitAsynch (PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd, PFNVBOXVHWACMDCOMPLETION pfnCompletion, void * pContext)
     199void VBoxDispVHWACommandSubmitAsynch(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd,
     200                                     PFNVBOXVHWACMDCOMPLETION pfnCompletion, void * pContext)
    206201{
    207202    pCmd->GuestVBVAReserved1 = (uintptr_t)pfnCompletion;
     
    220215}
    221216
    222 static DECLCALLBACK(void) VBoxDispVHWAFreeCmdCompletion(PVBOXDISPDEV pDev, VBOXVHWACMD *pCmd, void *pvContext)
     217static DECLCALLBACK(void) VBoxDispVHWAFreeCmdCompletion(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd,
     218                                                        void *pvContext)
    223219{
    224220    RT_NOREF(pvContext);
     
    226222}
    227223
    228 void VBoxDispVHWACommandSubmitAsynchAndComplete (PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd)
     224void VBoxDispVHWACommandSubmitAsynchAndComplete (PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd)
    229225{
    230226    pCmd->GuestVBVAReserved1 = (uintptr_t)VBoxDispVHWAFreeCmdCompletion;
     
    236232    VBoxHGSMIBufferSubmit(&pDev->hgsmi.ctx, pCmd);
    237233
    238     if(!(pCmd->Flags & VBOXVHWACMD_FLAG_HG_ASYNCH)
    239             || pCmd->Flags & VBOXVHWACMD_FLAG_HG_ASYNCH_RETURNED)
     234    uint32_t const fCmdFlags = pCmd->Flags;
     235    if (   !(fCmdFlags & VBOXVHWACMD_FLAG_HG_ASYNCH)
     236        || (fCmdFlags & VBOXVHWACMD_FLAG_HG_ASYNCH_RETURNED))
    240237    {
    241238        /* the command is completed */
     
    246243}
    247244
    248 void VBoxDispVHWAFreeHostInfo1(PVBOXDISPDEV pDev, VBOXVHWACMD_QUERYINFO1* pInfo)
    249 {
    250     VBOXVHWACMD* pCmd = VBOXVHWACMD_HEAD(pInfo);
    251     VBoxDispVHWACommandRelease(pDev, pCmd);
    252 }
    253 
    254 void VBoxDispVHWAFreeHostInfo2(PVBOXDISPDEV pDev, VBOXVHWACMD_QUERYINFO2* pInfo)
    255 {
    256     VBOXVHWACMD* pCmd = VBOXVHWACMD_HEAD(pInfo);
    257     VBoxDispVHWACommandRelease(pDev, pCmd);
    258 }
    259 
    260 VBOXVHWACMD_QUERYINFO1* VBoxDispVHWAQueryHostInfo1(PVBOXDISPDEV pDev)
    261 {
    262     VBOXVHWACMD* pCmd = VBoxDispVHWACommandCreate (pDev, VBOXVHWACMD_TYPE_QUERY_INFO1, sizeof(VBOXVHWACMD_QUERYINFO1));
    263     VBOXVHWACMD_QUERYINFO1 *pInfo1;
     245void VBoxDispVHWAFreeHostInfo1(PVBOXDISPDEV pDev, VBOXVHWACMD_QUERYINFO1 RT_UNTRUSTED_VOLATILE_HOST *pInfo)
     246{
     247    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd = VBOXVHWACMD_HEAD(pInfo);
     248    VBoxDispVHWACommandRelease(pDev, pCmd);
     249}
     250
     251void VBoxDispVHWAFreeHostInfo2(PVBOXDISPDEV pDev, VBOXVHWACMD_QUERYINFO2 RT_UNTRUSTED_VOLATILE_HOST *pInfo)
     252{
     253    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd = VBOXVHWACMD_HEAD(pInfo);
     254    VBoxDispVHWACommandRelease(pDev, pCmd);
     255}
     256
     257static VBOXVHWACMD_QUERYINFO1 RT_UNTRUSTED_VOLATILE_HOST *VBoxDispVHWAQueryHostInfo1(PVBOXDISPDEV pDev)
     258{
     259    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_QUERY_INFO1,
     260                                                                             sizeof(VBOXVHWACMD_QUERYINFO1));
    264261    if (!pCmd)
    265262    {
     
    268265    }
    269266
    270     pInfo1 = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO1);
     267    VBOXVHWACMD_QUERYINFO1 RT_UNTRUSTED_VOLATILE_HOST *pInfo1= VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO1);
    271268    pInfo1->u.in.guestVersion.maj = VBOXVHWA_VERSION_MAJ;
    272269    pInfo1->u.in.guestVersion.min = VBOXVHWA_VERSION_MIN;
     
    286283}
    287284
    288 VBOXVHWACMD_QUERYINFO2* VBoxDispVHWAQueryHostInfo2(PVBOXDISPDEV pDev, uint32_t numFourCC)
    289 {
    290     VBOXVHWACMD* pCmd = VBoxDispVHWACommandCreate (pDev, VBOXVHWACMD_TYPE_QUERY_INFO2, VBOXVHWAINFO2_SIZE(numFourCC));
    291     VBOXVHWACMD_QUERYINFO2 *pInfo2;
     285static VBOXVHWACMD_QUERYINFO2 RT_UNTRUSTED_VOLATILE_HOST *VBoxDispVHWAQueryHostInfo2(PVBOXDISPDEV pDev, uint32_t numFourCC)
     286{
     287    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_QUERY_INFO2,
     288                                                                             VBOXVHWAINFO2_SIZE(numFourCC));
    292289    if (!pCmd)
    293290    {
     
    296293    }
    297294
    298     pInfo2 = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO2);
     295    VBOXVHWACMD_QUERYINFO2 RT_UNTRUSTED_VOLATILE_HOST *pInfo2 = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO2);
    299296    pInfo2->numFourCC = numFourCC;
    300 
    301     if(VBoxDispVHWACommandSubmit (pDev, pCmd))
    302     {
    303         if(RT_SUCCESS(pCmd->rc))
    304         {
    305             if(pInfo2->numFourCC == numFourCC)
    306             {
     297    if (VBoxDispVHWACommandSubmit(pDev, pCmd))
     298        if (RT_SUCCESS(pCmd->rc))
     299            if (pInfo2->numFourCC == numFourCC)
    307300                return pInfo2;
    308             }
    309         }
    310     }
    311301
    312302    VBoxDispVHWACommandRelease(pDev, pCmd);
     
    316306int VBoxDispVHWAInitHostInfo1(PVBOXDISPDEV pDev)
    317307{
    318     VBOXVHWACMD_QUERYINFO1* pInfo;
    319308
    320309    if (!pDev->hgsmi.bSupported)
    321310        return VERR_NOT_SUPPORTED;
    322311
    323     pInfo = VBoxDispVHWAQueryHostInfo1(pDev);
     312    VBOXVHWACMD_QUERYINFO1 RT_UNTRUSTED_VOLATILE_HOST *pInfo = VBoxDispVHWAQueryHostInfo1(pDev);
    324313    if(!pInfo)
    325314    {
     
    336325    pDev->vhwa.numFourCC = pInfo->u.out.numFourCC;
    337326    pDev->vhwa.bEnabled = (pInfo->u.out.cfgFlags & VBOXVHWA_CFG_ENABLED);
     327
    338328    VBoxDispVHWAFreeHostInfo1(pDev, pInfo);
    339329    return VINF_SUCCESS;
     
    342332int VBoxDispVHWAInitHostInfo2(PVBOXDISPDEV pDev, DWORD *pFourCC)
    343333{
    344     VBOXVHWACMD_QUERYINFO2* pInfo;
    345334    int rc = VINF_SUCCESS;
    346335
     
    348337        return VERR_NOT_SUPPORTED;
    349338
    350     pInfo = VBoxDispVHWAQueryHostInfo2(pDev, pDev->vhwa.numFourCC);
    351 
     339    VBOXVHWACMD_QUERYINFO2 RT_UNTRUSTED_VOLATILE_HOST *pInfo = VBoxDispVHWAQueryHostInfo2(pDev, pDev->vhwa.numFourCC);
    352340    Assert(pInfo);
    353341    if(!pInfo)
    354342        return VERR_OUT_OF_RESOURCES;
    355343
    356     if(pDev->vhwa.numFourCC)
    357     {
    358         memcpy(pFourCC, pInfo->FourCC, pDev->vhwa.numFourCC * sizeof(pFourCC[0]));
    359     }
     344    if (pDev->vhwa.numFourCC)
     345        memcpy(pFourCC, (void const *)pInfo->FourCC, pDev->vhwa.numFourCC * sizeof(pFourCC[0]));
    360346    else
    361347    {
     
    372358{
    373359    int rc = VERR_GENERAL_FAILURE;
    374     VBOXVHWACMD* pCmd;
    375360
    376361    if (!pDev->hgsmi.bSupported)
    377362        return VERR_NOT_SUPPORTED;
    378363
    379     pCmd = VBoxDispVHWACommandCreate (pDev, VBOXVHWACMD_TYPE_DISABLE, 0);
     364    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd = VBoxDispVHWACommandCreate(pDev, VBOXVHWACMD_TYPE_DISABLE, 0);
    380365    if (!pCmd)
    381366    {
     
    384369    }
    385370
    386     if(VBoxDispVHWACommandSubmit (pDev, pCmd))
    387     {
     371    if (VBoxDispVHWACommandSubmit(pDev, pCmd))
    388372        if(RT_SUCCESS(pCmd->rc))
    389         {
    390373            rc = VINF_SUCCESS;
    391         }
    392     }
    393374
    394375    VBoxDispVHWACommandRelease(pDev, pCmd);
     
    652633}
    653634
    654 void VBoxDispVHWAFromDDCOLORKEY(VBOXVHWA_COLORKEY *pVHWACKey, DDCOLORKEY  *pDdCKey)
     635void VBoxDispVHWAFromDDCOLORKEY(VBOXVHWA_COLORKEY RT_UNTRUSTED_VOLATILE_HOST *pVHWACKey, DDCOLORKEY  *pDdCKey)
    655636{
    656637    pVHWACKey->low = pDdCKey->dwColorSpaceLowValue;
     
    658639}
    659640
    660 void VBoxDispVHWAFromDDOVERLAYFX(VBOXVHWA_OVERLAYFX *pVHWAOverlay, DDOVERLAYFX *pDdOverlay)
     641void VBoxDispVHWAFromDDOVERLAYFX(VBOXVHWA_OVERLAYFX RT_UNTRUSTED_VOLATILE_HOST *pVHWAOverlay, DDOVERLAYFX *pDdOverlay)
    661642{
    662643    /// @todo fxFlags
     
    665646}
    666647
    667 void VBoxDispVHWAFromDDBLTFX(VBOXVHWA_BLTFX *pVHWABlt, DDBLTFX *pDdBlt)
     648void VBoxDispVHWAFromDDBLTFX(VBOXVHWA_BLTFX RT_UNTRUSTED_VOLATILE_HOST *pVHWABlt, DDBLTFX *pDdBlt)
    668649{
    669650    pVHWABlt->fillColor = pDdBlt->dwFillColor;
     
    673654}
    674655
    675 int VBoxDispVHWAFromDDPIXELFORMAT(VBOXVHWA_PIXELFORMAT *pVHWAFormat, DDPIXELFORMAT *pDdFormat)
     656int VBoxDispVHWAFromDDPIXELFORMAT(VBOXVHWA_PIXELFORMAT RT_UNTRUSTED_VOLATILE_HOST *pVHWAFormat, DDPIXELFORMAT *pDdFormat)
    676657{
    677658    uint32_t unsup = VBoxDispVHWAUnsupportedDDPFS(pDdFormat->dwFlags);
     
    689670}
    690671
    691 int VBoxDispVHWAFromDDSURFACEDESC(VBOXVHWA_SURFACEDESC *pVHWADesc, DDSURFACEDESC *pDdDesc)
     672int VBoxDispVHWAFromDDSURFACEDESC(VBOXVHWA_SURFACEDESC RT_UNTRUSTED_VOLATILE_HOST *pVHWADesc, DDSURFACEDESC *pDdDesc)
    692673{
    693674    uint32_t unsupds = VBoxDispVHWAUnsupportedDSS(pDdDesc->dwFlags);
     
    757738}
    758739
    759 void VBoxDispVHWAFromRECTL(VBOXVHWA_RECTL *pDst, RECTL *pSrc)
     740void VBoxDispVHWAFromRECTL(VBOXVHWA_RECTL *pDst, RECTL const *pSrc)
     741{
     742    pDst->left = pSrc->left;
     743    pDst->top = pSrc->top;
     744    pDst->right = pSrc->right;
     745    pDst->bottom = pSrc->bottom;
     746}
     747
     748void VBoxDispVHWAFromRECTL(VBOXVHWA_RECTL RT_UNTRUSTED_VOLATILE_HOST *pDst, RECTL const *pSrc)
    760749{
    761750    pDst->left = pSrc->left;
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/xpdm/VBoxDispVHWA.h

    r69500 r71592  
    5959}VBOXVHWASURFDESC, *PVBOXVHWASURFDESC;
    6060
    61 typedef DECLCALLBACK(void) FNVBOXVHWACMDCOMPLETION(PVBOXDISPDEV pDev, VBOXVHWACMD * pCmd, void * pContext);
     61typedef DECLCALLBACK(void) FNVBOXVHWACMDCOMPLETION(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd, void *pvContext);
    6262typedef FNVBOXVHWACMDCOMPLETION *PFNVBOXVHWACMDCOMPLETION;
    6363
    6464void VBoxDispVHWAInit(PVBOXDISPDEV pDev);
    65 int VBoxDispVHWAEnable(PVBOXDISPDEV pDev);
    66 int VBoxDispVHWADisable(PVBOXDISPDEV pDev);
    67 int VBoxDispVHWAInitHostInfo1(PVBOXDISPDEV pDev);
    68 int VBoxDispVHWAInitHostInfo2(PVBOXDISPDEV pDev, DWORD *pFourCC);
     65int  VBoxDispVHWAEnable(PVBOXDISPDEV pDev);
     66int  VBoxDispVHWADisable(PVBOXDISPDEV pDev);
     67int  VBoxDispVHWAInitHostInfo1(PVBOXDISPDEV pDev);
     68int  VBoxDispVHWAInitHostInfo2(PVBOXDISPDEV pDev, DWORD *pFourCC);
    6969
    70 VBOXVHWACMD* VBoxDispVHWACommandCreate(PVBOXDISPDEV pDev, VBOXVHWACMD_TYPE enmCmd, VBOXVHWACMD_LENGTH cbCmd);
    71 void VBoxDispVHWACommandRelease(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd);
    72 BOOL VBoxDispVHWACommandSubmit(PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd);
    73 void VBoxDispVHWACommandSubmitAsynch (PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd, PFNVBOXVHWACMDCOMPLETION pfnCompletion, void * pContext);
    74 void VBoxDispVHWACommandSubmitAsynchAndComplete (PVBOXDISPDEV pDev, VBOXVHWACMD* pCmd);
     70VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *VBoxDispVHWACommandCreate(PVBOXDISPDEV pDev, VBOXVHWACMD_TYPE enmCmd, VBOXVHWACMD_LENGTH cbCmd);
     71void VBoxDispVHWACommandRelease(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd);
     72BOOL VBoxDispVHWACommandSubmit(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST*pCmd);
     73void VBoxDispVHWACommandSubmitAsynch(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd,
     74                                     PFNVBOXVHWACMDCOMPLETION pfnCompletion, void * pContext);
     75void VBoxDispVHWACommandSubmitAsynchAndComplete(PVBOXDISPDEV pDev, VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd);
    7576void VBoxDispVHWACommandCheckHostCmds(PVBOXDISPDEV pDev);
    7677
     
    111112uint32_t VBoxDispVHWAToDDCKEYs(uint32_t caps);
    112113
    113 int VBoxDispVHWAFromDDSURFACEDESC(VBOXVHWA_SURFACEDESC *pVHWADesc, DDSURFACEDESC *pDdDesc);
    114 int VBoxDispVHWAFromDDPIXELFORMAT(VBOXVHWA_PIXELFORMAT *pVHWAFormat, DDPIXELFORMAT *pDdFormat);
    115 void VBoxDispVHWAFromDDOVERLAYFX(VBOXVHWA_OVERLAYFX *pVHWAOverlay, DDOVERLAYFX *pDdOverlay);
    116 void VBoxDispVHWAFromDDCOLORKEY(VBOXVHWA_COLORKEY *pVHWACKey, DDCOLORKEY  *pDdCKey);
    117 void VBoxDispVHWAFromDDBLTFX(VBOXVHWA_BLTFX *pVHWABlt, DDBLTFX *pDdBlt);
    118 void VBoxDispVHWAFromRECTL(VBOXVHWA_RECTL *pDst, RECTL *pSrc);
     114int VBoxDispVHWAFromDDSURFACEDESC(VBOXVHWA_SURFACEDESC RT_UNTRUSTED_VOLATILE_HOST *pVHWADesc, DDSURFACEDESC *pDdDesc);
     115int VBoxDispVHWAFromDDPIXELFORMAT(VBOXVHWA_PIXELFORMAT RT_UNTRUSTED_VOLATILE_HOST *pVHWAFormat, DDPIXELFORMAT *pDdFormat);
     116void VBoxDispVHWAFromDDOVERLAYFX(VBOXVHWA_OVERLAYFX RT_UNTRUSTED_VOLATILE_HOST  *pVHWAOverlay, DDOVERLAYFX *pDdOverlay);
     117void VBoxDispVHWAFromDDCOLORKEY(VBOXVHWA_COLORKEY RT_UNTRUSTED_VOLATILE_HOST *pVHWACKey, DDCOLORKEY  *pDdCKey);
     118void VBoxDispVHWAFromDDBLTFX(VBOXVHWA_BLTFX RT_UNTRUSTED_VOLATILE_HOST *pVHWABlt, DDBLTFX *pDdBlt);
     119void VBoxDispVHWAFromRECTL(VBOXVHWA_RECTL *pDst, RECTL const *pSrc);
     120void VBoxDispVHWAFromRECTL(VBOXVHWA_RECTL RT_UNTRUSTED_VOLATILE_HOST *pDst, RECTL const *pSrc);
    119121
    120122uint32_t VBoxDispVHWAUnsupportedDDCAPS(uint32_t caps);
     
    127129uint32_t VBoxDispVHWASupportedDDCEYCAPS(uint32_t caps);
    128130
    129 #endif /*VBOXDISPVHWA_H*/
     131#endif /* !VBOXDISPVHWA_H */
     132
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVhwa.cpp

    r71590 r71592  
    2525
    2626#define VBOXVHWA_PRIMARY_ALLOCATION(_pSrc) ((_pSrc)->pPrimaryAllocation)
     27
     28#define VBOXVHWA_COPY_RECT(a_pDst, a_pSrc) do { \
     29        (a_pDst)->left    = (a_pSrc)->left; \
     30        (a_pDst)->top     = (a_pSrc)->top; \
     31        (a_pDst)->right   = (a_pSrc)->right; \
     32        (a_pDst)->bottom  = (a_pSrc)->bottom; \
     33    } while(0)
    2734
    2835
     
    222229}
    223230
    224 void vboxVhwaFreeHostInfo1(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD_QUERYINFO1* pInfo)
    225 {
    226     VBOXVHWACMD* pCmd = VBOXVHWACMD_HEAD(pInfo);
     231static void vboxVhwaFreeHostInfo1(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD_QUERYINFO1 RT_UNTRUSTED_VOLATILE_HOST *pInfo)
     232{
     233    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd = VBOXVHWACMD_HEAD(pInfo);
    227234    vboxVhwaCommandFree(pDevExt, pCmd);
    228235}
    229236
    230 void vboxVhwaFreeHostInfo2(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD_QUERYINFO2* pInfo)
    231 {
    232     VBOXVHWACMD* pCmd = VBOXVHWACMD_HEAD(pInfo);
     237static void vboxVhwaFreeHostInfo2(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD_QUERYINFO2 RT_UNTRUSTED_VOLATILE_HOST *pInfo)
     238{
     239    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd = VBOXVHWACMD_HEAD(pInfo);
    233240    vboxVhwaCommandFree(pDevExt, pCmd);
    234241}
    235242
    236 VBOXVHWACMD_QUERYINFO1* vboxVhwaQueryHostInfo1(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId)
     243static VBOXVHWACMD_QUERYINFO1 RT_UNTRUSTED_VOLATILE_HOST *
     244vboxVhwaQueryHostInfo1(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId)
    237245{
    238246    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd = vboxVhwaCommandCreate(pDevExt, srcId, VBOXVHWACMD_TYPE_QUERY_INFO1,
     
    240248    AssertReturnStmt(pCmd, LOGREL(("vboxVhwaCommandCreate failed")), NULL);
    241249
    242     VBOXVHWACMD_QUERYINFO1 *pInfo1 = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO1);
     250    VBOXVHWACMD_QUERYINFO1 RT_UNTRUSTED_VOLATILE_HOST *pInfo1 = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO1);
    243251    pInfo1->u.in.guestVersion.maj = VBOXVHWA_VERSION_MAJ;
    244252    pInfo1->u.in.guestVersion.min = VBOXVHWA_VERSION_MIN;
     
    256264}
    257265
    258 VBOXVHWACMD_QUERYINFO2* vboxVhwaQueryHostInfo2(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId, uint32_t numFourCC)
     266static VBOXVHWACMD_QUERYINFO2 RT_UNTRUSTED_VOLATILE_HOST *
     267vboxVhwaQueryHostInfo2(PVBOXMP_DEVEXT pDevExt,  D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId, uint32_t numFourCC)
    259268{
    260269    VBOXVHWACMD RT_UNTRUSTED_VOLATILE_HOST *pCmd = vboxVhwaCommandCreate(pDevExt, srcId, VBOXVHWACMD_TYPE_QUERY_INFO2,
     
    262271    AssertReturnStmt(pCmd, LOGREL(("vboxVhwaCommandCreate failed")), NULL);
    263272
    264     VBOXVHWACMD_QUERYINFO2 *pInfo2 = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO2);
     273    VBOXVHWACMD_QUERYINFO2 RT_UNTRUSTED_VOLATILE_HOST *pInfo2 = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_QUERYINFO2);
    265274    pInfo2->numFourCC = numFourCC;
    266275
    267276    int rc = vboxVhwaCommandSubmit(pDevExt, pCmd);
    268277    AssertRC(rc);
    269     if(RT_SUCCESS(rc))
     278    if (RT_SUCCESS(rc))
    270279    {
    271280        AssertRC(pCmd->rc);
    272281        if(RT_SUCCESS(pCmd->rc))
    273         {
    274282            if(pInfo2->numFourCC == numFourCC)
    275             {
    276283                return pInfo2;
    277             }
    278         }
    279284    }
    280285
     
    340345    vboxVhwaHlpOverlayListInit(pDevExt, srcId);
    341346
    342     VBOXVHWACMD_QUERYINFO1* pInfo1 = vboxVhwaQueryHostInfo1(pDevExt, srcId);
     347    VBOXVHWACMD_QUERYINFO1 RT_UNTRUSTED_VOLATILE_HOST *pInfo1 = vboxVhwaQueryHostInfo1(pDevExt, srcId);
    343348    if (pInfo1)
    344349    {
     
    380385                        && (pInfo1->u.out.caps & VBOXVHWA_CAPS_OVERLAYFOURCC))
    381386                {
    382                     VBOXVHWACMD_QUERYINFO2* pInfo2 = vboxVhwaQueryHostInfo2(pDevExt, srcId, pInfo1->u.out.numFourCC);
     387                    VBOXVHWACMD_QUERYINFO2 RT_UNTRUSTED_VOLATILE_HOST *pInfo2 =
     388                        vboxVhwaQueryHostInfo2(pDevExt, srcId, pInfo1->u.out.numFourCC);
    383389                    if (pInfo2)
    384390                    {
     
    415421}
    416422
    417 int vboxVhwaHlpTranslateFormat(VBOXVHWA_PIXELFORMAT *pFormat, D3DDDIFORMAT enmFormat)
     423static int vboxVhwaHlpTranslateFormat(VBOXVHWA_PIXELFORMAT RT_UNTRUSTED_VOLATILE_HOST *pFormat, D3DDDIFORMAT enmFormat)
    418424{
    419425    pFormat->Reserved = 0;
     
    490496    if (pCmd)
    491497    {
    492         VBOXVHWACMD_SURF_DESTROY * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_DESTROY);
    493 
    494         memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_DESTROY));
     498        VBOXVHWACMD_SURF_DESTROY RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_DESTROY);
     499
     500        memset((void *)pBody, 0, sizeof(VBOXVHWACMD_SURF_DESTROY));
    495501
    496502        pBody->u.in.hSurf = pSurf->hHostHandle;
     
    507513}
    508514
    509 int vboxVhwaHlpPopulateSurInfo(VBOXVHWA_SURFACEDESC *pInfo, PVBOXWDDM_ALLOCATION pSurf,
     515int vboxVhwaHlpPopulateSurInfo(VBOXVHWA_SURFACEDESC RT_UNTRUSTED_VOLATILE_HOST *pInfo, PVBOXWDDM_ALLOCATION pSurf,
    510516                               uint32_t fFlags, uint32_t cBackBuffers, uint32_t fSCaps,
    511517                               D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId)
    512518{
    513519    RT_NOREF(VidPnSourceId);
    514     memset(pInfo, 0, sizeof(VBOXVHWA_SURFACEDESC));
     520    memset((void *)pInfo, 0, sizeof(VBOXVHWA_SURFACEDESC));
    515521
    516522#if 0
     
    568574}
    569575
    570 int vboxVhwaHlpCheckApplySurfInfo(PVBOXWDDM_ALLOCATION pSurf, VBOXVHWA_SURFACEDESC *pInfo,
    571         uint32_t fFlags, bool bApplyHostHandle)
     576int vboxVhwaHlpCheckApplySurfInfo(PVBOXWDDM_ALLOCATION pSurf, VBOXVHWA_SURFACEDESC RT_UNTRUSTED_VOLATILE_HOST *pInfo,
     577                                  uint32_t fFlags, bool bApplyHostHandle)
    572578{
    573579    int rc = VINF_SUCCESS;
     
    615621    if (pCmd)
    616622    {
    617         VBOXVHWACMD_SURF_CREATE * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_CREATE);
     623        VBOXVHWACMD_SURF_CREATE RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_CREATE);
    618624        int rc = VINF_SUCCESS;
    619625
    620         memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_CREATE));
    621 
    622         rc = vboxVhwaHlpPopulateSurInfo(&pBody->SurfInfo, pSurf,
    623                 fFlags, cBackBuffers, fSCaps,
    624                 VidPnSourceId);
     626        memset((void *)pBody, 0, sizeof(VBOXVHWACMD_SURF_CREATE));
     627
     628        rc = vboxVhwaHlpPopulateSurInfo(&pBody->SurfInfo, pSurf, fFlags, cBackBuffers, fSCaps, VidPnSourceId);
    625629        AssertRC(rc);
    626630        if (RT_SUCCESS(rc))
     
    629633            Assert(pCmd->rc == VINF_SUCCESS);
    630634            if(pCmd->rc == VINF_SUCCESS)
    631             {
    632635                rc = vboxVhwaHlpCheckApplySurfInfo(pSurf, &pBody->SurfInfo, fFlags, true);
    633             }
    634636            else
    635637                rc = pCmd->rc;
     
    650652    if (pCmd)
    651653    {
    652         VBOXVHWACMD_SURF_GETINFO * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_GETINFO);
     654        VBOXVHWACMD_SURF_GETINFO RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_GETINFO);
    653655        int rc = VINF_SUCCESS;
    654656
    655         memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_GETINFO));
    656 
    657         rc = vboxVhwaHlpPopulateSurInfo(&pBody->SurfInfo, pSurf,
    658                 0, 0, VBOXVHWA_SCAPS_OVERLAY | VBOXVHWA_SCAPS_VIDEOMEMORY | VBOXVHWA_SCAPS_LOCALVIDMEM | VBOXVHWA_SCAPS_COMPLEX,
    659                 VidPnSourceId);
     657        memset((void *)pBody, 0, sizeof(VBOXVHWACMD_SURF_GETINFO));
     658
     659        rc = vboxVhwaHlpPopulateSurInfo(&pBody->SurfInfo, pSurf, 0, 0,
     660                                          VBOXVHWA_SCAPS_OVERLAY | VBOXVHWA_SCAPS_VIDEOMEMORY
     661                                        | VBOXVHWA_SCAPS_LOCALVIDMEM | VBOXVHWA_SCAPS_COMPLEX,
     662                                        VidPnSourceId);
    660663        AssertRC(rc);
    661664        if (RT_SUCCESS(rc))
     
    664667            Assert(pCmd->rc == VINF_SUCCESS);
    665668            if(pCmd->rc == VINF_SUCCESS)
    666             {
    667669                rc = vboxVhwaHlpCheckApplySurfInfo(pSurf, &pBody->SurfInfo, 0, true);
    668             }
    669670            else
    670671                rc = pCmd->rc;
     
    824825        if (pCmd)
    825826        {
    826             VBOXVHWACMD_SURF_FLIP * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_FLIP);
    827 
    828             memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_FLIP));
     827            VBOXVHWACMD_SURF_FLIP RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_FLIP);
     828
     829            memset((void *)pBody, 0, sizeof(VBOXVHWACMD_SURF_FLIP));
    829830
    830831//            pBody->TargGuestSurfInfo;
     
    839840                pBody->u.in.xUpdatedTargMemValid = 1;
    840841                if (pOurInfo->DirtyRegion.fFlags & VBOXWDDM_DIRTYREGION_F_RECT_VALID)
    841                     pBody->u.in.xUpdatedTargMemRect = *(VBOXVHWA_RECTL*)((void*)&pOurInfo->DirtyRegion.Rect);
     842                    VBOXVHWA_COPY_RECT(&pBody->u.in.xUpdatedTargMemRect, &pOurInfo->DirtyRegion.Rect);
    842843                else
    843844                {
     
    896897    if(pCmd)
    897898    {
    898         VBOXVHWACMD_SURF_COLORFILL * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_COLORFILL);
    899 
    900         memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_COLORFILL));
     899        VBOXVHWACMD_SURF_COLORFILL RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_COLORFILL);
     900
     901        memset((void *)pBody, 0, sizeof(VBOXVHWACMD_SURF_COLORFILL));
    901902
    902903        pBody->u.in.hSurf = pAlloc->hHostHandle;
    903904        pBody->u.in.offSurface = pAlloc->AllocData.Addr.offVram;
    904905        pBody->u.in.cRects = pCF->ClrFill.Rects.cRects;
    905         memcpy (pBody->u.in.aRects, pCF->ClrFill.Rects.aRects, pCF->ClrFill.Rects.cRects * sizeof (pCF->ClrFill.Rects.aRects[0]));
     906        memcpy((void *)&pBody->u.in.aRects[0], pCF->ClrFill.Rects.aRects,
     907               pCF->ClrFill.Rects.cRects * sizeof (pCF->ClrFill.Rects.aRects[0]));
    906908        vboxVhwaCommandSubmitAsynchAndComplete(pOverlay->pDevExt, pCmd);
    907909
     
    985987        if (pCmd)
    986988        {
    987             VBOXVHWACMD_SURF_OVERLAY_UPDATE * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_OVERLAY_UPDATE);
    988 
    989             memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_OVERLAY_UPDATE));
     989            VBOXVHWACMD_SURF_OVERLAY_UPDATE RT_UNTRUSTED_VOLATILE_HOST *pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_SURF_OVERLAY_UPDATE);
     990
     991            memset((void *)pBody, 0, sizeof(VBOXVHWACMD_SURF_OVERLAY_UPDATE));
    990992
    991993            pBody->u.in.hDstSurf = pFbSurf->hHostHandle;
    992994            pBody->u.in.offDstSurface = pFbSurf->AllocData.Addr.offVram;
    993             pBody->u.in.dstRect = *(VBOXVHWA_RECTL*)((void*)&pOverlayInfo->DstRect);
     995            VBOXVHWA_COPY_RECT(&pBody->u.in.dstRect, &pOverlayInfo->DstRect);
     996
    994997            pBody->u.in.hSrcSurf = pAlloc->hHostHandle;
    995998            pBody->u.in.offSrcSurface = pOverlayInfo->PhysicalAddress.QuadPart;
    996999            pAlloc->AllocData.Addr.offVram = pOverlayInfo->PhysicalAddress.QuadPart;
    997             pBody->u.in.srcRect = *(VBOXVHWA_RECTL*)((void*)&pOverlayInfo->SrcRect);
     1000            VBOXVHWA_COPY_RECT(&pBody->u.in.srcRect, &pOverlayInfo->SrcRect);
     1001
    9981002            pBody->u.in.flags |= VBOXVHWA_OVER_SHOW;
    9991003            if (pOurInfo->OverlayDesc.fFlags & VBOXWDDM_OVERLAY_F_CKEY_DST)
     
    10151019                pBody->u.in.xFlags |= VBOXVHWACMD_SURF_OVERLAY_UPDATE_F_SRCMEMRECT;
    10161020                if (pOurInfo->DirtyRegion.fFlags & VBOXWDDM_DIRTYREGION_F_RECT_VALID)
    1017                     pBody->u.in.xUpdatedSrcMemRect = *(VBOXVHWA_RECTL*)((void*)&pOurInfo->DirtyRegion.Rect);
     1021                    VBOXVHWA_COPY_RECT(&pBody->u.in.xUpdatedSrcMemRect, &pOurInfo->DirtyRegion.Rect);
    10181022                else
    10191023                {
     
    10271031            {
    10281032                pBody->u.in.xFlags |= VBOXVHWACMD_SURF_OVERLAY_UPDATE_F_DSTMEMRECT;
    1029                 pBody->u.in.xUpdatedDstMemRect = *(VBOXVHWA_RECTL*)((void*)pDstUpdateRect);
     1033                VBOXVHWA_COPY_RECT(&pBody->u.in.xUpdatedDstMemRect, pDstUpdateRect);
    10301034            }
    10311035
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVhwa.h

    r71590 r71592  
    5252#endif
    5353
    54 void vboxVhwaFreeHostInfo1(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD_QUERYINFO1* pInfo);
    55 void vboxVhwaFreeHostInfo2(PVBOXMP_DEVEXT pDevExt, VBOXVHWACMD_QUERYINFO2* pInfo);
    56 VBOXVHWACMD_QUERYINFO1* vboxVhwaQueryHostInfo1(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId);
    57 VBOXVHWACMD_QUERYINFO2* vboxVhwaQueryHostInfo2(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId, uint32_t numFourCC);
    5854int vboxVhwaEnable(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId);
    5955int vboxVhwaDisable(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId);
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/xpdm/VBoxMPInternal.cpp

    r71590 r71592  
    356356}
    357357
    358 DECLCALLBACK(void) VBoxMPHGSMIHostCmdCompleteCB(HVBOXVIDEOHGSMI hHGSMI, struct VBVAHOSTCMD *pCmd)
     358/** @callback_method_impl{FNVBOXVIDEOHGSMICOMPLETION} */
     359DECLCALLBACK(void) VBoxMPHGSMIHostCmdCompleteCB(HVBOXVIDEOHGSMI hHGSMI, struct VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST *pCmd)
    359360{
    360361    PHGSMIHOSTCOMMANDCONTEXT pCtx = &((PVBOXMP_COMMON)hHGSMI)->hostCtx;
     
    362363}
    363364
     365/** @callback_method_impl{FNVBOXVIDEOHGSMICOMMANDS} */
    364366DECLCALLBACK(int) VBoxMPHGSMIHostCmdRequestCB(HVBOXVIDEOHGSMI hHGSMI, uint8_t u8Channel,
    365                                               uint32_t iDisplay, struct VBVAHOSTCMD **ppCmd)
     367                                              uint32_t iDisplay, struct VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST **ppCmd)
    366368{
    367369    LOGF_ENTER();
     
    379381
    380382    HGSMICHANNEL *pChannel = HGSMIChannelFindById(&pCtx->channels, u8Channel);
    381     if(pChannel)
     383    if (pChannel)
    382384    {
    383385        VBVA_CHANNELCONTEXTS * pContexts = (VBVA_CHANNELCONTEXTS *)pChannel->handler.pvHandler;
    384386        VBVADISP_CHANNELCONTEXT *pDispContext = VBoxVbvaFindHandlerInfo(pContexts, iDisplay);
    385387
    386         if(pDispContext)
     388        if (pDispContext)
    387389        {
    388390            VBVAHOSTCMD *pCmd;
     
    391393                pCmd = ASMAtomicReadPtrT(&pDispContext->pCmd, VBVAHOSTCMD *);
    392394            } while (!ASMAtomicCmpXchgPtr(&pDispContext->pCmd, NULL, pCmd));
     395
    393396            *ppCmd = VBoxVbvaReverseList(pCmd);
    394397
     
    396399            return VINF_SUCCESS;
    397400        }
    398         else
    399         {
    400             WARN(("!pDispContext for display %d", iDisplay));
    401         }
    402     }
    403 
     401        WARN(("!pDispContext for display %d", iDisplay));
     402    }
     403
     404    *ppCmd = NULL;
    404405    LOGF_LEAVE();
    405406    return VERR_INVALID_PARAMETER;
     
    510511                            break;
    511512                        }
     513
    512514                        case VBVAHG_EVENT:
    513515                        {
    514                             VBVAHOSTCMDEVENT *pEventCmd = VBVAHOSTCMD_BODY(pCur, VBVAHOSTCMDEVENT);
     516                            VBVAHOSTCMDEVENT RT_UNTRUSTED_VOLATILE_HOST *pEventCmd = VBVAHOSTCMD_BODY(pCur, VBVAHOSTCMDEVENT);
    515517                            VBoxMPSignalEvent(pCallbacks->pCommon, pEventCmd->pEvent);
    516518                        }
     519
    517520                        default:
    518521                        {
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/xpdm/VBoxMPInternal.h

    r71179 r71592  
    3131void VBoxCreateDisplays(PVBOXMP_DEVEXT pExt, PVIDEO_PORT_CONFIG_INFO pConfigInfo);
    3232int VBoxVbvaEnable(PVBOXMP_DEVEXT pExt, BOOLEAN bEnable, VBVAENABLERESULT *pResult);
    33 DECLCALLBACK(void) VBoxMPHGSMIHostCmdCompleteCB(HVBOXVIDEOHGSMI hHGSMI, struct VBVAHOSTCMD *pCmd);
    34 DECLCALLBACK(int) VBoxMPHGSMIHostCmdRequestCB(HVBOXVIDEOHGSMI hHGSMI, uint8_t u8Channel, uint32_t iDisplay, struct VBVAHOSTCMD **ppCmd);
     33DECLCALLBACK(void) VBoxMPHGSMIHostCmdCompleteCB(HVBOXVIDEOHGSMI hHGSMI, struct VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST *pCmd);
     34DECLCALLBACK(int) VBoxMPHGSMIHostCmdRequestCB(HVBOXVIDEOHGSMI hHGSMI, uint8_t u8Channel, uint32_t iDisplay,
     35                                              struct VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST **ppCmd);
    3536int VBoxVbvaChannelDisplayEnable(PVBOXMP_COMMON pCommon, int iDisplay, uint8_t u8Channel);
    3637
  • trunk/src/VBox/Devices/Graphics/DevVGA_VBVA.cpp

    r71590 r71592  
    11741174}
    11751175
    1176 int vbvaVHWAConstruct (PVGASTATE pVGAState)
     1176int vbvaVHWAConstruct(PVGASTATE pVGAState)
    11771177{
    11781178    pVGAState->pendingVhwaCommands.cPending = 0;
     
    11851185        uint32_t iDisplay = 0;
    11861186        int rc = VINF_SUCCESS;
    1187         VBOXVHWACMD_HH_CONSTRUCT * pBody = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_HH_CONSTRUCT);
     1187        VBOXVHWACMD_HH_CONSTRUCT *pBody = VBOXVHWACMD_BODY_HOST_HEAP(pCmd, VBOXVHWACMD_HH_CONSTRUCT);
    11881188
    11891189        do
     
    11991199
    12001200            rc = vbvaVHWAHHCommandPost(pVGAState, pCmd);
     1201            ASMCompilerBarrier();
     1202
    12011203            AssertRC(rc);
    1202             if(RT_SUCCESS(rc))
     1204            if (RT_SUCCESS(rc))
    12031205            {
    12041206                rc = pCmd->rc;
     
    12301232}
    12311233
    1232 int vbvaVHWAReset (PVGASTATE pVGAState)
     1234int vbvaVHWAReset(PVGASTATE pVGAState)
    12331235{
    12341236    vbvaVHWACommandClearAllPending(pVGAState);
     
    13821384                    pHostCmd->iDstID = pCmd->iDisplay;
    13831385                    pHostCmd->customOpCode = 0;
    1384                     VBVAHOSTCMDEVENT *pBody = VBVAHOSTCMD_BODY(pHostCmd, VBVAHOSTCMDEVENT);
     1386                    VBVAHOSTCMDEVENT RT_UNTRUSTED_VOLATILE_GUEST *pBody = VBVAHOSTCMD_BODY(pHostCmd, VBVAHOSTCMDEVENT);
    13851387                    pBody->pEvent = pCmd->GuestVBVAReserved1;
    13861388                }
     
    14031405                        pHostCmd->iDstID = pCmd->iDisplay;
    14041406                        pHostCmd->customOpCode = VBVAHG_DCUSTOM_VHWA_CMDCOMPLETE;
    1405                         VBVAHOSTCMDVHWACMDCOMPLETE *pBody = VBVAHOSTCMD_BODY(pHostCmd, VBVAHOSTCMDVHWACMDCOMPLETE);
     1407                        VBVAHOSTCMDVHWACMDCOMPLETE RT_UNTRUSTED_VOLATILE_GUEST *pBody
     1408                            = VBVAHOSTCMD_BODY(pHostCmd, VBVAHOSTCMDVHWACMDCOMPLETE);
    14061409                        pBody->offCmd = offCmd;
    14071410                    }
     
    17471750            {
    17481751                vbvaVHWAHHCommandReinit(pCmd, VBOXVHWACMD_TYPE_HH_SAVESTATE_SAVEPERFORM, 0);
    1749                 VBOXVHWACMD_HH_SAVESTATE_SAVEPERFORM *pSave = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_HH_SAVESTATE_SAVEPERFORM);
     1752                VBOXVHWACMD_HH_SAVESTATE_SAVEPERFORM *pSave = VBOXVHWACMD_BODY_HOST_HEAP(pCmd, VBOXVHWACMD_HH_SAVESTATE_SAVEPERFORM);
    17501753                pSave->pSSM = pSSM;
    17511754                vbvaVHWAHHPost (pVGAState, pCmd, vboxVBVASaveStatePerformPreCb, NULL, &VhwaData);
     
    19851988                    VBOXVBVASAVEDSTATECBDATA VhwaData = {0};
    19861989                    VhwaData.pSSM = pSSM;
    1987                     VBOXVHWACMD_HH_SAVESTATE_LOADPERFORM *pLoad = VBOXVHWACMD_BODY(pCmd, VBOXVHWACMD_HH_SAVESTATE_LOADPERFORM);
     1990                    VBOXVHWACMD_HH_SAVESTATE_LOADPERFORM *pLoad = VBOXVHWACMD_BODY_HOST_HEAP(pCmd, VBOXVHWACMD_HH_SAVESTATE_LOADPERFORM);
    19881991                    pLoad->pSSM = pSSM;
    19891992                    vbvaVHWAHHPost (pVGAState, pCmd, vboxVBVALoadStatePerformPreCb, vboxVBVALoadStatePerformPostCb, &VhwaData);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette