Commit graph

1027 commits

Author SHA1 Message Date
Marijn Suijten
359c1c1051
Release ash-window 0.12.0 2022-09-23 19:47:08 +02:00
Marijn Suijten
0a96643e26 ash-window: Upgrade to raw-window-handle 0.5.0 (#645)
* ash-window: Upgrade to raw-window-handle 0.5.0

* Bump `raw-window-metal` to recently-released `0.3`

https://github.com/norse-rs/raw-window-metal/pull/5

* examples: Bump `winit` to `0.27.1` to resolve our MSRV tests

While the examples technically aren't part of our MSRV requirement (it's
nice, but core crate compatibility is much more important), it's
annoying to exempt these especially now that `winit` removed some
unneeded MSRV 1.60/1.61 requirements.

* Take `Raw{Display,Window}Handle` directly instead of through trait
2022-09-23 12:43:45 +02:00
Marijn Suijten
7933bf5709 ash-window: Link to the ash gitter instead of nonexistent ash-window (#659)
It seems there's no gitter channel for `ash-window` (404), and since
everyone is in the `ash` channel already, just use the same one.
2022-09-23 12:41:23 +02:00
David Koloski
cc3d65a486 extensions/khr/ray_tracing_pipeline: Set length of capture-replay shader handle buffer after filling (#658) 2022-09-22 10:51:12 +02:00
Marijn Suijten
6a7303271a Update Vulkan-Headers to 1.3.228 (#655)
* Update Vulkan-Headers to 1.3.220
* Update Vulkan-Headers to 1.3.221
* Update Vulkan-Headers to 1.3.222
* Update Vulkan-Headers to 1.3.223
* Update Vulkan-Headers to 1.3.224
* Update Vulkan-Headers to 1.3.225
* Update Vulkan-Headers to 1.3.226
* Update Vulkan-Headers to 1.3.227
* Update Vulkan-Headers to 1.3.228
2022-09-21 16:10:22 +02:00
Marijn Suijten
21bbc79188 ash: Add const STRUCTURE_TYPE to all Vulkan structures for matching with match_struct! macro (#614)
* ash: Add `const STRUCTURE_TYPE` to all Vulkan structures for matching with `match_struct!` macro

In Vulkan layers extracing a structure based on its `s_type` is a common
operation, but comparing against an enum value and subsequently casting
to the right type is verbose and error-prone.

By generating a `const STRUCTURE_TYPE` with the given value for every
Vulkan structure it becomes possible to implement a macro that abstracts
this logic away in a safer way.

* generator: Reuse `HasStructureType::STRUCTURE_TYPE` in `s_type` initializer
2022-09-21 15:58:21 +02:00
Marijn Suijten
45b2b12bbc Fix new/improved Rust 1.63 clippy lints (#649)
More `clippy::use_self` is found in manual code, and superfluous
transmutes in bindgen output are now also found and disallowed.
2022-09-05 11:33:52 +02:00
Marijn Suijten
dc3cb6e8d8 vk/prelude: Drop upstream-fixed Self:: doc workaround (#648)
The report at https://github.com/rust-lang/rust/issues/93205 was closed
as it has presumably been fixed in
https://github.com/rust-lang/rust/pull/93805 which has long trickled
down into stable releases, and I cannot reproduce the issue on `1.62.1`
anymore (latest stable as of writing) 🎉

This workaround was originally added in #559.
2022-09-05 11:33:41 +02:00
Marijn Suijten
29072411a6
Release ash-window 0.11.0 2022-07-29 22:24:47 +02:00
Marijn Suijten
7315d9914e ash-window: Upgrade to raw-window-handle 0.4.2 (#505)
The match arms are not guarded by `cfg` anymore, allowing us to
compile-test these simple arms on every system whenever our Ash
extension helpers and types are not guarded by `cfg` attributes either.
This applies to every platform except Mac/IOS where the symbols and
external raw-window-metal crate are themselves guarded by cfg's.
2022-07-29 22:20:17 +02:00
Marijn Suijten
9f18e51ae4 ash-window: Upgrade winit example to 0.26 2022-07-29 22:19:59 +02:00
Marijn Suijten
f5e1f93d01 generator: Upgrade bindgen, heck and vk-parse
`heck` got its API slightly renamed, and `bindgen` fixed all code-smell
linter warnings in its output (except naming style, which is inherent).
2022-07-29 17:26:56 +02:00
Marijn Suijten
1ee5a01d4b ash: Add missing Apache-2.0 to Cargo.toml license field
We already ship both license files in the published crate, have both
licenses listed in the `README`, and even `ash-window` already lists
both in `Cargo.toml`.

I found this while experimenting with shields.io badges, as there's a
special link that scrapes the license straight off of crates.io:
https://img.shields.io/crates/l/ash (and many more).  This might've been
nice to use except that it's outdated until we publish the next release,
and doesn't allow a nice link to either `LICENSE-XXX` file that we have
now.
2022-07-28 20:59:34 +02:00
Marijn Suijten
62960ad680 extensions: Inline all trivial functions (#638)
* extensions: Inline simple getter functions

* extensions: Inline all `unsafe fn` helper functions

* instance: Inline "skipped" `read_into_uninitialized_vector()` functions

* enums: Inline `from_raw`/`as_raw` functions
2022-07-07 17:28:10 +02:00
Marijn Suijten
0d4f2ba23a extensions/ext: Add VK_EXT_image_compression_control device extension (#621) 2022-07-06 13:24:48 +02:00
Marijn Suijten
89f3271463 extensions/khr: Add VK_KHR_ray_tracing_maintenance1 device extension (#620) 2022-07-06 13:24:47 +02:00
Marijn Suijten
85b2696a1f Update Vulkan-Headers to 1.3.219 (#619)
* Update Vulkan-Headers to 1.3.212

* Update Vulkan-Headers to 1.3.213

* Update Vulkan-Headers to 1.3.214

* Update Vulkan-Headers to 1.3.215

* Update Vulkan-Headers to 1.3.216

* Update Vulkan-Headers to 1.3.217

* Update Vulkan-Headers to 1.3.218

* Update Vulkan-Headers to 1.3.219

* Changelog: reorder entries chronologically based on PR ID
2022-07-06 13:24:26 +02:00
Marijn Suijten
9c9552b8a4 extensions/khr: Add VK_KHR_device_group (#631) 2022-07-01 22:23:05 +02:00
Marijn Suijten
3fafe975e0 generator: Fix clippy::is_digit_ascii_radix (#637) 2022-07-01 22:22:54 +02:00
Marijn Suijten
06443f8cf9 extensions/khr: Implement additional Swapchain functions since Vulkan 1.1 (#629)
* extensions/khr: Reorder `Swapchain` functions to match `KhrSwapchainFn`

* extensions/khr: Implement additional `Swapchain` functions since Vulkan 1.1

These are also made available by `VK_KHR_device_group` when
`VK_KHR_swapchain` (and for certain functions only the underlying
`VK_KHR_surface` extension) is enabled.
2022-06-05 22:22:38 +02:00
Marijn Suijten
934f167f09 Remove unused version.rs module file from git (#634)
This seems to have been forgotten in #412.
2022-06-05 21:06:24 +02:00
Marijn Suijten
b444d414ec Inline trivial Entry wrapper methods and impl functions (#633) 2022-06-05 20:59:41 +02:00
Marijn Suijten
3624b56391 extensions/khr: Add VK_KHR_device_group_creation (#630) 2022-06-05 15:49:48 +02:00
lilly lizard
8fff0584b3 Document crate features in library docs (#627) 2022-06-05 15:49:36 +02:00
Lucas Jenß
9406685ab9 examples: Fix validation errors on macOS and iOS (#623)
* Error: vkCreateDevice: VK_KHR_portability_subset must be enabled [...]
* Error: Attempting to create a VkDevice from a VkPhysicalDevice which is from a portability driver without the VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR bit in the VkInstanceCreateInfo flags being set and the VK_KHR_portability_enumeration extension enabled.
2022-06-05 15:49:21 +02:00
Benjamin Saunders
a6336a5b7b Inline builder setters 2022-06-05 12:55:04 +02:00
Michael Pollind
28a4868dc3 generator: Upgrade nom to 0.7 where parser macros have been removed (#610) 2022-05-11 11:23:20 +02:00
Marijn Suijten
90179c81dc extensions/nv: Add VK_NV_coverage_reduction_mode (#617) 2022-05-11 11:23:17 +02:00
Marijn Suijten
20b7aff6d9 extensions/ext: Add VK_EXT_sample_locations (#616) 2022-05-11 11:23:14 +02:00
i509VCB
22313c2fe6 extensions/ext: Add VK_EXT_image_drm_format_modifier (#603) 2022-04-29 14:13:45 +02:00
Marijn Suijten
cc0e70e8e4 generator: Use _ as suffix instead of prefix to mask keywords (#613)
`_` as prefix is intended for unused variables and bindings; it should
be used in suffix position when intending to prevent a clash with a
keyword instead.
2022-04-15 23:38:38 +02:00
Marijn Suijten
c62977cf56 ash/entry: Fix trivial_casts lint warning on Android/aarch64 (#612)
On certain platforms including Android and `aarch64` `c_char` is
unsigned, resulting in the same `u8` type as the byte-string here making
the cast redundant.

Just like any other code calling `get_instance_proc_addr`, use
`CStr::from_bytes_with_nul_unchecked` which abstracts away any
pointer-cast.
2022-04-15 23:37:00 +02:00
James Farrell
9d13caad86 Fix instructions for running the examples on a Mac. (#609)
- `$VULKAN_SDK` must now be set, and serves as a base value for the other variables;
- ICD and layers moved from the `etc` to `share` subfolder.
2022-04-08 11:44:38 +02:00
Marijn Suijten
529d20c832 Update Vulkan-Headers to 1.3.211 (#608) 2022-04-08 11:44:10 +02:00
Marijn Suijten
c02e558f6a Add changelog entry and bump version-metadata for Vulkan-Headers 1.3.210 2022-04-01 09:53:34 +02:00
Marijn Suijten
2a452909ae Update Vulkan-Headers to 1.3.210 (#605) 2022-04-01 09:52:06 +02:00
Benjamin Saunders
29cf7c2a4c Inline Default impls and trivial instance/device wrapper methods (#606) 2022-04-01 09:51:09 +02:00
Marijn Suijten
e43e9c0c9b
Set MSRV through rust-version in Cargo.toml and validate in CI (#604)
[#590] introduced an unsuspecting MSRV bump.  While we're pro-ba-bly
fine having these at the benefit of better code (in this case more
appropriate `const` annotations), they should at least be clear to us
when merging through a CI failure (or up-front bump of this version in
the CI script).  At the same time setting [`rust-version` in
`Cargo.toml`] provides a more helpful "requires newer rustc" error
message (since Rust 1.56.0) instead of showing potentially tons of
irrelevant compile errors in this crate to the user.

[#590]: https://github.com/MaikKlein/ash/pull/590
[`rust-version` in `Cargo.toml`]: https://doc.rust-lang.org/cargo/reference/manifest.html?highlight=pack#the-rust-version-field
2022-03-27 14:30:10 -07:00
Marijn Suijten
e537e0ba9d
Release ash 0.37.0 and ash-window 0.10.0 (#600) 2022-03-23 22:04:12 +01:00
Marijn Suijten
8ae0312f03
Update Vulkan-Headers to 1.3.209 (#601) 2022-03-23 21:52:28 +01:00
Marijn Suijten
777977174a
device_diagnostic_checkpoints: Enable passing pNext-initialized structs to get_queue_checkpoint_data (#588)
To match all other functions which accept an array of to-be-initialized
structs with a `pNext` pointer that is possibly initialized by the
caller.
2022-03-23 00:03:34 +01:00
Benjamin Saunders
84cddb7383
Omit wrapper functions on Fp structs (#599)
* Omit wrapper functions on Fp structs

These wrappers contributed thousands of lines of code but offered
insignificant ergonomic benefit as the same functions are also wrapped
at a higher level and, if necessary, wrapper functions can be called
directly.

* Standardize on direct fp table access in wrapper functions
2022-03-22 23:50:18 +01:00
Steve Wooster
1cd810653c
ash-window: Make enumerate_required_extensions return &[*const c_char] (#590)
* Constify generated extension names

* Constify hand-written extension names

* Make ash-window list extensions as &[*const c_char]

This alters enumerate_required_extensions() to return the same type that
is expected by vk::InstanceCreateInfoBuilder::enabled_extension_names(),
allowing simple Vulkan apps to omit the boilerplate of mapping to an
intermediate Vec<*const c_char>.

Co-authored-by: Steve Wooster <s.f.m.wooster@gmail.com>
2022-03-22 23:47:26 +01:00
Marijn Suijten
fde6f92c70
Update Vulkan-Headers to 1.3.207 (#597)
* Update Vulkan-Headers to 1.3.207

* Update Vulkan-Headers to 1.3.208
2022-03-22 23:30:41 +01:00
Zhixing Zhang
79a2ef040b
Fix unused_unsafe warning since Rust 1.61 nightly (#596) 2022-03-15 09:28:23 +01:00
Steve Wooster
3c7615b3bb
Iterator simplification (#565)
* Unnest iterators

This hopefully makes the iterator definitions better resemble paths into
the XML tree.

* Use for-loop instead of .for_each()

* Use elems.contains(x) instead of elems.iter().any(...)

* Shrink commands-related .fold()

Co-authored-by: Steve Wooster <s.f.m.wooster@gmail.com>
2022-02-26 15:03:54 -08:00
Steve Wooster
b16bb4e62c
Appease clippy (#591)
* Simplify .map().flatten().next() and .filter_map().next() to .find_map()

* Avoid unnecessary closures for cheap expressions

* Use character instead of string for replacement pattern

Co-authored-by: Steve Wooster <s.f.m.wooster@gmail.com>
2022-02-26 13:01:28 -08:00
Marijn Suijten
d180a3b655
extensions/ext: Add VK_EXT_headless_surface instance extension 2022-02-23 11:16:00 -08:00
Marijn Suijten
8d7abfb6f1
Release ash 0.36.0 and ash-window 0.9.1 (#585) 2022-02-21 21:46:34 +01:00
Marijn Suijten
157524c869
Add helper wrappers for Vulkan core 1.3 Instance and Device functions (#568)
* ash: Add function loading support for Vulkan 1.3

* ash/instance: Implement wrapper function for Vulkan 1.3 instance

* ash/device: Implement wrapper functions for Vulkan 1.3 device
2022-02-19 10:39:58 +01:00