Ich folge diesem Raii -Vulkan -Beispiel, um einen einheitlichen Puffer zu erstellen. Die Vulkan-HPP-Proben nicht direkt zusammenstellen, sondern diese in einem minimalen Projekt wiederholt. Ich verwende ein M1 -MacBook und fügte die Erweiterung vk_khr_portability_enumeration und eenumeratePortabilityKHR Instanzerstellung Flag -Bit hinzu. Ich habe hier einen Kern mit einem minimal reproduzierbaren Beispiel gemacht.
Code: Select all
uint8_t* pData = static_cast(uniformDataMemory.mapMemory(0, memoryRequirements.size));
memcpy(pData, &mvpc, sizeof(mvpc));
uniformDataMemory.unmapMemory();
Code: Select all
Exception: EXC_BAD_ACCESS (code=2, address=0x1026d4000)
Ich möchte mein Verständnis darüber klären, was hinter den Kulissen vor sich geht. : Buffer enthält nur eine Beschreibung, wie ein Puffer verwendet wird und wie groß er ist. Ich erstelle das zuerst, um herauszufinden, welche Anforderungen es für den GPU -Speicher hat. Ich muss einen Index für den Speichertyp der GPU finden, der die Anforderungen meines Puffers erfüllt. Speicher auf der GPU. Der Speicher wird für die Lebensdauer des Objekts existieren. Gib mir eine void*, auf die ich eine Reihe von Bytes schreiben kann. Der Parameter der Größe des Vk :: majoreRequirements aus meinem Puffer.
[*] Die Größe in Speicheranforderungen ist Größer als die Größe der Daten, die ich kopiere, daher sollte das Memcpy sicher sein. Was mich frage, ob das Problem
die Frage
lautet Meine Annahmen oben falsch? Wenn nicht, was sind einige mögliche Gründe und wie kann ich sie testen? Danke im Voraus
