From 61f4cab1ebafc5ff62ffa1c324ac0ff72c9ee0bb Mon Sep 17 00:00:00 2001 From: ladevieq Date: Thu, 3 Sep 2026 22:10:42 +0200 Subject: Removed usage from before desc and buffer creation --- src/gltf.cpp | 12 ++++-------- src/main.cpp | 7 ++----- src/scene.cpp | 36 ++++++++++++------------------------ src/vk-device.cpp | 12 ++++-------- 4 files changed, 22 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/gltf.cpp b/src/gltf.cpp index 8b5255c..67daade 100644 --- a/src/gltf.cpp +++ b/src/gltf.cpp @@ -158,24 +158,20 @@ static void load_textures(char* path, std::vector>& textu // samplers[sampler_index] = vkrenderer::create_sampler(VK_FILTER_LINEAR, VK_SAMPLER_ADDRESS_MODE_REPEAT); // } - vkdevice& device = vkdevice::get(); - constexpr auto buffers_count = 2U; size_t buffer_size = 256U * MB; handle staging_buffers_handle[buffers_count] = { - device.create_buffer({ + vkdevice::get().create_buffer({ .size = buffer_size, - .usages = VK_BUFFER_USAGE_TRANSFER_SRC_BIT, + .usages = VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VMA_MEMORY_USAGE_CPU_TO_GPU, .name = "image upload staging buffer 0", }), - device.create_buffer({ + vkdevice::get().create_buffer({ .size = buffer_size, - .usages = VK_BUFFER_USAGE_TRANSFER_SRC_BIT, + .usages = VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VMA_MEMORY_USAGE_CPU_TO_GPU, .name = "image upload staging buffer 1", }), }; diff --git a/src/main.cpp b/src/main.cpp index 6b1cae3..8139264 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -237,7 +237,6 @@ int main() { #if VK .usages = VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VMA_MEMORY_USAGE_CPU_TO_GPU, #else .map = true, .states = D3D12_RESOURCE_STATE_COPY_SOURCE, @@ -251,9 +250,8 @@ int main() { const handle vertex_buffer_handle = render_device.create_buffer({ .size = MB * sizeof(uint32_t), #if VK - .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT, + .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VMA_MEMORY_USAGE_CPU_TO_GPU, .name = "ImGui vertex buffer", #else #endif @@ -264,7 +262,6 @@ int main() { #if VK .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VMA_MEMORY_USAGE_CPU_TO_GPU, .name = "ImGui index buffer", #else #endif @@ -307,7 +304,7 @@ int main() { .vs_code_size = vertex_code_size, .fs_code = fragment_code, .fs_code_size = fragment_code_size, - .color_attachments_format = surface->surface_format.format, + .color_attachments_format = &surface->surface_format.format, .color_attachments_format_count = 1U }); diff --git a/src/scene.cpp b/src/scene.cpp index 12499b0..5146bf8 100644 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -178,79 +178,67 @@ scene::scene(const camera& cam, u16 width, u16 height) { indices_buffer_handle = vkdevice::get().create_buffer({ .size = indices.size() * sizeof(indices[0]), - .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT, + .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VMA_MEMORY_USAGE_CPU_TO_GPU, .name = "indices", }); const auto& indices_buffer = vkdevice::get().get_buffer(indices_buffer_handle); - void* ptr = indices_buffer->mapped_ptr; - memcpy(ptr, indices.data(), indices.size() * sizeof(indices[0])); + memcpy(indices_buffer->cpu_ptr, indices.data(), indices.size() * sizeof(indices[0])); } { positions_buffer_handle = vkdevice::get().create_buffer({ .size = positions.size() * sizeof(positions[0]), - .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT, + .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VMA_MEMORY_USAGE_CPU_TO_GPU, .name = "positions", }); const auto& positions_buffer = vkdevice::get().get_buffer(positions_buffer_handle); - void* ptr = positions_buffer->mapped_ptr; - memcpy(ptr, positions.data(), positions.size() * sizeof(positions[0])); + memcpy(positions_buffer->cpu_ptr, positions.data(), positions.size() * sizeof(positions[0])); } { normals_buffer_handle = vkdevice::get().create_buffer({ .size = normals.size() * sizeof(normals[0]), - .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT, + .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VMA_MEMORY_USAGE_CPU_TO_GPU, .name = "normals", }); const auto& normals_buffer = vkdevice::get().get_buffer(normals_buffer_handle); - void* ptr = normals_buffer->mapped_ptr; - memcpy(ptr, normals.data(), normals.size() * sizeof(normals[0])); + memcpy(normals_buffer->cpu_ptr, normals.data(), normals.size() * sizeof(normals[0])); } { uvs_buffer_handle = vkdevice::get().create_buffer({ .size = uvs.size() * sizeof(uvs[0]), - .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT, + .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VMA_MEMORY_USAGE_CPU_TO_GPU, .name = "uvs", }); const auto& uvs_buffer = vkdevice::get().get_buffer(uvs_buffer_handle); - void* ptr = uvs_buffer->mapped_ptr; - memcpy(ptr, uvs.data(), uvs.size() * sizeof(uvs[0])); + memcpy(uvs_buffer->cpu_ptr, uvs.data(), uvs.size() * sizeof(uvs[0])); } { bvh_buffer_handle = vkdevice::get().create_buffer({ .size = packed_nodes.size() * sizeof(packed_nodes[0]), - .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT, + .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VMA_MEMORY_USAGE_CPU_TO_GPU, .name = "bvh", }); const auto& bvh_buffer = vkdevice::get().get_buffer(bvh_buffer_handle); - void* ptr = bvh_buffer->mapped_ptr; - memcpy(ptr, packed_nodes.data(), packed_nodes.size() * sizeof(packed_nodes[0])); + memcpy(bvh_buffer->cpu_ptr, packed_nodes.data(), packed_nodes.size() * sizeof(packed_nodes[0])); } { materials_buffer_handle = vkdevice::get().create_buffer({ .size = materials.size() * sizeof(materials[0]), - .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT, + .usages = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VMA_MEMORY_USAGE_CPU_TO_GPU, .name = "materials", }); const auto& materials_buffer = vkdevice::get().get_buffer(materials_buffer_handle); - void* ptr = materials_buffer->mapped_ptr; - memcpy(ptr, materials.data(), materials.size() * sizeof(materials[0])); + memcpy(materials_buffer->cpu_ptr, materials.data(), materials.size() * sizeof(materials[0])); } } diff --git a/src/vk-device.cpp b/src/vk-device.cpp index f35d02b..8e46205 100644 --- a/src/vk-device.cpp +++ b/src/vk-device.cpp @@ -41,8 +41,6 @@ static void create_heaps(size_t max_images, size_t max_samplers) { .usages = VK_BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT | VK_BUFFER_USAGE_2_TRANSFER_DST_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, .name = "image descriptor_heap", }); } @@ -54,8 +52,6 @@ static void create_heaps(size_t max_images, size_t max_samplers) { .usages = VK_BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT | VK_BUFFER_USAGE_2_TRANSFER_DST_BIT, .memory_properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - .memory_usage = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, .name = "sampler descriptor_heap", }); } @@ -94,14 +90,14 @@ static device_semaphore create_semaphore(const semaphore_desc& desc, const char* } -static VkShaderModule create_shader_module(uint8_t* code, size_t code_size) { +static VkShaderModule create_shader_module(const uint8_t* code, size_t code_size) { VkShaderModule shader_module; VkShaderModuleCreateInfo create_info{ .sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, .pNext = nullptr, .flags = 0U, .codeSize = code_size, - .pCode = reinterpret_cast(code), + .pCode = reinterpret_cast(code), }; VK_CHECK(vkCreateShaderModule(device, &create_info, nullptr, &shader_module)); @@ -260,9 +256,9 @@ handle vkdevice::create_buffer(const buffer_desc& desc) { .sharingMode = VK_SHARING_MODE_EXCLUSIVE, }; + VmaAllocationCreateFlags flags = (desc.memory_properties & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) ? (VMA_ALLOCATION_CREATE_MAPPED_BIT | VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT) : 0U; VmaAllocationCreateInfo alloc_create_info{ - .flags = desc.memory_properties & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT ? VMA_ALLOCATION_CREATE_MAPPED_BIT : 0U, - .usage = static_cast(desc.memory_usage), + .flags = flags, .requiredFlags = desc.memory_properties, }; -- cgit v1.3