Stephen Gutekanst
9fae887555
gpu: implement Device.createRenderPipelineAsync
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
c90fb09de1
gpu: implement Device.createComputePipeline
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
38535c7b5f
gpu: implement Device.createComputePipelineAsync
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
3ce0e1258a
gpu: implement ShaderModule.getCompilationInfo
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
77b2210587
gpu: implement Buffer.mapAsync
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
3ffc1ca5d8
gpu: Queue: OnSubmittedWorkDone -> WorkDoneCallback, consistent w/other callbacks
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
356e4102cd
gpu: make requestAdapter callback-based, add waitForAdapter helper
...
Same rationale as 2c3e13ff4b90886d7f03adb3103abc9dee70b407
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
aab99b5474
gpu: make requestDevice callback-based, add waitForDevice helper
...
Previously we were attempting to turn WebGPU async functions, which are
exposed by `webgpu.h` as callbacks, into Zig async functions.
This in practice turns out harder than expected. For example, `Buffer.mapAsync`
/ `wgpuBufferMapAsync` cannot easily be exposed as a Zig async function for a few
reasons:
1. The callback is merely guaranteed to be called once the buffer's content is ready to
be accessed via `wgpuBufferGetMappedRange` - but there is no strict guarantee about
when that is. It could be 1-3 frames later, in theory, I believe.
2. The non-deterministic timing means that one would wish to poll "has the async function
returned?" but this isn't trivial without our own scheduler.
3. Zig has a fair amount of async rework in the future that is coming, and I imagine it
will be one of the later things that is fully supported by the WebAssembly backend
(but I am speculating) - so it seems wise to punt on this until later.
Instead, we are now retaining async functions as callback-based ones, with a helper in
this case to wait for the callback to be invoked. For `wgpuBufferMapAsync` we will just
have the callback approach.
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
34ac711d2f
gpu: implement Buffer.unmap
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
1c5c23f101
gpu: fix Queue.submit commands parameter
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
143567e1c0
gpu: implement CommandEncoder.finish
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
198b642078
gpu: implement RenderPassEncoder.end
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
a5f6483c62
gpu: implement RenderPassEncoder.draw
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
70211c9d38
gpu: implement RenderPassEncoder.setPipeline
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
f5a5c7eaa7
gpu: implement RenderPassColorAttachment
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
510c7de9f2
gpu: implement CommandEncoder.beginRenderPass
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
e0c850fd9c
gpu: allow null descriptor param for Device.createCommandEncoder
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
9c7aa55273
gpu: implement Device.createCommandEncoder
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
ef3eed7afb
gpu: implement SwapChain.present, SwapChain.getCurrentTextureView
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
4e31e015a4
gpu: correctly handle null RenderPipeline.Descriptor transitive values
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
f5e6976937
gpu: make ConstantEntry & ColorTargetState C ABI compatible
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
36afd39945
gpu: correct RenderPipelineDescriptor stack conversions
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
1fafce595a
gpu: partial Device.createRenderPipeline implementation
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
40f92dd9d9
gpu: use PowerPreference
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
9c2fc82fa3
gpu: note that copyTextureForBrowser may be Dawn-specific
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
e9c6dcde21
gpu: remove docs TODOs (everything needs docs)
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
8cb1c9ba4f
gpu: cleanup TODO
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
c045ce7caa
gpu: add constants
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
85041d6f93
gpu: add ImageCopyBuffer; ImageCopyTexture
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
d1bad15add
gpu: add ColorTargetState
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
4aeea00409
gpu: add FragmentState
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
ec300679a0
gpu: add VertexState
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
77810482bd
gpu: add RenderPipeline.Descriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
48a3103bb9
gpu: add RenderPassColorAttachment
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
b505c5aecf
gpu: add RenderPassDepthStencilAttachment
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
58fe1b12f7
gpu: add RenderPassTimestampWrite
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
7eb06f25f6
gpu: add RenderPassEncoder.Descriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
4e6c6bbee8
gpu: add ComputePipeline.Descriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
7fa2bb3754
gpu: add BindGroupLayout.Descriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
13fcf98436
gpu: add Texture.Descriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
628f3d59c2
gpu: add ComputePassTimestampWrite
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
79e80467ca
gpu: add ConstantEntry
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
5a8585faa1
gpu: add ProgrammableStageDescriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
52c22e0ff2
gpu: add ComputePassEncoder.Descriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
9398df0211
gpu: add BindGroup.Descriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
bbd058f23e
gpu: move Texture.ViewDimension -> TextureView.Dimension
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
1c0f5c0b03
gpu: add TextureView.Descriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
ad907bf637
gpu: add Sampler.Descriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
7509404a91
gpu: add RenderBundleEncoder.Descriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
4ae4ef4e14
gpu: add QuerySet.Descriptor
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00