1/* 2 * Copyright 2017 Ihsan Akmal 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19import "oaidl.idl"; 20import "ocidl.idl"; 21import "dxgi1_3.idl"; 22import "d3dcommon.idl"; 23import "d3d11_1.idl"; 24 25const UINT D3D11_PACKED_TILE = 0xffffffff; 26 27typedef enum D3D11_TILE_MAPPING_FLAG 28{ 29 D3D11_TILE_MAPPING_NO_OVERWRITE = 0x1, 30} D3D11_TILE_MAPPING_FLAG; 31 32typedef enum D3D11_TILE_RANGE_FLAG 33{ 34 D3D11_TILE_RANGE_NULL = 0x1, 35 D3D11_TILE_RANGE_SKIP = 0x2, 36 D3D11_TILE_RANGE_REUSE_SINGLE_TILE = 0x4, 37} D3D11_TILE_RANGE_FLAG; 38 39typedef enum D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_FLAG 40{ 41 D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_TILED_RESOURCE = 0x1, 42} D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_FLAG; 43 44typedef enum D3D11_TILE_COPY_FLAG 45{ 46 D3D11_TILE_COPY_NO_OVERWRITE = 0x1, 47 D3D11_TILE_COPY_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2, 48 D3D11_TILE_COPY_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4, 49} D3D11_TILE_COPY_FLAG; 50 51typedef struct D3D11_TILED_RESOURCE_COORDINATE 52{ 53 UINT X; 54 UINT Y; 55 UINT Z; 56 UINT Subresource; 57} D3D11_TILED_RESOURCE_COORDINATE; 58 59typedef struct D3D11_TILE_REGION_SIZE 60{ 61 UINT NumTiles; 62 BOOL bUseBox; 63 UINT Width; 64 UINT16 Height; 65 UINT16 Depth; 66} D3D11_TILE_REGION_SIZE; 67 68typedef struct D3D11_SUBRESOURCE_TILING 69{ 70 UINT WidthInTiles; 71 UINT16 HeightInTiles; 72 UINT16 DepthInTiles; 73 UINT StartTileIndexInOverallResource; 74} D3D11_SUBRESOURCE_TILING; 75 76typedef struct D3D11_TILE_SHAPE 77{ 78 UINT WidthInTexels; 79 UINT HeightInTexels; 80 UINT DepthInTexels; 81} D3D11_TILE_SHAPE; 82 83typedef struct D3D11_PACKED_MIP_DESC 84{ 85 UINT8 NumStandardMips; 86 UINT8 NumPackedMips; 87 UINT NumTilesForPackedMips; 88 UINT StartTileIndexInOverallResource; 89} D3D11_PACKED_MIP_DESC; 90 91[ 92 uuid(420d5b32-b90c-4da4-bef0-359f6a24a83a), 93 object, 94 local, 95 pointer_default(unique) 96] 97interface ID3D11DeviceContext2 : ID3D11DeviceContext1 98{ 99 HRESULT UpdateTileMappings( 100 ID3D11Resource *resource, 101 UINT region_count, 102 const D3D11_TILED_RESOURCE_COORDINATE *region_start_coordinates, 103 const D3D11_TILE_REGION_SIZE *region_sizes, 104 ID3D11Buffer *pool, 105 UINT range_count, 106 const UINT *range_flags, 107 const UINT *pool_start_offsets, 108 const UINT *range_tile_counts, 109 UINT flags 110 ); 111 HRESULT CopyTileMappings( 112 ID3D11Resource *dst_resource, 113 const D3D11_TILED_RESOURCE_COORDINATE *dst_start_coordinate, 114 ID3D11Resource *src_resource, 115 const D3D11_TILED_RESOURCE_COORDINATE *src_start_coordinate, 116 const D3D11_TILE_REGION_SIZE *region_size, 117 UINT flags 118 ); 119 void CopyTiles( 120 ID3D11Resource *resource, 121 const D3D11_TILED_RESOURCE_COORDINATE *start_coordinate, 122 const D3D11_TILE_REGION_SIZE *size, 123 ID3D11Buffer *buffer, 124 UINT64 start_offset, 125 UINT flags 126 ); 127 void UpdateTiles( 128 ID3D11Resource *dst_resource, 129 const D3D11_TILED_RESOURCE_COORDINATE *dst_start_coordinate, 130 const D3D11_TILE_REGION_SIZE *dst_region_size, 131 const void *src_data, 132 UINT flags 133 ); 134 HRESULT ResizeTilePool( 135 ID3D11Buffer *pool, 136 UINT64 size 137 ); 138 void TiledResourceBarrier( 139 ID3D11DeviceChild *before_barrier, 140 ID3D11DeviceChild *after_barrier 141 ); 142 BOOL IsAnnotationEnabled(); 143 void SetMarkerInt(const WCHAR *label, int data); 144 void BeginEventInt(const WCHAR *label, int data); 145 void EndEvent(); 146} 147 148[ 149 uuid(9d06dffa-d1e5-4d07-83a8-1bb123f2f841), 150 object, 151 local, 152 pointer_default(unique) 153] 154interface ID3D11Device2 : ID3D11Device1 155{ 156 void GetImmediateContext2(ID3D11DeviceContext2 **context); 157 HRESULT CreateDeferredContext2(UINT flags, ID3D11DeviceContext2 **context); 158 void GetResourceTiling( 159 ID3D11Resource *resource, 160 UINT *tile_count, 161 D3D11_PACKED_MIP_DESC *mip_desc, 162 D3D11_TILE_SHAPE *tile_shape, 163 UINT *subresource_tiling_count, 164 UINT first_subresource_tiling, 165 D3D11_SUBRESOURCE_TILING *subresource_tiling 166 ); 167 HRESULT CheckMultisampleQualityLevels1( 168 DXGI_FORMAT format, 169 UINT sample_count, 170 UINT flags, 171 UINT *quality_level_count 172 ); 173} 174