vulkan extension : which are supported by whom?

倾然丶 夕夏残阳落幕 提交于 2021-02-20 11:11:13

问题


There is EXT, KHR or AMD or NV extensions. Maybe there are some others. I know that NV means Nvidia and that it nv extensions are unlikely supported by AMD. But what about khr ones or ext ones? Are they mandatory supported by everyone?


回答1:


There's a website devoted to tracking this information.

Maybe there are some others

There are lots

But what about khr ones or ext ones? Are they mandatory supported by everyone?

KHR extensions are typically things that will be folded into the specification (like how VK_KHR_external_memory became part of the core Vulkan specification in 1.1) or are things that are likely to be supported by a broad range of vendors and hardware, but not necessarily all hardware (like VK_KHR_swapchain).

KHX extensions are basically experimental versions of KHR extensions. They might become a KHR extension or get folded into the spec, but they also might change drastically before they do.

EXT extensions aren't vendor specific, but they're typically targeting some less common use case, or something more experimental. They typically won't ever become part of the specification, and they're the kind of thing you need to check for before relying on, as well as having a plan to fall back on some other mechanism if they're not supported. Sometimes EXT extensions can evolve into KHR extensions.

Vendor specific extensions are basically in the same boat as EXT extensions, but controlled by a specific vendor. They can also evolve to become KHR extensions or core specification. For instance, KHR_external_memory started out as NV_external_memory.

Are they mandatory supported by everyone?

They only thing that's mandatory what the core specification says is mandatory.




回答2:


There are others vendor codes. All the current vendor codes are in the official registry list.

The vendor code marks the (main) vendor maintaining the extension specification. Typically, others are allowed to implement it (though often do not, especially if the extension is too specific). AFAIK the vendor marked extensions have lowest requirements for inclusion in the spec (I think the vendor has practically free hands as long as he does not break anything else).

There may be some experimental\provisional extensions, i.e. NVX, and those marked provisional="true" in the registry. Historically, they are subsequently removed completely from the spec and replaced by a final successor.

EXT is special. It means collaboration of multiple vendors. Many important extensions are here, even e.g. the essential VK_EXT_debug_utils, which interacts with the Validation Layers we all use. In the extension appendix you can see people from Valve\LunarG, Google, AMD, NV, RenderDoc, Epic, and Oxide signed on it.

KHR is also special. It is similar to EXT. And it is as good as Khronos (the specification group) recommendation; it is a "ratified" extension. There may be some harder requirements (I think there need to be three existing implementations). As @Jherico says they have a high chance to become core features in the future versions of Vulkan.

Extensions are by design optional. Only mandatory one is VK_KHR_sampler_mirror_clamp_to_edge, for historical reasons.



来源:https://stackoverflow.com/questions/53798273/vulkan-extension-which-are-supported-by-whom

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!