@@ -58,7 +58,7 @@ namespace ZEngine::Applications
5858 // {
5959 // auto thread_idx = render_worker_thread_idx + worker_thread_idx;
6060 // }
61- CurrentCmdBuf = Device->CommandBufferMgr ->GetCommandBuffer (swpachain->CurrentFrame ->Index , RenderMainThreadIndex, 0 , true );
61+ CurrentCmdBuf = Device->CommandBufferMgr ->GetCommandBuffer (Rendering::QueueType::GRAPHIC_QUEUE, swpachain->CurrentFrame ->Index , RenderMainThreadIndex, 0 , true );
6262 }
6363
6464 void AppRenderPipeline::EndFrame ()
@@ -69,6 +69,10 @@ namespace ZEngine::Applications
6969
7070 void AppRenderPipeline::RenderScene (Rendering::Cameras::CameraPtr camera, Rendering::Scenes::RenderScenePtr scene)
7171 {
72+ auto swpachain = Device->SwapchainPtr ;
73+ auto frame_index = swpachain->CurrentFrame ->Index ;
74+ auto thread_index = RenderMainThreadIndex;
75+
7276 if (scene->TransformBufferDirty [Device->SwapchainPtr ->CurrentFrame ->Index ].load (std::memory_order_acquire) || scene->MeshAllocationDirty [Device->SwapchainPtr ->CurrentFrame ->Index ].load (std::memory_order_acquire))
7377 {
7478 auto gpu_scene_data = SceneRenderer->RenderSceneData ;
@@ -91,7 +95,7 @@ namespace ZEngine::Applications
9195 if (scene->TransformBufferDirty [Device->SwapchainPtr ->CurrentFrame ->Index ].exchange (false , std::memory_order_acquire))
9296 {
9397 auto transform_data_view = ArrayView{scene->GlobalTransforms };
94- transform_buffer->Write (transform_data_view);
98+ transform_buffer->Write (frame_index, thread_index, transform_data_view);
9599 }
96100
97101 if (scene->MeshAllocationDirty [Device->SwapchainPtr ->CurrentFrame ->Index ].exchange (false , std::memory_order_acquire))
@@ -124,20 +128,20 @@ namespace ZEngine::Applications
124128 auto sub_mesh_alloc_view = ArrayView{SubMeshAllocations};
125129 auto indirect_commands_view = ArrayView{DrawIndirectCommands};
126130
127- vtx_buffer->Write (vertex_data_view);
128- idx_buffer->Write (index_data_view);
131+ vtx_buffer->Write (frame_index, thread_index, vertex_data_view);
132+ idx_buffer->Write (frame_index, thread_index, index_data_view);
129133
130- rd_buffer->Write (sub_mesh_alloc_view);
134+ rd_buffer->Write (frame_index, thread_index, sub_mesh_alloc_view);
131135
132- indirect_buffer->Write (indirect_commands_view);
136+ indirect_buffer->Write (frame_index, thread_index, indirect_commands_view);
133137
134138 ZReleaseScratch (scratch);
135139 }
136140 }
137141
138142 // Todo (Kernel) : When we'll start considering multithreaded support
139143 // we might want to renderer->EnqueueAsync({command_buffer, {camera, frame_data} })
140- SceneRenderer->DrawScene (CurrentCmdBuf, camera);
144+ SceneRenderer->DrawScene (frame_index, thread_index, CurrentCmdBuf, camera);
141145 }
142146
143147 void AppRenderPipeline::BeginOverlayFrame ()
@@ -157,6 +161,10 @@ namespace ZEngine::Applications
157161 return ;
158162 }
159163
164+ auto swpachain = Device->SwapchainPtr ;
165+ auto frame_index = swpachain->CurrentFrame ->Index ;
166+ auto thread_index = RenderMainThreadIndex;
167+
160168 auto current_framebuffer = Device->SwapchainPtr ->SwapchainFramebuffers [Device->SwapchainPtr ->CurrentFrame ->ImageIndex ];
161169
162170 CurrentCmdBuf->BeginRenderPass (ImguiRenderer->UIPass , current_framebuffer, true );
@@ -170,10 +178,10 @@ namespace ZEngine::Applications
170178 auto vertex_buffer = vertex_buffer_set->At (Device->SwapchainPtr ->CurrentFrame ->Index );
171179 auto index_buffer = index_buffer_set->At (Device->SwapchainPtr ->CurrentFrame ->Index );
172180
173- vertex_buffer->Write (vtx_data_view);
174- index_buffer->Write (idx_data_view);
181+ vertex_buffer->Write (frame_index, thread_index, vtx_data_view);
182+ index_buffer->Write (frame_index, thread_index, idx_data_view);
175183
176- auto ui_second_cb = Device->CommandBufferMgr ->GetCommandBuffer (Device->SwapchainPtr ->CurrentFrame ->Index , RenderMainThreadIndex, UICommandBufferIndex, false );
184+ auto ui_second_cb = Device->CommandBufferMgr ->GetCommandBuffer (Rendering::QueueType::GRAPHIC_QUEUE, Device->SwapchainPtr ->CurrentFrame ->Index , RenderMainThreadIndex, UICommandBufferIndex, false );
177185 ui_second_cb->ResetState ();
178186 ui_second_cb->BeginSecondary (ImguiRenderer->UIPass , current_framebuffer);
179187 ui_second_cb->SetViewport (ImguiRenderer->UIPass ->GetRenderAreaWidth (), ImguiRenderer->UIPass ->GetRenderAreaHeight ());
0 commit comments