Могут ли расширения в Vulkan добавлять новые функции?

https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#fundamentals-versionnum.

Различия в любом из номеров версий Vulkan указывают на изменение API каким-либо образом, причем каждая часть номера версии указывает на различный объем изменений.

Разница в номерах версий исправлений указывает на то, что некоторая обычно небольшая часть спецификации или заголовка была изменена, обычно для исправления ошибки, и может повлиять на поведение существующих функций. Различия в этом номере версии не должны влиять ни на полную совместимость, ни на обратную совместимость между двумя версиями, ни на добавление дополнительных интерфейсов к API.

Разница в дополнительных номерах версий указывает на добавление некоторого количества новых функций. Обычно это включает новые интерфейсы в заголовке, а также может включать изменения поведения и исправления ошибок. Функциональность может быть признана устаревшей в незначительной версии, но не будет удалена. Когда вводится новая вспомогательная версия, версия исправления сбрасывается до 0, и каждая вспомогательная ревизия поддерживает свой собственный набор версий исправлений. Различия в этой версии не должны влиять на обратную совместимость, но повлияют на полную совместимость.

Разница в номерах основных версий указывает на большой набор изменений в API, потенциально включая новые функции и интерфейсы заголовков, изменения поведения, удаление устаревших функций, модификацию или полную замену любой функции, и, таким образом, очень вероятно, что все и вся выйдет из строя. совместимость. Различия в этой версии обычно требуют значительных изменений в приложении, чтобы оно работало.

Что это значит для расширений? Например, Swapchain.

Зависимости

Это расширение написано для версии 1.0 API Vulkan. Для этого расширения требуется VK_KHR_surface.

Означает ли это, что это расширение не будет добавлять никаких функций в будущем? Например, если спецификация Vulkan повысит свою младшую версию до 1.1.0, разрешено ли этой спецификации добавлять новые функции к существующим расширениям?

Могу ли я предположить, что новые функции для существующих расширений будут выпущены только как новые расширения?

Просмотр VkExtensionProperties

specVersion - это версия этого расширения. Это целое число, увеличиваемое с учетом обратно совместимых изменений.

Было бы странно, если бы расширения могли быть расширены в будущих версиях, потому что Vulkan использует формат версии Major, Minor, Patch, а расширения используют только целое число. Я ожидал, что расширения будут использовать Minor, Patch, если они добавят функциональность в будущих версиях.


person Maik Klein    schedule 02.01.2017    source источник


Ответы (1)


1)
Это мало что значит для расширений, потому что это (если не указано иное) схема управления версиями для (ядра) Vulkan.

В настоящее время заголовок расширения является частью основного заголовка, поэтому изменение расширения (требующее изменения заголовка) повлечет за собой изменение версии основного исправления, когда оно будет опубликовано в этом заголовке.

2)
Зависимость в основном означает, что вы не можете включить расширение, если вы также не включите зависимость. (Это немного занижено. Например, неясно, в какой степени простое повторное использование структур / перечислений другого расширения является зависимостью. И что именно подразумевает «написано против». Но NVM это ...)

Я думаю, что ваше предположение неверно, но разумно:

Добавление новых функций должно быть разрешено, если они имеют обратную совместимость (фактически, независимо от младшей версии ядра Vulkan). Но я надеюсь, что разработчик учтет некоторые эстетические соображения (добавление альтернативных команд и т.п. к расширению может показаться некрасивым).

Расширение должно оставаться действительным, пока Vulkan переходит на версию 1.1 (поскольку предполагается, что оно обратно совместимо).

Что-то еще должно произойти с ядром Vulkan версии 2. Но я думаю, что пока никого это не беспокоит. В худшем случае они могут «обмануть» и по-другому указать, как должны работать версии расширений. Или, что более вероятно, просто откажитесь от всех расширений Vk1 (потому что они будут неявно несовместимы с Vk2).

3)
Было бы неплохо иметь второстепенную версию, но это не является строго необходимым.
Неважно, знаете ли вы, появилась ли желаемая функциональность в дополнительной версии X или в версии X (только целочисленной) .
Это было бы излишним дизайном, учитывая, что большинство расширений в любом случае относятся к версии 1.

specVersion - это немного неправильное название (возможно, ошибка копирования и вставки). В остальной части спецификации это называется ревизия.

person krOoze    schedule 02.01.2017