Commit Graph

2137 Commits

Author SHA1 Message Date
Wumpf
df2a686c29 Reintroduce clear_texture Metal/Vulkan/DX12 (#1905)
* enable CLEAR_COMMANDS feature for all adapters

* replaced fill_buffer with clear_buffer (minus variable value)

* Improve clear buffer/texture test
and remove unused clear-buffer.ron test

* renamed clear_image to clear_texture

* skeleton for new wgpu-hal clear_texture

* clear_texture implementation for vulkan

* clear_texture now restricts usage

* clear_texture implementation for dx12

* Implemented clear_texture for Metal backend

* Clean up GLES clear_buffer and leave note on how to implement clear_texture in the future

* fix linux compilation & formatting issues

* comment & namespace fixes

* Extent3d has now a simple mipmap calculating function

Fix incorrect use of texture.size in clear_texture for metal/dx12
Fix incorrect mip/layer ranges in clear_texture for metal/dx12
2021-09-06 21:14:40 -04:00
Connor Fitzgerald
938c069608 Properly implement timestamp periods (#1907) 2021-09-04 22:24:15 -04:00
Luca Casonato
d5ba0b439d WIP: add cts_runner and deno_webgpu crate (#1859)
* WIP: add cts_runner and deno_webgpu crate

* add test

* remove Cargo.lock

* review comment

* simplify

* fix bugs

* improve cts_runner to work with crowlKats/webgpu-examples

* fix

* remove build.rs

cts_runner binaries are now not portable anymore.

Also startup will now print a bunch of cargo:rerun-if-changed=. This
will be fixed in deno_core.

* remove d.ts

* add original deno license file
2021-09-03 13:23:35 -04:00
Dzmitry Malyshau
663f64c571 Fix read-write buffer barrier 2021-09-02 16:39:55 -04:00
Dzmitry Malyshau
53d262c8ee More validation of the surface texture lifetime 2021-09-01 16:19:32 -04:00
Christofer Nolander
06316c1bac hal/metal: support Features::NON_FILL_POLYGON_MODE (#1885)
* hal/metal: support Features::NON_FILL_POLYGON_MODE

* Document Metal support for NON_FILL_POLYGON_MODE

* Split Features::NON_FILL_POLYGON_MODE in two

Adds two new features: `LINE_POLYGON_MODE` and `POINT_POLYGON_MODE`.

Allows metal to support `PolygonMode::Line` while not being required to
support `PolygonMode::Point`.

* Formatting

* Rename {LINE,POINT}_POLYGON_MODE to POLYGON_MODE_{LINE,POINT}
2021-08-31 16:20:38 +00:00
Riccardo Zaglia
0a2be6099c Add Texture::as_hal() 2021-08-31 10:30:23 -04:00
Dzmitry Malyshau
42194168e0 Fix implicit storage texture access 2021-08-26 11:36:05 -04:00
Dzmitry Malyshau
590ef1d8cf Switch naga to latest on git (#1858) 2021-08-24 18:20:44 -04:00
Dzmitry Malyshau
43d44c89e1 Bump the vertex buffer sizes by 1 2021-08-24 13:39:57 -04:00
Dzmitry Malyshau
c05b064bc8 Check for query resolve alignment (#1853) 2021-08-23 12:32:18 -04:00
Dávid Kocsis
f34f88538b fixed mip level count check for storage textures 2021-08-23 17:49:20 +02:00
Dzmitry Malyshau
f3c9f412f6 Validate against cube storage textures (#1846) 2021-08-23 02:17:28 -04:00
Wumpf
9e1384dbb0 Memory init tracker refactor (#1839)
* split out init_tracker module
with explicit buffer init tracking types

* Added shortcut methods for checked init action handling
Fixed a few unchecked sites in the process

* fix clippy warnings
2021-08-22 22:46:13 -04:00
Andreas Reich
7f395b39af fix buffer collapse in initialize_buffer_memory
due to previous changes there was  only a no-op buffer collapse
The ranges it tried collapsing on were already guranteed to be merged by the init-trackers drain method. However, accross several init actions there can be opportunity for reducing fill_buffer calls.
2021-08-22 22:26:55 -04:00
adamnemecek
efd52e02af use self 2021-08-20 19:36:06 -07:00
Dzmitry Malyshau
62f26367cd Fix the check for depth+stencil aspect of views 2021-08-20 12:11:57 -04:00
Dávid Kocsis
b0d43f9cca add mapping for more storage formats 2021-08-19 16:03:26 +02:00
Dzmitry Malyshau
9da5c1d3a0 Release v0.10 (#1820)
* Release v0.10

* hal/gles: update glow handles logic
2021-08-18 19:06:21 +00:00
Connor Fitzgerald
80ec65e892 Merge pull request #1814 from kocsis1david/write-texture-data-offset
write_texture data offset
2021-08-18 02:29:15 -04:00
Connor Fitzgerald
c493b63b33 Fix zero sized buffer creation 2021-08-18 01:06:23 -04:00
Dzmitry Malyshau
9b85882ff8 [dx12] implement num_workgroups 2021-08-18 00:14:44 -04:00
Dávid Kocsis
41da55db08 write_texture data offset 2021-08-17 22:16:34 +02:00
Imbris
6ba30cbc0b Run tests in the CI for all workspace members 2021-08-17 13:57:29 -04:00
Dzmitry Malyshau
4dc5546a17 Naga update to 69b70f8 2021-08-16 01:35:19 -04:00
Dzmitry Malyshau
1e7d86b655 Update Naga to 69b70f8 2021-08-13 02:09:43 -04:00
Dzmitry Malyshau
450defb743 Fix panic in surface cleanup 2021-08-13 02:09:43 -04:00
Dzmitry Malyshau
f2a18ee57c Update naga to 1907a92 2021-08-12 23:58:19 -04:00
Connor Fitzgerald
4dc0e265ac Merge pull request #1764 from kvark/submitted-work
Implement onSubmittedWorkDone
2021-08-12 00:06:45 -04:00
Dzmitry Malyshau
4a1ae0d7ec Issue surface texture transitions 2021-08-11 20:58:42 -04:00
Dzmitry Malyshau
dffe1f1793 Return a texture by the surface 2021-08-11 20:58:42 -04:00
Dzmitry Malyshau
f78061bcef Merge swap chain into surface 2021-08-11 20:58:42 -04:00
Connor Fitzgerald
a60d2f6f3b Merge pull request #1774 from ElArtista/gles_storage_limits 2021-08-10 13:09:49 -04:00
Agorgianitis Loukas
8796089636 Gather downlevel flags and require them all at once 2021-08-07 11:17:43 +03:00
Agorgianitis Loukas
5bc42843cf Add downlevel flag for storage buffers in vertex shaders 2021-08-06 21:22:16 +03:00
Joshua Yanovski
bff04c1502 Fix dynamic offset handling for render bundles
I found this while testing a "bundlemark" version of bunnymark.
2021-08-06 10:38:35 -07:00
Zicklag
9310f264f1 Update Naga With New Storage Classes API (#1766) 2021-08-05 13:50:51 -04:00
Lonsdaleiter
64ffdd52ad Added is_surface_supported (#1763) 2021-08-04 14:27:08 +00:00
Dzmitry Malyshau
80cf1ffff9 Implement onSubmittedWorkDone 2021-08-04 01:03:26 -04:00
Mikko Lehtonen
5d9c276c82 Include naga diagnostic in the parse error (#1760)
Wraps the Naga's `ParseError` with `NagaParseError` type, that uses the
Naga's full error formatting for its `Display` impl, including shader
source.
2021-08-03 17:27:34 -04:00
Mikko Lehtonen
78e4cd5dbc Remove AsDisplay trait in error formatting 2021-08-03 11:51:52 -04:00
Mikko Lehtonen
019dca3cfa Error formatting impls closer to errors
This is achieved by making a ErrorFormatter helper that is passed to
fmt_pretty, making the impls a lot simpler.
2021-08-03 11:51:52 -04:00
Mikko Lehtonen
e4cdddc639 Move error formatting to wgpu-core 2021-08-03 11:51:52 -04:00
Zicklag
07cd75a36b Fix New Clippy Lints From Rust 1.54.0
Fixes a number of new lints introduce in the updated clippy that
CI is now using.
2021-07-29 16:29:46 -05:00
Zicklag
fd460fa1e4 Use Bitshift Style for All Bitflag Consts
This makes existing bitflags easier to read and makes it eaiser to add
new flags later.
2021-07-28 11:28:54 -05:00
Dzmitry Malyshau
552a5f138e Rename texture usage names 2021-07-28 00:17:54 -04:00
Dzmitry Malyshau
69f808c54a hal/dx12: support base vertex/instance 2021-07-27 08:59:41 -04:00
Dzmitry Malyshau
405cf57955 hal/dx12: compact register allocation, naga update 2021-07-26 02:01:14 -04:00
bors[bot]
3eb3eed8cf Merge #1609
1609: [Vulkan] Initialize wgpu objects from raw handles r=kvark a=zarik5

**Connections**
This PR is a successor of https://github.com/gfx-rs/gfx/pull/3762

**Description**
The `handle_is_external` flag mechanism was not enough to ensure safety, when for example the Instance is wrapped in `Arc<>` and a library cannot keep track of all its clones. This is the case with the bevy render rewrite. The solution was to let wgpu be in charge of destroying the handles, but it also has to keep a reference to a "drop guard" which is always dropped after the handle is destroyed. For the OpenXR integration, this drop guard will be `xr::Instance`.

For now this is just a proof of concept. Only instance creation is handled, and there is even type error in `wgc::Instance::from_hal()`.

I have a few concerns:
* Is it ok to expose `hal::Instance` from the wgpu crate? Or should the user pass all the parameters so `hal::Instance` can be constructed internally? This second options is more disruptive, since the wgpu-types crate would need to import all platform-specific crates to define the structure/enum to hold the raw handles.
* Without counting the call to create the `hal::Instance`, there are 4 indirection calls to save the raw instance. Can this be optimized in any way?

Do you think it is possible to merge wgpu-hal into wgpu-core? This could help with reducing the distance from the surface level API to the platform specific APIs even more.

**Testing**
Vulkan/Android (Oculus Quest) using [this sample](https://github.com/zarik5/openxrs/blob/wgpu-test/openxr/examples/vulkan.rs).


Co-authored-by: Riccardo Zaglia <riccardo.zaglia5@gmail.com>
2021-07-26 05:03:13 +00:00
Riccardo Zaglia
2657849977 [Vulkan] Initialize wgpu objects from raw handles 2021-07-25 21:51:40 +02:00