Commit graph

379 commits

Author SHA1 Message Date
alichraghi
348733867c gpu: use refAllDeclsRecursive to find and fix mistakes 2022-07-20 18:55:59 -07:00
dweiller
134c2019b1 gpu: remove Queue.WorkDownCallback lifetime footgun
The previous implementation required the specific Queue struct that
submit() was called on to be valid when the callback is triggered. By
storing a pointer instead, the Queue does not need to be valid, only the
callback itself.
2022-06-24 10:14:19 -07:00
Michal Ziulek
f2ab1eb069 gpu: Queue.WorkDoneStatus fields should be snake_case. 2022-05-29 05:26:12 -07:00
Ali Chraghi
b5d10fb167 gpu: taked slice child type in writeTexture 2022-05-24 14:34:13 -07:00
iddev5
2b994d6b24 gpu: Fix build in 32-bit platforms
Because of the use of u64, this currently fails to build in 32-bit
platforms like wasm. usize is platform dependent but safe enough for
most use cases.
2022-05-21 23:00:38 -07:00
Michal Ziulek
5a2aebb14b
gpu: correct sending of pointer to a local var to a callback function (#271) 2022-05-08 15:04:25 -07:00
Michal Ziulek
0e64b9608c
gpu: 'dynamic_offsets' should be '?[] const u32' everywhere. (#260) 2022-04-30 08:57:10 -07:00
Silver
ea76aa0268 gpu: fix store_op 2022-04-29 13:10:04 -07:00
Stephen Gutekanst
f8e7f96a4a gpu: correct RenderPassDepthStencilAttachment default values
Helps hexops/mach#182

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-04-24 16:07:59 +00:00
Stephen Gutekanst
821117fb26 gpu: correct TextureView.Descriptor default values
Helps hexops/mach#182

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-04-24 16:07:59 +00:00
Stephen Gutekanst
c535e041bd gpu: correct default TextureView.Descriptor.format value
According to kangz `WGPUTextureFormat_Undefined` is the correct default value for
`TextureView.Descriptor.format`. According to the spec, the default should be the
associated _Texture_'s descriptor.format, but it seems Dawn internally handles
this when set to `Undefined` - we will take the same approach.

https://matrix.to/#/!MFogdGJfnZLrDmgkBN:matrix.org/$eVPXZMzewxJMZ_25K5jVV2N6SVriMUovkfXZI62Kq-k?via=matrix.org&via=mozilla.org&via=zinz.dev

Helps hexops/mach#182

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-04-22 16:19:02 -07:00
PiergiorgioZagaria
4e3a58897b
gpu: mirror more WebGPU spec default values (#249)
Helps hexops/mach#182
2022-04-21 18:38:26 -07:00
Michal Ziulek
bd28946397 gpu: Changes needed for latest Dawn (generated-2022-04-18). 2022-04-18 20:45:33 -07:00
PiergiorgioZagaria
169b1e2a42
gpu: correct alignment in pointer casts; handle void Context in all callbacks (#233)
* Fixed ErrorCallback.init() alignment
* Fixed callbacks alignments
* Fixed more of the callback alignment problems
* Added checks for void Context in callback
2022-04-18 11:38:09 -07:00
d3m1gd
7e8cbc78ff
gpu: fix samler typo (#224)
Co-authored-by: d3m1gd <mach+d3m1gd@users.noreply.github.com>
2022-04-17 09:15:52 -07:00
d3m1gd
05853da233
gpu: fix alignment issues with getMappedRange, getConstMappedRange (#223)
fixes alignment issues with getMappedRange, getConstMappedRange

Prior to this change `getMappedRange` and `getConstMappedRange` would not handle alignment to `COPY_BUFFER_ALIGNMENT` for users, and so invocation could result in an unhelpful error message:

```
    thread 254201 panic: attempt to use null value
    .../mach/gpu/src/NativeInstance.zig:1721:42: 0x480747
    in .gpu.NativeInstance.buffer_vtable.getMappedRange (game)
            return @ptrCast([*c]u8, range.?)[0..size];
					 ^
```

To address this:

1. Ensure we always request a 4-byte aligned buffer when `createBuffer` is called.
2. Ensure we always map 4-byte aligned buffers.

Co-authored-by: d3m1gd <mach+d3m1gd@users.noreply.github.com>
2022-04-16 10:16:20 -07:00
Andrew Gutekanst
9e945ce951 gpu: improve optional handling
Helps hexops/mach#182
2022-04-14 10:46:31 -07:00
Michal Ziulek
fe8e0e7c98
gpu: Add default values for some structs (taken from the spec). (#218)
Helps hexops/mach#182
2022-04-12 12:09:48 -07:00
Michal Ziulek
f2ce208aa1
gpu: Added helpers to BindGroup.Entry; make dynamic_offset a const slice (#215)
Helps hexops/mach#
2022-04-11 11:47:02 -07:00
Michal Ziulek
8c8534e609
gpu: Default values for BindGroup.Entry (#214)
simplifies creating BindGroup - all resources are null by default and the user sets only the one needed.

Helps hexops/mach#182
2022-04-10 15:17:20 -07:00
Michal Ziulek
9ed6f6ca8b
Added helper functions to BindGroupLayout.Entry (#213)
* gpu: Added helper functions to BindGroupLayout.Entry
* gpu: Changed default values for *.BindingLayout structures. Added comments for helpers.
2022-04-10 14:28:44 -07:00
Michal Ziulek
a943fbed3e
gpu: make RenderPipeline.fragment optional (#212)
pipeline with vertex stage only is perfectly valid

Helps hexops/mach#182
2022-04-10 10:30:34 -07:00
Michal Ziulek
d0782d24d1 gpu: VertexBufferLayout.attributes field needs to be a pointer to multiple structures. 2022-04-09 12:33:27 -07:00
Silver
6fb3ec6fd8 gpu: make writeBuffer API nicer to use 2022-04-08 11:03:00 -07:00
Silver
5ecb980b5f gpu: fix signature of CommandEncoder.writeBuffer 2022-04-08 11:03:00 -07:00
Silver
614322edc7 gpu: convert Texture.Usage to packed struct 2022-04-08 11:03:00 -07:00
Silver
c62b5ba52f gpu: replace &slice[0] with slice.ptr
This avoids UB if the slice is empty
2022-04-08 11:03:00 -07:00
Silver
f4c8a1908d gpu: fix BindGroup.Entry so that optional things are optional 2022-04-08 11:03:00 -07:00
Silver
35b38dfa96 gpu: fix typo in writeBuffer and writeTexture 2022-04-08 11:03:00 -07:00
Silver
47cd84f8ff gpu: use packed structs to wrap WebGPU's bitfield enums 2022-04-08 11:03:00 -07:00
Silver
232d0dc5ad gpu: rename BlendFactor.oneMinusSrcAlpha to match Zig naming style 2022-04-08 11:03:00 -07:00
Stephen Gutekanst
1f076da7bf gpu: add gpu.NativeInstance.fromWGPUAdapter
For when you have a native adapter and need a wrapped one.

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-31 16:51:18 +00:00
Stephen Gutekanst
5c7691c4ba gpu: fix issue in getting adapter/device limits
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
79d27b82be gpu: enable void callback contexts
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
1717c684de gpu: expose [Error/Logging]Callback
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
991c88d851 gpu: implement Queue.writeTexture
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
67a0f60a68 gpu: fix writeBuffer data lengths
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
eacee682ca gpu: implement Queue.writeBuffer
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
0aad5812b8 gpu: implement RenderPassEncoder.Descriptor.timestamp_writes
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
be6e7be247 gpu: remove Dawn-specific TODO
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
cfc9708b37 gpu: update remaining TODOs
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
cc7aa3a49a gpu: remove needless Limits conversion
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
f79c77af99 gpu: make Buffer mapped ranges generic / typed
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
05d1eeb9ee gpu: implement basic Buffer .getConstMappedRange, .getMappedRange
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
1209cb590d gpu: implement CommandEncoder.writeBuffer
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
9f1775aa7c gpu: correct feature storage location
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
653c528441 gpu: implement Device.features, Device.limits
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
667539c255 gpu: implement Adapter.features, Adapter.limits
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
12a0772654 gpu: implement Device.hasFeature
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00
Stephen Gutekanst
37d8113e24 gpu: prepare Device limits/features
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-03-19 00:51:48 -07:00