144 const size_t offsets[] = {
151 for(
size_t i = 0;
i <
sizeof(offsets) /
sizeof(offsets[0]);
i++)
154 *(gboolean *)((
char *)&in + offsets[
i]) =
TRUE;
166 const size_t offsets[] = {
173 for(
size_t i = 0;
i <
sizeof(offsets) /
sizeof(offsets[0]);
i++)
176 *(gboolean *)((
char *)&in + offsets[
i]) =
TRUE;
210 for(
int i = count - 1;
i >= 0;
i--)
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
const dt_colormatrix_t dt_aligned_pixel_t out
Whether one pipeline node must keep a host-RAM copy of its output.
static gboolean dt_dev_pipe_cache_policy_decide(const dt_dev_pipe_cache_policy_inputs_t *in, const gboolean inherited_requirement, gboolean *upstream_requirement)
Decide one node's host-cache requirement, walking the pipe from the end backwards.
const float uint32_t state[4]
static void _gpu_node_requires_nothing_on_its_own(void **state)
static void _each_own_output_reason_raises_own(void **state)
static void _a_cpu_node_publishes_its_producer_and_no_further(void **state)
static void _only_the_displayed_output_is_cached_in_a_gpu_chain(void **state)
static void _each_own_input_reason_raises_upstream(void **state)
static void _a_cpu_node_still_makes_its_producer_publish(void **state)
static dt_dev_pipe_cache_policy_inputs_t _gpu_node_with_no_needs(void)
static void _a_pure_gpu_chain_nobody_reads_caches_nothing(void **state)
static void _a_gpu_node_does_not_relay_its_consumers_requirement(void **state)
static void _null_upstream_pointer_is_allowed(void **state)
static void _cpu_only_node_needs_its_input_on_host(void **state)
static void _a_gpu_node_nothing_reads_from_ram_caches_nothing(void **state)
static void _walk(const dt_dev_pipe_cache_policy_inputs_t *nodes, gboolean *out, const int count, const gboolean display_reads_the_last_output)
Walk a chain of nodes the way _seal_opencl_cache_policy() does, last to first.