From 99d7546e3d06b230b3812631bec06c996326c652 Mon Sep 17 00:00:00 2001 From: Piotr Krygier Date: Mon, 5 Feb 2024 10:58:03 +0100 Subject: [PATCH] Fix instance buffer size --- dependencies.dep | 4 ++-- graphics/rse_graphics.h | 4 +--- graphics/src/mesh_controller.c | 4 +--- graphics/src/rse_graphics.c | 1 - graphics/src/vma_port.cpp | 3 ++- graphics/src/vulkan_buffers.c | 8 ++++---- graphics/src/vulkan_buffers.h | 3 ++- prepare_env.py | 19 ++++++++++++------- 8 files changed, 24 insertions(+), 22 deletions(-) diff --git a/dependencies.dep b/dependencies.dep index d2daa44d..54235702 100644 --- a/dependencies.dep +++ b/dependencies.dep @@ -5,7 +5,7 @@ custom_commands = cd GLFW && mkdir build && cd build && cmake .. -D BUILD_SHARED [Vulkan-SDK] dl_url = https://sdk.lunarg.com/sdk/download/1.3.250.1/linux/vulkansdk-linux-x86_64-1.3.250.1.tar.gz -custom_commands = tar -xf Vulkan-SDK && mv 1.3.250.1 vulkan && rm Vulkan-SDK +custom_commands = tar -xf Vulkan-SDK && mv 1.3.250.1 vulkan && rm Vulkan-SDK && cd vulkan && ./vulkansdk -j 4 glslang vulkan-headers loader layers tools shaderc vulkan-extensionlayer [vma] git_url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git @@ -22,4 +22,4 @@ tag = master [FreeType] dl_url = https://download.savannah.gnu.org/releases/freetype/freetype-2.10.0.tar.gz -custom_commands = tar -xf freetype-2.10.0.tar.gz mv freetype-2.10.0 freetype && rm freetype-2.10.0.tar.gz && cmake -E make_directory build && cmake -E chdir build cmake -D BUILD_SHARED_LIBS:BOOL=true .. && cmake --build build +custom_commands = tar -xf FreeType && mv freetype-2.10.0 freetype && rm FreeType && cd freetype && cmake -E make_directory build && cmake -E chdir build cmake -D BUILD_SHARED_LIBS:BOOL=true .. && cmake --build build diff --git a/graphics/rse_graphics.h b/graphics/rse_graphics.h index cb2f72f1..182fd8c6 100644 --- a/graphics/rse_graphics.h +++ b/graphics/rse_graphics.h @@ -1,8 +1,6 @@ #ifndef RSE_GRAPHICS_H #define RSE_GRAPHICS_H -#include - #include "utilities/rse_commons.h" /** @@ -27,4 +25,4 @@ rse_err_t rse_graphics_run(void); */ void rse_graphics_test_function(void); -#endif /* RSE_GRAPHICS_H */ \ No newline at end of file +#endif /* RSE_GRAPHICS_H */ diff --git a/graphics/src/mesh_controller.c b/graphics/src/mesh_controller.c index b0318c10..f96ca509 100644 --- a/graphics/src/mesh_controller.c +++ b/graphics/src/mesh_controller.c @@ -6,10 +6,8 @@ #include "locale_vulkan.h" #include "utilities/logger.h" -#include #include -#define MAX_INSTANCE_NUMBER 256 #define MESH_ID_FREE 0 #define MESH_ID_TAKEN 1 @@ -117,4 +115,4 @@ size_t get_instances_count(uint16_t mesh_id) size_t get_vertex_offset(uint16_t mesh_id) { return g_meshes[mesh_id].vertex_data.buffer_offset; -} \ No newline at end of file +} diff --git a/graphics/src/rse_graphics.c b/graphics/src/rse_graphics.c index 0f4236de..6a11e848 100644 --- a/graphics/src/rse_graphics.c +++ b/graphics/src/rse_graphics.c @@ -9,7 +9,6 @@ #include "utilities/logger.h" #include "utilities/rse_commons.h" #include "utilities/rse_errors_common.h" -#include "rse_font_errors.h" #include "rse_math.h" diff --git a/graphics/src/vma_port.cpp b/graphics/src/vma_port.cpp index 620bbff8..f7a6072f 100644 --- a/graphics/src/vma_port.cpp +++ b/graphics/src/vma_port.cpp @@ -20,5 +20,6 @@ #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" #pragma GCC diagnostic ignored "-Wswitch" #pragma GCC diagnostic ignored "-Wparentheses" +#include #include "vk_mem_alloc.h" -#pragma GCC diagnostic pop \ No newline at end of file +#pragma GCC diagnostic pop diff --git a/graphics/src/vulkan_buffers.c b/graphics/src/vulkan_buffers.c index 9f9a40df..b7829c2b 100644 --- a/graphics/src/vulkan_buffers.c +++ b/graphics/src/vulkan_buffers.c @@ -1,5 +1,6 @@ #include "vulkan_buffers.h" +#include "src/vulkan_commons.h" #include "vulkan_errors.h" #include "locale_vulkan.h" #include "utilities/logger.h" @@ -11,7 +12,6 @@ #include #define MAX_VERTEX_BUFFER_SIZE 33554432 /* 32 MB*/ -#define MAX_INSTANCE_BUFFER_SIZE 8192 /* 8 MB*/ /* GPU visible buffer */ size_t g_vertex_offset = 0; @@ -99,7 +99,7 @@ static rse_err_t create_instance_buffers() size_t iter = 0U; VkDeviceSize buffer_size; - buffer_size = MAX_VERTEX_BUFFER_SIZE; + buffer_size = sizeof(struct rse_instance_data_t) * MAX_INSTANCE_NUMBER; for (iter = 0; iter < MAX_MESH_NUMBER; ++iter) { /* Create Instance Buffer */ @@ -250,7 +250,7 @@ rse_err_t rse_add_vertices(uint16_t mesh_id, g_vertex_buffer.allocated_size += vertices_size; /* Fill staging buffer with index data */ - memset(staging_buffer.allocation_info.pMappedData, 0, MAX_VERTEX_BUFFER_SIZE); + memset(staging_buffer.allocation_info.pMappedData, 0, indices_size); memcpy(staging_buffer.allocation_info.pMappedData, indices, indices_size); copy_buffer(staging_buffer.buffer, index_buffer->buffer, @@ -281,7 +281,7 @@ rse_err_t update_mesh_instances(uint16_t mesh_id, struct rse_instance_data_t* in size_t instance_size = sizeof(struct rse_instance_data_t); /* Creating staging buffer*/ - STATUS_CHECK(create_buffer(MAX_VERTEX_BUFFER_SIZE, + STATUS_CHECK(create_buffer(instance_size, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VMA_MEMORY_USAGE_AUTO_PREFER_HOST, VMA_ALLOCATION_CREATE_MAPPED_BIT diff --git a/graphics/src/vulkan_buffers.h b/graphics/src/vulkan_buffers.h index d7d584ec..37e5a6c5 100644 --- a/graphics/src/vulkan_buffers.h +++ b/graphics/src/vulkan_buffers.h @@ -9,6 +9,7 @@ #include #define MAX_MESH_NUMBER 256 +#define MAX_INSTANCE_NUMBER 256 /** * @brief Represents data within vertex or instance buffer. @@ -106,4 +107,4 @@ rse_err_t create_buffer(const VkDeviceSize size, */ void destroy_buffer(struct rse_vulkan_buffer_t* buffer); -#endif /* RSE_VULKAN_BUFFERS_H */ \ No newline at end of file +#endif /* RSE_VULKAN_BUFFERS_H */ diff --git a/prepare_env.py b/prepare_env.py index 343e5de6..b094a065 100644 --- a/prepare_env.py +++ b/prepare_env.py @@ -35,19 +35,24 @@ class Dependency: break def download(self): - + dl_counter = 0 # Git repository if hasattr(self, "git_url") and self.git_url: repo = git.Repo.clone_from(self.git_url, os.path.join(REPO_DIR, self.name)) repo.git.checkout(self.tag) elif hasattr(self, "dl_url") and self.dl_url: - response = requests.get(self.dl_url) - if response.status_code == 200: # everything went fine - open(os.path.join(REPO_DIR, self.name), "wb").write(response.content) + while dl_counter < 10: + response = requests.get(self.dl_url) + if response.status_code == 200: # everything went fine + open(os.path.join(REPO_DIR, self.name), "wb").write(response.content) + break + dl_counter += 1 + print("Failed to download {}. Retrying {}th time...", self.name, dl_counter) + time.sleep(5.0) if hasattr(self, "custom_commands") and self.custom_commands: - p = subprocess.Popen(self.custom_commands, shell=True) - + p = subprocess.run(self.custom_commands, shell=True) + p.chek_returncode() def main(): if not os.path.isdir(REPO_DIR): @@ -77,4 +82,4 @@ def main(): if __name__ == "__main__": - main() \ No newline at end of file + main()