Add RenderPass creation to RenderDriver::create_swapchain()

This commit is contained in:
2025-04-30 17:21:46 +10:00
parent 771363bbfe
commit 22f9878d38
5 changed files with 72 additions and 21 deletions

View File

@@ -36,16 +36,17 @@ namespace Nova {
[[nodiscard]] virtual SwapchainID create_swapchain(SurfaceID surface) = 0;
virtual void resize_swapchain(SwapchainID swapchain) = 0;
[[nodiscard]] virtual RenderPassID get_swapchain_render_pass(SwapchainID swapchain) const = 0;
virtual void destroy_swapchain(SwapchainID swapchain) = 0;
[[nodiscard]] virtual ShaderID create_shader(const std::span<u8> bytes, ShaderStage stage) = 0;
virtual void destroy_shader(ShaderID shader) = 0;
[[nodiscard]] virtual RenderPassID create_render_pass(RenderPassParams& params) = 0;
virtual void destroy_render_pass(RenderPassID render_pass) = 0;
[[nodiscard]] virtual PipelineID create_pipeline(GraphicsPipelineParams& params) = 0;
[[nodiscard]] virtual PipelineID create_pipeline(ComputePipelineParams& params) = 0;
virtual void destroy_pipeline(PipelineID pipeline) = 0;
[[nodiscard]] virtual RenderPassID create_render_pass() = 0;
virtual void destroy_render_pass(RenderPassID render_pass) = 0;
};
} // namespace Nova

View File

@@ -242,6 +242,7 @@ namespace Nova {
struct VertexAttribute;
struct VertexBinding;
struct RenderPassParams;
struct GraphicsPipelineParams;
struct ComputePipelineParams;

View File

@@ -25,6 +25,8 @@ namespace Nova {
InputRate rate = InputRate::VERTEX;
};
struct RenderPassParams {};
struct GraphicsPipelineParams {
std::vector<ShaderID> shaders;
std::vector<VertexBinding> bindings;
@@ -52,5 +54,6 @@ namespace Nova {
RenderPassID render_pass = nullptr;
u32 subpass = 0;
};
struct ComputePipelineParams {};
} // namespace Nova