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 |
|
---|
19 | import "oaidl.idl";
|
---|
20 | import "ocidl.idl";
|
---|
21 | import "dxgi1_3.idl";
|
---|
22 | import "d3dcommon.idl";
|
---|
23 | import "d3d11_1.idl";
|
---|
24 |
|
---|
25 | const UINT D3D11_PACKED_TILE = 0xffffffff;
|
---|
26 |
|
---|
27 | typedef enum D3D11_TILE_MAPPING_FLAG
|
---|
28 | {
|
---|
29 | D3D11_TILE_MAPPING_NO_OVERWRITE = 0x1,
|
---|
30 | } D3D11_TILE_MAPPING_FLAG;
|
---|
31 |
|
---|
32 | typedef 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 |
|
---|
39 | typedef 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 |
|
---|
44 | typedef 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 |
|
---|
51 | typedef struct D3D11_TILED_RESOURCE_COORDINATE
|
---|
52 | {
|
---|
53 | UINT X;
|
---|
54 | UINT Y;
|
---|
55 | UINT Z;
|
---|
56 | UINT Subresource;
|
---|
57 | } D3D11_TILED_RESOURCE_COORDINATE;
|
---|
58 |
|
---|
59 | typedef 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 |
|
---|
68 | typedef struct D3D11_SUBRESOURCE_TILING
|
---|
69 | {
|
---|
70 | UINT WidthInTiles;
|
---|
71 | UINT16 HeightInTiles;
|
---|
72 | UINT16 DepthInTiles;
|
---|
73 | UINT StartTileIndexInOverallResource;
|
---|
74 | } D3D11_SUBRESOURCE_TILING;
|
---|
75 |
|
---|
76 | typedef struct D3D11_TILE_SHAPE
|
---|
77 | {
|
---|
78 | UINT WidthInTexels;
|
---|
79 | UINT HeightInTexels;
|
---|
80 | UINT DepthInTexels;
|
---|
81 | } D3D11_TILE_SHAPE;
|
---|
82 |
|
---|
83 | typedef 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 | ]
|
---|
97 | interface 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 | ]
|
---|
154 | interface 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 | }
|
---|