• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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