Vulkan: vkCmdBindDescriptorSets, pDynamicOffsets - PullRequest
0 голосов
/ 23 января 2019

Вот цитата из спецификации vulkan, глава «Привязка набора дескрипторов»:

Эффективное смещение, используемое для динамического связывания с унифицированным буфером и хранилищем, является суммой относительного смещения, взятого из pDynamicOffsets, и базового адреса буфера плюс базовое смещение в наборе дескрипторов.

Это, кажется, не имеет смысла, смещение не может быть суммой адреса и других смещений. Что на самом деле хочет сказать это утверждение? Окончательное смещение A) сумма смещения в pDynamicOffsets и смещение в наборе дескрипторов или это B) равно смещению в pDynamicOffsets?

1 Ответ

0 голосов
/ 23 января 2019

смещение не может быть суммой адреса и других смещений

Почему бы и нет?

Когда вы связываете VkBuffer с частью памяти, вы предоставляете байтовое смещение в пределах этого выделения для начала того места, где вы хотите, чтобы буфер существовал в этой памяти. Это смещение иногда называют «базовым адресом» буфера (нечто подобное используется для изображений).

То, что он говорит, - то, что начало диапазона памяти, доступного через дескриптор, определяется 3 значениями: динамическое смещение, которое вы отправляете дескриптору, статическое смещение, которое уже было установлено в дескрипторе, и "" Базовый адрес "для VkBuffer, который вы указали, когда связали его с частью памяти.

Причина такого утверждения заключается в том, чтобы сообщить вам, что статическое смещение, которое вы использовали в дескрипторе , по-прежнему применяется . Динамическое смещение добавляет к этому; это не отменяет его.

...