winapi_ui_automation/um/
d3d11_2.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use ctypes::c_void;
7use shared::basetsd::{UINT16, UINT64, UINT8};
8use shared::dxgiformat::DXGI_FORMAT;
9use shared::minwindef::{BOOL, INT, UINT};
10use um::d3d11::{ID3D11Buffer, ID3D11DeviceChild, ID3D11Resource};
11use um::d3d11_1::{
12    ID3D11Device1, ID3D11Device1Vtbl, ID3D11DeviceContext1, ID3D11DeviceContext1Vtbl,
13};
14use um::winnt::{HRESULT, LPCWSTR};
15DEFINE_GUID!{IID_ID3D11DeviceContext2,
16    0x420d5b32, 0xb90c, 0x4da4, 0xbe, 0xf0, 0x35, 0x9f, 0x6a, 0x24, 0xa8, 0x3a}
17DEFINE_GUID!{IID_ID3D11Device2,
18    0x9d06dffa, 0xd1e5, 0x4d07, 0x83, 0xa8, 0x1b, 0xb1, 0x23, 0xf2, 0xf8, 0x41}
19STRUCT!{struct D3D11_TILED_RESOURCE_COORDINATE {
20    X: UINT,
21    Y: UINT,
22    Z: UINT,
23    Subresource: UINT,
24}}
25STRUCT!{struct D3D11_TILE_REGION_SIZE {
26    NumTiles: UINT,
27    bUseBox: BOOL,
28    Width: UINT,
29    Height: UINT16,
30    Depth: UINT16,
31}}
32ENUM!{enum D3D11_TILE_MAPPING_FLAG {
33    D3D11_TILE_MAPPING_NO_OVERWRITE = 0x00000001,
34}}
35ENUM!{enum D3D11_TILE_RANGE_FLAG {
36    D3D11_TILE_RANGE_NULL = 0x00000001,
37    D3D11_TILE_RANGE_SKIP = 0x00000002,
38    D3D11_TILE_RANGE_REUSE_SINGLE_TILE = 0x00000004,
39}}
40STRUCT!{struct D3D11_SUBRESOURCE_TILING {
41    WidthInTiles: UINT,
42    HeightInTiles: UINT16,
43    DepthInTiles: UINT16,
44    StartTileIndexInOverallResource: UINT,
45}}
46STRUCT!{struct D3D11_TILE_SHAPE {
47    WidthInTexels: UINT,
48    HeightInTexels: UINT,
49    DepthInTexels: UINT,
50}}
51STRUCT!{struct D3D11_PACKED_MIP_DESC {
52    NumStandardMips: UINT8,
53    NumPackedMips: UINT8,
54    NumTilesForPackedMips: UINT,
55    StartTileIndexInOverallResource: UINT,
56}}
57ENUM!{enum D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_FLAG {
58    D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_TILED_RESOURCE = 0x00000001,
59}}
60ENUM!{enum D3D11_TILE_COPY_FLAG {
61    D3D11_TILE_COPY_NO_OVERWRITE = 0x00000001,
62    D3D11_TILE_COPY_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x00000002,
63    D3D11_TILE_COPY_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x00000004,
64}}
65RIDL!{#[uuid(0x420d5b32, 0xb90c, 0x4da4, 0xbe, 0xf0, 0x35, 0x9f, 0x6a, 0x24, 0xa8, 0x3a)]
66interface ID3D11DeviceContext2(ID3D11DeviceContext2Vtbl):
67    ID3D11DeviceContext1(ID3D11DeviceContext1Vtbl) {
68    fn UpdateTileMappings(
69        pTiledResource: *mut ID3D11Resource,
70        NumTiledResourceRegions: UINT,
71        pTiledResourceRegionStartCoordinates: *const D3D11_TILED_RESOURCE_COORDINATE,
72        pTiledResourceRegionSizes: *const D3D11_TILE_REGION_SIZE,
73        pTilePool: *mut ID3D11Buffer,
74        NumRanges: UINT,
75        pRangeFlags: *const UINT,
76        pTilePoolStartOffsets: *const UINT,
77        pRangeTileCounts: *const UINT,
78        Flags: UINT,
79    ) -> HRESULT,
80    fn CopyTileMappings(
81        pDestTiledResource: *mut ID3D11Resource,
82        pDestRegionStartCoordinate: *const D3D11_TILED_RESOURCE_COORDINATE,
83        pSourceTiledResource: *mut ID3D11Resource,
84        pSourceRegionStartCoordinate: *const D3D11_TILED_RESOURCE_COORDINATE,
85        pTileRegionSize: *const D3D11_TILE_REGION_SIZE,
86        Flags: UINT,
87    ) -> HRESULT,
88    fn CopyTiles(
89        pTiledResource: *mut ID3D11Resource,
90        pTileRegionStartCoordinate: *const D3D11_TILED_RESOURCE_COORDINATE,
91        pTileRegionSize: *const D3D11_TILE_REGION_SIZE,
92        pBuffer: *mut ID3D11Buffer,
93        BufferStartOffsetInBytes: UINT64,
94        Flags: UINT,
95    ) -> (),
96    fn UpdateTiles(
97        pDestTiledResource: *mut ID3D11Resource,
98        pDestTileRegionStartCoordinate: *const D3D11_TILED_RESOURCE_COORDINATE,
99        pDestTileRegionSize: *const D3D11_TILE_REGION_SIZE,
100        pSourceTileData: *const c_void,
101        Flags: UINT,
102    ) -> (),
103    fn ResizeTilePool(
104        pTilePool: *mut ID3D11Buffer,
105        NewSizeInBytes: UINT64,
106    ) -> HRESULT,
107    fn TiledResourceBarrier(
108        pTiledResourceOrViewAccessBeforeBarrier: *mut ID3D11DeviceChild,
109        pTiledResourceOrViewAccessAfterBarrier: *mut ID3D11DeviceChild,
110    ) -> (),
111    fn IsAnnotationEnabled() -> BOOL,
112    fn SetMarkerInt(
113        pLabel: LPCWSTR,
114        Data: INT,
115    ) -> (),
116    fn BeginEventInt(
117        pLabel: LPCWSTR,
118        Data: INT,
119    ) -> (),
120    fn EndEvent() -> (),
121}}
122RIDL!{#[uuid(0x9d06dffa, 0xd1e5, 0x4d07, 0x83, 0xa8, 0x1b, 0xb1, 0x23, 0xf2, 0xf8, 0x41)]
123interface ID3D11Device2(ID3D11Device2Vtbl): ID3D11Device1(ID3D11Device1Vtbl) {
124    fn GetImmediateContext2(
125        ppImmediateContext: *mut *mut ID3D11DeviceContext2,
126    ) -> (),
127    fn CreateDeferredContext2(
128        ContextFlags: UINT,
129        ppDeferredContext: *mut *mut ID3D11DeviceContext2,
130    ) -> HRESULT,
131    fn GetResourceTiling(
132        pTiledResource: *mut ID3D11Resource,
133        pNumTilesForEntireResource: *mut UINT,
134        pPackedMipDesc: *mut D3D11_PACKED_MIP_DESC,
135        pStandardTileShapeForNonPackedMips: *mut D3D11_TILE_SHAPE,
136        pNumSubresourceTilings: *mut UINT,
137        FirstSubresourceTilingToGet: UINT,
138        pSubresourceTilingsForNonPackedMips: *mut D3D11_SUBRESOURCE_TILING,
139    ) -> (),
140    fn CheckMultisampleQualityLevels1(
141        Format: DXGI_FORMAT,
142        SampleCount: UINT,
143        Flags: UINT,
144        pNumQualityLevels: *mut UINT,
145    ) -> HRESULT,
146}}