RavEngine
Loading...
Searching...
No Matches
WGCommandBuffer.hpp
1#pragma once
2#include <RGL/CommandBuffer.hpp>
3#include <emscripten/html5_webgpu.h>
4
5namespace RGL{
6 struct CommandQueueWG;
7
9
10 const std::shared_ptr<CommandQueueWG> owningQueue;
11 CommandBufferWG(decltype(owningQueue));
12
13 // ICommandBuffer
14 void Reset() final;
15 void Begin() final;
16 void End() final;
17 void BindRenderPipeline(RGLRenderPipelinePtr) final;
18 void BeginCompute(RGLComputePipelinePtr) final;
19 void EndCompute() final;
20 void DispatchCompute(uint32_t threadsX, uint32_t threadsY, uint32_t threadsZ, uint32_t threadsPerThreadgroupX=1, uint32_t threadsPerThreadgroupY=1, uint32_t threadsPerThreadgroupZ=1) final;
21
22 void BeginRendering(RGLRenderPassPtr) final;
23 void EndRendering() final;
24
25 void BindBuffer(RGLBufferPtr buffer, uint32_t binding, uint32_t offsetIntoBuffer = 0) final;
26 void BindComputeBuffer(RGLBufferPtr buffer, uint32_t binding, uint32_t offsetIntoBuffer = 0) final;
27 void SetVertexBuffer(RGLBufferPtr buffer, const VertexBufferBinding& bindingInfo = {}) final;
28
29 void SetIndexBuffer(RGLBufferPtr buffer) final;
30
31 void SetVertexBytes(const untyped_span data, uint32_t offset) final;
32 void SetFragmentBytes(const untyped_span data, uint32_t offset) final;
33 void SetComputeBytes(const untyped_span data, uint32_t offset) final;
34
35 void SetVertexSampler(RGLSamplerPtr sampler, uint32_t index) final;
36 void SetFragmentSampler(RGLSamplerPtr sampler, uint32_t index) final;
37 void SetComputeSampler(RGLSamplerPtr sampler, uint32_t index) final;
38
39 void SetVertexTexture(const TextureView& texture, uint32_t index) final;
40 void SetFragmentTexture(const TextureView& texture, uint32_t index) final;
41 void SetComputeTexture(const TextureView& texture, uint32_t index) final;
42
43 void CopyTextureToTexture(const TextureCopyConfig& from, const TextureCopyConfig& to) final;
44
45 void Draw(uint32_t nVertices, const DrawInstancedConfig& = {}) final;
46 void DrawIndexed(uint32_t nIndices, const DrawIndexedInstancedConfig& = {}) final;
47
48 void SetViewport(const Viewport&) final;
49 void SetScissor(const Rect&) final;
50
51 void CopyTextureToBuffer(TextureView& sourceTexture, const Rect& sourceRect, size_t offset, RGLBufferPtr desetBuffer) final;
52 void CopyBufferToBuffer(BufferCopyConfig from, BufferCopyConfig to, uint32_t size) final;
53 void CopyBufferToTexture(RGLBufferPtr source, uint32_t size, const TextureDestConfig& dest) final;
54
55 void Commit(const CommitConfig&) final;
56
57 void ExecuteIndirectIndexed(const IndirectConfig&) final;
58 void ExecuteIndirect(const IndirectConfig&) final;
59 void DispatchIndirect(const DispatchIndirectConfig&) final;
60
61 virtual ~CommandBufferWG();
62
63 void BeginRenderDebugMarker(const std::string& label) final;
64 void BeginComputeDebugMarker(const std::string& label) final;
65
66 void EndRenderDebugMarker() final;
67 void EndComputeDebugMarker() final;
68
69 void UseResource(const TextureView& tx) final;
70
71
72 void BlockUntilCompleted() final;
73
74 private:
75 WGPUCommandEncoder currentCommandEncoder;
76 WGPURenderPassEncoder currentRenderPassEncoder;
77 std::vector<WGPUCommandBuffer> commandBuffers;
78 };
79}
Definition Span.hpp:11
Definition CommandBuffer.hpp:18
Definition CommandBuffer.hpp:11
Definition WGCommandBuffer.hpp:8
Definition CommandBuffer.hpp:46
Definition CommandBuffer.hpp:80
Definition CommandBuffer.hpp:153
Definition CommandBuffer.hpp:159
Definition CommandBuffer.hpp:146
Definition CommandBuffer.hpp:99
Definition CommandBuffer.hpp:74
Definition CommandBuffer.hpp:40
Definition Texture.hpp:43
Definition CommandBuffer.hpp:86
Definition CommandBuffer.hpp:31