Commit graph

817 commits

Author SHA1 Message Date
Marijn Suijten 84624fddd8
ray_tracing_pipeline: Pass SBT regions as reference instead of slice (#350)
The API for vkCmdTraceRaysKHR mandates a single non-null pointer per SBT
region to a VkStridedDeviceAddressRegionKHR. While providing more than
one such region isn't harmful, passing a slice of length 0 will cause
reads in uninitialized memory and undefined behaviour.

Converting these parameters from slices to references rids the
unnecessary confusion and prevents zero regions from being passed.
2020-12-29 12:09:46 +01:00
Michael Tang 1661b37cd2
Add missing doc link for AccelerationStructure::get_device_acceleration_structure_compatibility (#347) 2020-12-20 20:30:43 +01:00
Marijn Suijten 05747b25aa
Update Vulkan-Headers to 1.2.162 with stable ray-tracing spec (#341)
* Update Vulkan-Headers subproject to 1.2.162 (ray tracing)

* Generate against vk.xml 1.2.162

* generator: Shim IDirectFB and IDirectFBSurface to c_void

* generator: Edgecase for name-clash in p_geometries and pp_geometries

* extensions: Migrate acceleration structure to separate extension

* extensions: Migrate RT safe wrapper functions to ray_tracing_pipeline

* Add high level wrapper for currently-empty RayQuery extension

* vk: definition: Turn host/device AS handle into type safe union

Co-authored-by: Marijn Suijten <marijn@traverseresearch.nl>

Co-authored-by: Darius Bouma <darius1@live.nl>
2020-12-13 18:30:42 +01:00
Marijn Suijten bfa0309c97
Preliminary cleanup pass (#339)
* Fix clippy::manual_strip

* Fix clippy::comparison_to_empty

* Fix clippy::needless_lifetimes

* generator: Drop unnecessary edgecase for charptr array in builder

* generator: Make array type handling more linear

* prelude: Provide Result -> VkResult<()> conversion

* Add #[must_use] to Result type

* Fix all unchecked vk::Result cases

* generator: Fix typos

* generator: Assert char ptrs have `"null-terminated"` len attribute

* prelude: Provide result_with_success helper for Result -> VKresult

* Cleanup match{success} blocks with SSR

    {let $p = $f; match $q { vk::Result::SUCCESS => Ok($r), _ => Err($z), }} ==>> {$f.result_with_success($r)}

* Simplify matching on Result::SUCCESS

Using the following regex replacement:

    let err_code =\s*(.*\((\n|[^;])*?\));\s*match err_code \{\s*vk::Result::SUCCESS => Ok\((.*)\),\s*_ => Err\(err_code\),\s*\}

    $1.result_with_success($3)

* Simplify intermediate error return

    let err_code =\s*(.*\((\n|[^;])*?\));\s*if err_code != vk::Result::SUCCESS \{\s*return Err\(err_code\);\s*\}

    $1.result()?;

* Simplify error checking with .result()? and .result_with_success()

* generator: Ignore empty basetype in typedef (forward declaration)

ANativeWindow and AHardwareBuffer were [recently changed] to the
basetype category, but without an actual basetype, consequently failing
the Ident constructor with an empty name.

Since these types are already dealt with in platform_types, and there
doesn't seem to be anything sensical to define them to right now, just
ignore these cases.

[recently changed]: 0c5351f5e9 (diff-0ff049f722e55de41ee15b2c91ef380fL179-R180)

* Suggestion: Allocate data in get_ray_tracing_shader_group_handles

* generator: Update nom to 6.0

* generator: Generalize C expression conversion to TokenStream

* generator: Simplify ReferenceType::to_tokens with quote!

* generator: Refactor to not parse our own stringified token stream

* generator: Deal with pointers to static-sized arrays

* generator: Apply static-sized array pointer to size containing `*`

* generator: setter: Interpret all references as ptr, not just p_/pp_

* generator: quote::* is already imported

* generator: Replace manual fn to_tokens with quote::ToTokens trait impl

* generator: Return str reference from constant_name

* generator: Replace unused to_type_tokens with name_to_tokens

The reference argument was always None; replace it with a direct call to
name_to_tokens.

* generator: setters: Use safe mutable references instead of raw ptrs
2020-12-12 20:56:43 +01:00
Philippe Renon 29cab9e9b4
remove erroneous assert in get_query_pool_results (#335)
the stride can be bigger than a u64
for example when querying more than one pipeline statistic
2020-12-07 23:31:06 +01:00
Maik Klein 683a065ed6
Add gpu-alloactor to the readme 2020-11-11 14:40:21 +01:00
Steve Wooster cb2d94c3c7 Only scan memory_type_count memory types in examples
The example code originally checked all 32 memory types even if the
instance returned fewer memory types.
2020-10-29 12:17:08 -07:00
Maik Klein 648c4a5019
Use best guess for ggp extension types (#333) 2020-10-25 22:22:21 +01:00
Steve Wooster 61476184e0
Simplify example memory selection (#329)
According to specs for Device Memory (section 10.2), memory types are
topologically sorted by their property flags so the two-pass memory
type selection is unnecessary.

Co-authored-by: Steve Wooster <s.f.m.wooster@gmail.com>
2020-10-19 12:11:57 +02:00
Steve Wooster ef8b5490c5 Appease clippy by using matches!() where appropriate 2020-10-17 00:47:39 -07:00
Steve Wooster 5d5fc57746 Simplify example surface format selection
According to specs for vkGetPhysicalDeviceSurfaceFormatsKHR(), at least
one surface format must be returned, and returned formats must not be
VK_FORMAT_UNDEFINED.
2020-10-14 16:58:55 -07:00
Sebastian Aaltonen 64d1705730
Optimized example fences. Waited immediately. Now waits before reuse (next frame) (#327)
* Optimized example fences. Waited immediately. Now waits before reuse (next frame).

* rust fmt + clippy warning silenced

* Add comments for record_submit_commandbuffer

Co-authored-by: Sebastian Aaltonen <sebastian.aaltonen@unity3d.com>
Co-authored-by: Maik Klein <maikklein@googlemail.com>
2020-10-03 00:08:42 +02:00
Marijn Suijten 6f488cd3db
Expose header version and extension spec version constants (#322)
* Generate constants for value defines

* Expose versioning constants containing macros

* Expose extension SPEC_VERSION constant
2020-09-10 20:46:42 +02:00
Adrien Bennadji df504f8121 Update example to use ash-window 2020-09-04 14:05:16 -07:00
Marijn Suijten 00c7eea860 ash-winow: Fix clippy::single-match 2020-09-02 17:08:20 -07:00
Marijn Suijten 5cb696beb0 tests: Fix clippy::single-component-path-imports 2020-09-02 17:08:20 -07:00
Marijn Suijten 8a46286005 CI: Test/check/lint all targets in all workspaces 2020-09-02 17:08:20 -07:00
Marijn Suijten 2ae160cfc4 generator: Switch #[macro_use] to use and exclude nom::dbg
This avoids an obnoxious error when attemting to use `dbg!()` while
debugging the generator.

Unfortunately there seems to be no way to import * except `dbg`, or
shadow `dbg` (using eg. `use nom::{dbg as _nom_dbg, *};`).
2020-09-02 17:08:20 -07:00
RustyNixieTube b9ac0c3892
Fix syntax highlighting on crates.io
Co-authored-by: RustyNixieTube <RustyNixieTube@users.noreply.github.com>
2020-08-14 13:40:06 -07:00
MarijnS95 c6d5d66142
entry_libloading: Provide Vulkan library loader from custom path (#319)
It is in some cases necessary to load a specific Vulkan dll/so with a
different name and/or from a different location.

Instead of copying this function to a downstream project (and making the
LoadingError constructor public to retain the same interface), split
Entry::new() such that downstream projects can easily specify and use an
alternate Vulkan implementation.
2020-08-03 11:19:42 +02:00
Apoorva Joshi 31bd928c4b
Deprecate the DebugMarker and DebugReport extension modules (#317)
* Deprecate the DebugMarker and DebugReport extension modules

* Allow deprecated modules only in mod.rs, to suppress clippy warning

Co-authored-by: Apoorva Joshi <apoorva.ramesh.joshi@gmail.com>
2020-07-24 16:21:40 +02:00
zedrian b6d9a40b0b
Added VK_KHR_pipeline_executable_properties extension support. (#313)
* Added `VK_KHR_pipeline_executable_properties` extension support.

* Unused import removed.

* Cargo-fmt requirements satisfied.

* Specification requirements satisfied.

* Cargo-fmt requirements satisfied.

* Recommended fixes applied.
2020-07-20 21:48:53 +02:00
Maik Klein 9aae30ecc2 Add version to ash 2020-07-14 16:54:40 +02:00
Maik Klein 99d81ca90a Bump ash-window to 0.5.0 2020-07-14 16:48:28 +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
zedrian ac4d046d4b
Added VK_EXT_tooling_info extension support (#310)
* Added `VK_EXT_tooling_info` extension support.

* Formatting applied.

* cargo-clippy suggestions satisfied.

* cargo-clippy suggestions satisfied.
2020-07-02 12:10:05 +02:00
Maik Klein 8d7dfee763 Release 0.31.0 2020-05-10 21:14:01 +02:00
Steven Le Rouzic ce1d3a1195
Make libloading an optional dependency (#296)
* Make libloading an optional dependency

* Move all libloading stuff to a specific module
2020-05-10 13:55:19 +02:00
Maik Klein 4d6bb3949d
Fix clippy lints for 1.43 (#298) 2020-05-10 13:42:07 +02:00
Martin Krošlák e378a85c78 Update vk-parse to 0.5.0 2020-05-08 10:45:14 -07:00
Friz64 37a701ad3f
Move lib creation out of EntryCustom::new_custom (#292)
* Update libloading to `0.6.1`

* Update Error type

* Make `LoadingError` a newtype

* Move lib creation out of `new_custom`
2020-05-07 18:14:24 +02:00
Brian Merchant 93238e093b Use DebugUtils instead of DebugReport in example. 2020-04-29 12:20:54 -07:00
Friz64 3eeb78f214 Initialize MemoryRequirements with Default 2020-04-21 11:36:23 -07:00
Friz64 da5de66ba4
Switch to VK_LAYER_KHRONOS_validation (#290) 2020-04-19 19:12:43 +02:00
aloucks bd6515ced8
Split vk.rs into multiple files (#286)
* Allow the generator to be run from project root dir

* Split vk.rs into multiple files

* Breakup and remove generated vk/prelude.rs

Generator changes:

- No longer convert current dir to a string when checking if the
  path ends with 'generator'
- Pass the 'ash/src' dir instead of the 'vk.rs' path

Generated and generated output changes:

- The majority of prelude.rs has been moved to macros.rs
- The pointer chain and Handle are now included in vk.rs
- Platform types has been moved to its own file.
2020-04-19 19:12:17 +02:00
msiglreith bb720dd726
Add metal surface extension (#288) 2020-04-15 22:35:48 +02:00
TheEdward162 a5e5e375b1 add const qualifier to as_raw and from_raw fns on enums 2020-04-11 11:39:22 -07:00
Gabriel Dube 1f7dd9114d
Implement VK_KHR_draw_indirect_count 2020-04-11 12:19:22 +02:00
Maik Klein e575b233e5
Remove incorrect device params (#284)
* Remove incorrect device params

* Fmt
2020-04-11 12:18:31 +02:00
Maik Klein a480c57152
typo 2020-03-24 12:22:14 +01:00
Aaron Loucks 3c62d50ea0 Link to the individual man page instead of vkspec.html 2020-03-22 20:10:32 -07:00
Maik Klein c45112b5c8 Bump version to 0.30.0 2020-03-22 20:28:03 +01:00
Maik Klein 80f03ef00a Add changelog for 0.30.0 2020-03-22 20:27:37 +01:00
Maik Klein bcff1b7868
Remove tokei from the readme 2020-03-22 16:12:18 +01:00
zedrian e84c1c4e2d
Add VK_KHR_timeline_semaphore extension support (#276)
* TimelineSemaphore struct added presenting `VK_KHR_timeline_semaphore` extension.

* Unused import removed.

* Empty newline added.

* TimelineSemaphore extension object now provides functions for work with timeline semaphores.

* Function pointers removed from TimelineSemaphore as no longer needed.
*_khr postfix removed from TimelineSemaphore functions to follow the same code style as in other extensions.

* Tiny code reformatting to fit Rustfmt requirements.

* Another attempt to fit Rustfmt requirements.
2020-03-22 16:06:56 +01:00
Jasper Bekkers 6bdc403330
[WIP] Khr Ray Tracing (#278)
* Fix incorrect generation of commands with aliases

* Use alias name instead of the actual cmd name

* Generate vulkan ray-tracing bindings

* Add ray-tracing khr

* High level ray tracing support

* Re-enable nv ray tracing extension (this will break the build)

* Generate aliases for extension enums

* Add missing alias because the parser doesn't provide alias information here

* Fix 'unreachable pattern' warnings

* Fix clippy warning

Co-authored-by: Maik Klein <maikklein@googlemail.com>
2020-03-22 16:05:30 +01:00
Maik Klein af6acb93e5
Fix incorrect generation of commands with aliases (#279)
* Fix incorrect generation of commands with aliases

* Use alias name instead of the actual cmd name
2020-03-22 13:56:01 +01:00
Maik Klein c32f0dd739 Clippy lints for 1.42 2020-03-15 00:55:26 +01:00
Maik Klein de05ff6702
Switch to libloading (#275) 2020-03-15 00:48:24 +01:00
aloucks 25628402f9
Adjust doc link rendering (#273) 2020-03-15 00:47:58 +01:00