Cogs.Core
BindGroupsWebGPU.h
1#pragma once
2
3#include "CommonWebGPU.h"
4#include "../IBindGroups.h"
5#include "../Base/ResourceMap.h"
6
7#include <cstdint>
8#include <string>
9#include <vector>
10
11namespace Cogs
12{
13 class GraphicsDeviceWebGPU;
14
15 enum BindingState {
16 BindingState_Invalid,
17 BindingState_NeedsUpdate,
18 BindingState_Updated,
19 };
20
22 WGPUBindGroupEntry entry;
23 BindingState state = BindingState::BindingState_Invalid;
24 BindGroupEntryDescription description;
25 };
26
28 size_t descHash = 0;
29
30 BindingWebGPU bindings[MaxBindGroupEntries];
31 uint16_t numBindings = 0;
32 WGPUBindGroupLayout layout = nullptr;
33 WGPUBindGroup bindGroup = nullptr;
34 };
35
36
37
38
39
40 struct BindGroupsWebGPU : public IBindGroups {
41 public:
42 static WGPUBindGroupLayout createBindGroupLayout(GraphicsDeviceWebGPU* device, const BindGroupDescription& desc);
43 void initialize(GraphicsDeviceWebGPU* graphicsDevice);
44
45 virtual BindGroupHandle createBindGroup(const BindGroupDescription* desc) override;
46 virtual BindGroupConstantBufferBindingHandle getConstantBufferBinding(BindGroupHandle handle, const StringView& name) override;
47 virtual BindGroupTextureBindingHandle getTextureBinding(BindGroupHandle handle, const StringView& name) override;
48 virtual BindGroupSamplerStateBindingHandle getSamplerBinding(BindGroupHandle handle, const StringView& name) override;
49
50 virtual bool isCompatable(BindGroupHandle handle, const BindGroupDescription &desc) override;
51
52 virtual bool setTexture(BindGroupHandle handle, BindGroupTextureBindingHandle bindig, const TextureHandle textureHandle) override;
53 virtual bool setTexture(BindGroupHandle handle, BindGroupTextureBindingHandle bindig, const TextureViewHandle textureViewHandle) override;
54 virtual bool setSamplerState(BindGroupHandle handle, BindGroupSamplerStateBindingHandle bindig, SamplerStateHandle samplerStateHandle) override;
55 virtual bool setConstantBuffer(BindGroupHandle handle, BindGroupConstantBufferBindingHandle bindig, BufferHandle bufferHandle, const uint32_t offset = 0, const uint32_t size = ~0u) override;
57 bool isCompatable(BindGroupHandle handle, size_t descHash);
58 virtual void releaseBindGroup(BindGroupHandle handle) override;
59 WGPUBindGroup getNativeBindGroup(BindGroupHandle handle);
60
61 GraphicsDeviceWebGPU* graphicsDevice = nullptr;
63
64 };
65
66
67
68
69
70
71}
Provides a weakly referenced view over the contents of a string.
Definition: StringView.h:50
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
Provides bind group management functionality.
Definition: IBindGroups.h:117