diff options
author | Jason Fielder <jason_apple> | 2022-07-01 11:30:16 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2022-07-01 11:31:57 +0300 |
commit | 4527dd1ce4784292cd3b8dd3764b9cd843020f9a (patch) | |
tree | 141a4252da1fbfdf825dd8fbafcd9fa7c644034f /source/blender/blenlib/BLI_math_base.h | |
parent | 3ffc5583411ac6e1286586881bdbe1207a34b386 (diff) |
Metal: MTLMemoryManager implementation includes functions which manage allocation of MTLBuffer resources.
The memory manager includes both a GPUContext-local manager which allocates per-context resources such as Circular Scratch Buffers for temporary data such as uniform updates and resource staging, and a GPUContext-global memory manager which features a pooled memory allocator for efficient re-use of resources, to reduce CPU-overhead of frequent memory allocations.
These Memory Managers act as a simple interface for use by other Metal backend modules and to coordinate the lifetime of buffers, to ensure that GPU-resident resources are correctly tracked and freed when no longer in use.
Note: This also contains dependent DIFF changes from D15027, though these will be removed once D15027 lands.
Authored by Apple: Michael Parkin-White
Ref T96261
Reviewed By: fclem
Maniphest Tasks: T96261
Differential Revision: https://developer.blender.org/D15277
Diffstat (limited to 'source/blender/blenlib/BLI_math_base.h')
-rw-r--r-- | source/blender/blenlib/BLI_math_base.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/blenlib/BLI_math_base.h b/source/blender/blenlib/BLI_math_base.h index f072a17f384..c0c4594ddc0 100644 --- a/source/blender/blenlib/BLI_math_base.h +++ b/source/blender/blenlib/BLI_math_base.h @@ -221,6 +221,19 @@ MINLINE unsigned int power_of_2_min_u(unsigned int x); * with integers, to avoid gradual darkening when rounding down. */ MINLINE int divide_round_i(int a, int b); + +/** + * Integer division that returns the ceiling, instead of flooring like normal C division. + */ +MINLINE uint divide_ceil_u(uint a, uint b); +MINLINE uint64_t divide_ceil_ul(uint64_t a, uint64_t b); + +/** + * Returns \a a if it is a multiple of \a b or the next multiple or \a b after \b a . + */ +MINLINE uint ceil_to_multiple_u(uint a, uint b); +MINLINE uint64_t ceil_to_multiple_ul(uint64_t a, uint64_t b); + /** * modulo that handles negative numbers, works the same as Python's. */ |