Commit graph

1068 commits

Author SHA1 Message Date
Marijn Suijten 9cb6d386eb
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 08:11:27 -07:00
Marijn Suijten e51e4158bd
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 09:48:15 -07:00
Marijn Suijten 79f63e1cbc
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:25:05 +02:00
Marijn Suijten ce2ee4812c
extensions/ext: Add VK_EXT_image_compression_control device extension (#621) 2022-07-03 22:09:06 +02:00
Marijn Suijten 400d68fc7d
extensions/khr: Add VK_KHR_ray_tracing_maintenance1 device extension (#620) 2022-07-03 22:00:25 +02:00
Marijn Suijten 94fdc70a4c
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-03 21:54:17 +02:00
Marijn Suijten 71d45e46f7
extensions/khr: Add VK_KHR_device_group (#631) 2022-07-01 22:19:56 +02:00
Marijn Suijten 671f98ce55
generator: Fix clippy::is_digit_ascii_radix (#637) 2022-07-01 13:09:22 -07:00
Marijn Suijten 1459da47bc
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 21:47:29 +02:00
Marijn Suijten a950e14f89
Remove unused version.rs module file from git (#634)
This seems to have been forgotten in #412.
2022-06-05 12:05:21 -07:00
Marijn Suijten 965df80cf2
Inline trivial Entry wrapper methods and impl functions (#633) 2022-06-05 20:58:50 +02:00
Marijn Suijten 85fa5425d9
extensions/khr: Add VK_KHR_device_group_creation (#630) 2022-06-05 12:32:26 +02:00
lilly lizard c6f8da0515
Document crate features in library docs (#627) 2022-05-29 14:40:10 +02:00
Lucas Jenß 6308470479
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-05-27 11:05:15 +02:00
Michael Pollind c4f1c053ea
generator: Upgrade nom to 0.7 where parser macros have been removed (#610) 2022-05-10 22:58:47 +02:00
Marijn Suijten 94e750d66e
extensions/nv: Add VK_NV_coverage_reduction_mode (#617) 2022-05-10 20:35:17 +02:00
Marijn Suijten a672094c97
extensions/ext: Add VK_EXT_sample_locations (#616) 2022-05-10 20:28:14 +02:00
i509VCB e76830bdef
extensions/ext: Add VK_EXT_image_drm_format_modifier (#603) 2022-04-29 14:12:27 +02:00
Marijn Suijten 61ab543d75
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 11:12:51 -07:00
Marijn Suijten b9d5b588fa
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 11:12:06 -07:00
James Farrell e5c4d11b03
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-07 20:47:37 +02:00
Marijn Suijten 2a9a59e75c
Update Vulkan-Headers to 1.3.211 (#608) 2022-04-05 09:49:23 -07:00
Markus Siglreithmaier 3121816488
Remove experimental AMD extensions. (#607)
The extensions haven't being promoted to actual extensions within a long time frame and don't provide any value in its current state.
2022-04-04 12:36:43 +02:00
Marijn Suijten 50a86824da Regenerate against Vulkan-Headers 1.3.210 with generator updates
8dd682b ("Update Vulkan-Headers to 1.3.210 (#605)") wasn't based off of
the most recent master containing generator updates, leading to obvious
changes missing in generated output.
2022-04-01 10:07:01 +02:00
Marijn Suijten b905e16b17 Add changelog entry and bump version-metadata for Vulkan-Headers 1.3.210 2022-04-01 09:54:31 +02:00
Marijn Suijten 8dd682bac0
Update Vulkan-Headers to 1.3.210 (#605) 2022-03-31 21:31:19 -07:00
Benjamin Saunders 362cf83fa8
Inline Default impls and trivial instance/device wrapper methods (#606) 2022-03-29 19:54:38 +02:00
Benjamin Saunders 71bb3d337c
Replace builders with lifetimes/setters directly on Vulkan structs (#602)
* Replace builders with lifetimes/setters directly on Vulkan structs

* Inline setters
2022-03-29 19:15:14 +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
Michael Pollind 40b572ff3a
entry: Allow querying enumerate_instance_extension_properties() by layer name (#574) 2022-02-19 10:30:35 +01:00
Marijn Suijten 955cb28d12
Update Vulkan-Headers to 1.3.206 (#563)
* Update Vulkan-Headers to 1.3.205

* Update Vulkan-Headers to 1.3.206
2022-02-19 10:18:21 +01:00
Marijn Suijten d6cb64de3d
extensions/khr: Drop _khr suffix from get_memory_fd_properties_khr (#580)
This is an erroneous suffix that's already captured in the module path
of this item, and should be omitted everywhere.  This method is the only
offender besides the experimental AMD extensions.

Fixes: 98def0a ("Add `VK_KHR_external_memory_fd` extension support (#270)")
2022-02-19 01:16:43 +01:00
Marijn Suijten b7e40117e9
Release ash 0.35.2 (#584) 2022-02-19 01:13:21 +01:00
Marijn Suijten e18e0243ef
ash: Remove unnecessary trivial_casts and trivial_numeric_casts (#564)
While making the code only marginally harder to read such casts can also
introduce subtle bugs when used incorrectly, and are best omitted
whenever unnecessary: Rust already coerces borrows into raw pointers
when the types on both ends are clear, and even then there remain many
casts that are identical to the source type.

In addition these errors show up when using a local crate reference to
`ash` in a workspace that uses "the `.cargo/config.toml` setup" from
[EmbarkStudios/rust-ecosystem#68] to configure linter warnings
project-wide instead of for all crates in that workspace individually.
In our case aforementioned linter warnings are enabled on top of
Embark's configuration, leading to a lot of these warnings in our build
process.

[EmbarkStudios/rust-ecosystem#68]: https://github.com/EmbarkStudios/rust-ecosystem/pull/68
2022-02-18 16:01:46 -08:00
Marijn Suijten 9df926ab3e
extensions/khr: Add VK_KHR_external_fence_win32 (#582) 2022-02-16 15:23:45 -08:00
Marijn Suijten 4fcd93016e
extensions/khr: Add VK_KHR_external_semaphore_win32 (#581) 2022-02-16 23:13:19 +01:00
Marijn Suijten c5f68eab9d
extensions/khr: Add VK_KHR_external_memory_win32 (#579) 2022-02-16 13:30:54 -08:00
Marijn Suijten b7aff3b432
extensions/ext: Add VK_EXT_extended_dynamic_state2 (#572) 2022-01-29 21:39:48 +01:00