36#define GIB ((size_t)1024 * 1024 * 1024)
37#define MIB ((size_t)1024 * 1024)
95 assert_int_equal(
p.mark, 12 *
GIB);
134 assert_true(
p.mark < 13 *
GIB);
146 const size_t step =
p.plan / 32;
151 assert_true(now >= previous);
152 assert_true(now - previous <= step);
166 const size_t held = 11 *
GIB;
173 const struct CMUnitTest tests[] = {
183 return cmocka_run_group_tests(tests, NULL, NULL);
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
#define DT_PIXELPIPE_CACHE_PRESSURE_KEEP
static size_t dt_pixelpipe_cache_pressure_cap(const dt_pixelpipe_cache_pressure_t *p)
static size_t dt_pixelpipe_cache_pressure_shed_target(const dt_pixelpipe_cache_pressure_t *p, const double share, const size_t current)
static void dt_pixelpipe_cache_pressure_after_shed(dt_pixelpipe_cache_pressure_t *p, const size_t before, const size_t after)
static gboolean dt_pixelpipe_cache_pressure_relax(dt_pixelpipe_cache_pressure_t *p)
static void dt_pixelpipe_cache_pressure_init(dt_pixelpipe_cache_pressure_t *p, const size_t plan)
static size_t dt_pixelpipe_cache_pressure_reported(const dt_pixelpipe_cache_pressure_t *p, const size_t current)
static size_t dt_pixelpipe_cache_pressure_floor(const dt_pixelpipe_cache_pressure_t *p)
static size_t dt_pixelpipe_cache_pressure_mark_top(const dt_pixelpipe_cache_pressure_t *p)
static size_t dt_pixelpipe_cache_pressure_budget(const dt_pixelpipe_cache_pressure_t *p)
const float uint32_t state[4]
static void _recovery_reaches_the_plan_without_a_jump(void **state)
static void _the_budget_never_falls_under_the_floor(void **state)
static void _reported_budget_never_underflows_its_readers(void **state)
static void _a_shed_lowers_the_budget_to_what_is_left(void **state)
static void _an_empty_cache_is_not_the_cause(void **state)
static dt_pixelpipe_cache_pressure_t _plan_of(const size_t plan)
static void _recovery_waits_under_the_mark(void **state)
static void _starts_at_the_plan(void **state)
static void _sheds_a_share_of_what_is_held(void **state)