#include "vk.h"
#include "vkutil.h"
-VkDeviceMemory vk_allocate(int size)
+bool vku_allocate(int size, DevMemBlock *block)
{
VkDeviceMemory gpu_mem;
gpu_alloc_inf.allocationSize = size;
if(vkAllocateMemory(vk_device, &gpu_alloc_inf, 0, &gpu_mem) != VK_SUCCESS) {
- fprintf(stderr, "Failed to allocate device memory, mem size: %d\n");
- return 0;
+ fprintf(stderr, "Failed to allocate device memory, mem size: %d\n", size);
+ return false;
}
- return gpu_mem;
+ block->dev_mem = gpu_mem;
+ block->offset = 0;
+ block->size = size;
+
+ return true;
+}
+
+void vku_free(VkDeviceMemory gpu_memory)
+{
+ vkFreeMemory(vk_device, gpu_memory, 0);
+}
+
+bool vku_write_memory(VkDeviceMemory gpu_mem, int size, void *data)
+{
+ uint8_t *pdata;
+ VkResult res = vkMapMemory(vk_device, gpu_mem, 0, size, 0, (void **)&pdata);
+ if(res != VK_SUCCESS) {
+ fprintf(stderr, "Failed to map memory to write data.\n");
+ return false;
+ }
+
+ memcpy(pdata, data, size);
+ vkUnmapMemory(vk_device, gpu_mem);
+
+ return true;
}