Что копирует vulkan API? - PullRequest
       9

Что копирует vulkan API?

0 голосов
/ 31 декабря 2018

Когда приложение вызывает команду API Vulkan, в некоторых случаях существуют указатели на память, принадлежащие переданному приложению.Хранит ли когда-нибудь Vulkan такой указатель, переданный ему?Откуда вы знаете?

Например, давайте возьмем команду vkCmdWaitEvents.Я передаю указатель pEvents на массив VkEvent.Могу ли я удалить этот массив сразу после возврата vkCmdWaitEvents?Или мне нужно подождать, пока это ожидание не будет выполнено и вмещающий CommandBuffer не будет уничтожен?то есть vulkan берет копию массива, или он просто хранит указатель на первый элемент массива?Откуда ты знаешь, что?

1 Ответ

0 голосов
/ 31 декабря 2018

Это никогда не происходит.

Цитировать спецификацию

Владение памятью, принадлежащей приложению, немедленно приобретается любой командой Vulkan, в которую она передается,Владение такой памятью должно быть возвращено приложению по истечении срока действия команды, чтобы приложение могло изменить или освободить эту память, как только вернутся все команды, получившие ее.

Единственный раз, когда указатель должен оставаться действительным для более чем одного вызова, это когда он используется как pUserData для обратного вызова, такого как VkDebugReportCallbackCreateInfoEXT или обратного вызова выделения.

...