или в будущем
Это в основном вопрос о версиях и расширениях.
В основных версиях разрешено вносить любые изменения (т. Е. Быть «несовместимыми»).Таким образом, вам, возможно, придется по-другому действовать в приложении.Но вполне возможно, что старые основные версии будут по-прежнему доступны в новых версиях.
Незначительные версии, и предполагается, что расширения обратно совместимы (с заметными исключениями).Но только на уровне ABI, поэтому нет абсолютной гарантии, что ваша программа будет компилироваться с новым заголовком.
Это означает, что обновление драйвера не должно нарушать уже скомпилированное приложение.
(Известные исключения:)
*Flags
, возвращаемый из Vulkan может иметь неопределенные биты (то есть биты, которые не указаны в спецификации версии, которую вы используете сдобавленные вами расширения) enum
s, возвращенные из Vulkan , могут иметь неопределенные значения - , если вы активно пытаетесь завершить работу приложения, например
if( vulkanVersion != 1.0.0 ) crash();
- совместимость (очевидно?) Не относится к вещам, которые не являются чисто функциональными (то есть не относятся к производительности, ваттам, шуму и т. Д.)
- , если вы используете какой-либо новый материалVulkan ожидает, что вы знаете все это - например, если ваше приложение в основном Vulkan 1.0, и Vulkan возвращает флаг из Vulkan 1.42 вместе с графикой, которую вы еще не удосужились изучить, то позже вы используете другой бит флага, определенный 1.42 в другой команде,он может каким-либо образом взаимодействовать с флагом очереди.
- любая версия может несовместимо исправлять ошибку Spec (или то, что авторы решают ее рассмотреть)
- ?