1/* 2 * Copyright 2011 Joakim Sindholt <opensource@zhasha.com> 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * on the rights to use, copy, modify, merge, publish, distribute, sub 8 * license, and/or sell copies of the Software, and to permit persons to whom 9 * the Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice (including the next 12 * paragraph) shall be included in all copies or substantial portions of the 13 * Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 19 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 20 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 21 * USE OR OTHER DEALINGS IN THE SOFTWARE. */ 22 23#ifndef _NINE_ADAPTER9_H_ 24#define _NINE_ADAPTER9_H_ 25 26#include "iunknown.h" 27 28#include "d3dadapter/d3dadapter9.h" 29 30struct pipe_screen; 31struct pipe_resource; 32 33struct d3dadapter9_context 34{ 35 struct pipe_screen *hal, *ref; 36 D3DADAPTER_IDENTIFIER9 identifier; 37 BOOL linear_framebuffer; 38 BOOL throttling; 39 int throttling_value; 40 int vblank_mode; 41 BOOL thread_submit; 42 BOOL discard_delayed_release; 43 BOOL tearfree_discard; 44 int csmt_force; 45 BOOL dynamic_texture_workaround; 46 BOOL shader_inline_constants; 47 int memfd_virtualsizelimit; 48 int override_vram_size; 49 50 void (*destroy)( struct d3dadapter9_context *ctx ); 51}; 52 53struct NineAdapter9 54{ 55 struct NineUnknown base; 56 57 struct d3dadapter9_context *ctx; 58}; 59static inline struct NineAdapter9 * 60NineAdapter9( void *data ) 61{ 62 return (struct NineAdapter9 *)data; 63} 64 65HRESULT 66NineAdapter9_new( struct d3dadapter9_context *pCTX, 67 struct NineAdapter9 **ppOut ); 68 69HRESULT 70NineAdapter9_ctor( struct NineAdapter9 *This, 71 struct NineUnknownParams *pParams, 72 struct d3dadapter9_context *pCTX ); 73 74void 75NineAdapter9_dtor( struct NineAdapter9 *This ); 76 77HRESULT NINE_WINAPI 78NineAdapter9_GetAdapterIdentifier( struct NineAdapter9 *This, 79 DWORD Flags, 80 D3DADAPTER_IDENTIFIER9 *pIdentifier ); 81 82HRESULT NINE_WINAPI 83NineAdapter9_CheckDeviceType( struct NineAdapter9 *This, 84 D3DDEVTYPE DevType, 85 D3DFORMAT AdapterFormat, 86 D3DFORMAT BackBufferFormat, 87 BOOL bWindowed ); 88 89HRESULT NINE_WINAPI 90NineAdapter9_CheckDeviceFormat( struct NineAdapter9 *This, 91 D3DDEVTYPE DeviceType, 92 D3DFORMAT AdapterFormat, 93 DWORD Usage, 94 D3DRESOURCETYPE RType, 95 D3DFORMAT CheckFormat ); 96 97HRESULT NINE_WINAPI 98NineAdapter9_CheckDeviceMultiSampleType( struct NineAdapter9 *This, 99 D3DDEVTYPE DeviceType, 100 D3DFORMAT SurfaceFormat, 101 BOOL Windowed, 102 D3DMULTISAMPLE_TYPE MultiSampleType, 103 DWORD *pQualityLevels ); 104 105HRESULT NINE_WINAPI 106NineAdapter9_CheckDepthStencilMatch( struct NineAdapter9 *This, 107 D3DDEVTYPE DeviceType, 108 D3DFORMAT AdapterFormat, 109 D3DFORMAT RenderTargetFormat, 110 D3DFORMAT DepthStencilFormat ); 111 112HRESULT NINE_WINAPI 113NineAdapter9_CheckDeviceFormatConversion( struct NineAdapter9 *This, 114 D3DDEVTYPE DeviceType, 115 D3DFORMAT SourceFormat, 116 D3DFORMAT TargetFormat ); 117 118HRESULT NINE_WINAPI 119NineAdapter9_GetDeviceCaps( struct NineAdapter9 *This, 120 D3DDEVTYPE DeviceType, 121 D3DCAPS9 *pCaps ); 122 123HRESULT NINE_WINAPI 124NineAdapter9_CreateDevice( struct NineAdapter9 *This, 125 UINT RealAdapter, 126 D3DDEVTYPE DeviceType, 127 HWND hFocusWindow, 128 DWORD BehaviorFlags, 129 D3DPRESENT_PARAMETERS *pPresentationParameters, 130 IDirect3D9 *pD3D9, 131 ID3DPresentGroup *pPresentationGroup, 132 IDirect3DDevice9 **ppReturnedDeviceInterface ); 133 134HRESULT NINE_WINAPI 135NineAdapter9_CreateDeviceEx( struct NineAdapter9 *This, 136 UINT RealAdapter, 137 D3DDEVTYPE DeviceType, 138 HWND hFocusWindow, 139 DWORD BehaviorFlags, 140 D3DPRESENT_PARAMETERS *pPresentationParameters, 141 D3DDISPLAYMODEEX *pFullscreenDisplayMode, 142 IDirect3D9Ex *pD3D9Ex, 143 ID3DPresentGroup *pPresentationGroup, 144 IDirect3DDevice9Ex **ppReturnedDeviceInterface ); 145 146#endif /* _NINE_ADAPTER9_H_ */ 147