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

Are extensions allowed to rely on type defintions that are not public? #1000

Closed
MaikKlein opened this issue Jul 10, 2019 · 5 comments
Assignees

Comments

@MaikKlein
Copy link

@MaikKlein MaikKlein commented Jul 10, 2019

I am the maintainer of a vulkan wrapper for Rust. I generate everything through vk.xml.

Recently I encountered two definitions which appear to be behind an NDA.

<type requires="ggp_c/vulkan_types.h" name="GgpStreamDescriptor"/>
<type requires="ggp_c/vulkan_types.h" name="GgpFrameToken"/>

Is it intended that type definitions can be behind NDA? Or should they be required to public as well?

@oddhack

This comment has been minimized.

Copy link
Contributor

@oddhack oddhack commented Jul 10, 2019

From Khronos' point of view, we can't require this of a vendor extension, although we'd like to have full definitions for all of them. My (personal, and entirely non-authoritative) understanding is that the GGP Vulkan platform is part of the Stadia cloud gaming project, which I believe is still in a closed beta period.

Assigning to Jesse Hall in the hope of getting an answer from Google, directly.

@critsec

This comment has been minimized.

Copy link
Member

@critsec critsec commented Jul 10, 2019

Correct, GGP is the platform underlying Stadia, and the platform SDK is currently only available under NDA (https://stadia.dev/apply).

Disallowing such type dependencies would force platform-integration extensions for such platforms to use void* or similar instead of the actual platform types, losing type-safety and static analysis benefits. I don't think we have a formal policy about this, but I think it makes sense to only allow such dependencies in platform-gated (platform="ggp" in this case) entities, so they're not included in vulkan_core.h and can be easily excluded or made conditional on target platform for bindings in other languages.

@oddhack

This comment has been minimized.

Copy link
Contributor

@oddhack oddhack commented Jul 11, 2019

Agreed. Also, I hope anyone generating code out of vk.xml is respecting the platform dependencies - nobody without access to the Stadia SDK will be able to compile code using the GGP platform, so it's unclear what the benefit of being able to generate language bindings (or whatever is intended) for the platform is at present.

@MaikKlein does this address the issue? If so, please close this.

@MaikKlein

This comment has been minimized.

Copy link
Author

@MaikKlein MaikKlein commented Jul 11, 2019

If the argument is about type safety, it would already be enough to have type hints for the platform specific dependencies. For example just knowing that GgpFrameToken could be typed to void* would be extremely beneficial. Especially if this would be included in the vk.xml so all the language bindings could be auto generated without any manual maintenance. (Even if this isn't used at all in the vulkan_core.h)

Otherwise right now I'd have to filter everything ggp related from ash, which would be sad for the devs that actually want to use stadia in Rust. They'd have to maintain their own custom fork of ash.

@MaikKlein

This comment has been minimized.

Copy link
Author

@MaikKlein MaikKlein commented Jul 11, 2019

I think it answers my original question and I just have to handle it.

@MaikKlein MaikKlein closed this Jul 11, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.