VBoxVideo.h revision 340ee06f35257fee1bd68223ab3504cf2b1d0c3e
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * VirtualBox Video interface.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * Copyright (C) 2006 Oracle Corporation
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * available from http://www.virtualbox.org. This file is free software;
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * you can redistribute it and/or modify it under the terms of the GNU
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * General Public License (GPL) as published by the Free Software
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * The contents of this file may alternatively be used under the terms
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * of the Common Development and Distribution License Version 1.0
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * VirtualBox OSE distribution, in which case the provisions of the
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * CDDL are applicable instead of those of the GPL.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * You may elect to license modified versions of this file under the
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * terms and conditions of either the GPL or the CDDL or both.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * The last 4096 bytes of the guest VRAM contains the generic info for all
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * DualView chunks: sizes and offsets of chunks. This is filled by miniport.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * Last 4096 bytes of each chunk contain chunk specific data: framebuffer info,
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * etc. This is used exclusively by the corresponding instance of a display driver.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * The VRAM layout:
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * Last 4096 bytes - Adapter information area.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * 4096 bytes aligned miniport heap (value specified in the config rouded up).
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * Slack - what left after dividing the VRAM.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * 4096 bytes aligned framebuffers:
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * last 4096 bytes of each framebuffer is the display information area.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * The Virtual Graphics Adapter information in the guest VRAM is stored by the
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync * guest video driver using structures prepended by VBOXVIDEOINFOHDR.
#define VBOX_VIDEO_PRIMARY_SCREEN 0
#define VBOX_VIDEO_NO_SCREEN ~0
#ifndef VBOX_XPDM_MINIPORT
#define VBOX_VIDEO_INFO_TYPE_END 0
typedef struct VBOXVIDEOINFOHDR
typedef struct VBOXVIDEOINFOLINK
typedef struct VBOXVIDEOINFODISPLAY
typedef struct VBOXVIDEOINFOSCREEN
typedef struct VBOXVIDEOINFOHOSTEVENTS
typedef struct VBOXVIDEOINFONVHEAP
typedef struct VBOXVIDEOINFOVBVASTATUS
typedef struct VBOXVIDEOINFOVBVAFLUSH
#define VBOX_VIDEO_QCI32_MONITOR_COUNT 0
typedef struct VBOXVIDEOINFOQUERYCONF32
#pragma pack()
#ifdef VBOX_WITH_VIDEOHWACCEL
#define VBOXVHWA_VERSION_MAJ 0
#define VBOXVHWA_VERSION_MIN 0
#define VBOXVHWA_VERSION_RSV 0
#ifdef VBOX_WITH_WDDM
* must not be cleared once set, the command completion is performed by issuing a host->guest completion command
/* 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
/* the host has copied the VBOXVHWACMD_FLAG_GH_ASYNCH_NOCOMPLETION command and returned it to the guest */
/* this is the host->host cmd, i.e. a configuration command posted by the host to the framebuffer */
typedef struct VBOXVHWACMD
uint64_t GuestVBVAReserved1; /* field internally used by the guest VBVA cmd handling, must NOT be modified by clients */
uint64_t GuestVBVAReserved2; /* field internally used by the guest VBVA cmd handling, must NOT be modified by clients */
} VBOXVHWACMD;
typedef unsigned int VBOXVHWACMD_LENGTH;
typedef struct VBOXVHWA_RECTL
typedef struct VBOXVHWA_COLORKEY
typedef struct VBOXVHWA_PIXELFORMAT
} m1;
} m2;
} m3;
} m4;
typedef struct VBOXVHWA_SURFACEDESC
typedef struct VBOXVHWA_BLTFX
typedef struct VBOXVHWA_OVERLAYFX
typedef struct VBOXVHWA_VERSION
typedef struct VBOXVHWACMD_QUERYINFO1
} in;
} out;
typedef struct VBOXVHWACMD_QUERYINFO2
typedef struct VBOXVHWACMD_SURF_CANCREATE
} in;
} out;
typedef struct VBOXVHWACMD_SURF_CREATE
#ifdef VBOX_WITH_WDDM
typedef struct VBOXVHWACMD_SURF_GETINFO
typedef struct VBOXVHWACMD_SURF_DESTROY
} in;
typedef struct VBOXVHWACMD_SURF_LOCK
} in;
typedef struct VBOXVHWACMD_SURF_UNLOCK
} in;
typedef struct VBOXVHWACMD_SURF_BLT
} in;
#ifdef VBOX_WITH_WDDM
typedef struct VBOXVHWACMD_SURF_COLORFILL
} in;
typedef struct VBOXVHWACMD_SURF_FLIP
} in;
typedef struct VBOXVHWACMD_SURF_COLORKEY_SET
} in;
typedef struct VBOXVHWACMD_SURF_OVERLAY_UPDATE
} in;
typedef struct VBOXVHWACMD_SURF_OVERLAY_SETPOSITION
} in;
typedef struct VBOXVHWACMD_HH_CONSTRUCT
void *pVM;
void *pvVRAM;
typedef struct VBOXVHWACMD_HH_SAVESTATE_SAVEPERFORM
typedef struct VBOXVHWACMD_HH_SAVESTATE_LOADPERFORM
#pragma pack()
typedef struct VBVAHOSTFLAGS
typedef struct VBVABUFFER
} VBVABUFFER;
#ifdef VBOX_WITH_VIDEOHWACCEL
#ifdef VBOX_WITH_VDMA
#ifdef VBOX_WITH_VDMA
#ifdef VBOX_WITH_VIDEOHWACCEL
typedef struct VBVAHOSTCMDVHWACMDCOMPLETE
#pragma pack()
typedef struct VBVAHOSTCMDEVENT
typedef struct VBVAHOSTCMD
/* destination ID if >=0 specifies display index, otherwize the command is directed to the miniport */
#define VBVAHOSTCMD_HDR(_pBody) ((VBVAHOSTCMD*)(((uint8_t*)_pBody) - RT_OFFSETOF(VBVAHOSTCMD, body)))
#pragma pack()
#define VBOX_VBVA_CONF32_MONITOR_COUNT 0
typedef struct VBVACONF32
} VBVACONF32;
typedef struct VBVAINFOVIEW
} VBVAINFOVIEW;
typedef struct VBVAINFOHEAP
} VBVAINFOHEAP;
typedef struct VBVAFLUSH
} VBVAFLUSH;
typedef struct VBVAINFOSCREEN
typedef struct VBVAENABLE
} VBVAENABLE;
typedef struct VBVAENABLE_EX
typedef struct VBVAMOUSEPOINTERSHAPE
/* the guest driver can handle asynch guest cmd completion by reading the command offset from io port */
typedef struct VBVACAPS
} VBVACAPS;
#pragma pack()
typedef struct VBOXSHGSMIHEADER
#pragma pack()
* must not be cleared once set, the command completion is performed by issuing a host->guest completion command
#ifdef VBOX_WITH_VDMA
typedef struct VBOXVDMA_CTL
typedef struct VBOXVDMA_RECTL
typedef struct VBOXVDMA_SURF_DESC
typedef struct VBOXVDMACBUF_DR
} Location;
#define VBOXVDMACBUF_DR_FROM_TAIL(_pCmd) ( (VBOXVDMACBUF_DR*)(((uint8_t*)(_pCmd)) - sizeof (VBOXVDMACBUF_DR)) )
typedef struct VBOXVDMACMD
#define VBOXVDMACMD_FROM_BODY(_pCmd) ( (VBOXVDMACMD*)(((uint8_t*)(_pCmd)) - VBOXVDMACMD_HEADER_SIZE()) )
#define VBOXVDMACMD_BODY_FIELD_OFFSET(_ot, _t, _f) ( (_ot)(uintptr_t)( VBOXVDMACMD_BODY(0, uint8_t) + RT_OFFSETOF(_t, _f) ) )
typedef struct VBOXVDMACMD_DMA_PRESENT_BLT
typedef struct VBOXVDMACMD_DMA_PRESENT_SHADOW2PRIMARY
typedef struct VBOXVDMACMD_DMA_BPB_TRANSFER
} Src;
} Dst;
typedef struct VBOXVDMACMD_SYSMEMEL
((PVBOXVDMACMD_SYSMEMEL)(((uint8_t*)(_pEl))+RT_OFFSETOF(VBOXVDMACMD_SYSMEMEL, phBuf[(_pEl)->cPages]))) \
typedef struct VBOXVDMACMD_DMA_BPB_TRANSFER_VRAMSYS
typedef struct VBOXVDMACMD_DMA_BPB_FILL
typedef struct VBOXVDMA_CHILD_STATUS
typedef struct VBOXVDMACMD_CHILD_STATUS_IRQ
# pragma pack()
#ifdef VBOX_WITH_CRHGSMI
typedef struct VBOXVDMACMD_CHROMIUM_BUFFER
typedef struct VBOXVDMACMD_CHROMIUM_CMD
typedef struct VBOXVDMACMD_CHROMIUM_CTL
typedef struct VBOXVDMACMD_CHROMIUM_CTL_CRHGSMI_SETUP
void *pvRamBase;
# pragma pack()
#ifdef VBOXVDMA_WITH_VBVA
typedef struct VBOXVDMAVBVACMD
#pragma pack()