Commit graph

109 commits

Author SHA1 Message Date
BeastLe9enD 75089f487f
extensions/nv: Add VK_NV_memory_decompression (#761) 2023-06-21 22:14:38 +02:00
Marijn Suijten eb1712944e
Update Vulkan-Headers to 1.3.254 (#760)
* Update Vulkan-Headers to 1.3.252

* Update Vulkan-Headers to 1.3.253

* Update Vulkan-Headers to 1.3.254

* vk/platform_types: Add `_screen_buffer` type for QNX
2023-06-16 17:05:11 +02:00
Marijn Suijten 9985b2ca69
Rename vk::Instance-returning function from device() to instance() (#759) 2023-05-29 13:11:55 -07:00
Marijn Suijten d588de01aa
changelog: Import from and synchronize with 0.37.3 release 2023-05-29 21:25:48 +02:00
Marijn Suijten 5287371195
Update Vulkan-Headers to 1.3.251 (#741)
* Update Vulkan-Headers to 1.3.247

* Update Vulkan-Headers to 1.3.248

* Update Vulkan-Headers to 1.3.249

* Update Vulkan-Headers to 1.3.250

* Update Vulkan-Headers to 1.3.251
2023-05-29 11:04:51 +02:00
Marijn Suijten bdafbb4646
entry: Mark all extern "C" function-pointer calls unsafe
We don't mark any of the extern calls to Vulkan function-pointers safe
except for a few `Entry` functions.  Their safety contract was easy to
validate, but now that we exposed a constructor function to let the user
provide function pointers in the form of `Entry::from_parts_1_1()` it is
no longer safe to assume that we are calling the function that adheres
to the contract specified in the Vulkan reference.

Because we don't rigorously do this validation and safe-marking anywhere
else either, mark these function calls as `unsafe`.

Related discussion chain: https://github.com/ash-rs/ash/pull/748#discussion_r1186794284
2023-05-28 16:32:22 -07:00
antonino maniscalco 53c395b6b6
Allow building Entry/Instance/Device from handle+fns (#748)
* ash/device: Allow building device from handle+fns

Adds a constructor to build a device from a handle + functions.
Helps with interoperability with other vulkan wrappers

* ash/instance: Allow building instance from handle+fns

Adds a constructor to build an instance from a handle + functions.
Helps with interoperability with other vulkan wrappers

* ash/entry: Allow building entry from handle+fns

Adds a constructor to build an entry from a handle + functions.
Helps with interoperability with other vulkan wrappers

* changelog: Document #748 addition of `from_parts` constructors
2023-05-07 21:44:34 +02:00
i509VCB fca01159ab
Add Handle::is_null() (#694) 2023-05-06 21:25:42 +02:00
Kanashimia ad70ad7c60
extensions/ext: Make get_calibrated_timestamps() return single value for max_deviation (#738)
Per spec `max_deviation` is a single value, not an array.
2023-05-06 12:25:05 -07:00
Marijn Suijten aa8f600aa8
Generate generic builder setters for fields taking an objecttype (#724)
Generate templated builder setters for fields taking an `objecttype`

We already do this for hand-written extension functions but can now also
implement it for setters since `vk_parse` fields are available within
the builder generator code: when a field refers to another field for
setting its `objecttype`, that `VkObjectType` field setter is omitted
and instead assigned when the object is set, based on a type generic
that implements the `Handle` trait instead of an untyped `u64`.
2023-05-06 20:39:57 +02:00
Marijn Suijten f840977b72
extensions/ext: Add VK_EXT_pipeline_properties device extension (#622)
* extensions/ext: Add VK_EXT_pipeline_properties device extension

* Generate traits and impls for all `validstructs` on command parameters
2023-05-06 20:30:46 +02:00
Marijn Suijten cf1c92e664
Drop load() functions from empty Fn structs (#752)
These functions don't contribute anything and should be removed to clean
up the `features` and `extensions` files, while now also not showing in
the documentation anymore.  The structs remain in place for associated
constants but are replaced with true unit-like structs (no curly
brackets anymore), and unneeded `unsafe impl Send/Sync` are removed as
well.

As these `load()` functions have been removed from the empty
feature-levels on `Entry` and `Device` as well, rather than
instantiating the unit structs and returning those the fields and
`fp_vX_X()` getters have been removed entirely.
2023-05-06 20:22:32 +02:00
Marijn Suijten 8b1151350e
Define Display as c_void instead of *mut c_void to match Xlib (#751)
Xlib defines `Display` as follows:

    typedef struct _XDisplay Display;

And then always references this type as a pointer to it, e.g. `Display
*`.  The same happens in `ash`, where `Display` is only ever referenced
as a raw pointer via `*mut Display`, so making `Display` itself a type
alias to `*mut c_void` is wrong and confusing.  Switch it back to a
`c_void` to match the forward-declared (but otherwise undefined) `struct
_XDisplay`.
2023-05-06 20:21:48 +02:00
Marijn Suijten d783af0f33
extensions/khr/device_group_creation: Take borrow of Entry in new() (#753)
Looks like #630 typo'd the argument for `DeviceGroupCreation::new()` by
unnecessarily requiring a move (`Clone`) of `Entry` just to call
`get_instance_proc_addr()` on it.  Replace this with a borrow to match
all other extensions.
2023-05-06 10:29:28 -07:00
Marijn Suijten 1374996499
extensions/khr: Take the remaining p_next-containing structs as &mut (#744)
* extensions/khr: Take the remaining `p_next`-containing structs as `&mut`

Version 2 of `get_physical_device_surface_capabilities` and the matching
`vk::SurfaceCapabilitiesKHR` struct exist solely to provide an `sType`
and `pNext` field to allow extending the original query with additional
data via extension structs.  However, this API when introduced in #530
only returns the `default()`-initialized struct making it just as
constrained as `get_physical_device_surface_capabilities()`.  Solve this
by taking `vk::SurfaceCapabilities2KHR` as `&mut` just like any similar
API.

And just like this, do the same for the remaining:
- `AccelerationStructure::get_acceleration_structure_build_sizes()`
- `ExternalMemoryFd::get_memory_fd_properties()`
- `ExternalMemoryWin32::get_memory_win32_handle_properties()`

In case these structs get extended somewhere down the line, which the
Vulkan API allows for.

* extensions/khr/acceleration_structure: Use `mem::zeroed()` in place of `vk::AccelerationStructureCompatibilityKHR::default()`
2023-05-03 20:47:01 +02:00
Marijn Suijten dca1a004c1
changelog: Document #747 attachment_count() addition 2023-05-02 10:47:08 +02:00
Vinh Truong 88e46b43a4
ash/device: Add missing Device::get_device_queue2() wrapper (#736)
ash/device: Add missing Device::get_device_queue2() wrapper
2023-04-08 21:58:47 +02:00
Marijn Suijten 77e614d776
extensions/ext: Add VK_EXT_shader_object device extension (#732)
* extensions/ext: Add VK_EXT_shader_object device extension

* extensions/ext/shader_object: Copy remaining fn impls from `extended_dynamic_state*`
2023-04-03 10:39:06 +02:00
Marijn Suijten 7ac0027852
Update Vulkan-Headers to 1.3.246 (#723)
* Update Vulkan-Headers to 1.3.245

* Upgrade `bindgen` to `0.64`

* Update Vulkan-Headers to 1.3.246
2023-04-03 10:18:26 +02:00
Marijn Suijten 74f68f26a2
extensions/khr: Add VK_KHR_performance_query (#726) 2023-04-03 10:05:24 +02:00
Marijn Suijten f98cab47dd
extensions: Remove get_properties() helper from extension wrappers (#728)
This helper function isn't consistently implemented across most
extension wrappers, and promotes bad Vulkan patterns by not making it
obvious to the caller that `get_physical_device_properties2()` can and
should be used to fill multiple properties structs at once.
2023-03-30 11:12:36 +02:00
Marijn Suijten a9fbc7147b
Update Vulkan-Headers to 1.3.244 (#697)
* Update Vulkan-Headers to 1.3.239

* Update Vulkan-Headers to 1.3.240

* Upgrade to `bindgen 0.63` and `vk-parse 0.9`

Updates cause no semantic changes in usage nor generated output.

* generator: Support new `deprecated` attribute

* Update Vulkan-Headers to 1.3.241

* generator: Emit `#[deprecated]` annotation for type members (struct fields)

* Update Vulkan-Headers to 1.3.242

* Update Vulkan-Headers to 1.3.243

* Update Vulkan-Headers to 1.3.244
2023-03-21 07:19:17 +01:00
Marijn Suijten 7a1686014e
Replace const fn name() with associated NAME constants (#715)
`CStr::from_bytes_with_nul_unchecked` is `const`-stable since Rust 1.59
which is already required for `ash` so it is high time to finally turn
these inlined `name()` functions into associated constants (which is a
breaking change in itself that cannot be backported).
2023-03-09 23:53:04 +01:00
Marijn Suijten 7b3df8477d
changelog: Document removal of query_count parameter from get_query_pool_results() (#710)
Commit c66db26 ("device: Replace `query_count` parameter in
`get_query_pool_results` with `data.len()` (#644)") removed this
parameter in favour of using `data.len()` to make it more obvious to use
an appropriate element type that matches the kind of request (see also
 #639) so that the stride is filled in correctly, but it was not
mentioned in the changelog yet.
2023-02-24 22:33:24 +01:00
Marijn Suijten 9e71ab9e34
Bump MSRV to 1.60 to accomodate for winit 0.28/objc requirement (#709)
These dependencies fail to resolve on older Rust/cargo versions before
even complaining about them being a too-high MSRV.
2023-02-24 21:51:07 +01:00
Marijn Suijten 7f6954300b
changelog: Import from and synchronize with 0.37.2 release 2023-01-11 11:40:11 +01:00
Teodor Tanasoaia 043c00c404
extensions/khr/draw_indirect_count: Use the right function pointer for non-indexed draw call (#695) 2023-01-11 11:27:26 +01:00
Marijn Suijten 720eb81048
Update Vulkan-Headers to 1.3.238 (#688)
* Update Vulkan-Headers to 1.3.236

* Update Vulkan-Headers to 1.3.237

* Update Vulkan-Headers to 1.3.238
2022-12-19 19:42:05 +01:00
Marijn Suijten 6bd8276861
changelog: Document removal of "disabled" extension code (#689) 2022-12-12 10:36:06 -08:00
Marijn Suijten 69c56eaa03
changelog: Import from and synchronize with 0.37.1 release 2022-11-23 23:26:20 +01:00
Marijn Suijten 358ba06a54
extensions/ext: Add VK_EXT_descriptor_buffer (#679) 2022-11-22 23:35:10 +01:00
Marijn Suijten 8756155817
extensions/ext: Add VK_EXT_extended_dynamic_state3 (#671) 2022-11-22 23:28:31 +01:00
Marijn Suijten ba37cf3fc2
Update Vulkan-Headers to 1.3.235 (#667)
* Update Vulkan-Headers to 1.3.229

* Update Vulkan-Headers to 1.3.230

* Update Vulkan-Headers to 1.3.231

* Update Vulkan-Headers to 1.3.232

* Update Vulkan-Headers to 1.3.233

* Update Vulkan-Headers to 1.3.235

* README: Document experimental Vulkan Video bindings being semver-exempt
2022-11-22 23:13:09 +01:00
AidoP a4a85318c8
extensions/ext: Add VK_EXT_acquire_drm_display (#668)
Co-authored-by: Aidan Prangnell <aidop@trifuse.xyz>
2022-10-11 17:33:31 +02:00
BeastLe9enD b0a1338532
extensions/ext: Add VK_EXT_mesh_shader (#657) 2022-09-26 00:31:28 +02:00
Marijn Suijten ffd16854c4 extensions/ext: Remove misnamed, deprecated debug_utils_set_object_name() and debug_utils_set_object_tag() entirely
See also #660/#661.
2022-09-24 11:07:35 +02:00
BeastLe9enD f0e636a16d
extensions/ext: Rename debug_utils_set_object_name to set_debug_utils_object_name and debug_utils_set_object_tag to set_debug_utils_object_tag for consistency and deprecate old ones (#661) 2022-09-24 11:01:22 +02:00
David Koloski 5f4b1bbf07
extensions/khr/ray_tracing_pipeline: Set length of capture-replay shader handle buffer after filling (#658) 2022-09-22 00:57:45 +02:00
Marijn Suijten 02a60bd9cb
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-19 22:01:25 +02:00
Marijn Suijten 13fef40d48
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-19 12:39:54 +02:00
Marijn Suijten b093e67515
Release ash-window 0.11.0 2022-07-29 22:29:18 +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 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 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
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