Vulkan Queue Families - PullRequest
       8

Vulkan Queue Families

0 голосов
/ 25 августа 2018

Если я вхожу правильно:

  • queueFamily - это набор очередей
  • очередь может иметь более одного флага очереди
  • существует 4 типа флагов очереди (графика, вычисления, передача и разреженная привязка)

Я пытаюсь перечислить всю информацию об одном семействе очередей. Сначала я проверяю, сколько семейств очередей доступно, затем сколько очередей у ​​каждого семейства очередей и сколько поддерживает семейство флагов очередей.

Достаточно знать, что у меня есть семейство очередей, которое поддерживает, например, графический флаг очереди, или в будущем мне придется пойти глубже и проверить конкретную очередь из определенного семейства очередей?

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

или в будущем

Это в основном вопрос о версиях и расширениях.

В основных версиях разрешено вносить любые изменения (т. Е. Быть «несовместимыми»).Таким образом, вам, возможно, придется по-другому действовать в приложении.Но вполне возможно, что старые основные версии будут по-прежнему доступны в новых версиях.

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

Это означает, что обновление драйвера не должно нарушать уже скомпилированное приложение.

(Известные исключения:)

  • *Flags, возвращаемый из Vulkan может иметь неопределенные биты (то есть биты, которые не указаны в спецификации версии, которую вы используете сдобавленные вами расширения)
  • enum s, возвращенные из Vulkan , могут иметь неопределенные значения
  • , если вы активно пытаетесь завершить работу приложения, например if( vulkanVersion != 1.0.0 ) crash();
  • совместимость (очевидно?) Не относится к вещам, которые не являются чисто функциональными (то есть не относятся к производительности, ваттам, шуму и т. Д.)
  • , если вы используете какой-либо новый материалVulkan ожидает, что вы знаете все это - например, если ваше приложение в основном Vulkan 1.0, и Vulkan возвращает флаг из Vulkan 1.42 вместе с графикой, которую вы еще не удосужились изучить, то позже вы используете другой бит флага, определенный 1.42 в другой команде,он может каким-либо образом взаимодействовать с флагом очереди.
  • любая версия может несовместимо исправлять ошибку Spec (или то, что авторы решают ее рассмотреть)
  • ?
0 голосов
/ 25 августа 2018

Все очереди из одного семейства имеют одинаковые свойства (одинаковый набор флагов). Так что вам не нужно идти глубже и проверять каждую очередь.

Но есть 3 вещи, которые нужно запомнить. Spec гарантирует, что должна быть хотя бы одна универсальная очередь, поддерживающая графику и вычислительные операции. Во-вторых, разные семейства очередей могут иметь одинаковые свойства (один и тот же набор флагов). И последнее - представление свопчейна (возможность представления изображения свопча на заданной поверхности) также является свойством семейства очередей, но его необходимо проверять с помощью отдельного набора запросов (функций).

...