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

Vulkan 1.1 spec unclear about VkPhysicalDeviceVulkan11Properties #1437

Closed
kusma opened this issue Jan 22, 2021 · 5 comments
Closed

Vulkan 1.1 spec unclear about VkPhysicalDeviceVulkan11Properties #1437

kusma opened this issue Jan 22, 2021 · 5 comments

Comments

@kusma
Copy link
Contributor

kusma commented Jan 22, 2021

The Vulkan 1.2 spec says the following about VkPhysicalDeviceVulkan11Features

// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceVulkan11Features {
[...]

That seems strange, as this seems to be intended to declare Vulkan 1.1 features. There's other mentions of the spec in the VK 1.1 spec, though, for instance in the SPIR-V capabilities section, where we can find this:

DrawParameters
VkPhysicalDeviceVulkan11Features::shaderDrawParameters
VK_KHR_shader_draw_parameters

But the features-shaderDrawParameters fragment only talks about VkPhysicalDeviceShaderDrawParametersFeatures, and not VkPhysicalDeviceVulkan11Features...

Here's two possibilities I could imagine that this could mean:

  1. Lacking a proper spec for VkPhysicalDeviceVulkan11Features is a bug in the Vulkan 1.1 spec, and it should be included there as well
  2. All references to VkPhysicalDeviceVulkan11Features in the Vulkan 1.1 spec are a bug in the spec, and the struct was introduced in Vulkan 1.2 to express Vulkan 1.1 features in a uniform way.

So what is it? Is VkPhysicalDeviceVulkan11Features a part of the Vulkan 1.1 spec or not? In either case, it seems there's a spec bug here, because the functionality is referenced to by several names around the spec.

Right now, this is causing some confusing in Zink, where we're unsure if we currently depend on Vulkan 1.1 or Vulkan 1.2 for OpenGL 4.2 support... See this thread for details.

@pdaniell-nv
Copy link

VkPhysicalDeviceVulkan11Features was introduced in Vulkan 1.2 to consolidate a bunch of features that were included into Vulkan 1.1 core. A spec built for Vulkan 1.1 should not mention VkPhysicalDeviceVulkan11Features, if so that's a bug in the spec source.

@oddhack
Copy link
Contributor

oddhack commented Jan 23, 2021

The SPIR-V capabilities tables are automatically generated based on tagging in the XML and I think some of the tagging is for the wrong API version, as in this case. Will take this under advisement. I don't believe there are any other references to this structure in the 1.1-extensions spec.

@sfricke-samsung is this something you could look at, since I think you did all this to begin with? I see stuff in the spirvcapabilities section of the XML looking like

        <enable struct="VkPhysicalDeviceVulkan11Features" feature="variablePointersStorageBuffer" requires="VK_VERSION_1_1,VK_KHR_variable_pointers"/>

and that just looks like a typo in the version requirement.

@kusma
Copy link
Contributor Author

kusma commented Jan 25, 2021

@pdaniell-nv: OK, thanks for the clarification!

@oddhack oddhack assigned oddhack and unassigned sfricke-samsung Jan 25, 2021
@oddhack
Copy link
Contributor

oddhack commented Jan 25, 2021

@sfricke-samsung NM, it looked easy so I took a swing at it. Can discuss on the teleconference today.

@oddhack
Copy link
Contributor

oddhack commented Mar 22, 2021

This should be fixed in the 1.2.173 spec update.

@oddhack oddhack closed this as completed Mar 22, 2021
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

4 participants