|  | /* | 
|  | * Copyright 2017 Ihsan Akmal | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | import "oaidl.idl"; | 
|  | import "ocidl.idl"; | 
|  | import "dxgi1_3.idl"; | 
|  | import "d3dcommon.idl"; | 
|  | import "d3d11_1.idl"; | 
|  |  | 
|  | const UINT D3D11_PACKED_TILE = 0xffffffff; | 
|  |  | 
|  | typedef enum D3D11_TILE_MAPPING_FLAG | 
|  | { | 
|  | D3D11_TILE_MAPPING_NO_OVERWRITE = 0x1, | 
|  | } D3D11_TILE_MAPPING_FLAG; | 
|  |  | 
|  | typedef enum D3D11_TILE_RANGE_FLAG | 
|  | { | 
|  | D3D11_TILE_RANGE_NULL = 0x1, | 
|  | D3D11_TILE_RANGE_SKIP = 0x2, | 
|  | D3D11_TILE_RANGE_REUSE_SINGLE_TILE = 0x4, | 
|  | } D3D11_TILE_RANGE_FLAG; | 
|  |  | 
|  | typedef enum D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_FLAG | 
|  | { | 
|  | D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_TILED_RESOURCE = 0x1, | 
|  | } D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_FLAG; | 
|  |  | 
|  | typedef enum D3D11_TILE_COPY_FLAG | 
|  | { | 
|  | D3D11_TILE_COPY_NO_OVERWRITE = 0x1, | 
|  | D3D11_TILE_COPY_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2, | 
|  | D3D11_TILE_COPY_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4, | 
|  | } D3D11_TILE_COPY_FLAG; | 
|  |  | 
|  | typedef struct D3D11_TILED_RESOURCE_COORDINATE | 
|  | { | 
|  | UINT X; | 
|  | UINT Y; | 
|  | UINT Z; | 
|  | UINT Subresource; | 
|  | } D3D11_TILED_RESOURCE_COORDINATE; | 
|  |  | 
|  | typedef struct D3D11_TILE_REGION_SIZE | 
|  | { | 
|  | UINT NumTiles; | 
|  | BOOL bUseBox; | 
|  | UINT Width; | 
|  | UINT16 Height; | 
|  | UINT16 Depth; | 
|  | } D3D11_TILE_REGION_SIZE; | 
|  |  | 
|  | typedef struct D3D11_SUBRESOURCE_TILING | 
|  | { | 
|  | UINT WidthInTiles; | 
|  | UINT16 HeightInTiles; | 
|  | UINT16 DepthInTiles; | 
|  | UINT StartTileIndexInOverallResource; | 
|  | } D3D11_SUBRESOURCE_TILING; | 
|  |  | 
|  | typedef struct D3D11_TILE_SHAPE | 
|  | { | 
|  | UINT WidthInTexels; | 
|  | UINT HeightInTexels; | 
|  | UINT DepthInTexels; | 
|  | } D3D11_TILE_SHAPE; | 
|  |  | 
|  | typedef struct D3D11_PACKED_MIP_DESC | 
|  | { | 
|  | UINT8 NumStandardMips; | 
|  | UINT8 NumPackedMips; | 
|  | UINT NumTilesForPackedMips; | 
|  | UINT StartTileIndexInOverallResource; | 
|  | } D3D11_PACKED_MIP_DESC; | 
|  |  | 
|  | [ | 
|  | uuid(420d5b32-b90c-4da4-bef0-359f6a24a83a), | 
|  | object, | 
|  | local, | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ID3D11DeviceContext2 : ID3D11DeviceContext1 | 
|  | { | 
|  | HRESULT UpdateTileMappings( | 
|  | ID3D11Resource *resource, | 
|  | UINT region_count, | 
|  | const D3D11_TILED_RESOURCE_COORDINATE *region_start_coordinates, | 
|  | const D3D11_TILE_REGION_SIZE *region_sizes, | 
|  | ID3D11Buffer *pool, | 
|  | UINT range_count, | 
|  | const UINT *range_flags, | 
|  | const UINT *pool_start_offsets, | 
|  | const UINT *range_tile_counts, | 
|  | UINT flags | 
|  | ); | 
|  | HRESULT CopyTileMappings( | 
|  | ID3D11Resource *dst_resource, | 
|  | const D3D11_TILED_RESOURCE_COORDINATE *dst_start_coordinate, | 
|  | ID3D11Resource *src_resource, | 
|  | const D3D11_TILED_RESOURCE_COORDINATE *src_start_coordinate, | 
|  | const D3D11_TILE_REGION_SIZE *region_size, | 
|  | UINT flags | 
|  | ); | 
|  | void CopyTiles( | 
|  | ID3D11Resource *resource, | 
|  | const D3D11_TILED_RESOURCE_COORDINATE *start_coordinate, | 
|  | const D3D11_TILE_REGION_SIZE *size, | 
|  | ID3D11Buffer *buffer, | 
|  | UINT64 start_offset, | 
|  | UINT flags | 
|  | ); | 
|  | void UpdateTiles( | 
|  | ID3D11Resource *dst_resource, | 
|  | const D3D11_TILED_RESOURCE_COORDINATE *dst_start_coordinate, | 
|  | const D3D11_TILE_REGION_SIZE *dst_region_size, | 
|  | const void *src_data, | 
|  | UINT flags | 
|  | ); | 
|  | HRESULT ResizeTilePool( | 
|  | ID3D11Buffer *pool, | 
|  | UINT64 size | 
|  | ); | 
|  | void TiledResourceBarrier( | 
|  | ID3D11DeviceChild *before_barrier, | 
|  | ID3D11DeviceChild *after_barrier | 
|  | ); | 
|  | BOOL IsAnnotationEnabled(); | 
|  | void SetMarkerInt(const WCHAR *label, int data); | 
|  | void BeginEventInt(const WCHAR *label, int data); | 
|  | void EndEvent(); | 
|  | } | 
|  |  | 
|  | [ | 
|  | uuid(9d06dffa-d1e5-4d07-83a8-1bb123f2f841), | 
|  | object, | 
|  | local, | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ID3D11Device2 : ID3D11Device1 | 
|  | { | 
|  | void GetImmediateContext2(ID3D11DeviceContext2 **context); | 
|  | HRESULT CreateDeferredContext2(UINT flags, ID3D11DeviceContext2 **context); | 
|  | void GetResourceTiling( | 
|  | ID3D11Resource *resource, | 
|  | UINT *tile_count, | 
|  | D3D11_PACKED_MIP_DESC *mip_desc, | 
|  | D3D11_TILE_SHAPE *tile_shape, | 
|  | UINT *subresource_tiling_count, | 
|  | UINT first_subresource_tiling, | 
|  | D3D11_SUBRESOURCE_TILING *subresource_tiling | 
|  | ); | 
|  | HRESULT CheckMultisampleQualityLevels1( | 
|  | DXGI_FORMAT format, | 
|  | UINT sample_count, | 
|  | UINT flags, | 
|  | UINT *quality_level_count | 
|  | ); | 
|  | } |