yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f65d756bf
master
1// vk-pipeline-state.h 2#pragma once 3 4#include "vk-base.h" 5 6namespace gfx 7{ 8 9using namespace Slang ; 10 11namespace vk 12{ 13 14class PipelineStateImpl :public PipelineStateBase 15{ 16public : 17PipelineStateImpl (DeviceImpl * device ); 18 ~PipelineStateImpl (); 19 20// Turns `m_device` into a strong reference. 21// This method should be called before returning the pipeline state object to 22// external users (i.e. via an `IPipelineState` pointer). 23void establishStrongDeviceReference (); 24 25virtual void comFree ()override ; 26 27void init ( const GraphicsPipelineStateDesc & inDesc); 28void init ( const ComputePipelineStateDesc & inDesc); 29void init ( const RayTracingPipelineStateDesc & inDesc); 30 31Result createVKGraphicsPipelineState (); 32 33Result createVKComputePipelineState (); 34 35virtual Result ensureAPIPipelineStateCreated () override; 36 37virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle ( InteropHandle * outHandle) override; 38 39BreakableReference < DeviceImpl > m_device; 40 41VkPipeline m_pipeline = VK_NULL_HANDLE ; 42}; 43 44class RayTracingPipelineStateImpl : public PipelineStateImpl 45{ 46public : 47Dictionary < String, Index > shaderGroupNameToIndex; 48Int shaderGroupCount; 49 50RayTracingPipelineStateImpl (DeviceImpl * device); 51 52uint32_t findEntryPointIndexByName ( 53const Dictionary < String, Index >& entryPointNameToIndex, 54const char * name); 55 56Result createVKRayTracingPipelineState (); 57 58virtual Result ensureAPIPipelineStateCreated () override ; 59 60virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle ( InteropHandle * outHandle) override; 61}; 62 63} // namespace vk 64} // namespace gfx