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
This commit is contained in:
@@ -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.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user