yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Jay KwakCheck the available VK extensions before using CoopVec APIs in GFX (#6849)591affaf7

master
8.0 KiB174 linesraw
1// debug-device.h
2#pragma once
3#include "debug-base.h"
4
5namespace gfx
6{
7using namespace Slang;
8
9namespace debug
10{
11
12class DebugDevice : public DebugObject<IDevice>
13{
14public:
15    SlangResult SLANG_MCALL
16    queryInterface(SlangUUID const& uuid, void** outObject) noexcept override;
17    SLANG_COM_OBJECT_IUNKNOWN_ADD_REF;
18    SLANG_COM_OBJECT_IUNKNOWN_RELEASE;
19
20public:
21    DebugDevice();
22    IDevice* getInterface(const Slang::Guid& guid);
23    virtual SLANG_NO_THROW Result SLANG_MCALL
24    getNativeDeviceHandles(InteropHandles* outHandles) override;
25    virtual SLANG_NO_THROW bool SLANG_MCALL hasFeature(const char* feature) override;
26    virtual SLANG_NO_THROW Result SLANG_MCALL
27    getFeatures(const char** outFeatures, Size bufferSize, GfxCount* outFeatureCount) override;
28    virtual SLANG_NO_THROW Result SLANG_MCALL
29    getFormatSupportedResourceStates(Format format, ResourceStateSet* outStates) override;
30
31    virtual SLANG_NO_THROW Result SLANG_MCALL
32    getSlangSession(slang::ISession** outSlangSession) override;
33    virtual SLANG_NO_THROW Result SLANG_MCALL createTransientResourceHeap(
34        const ITransientResourceHeap::Desc& desc,
35        ITransientResourceHeap** outHeap) override;
36    virtual SLANG_NO_THROW Result SLANG_MCALL createTextureResource(
37        const ITextureResource::Desc& desc,
38        const ITextureResource::SubresourceData* initData,
39        ITextureResource** outResource) override;
40    virtual SLANG_NO_THROW Result SLANG_MCALL createTextureFromNativeHandle(
41        InteropHandle handle,
42        const ITextureResource::Desc& srcDesc,
43        ITextureResource** outResource) override;
44    virtual SLANG_NO_THROW Result SLANG_MCALL createTextureFromSharedHandle(
45        InteropHandle handle,
46        const ITextureResource::Desc& srcDesc,
47        const Size size,
48        ITextureResource** outResource) override;
49    virtual SLANG_NO_THROW Result SLANG_MCALL createBufferResource(
50        const IBufferResource::Desc& desc,
51        const void* initData,
52        IBufferResource** outResource) override;
53    virtual SLANG_NO_THROW Result SLANG_MCALL createBufferFromNativeHandle(
54        InteropHandle handle,
55        const IBufferResource::Desc& srcDesc,
56        IBufferResource** outResource) override;
57    virtual SLANG_NO_THROW Result SLANG_MCALL createBufferFromSharedHandle(
58        InteropHandle handle,
59        const IBufferResource::Desc& srcDesc,
60        IBufferResource** outResource) override;
61    virtual SLANG_NO_THROW Result SLANG_MCALL
62    createSamplerState(ISamplerState::Desc const& desc, ISamplerState** outSampler) override;
63    virtual SLANG_NO_THROW Result SLANG_MCALL createTextureView(
64        ITextureResource* texture,
65        IResourceView::Desc const& desc,
66        IResourceView** outView) override;
67    virtual SLANG_NO_THROW Result SLANG_MCALL createBufferView(
68        IBufferResource* buffer,
69        IBufferResource* counterBuffer,
70        IResourceView::Desc const& desc,
71        IResourceView** outView) override;
72    virtual SLANG_NO_THROW Result SLANG_MCALL getAccelerationStructurePrebuildInfo(
73        const IAccelerationStructure::BuildInputs& buildInputs,
74        IAccelerationStructure::PrebuildInfo* outPrebuildInfo) override;
75    virtual SLANG_NO_THROW Result SLANG_MCALL createAccelerationStructure(
76        const IAccelerationStructure::CreateDesc& desc,
77        IAccelerationStructure** outView) override;
78    virtual SLANG_NO_THROW Result SLANG_MCALL createFramebufferLayout(
79        IFramebufferLayout::Desc const& desc,
80        IFramebufferLayout** outFrameBuffer) override;
81    virtual SLANG_NO_THROW Result SLANG_MCALL
82    createFramebuffer(IFramebuffer::Desc const& desc, IFramebuffer** outFrameBuffer) override;
83    virtual SLANG_NO_THROW Result SLANG_MCALL createRenderPassLayout(
84        const IRenderPassLayout::Desc& desc,
85        IRenderPassLayout** outRenderPassLayout) override;
86    virtual SLANG_NO_THROW Result SLANG_MCALL createSwapchain(
87        ISwapchain::Desc const& desc,
88        WindowHandle window,
89        ISwapchain** outSwapchain) override;
90    virtual SLANG_NO_THROW Result SLANG_MCALL
91    createInputLayout(IInputLayout::Desc const& desc, IInputLayout** outLayout) override;
92    virtual SLANG_NO_THROW Result SLANG_MCALL
93    createCommandQueue(const ICommandQueue::Desc& desc, ICommandQueue** outQueue) override;
94    virtual SLANG_NO_THROW Result SLANG_MCALL createShaderObject(
95        slang::TypeReflection* type,
96        ShaderObjectContainerType container,
97        IShaderObject** outObject) override;
98    virtual SLANG_NO_THROW Result SLANG_MCALL createShaderObject2(
99        slang::ISession* session,
100        slang::TypeReflection* type,
101        ShaderObjectContainerType container,
102        IShaderObject** outObject) override;
103    virtual SLANG_NO_THROW Result SLANG_MCALL createMutableShaderObject(
104        slang::TypeReflection* type,
105        ShaderObjectContainerType container,
106        IShaderObject** outObject) override;
107    virtual SLANG_NO_THROW Result SLANG_MCALL createMutableShaderObject2(
108        slang::ISession* session,
109        slang::TypeReflection* type,
110        ShaderObjectContainerType container,
111        IShaderObject** outObject) override;
112    virtual SLANG_NO_THROW Result SLANG_MCALL createShaderObjectFromTypeLayout(
113        slang::TypeLayoutReflection* typeLayout,
114        IShaderObject** outObject) override;
115    virtual SLANG_NO_THROW Result SLANG_MCALL createMutableShaderObjectFromTypeLayout(
116        slang::TypeLayoutReflection* typeLayout,
117        IShaderObject** outObject) override;
118    virtual SLANG_NO_THROW Result SLANG_MCALL
119    createMutableRootShaderObject(IShaderProgram* program, IShaderObject** outObject) override;
120    virtual SLANG_NO_THROW Result SLANG_MCALL createProgram(
121        const IShaderProgram::Desc& desc,
122        IShaderProgram** outProgram,
123        ISlangBlob** outDiagnostics) override;
124    virtual SLANG_NO_THROW Result SLANG_MCALL createProgram2(
125        const IShaderProgram::CreateDesc2& desc,
126        IShaderProgram** outProgram,
127        ISlangBlob** outDiagnostics) override;
128    virtual SLANG_NO_THROW Result SLANG_MCALL createGraphicsPipelineState(
129        const GraphicsPipelineStateDesc& desc,
130        IPipelineState** outState) override;
131    virtual SLANG_NO_THROW Result SLANG_MCALL createComputePipelineState(
132        const ComputePipelineStateDesc& desc,
133        IPipelineState** outState) override;
134    virtual SLANG_NO_THROW Result SLANG_MCALL createRayTracingPipelineState(
135        const RayTracingPipelineStateDesc& desc,
136        IPipelineState** outState) override;
137    virtual SLANG_NO_THROW SlangResult SLANG_MCALL readTextureResource(
138        ITextureResource* resource,
139        ResourceState state,
140        ISlangBlob** outBlob,
141        Size* outRowPitch,
142        Size* outPixelSize) override;
143    virtual SLANG_NO_THROW SlangResult SLANG_MCALL readBufferResource(
144        IBufferResource* buffer,
145        Offset offset,
146        Size size,
147        ISlangBlob** outBlob) override;
148    virtual SLANG_NO_THROW const DeviceInfo& SLANG_MCALL getDeviceInfo() const override;
149    virtual SLANG_NO_THROW Result SLANG_MCALL
150    createQueryPool(const IQueryPool::Desc& desc, IQueryPool** outPool) override;
151    virtual SLANG_NO_THROW Result SLANG_MCALL
152    createFence(const IFence::Desc& desc, IFence** outFence) override;
153    virtual SLANG_NO_THROW Result SLANG_MCALL waitForFences(
154        GfxCount fenceCount,
155        IFence** fences,
156        uint64_t* values,
157        bool waitForAll,
158        uint64_t timeout) override;
159    virtual SLANG_NO_THROW Result SLANG_MCALL getTextureAllocationInfo(
160        const ITextureResource::Desc& desc,
161        size_t* outSize,
162        size_t* outAlignment) override;
163    virtual SLANG_NO_THROW Result SLANG_MCALL getTextureRowAlignment(size_t* outAlignment) override;
164
165    virtual SLANG_NO_THROW Result SLANG_MCALL getCooperativeVectorProperties(
166        CooperativeVectorProperties* properties,
167        uint32_t* propertyCount) override;
168
169    virtual SLANG_NO_THROW Result SLANG_MCALL
170    createShaderTable(const IShaderTable::Desc& desc, IShaderTable** outTable) override;
171};
172
173} // namespace debug
174} // namespace gfx