#vulkan
Вопрос:
Я новичок в Vulkan и не очень понимаю, как работает параллельный рендеринг, вот несколько вопросов («очередь», упомянутая ниже, относится конкретно к очереди графики:
- Зависит ли параллельный рендеринг от устройства, которое поддерживает более одной очереди?
- Если вопрос 1-да, то что, если у физического устройства есть только одна очередь, но Вулкан абстрагировался до 4 очередей (что является реальным случаем графического процессора моего macbook), будет ли рендеринг в этом случае действительно параллельным?
- Если вопрос 1-да, что делать, если в абстракции Вулкана есть только одна очередь, означает ли это, что устройство демонстративно может отображать объекты параллельно?
P.S. По поводу вопроса 2, когда я использую Metal api, количество очередей только одно, но при использовании Vulkan api число равно 4, я не уверен, что правильно говорить «у физического устройства только одна очередь».
Ответ №1:
- У меня есть смутное подозрение, что вы злоупотребляете словом «параллель». Убедитесь, что вы знаете, что это значит.
- Рендеринг на GPU по своей природе до неловкости параллелен. Обычно одна очередь может питать весь графический процессор, и обычно приложения предполагают, что это правда.
- По всей вероятности, они сделали количество очередей равным количеству ядер процессора. В Vulkan отправки в одну очередь всегда должны быть синхронизированы извне. Наличие большего количества очередей позволяет отправлять сообщения из нескольких потоков без синхронизации.
- Если есть только одна очередь Вулкана, вы можете подать заявку только в одну очередь. И любое отправление должно быть синхронизировано с мьютексом или исходить только из одного потока в первую очередь.