Я следую за этим примером raii vulkan для создания унифицированного буфера.
Я есть Не собирать образцы Vulkan-HPP напрямую, но воссоздал это, в частности, в минимальном проекте. Я использую MacBook M1 и добавил VK_KHR_PORTABILITY_ENUMERORE Extension и EenumeratePortabilityKHR бит создания экземпляра. Я сделал суть с минимальным воспроизводимым примером здесь. < /P>
Строки, наиболее важные для этой проблемы: < /p>
Код: Выделить всё
uint8_t* pData = static_cast(uniformDataMemory.mapMemory(0, memoryRequirements.size));
memcpy(pData, &mvpc, sizeof(mvpc));
uniformDataMemory.unmapMemory();
Код: Выделить всё
Exception: EXC_BAD_ACCESS (code=2, address=0x1026d4000)
Я хочу прояснить мое понимание того, что происходит за кулисами. < /p>
- a vk :: raii: : Buffer только что дает описание того, как будет использоваться буфер и насколько он большой. Я создаю это первым, чтобы выяснить, какие требования он будет иметь для памяти графического процессора. < /Li>
GPU может иметь несколько типов памяти, которые имеют разные свойства. Мне нужно найти индекс к типу памяти графического процессора, который удовлетворяет требованиям моего буфера. Память на графическом процессоре. Память будет существовать для срока службы объекта. даст мне void*, который я могу написать несколько байтов на. Размер Параметр VK :: MemoryRequirements из моего буфера. Больше, чем размер данных, которые я копирую, поэтому Memcpy должен быть безопасным. Что заставляет меня задуматься о том, является ли проблема
Мои предположения выше неправильно? Если нет, то каковы возможные причины и как я могу их проверить? Заранее спасибо
Подробнее здесь: https://stackoverflow.com/questions/794 ... -in-vulkan
Мобильная версия