Skip to content

Commit b349f4b

Browse files
committed
Replace dynamic sizing with arrays using constexpr for max concurrent frames
1 parent b683e95 commit b349f4b

2 files changed

Lines changed: 4 additions & 11 deletions

File tree

examples/particlesystem/particlesystem.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,15 @@ class VulkanExample : public VulkanExampleBase
6464
// Size of the particle buffer in bytes
6565
size_t size{ 0 };
6666
};
67-
std::vector<ParticleBuffer> particleBuffers;
67+
std::array<ParticleBuffer, maxConcurrentFrames> particleBuffers;
6868

6969
struct UniformBuffers {
7070
vks::Buffer particles;
7171
vks::Buffer environment;
7272
VkDescriptorSet particlesDescriptor{ VK_NULL_HANDLE };
7373
VkDescriptorSet environmentDescriptor{ VK_NULL_HANDLE };
7474
};
75-
std::vector<UniformBuffers> uniformBuffers;
75+
std::array<UniformBuffers, maxConcurrentFrames> uniformBuffers;
7676

7777
struct UniformDataParticles {
7878
glm::mat4 projection;
@@ -216,7 +216,6 @@ class VulkanExample : public VulkanExampleBase
216216
}
217217

218218
// One buffer per concurrent frame, so we can update one frame while the other is still rendering
219-
particleBuffers.resize(maxConcurrentFrames);
220219
for (auto& buffer : particleBuffers) {
221220
buffer.size = particles.size() * sizeof(Particle);
222221

@@ -449,7 +448,6 @@ class VulkanExample : public VulkanExampleBase
449448
// Prepare and initialize uniform buffers containing shader uniforms
450449
void prepareUniformBuffers()
451450
{
452-
uniformBuffers.resize(maxConcurrentFrames);
453451
for (auto& buffer : uniformBuffers) {
454452
VK_CHECK_RESULT(vulkanDevice->createBuffer(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, &buffer.particles, sizeof(UniformDataParticles)));
455453
VK_CHECK_RESULT(vulkanDevice->createBuffer(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, &buffer.environment, sizeof(UniformDataEnvironment)));

examples/pushdescriptors/pushdescriptors.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class VulkanExample : public VulkanExampleBase
2626

2727
struct Cube {
2828
vks::Texture2D texture;
29-
std::vector<vks::Buffer> uniformBuffers;
29+
std::array<vks::Buffer, maxConcurrentFrames> uniformBuffers;
3030
glm::vec3 rotation;
3131
glm::mat4 modelMat;
3232
};
@@ -38,7 +38,7 @@ class VulkanExample : public VulkanExampleBase
3838
glm::mat4 projection;
3939
glm::mat4 view;
4040
} uniformData;
41-
std::vector<vks::Buffer> uniformBuffers;
41+
std::array<vks::Buffer, maxConcurrentFrames> uniformBuffers;
4242

4343
VkPipeline pipeline{ VK_NULL_HANDLE };
4444
VkPipelineLayout pipelineLayout{ VK_NULL_HANDLE };
@@ -55,11 +55,6 @@ class VulkanExample : public VulkanExampleBase
5555
// Enable extension required for push descriptors
5656
enabledInstanceExtensions.push_back(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
5757
enabledDeviceExtensions.push_back(VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME);
58-
59-
uniformBuffers.resize(maxConcurrentFrames);
60-
for (auto& cube : cubes) {
61-
cube.uniformBuffers.resize(maxConcurrentFrames);
62-
}
6358
}
6459

6560
~VulkanExample()

0 commit comments

Comments
 (0)