Skip to content

Commit bfcbde0

Browse files
more removal of vector
1 parent a8dac87 commit bfcbde0

File tree

5 files changed

+44
-35
lines changed

5 files changed

+44
-35
lines changed

Tetragrama/EditorWindow.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,10 @@ namespace Tetragrama
155155

156156
ZENGINE_CORE_INFO("Windows layers initialized")
157157

158-
// Initialize Devices (Keyboard, Mouse)
158+
// Initialize Input Devices (Keyboard, Mouse)
159159
ZEngine::Windows::Inputs::IDevice::Initialize(arena);
160160

161-
ZENGINE_CORE_INFO("Device initialized")
161+
ZENGINE_CORE_INFO("Input devices initialized")
162162

163163
glfwSetWindowUserPointer(m_native_window, &m_property);
164164

ZEngine/ZEngine/Core/Memory/Allocator.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,9 @@ namespace ZEngine::Core::Memory
8585
void ArenaAllocator::CreateSubArena(size_t size, ArenaAllocator* out_arena)
8686
{
8787
out_arena->m_memory = reinterpret_cast<uint8_t*>(Allocate(size));
88-
out_arena->m_total_size = size;
89-
out_arena->m_previous_offset = out_arena->m_current_offset = m_previous_offset;
88+
out_arena->m_previous_offset = m_previous_offset;
89+
out_arena->m_current_offset = m_previous_offset;
90+
out_arena->m_total_size = m_previous_offset + size;
9091
}
9192

9293
ArenaTemp BeginTempArena(ArenaAllocator* arena)

ZEngine/ZEngine/Hardwares/VulkanDevice.cpp

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -448,16 +448,21 @@ namespace ZEngine::Hardwares
448448
TextureHandleToUpdates.Enqueue(tex_handle);
449449
return;
450450
}
451-
const auto& image_info = texture->ImageBuffer->GetDescriptorImageInfo();
452-
std::vector<VkWriteDescriptorSet> write_descriptor_sets = {};
453-
write_descriptor_sets.reserve(WriteBindlessDescriptorSetRequests.size());
451+
const auto& image_info = texture->ImageBuffer->GetDescriptorImageInfo();
454452

455-
for (auto& req : WriteBindlessDescriptorSetRequests)
453+
auto scratch = ZGetScratch(Arena);
456454
{
457-
write_descriptor_sets.push_back(VkWriteDescriptorSet{.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, .pNext = nullptr, .dstSet = req.DstSet, .dstBinding = req.Binding, .dstArrayElement = (uint32_t) tex_handle.Index, .descriptorCount = 1, .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, .pImageInfo = &(image_info), .pBufferInfo = nullptr, .pTexelBufferView = nullptr});
458-
}
455+
Array<VkWriteDescriptorSet> write_descriptor_sets = {};
456+
write_descriptor_sets.init(scratch.Arena, WriteBindlessDescriptorSetRequests.size());
457+
458+
for (auto& req : WriteBindlessDescriptorSetRequests)
459+
{
460+
write_descriptor_sets.push(VkWriteDescriptorSet{.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, .pNext = nullptr, .dstSet = req.DstSet, .dstBinding = req.Binding, .dstArrayElement = (uint32_t) tex_handle.Index, .descriptorCount = 1, .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, .pImageInfo = &(image_info), .pBufferInfo = nullptr, .pTexelBufferView = nullptr});
461+
}
459462

460-
vkUpdateDescriptorSets(LogicalDevice, write_descriptor_sets.size(), write_descriptor_sets.data(), 0, nullptr);
463+
vkUpdateDescriptorSets(LogicalDevice, write_descriptor_sets.size(), write_descriptor_sets.data(), 0, nullptr);
464+
}
465+
ZReleaseScratch(scratch);
461466
}
462467

463468
Textures::TextureHandle tex_to_dispose = {};
@@ -1342,6 +1347,7 @@ namespace ZEngine::Hardwares
13421347
*/
13431348
CommandBuffer::CommandBuffer(Hardwares::VulkanDevice* device, VkCommandPool command_pool, Rendering::QueueType type, bool one_time_usage) : Device(device), QueueType(type), m_command_pool(command_pool)
13441349
{
1350+
Device->Arena->CreateSubArena(ZKilo(120), &LocalArena);
13451351
Create();
13461352
}
13471353

@@ -1466,15 +1472,17 @@ namespace ZEngine::Hardwares
14661472
{
14671473
ZENGINE_VALIDATE_ASSERT(m_command_buffer != nullptr, "Command buffer can't be null")
14681474

1469-
const auto& render_pass_spec = render_pass->Specification;
1470-
const uint32_t width = render_pass->GetRenderAreaWidth();
1471-
const uint32_t height = render_pass->GetRenderAreaHeight();
1475+
const auto& render_pass_spec = render_pass->Specification;
1476+
const uint32_t width = render_pass->GetRenderAreaWidth();
1477+
const uint32_t height = render_pass->GetRenderAreaHeight();
14721478

1473-
std::vector<VkClearValue> clear_values = {};
1479+
auto scratch = ZGetScratch(&LocalArena);
14741480

1481+
Array<VkClearValue> clear_values = {};
1482+
clear_values.init(scratch.Arena, 5);
14751483
if (render_pass_spec.SwapchainAsRenderTarget)
14761484
{
1477-
clear_values.push_back(m_clear_value[0]);
1485+
clear_values.push(m_clear_value[0]);
14781486
}
14791487
else
14801488
{
@@ -1484,10 +1492,10 @@ namespace ZEngine::Hardwares
14841492
auto texture = Device->GlobalTextures.Access(handle);
14851493
if (texture->IsDepthTexture)
14861494
{
1487-
clear_values.push_back(m_clear_value[1]);
1495+
clear_values.push(m_clear_value[1]);
14881496
continue;
14891497
}
1490-
clear_values.push_back(m_clear_value[0]);
1498+
clear_values.push(m_clear_value[0]);
14911499
}
14921500

14931501
for (const auto& handle : spec.ExternalOutputs)
@@ -1496,10 +1504,10 @@ namespace ZEngine::Hardwares
14961504

14971505
if (texture->IsDepthTexture)
14981506
{
1499-
clear_values.push_back(m_clear_value[1]);
1507+
clear_values.push(m_clear_value[1]);
15001508
continue;
15011509
}
1502-
clear_values.push_back(m_clear_value[0]);
1510+
clear_values.push(m_clear_value[0]);
15031511
}
15041512
}
15051513

@@ -1532,6 +1540,8 @@ namespace ZEngine::Hardwares
15321540
vkCmdBindPipeline(m_command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, render_pass->Pipeline->GetHandle());
15331541

15341542
m_active_render_pass = render_pass;
1543+
1544+
ZReleaseScratch(scratch);
15351545
}
15361546

15371547
void CommandBuffer::EndRenderPass()
@@ -1550,18 +1560,21 @@ namespace ZEngine::Hardwares
15501560

15511561
if (auto render_pass = m_active_render_pass)
15521562
{
1553-
auto pipeline = render_pass->Pipeline;
1554-
auto pipeline_layout = pipeline->GetPipelineLayout();
1555-
auto shader = pipeline->GetShader();
1556-
const auto& descriptor_set_map = shader->GetDescriptorSetMap();
1563+
auto pipeline = render_pass->Pipeline;
1564+
auto pipeline_layout = pipeline->GetPipelineLayout();
1565+
auto shader = pipeline->GetShader();
1566+
const auto& descriptor_set_map = shader->GetDescriptorSetMap();
15571567

1558-
std::vector<VkDescriptorSet> frame_sets = {};
1568+
auto scratch = ZGetScratch(&LocalArena);
1569+
Array<VkDescriptorSet> frame_sets = {};
1570+
frame_sets.init(scratch.Arena, 5);
15591571
for (auto& [_, sets] : descriptor_set_map)
15601572
{
1561-
frame_sets.emplace_back(sets[frame_index]);
1573+
frame_sets.push(sets[frame_index]);
15621574
}
15631575

15641576
vkCmdBindDescriptorSets(m_command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout, 0, frame_sets.size(), frame_sets.data(), 0, nullptr);
1577+
ZReleaseScratch(scratch);
15651578
}
15661579
}
15671580

ZEngine/ZEngine/Hardwares/VulkanDevice.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,8 @@ namespace ZEngine::Hardwares
560560
~CommandBuffer();
561561

562562
Rendering::QueueType QueueType;
563-
Hardwares::VulkanDevice* Device = nullptr;
563+
Hardwares::VulkanDevice* Device = nullptr;
564+
Core::Memory::ArenaAllocator LocalArena = {};
564565

565566
void Create();
566567
void Free();

ZEngine/ZEngine/Windows/Inputs/IDevice.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,9 @@ namespace ZEngine::Windows::Inputs
3838
return reinterpret_cast<T*>(pair.first->second);
3939
}
4040

41-
virtual bool IsKeyPressed(ZENGINE_KEYCODE key, Windows::CoreWindow* const window) const
42-
{
43-
return false;
44-
}
41+
virtual bool IsKeyPressed(ZENGINE_KEYCODE key, Windows::CoreWindow* const window) const = 0;
4542

46-
virtual bool IsKeyReleased(ZENGINE_KEYCODE key, Windows::CoreWindow* const window) const
47-
{
48-
return false;
49-
}
43+
virtual bool IsKeyReleased(ZENGINE_KEYCODE key, Windows::CoreWindow* const window) const = 0;
5044

5145
virtual const char* GetName() const
5246
{

0 commit comments

Comments
 (0)