ash
ash copied to clipboard
List of unimplemented extensions
- [x]
VK_KHR_push_descriptor
- [x]
VK_EXT_descriptor_indexing
(does not have any functions) - [x]
VK_KHR_timeline_semaphore
- [x]
VK_AMD_gpa_interface
- [x]
VK_AMD_wave_limits
- [x]
VK_KHR_synchronization2
(#403) - [x]
VK_KHR_maintenance4
(#489) - [x]
VK_KHR_dynamic_rendering
(#488) - [x]
VK_KHR_get_surface_capabilities2
(#530) - [x]
VK_EXT_private_data
(#570) - [x]
VK_KHR_copy_commands2
(#571) - [x]
VK_EXT_extended_dynamic_state2
(#572) - [x]
VK_KHR_external_memory_win32
(#579) - [x]
VK_KHR_external_semaphore_win32
(#581) - [x]
VK_KHR_external_fence_win32
(#582) - [x]
VK_EXT_headless_surface
(#589) - [x]
VK_EXT_image_drm_format_modifier
(#603) - [x]
VK_EXT_sample_locations
(#616) - [x]
VK_NV_coverage_reduction_mode
(#617) - [x]
VK_KHR_ray_tracing_maintenance1
(#620) - [x]
VK_EXT_image_compression_control
(#621) - [x]
VK_EXT_pipeline_properties
(#622) - [x]
VK_KHR_swapchain
for Vulkan 1.1 (#629) - [x]
VK_KHR_device_group_creation
(#630) - [x]
VK_KHR_device_group
(#631) - [x]
VK_EXT_acquire_drm_display
(#668) - [x]
VK_EXT_extended_dynamic_state3
(#671) - [ ]
VK_EXT_graphics_pipeline_library
- [x]
VK_EXT_descriptor_buffer
(#679) - [x]
VK_KHR_performance_query
(#726) - [x]
VK_EXT_shader_object
(#732) - [x]
VK_GOOGLE_display_timing
(#765) - [x]
VK_ANDROID_external_memory_android_hardware_buffer
(#769) - [x]
VK_AMD_buffer_marker
(#772) - [x]
VK_AMD_shader_info
(#773) - [x]
VK_AMDX_shader_enqueue
(#776) - [x]
VK_EXT_host_image_copy
(#779) - [x]
VK_KHR_maintenance5
(#780) - [x]
VK_NV_device_generated_commands_compute
(#781) - [x]
VK_KHR_cooperative_matrix
(#782) - [x]
VK_KHR_sampler_ycbcr_conversion
(#785) - [x]
VK_NV_low_latency2
(#802) - [x]
VK_EXT_hdr_metadata
(#804) - [x]
VK_NV_cuda_kernel_launch
(#805) - [x]
VK_NV_memory_decompression
(#761) - [x]
VK_NV_copy_memory_indirect
(#892) - [x]
VK_KHR_dynamic_rendering_local_read
(#888) - [x]
VK_KHR_line_rasterization
(#889) - [x]
VK_KHR_calibrated_timestamps
(#890) - [x]
VK_KHR_maintenance6
(+VK_KHR_push_descriptor
+VK_EXT_descriptor_buffer
) (#891)
If an extensions that you need is not exposed in ash
leave a comment, and I will add it to the list.
If you would like to implement some extensions but you don't how, have a look at the currently exposed extensions. Otherwise don't hesitate to ask, help is always appreciated.
Would it make sense to also add some 'hidden' extensions (ie VK_AMD_gpa_interface
or VK_AMD_wave_limits
), which are not really specified at this point?
@msiglreith I am fine with experimental extensions. They would have to live inside the extension itself because vk.rs is generated.
I think we should create a new module extensions::experimental::amd::Foo
. Semver is then ignored for those extensions.
Sounds good! I will try to collect all the necessary information to define the API as I want to play a bit with the gpa_interface
extension
I've been working on the VK_NV_ray_tracing support now, and likely also VK_EXT_descriptor_indexing
@MaikKlein There's a useful new extension I'd love to see: VK_KHR_timeline_semaphore
(I know you know about this already, just posting for the record).
For MoltenVK use on Mac/iOS, the following extension is quite important:
https://github.com/KhronosGroup/MoltenVK/blob/4e0abab7dbf16b2d64a7e54a43e07327bd40e1d5/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
It's unofficial but rather essential since it allows querying for some quirks that are not exposed through the Vulkan API features, such as the inability to combine layered rendering with MSAA.
Khronos released VK_KHR_synchronization2 extension recently to simplify the interface and improve usability of these API.
VK_KHR_dynamic_rendering
please. :)
@K0bin The raw API can be found in https://github.com/MaikKlein/ash/pull/477 (we should merge that ASAP), safe wrapper is in the works.
Great to hear you are already on it.
Theres already support for VK_KHR_external_memory_fd
, can we get VK_KHR_external_memory_win32
/ VK_KHR_external_semaphore_win32
/ VK_KHR_win32_keyed_mutex
?
@chyyran #579 #581. VK_KHR_win32_keyed_mutex
doesn't have any methods and as such doesn't need a manual extension implementation, perhaps you're looking for VK_KHR_external_fence_win32
to complement VK_KHR_external_fence_fd
?
#582 for VK_KHR_external_fence_win32
:)
Thanks, this will be really useful.
I'll make a release with all these soon, when the Vulkan 1.3 addition is in. Just needs some minor trivial review (the new function wrappers were already approved as extensions, I merely copy-pasted them).
I would be very interested in VK_NV_framebuffer_mixed_samples
, VK_NV_coverage_reduction_mode
and VK_EXT_sample_locations
to play around with some new anti-aliasing techniques :D
@coffeenotfound Fortunately VK_NV_framebuffer_mixed_samples
doesn't have any functions hence doesn't need any additional support in ash, the extra structs/constants are already available. The other two extensions provide trivial functions that are easy to add.
Hello! The post-vulkan1.0 functions in the SwapchainKHR extension are loaded into KhrSwapchainFn but don't have an interface through the extensions::khr::Swapchain extension struct.
If it is just a matter of writing by hand functions in the Swapchain structure, I could do it and PR that. I'm just not sure if there's anything related to the autogen to change as well.
@QuartzIsCheap Thanks for bringing this to our attention: these extensions are now available in #629. I'll also see about providing a wrapper for VK_KHR_device_group
which also makes these functions available.
VK_KHR_external_memory_capabilities is missing.
VK_EXT_acquire_drm_display is missing.
VK_EXT_extended_dynamic_state3 would be nice to have! Sascha Willems example of usage
@wrightwriter Definitely ~, and with this extension promoted to 1.3 we already have the implementation for most of those functions, making a helper fairly straightforward to copy-paste together :grimacing:~
EDIT: Whoops! It was only VK_EXT_extended_dynamic_state
and VK_EXT_extended_dynamic_state2
, VK_EXT_extended_dynamic_state3
was only introduced ~2 weeks ago in Vulkan 1.3.320
and hasn't even made it to ash "proper": https://github.com/ash-rs/ash/pull/667. Apologies for the confusion!
Ohhh okay. Btw would be really useful to have VK_EXT_graphics_pipeline_library. Article on how it was used at Valve
Note that the main application of that extension is for porting legacy code. Projects that aren't structured around legacy GL/DX patterns don't have the problems it solves, as discussed in the article. People developing on Rust are unlikely to be porting legacy code.
Well, I'm making a creative coding API and this makes my life easier :) Edit: actually, after looking at it in more detail, i'm doubting it would be that useful to have.
vk::PhysicalDeviceShaderAtomicFloatFeaturesEXT
exists, but the actual extension name i think is missing - VK_EXT_shader_atomic_float
@wrightwriter it's right here?
https://github.com/ash-rs/ash/blob/29b935b1c176d6d53696beeaf09b7735ab4af5e7/ash/src/vk/extensions.rs#L14690-L14693
oh thanks, i thought the names are under extensions::***::Extension::name() 👍 It's mentioned in the readme
VK_KHR_performance_query
seems to be partially implemented, probably just needs the wrapper.