Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

List of unimplemented extensions #178

Open
52 of 53 tasks
MaikKlein opened this issue Jan 19, 2019 · 41 comments
Open
52 of 53 tasks

List of unimplemented extensions #178

MaikKlein opened this issue Jan 19, 2019 · 41 comments

Comments

@MaikKlein
Copy link
Member

MaikKlein commented Jan 19, 2019

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.

@msiglreith
Copy link
Contributor

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?

@MaikKlein
Copy link
Member Author

MaikKlein commented Jan 28, 2019

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

@msiglreith
Copy link
Contributor

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

@gwihlidal
Copy link
Contributor

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

bors bot added a commit that referenced this issue Feb 15, 2019
186: Ray tracing support r=MaikKlein a=gwihlidal

This PR adds support for VK_NV_ray_tracing! (and initial support for VK_EXT_descriptor_indexing, but more support coming for that).

One piece I'm unsure if you have a more suggested approach is what I added to ext/mod.rs for names (both of those extensions are very commonly used, and also required for ray tracing). Maybe there should be a names.rs or something which can implement a static string function for all names that don't warrant their own extension struct?

I have a local example I've been working on that has been testing against this code, as well as support for descriptor indexing. Originally, I was adding an nv_ray_tracing.rs example alongside triangle and texture, but ray tracing requires some specific extensions and also it doesn't need frame bindings, render states, etc. Additionally, this example only works on NV and with a Turing-class GPU, so I'm unsure if it should co-exist with the basic examples? Because of this, I'm going to first start with a fresh example and just get working to show everything needed - we can chat about merging it in after if desired.

These changes + my upcoming ones should take care of both VK_NV_ray_tracing and VK_EXT_descriptor_indexing from #178

Co-authored-by: Graham Wihlidal <[email protected]>
bors bot added a commit that referenced this issue Feb 25, 2019
184: Experimental AMD extensions r=MaikKlein a=msiglreith

Addresses #178 (comment)

Not fully supports all parts of the APIs, just trying to get some general feedback if this meets the expected structuring.

Co-authored-by: msiglreith <[email protected]>
@farnoy
Copy link
Contributor

farnoy commented Nov 4, 2019

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

@hrydgard
Copy link
Contributor

hrydgard commented Nov 24, 2020

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

@pudnax
Copy link

pudnax commented Mar 4, 2021

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

@K0bin
Copy link

K0bin commented Nov 3, 2021

VK_KHR_dynamic_rendering please. :)

@MarijnS95
Copy link
Collaborator

@K0bin The raw API can be found in #477 (we should merge that ASAP), safe wrapper is in the works.

@K0bin
Copy link

K0bin commented Nov 3, 2021

Great to hear you are already on it.

@chyyran
Copy link

chyyran commented Feb 7, 2022

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?

@MarijnS95
Copy link
Collaborator

@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
Copy link
Collaborator

#582 for VK_KHR_external_fence_win32 :)

@chyyran
Copy link

chyyran commented Feb 16, 2022

Thanks, this will be really useful.

@MarijnS95
Copy link
Collaborator

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

@coffeenotfound
Copy link

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

@MarijnS95
Copy link
Collaborator

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

@ghost
Copy link

ghost commented Jun 4, 2022

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.

@MarijnS95
Copy link
Collaborator

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

@i509VCB
Copy link
Contributor

i509VCB commented Aug 30, 2022

VK_KHR_external_memory_capabilities is missing.

@i509VCB
Copy link
Contributor

i509VCB commented Sep 26, 2022

VK_EXT_acquire_drm_display is missing.

@wrightwriter
Copy link

wrightwriter commented Oct 17, 2022

@MarijnS95
Copy link
Collaborator

MarijnS95 commented Oct 17, 2022

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

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": #667. Apologies for the confusion!

@wrightwriter
Copy link

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

@Ralith
Copy link
Collaborator

Ralith commented Oct 17, 2022

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.

@wrightwriter
Copy link

wrightwriter commented Oct 17, 2022

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
Copy link

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

@MarijnS95
Copy link
Collaborator

MarijnS95 commented Nov 16, 2022

@wrightwriter it's right here?

ash/ash/src/vk/extensions.rs

Lines 14690 to 14693 in 29b935b

#[inline]
pub const fn name() -> &'static ::std::ffi::CStr {
unsafe { ::std::ffi::CStr::from_bytes_with_nul_unchecked(b"VK_EXT_shader_atomic_float\0") }
}

@wrightwriter
Copy link

wrightwriter commented Nov 16, 2022

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

@wolfiestyle
Copy link

wolfiestyle commented Mar 24, 2023

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

@MarijnS95
Copy link
Collaborator

@wolfiestyle added in #726, please test!

@phoekz
Copy link
Contributor

phoekz commented Mar 31, 2023

VK_EXT_shader_object was just released today! NVIDIA beta drivers already support it.

@MarijnS95
Copy link
Collaborator

@phoekz see #723 for at least the low-level bindings, a high-level wrapper could be added later if needed.

@phoekz
Copy link
Contributor

phoekz commented Apr 2, 2023

@phoekz see #723 for at least the low-level bindings, a high-level wrapper could be added later if needed.

I pulled directly from the update branch and got low-level bindings working fine. Are the high-level wrappers generated or written manually?

@MarijnS95
Copy link
Collaborator

@phoekz Nice! The high-level wrapper is written manually, but was very easy this time around since the extension mainly enables existing extended_dynamic_state* functions which could just be copy-pasted. Find the wrapper in #732, which is based on top of #723.

Note that this copy-pasting is not something I'd like to keep doing, so I hope we can come up with some smarter wrapper that encapsulates a set of functions that may be enabled by multiple extensions, instead of duplicating them.

@MarijnS95
Copy link
Collaborator

@wolfiestyle @phoekz both VK_KHR_performance_query and VK_EXT_shader_object have been merged to master and backported to the 0.37-stable branch. I intend to do a 0.37 release soon, after fixing the breakage found in #727.

@phoekz
Copy link
Contributor

phoekz commented Apr 3, 2023

@wolfiestyle @phoekz both VK_KHR_performance_query and VK_EXT_shader_object have been merged to master and backported to the 0.37-stable branch. I intend to do a 0.37 release soon, after fixing the breakage found in #727.

Nice, that was fast :)! Looking forward to the 0.37 release.

@Super-Pizza

This comment has been minimized.

@MarijnS95

This comment has been minimized.

@Super-Pizza

This comment was marked as off-topic.

@kanerogers
Copy link
Contributor

Looks like VK_EXT_metal_objects is currently unimplemented. Happy to help with this if someone wants to steer me in the right direction!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests