Vulkan leer desde el buffer de almacenamiento

He estado intentando enviar datos a un búfer de almacenamiento y luego volver a leerlos, pero fue en vano. Estoy creando el búfer como siempre hago, rellenelo con VK_BUFFER_USAGE_STORAGE_BUFFER_BIT

Y dale las banderas

VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT

Luego, cuando leo en el búfer solo obtengo datos basura.

Buffer payload_buffer; VkDeviceSize buffer_size = sizeof(float); CreateBuffer(engine, buffer_size, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, payload_buffer); // Create the data that will be saved float payload = 5.0f; // Move the data to the GPU memcpy(payload_buffer.mapped_memory, &payload, buffer_size); // Move the data back memcpy(&payload, &payload_buffer.mapped_memory, buffer_size); // Output the data std::cout << payload << std::endl; // Destroy the buffer instance DestroyBuffer(engine, payload_buffer); 

¿Alguien sabe cómo rastrearía el problema?

Elimine el ampersand del 2do parámetro. Debería ser:

 memcpy(&payload, payload_buffer.mapped_memory, buffer_size); 

Si mapped_memory ya es un puntero.

De lo contrario, con el símbolo comercial está copyndo el puntero en su flotador en lugar de la memory a la que apunta.