VBoxDisp.h revision c7814cf6e1240a519cbec0441e033d0e2470ed00
/* $Id$ */
/** @file
* VBox XPDM Display driver
*/
/*
* Copyright (C) 2011-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*/
#ifndef VBOXDISP_H
#define VBOXDISP_H
#include "VBoxDispInternal.h"
#include "VBoxDispVrdpBmp.h"
/* VirtualBox display driver version, could be seen in Control Panel */
#define VBOXDISPDRIVERVERSION 0x01UL
#if (VBOXDISPDRIVERVERSION & (~0xFFUL))
#endif
#define VBOXDISP_DEVICE_NAME L"VBoxDisp"
/* Current mode info */
typedef struct _VBOXDISPCURRENTMODE
{
/* Pointer related info */
typedef struct _VBOXDISPPOINTERINFO
{
PVIDEO_POINTER_ATTRIBUTES pAttrs; /* Preallocated buffer to pass pointer shape to miniport driver */
/* Surface info */
typedef struct _VBOXDISPSURF
{
/* VRAM Layout */
typedef struct _VBOXDISPVRAMLAYOUT
{
/* HGSMI info */
typedef struct _VBOXDISPHGSMIINFO
{
/* Saved screen bits information. */
typedef struct _SSB
{
ULONG ident; /* 1 based index in the stack = the handle returned by VBoxDispDrvSaveScreenBits (SS_SAVE) */
} SSB;
#ifdef VBOX_WITH_DDRAW
/* DirectDraw surface lock information */
typedef struct _VBOXDDLOCKINFO
{
#endif
/* Structure holding driver private device info. */
typedef struct _VBOXDISPDEV
{
#ifdef VBOX_WITH_DDRAW
#endif
#ifdef VBOX_WITH_VIDEOHWACCEL
#endif
} VBOXDISPDEV, *PVBOXDISPDEV;
/* -------------------- Driver callbacks -------------------- */
BOOL APIENTRY VBoxDispDrvFillPath(SURFOBJ *pso, PATHOBJ *ppo, CLIPOBJ *pco, BRUSHOBJ *pbo, POINTL *pptlBrushOrg,
BOOL APIENTRY VBoxDispDrvPaint(SURFOBJ *pso, CLIPOBJ *pco, BRUSHOBJ *pbo, POINTL *pptlBrushOrg, MIX mix);
BOOL APIENTRY VBoxDispDrvRealizeBrush(BRUSHOBJ *pbo, SURFOBJ *psoTarget, SURFOBJ *psoPattern, SURFOBJ *psoMask,
BOOL APIENTRY VBoxDispDrvBitBlt(SURFOBJ *psoTrg, SURFOBJ *psoSrc, SURFOBJ *psoMask, CLIPOBJ *pco, XLATEOBJ *pxlo,
BOOL APIENTRY VBoxDispDrvStretchBlt(SURFOBJ *psoDest, SURFOBJ *psoSrc, SURFOBJ *psoMask, CLIPOBJ *pco, XLATEOBJ *pxlo,
ULONG APIENTRY VBoxDispDrvSetPointerShape(SURFOBJ *pso, SURFOBJ *psoMask, SURFOBJ *psoColor, XLATEOBJ *pxlo,
BOOL APIENTRY VBoxDispDrvSetPalette(DHPDEV dhpdev, PALOBJ *ppalo, FLONG fl, ULONG iStart, ULONG cColors);
ULONG APIENTRY VBoxDispDrvEscape(SURFOBJ *pso, ULONG iEsc, ULONG cjIn, PVOID pvIn, ULONG cjOut, PVOID pvOut);
ULONG_PTR APIENTRY VBoxDispDrvSaveScreenBits(SURFOBJ *pso, ULONG iMode, ULONG_PTR ident, RECTL *prcl);
#ifdef VBOX_WITH_DDRAW
HBITMAP APIENTRY VBoxDispDrvDeriveSurface(DD_DIRECTDRAW_GLOBAL *pDirectDraw, DD_SURFACE_LOCAL *pSurface);
#endif /*#ifdef VBOX_WITH_DDRAW*/
/* -------------------- Internal helpers -------------------- */
{
if (pso)
{
{
/* Convert the device PSO to the bitmap PSO which can be passed to Eng*. */
}
}
return pso;
}
#endif /*VBOXDISP_H*/