RavEngine
Loading...
Searching...
No Matches
Types.hpp
1#pragma once
2#include <memory>
3
4#define RGL_NBACKENDS (RGL_MTL_AVAILABLE + RGL_VK_AVAILABLE + RGL_DX12_AVAILABLE)
5#define RGL_SINGLE_BACKEND RGL_NBACKENDS == 1
6
7namespace RGL {
8 struct ISwapchain;
9 struct IRenderPass;
10 struct ISurface;
11 struct IPipelineLayout;
12 struct IRenderPipeline;
13
14 struct RenderPassConfig;
15 struct RenderPipelineDescriptor;
16 struct PipelineLayoutDescriptor;
17 struct IShaderLibrary;
18
19 struct BufferConfig;
20 struct IBuffer;
21 struct IFence;
22 struct ITexture;
23 struct TextureConfig;
24 struct ISampler;
25 struct SamplerConfig;
26 struct IDevice;
27 struct ICommandBuffer;
28 struct ICommandQueue;
29 struct ISwapchain;
30 struct IRenderPass;
31 struct IComputePipeline;
32 struct ICustomTextureView;
33}
34
35#if RGL_SINGLE_BACKEND
36#if RGL_MTL_AVAILABLE
37namespace RGL {
38 struct SwapchainMTL;
39 struct RenderPassMTL;
40 struct SurfaceMTL;
41 struct PipelineLayoutMTL;
42 struct RenderPipelineMTL;
43
44 struct ShaderLibraryMTL;
45
46 struct BufferMTL;
47 struct FenceMTL;
48 struct SemaphoreMTL;
49 struct TextureMTL;
50 struct SamplerMTL;
51 struct DeviceMTL;
52 struct CommandQueueMTL;
53 struct CommandBufferMTL;
54 struct RenderPassMTL;
55 struct ComputePipelineMTL;
56 struct CustomTextureViewMTL;
57}
58
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>;
75
76
77#elif RGL_VK_AVAILABLE
78namespace RGL {
79 struct SwapchainVK;
80 struct RenderPassVk;
81 struct SurfaceVk;
82 struct PipelineLayoutVk;
83 struct RenderPipelineVk;
84
85 struct ShaderLibraryVk;
86
87 struct BufferVk;
88 struct FenceVk;
89 struct SemaphoreVk;
90 struct TextureVk;
91 struct SamplerVk;
92 struct DeviceVk;
93 struct CommandQueueVk;
94 struct CommandBufferVk;
95 struct ComputePipelineVk;
96 struct CustomTextureViewVk;
97}
98
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>;
114
115#elif RGL_DX12_AVAILABLE
116namespace RGL {
117 struct SwapchainD3D12;
118 struct RenderPassD3D12;
119 struct SurfaceD3D12;
120 struct PipelineLayoutD3D12;
121 struct RenderPipelineD3D12;
122
123 struct ShaderLibraryD3D12;
124
125 struct BufferD3D12;
126 struct FenceD3D12;
127 struct SemaphoreD3D12;
128 struct TextureD3D12;
129 struct SamplerD3D12;
130 struct DeviceD3D12;
131 struct CommandQueueD3D12;
132 struct CommandBufferD3D12;
133 struct ComputePipelineD3D12;
134 struct CustomTextureViewD3D12;
135}
136
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>;
153#endif
154
155#else
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>;
172#endif
173