Передача владения ресурсами Vulkan в сравнении с VK_SHARING_MODE_CONCURRENT и производительность разных семейств очередей - PullRequest
1 голос
/ 02 июля 2019

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

Вычисляющий шейдер вызывается не для каждого кадра, а один раз для 5-10 кадров.Фактически, у меня есть дублированные вершины и я рисую косвенные буферы, поэтому, пока я рендерил геометрию с использованием VB1 и DI1, вычислительный шейдер может записывать в VB2 и DI2 и затем менять их местами, поэтому вызовы вычислений и рисования могут быть независимыми.У меня также есть 2 семейства очередей: все и только для вычислений.

Итак, я могу придумать 3 способа сделать это:

  1. Использовать только одну очередь для всего сVK_SHARING_MODE_EXCLUSIVE буферы
  2. Используйте очередь только для вычислений для вычислительного шейдера и все для рисования с буферами VK_SHARING_MODE_EXCLUSIVE и передачи владения между очередями
  3. Используйте очередь только для вычислений для вычислительного шейдера и выполняйте-все для рисования с помощью VK_SHARING_MODE_CONCURRENT буферов

Я хотел бы услышать ваши советы о том, какой вариант использовать и каковы их плюсы / минусы.У меня есть некоторые предположения по этому поводу, и я хочу знать, прав я или нет:

  1. Я думаю, что использование отдельного семейства, выделенного для вычислительных операций, может улучшить производительность
  2. Я думаю, что передача права собственностиЭто тяжелая операция, и ее стоит делать только один раз (например, при загрузке ресурса в память GPU), но не каждые 5-10 кадров
  3. Поэтому я думаю, что 3-й вариант будет лучшим выбором для меня

1 Ответ

2 голосов
/ 02 июля 2019

Поскольку стандарт имеет это явное предупреждение:

VK_SHARING_MODE_CONCURRENT может привести к снижению производительности доступа к буферу или изображению, чем VK_SHARING_MODE_EXCLUSIVE.

Я бы сказал, что вы должны выбирать эксклюзивный режим, если и пока ваши данные профилирования не указывают на проблему с производительностью.В конце концов, вы сказали, что между использованием буферов и их перемещением по очередям есть как минимум соотношение 5: 1.Таким образом, вы получаете доступ к буферам с большей частотой, чем частота, с которой вы выполняете операции владения очередью.

...