Использует ли параллельный рендеринг Vulkan несколько очередей?

#vulkan

Вопрос:

Я новичок в Vulkan и не очень понимаю, как работает параллельный рендеринг, вот несколько вопросов («очередь», упомянутая ниже, относится конкретно к очереди графики:

  1. Зависит ли параллельный рендеринг от устройства, которое поддерживает более одной очереди?
  2. Если вопрос 1-да, то что, если у физического устройства есть только одна очередь, но Вулкан абстрагировался до 4 очередей (что является реальным случаем графического процессора моего macbook), будет ли рендеринг в этом случае действительно параллельным?
  3. Если вопрос 1-да, что делать, если в абстракции Вулкана есть только одна очередь, означает ли это, что устройство демонстративно может отображать объекты параллельно?

P.S. По поводу вопроса 2, когда я использую Metal api, количество очередей только одно, но при использовании Vulkan api число равно 4, я не уверен, что правильно говорить «у физического устройства только одна очередь».

Ответ №1:

  1. У меня есть смутное подозрение, что вы злоупотребляете словом «параллель». Убедитесь, что вы знаете, что это значит.
  2. Рендеринг на GPU по своей природе до неловкости параллелен. Обычно одна очередь может питать весь графический процессор, и обычно приложения предполагают, что это правда.
  3. По всей вероятности, они сделали количество очередей равным количеству ядер процессора. В Vulkan отправки в одну очередь всегда должны быть синхронизированы извне. Наличие большего количества очередей позволяет отправлять сообщения из нескольких потоков без синхронизации.
  4. Если есть только одна очередь Вулкана, вы можете подать заявку только в одну очередь. И любое отправление должно быть синхронизировано с мьютексом или исходить только из одного потока в первую очередь.