4#define RGL_NBACKENDS (RGL_MTL_AVAILABLE + RGL_VK_AVAILABLE + RGL_DX12_AVAILABLE)
5#define RGL_SINGLE_BACKEND RGL_NBACKENDS == 1
11 struct IPipelineLayout;
12 struct IRenderPipeline;
14 struct RenderPassConfig;
15 struct RenderPipelineDescriptor;
16 struct PipelineLayoutDescriptor;
17 struct IShaderLibrary;
27 struct ICommandBuffer;
31 struct IComputePipeline;
32 struct ICustomTextureView;
41 struct PipelineLayoutMTL;
42 struct RenderPipelineMTL;
44 struct ShaderLibraryMTL;
52 struct CommandQueueMTL;
53 struct CommandBufferMTL;
55 struct ComputePipelineMTL;
56 struct CustomTextureViewMTL;
59using RGLDevicePtr = std::shared_ptr<RGL::DeviceMTL>;
60using RGLSwapchainPtr = std::shared_ptr<RGL::SwapchainMTL>;
61using RGLRenderPassPtr = std::shared_ptr<RGL::RenderPassMTL>;
62using RGLSurfacePtr = std::shared_ptr<RGL::SurfaceMTL>;
63using RGLPipelineLayoutPtr = std::shared_ptr<RGL::PipelineLayoutMTL>;
64using RGLRenderPipelinePtr = std::shared_ptr<RGL::RenderPipelineMTL>;
65using RGLShaderLibraryPtr = std::shared_ptr<RGL::ShaderLibraryMTL>;
66using RGLBufferPtr = std::shared_ptr<RGL::BufferMTL>;
67using RGLFencePtr = std::shared_ptr<RGL::FenceMTL>;
68using RGLTexturePtr = std::shared_ptr<RGL::TextureMTL>;
69using RGLSamplerPtr = std::shared_ptr<RGL::SamplerMTL>;
70using RGLCommandQueuePtr = std::shared_ptr<RGL::CommandQueueMTL>;
71using RGLCommandBufferPtr = std::shared_ptr<RGL::CommandBufferMTL>;
72using RGLRenderPassPtr = std::shared_ptr<RGL::RenderPassMTL>;
73using RGLComputePipelinePtr = std::shared_ptr<RGL::ComputePipelineMTL>;
74using RGLCustomTextureViewPtr = std::shared_ptr<RGL::CustomTextureViewMTL>;
82 struct PipelineLayoutVk;
83 struct RenderPipelineVk;
85 struct ShaderLibraryVk;
93 struct CommandQueueVk;
94 struct CommandBufferVk;
95 struct ComputePipelineVk;
96 struct CustomTextureViewVk;
99using RGLDevicePtr = std::shared_ptr<RGL::DeviceVk>;
100using RGLSwapchainPtr = std::shared_ptr<RGL::SwapchainVK>;
101using RGLRenderPassPtr = std::shared_ptr<RGL::RenderPassVk>;
102using RGLSurfacePtr = std::shared_ptr<RGL::SurfaceVk>;
103using RGLPipelineLayoutPtr = std::shared_ptr<RGL::PipelineLayoutVk>;
104using RGLRenderPipelinePtr = std::shared_ptr<RGL::RenderPipelineVk>;
105using RGLShaderLibraryPtr = std::shared_ptr<RGL::ShaderLibraryVk>;
106using RGLBufferPtr = std::shared_ptr<RGL::BufferVk>;
107using RGLFencePtr = std::shared_ptr<RGL::FenceVk>;
108using RGLTexturePtr = std::shared_ptr<RGL::TextureVk>;
109using RGLSamplerPtr = std::shared_ptr<RGL::SamplerVk>;
110using RGLCommandQueuePtr = std::shared_ptr<RGL::CommandQueueVk>;
111using RGLCommandBufferPtr = std::shared_ptr<RGL::CommandBufferVk>;
112using RGLComputePipelinePtr = std::shared_ptr<RGL::ComputePipelineVk>;
113using RGLCustomTextureViewPtr = std::shared_ptr<RGL::CustomTextureViewVk>;
115#elif RGL_DX12_AVAILABLE
117 struct SwapchainD3D12;
118 struct RenderPassD3D12;
120 struct PipelineLayoutD3D12;
121 struct RenderPipelineD3D12;
123 struct ShaderLibraryD3D12;
127 struct SemaphoreD3D12;
131 struct CommandQueueD3D12;
132 struct CommandBufferD3D12;
133 struct ComputePipelineD3D12;
134 struct CustomTextureViewD3D12;
137using RGLDevicePtr = std::shared_ptr<RGL::DeviceD3D12>;
138using RGLSwapchainPtr = std::shared_ptr<RGL::SwapchainD3D12>;
139using RGLRenderPassPtr = std::shared_ptr<RGL::RenderPassD3D12>;
140using RGLSurfacePtr = std::shared_ptr<RGL::SurfaceD3D12>;
141using RGLPipelineLayoutPtr = std::shared_ptr<RGL::PipelineLayoutD3D12>;
142using RGLRenderPipelinePtr = std::shared_ptr<RGL::RenderPipelineD3D12>;
143using RGLShaderLibraryPtr = std::shared_ptr<RGL::ShaderLibraryD3D12>;
144using RGLBufferPtr = std::shared_ptr<RGL::BufferD3D12>;
145using RGLFencePtr = std::shared_ptr<RGL::FenceD3D12>;
146using RGLTexturePtr = std::shared_ptr<RGL::TextureD3D12>;
147using RGLSamplerPtr = std::shared_ptr<RGL::SamplerD3D12>;
148using RGLCommandQueuePtr = std::shared_ptr<RGL::CommandQueueD3D12>;
149using RGLCommandBufferPtr = std::shared_ptr<RGL::CommandBufferD3D12>;
150using RGLRenderPassPtr = std::shared_ptr<RGL::RenderPassD3D12>;
151using RGLComputePipelinePtr = std::shared_ptr<RGL::ComputePipelineD3D12>;
152using RGLCustomTextureViewPtr = std::shared_ptr<RGL::CustomTextureViewD3D12>;
156 using RGLDevicePtr = std::shared_ptr<RGL::IDevice>;
157 using RGLRenderPassPtr = std::shared_ptr<RGL::IRenderPass>;
158 using RGLSurfacePtr = std::shared_ptr<RGL::ISurface>;
159 using RGLPipelineLayoutPtr = std::shared_ptr<RGL::IPipelineLayout>;
160 using RGLRenderPipelinePtr = std::shared_ptr<RGL::IRenderPipeline>;
161 using RGLShaderLibraryPtr = std::shared_ptr<RGL::IShaderLibrary>;
162 using RGLBufferPtr = std::shared_ptr<RGL::IBuffer>;
163 using RGLFencePtr = std::shared_ptr<RGL::IFence>;
164 using RGLTexturePtr = std::shared_ptr<RGL::ITexture>;
165 using RGLCustomTextureViewPtr = std::shared_ptr<RGL::ICustomTextureView>;
166 using RGLSamplerPtr = std::shared_ptr<RGL::ISampler>;
167 using RGLCommandQueuePtr = std::shared_ptr<RGL::ICommandQueue>;
168 using RGLCommandBufferPtr = std::shared_ptr<RGL::ICommandBuffer>;
169 using RGLSwapchainPtr = std::shared_ptr<RGL::ISwapchain>;
170 using RGLRenderPassPtr = std::shared_ptr<RGL::IRenderPass>;
171 using RGLComputePipelinePtr = std::shared_ptr<RGL::IComputePipeline>;