![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include "common/darktable.h"#include "develop/pixelpipe_hb.h"#include "develop/tiling.h"#include <string.h>
Include dependency graph for pixelpipe_process.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Typedefs | |
| typedef enum dt_pixelpipe_flow_t | dt_pixelpipe_flow_t |
| typedef enum dt_pixelpipe_blend_transform_t | dt_pixelpipe_blend_transform_t |
Enumerations | |
| enum | dt_pixelpipe_flow_t { PIXELPIPE_FLOW_NONE = 0 , PIXELPIPE_FLOW_HISTOGRAM_NONE = 1 << 0 , PIXELPIPE_FLOW_HISTOGRAM_ON_CPU = 1 << 1 , PIXELPIPE_FLOW_HISTOGRAM_ON_GPU = 1 << 2 , PIXELPIPE_FLOW_PROCESSED_ON_CPU = 1 << 3 , PIXELPIPE_FLOW_PROCESSED_ON_GPU = 1 << 4 , PIXELPIPE_FLOW_PROCESSED_WITH_TILING = 1 << 5 , PIXELPIPE_FLOW_BLENDED_ON_CPU = 1 << 6 , PIXELPIPE_FLOW_BLENDED_ON_GPU = 1 << 7 } |
| enum | dt_pixelpipe_blend_transform_t { DT_DEV_PIXELPIPE_BLEND_TRANSFORM_NONE = 0 , DT_DEV_PIXELPIPE_BLEND_TRANSFORM_INPUT = 1 << 0 , DT_DEV_PIXELPIPE_BLEND_TRANSFORM_OUTPUT = 1 << 1 } |
Functions | |
| static gboolean | _bypass_cache (const dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece) |
| Tell whether the current pipeline state forbids keeping this module output in cache. | |
| static void | _reset_piece_cache_entry (dt_dev_pixelpipe_iop_t *piece) |
| Drop the writable-reuse snapshot attached to a pipeline piece. | |
| void | dt_dev_pixelpipe_debug_dump_module_io (dt_dev_pixelpipe_t *pipe, dt_iop_module_t *module, const char *stage, gboolean is_cl, const dt_iop_buffer_dsc_t *in_dsc, const dt_iop_buffer_dsc_t *out_dsc, const dt_iop_roi_t *roi_in, const dt_iop_roi_t *roi_out, size_t in_bpp, size_t out_bpp, int cst_before, int cst_after) |
| dt_pixelpipe_blend_transform_t | dt_dev_pixelpipe_transform_for_blend (const dt_iop_module_t *self, const dt_dev_pixelpipe_iop_t *piece, const dt_iop_buffer_dsc_t *output_dsc) |
| gboolean | dt_dev_pixelpipe_cache_gpu_device_buffer (const dt_dev_pixelpipe_t *pipe, const dt_pixel_cache_entry_t *cache_entry) |
| typedef enum dt_pixelpipe_flow_t dt_pixelpipe_flow_t |
| Enumerator | |
|---|---|
| DT_DEV_PIXELPIPE_BLEND_TRANSFORM_NONE | |
| DT_DEV_PIXELPIPE_BLEND_TRANSFORM_INPUT | |
| DT_DEV_PIXELPIPE_BLEND_TRANSFORM_OUTPUT | |
Definition at line 26 of file pixelpipe_process.h.
| enum dt_pixelpipe_flow_t |
Definition at line 13 of file pixelpipe_process.h.
|
inlinestatic |
Tell whether the current pipeline state forbids keeping this module output in cache.
This combines the pipeline-wide modes with the bypass state already propagated to the current piece:
pipe->bypass_cache is the aggregate "at least one piece bypasses cache" state used when no piece is available, for example while deciding how to retain the final pipe output. It must not be applied to a concrete upstream piece: doing so makes outputs before the editing module disposable too. GUI consumers requesting such an upstream output then repeatedly render and discard the same cacheline.
Definition at line 51 of file pixelpipe_process.h.
References dt_dev_pixelpipe_iop_t::bypass_cache, dt_dev_pixelpipe_t::bypass_cache, IS_NULL_PTR, dt_dev_pixelpipe_t::no_cache, and dt_dev_pixelpipe_t::reentry.
Referenced by dt_dev_pixelpipe_cache_gpu_device_buffer(), dt_dev_pixelpipe_process(), and dt_dev_pixelpipe_process_rec().
|
inlinestatic |
Drop the writable-reuse snapshot attached to a pipeline piece.
piece->cache_entry is only a hint telling the cache that a previously published cacheline may be rekeyed and fully overwritten on a later pass. If we decide to keep the current module output as a long-term cacheline instead, that hint must disappear completely so no stale pointer, serial, lock or metadata survives the decision.
Definition at line 65 of file pixelpipe_process.h.
References dt_dev_pixelpipe_iop_t::cache_entry, DT_PIXELPIPE_CACHE_HASH_INVALID, dt_pixel_cache_entry_t::hash, and IS_NULL_PTR.
Referenced by _abort_module_shutdown_cleanup(), dt_dev_pixelpipe_create_nodes(), and dt_dev_pixelpipe_process_rec().
| gboolean dt_dev_pixelpipe_cache_gpu_device_buffer | ( | const dt_dev_pixelpipe_t * | pipe, |
| const dt_pixel_cache_entry_t * | cache_entry | ||
| ) |
Definition at line 249 of file pixelpipe_hb.c.
References _bypass_cache(), dt_pixel_cache_entry_get_data(), IS_NULL_PTR, and dt_dev_pixelpipe_t::realtime.
Referenced by _gpu_early_cpu_fallback_if_unsupported(), and pixelpipe_process_on_GPU().
| void dt_dev_pixelpipe_debug_dump_module_io | ( | dt_dev_pixelpipe_t * | pipe, |
| dt_iop_module_t * | module, | ||
| const char * | stage, | ||
| gboolean | is_cl, | ||
| const dt_iop_buffer_dsc_t * | in_dsc, | ||
| const dt_iop_buffer_dsc_t * | out_dsc, | ||
| const dt_iop_roi_t * | roi_in, | ||
| const dt_iop_roi_t * | roi_out, | ||
| size_t | in_bpp, | ||
| size_t | out_bpp, | ||
| int | cst_before, | ||
| int | cst_after | ||
| ) |
Definition at line 338 of file pixelpipe_hb.c.
References _debug_cst_to_string(), _debug_type_to_string(), dt_iop_buffer_dsc_t::channels, dt_iop_buffer_dsc_t::cst, darktable, dt_iop_buffer_dsc_t::datatype, DT_DEBUG_PIPE, DT_DEBUG_VERBOSE, dt_pixelpipe_get_pipe_name(), dt_print(), dt_iop_roi_t::height, IS_NULL_PTR, dt_dev_pixelpipe_t::type, darktable_t::unmuted, and dt_iop_roi_t::width.
Referenced by pixelpipe_process_on_CPU(), and pixelpipe_process_on_GPU().
| dt_pixelpipe_blend_transform_t dt_dev_pixelpipe_transform_for_blend | ( | const dt_iop_module_t * | self, |
| const dt_dev_pixelpipe_iop_t * | piece, | ||
| const dt_iop_buffer_dsc_t * | output_dsc | ||
| ) |
Definition at line 643 of file pixelpipe_hb.c.
References dt_dev_pixelpipe_iop_t::blendop_data, dt_iop_buffer_dsc_t::cst, d, DEVELOP_MASK_DISABLED, dt_dev_pixelpipe_iop_t::dsc_in, DT_DEV_PIXELPIPE_BLEND_TRANSFORM_INPUT, DT_DEV_PIXELPIPE_BLEND_TRANSFORM_NONE, DT_DEV_PIXELPIPE_BLEND_TRANSFORM_OUTPUT, dt_develop_blend_colorspace(), dt_iop_colorspace_is_rgb(), IOP_FLAGS_SUPPORTS_BLENDING, and IS_NULL_PTR.
Referenced by pixelpipe_process_on_CPU(), and pixelpipe_process_on_GPU().