summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_rd/effects/ss_effects.cpp
diff options
context:
space:
mode:
authorMatias N. Goldberg <dark_sylinc@yahoo.com.ar>2023-10-21 11:56:37 -0300
committerMatias N. Goldberg <dark_sylinc@yahoo.com.ar>2023-10-21 13:14:38 -0300
commitc9ec1f77272de8a828294d2348c4cb1d4577612c (patch)
treee6046d749a00a8ac582742ba1bc33aa395ec1a56 /servers/rendering/renderer_rd/effects/ss_effects.cpp
parentf71f4b80e32f6e98a4cd3cb1c06071223297e8fc (diff)
downloadredot-engine-c9ec1f77272de8a828294d2348c4cb1d4577612c.tar.gz
Fix buffer updates going to the wrong cmd buffer if barriers were 0
From what I could see only SSAO & SSIL were affected when they both call: int zero[1] = { 0 }; RD::get_singleton()->buffer_update(ssao.importance_map_load_counter, 0, sizeof(uint32_t), &zero, 0); int zero[1] = { 0 }; RD::get_singleton()->buffer_update(ssil.importance_map_load_counter, 0, sizeof(uint32_t), &zero, 0); Also documented what setup_command_buffer & draw_command_buffer are for.
Diffstat (limited to 'servers/rendering/renderer_rd/effects/ss_effects.cpp')
-rw-r--r--servers/rendering/renderer_rd/effects/ss_effects.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/servers/rendering/renderer_rd/effects/ss_effects.cpp b/servers/rendering/renderer_rd/effects/ss_effects.cpp
index d123f24865..628edc0127 100644
--- a/servers/rendering/renderer_rd/effects/ss_effects.cpp
+++ b/servers/rendering/renderer_rd/effects/ss_effects.cpp
@@ -950,7 +950,7 @@ void SSEffects::screen_space_indirect_lighting(Ref<RenderSceneBuffersRD> p_rende
RD::get_singleton()->draw_command_end_label(); // SSIL
- RD::get_singleton()->compute_list_end(RD::BARRIER_MASK_NO_BARRIER);
+ RD::get_singleton()->compute_list_end(RD::BARRIER_MASK_TRANSFER); // Zeroing importance_map_load_counter depends on us.
int zero[1] = { 0 };
RD::get_singleton()->buffer_update(ssil.importance_map_load_counter, 0, sizeof(uint32_t), &zero, 0); //no barrier
@@ -1332,7 +1332,7 @@ void SSEffects::generate_ssao(Ref<RenderSceneBuffersRD> p_render_buffers, SSAORe
RD::get_singleton()->draw_command_end_label(); // Interleave
}
RD::get_singleton()->draw_command_end_label(); //SSAO
- RD::get_singleton()->compute_list_end(RD::BARRIER_MASK_NO_BARRIER); //wait for upcoming transfer
+ RD::get_singleton()->compute_list_end(RD::BARRIER_MASK_TRANSFER); // Zeroing importance_map_load_counter depends on us.
int zero[1] = { 0 };
RD::get_singleton()->buffer_update(ssao.importance_map_load_counter, 0, sizeof(uint32_t), &zero, 0); //no barrier