VBoxMPWddm.h revision 67b8a5a52c43a79ea7e159dbbeec99687fb9cd3b
/* $Id$ */
/** @file
* VBox WDDM Miniport driver
*/
/*
* Copyright (C) 2011 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 ___VBoxMPWddm_h___
#define ___VBoxMPWddm_h___
#ifdef VBOX_WDDM_WIN8
# define VBOX_WDDM_DRIVERNAME L"VBoxVideoW8"
#else
# define VBOX_WDDM_DRIVERNAME L"VBoxVideoWddm"
#endif
#ifndef DEBUG_misha
# ifdef Assert
# error "VBoxMPWddm.h must be included first."
# endif
# define RT_NO_STRICT
#endif
#include "common/VBoxMPUtils.h"
#include "common/VBoxMPDevExt.h"
#include "../../common/VBoxVideoTools.h"
//#define VBOXWDDM_DEBUG_VIDPN
#define VBOXWDDM_CFG_LOG_UM_BACKDOOR 0x00000001
#define VBOXWDDM_CFG_LOG_UM_DBGPRINT 0x00000002
#define VBOXWDDM_CFG_STR_LOG_UM L"VBoxLogUm"
extern DWORD g_VBoxLogUm;
#ifdef VBOX_WDDM_WIN8
extern DWORD g_VBoxDisplayOnly;
#endif
{
#if 0
return NULL;
PVBOXWDDM_RESOURCE pRc = (PVBOXWDDM_RESOURCE)(((uint8_t*)pAlloc) - RT_OFFSETOF(VBOXWDDM_RESOURCE, aAllocations[pAlloc->iIndex]));
return pRc;
#else
#endif
}
{
if (!cRefs)
{
}
}
{
}
{
}
{
}
{
}
#ifdef VBOXWDDM_RENDER_FROM_SHADOW
DECLINLINE(void) vboxWddmAssignShadow(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SOURCE pSource, PVBOXWDDM_ALLOCATION pAllocation, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId)
{
{
return;
}
if (pSource->pShadowAllocation)
{
/* clear the visibility info fo the current primary */
/* release the shadow surface */
}
if (pAllocation)
{
/* this check ensures the shadow is not used for other source simultaneously */
}
}
#endif
DECLINLINE(VOID) vboxWddmAssignPrimary(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SOURCE pSource, PVBOXWDDM_ALLOCATION pAllocation, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId)
{
/* vboxWddmAssignPrimary can not be run in reentrant order, so safely do a direct unlocked check here */
return;
if (pSource->pPrimaryAllocation)
{
/* clear the visibility info fo the current primary */
}
if (pAllocation)
{
}
}
DECLINLINE(PVBOXWDDM_ALLOCATION) vboxWddmAquirePrimary(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SOURCE pSource, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId)
{
if (pPrimary)
return pPrimary;
}
#define VBOXWDDMENTRY_2_SWAPCHAIN(_pE) ((PVBOXWDDM_SWAPCHAIN)((uint8_t*)(_pE) - RT_OFFSETOF(VBOXWDDM_SWAPCHAIN, DevExtListEntry)))
#ifdef VBOXWDDM_RENDER_FROM_SHADOW
# ifdef VBOX_WDDM_WIN8
((g_VBoxDisplayOnly || (_pDevExt)->fRenderToShadowDisabled) ? VBOXWDDM_ALLOC_TYPE_STD_SHAREDPRIMARYSURFACE : VBOXWDDM_ALLOC_TYPE_STD_SHADOWSURFACE) \
))
# else
(((_pDevExt)->fRenderToShadowDisabled) ? VBOXWDDM_ALLOC_TYPE_STD_SHAREDPRIMARYSURFACE : VBOXWDDM_ALLOC_TYPE_STD_SHADOWSURFACE) \
))
# endif
# define VBOXWDDM_FB_ALLOCATION(_pDevExt, _pSrc) ( ((_pSrc)->pPrimaryAllocation && VBOXWDDM_IS_FB_ALLOCATION(_pDevExt, (_pSrc)->pPrimaryAllocation)) ? \
(_pSrc)->pPrimaryAllocation : ( \
) \
)
#else
#endif
# define VBOXWDDM_CTXLOCK_INIT(_p) do { \
} while (0)
# define VBOXWDDM_CTXLOCK_LOCK(_p) do { \
} while (0)
# define VBOXWDDM_CTXLOCK_UNLOCK(_p) do { \
} while (0)
#else
# define VBOXWDDM_CTXLOCK_INIT(_p) do { \
} while (0)
# define VBOXWDDM_CTXLOCK_LOCK(_p) do { \
} while (0)
# define VBOXWDDM_CTXLOCK_UNLOCK(_p) do { \
} while (0)
# define VBOXWDDM_CTXLOCK_DATA
#endif
#endif /* #ifndef ___VBoxMPWddm_h___ */