yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f65d756bf
master
1// d3d12-texture.cpp 2#include "d3d12-texture.h" 3 4namespace gfx 5{ 6namespace d3d12 7{ 8 9using namespace Slang ; 10 11TextureResourceImpl ::TextureResourceImpl (const Desc & desc ) 12 :Parent (desc ),m_defaultState (D3DUtil ::getResourceState (desc .defaultState )) 13{ 14} 15 16TextureResourceImpl ::~TextureResourceImpl () 17{ 18if (sharedHandle .handleValue != 0 ) 19 { 20CloseHandle ((HANDLE )sharedHandle .handleValue ); 21 } 22} 23 24Result TextureResourceImpl ::getNativeResourceHandle (InteropHandle * outHandle ) 25{ 26outHandle -> handleValue = (uint64_t )m_resource .getResource (); 27outHandle -> api = InteropHandleAPI ::D3D12 ; 28return SLANG_OK ; 29} 30 31Result TextureResourceImpl ::getSharedHandle (InteropHandle * outHandle ) 32{ 33#if !SLANG_WINDOWS_FAMILY 34return SLANG_E_NOT_IMPLEMENTED ; 35#else 36// Check if a shared handle already exists for this resource. 37if (sharedHandle .handleValue != 0 ) 38 { 39* outHandle = sharedHandle ; 40return SLANG_OK ; 41 } 42 43// If a shared handle doesn't exist, create one and store it. 44ComPtr < ID3D12Device > pDevice ; 45auto pResource = m_resource .getResource (); 46pResource -> GetDevice (IID_PPV_ARGS (pDevice .writeRef ())); 47SLANG_RETURN_ON_FAIL (pDevice -> CreateSharedHandle ( 48pResource , 49NULL , 50GENERIC_ALL , 51nullptr , 52 (HANDLE * )& outHandle -> handleValue )); 53outHandle -> api = InteropHandleAPI ::D3D12 ; 54return SLANG_OK ; 55#endif 56} 57 58Result TextureResourceImpl ::setDebugName (const char * name ) 59{ 60Parent ::setDebugName (name ); 61m_resource .setDebugName (name ); 62return SLANG_OK ; 63} 64 65}// namespace d3d12 66}// namespace gfx