@@ -1391,6 +1391,9 @@ pl_renderer_create_view(plScene* ptScene, plVec2 tDimensions)
13911391
13921392 for (uint32_t i = 0 ; i < gptGfx -> get_frames_in_flight (); i ++ )
13931393 {
1394+
1395+ ptView -> atTransmissionEvents [i ] = gptGfx -> create_event (gptData -> ptDevice );
1396+
13941397 const plBufferDesc tPickBufferDesc = {
13951398 .tUsage = PL_BUFFER_USAGE_STAGING | PL_BUFFER_USAGE_STORAGE ,
13961399 .szByteSize = sizeof (uint32_t ) * 2 ,
@@ -3504,27 +3507,34 @@ pl_renderer_render_view(plView* ptView, plCamera* ptCamera, plCamera* ptCullCame
35043507
35053508
35063509
3510+
35073511 if (ptView -> ptParentScene -> bTransmissionRequired )
35083512 {
35093513
3510- gptGfx -> end_command_recording (ptSceneCmdBuffer );
3514+ // gptGfx->reset_event (ptSceneCmdBuffer, ptView->atTransmissionEvents[uFrameIdx], PL_PIPE)
35113515
3512- const plSubmitInfo tScenePreSubmitInfo = {
3513- .uSignalSemaphoreCount = 1 ,
3514- .atSignalSempahores = {gptStarter -> get_current_timeline_semaphore ()},
3515- .auSignalSemaphoreValues = {gptStarter -> increment_current_timeline_value ()}
3516- };
3517- gptGfx -> submit_command_buffer (ptSceneCmdBuffer , & tScenePreSubmitInfo );
3518- gptGfx -> return_command_buffer (ptSceneCmdBuffer );
3516+ // gptGfx->end_command_recording(ptSceneCmdBuffer);
35193517
3520- const plBeginCommandInfo tSceneBlitBeginInfo = {
3521- .uWaitSemaphoreCount = 1 ,
3522- .atWaitSempahores = {gptStarter -> get_current_timeline_semaphore ()},
3523- .auWaitSemaphoreValues = {gptStarter -> get_current_timeline_value ()},
3524- };
3518+ // const plSubmitInfo tScenePreSubmitInfo = {
3519+ // .uSignalSemaphoreCount = 1,
3520+ // .atSignalSempahores = {gptStarter->get_current_timeline_semaphore()},
3521+ // .auSignalSemaphoreValues = {gptStarter->increment_current_timeline_value()}
3522+ // };
3523+ // gptGfx->submit_command_buffer(ptSceneCmdBuffer, &tScenePreSubmitInfo);
3524+ // gptGfx->return_command_buffer(ptSceneCmdBuffer);
3525+
3526+ // const plBeginCommandInfo tSceneBlitBeginInfo = {
3527+ // .uWaitSemaphoreCount = 1,
3528+ // .atWaitSempahores = {gptStarter->get_current_timeline_semaphore()},
3529+ // .auWaitSemaphoreValues = {gptStarter->get_current_timeline_value()},
3530+ // };
35253531
3526- ptSceneCmdBuffer = gptGfx -> request_command_buffer (ptCmdPool , "main scene blit" );
3527- gptGfx -> begin_command_recording (ptSceneCmdBuffer , & tSceneBeginInfo );
3532+ // ptSceneCmdBuffer = gptGfx->request_command_buffer(ptCmdPool, "main scene blit");
3533+ // gptGfx->begin_command_recording(ptSceneCmdBuffer, &tSceneBeginInfo);
3534+
3535+ gptGfx -> reset_event (ptSceneCmdBuffer , ptView -> atTransmissionEvents [uFrameIdx ], PL_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT );
3536+ gptGfx -> set_event (ptSceneCmdBuffer , ptView -> atTransmissionEvents [uFrameIdx ], PL_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT );
3537+ gptGfx -> wait_for_events (ptSceneCmdBuffer , & ptView -> atTransmissionEvents [uFrameIdx ], 1 , PL_PIPELINE_STAGE_FRAGMENT_SHADER , PL_PIPELINE_STAGE_TRANSFER );
35283538
35293539 plBlitEncoder * ptBlitEncoder = gptGfx -> begin_blit_pass (ptSceneCmdBuffer );
35303540 gptGfx -> pipeline_barrier_blit (ptBlitEncoder , PL_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT | PL_PIPELINE_STAGE_VERTEX_SHADER | PL_PIPELINE_STAGE_COMPUTE_SHADER | PL_PIPELINE_STAGE_TRANSFER , PL_ACCESS_COLOR_ATTACHMENT_WRITE | PL_ACCESS_SHADER_READ | PL_ACCESS_TRANSFER_READ , PL_PIPELINE_STAGE_TRANSFER , PL_ACCESS_TRANSFER_WRITE );
@@ -3542,9 +3552,14 @@ pl_renderer_render_view(plView* ptView, plCamera* ptCamera, plCamera* ptCullCame
35423552 gptGfx -> copy_texture (ptBlitEncoder , ptView -> tRawOutputTexture , ptView -> tTransmissionTexture , 1 , & tFrameCopy );
35433553 gptGfx -> generate_mipmaps (ptBlitEncoder , ptView -> tTransmissionTexture );
35443554 gptGfx -> pipeline_barrier_blit (ptBlitEncoder , PL_PIPELINE_STAGE_TRANSFER , PL_ACCESS_TRANSFER_WRITE , PL_PIPELINE_STAGE_VERTEX_SHADER | PL_PIPELINE_STAGE_COMPUTE_SHADER | PL_PIPELINE_STAGE_TRANSFER , PL_ACCESS_SHADER_READ | PL_ACCESS_TRANSFER_READ );
3545- gptGfx -> end_blit_pass (ptBlitEncoder );
3555+ gptGfx -> end_blit_pass (ptBlitEncoder );
3556+
3557+ gptGfx -> reset_event (ptSceneCmdBuffer , ptView -> atTransmissionEvents [uFrameIdx ], PL_PIPELINE_STAGE_FRAGMENT_SHADER );
3558+ gptGfx -> set_event (ptSceneCmdBuffer , ptView -> atTransmissionEvents [uFrameIdx ], PL_PIPELINE_STAGE_TRANSFER );
3559+ gptGfx -> wait_for_events (ptSceneCmdBuffer , & ptView -> atTransmissionEvents [uFrameIdx ], 1 , PL_PIPELINE_STAGE_TRANSFER , PL_PIPELINE_STAGE_FRAGMENT_SHADER );
35463560 }
35473561
3562+
35483563 ptSceneEncoder = gptGfx -> begin_render_pass (ptSceneCmdBuffer , ptView -> tTransparentRenderPass , NULL );
35493564 gptGfx -> set_depth_bias (ptSceneEncoder , 0.0f , 0.0f , 0.0f );
35503565
0 commit comments