// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. use ctypes::c_void; use shared::basetsd::{UINT16, UINT64, UINT8}; use shared::dxgiformat::DXGI_FORMAT; use shared::minwindef::{BOOL, INT, UINT}; use um::d3d11::{ID3D11Buffer, ID3D11DeviceChild, ID3D11Resource}; use um::d3d11_1::{ ID3D11Device1, ID3D11Device1Vtbl, ID3D11DeviceContext1, ID3D11DeviceContext1Vtbl, }; use um::winnt::{HRESULT, LPCWSTR}; DEFINE_GUID!{IID_ID3D11DeviceContext2, 0x420d5b32, 0xb90c, 0x4da4, 0xbe, 0xf0, 0x35, 0x9f, 0x6a, 0x24, 0xa8, 0x3a} DEFINE_GUID!{IID_ID3D11Device2, 0x9d06dffa, 0xd1e5, 0x4d07, 0x83, 0xa8, 0x1b, 0xb1, 0x23, 0xf2, 0xf8, 0x41} STRUCT!{struct D3D11_TILED_RESOURCE_COORDINATE { X: UINT, Y: UINT, Z: UINT, Subresource: UINT, }} STRUCT!{struct D3D11_TILE_REGION_SIZE { NumTiles: UINT, bUseBox: BOOL, Width: UINT, Height: UINT16, Depth: UINT16, }} ENUM!{enum D3D11_TILE_MAPPING_FLAG { D3D11_TILE_MAPPING_NO_OVERWRITE = 0x00000001, }} ENUM!{enum D3D11_TILE_RANGE_FLAG { D3D11_TILE_RANGE_NULL = 0x00000001, D3D11_TILE_RANGE_SKIP = 0x00000002, D3D11_TILE_RANGE_REUSE_SINGLE_TILE = 0x00000004, }} STRUCT!{struct D3D11_SUBRESOURCE_TILING { WidthInTiles: UINT, HeightInTiles: UINT16, DepthInTiles: UINT16, StartTileIndexInOverallResource: UINT, }} STRUCT!{struct D3D11_TILE_SHAPE { WidthInTexels: UINT, HeightInTexels: UINT, DepthInTexels: UINT, }} STRUCT!{struct D3D11_PACKED_MIP_DESC { NumStandardMips: UINT8, NumPackedMips: UINT8, NumTilesForPackedMips: UINT, StartTileIndexInOverallResource: UINT, }} ENUM!{enum D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_FLAG { D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_TILED_RESOURCE = 0x00000001, }} ENUM!{enum D3D11_TILE_COPY_FLAG { D3D11_TILE_COPY_NO_OVERWRITE = 0x00000001, D3D11_TILE_COPY_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x00000002, D3D11_TILE_COPY_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x00000004, }} RIDL!{#[uuid(0x420d5b32, 0xb90c, 0x4da4, 0xbe, 0xf0, 0x35, 0x9f, 0x6a, 0x24, 0xa8, 0x3a)] interface ID3D11DeviceContext2(ID3D11DeviceContext2Vtbl): ID3D11DeviceContext1(ID3D11DeviceContext1Vtbl) { fn UpdateTileMappings( pTiledResource: *mut ID3D11Resource, NumTiledResourceRegions: UINT, pTiledResourceRegionStartCoordinates: *const D3D11_TILED_RESOURCE_COORDINATE, pTiledResourceRegionSizes: *const D3D11_TILE_REGION_SIZE, pTilePool: *mut ID3D11Buffer, NumRanges: UINT, pRangeFlags: *const UINT, pTilePoolStartOffsets: *const UINT, pRangeTileCounts: *const UINT, Flags: UINT, ) -> HRESULT, fn CopyTileMappings( pDestTiledResource: *mut ID3D11Resource, pDestRegionStartCoordinate: *const D3D11_TILED_RESOURCE_COORDINATE, pSourceTiledResource: *mut ID3D11Resource, pSourceRegionStartCoordinate: *const D3D11_TILED_RESOURCE_COORDINATE, pTileRegionSize: *const D3D11_TILE_REGION_SIZE, Flags: UINT, ) -> HRESULT, fn CopyTiles( pTiledResource: *mut ID3D11Resource, pTileRegionStartCoordinate: *const D3D11_TILED_RESOURCE_COORDINATE, pTileRegionSize: *const D3D11_TILE_REGION_SIZE, pBuffer: *mut ID3D11Buffer, BufferStartOffsetInBytes: UINT64, Flags: UINT, ) -> (), fn UpdateTiles( pDestTiledResource: *mut ID3D11Resource, pDestTileRegionStartCoordinate: *const D3D11_TILED_RESOURCE_COORDINATE, pDestTileRegionSize: *const D3D11_TILE_REGION_SIZE, pSourceTileData: *const c_void, Flags: UINT, ) -> (), fn ResizeTilePool( pTilePool: *mut ID3D11Buffer, NewSizeInBytes: UINT64, ) -> HRESULT, fn TiledResourceBarrier( pTiledResourceOrViewAccessBeforeBarrier: *mut ID3D11DeviceChild, pTiledResourceOrViewAccessAfterBarrier: *mut ID3D11DeviceChild, ) -> (), fn IsAnnotationEnabled() -> BOOL, fn SetMarkerInt( pLabel: LPCWSTR, Data: INT, ) -> (), fn BeginEventInt( pLabel: LPCWSTR, Data: INT, ) -> (), fn EndEvent() -> (), }} RIDL!{#[uuid(0x9d06dffa, 0xd1e5, 0x4d07, 0x83, 0xa8, 0x1b, 0xb1, 0x23, 0xf2, 0xf8, 0x41)] interface ID3D11Device2(ID3D11Device2Vtbl): ID3D11Device1(ID3D11Device1Vtbl) { fn GetImmediateContext2( ppImmediateContext: *mut *mut ID3D11DeviceContext2, ) -> (), fn CreateDeferredContext2( ContextFlags: UINT, ppDeferredContext: *mut *mut ID3D11DeviceContext2, ) -> HRESULT, fn GetResourceTiling( pTiledResource: *mut ID3D11Resource, pNumTilesForEntireResource: *mut UINT, pPackedMipDesc: *mut D3D11_PACKED_MIP_DESC, pStandardTileShapeForNonPackedMips: *mut D3D11_TILE_SHAPE, pNumSubresourceTilings: *mut UINT, FirstSubresourceTilingToGet: UINT, pSubresourceTilingsForNonPackedMips: *mut D3D11_SUBRESOURCE_TILING, ) -> (), fn CheckMultisampleQualityLevels1( Format: DXGI_FORMAT, SampleCount: UINT, Flags: UINT, pNumQualityLevels: *mut UINT, ) -> HRESULT, }}