On Fri, 9 Jul 2021 at 04:14, Zebediah Figura zfigura@codeweavers.com wrote:
+static inline bool vkd3d_bound_range(size_t start, size_t count, size_t limit) +{ +#ifdef HAVE_BUILTIN_ADD_OVERFLOW
- size_t sum;
- return !__builtin_add_overflow(start, count, &sum) && sum <= limit;
+#else
- return start <= limit && count <= limit - start;
+#endif +}
[...]
@@ -1925,7 +1925,7 @@ static D3D12_GPU_VIRTUAL_ADDRESS vkd3d_gpu_va_allocator_allocate_fallback(struct base = allocator->fallback_floor; ceiling = ~(D3D12_GPU_VIRTUAL_ADDRESS)0; ceiling -= alignment - 1;
- if (aligned_size > ceiling || ceiling - aligned_size < base)
- if (!vkd3d_bound_range(base, aligned_size, ceiling)) return 0;
Actually, you can't necessarily do that. D3D12_GPU_VIRTUAL_ADDRESS is always a 64-bit type, but size_t may not be.