ash icon indicating copy to clipboard operation
ash copied to clipboard

List of unimplemented extensions

Open MaikKlein opened this issue 5 years ago • 40 comments

  • [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.

MaikKlein avatar Jan 19 '19 08:01 MaikKlein

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 avatar Jan 27 '19 18:01 msiglreith

@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.

MaikKlein avatar Jan 28 '19 19:01 MaikKlein

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

msiglreith avatar Jan 30 '19 20:01 msiglreith

I've been working on the VK_NV_ray_tracing support now, and likely also VK_EXT_descriptor_indexing

gwihlidal avatar Feb 09 '19 23:02 gwihlidal

@MaikKlein There's a useful new extension I'd love to see: VK_KHR_timeline_semaphore

farnoy avatar Nov 04 '19 20:11 farnoy

(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.

hrydgard avatar Nov 24 '20 09:11 hrydgard

Khronos released VK_KHR_synchronization2 extension recently to simplify the interface and improve usability of these API.

pudnax avatar Mar 04 '21 09:03 pudnax

VK_KHR_dynamic_rendering please. :)

K0bin avatar Nov 03 '21 11:11 K0bin

@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.

MarijnS95 avatar Nov 03 '21 11:11 MarijnS95

Great to hear you are already on it.

K0bin avatar Nov 03 '21 11:11 K0bin

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 avatar Feb 07 '22 18:02 chyyran

@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?

MarijnS95 avatar Feb 16 '22 19:02 MarijnS95

#582 for VK_KHR_external_fence_win32 :)

MarijnS95 avatar Feb 16 '22 22:02 MarijnS95

Thanks, this will be really useful.

chyyran avatar Feb 16 '22 22:02 chyyran

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).

MarijnS95 avatar Feb 16 '22 22:02 MarijnS95

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 avatar Apr 28 '22 13:04 coffeenotfound

@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.

MarijnS95 avatar Apr 28 '22 13:04 MarijnS95

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.

ghost avatar Jun 04 '22 08:06 ghost

@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.

MarijnS95 avatar Jun 04 '22 10:06 MarijnS95

VK_KHR_external_memory_capabilities is missing.

i509VCB avatar Aug 30 '22 03:08 i509VCB

VK_EXT_acquire_drm_display is missing.

i509VCB avatar Sep 26 '22 21:09 i509VCB

@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!

MarijnS95 avatar Oct 17 '22 12:10 MarijnS95

Ohhh okay. Btw would be really useful to have VK_EXT_graphics_pipeline_library. Article on how it was used at Valve

wrightwriter avatar Oct 17 '22 19:10 wrightwriter

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.

Ralith avatar Oct 17 '22 19:10 Ralith

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.

wrightwriter avatar Oct 17 '22 20:10 wrightwriter

vk::PhysicalDeviceShaderAtomicFloatFeaturesEXT exists, but the actual extension name i think is missing - VK_EXT_shader_atomic_float

wrightwriter avatar Nov 16 '22 17:11 wrightwriter

@wrightwriter it's right here?

https://github.com/ash-rs/ash/blob/29b935b1c176d6d53696beeaf09b7735ab4af5e7/ash/src/vk/extensions.rs#L14690-L14693

MarijnS95 avatar Nov 16 '22 17:11 MarijnS95

oh thanks, i thought the names are under extensions::***::Extension::name() 👍 It's mentioned in the readme

wrightwriter avatar Nov 16 '22 17:11 wrightwriter

VK_KHR_performance_query seems to be partially implemented, probably just needs the wrapper.

wolfiestyle avatar Mar 24 '23 18:03 wolfiestyle