В Vulkan выгодно ли, чтобы семейство графических очередей было отделено от существующего семейства очередей? - PullRequest
0 голосов
/ 26 апреля 2020

Насколько я могу судить, семейство очередей может поддерживать отображение на экране, но не поддерживает графику. Скажем, у меня есть семейство очередей, которое поддерживает как графику и представление, так и другое семейство очередей, которое поддерживает только представление. Должен ли я использовать первое семейство очередей для обоих процессов или я должен делегировать первое для графики, а второе - для представления? Или между этими двумя подходами не будет заметной разницы?

1 Ответ

1 голос
/ 26 апреля 2020

Таких HW не существует, поэтому лучший подход - нет подхода. Если вы хотите быть по-настоящему милым, вы можете разобраться с отдельным случаем существующего семейства очередей, затрачивая на него минимальные мозговые силы. Хотя у вас нет возможности проверить это на реальном HW, который в этом нуждается. Так что я бы сказал, что прерывание с хорошим сообщением об ошибке будет вполне адекватным, пока вы не получите в руки реальное HW, которое это делает. Отдельная нынешняя очередь выглядит как более явный способ. Но тогда настоящая операционная операция сама по себе не является операцией очереди, поэтому драйвер все равно может использовать все, что хочет. Также для отдельного подарка требуется дополнительный семафор и передача семейного владения очередью (или ресурс VK_SHARING_MODE_CONCURRENT). История шла так, что ни один водитель не был настолько экстремистским, чтобы сообщать об отдельной текущей очереди. Итак, я сделал KhronosGroup / Vulkan-Docs # 1234 .

. Для приблизительного представления о том, что происходит в vkQueuePresentKHR, вы можете проверить код Mesa: https://github.com/mesa3d/mesa/blob/bf3c9d27706dc2362b81aad12eec1f7e48e53ddd/src/vulkan/wsi/wsi_common.c#L1120 -L1232 . Там, вероятно, нет никакого дела с обезьянами, использующими предоставленную вами очередь, кроме ожидания на вашем семафоре или, самое большее, создания мгновенного изображения. Если вы (добровольно) хотите использовать отдельную текущую очередь, вам нужно измерить и внести ее в белый список только для водителей (и, возможно, других факторов), это действительно помогает (если такая существует и если она даже стоит вашего времени).

...