VirtualBox

Changeset 19844 in vbox for trunk/include/VBox


Ignore:
Timestamp:
May 19, 2009 11:12:55 PM (16 years ago)
Author:
vboxsync
Message:

HGSMI: post host VBVA commands to display; Video HW Accel: mechanism for passing/processing commands to framebuffer

Location:
trunk/include/VBox
Files:
3 edited

Legend:

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

    r19464 r19844  
    252252#pragma pack()
    253253
     254# ifdef VBOX_WITH_VIDEOHWACCEL
     255#pragma pack(1)
     256
     257typedef enum
     258{
     259    VBOXVHWACMD_TYPE_SURF_CREATE = 1,
     260    VBOXVHWACMD_TYPE_SURF_DESTROY
     261} VBOXVHWACMD_TYPE;
     262
     263typedef struct _VBOXVHWACMD
     264{
     265    VBOXVHWACMD_TYPE enmCmd; /* command type */
     266    int32_t rc; /* command result */
     267    int32_t iDisplay; /* display index */
     268    int32_t Reserved; /* reserved, must be null*/
     269    char body[1];
     270} VBOXVHWACMD;
     271
     272#define VBOXVHWACMD_SIZE(_tCmd) (RT_OFFSETOF(VBOXVHWACMD_HDR, body) + sizeof(_tCmd))
     273typedef unsigned int VBOXVHWACMD_LENGTH;
     274typedef uint64_t VBOXVHWA_SURFHANDLE;
     275#define VBOXVHWACMD_SURFHANDLE_INVALID 0
     276#define VBOXVHWACMD_BODY(_p, _t) ((_t*)(_p)->body)
     277
     278typedef struct _VBOXVHWA_RECTL
     279{
     280    int16_t x;
     281    int16_t y;
     282    uint16_t w;
     283    uint16_t h;
     284} VBOXVHWA_RECTL;
     285
     286#define VBOXVHWASURF_PRIMARY      0x00000001
     287#define VBOXVHWASURF_OVERLAY      0x00000002
     288
     289typedef struct _VBOXVHWA_SURFINFO
     290{
     291    uint32_t surfChars;
     292    VBOXVHWA_RECTL rectl;
     293} VBOXVHWA_SURFINFO;
     294
     295typedef struct _VBOXVHWACMD_SURF_CREATE
     296{
     297    union
     298    {
     299        struct
     300        {
     301            VBOXVHWA_SURFINFO SurfInfo;
     302        } in;
     303
     304        struct
     305        {
     306            VBOXVHWA_SURFHANDLE hSurf;
     307        } out;
     308    } u;
     309} VBOXVHWACMD_SURF_CREATE;
     310
     311typedef struct _VBOXVHWACMD_SURF_DESTROY
     312{
     313    union
     314    {
     315        struct
     316        {
     317            VBOXVHWA_SURFHANDLE hSurf;
     318        } in;
     319    } u;
     320} VBOXVHWACMD_SURF_DESTROY;
     321#pragma pack()
     322# endif /* #ifdef VBOX_WITH_VIDEOHWACCEL */
     323
    254324#ifdef VBOX_WITH_HGSMI
    255325
     
    279349} VBVABUFFER;
    280350
    281 
     351/* guest->host commands */
    282352#define VBVA_QUERY_CONF32 1
    283353#define VBVA_SET_CONF32   2
     
    288358#define VBVA_ENABLE       7
    289359#define VBVA_MOUSE_POINTER_SHAPE 8
    290 #ifdef VBOX_WITH_VIDEOHWACCEL
     360# ifdef VBOX_WITH_VIDEOHWACCEL
    291361# define VBVA_INFO_VHWA   9
    292362# define VBVA_VHWA_CMD    10
    293 
    294 typedef enum
    295 {
    296     VBVAVHWACMD_TYPE_SURF_CREATE = 1,
    297     VBVAVHWACMD_TYPE_SURF_DESTROY
    298 } VBVAVHWACMD_TYPE;
    299 
    300 typedef struct _VBVAVHWACMD_HDR
    301 {
    302     VBVAVHWACMD_TYPE enmCmd;
     363# endif /* # ifdef VBOX_WITH_VIDEOHWACCEL */
     364
     365/* host->guest commands */
     366# ifdef VBOX_WITH_VIDEOHWACCEL
     367# define VBVAHG_VHWA_CMDCOMPLETE 1
     368
     369typedef struct _VBVAHOSTCMDVHWACMDCOMPLETE
     370{
     371    uint32_t offCmd;
     372}VBVAHOSTCMDVHWACMDCOMPLETE;
     373# endif /* # ifdef VBOX_WITH_VIDEOHWACCEL */
     374
     375#pragma pack(1)
     376typedef struct _VBVAHOSTCMD
     377{
     378    /* destination ID if >=0 specifies display index, otherwize the command is directed to the miniport */
     379    int32_t iDstID;
     380    uint32_t Reserved;
    303381    char body[1];
    304 } VBVAVHWACMD_HDR;
    305 
    306 #define VBVAVHWACMD_SIZE(_tCmd) (RT_OFFSETOF(VBVAVHWACMD_HDR, body) + sizeof(_tCmd))
    307 typedef unsigned int VBVAVHWACMD_LENGTH;
    308 typedef uint64_t VBVAVHWA_SURFHANDLE;
    309 #define VBVAVHWA_SURFHANDLE_INVALID 0
    310 #define VBVAVHWACMD_BODY(_p, _t) ((_t*)(_p)->body)
    311 
    312 typedef struct _VBVAVHWA_RECTL
    313 {
    314     int16_t x;
    315     int16_t y;
    316     uint16_t w;
    317     uint16_t h;
    318 } VBVAVHWA_RECTL;
    319 
    320 #define VBVAVHWASURF_PRIMARY      0x00000001
    321 #define VBVAVHWASURF_OVERLAY      0x00000002
    322 
    323 typedef struct _VBVAVHWA_SURFINFO
    324 {
    325     uint32_t surfChars;
    326     VBVAVHWA_RECTL rectl;
    327 } VBVAVHWA_SURFINFO;
    328 
    329 typedef struct _VBVAVHWACMD_SURF_CREATE
    330 {
    331     union
    332     {
    333         struct
    334         {
    335             VBVAVHWA_SURFINFO SurfInfo;
    336         } in;
    337 
    338         struct
    339         {
    340             int rc;
    341             VBVAVHWA_SURFHANDLE hSurf;
    342         } out;
    343     } u;
    344 } VBVAVHWACMD_SURF_CREATE;
    345 
    346 typedef struct _VBVAVHWACMD_SURF_DESTROY
    347 {
    348     union
    349     {
    350         struct
    351         {
    352             VBVAVHWA_SURFHANDLE hSurf;
    353         } in;
    354 
    355         struct
    356         {
    357             int rc;
    358         } out;
    359     } u;
    360 } VBVAVHWACMD_SURF_DESTROY;
    361 
    362 #endif
    363 
     382}VBVAHOSTCMD;
     383
     384#define VBVAHOSTCMD_SIZE(_size) (sizeof(VBVAHOSTCMD) + (_size))
     385#define VBVAHOSTCMD_BODY(_pCmd, _tBody) ((_tBody*)(_pCmd)->body)
     386#define VBVAHOSTCMD_HDR(_pBody) ((VBVAHOSTCMD*)(((uint8_t*)_pBody) - RT_OFFSETOF(VBVAHOSTCMD, body)))
     387#define VBVAHOSTCMD_HDRSIZE (RT_OFFSETOF(VBVAHOSTCMD, body))
     388
     389#pragma pack()
    364390
    365391/* VBVACONF32::u32Index */
  • trunk/include/VBox/err.h

    r19478 r19844  
    13721372/** @} */
    13731373
     1374/** @name VBox Video HW Acceleration command status
     1375 * @{
     1376 */
     1377/** command processing is pending, a completion handler will be called */
     1378#define VINF_VHWA_CMD_PENDING                        4500
     1379
     1380/** @} */
     1381
    13741382/* SED-END */
    13751383
  • trunk/include/VBox/pdmifs.h

    r18434 r19844  
    167167    /** PDMISCSICONNECTOR       - The SCSI command execution connector interface (Up) Coupled with PDMINTERFACE_SCSI_PORT. */
    168168    PDMINTERFACE_SCSI_CONNECTOR,
     169    /** PDMDDISPLAYVBVACALLBACKS       - The Display VBVA call-backs */
     170    PDMINTERFACE_DISPLAY_VBVA_CALLBACKS,
    169171
    170172    /** Maximum interface number. */
     
    425427} PDMIDISPLAYPORT;
    426428
     429typedef struct _VBOXVHWACMD *PVBOXVHWACMD;
    427430
    428431/** Pointer to a display connector interface. */
     
    526529    DECLR3CALLBACKMEMBER(void, pfnProcessDisplayData, (PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM, unsigned uScreenId));
    527530
     531    /**
     532     * Process the guest Video HW Acceleration command.
     533     *
     534     * @param   pInterface          Pointer to this interface.
     535     * @param   pCmd                Video HW Acceleration Command to be processed.
     536     * @thread  The emulation thread.
     537     */
     538    DECLR3CALLBACKMEMBER(void, pfnVHWACommandProcess, (PPDMIDISPLAYCONNECTOR pInterface, PVBOXVHWACMD pCmd));
    528539
    529540    /** Read-only attributes.
     
    25872598
    25882599} PDMISCSICONNECTOR;
     2600
     2601typedef struct PDMDDISPLAYVBVACALLBACKS *PPDMDDISPLAYVBVACALLBACKS;
     2602/**
     2603 * Display VBVA callbacks
     2604 */
     2605typedef struct PDMDDISPLAYVBVACALLBACKS
     2606{
     2607    /**
     2608     * Informs guest about completion of processing the given Video HW Acceleration command,
     2609     * does not wait for the guest to process the command
     2610     */
     2611    DECLR3CALLBACKMEMBER(int, pfnVHWACommandCompleteAsynch, (PPDMDDISPLAYVBVACALLBACKS pInterface, PVBOXVHWACMD pCmd));
     2612}PDMDDISPLAYVBVACALLBACKS;
     2613
    25892614/** @} */
    25902615
Note: See TracChangeset for help on using the changeset viewer.

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