Commit graph

7 commits

Author SHA1 Message Date
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
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
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
Benjamin Saunders
aa7b429f4f
Support linking Vulkan directly (#457)
* Mark EntryCustom::new_custom as unsafe

Passing a badly-behaved `load` function can invoke undefined behavior.

* Document required feature for Entry

* Support linking Vulkan directly

This is the preferred pattern in most environments when an application
cannot function without Vulkan, as it saves the libloading dependency,
eliminates an error case, and makes the Vulkan dependency visible to
the OS.

* Rename libloading feature to "loaded"

* Link by default

* Guide users towards linking the loader directly

* Remove unnecessary error type

InstanceError::LoadError was never constructed.

* Unify entry types

Simplifies the interface and allows a bunch of code to become
monomorphic.
2021-09-09 22:50:34 +02:00
Marijn Suijten
d6e049f340 Use intradoc-links and explain the various loading methods 2021-06-07 09:54:11 -07:00
Rua
f5e7cfe896
Impl trait functions directly on EntryCustom/Instance/Device (#412)
* Implement EntryV1_x, InstanceV1_x, DeviceV1_x functions directly
2021-04-30 17:13:23 +02:00
msiglreith
a1a42c067a
Add interoperability functions for raw-window-handle (#308)
* Add ash-window as workspace member

* ash-window: fix repository link

* ash-window: Address CI fmt&clippy issues

* ash-window: Try fix SDL2 CI issues

* ash-window: Remove beryllium example
2020-07-04 15:21:39 +02:00