174 lines
4.8 KiB
Plaintext
174 lines
4.8 KiB
Plaintext
/*
|
|
* 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
|
|
);
|
|
}
|