diff options
author | Sergey Sharybin <sergey@blender.org> | 2022-05-23 16:59:52 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2022-05-23 16:59:52 +0300 |
commit | 9bb4bf57485475faa491e31b094bded67d5dd2dd (patch) | |
tree | b88065bbf2d75ff7c7dd74b9925a7fb41c37730e /intern/cycles/kernel/device/gpu/kernel.h | |
parent | eb5e7d0a31eed698909c23ab0ca89c8fd4929365 (diff) |
Fix missing 64bit casts when calculating Cycles render buffer offset
Found those missing casts while looking into a crash report made in
the Blender Chat. Was unable to reproduce the crash, but the casts
should totally be there to avoid integer overflow.
Diffstat (limited to 'intern/cycles/kernel/device/gpu/kernel.h')
-rw-r--r-- | intern/cycles/kernel/device/gpu/kernel.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/intern/cycles/kernel/device/gpu/kernel.h b/intern/cycles/kernel/device/gpu/kernel.h index 82b51843864..328c58e7905 100644 --- a/intern/cycles/kernel/device/gpu/kernel.h +++ b/intern/cycles/kernel/device/gpu/kernel.h @@ -647,8 +647,9 @@ ccl_device_inline void kernel_gpu_film_convert_half_write(ccl_global uchar4 *rgb const int x = render_pixel_index % width; \ const int y = render_pixel_index / width; \ \ - ccl_global const float *buffer = render_buffer + offset + x * kfilm_convert.pass_stride + \ - y * stride * kfilm_convert.pass_stride; \ + const uint64_t buffer_pixel_index = x + y * stride; \ + ccl_global const float *buffer = render_buffer + offset + \ + buffer_pixel_index * kfilm_convert.pass_stride; \ \ ccl_global float *pixel = pixels + \ (render_pixel_index + rgba_offset) * kfilm_convert.pixel_stride; \ @@ -677,8 +678,9 @@ ccl_device_inline void kernel_gpu_film_convert_half_write(ccl_global uchar4 *rgb const int x = render_pixel_index % width; \ const int y = render_pixel_index / width; \ \ - ccl_global const float *buffer = render_buffer + offset + x * kfilm_convert.pass_stride + \ - y * stride * kfilm_convert.pass_stride; \ + const uint64_t buffer_pixel_index = x + y * stride; \ + ccl_global const float *buffer = render_buffer + offset + \ + buffer_pixel_index * kfilm_convert.pass_stride; \ \ float pixel[4]; \ film_get_pass_pixel_##variant(&kfilm_convert, buffer, pixel); \ |