d3d9_private.h revision e068057c82b010bc7cc663e8f57ac3ef1890a33c
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/*
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * Direct3D 9 private include file
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync *
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * Copyright 2002-2003 Jason Edmeades
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * Copyright 2002-2003 Raphael Junqueira
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * Copyright 2005 Oliver Stieber
df2a53dee17325742e7464e7f53d3f99dc500f3avboxsync *
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * This library is free software; you can redistribute it and/or
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * modify it under the terms of the GNU Lesser General Public
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * License as published by the Free Software Foundation; either
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * version 2.1 of the License, or (at your option) any later version.
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync *
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * This library is distributed in the hope that it will be useful,
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * Lesser General Public License for more details.
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync *
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * You should have received a copy of the GNU Lesser General Public
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * License along with this library; if not, write to the Free Software
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/*
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * Sun LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * other than GPL or LGPL is available it will apply instead, Sun elects to use only
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * a choice of LGPL license versions is made available with the language indicating
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * of the LGPL is applied is otherwise unspecified.
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#ifndef __WINE_D3D9_PRIVATE_H
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#define __WINE_D3D9_PRIVATE_H
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#include <stdarg.h>
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#define NONAMELESSUNION
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#define NONAMELESSSTRUCT
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#define COBJMACROS
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#include "windef.h"
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#include "winbase.h"
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#include "wingdi.h"
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#include "winuser.h"
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#include "wine/debug.h"
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync#include "wine/unicode.h"
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#include "d3d9.h"
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#include "wine/wined3d.h"
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#ifdef VBOX_WITH_WDDM
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#include "../vbox/VBoxWineEx.h"
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync/* ===========================================================================
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync Internal use
6febf3149010855617e4a37e2c49f93d68930d44vboxsync =========================================================================== */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern HRESULT vdecl_convert_fvf(DWORD FVF, D3DVERTEXELEMENT9 **ppVertexElements) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncD3DFORMAT d3dformat_from_wined3dformat(WINED3DFORMAT format) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncWINED3DFORMAT wined3dformat_from_d3dformat(D3DFORMAT format) DECLSPEC_HIDDEN;
80e46f984efd827517661c0e081a36014ca41af8vboxsync
80e46f984efd827517661c0e081a36014ca41af8vboxsync/* ===========================================================================
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync Macros
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync =========================================================================== */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* Not nice, but it lets wined3d support different versions of directx */
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync#define WINECAPSTOD3D9CAPS(_pD3D9Caps, _pWineCaps) \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->DeviceType = (D3DDEVTYPE) _pWineCaps->DeviceType; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->AdapterOrdinal = _pWineCaps->AdapterOrdinal; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->Caps = _pWineCaps->Caps; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->Caps2 = _pWineCaps->Caps2; \
48dafba24ef28f07a241e5857a43b327822574a8vboxsync _pD3D9Caps->Caps3 = _pWineCaps->Caps3; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->PresentationIntervals = _pWineCaps->PresentationIntervals; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->CursorCaps = _pWineCaps->CursorCaps; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->DevCaps = _pWineCaps->DevCaps; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->PrimitiveMiscCaps = _pWineCaps->PrimitiveMiscCaps; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->RasterCaps = _pWineCaps->RasterCaps; \
710a6316a22868b04400caf79719f96c18163cd3vboxsync _pD3D9Caps->ZCmpCaps = _pWineCaps->ZCmpCaps; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->SrcBlendCaps = _pWineCaps->SrcBlendCaps; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->DestBlendCaps = _pWineCaps->DestBlendCaps; \
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync _pD3D9Caps->AlphaCmpCaps = _pWineCaps->AlphaCmpCaps; \
41b3442e21c3a79f3bc61ce67e3445757a83f281vboxsync _pD3D9Caps->ShadeCaps = _pWineCaps->ShadeCaps; \
06782e19f5e2144408396dcec922c423c5ef9da8vboxsync _pD3D9Caps->TextureCaps = _pWineCaps->TextureCaps; \
80e46f984efd827517661c0e081a36014ca41af8vboxsync _pD3D9Caps->TextureFilterCaps = _pWineCaps->TextureFilterCaps; \
80e46f984efd827517661c0e081a36014ca41af8vboxsync _pD3D9Caps->CubeTextureFilterCaps = _pWineCaps->CubeTextureFilterCaps; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->VolumeTextureFilterCaps = _pWineCaps->VolumeTextureFilterCaps; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->TextureAddressCaps = _pWineCaps->TextureAddressCaps; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->VolumeTextureAddressCaps = _pWineCaps->VolumeTextureAddressCaps; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->LineCaps = _pWineCaps->LineCaps; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->MaxTextureWidth = _pWineCaps->MaxTextureWidth; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->MaxTextureHeight = _pWineCaps->MaxTextureHeight; \
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync _pD3D9Caps->MaxVolumeExtent = _pWineCaps->MaxVolumeExtent; \
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync _pD3D9Caps->MaxTextureRepeat = _pWineCaps->MaxTextureRepeat; \
6febf3149010855617e4a37e2c49f93d68930d44vboxsync _pD3D9Caps->MaxTextureAspectRatio = _pWineCaps->MaxTextureAspectRatio; \
63b785c3291332a86a9bc473e68f08121368898bvboxsync _pD3D9Caps->MaxAnisotropy = _pWineCaps->MaxAnisotropy; \
80e46f984efd827517661c0e081a36014ca41af8vboxsync _pD3D9Caps->MaxVertexW = _pWineCaps->MaxVertexW; \
80e46f984efd827517661c0e081a36014ca41af8vboxsync _pD3D9Caps->GuardBandLeft = _pWineCaps->GuardBandLeft; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->GuardBandTop = _pWineCaps->GuardBandTop; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->GuardBandRight = _pWineCaps->GuardBandRight; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->GuardBandBottom = _pWineCaps->GuardBandBottom; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->ExtentsAdjust = _pWineCaps->ExtentsAdjust; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->StencilCaps = _pWineCaps->StencilCaps; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->FVFCaps = _pWineCaps->FVFCaps; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->TextureOpCaps = _pWineCaps->TextureOpCaps; \
48dafba24ef28f07a241e5857a43b327822574a8vboxsync _pD3D9Caps->MaxTextureBlendStages = _pWineCaps->MaxTextureBlendStages; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->MaxSimultaneousTextures = _pWineCaps->MaxSimultaneousTextures; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->VertexProcessingCaps = _pWineCaps->VertexProcessingCaps; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->MaxActiveLights = _pWineCaps->MaxActiveLights; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->MaxUserClipPlanes = _pWineCaps->MaxUserClipPlanes; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->MaxVertexBlendMatrices = _pWineCaps->MaxVertexBlendMatrices; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->MaxVertexBlendMatrixIndex = _pWineCaps->MaxVertexBlendMatrixIndex; \
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync _pD3D9Caps->MaxPointSize = _pWineCaps->MaxPointSize; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->MaxPrimitiveCount = _pWineCaps->MaxPrimitiveCount; \
1dc37bff2fb26897f5892d8330fe2bc0c9859aecvboxsync _pD3D9Caps->MaxVertexIndex = _pWineCaps->MaxVertexIndex; \
fb1975a6972d89de9e515bed0248db93f04ec9d8vboxsync _pD3D9Caps->MaxStreams = _pWineCaps->MaxStreams; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->MaxStreamStride = _pWineCaps->MaxStreamStride; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->VertexShaderVersion = _pWineCaps->VertexShaderVersion; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->MaxVertexShaderConst = _pWineCaps->MaxVertexShaderConst; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->PixelShaderVersion = _pWineCaps->PixelShaderVersion; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->PixelShader1xMaxValue = _pWineCaps->PixelShader1xMaxValue; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->DevCaps2 = _pWineCaps->DevCaps2; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->MaxNpatchTessellationLevel = _pWineCaps->MaxNpatchTessellationLevel; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->MasterAdapterOrdinal = _pWineCaps->MasterAdapterOrdinal; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->AdapterOrdinalInGroup = _pWineCaps->AdapterOrdinalInGroup; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->NumberOfAdaptersInGroup = _pWineCaps->NumberOfAdaptersInGroup; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->DeclTypes = _pWineCaps->DeclTypes; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->NumSimultaneousRTs = _pWineCaps->NumSimultaneousRTs; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->StretchRectFilterCaps = _pWineCaps->StretchRectFilterCaps; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->VS20Caps.Caps = _pWineCaps->VS20Caps.Caps; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->VS20Caps.DynamicFlowControlDepth = _pWineCaps->VS20Caps.DynamicFlowControlDepth; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->VS20Caps.NumTemps = _pWineCaps->VS20Caps.NumTemps; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->VS20Caps.NumTemps = _pWineCaps->VS20Caps.NumTemps; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->VS20Caps.StaticFlowControlDepth = _pWineCaps->VS20Caps.StaticFlowControlDepth; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->PS20Caps.Caps = _pWineCaps->PS20Caps.Caps; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->PS20Caps.DynamicFlowControlDepth = _pWineCaps->PS20Caps.DynamicFlowControlDepth; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->PS20Caps.NumTemps = _pWineCaps->PS20Caps.NumTemps; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->PS20Caps.StaticFlowControlDepth = _pWineCaps->PS20Caps.StaticFlowControlDepth; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->PS20Caps.NumInstructionSlots = _pWineCaps->PS20Caps.NumInstructionSlots; \
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync _pD3D9Caps->VertexTextureFilterCaps = _pWineCaps->VertexTextureFilterCaps; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->MaxVShaderInstructionsExecuted = _pWineCaps->MaxVShaderInstructionsExecuted; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->MaxPShaderInstructionsExecuted = _pWineCaps->MaxPShaderInstructionsExecuted; \
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync _pD3D9Caps->MaxVertexShader30InstructionSlots = _pWineCaps->MaxVertexShader30InstructionSlots; \
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync _pD3D9Caps->MaxPixelShader30InstructionSlots = _pWineCaps->MaxPixelShader30InstructionSlots;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* ===========================================================================
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync D3D9 interfaces
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync =========================================================================== */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* ---------- */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* IDirect3D9 */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* ---------- */
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/*****************************************************************************
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync * Predeclare the interface implementation structures
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern const IDirect3D9ExVtbl Direct3D9_Vtbl DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/*****************************************************************************
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * IDirect3D implementation structure
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef struct IDirect3D9Impl
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync{
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IUnknown fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync const IDirect3D9ExVtbl *lpVtbl;
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync LONG ref;
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync /* The WineD3D device */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync IWineD3D *WineD3D;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync /* Created via Direct3DCreate9Ex? Can QI extended interfaces */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync BOOL extended;
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync} IDirect3D9Impl;
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsyncvoid filter_caps(D3DCAPS9* pCaps) DECLSPEC_HIDDEN;
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/*****************************************************************************
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * IDirect3DDevice9 implementation structure
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync */
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsynctypedef struct IDirect3DDevice9Impl
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync{
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync /* IUnknown fields */
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync const IDirect3DDevice9ExVtbl *lpVtbl;
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync const IWineD3DDeviceParentVtbl *device_parent_vtbl;
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync LONG ref;
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync /* IDirect3DDevice9 fields */
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync IWineD3DDevice *WineD3DDevice;
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync /* Avoids recursion with nested ReleaseRef to 0 */
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync BOOL inDestruction;
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync IDirect3DVertexDeclaration9 **convertedDecls;
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync unsigned int numConvertedDecls, declArraySize;
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync BOOL notreset;
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync} IDirect3DDevice9Impl;
6febf3149010855617e4a37e2c49f93d68930d44vboxsync
6febf3149010855617e4a37e2c49f93d68930d44vboxsyncHRESULT device_init(IDirect3DDevice9Impl *device, IWineD3D *wined3d, UINT adapter, D3DDEVTYPE device_type,
6febf3149010855617e4a37e2c49f93d68930d44vboxsync HWND focus_window, DWORD flags, D3DPRESENT_PARAMETERS *parameters) DECLSPEC_HIDDEN;
6febf3149010855617e4a37e2c49f93d68930d44vboxsync
6febf3149010855617e4a37e2c49f93d68930d44vboxsync/* IDirect3DDevice9: */
6febf3149010855617e4a37e2c49f93d68930d44vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_GetSwapChain(IDirect3DDevice9Ex *iface,
6febf3149010855617e4a37e2c49f93d68930d44vboxsync UINT iSwapChain, IDirect3DSwapChain9 **pSwapChain) DECLSPEC_HIDDEN;
6febf3149010855617e4a37e2c49f93d68930d44vboxsyncextern UINT WINAPI IDirect3DDevice9Impl_GetNumberOfSwapChains(IDirect3DDevice9Ex *iface) DECLSPEC_HIDDEN;
6febf3149010855617e4a37e2c49f93d68930d44vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_SetVertexDeclaration(IDirect3DDevice9Ex *iface,
63b785c3291332a86a9bc473e68f08121368898bvboxsync IDirect3DVertexDeclaration9 *pDecl) DECLSPEC_HIDDEN;
63b785c3291332a86a9bc473e68f08121368898bvboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_GetVertexDeclaration(IDirect3DDevice9Ex *iface,
63b785c3291332a86a9bc473e68f08121368898bvboxsync IDirect3DVertexDeclaration9 **ppDecl) DECLSPEC_HIDDEN;
63b785c3291332a86a9bc473e68f08121368898bvboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShader(IDirect3DDevice9Ex *iface,
63b785c3291332a86a9bc473e68f08121368898bvboxsync IDirect3DVertexShader9 *pShader) DECLSPEC_HIDDEN;
63b785c3291332a86a9bc473e68f08121368898bvboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShader(IDirect3DDevice9Ex *iface,
63b785c3291332a86a9bc473e68f08121368898bvboxsync IDirect3DVertexShader9 **ppShader) DECLSPEC_HIDDEN;
63b785c3291332a86a9bc473e68f08121368898bvboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantF(IDirect3DDevice9Ex *iface,
63b785c3291332a86a9bc473e68f08121368898bvboxsync UINT StartRegister, const float *pConstantData, UINT Vector4fCount) DECLSPEC_HIDDEN;
80626cd34607c5dbf3f0af51b32396ce58bf493bvboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantF(IDirect3DDevice9Ex *iface,
41b3442e21c3a79f3bc61ce67e3445757a83f281vboxsync UINT StartRegister, float *pConstantData, UINT Vector4fCount) DECLSPEC_HIDDEN;
80626cd34607c5dbf3f0af51b32396ce58bf493bvboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantI(IDirect3DDevice9Ex *iface,
41b3442e21c3a79f3bc61ce67e3445757a83f281vboxsync UINT StartRegister, const int *pConstantData, UINT Vector4iCount) DECLSPEC_HIDDEN;
41b3442e21c3a79f3bc61ce67e3445757a83f281vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantI(IDirect3DDevice9Ex *iface,
41b3442e21c3a79f3bc61ce67e3445757a83f281vboxsync UINT StartRegister, int *pConstantData, UINT Vector4iCount) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantB(IDirect3DDevice9Ex *iface,
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync UINT StartRegister, const BOOL *pConstantData, UINT BoolCount) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantB(IDirect3DDevice9Ex *iface,
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync UINT StartRegister, BOOL *pConstantData, UINT BoolCount) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShader(IDirect3DDevice9Ex *iface,
80e46f984efd827517661c0e081a36014ca41af8vboxsync IDirect3DPixelShader9 *pShader) DECLSPEC_HIDDEN;
80e46f984efd827517661c0e081a36014ca41af8vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShader(IDirect3DDevice9Ex *iface,
80e46f984efd827517661c0e081a36014ca41af8vboxsync IDirect3DPixelShader9 **ppShader) DECLSPEC_HIDDEN;
80e46f984efd827517661c0e081a36014ca41af8vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantF(IDirect3DDevice9Ex *iface,
80e46f984efd827517661c0e081a36014ca41af8vboxsync UINT StartRegister, const float *pConstantData, UINT Vector4fCount) DECLSPEC_HIDDEN;
80e46f984efd827517661c0e081a36014ca41af8vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantF(IDirect3DDevice9Ex *iface,
80e46f984efd827517661c0e081a36014ca41af8vboxsync UINT StartRegister, float *pConstantData, UINT Vector4fCount) DECLSPEC_HIDDEN;
80e46f984efd827517661c0e081a36014ca41af8vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantI(IDirect3DDevice9Ex *iface,
80e46f984efd827517661c0e081a36014ca41af8vboxsync UINT StartRegister, const int *pConstantData, UINT Vector4iCount) DECLSPEC_HIDDEN;
80e46f984efd827517661c0e081a36014ca41af8vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantI(IDirect3DDevice9Ex *iface,
80e46f984efd827517661c0e081a36014ca41af8vboxsync UINT StartRegister, int *pConstantData, UINT Vector4iCount) DECLSPEC_HIDDEN;
80e46f984efd827517661c0e081a36014ca41af8vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantB(IDirect3DDevice9Ex *iface,
80e46f984efd827517661c0e081a36014ca41af8vboxsync UINT StartRegister, const BOOL *pConstantData, UINT BoolCount) DECLSPEC_HIDDEN;
80e46f984efd827517661c0e081a36014ca41af8vboxsyncextern HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantB(IDirect3DDevice9Ex *iface,
80e46f984efd827517661c0e081a36014ca41af8vboxsync UINT StartRegister, BOOL *pConstantData, UINT BoolCount) DECLSPEC_HIDDEN;
80e46f984efd827517661c0e081a36014ca41af8vboxsync
80e46f984efd827517661c0e081a36014ca41af8vboxsync/* ---------------- */
80e46f984efd827517661c0e081a36014ca41af8vboxsync/* IDirect3DVolume9 */
80e46f984efd827517661c0e081a36014ca41af8vboxsync/* ---------------- */
80e46f984efd827517661c0e081a36014ca41af8vboxsync
80e46f984efd827517661c0e081a36014ca41af8vboxsync/*****************************************************************************
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * IDirect3DVolume9 implementation structure
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef struct IDirect3DVolume9Impl
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync{
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IUnknown fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync const IDirect3DVolume9Vtbl *lpVtbl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LONG ref;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IDirect3DVolume9 fields */
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync IWineD3DVolume *wineD3DVolume;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* The volume container */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync IUnknown *container;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* If set forward refcounting to this object */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync IUnknown *forwardReference;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync} IDirect3DVolume9Impl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncHRESULT volume_init(IDirect3DVolume9Impl *volume, IDirect3DDevice9Impl *device, UINT width, UINT height,
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync UINT depth, DWORD usage, WINED3DFORMAT format, WINED3DPOOL pool) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* ------------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* IDirect3DSwapChain9 */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* ------------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/*****************************************************************************
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * IDirect3DSwapChain9 implementation structure
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef struct IDirect3DSwapChain9Impl
48dafba24ef28f07a241e5857a43b327822574a8vboxsync{
48dafba24ef28f07a241e5857a43b327822574a8vboxsync /* IUnknown fields */
48dafba24ef28f07a241e5857a43b327822574a8vboxsync const IDirect3DSwapChain9Vtbl *lpVtbl;
48dafba24ef28f07a241e5857a43b327822574a8vboxsync LONG ref;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IDirect3DSwapChain9 fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync IWineD3DSwapChain *wineD3DSwapChain;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* Parent reference */
06782e19f5e2144408396dcec922c423c5ef9da8vboxsync LPDIRECT3DDEVICE9EX parentDevice;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* Flags an implicit swap chain */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync BOOL isImplicit;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync} IDirect3DSwapChain9Impl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncHRESULT swapchain_init(IDirect3DSwapChain9Impl *swapchain, IDirect3DDevice9Impl *device,
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync D3DPRESENT_PARAMETERS *present_parameters) DECLSPEC_HIDDEN;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* ----------------- */
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync/* IDirect3DSurface9 */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* ----------------- */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/*****************************************************************************
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * IDirect3DSurface9 implementation structure
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync */
194a8ad893b721dfc22ac5f955671f09db015a3fvboxsynctypedef struct IDirect3DSurface9Impl
e073b07dcb5c9827f0530a9bfa2643356c5656dbvboxsync{
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync /* IUnknown fields */
e073b07dcb5c9827f0530a9bfa2643356c5656dbvboxsync const IDirect3DSurface9Vtbl *lpVtbl;
e073b07dcb5c9827f0530a9bfa2643356c5656dbvboxsync LONG ref;
e073b07dcb5c9827f0530a9bfa2643356c5656dbvboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync /* IDirect3DResource9 fields */
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync IWineD3DSurface *wineD3DSurface;
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync /* Parent reference */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LPDIRECT3DDEVICE9EX parentDevice;
508452243fd3328f7b9e0405d39fb9dc004e31b8vboxsync
508452243fd3328f7b9e0405d39fb9dc004e31b8vboxsync /* The surface container */
f409459bdd4c15cdb8d7fb6c6d54338cce9ac814vboxsync IUnknown *container;
f409459bdd4c15cdb8d7fb6c6d54338cce9ac814vboxsync
f409459bdd4c15cdb8d7fb6c6d54338cce9ac814vboxsync /* If set forward refcounting to this object */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync IUnknown *forwardReference;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync BOOL getdc_supported;
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync} IDirect3DSurface9Impl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
bc04c0fb1382c98fb74fb38ac5dbd3f06ea6a92bvboxsyncHRESULT surface_init(IDirect3DSurface9Impl *surface, IDirect3DDevice9Impl *device,
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync UINT width, UINT height, D3DFORMAT format, BOOL lockable, BOOL discard, UINT level,
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync DWORD usage, D3DPOOL pool, D3DMULTISAMPLE_TYPE multisample_type, DWORD multisample_quality
bc04c0fb1382c98fb74fb38ac5dbd3f06ea6a92bvboxsync#ifdef VBOX_WITH_WDDM
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync , HANDLE *shared_handle
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync , void *pvClientMem
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync ) DECLSPEC_HIDDEN;
41b3442e21c3a79f3bc61ce67e3445757a83f281vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* ---------------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* IDirect3DVertexBuffer9 */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* ---------------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/*****************************************************************************
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync * IDirect3DVertexBuffer9 implementation structure
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync */
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsynctypedef struct IDirect3DVertexBuffer9Impl
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync{
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync /* IUnknown fields */
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync const IDirect3DVertexBuffer9Vtbl *lpVtbl;
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync LONG ref;
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync /* IDirect3DResource9 fields */
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync IWineD3DBuffer *wineD3DVertexBuffer;
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync /* Parent reference */
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync LPDIRECT3DDEVICE9EX parentDevice;
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync DWORD fvf;
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync} IDirect3DVertexBuffer9Impl;
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsyncHRESULT vertexbuffer_init(IDirect3DVertexBuffer9Impl *buffer, IDirect3DDevice9Impl *device,
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync UINT size, UINT usage, DWORD fvf, D3DPOOL pool) DECLSPEC_HIDDEN;
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync/* --------------------- */
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync/* IDirect3DIndexBuffer9 */
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync/* --------------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/*****************************************************************************
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * IDirect3DIndexBuffer9 implementation structure
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync */
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsynctypedef struct IDirect3DIndexBuffer9Impl
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync{
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IUnknown fields */
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync const IDirect3DIndexBuffer9Vtbl *lpVtbl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LONG ref;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync /* IDirect3DResource9 fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync IWineD3DBuffer *wineD3DIndexBuffer;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* Parent reference */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LPDIRECT3DDEVICE9EX parentDevice;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync WINED3DFORMAT format;
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync} IDirect3DIndexBuffer9Impl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncHRESULT indexbuffer_init(IDirect3DIndexBuffer9Impl *buffer, IDirect3DDevice9Impl *device,
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync UINT size, DWORD usage, D3DFORMAT format, D3DPOOL pool) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* --------------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* IDirect3DBaseTexture9 */
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync/* --------------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
6320f517ddc16e8d8dd450a47edfaab81f67942avboxsync/*****************************************************************************
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * IDirect3DBaseTexture9 implementation structure
6320f517ddc16e8d8dd450a47edfaab81f67942avboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef struct IDirect3DBaseTexture9Impl
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync{
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IUnknown fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync const IDirect3DBaseTexture9Vtbl *lpVtbl;
6320f517ddc16e8d8dd450a47edfaab81f67942avboxsync LONG ref;
6320f517ddc16e8d8dd450a47edfaab81f67942avboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IDirect3DResource9 fields */
6320f517ddc16e8d8dd450a47edfaab81f67942avboxsync IWineD3DBaseTexture *wineD3DBaseTexture;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync} IDirect3DBaseTexture9Impl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
6320f517ddc16e8d8dd450a47edfaab81f67942avboxsync/* --------------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* IDirect3DCubeTexture9 */
df2a53dee17325742e7464e7f53d3f99dc500f3avboxsync/* --------------------- */
df2a53dee17325742e7464e7f53d3f99dc500f3avboxsync
df2a53dee17325742e7464e7f53d3f99dc500f3avboxsync/*****************************************************************************
df2a53dee17325742e7464e7f53d3f99dc500f3avboxsync * IDirect3DCubeTexture9 implementation structure
6320f517ddc16e8d8dd450a47edfaab81f67942avboxsync */
6320f517ddc16e8d8dd450a47edfaab81f67942avboxsynctypedef struct IDirect3DCubeTexture9Impl
9113fcf881235e2b3df9ce4760b299c929ac3a62vboxsync{
9113fcf881235e2b3df9ce4760b299c929ac3a62vboxsync /* IUnknown fields */
9113fcf881235e2b3df9ce4760b299c929ac3a62vboxsync const IDirect3DCubeTexture9Vtbl *lpVtbl;
9113fcf881235e2b3df9ce4760b299c929ac3a62vboxsync LONG ref;
9113fcf881235e2b3df9ce4760b299c929ac3a62vboxsync
9113fcf881235e2b3df9ce4760b299c929ac3a62vboxsync /* IDirect3DResource9 fields */
1871985cb4854e5bfb2ead8174ee28dbfce74df5vboxsync IWineD3DCubeTexture *wineD3DCubeTexture;
1871985cb4854e5bfb2ead8174ee28dbfce74df5vboxsync
9113fcf881235e2b3df9ce4760b299c929ac3a62vboxsync /* Parent reference */
9113fcf881235e2b3df9ce4760b299c929ac3a62vboxsync LPDIRECT3DDEVICE9EX parentDevice;
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync} IDirect3DCubeTexture9Impl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncHRESULT cubetexture_init(IDirect3DCubeTexture9Impl *texture, IDirect3DDevice9Impl *device,
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync UINT edge_length, UINT levels, DWORD usage, D3DFORMAT format, D3DPOOL pool) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* ----------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* IDirect3DTexture9 */
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync/* ----------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/*****************************************************************************
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync * IDirect3DTexture9 implementation structure
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef struct IDirect3DTexture9Impl
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync{
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IUnknown fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync const IDirect3DTexture9Vtbl *lpVtbl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LONG ref;
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync /* IDirect3DResource9 fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync IWineD3DTexture *wineD3DTexture;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync /* Parent reference */
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync LPDIRECT3DDEVICE9EX parentDevice;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync} IDirect3DTexture9Impl;
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncHRESULT texture_init(IDirect3DTexture9Impl *texture, IDirect3DDevice9Impl *device,
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync UINT width, UINT height, UINT levels, DWORD usage, D3DFORMAT format, D3DPOOL pool
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#ifdef VBOX_WITH_WDDM
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync , HANDLE *shared_handle
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync , void *pvClientMem
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync ) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* ----------------------- */
1871985cb4854e5bfb2ead8174ee28dbfce74df5vboxsync/* IDirect3DVolumeTexture9 */
1871985cb4854e5bfb2ead8174ee28dbfce74df5vboxsync/* ----------------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/*****************************************************************************
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * IDirect3DVolumeTexture9 implementation structure
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef struct IDirect3DVolumeTexture9Impl
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync{
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IUnknown fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync const IDirect3DVolumeTexture9Vtbl *lpVtbl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LONG ref;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IDirect3DResource9 fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync IWineD3DVolumeTexture *wineD3DVolumeTexture;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* Parent reference */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LPDIRECT3DDEVICE9EX parentDevice;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync} IDirect3DVolumeTexture9Impl;
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsyncHRESULT volumetexture_init(IDirect3DVolumeTexture9Impl *texture, IDirect3DDevice9Impl *device,
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync UINT width, UINT height, UINT depth, UINT levels, DWORD usage, D3DFORMAT format, D3DPOOL pool) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* ----------------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* IDirect3DStateBlock9 */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* ----------------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/*****************************************************************************
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * IDirect3DStateBlock9 implementation structure
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef struct IDirect3DStateBlock9Impl {
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IUnknown fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync const IDirect3DStateBlock9Vtbl *lpVtbl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LONG ref;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IDirect3DStateBlock9 fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync IWineD3DStateBlock *wineD3DStateBlock;
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* Parent reference */
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync LPDIRECT3DDEVICE9EX parentDevice;
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync} IDirect3DStateBlock9Impl;
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsyncHRESULT stateblock_init(IDirect3DStateBlock9Impl *stateblock, IDirect3DDevice9Impl *device,
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync D3DSTATEBLOCKTYPE type, IWineD3DStateBlock *wined3d_stateblock) DECLSPEC_HIDDEN;
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync/* --------------------------- */
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync/* IDirect3DVertexDeclaration9 */
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync/* --------------------------- */
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/*****************************************************************************
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync * IDirect3DVertexDeclaration implementation structure
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef struct IDirect3DVertexDeclaration9Impl {
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync /* IUnknown fields */
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync const IDirect3DVertexDeclaration9Vtbl *lpVtbl;
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync LONG ref;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync D3DVERTEXELEMENT9 *elements;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync UINT element_count;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync /* IDirect3DVertexDeclaration9 fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync IWineD3DVertexDeclaration *wineD3DVertexDeclaration;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync DWORD convFVF;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync /* Parent reference */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync LPDIRECT3DDEVICE9EX parentDevice;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync} IDirect3DVertexDeclaration9Impl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncvoid IDirect3DVertexDeclaration9Impl_Destroy(LPDIRECT3DVERTEXDECLARATION9 iface) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncHRESULT vertexdeclaration_init(IDirect3DVertexDeclaration9Impl *declaration,
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync IDirect3DDevice9Impl *device, const D3DVERTEXELEMENT9 *elements) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* ---------------------- */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* IDirect3DVertexShader9 */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* ---------------------- */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/*****************************************************************************
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * IDirect3DVertexShader implementation structure
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef struct IDirect3DVertexShader9Impl {
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync /* IUnknown fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync const IDirect3DVertexShader9Vtbl *lpVtbl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LONG ref;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IDirect3DVertexShader9 fields */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync IWineD3DVertexShader *wineD3DVertexShader;
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* Parent reference */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LPDIRECT3DDEVICE9EX parentDevice;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync} IDirect3DVertexShader9Impl;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsyncHRESULT vertexshader_init(IDirect3DVertexShader9Impl *shader,
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync IDirect3DDevice9Impl *device, const DWORD *byte_code) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync#define D3D9_MAX_VERTEX_SHADER_CONSTANTF 256
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#define D3D9_MAX_SIMULTANEOUS_RENDERTARGETS 4
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* --------------------- */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* IDirect3DPixelShader9 */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* --------------------- */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/*****************************************************************************
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * IDirect3DPixelShader implementation structure
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef struct IDirect3DPixelShader9Impl {
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IUnknown fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync const IDirect3DPixelShader9Vtbl *lpVtbl;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync LONG ref;
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IDirect3DPixelShader9 fields */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync IWineD3DPixelShader *wineD3DPixelShader;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* Parent reference */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LPDIRECT3DDEVICE9EX parentDevice;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync} IDirect3DPixelShader9Impl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncHRESULT pixelshader_init(IDirect3DPixelShader9Impl *shader,
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync IDirect3DDevice9Impl *device, const DWORD *byte_code) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* --------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* IDirect3DQuery9 */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* --------------- */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/*****************************************************************************
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * IDirect3DPixelShader implementation structure
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef struct IDirect3DQuery9Impl {
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IUnknown fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync const IDirect3DQuery9Vtbl *lpVtbl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LONG ref;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* IDirect3DQuery9 fields */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync IWineD3DQuery *wineD3DQuery;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync /* Parent reference */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync LPDIRECT3DDEVICE9EX parentDevice;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync} IDirect3DQuery9Impl;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncHRESULT query_init(IDirect3DQuery9Impl *query, IDirect3DDevice9Impl *device,
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync D3DQUERYTYPE type) DECLSPEC_HIDDEN;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* __WINE_D3D9_PRIVATE_H */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync