From 77819d8d04469bb3fa30a8d4713a7dd808762ddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Wed, 6 Sep 2023 18:32:31 +0300 Subject: [PATCH] include: Add the ID3D12ShaderCacheSession interface. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Storsjö --- include/vkd3d_d3d12.idl | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/include/vkd3d_d3d12.idl b/include/vkd3d_d3d12.idl index ab57cb3b..0d55c7dd 100644 --- a/include/vkd3d_d3d12.idl +++ b/include/vkd3d_d3d12.idl @@ -4413,6 +4413,57 @@ interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3 void DispatchRays(const D3D12_DISPATCH_RAYS_DESC *desc); } +typedef enum D3D12_SHADER_CACHE_MODE +{ + D3D12_SHADER_CACHE_MODE_MEMORY = 0x0, + D3D12_SHADER_CACHE_MODE_DISK = 0x1, +} D3D12_SHADER_CACHE_MODE; + +typedef enum D3D12_SHADER_CACHE_FLAGS +{ + D3D12_SHADER_CACHE_FLAG_NONE = 0x0, + D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1, + D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2, +} D3D12_SHADER_CACHE_FLAGS; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_CACHE_FLAGS);") + +typedef struct D3D12_SHADER_CACHE_SESSION_DESC +{ + GUID Identifier; + D3D12_SHADER_CACHE_MODE Mode; + D3D12_SHADER_CACHE_FLAGS Flags; + + UINT MaximumInMemoryCacheSizeBytes; + UINT MaximumInMemoryCacheEntries; + + UINT MaximumValueFileSizeBytes; + + UINT64 Version; +} D3D12_SHADER_CACHE_SESSION_DESC; + +[ + uuid(28e2495d-0f64-4ae4-a6ec-129255dc49a8), + object, + local, + pointer_default(unique) +] +interface ID3D12ShaderCacheSession : ID3D12DeviceChild +{ + HRESULT FindValue( + const void *key, + UINT key_size, + void *value, + UINT *value_size); + HRESULT StoreValue( + const void *key, + UINT key_size, + const void *value, + UINT value_size); + + void SetDeleteOnDestroy(); + D3D12_SHADER_CACHE_SESSION_DESC GetDesc(); +} + typedef HRESULT (__stdcall *PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)( const void *data, SIZE_T data_size, REFIID iid, void **deserializer);