Files
MapLibreParticleLab/include/mln/webgpu/render_pass.hpp
Bart Louwers 2a8ebc4906 core: rename mbgl directories to mln (#4511)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-08-22 20:50:14 +02:00

53 lines
1.5 KiB
C++

#pragma once
#include <mln/gfx/render_pass.hpp>
#include <memory>
// Forward declare WebGPU types
typedef struct WGPURenderPassEncoderImpl* WGPURenderPassEncoder;
namespace mln {
namespace gfx {
class CommandEncoder;
class UniformBufferArray;
} // namespace gfx
namespace webgpu {
class CommandEncoder;
class RenderPass final : public gfx::RenderPass {
public:
RenderPass(CommandEncoder& commandEncoder, const char* name, const gfx::RenderPassDescriptor& descriptor);
~RenderPass() override;
// Match Metal's interface
CommandEncoder& getCommandEncoder() { return commandEncoder; }
const CommandEncoder& getCommandEncoder() const { return commandEncoder; }
// Get the WebGPU render pass encoder (similar to Metal's getMetalEncoder)
WGPURenderPassEncoder getEncoder() const;
const gfx::RenderPassDescriptor& getDescriptor() const { return descriptor; }
// Set/get global uniform buffers for drawables to access
void setGlobalUniformBuffers(const gfx::UniformBufferArray* buffers);
const gfx::UniformBufferArray* getGlobalUniformBuffers() const;
private:
void pushDebugGroup(const char* name) override;
void popDebugGroup() override;
void addDebugSignpost(const char* name) override;
private:
gfx::RenderPassDescriptor descriptor;
CommandEncoder& commandEncoder;
const gfx::DebugGroup<gfx::CommandEncoder> debugGroup;
// Implementation details
class Impl;
std::unique_ptr<Impl> impl;
};
} // namespace webgpu
} // namespace mln