summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_rd/effects/copy_effects.cpp
diff options
context:
space:
mode:
authorEddieBreeg <eddiebreeg0@protonmail.com>2023-08-07 20:19:20 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-01-02 14:14:47 +0100
commit8747c67d9e549e9b2cf5a93201be105b9c8d9291 (patch)
tree448bf57e5f613c3111c746b4b6bd2dcc35e7c21d /servers/rendering/renderer_rd/effects/copy_effects.cpp
parent13a0d6e9b253654f5cc2a44f3d0b3cae10440443 (diff)
downloadredot-engine-8747c67d9e549e9b2cf5a93201be105b9c8d9291.tar.gz
Fix potential integer underflow in rounded up divisions
A new `Math::division_round_up()` function was added, allowing for easy and correct computation of integer divisions when the result needs to be rounded up. Fixes #80358. Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
Diffstat (limited to 'servers/rendering/renderer_rd/effects/copy_effects.cpp')
-rw-r--r--servers/rendering/renderer_rd/effects/copy_effects.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/servers/rendering/renderer_rd/effects/copy_effects.cpp b/servers/rendering/renderer_rd/effects/copy_effects.cpp
index 18863d4978..bb584beb52 100644
--- a/servers/rendering/renderer_rd/effects/copy_effects.cpp
+++ b/servers/rendering/renderer_rd/effects/copy_effects.cpp
@@ -1050,8 +1050,8 @@ void CopyEffects::cubemap_downsample(RID p_source_cubemap, RID p_dest_cubemap, c
RD::get_singleton()->compute_list_bind_uniform_set(compute_list, uniform_set_cache->get_cache(shader, 0, u_source_cubemap), 0);
RD::get_singleton()->compute_list_bind_uniform_set(compute_list, uniform_set_cache->get_cache(shader, 1, u_dest_cubemap), 1);
- int x_groups = (p_size.x - 1) / 8 + 1;
- int y_groups = (p_size.y - 1) / 8 + 1;
+ int x_groups = Math::division_round_up(p_size.x, 8);
+ int y_groups = Math::division_round_up(p_size.y, 8);
RD::get_singleton()->compute_list_set_push_constant(compute_list, &cubemap_downsampler.push_constant, sizeof(CubemapDownsamplerPushConstant));
@@ -1204,8 +1204,8 @@ void CopyEffects::cubemap_roughness(RID p_source_rd_texture, RID p_dest_texture,
RD::get_singleton()->compute_list_set_push_constant(compute_list, &roughness.push_constant, sizeof(CubemapRoughnessPushConstant));
- int x_groups = (p_size - 1) / 8 + 1;
- int y_groups = (p_size - 1) / 8 + 1;
+ int x_groups = Math::division_round_up(p_size, 8);
+ int y_groups = x_groups;
RD::get_singleton()->compute_list_dispatch(compute_list, x_groups, y_groups, p_face_id > 9 ? 6 : 1);