![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include "common/atomic.h"#include "common/image.h"#include "common/imageio.h"#include "common/iop_order.h"#include "develop/imageop.h"#include "develop/pixelpipe_cache.h"
Include dependency graph for pixelpipe_hb.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Data Structures | |
| struct | dt_dev_pixelpipe_raster_mask_t |
| struct | dt_dev_pixelpipe_iop_t |
| struct | dt_backbuf_t |
| struct | dt_dev_pixelpipe_t |
Macros | |
| #define | dt_dev_pixelpipe_synch_all(pipe, dev) dt_dev_pixelpipe_synch_all_real(pipe, dev, __FUNCTION__) |
Typedefs | |
| typedef struct dt_dev_pixelpipe_raster_mask_t | dt_dev_pixelpipe_raster_mask_t |
| typedef struct dt_dev_pixelpipe_iop_t | dt_dev_pixelpipe_iop_t |
| typedef enum dt_dev_pixelpipe_change_t | dt_dev_pixelpipe_change_t |
| typedef enum dt_dev_pixelpipe_status_t | dt_dev_pixelpipe_status_t |
| typedef struct dt_backbuf_t | dt_backbuf_t |
| typedef struct dt_dev_pixelpipe_t | dt_dev_pixelpipe_t |
Enumerations | |
| enum | dt_dev_pixelpipe_change_t { DT_DEV_PIPE_UNCHANGED = 0 , DT_DEV_PIPE_TOP_CHANGED = 1 << 0 , DT_DEV_PIPE_REMOVE = 1 << 1 , DT_DEV_PIPE_SYNCH = 1 << 2 , DT_DEV_PIPE_ZOOMED = 1 << 3 } |
| enum | dt_dev_pixelpipe_status_t { DT_DEV_PIXELPIPE_DIRTY = 0 , DT_DEV_PIXELPIPE_UNDEF = 1 , DT_DEV_PIXELPIPE_VALID = 2 , DT_DEV_PIXELPIPE_INVALID = 3 } |
Functions | |
| static uint64_t | dt_dev_backbuf_get_hash (const dt_backbuf_t *backbuf) |
| static void | dt_dev_backbuf_set_hash (dt_backbuf_t *backbuf, const uint64_t hash) |
| static uint64_t | dt_dev_backbuf_get_history_hash (const dt_backbuf_t *backbuf) |
| static void | dt_dev_backbuf_set_history_hash (dt_backbuf_t *backbuf, const uint64_t history_hash) |
| static uint64_t | dt_dev_pixelpipe_get_hash (const dt_dev_pixelpipe_t *pipe) |
| static void | dt_dev_pixelpipe_set_hash (dt_dev_pixelpipe_t *pipe, const uint64_t hash) |
| static uint64_t | dt_dev_pixelpipe_get_history_hash (const dt_dev_pixelpipe_t *pipe) |
| static void | dt_dev_pixelpipe_set_history_hash (dt_dev_pixelpipe_t *pipe, const uint64_t history_hash) |
| static dt_dev_pixelpipe_change_t | dt_dev_pixelpipe_get_changed (const dt_dev_pixelpipe_t *pipe) |
| static void | dt_dev_pixelpipe_set_changed (dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_change_t v) |
| static void | dt_dev_pixelpipe_or_changed (dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_change_t flags) |
| char * | dt_pixelpipe_get_pipe_name (dt_dev_pixelpipe_type_t pipe_type) |
| int | dt_dev_pixelpipe_init (dt_dev_pixelpipe_t *pipe) |
| int | dt_dev_pixelpipe_init_preview (dt_dev_pixelpipe_t *pipe) |
| int | dt_dev_pixelpipe_init_export (dt_dev_pixelpipe_t *pipe, int levels, gboolean store_masks) |
| int | dt_dev_pixelpipe_init_thumbnail (dt_dev_pixelpipe_t *pipe) |
| int | dt_dev_pixelpipe_init_dummy (dt_dev_pixelpipe_t *pipe) |
| int | dt_dev_pixelpipe_init_cached (dt_dev_pixelpipe_t *pipe) |
| void | dt_dev_pixelpipe_set_realtime (dt_dev_pixelpipe_t *pipe, gboolean state) |
| gboolean | dt_dev_pixelpipe_get_realtime (const dt_dev_pixelpipe_t *pipe) |
| void | dt_dev_pixelpipe_set_input (dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, int32_t imgid, int width, int height, dt_mipmap_size_t size) |
| void | dt_dev_pixelpipe_set_icc (dt_dev_pixelpipe_t *pipe, dt_colorspaces_color_profile_type_t icc_type, const gchar *icc_filename, dt_iop_color_intent_t icc_intent) |
| void | dt_dev_pixelpipe_cleanup (dt_dev_pixelpipe_t *pipe) |
| void | dt_dev_pixelpipe_cleanup_nodes (dt_dev_pixelpipe_t *pipe) |
| void | dt_dev_pixelpipe_create_nodes (dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev) |
| void | dt_dev_pixelpipe_synch_all_real (dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, const char *caller_func) |
| Find the last history item matching each pipeline node (module), in the order of pipeline execution. This is super important because modules providing raster masks need to be inited before modules using them, in the order of pipeline nodes. But history holds no guaranty that raster masks providers will be older than raster masks users, especially after history compression. So reading in history order is not an option. | |
| void | dt_dev_pixelpipe_synch_top (dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev) |
| int | dt_dev_pixelpipe_process (dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, dt_iop_roi_t roi) |
| void | dt_dev_pixelpipe_disable_after (dt_dev_pixelpipe_t *pipe, const char *op) |
| void | dt_dev_pixelpipe_disable_before (dt_dev_pixelpipe_t *pipe, const char *op) |
| float * | dt_dev_get_raster_mask (dt_dev_pixelpipe_t *pipe, const struct dt_iop_module_t *raster_mask_source, const int raster_mask_id, const struct dt_iop_module_t *target_module, gboolean *free_mask, int *error) |
| void | dt_dev_clear_rawdetail_mask (dt_dev_pixelpipe_t *pipe) |
| gboolean | dt_dev_write_rawdetail_mask (const dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece, float *const rgb, const dt_iop_roi_t *const roi_in, const int mode) |
| float * | dt_dev_distort_detail_mask (const dt_dev_pixelpipe_t *pipe, float *src, const struct dt_iop_module_t *target_module) |
| gboolean | dt_dev_pixelpipe_set_reentry (dt_dev_pixelpipe_t *pipe, uint64_t hash) |
| Set the re-entry pipeline flag, only if no object is already capturing it. Re-entered pipelines run with cache disabled, but without flushing the whole cache. This was designed for cases where raster masks references are lost on pipeline, for example when going to lighttable and re-entering darkroom (pipe caches are not flushed for performance, if re-entering the same image), as to trigger a full pipe run and reinit references. | |
| gboolean | dt_dev_pixelpipe_unset_reentry (dt_dev_pixelpipe_t *pipe, uint64_t hash) |
Remove the re-entry pipeline flag, only if the object identifier is the one that set it. See dt_dev_pixelpipe_set_reentry. | |
| gboolean | dt_dev_pixelpipe_has_reentry (dt_dev_pixelpipe_t *pipe) |
| void | dt_dev_pixelpipe_reset_reentry (dt_dev_pixelpipe_t *pipe) |
| #define dt_dev_pixelpipe_synch_all | ( | pipe, | |
| dev | |||
| ) | dt_dev_pixelpipe_synch_all_real(pipe, dev, __FUNCTION__) |
| typedef struct dt_backbuf_t dt_backbuf_t |
this encapsulates the pixelpipe. a develop module will need several of these: for previews and full blits to cairo and for the export function.
| typedef enum dt_dev_pixelpipe_change_t dt_dev_pixelpipe_change_t |
| typedef struct dt_dev_pixelpipe_iop_t dt_dev_pixelpipe_iop_t |
Runtime representation of one history item instantiated inside a pixelpipe node.
A piece is the sealed processing contract for one module on one pipe. It is authored during history -> pipe synchronization and then consumed by the recursive runtime without recomputing its format contract.
Contract sealing order:
input_format() may overwrite the fields it requires on #dsc_in,commit_params() may update value-domain metadata that depends on module parameters, such as processed_maximum or RAW normalization coefficients,output_format() may finally overwrite the output storage contract.After synchronization:
process(), process_cl(), process_tiling(), and blending,modify_roi_in() / modify_roi_out()) are still allowed to mutate the piece because ROI planning happens before processing starts and some modules derive descriptor details from the planned crop,Mutable lifecycle summary:
commit_params(), input_format(), output_format(), and ROI planning are the only places allowed to author the contract,| typedef struct dt_dev_pixelpipe_raster_mask_t dt_dev_pixelpipe_raster_mask_t |
| typedef enum dt_dev_pixelpipe_status_t dt_dev_pixelpipe_status_t |
| typedef struct dt_dev_pixelpipe_t dt_dev_pixelpipe_t |
|
inlinestatic |
References dt_atomic_get_uint64(), and dt_backbuf_t::hash.
Referenced by _build_preview_fallback_surface(), _clear_histogram_backbuf(), _flag_pipe(), _is_backbuf_ready(), _lib_navigation_draw_callback(), _lock_pipe_surface(), _needs_recompute(), _pixelpipe_pick_from_image(), _process_histogram(), _process_vectorscope(), _process_waveform(), _redraw_surface(), _refresh_global_histogram_backbuf(), _update_backbuf_cache_reference(), dt_dev_darkroom_pipeline(), dt_dev_pixelpipe_cleanup(), dt_dev_pixelpipe_is_backbufer_valid(), dt_dev_pixelpipe_process(), dt_imageio_export_with_flags(), dt_masks_gui_form_create(), dt_masks_gui_form_create_throttled(), dt_masks_gui_form_test_create(), expose(), and leave().
|
inlinestatic |
References dt_atomic_get_uint64(), and dt_backbuf_t::history_hash.
Referenced by _flag_pipe(), dt_dev_darkroom_pipeline(), and dt_dev_pixelpipe_is_backbufer_valid().
|
inlinestatic |
References dt_atomic_set_uint64(), and dt_backbuf_t::hash.
Referenced by dt_dev_set_backbuf(), and leave().
|
inlinestatic |
References dt_atomic_set_uint64(), and dt_backbuf_t::history_hash.
Referenced by dt_dev_set_backbuf().
| void dt_dev_clear_rawdetail_mask | ( | dt_dev_pixelpipe_t * | pipe | ) |
References dt_pixelpipe_cache_free_align, and dt_dev_pixelpipe_t::rawdetail_mask_data.
Referenced by dt_dev_pixelpipe_cleanup(), dt_dev_write_rawdetail_mask(), and process().
| float * dt_dev_distort_detail_mask | ( | const dt_dev_pixelpipe_t * | pipe, |
| float * | src, | ||
| const struct dt_iop_module_t * | target_module | ||
| ) |
Referenced by _refine_with_detail_mask().
| float * dt_dev_get_raster_mask | ( | dt_dev_pixelpipe_t * | pipe, |
| const struct dt_iop_module_t * | raster_mask_source, | ||
| const int | raster_mask_id, | ||
| const struct dt_iop_module_t * | target_module, | ||
| gboolean * | free_mask, | ||
| int * | error | ||
| ) |
Referenced by _develop_blend_init_raster_mask(), write_image(), and write_image().
| void dt_dev_pixelpipe_cleanup | ( | dt_dev_pixelpipe_t * | pipe | ) |
References dt_dev_pixelpipe_t::backbuf, dt_dev_pixelpipe_t::busy_mutex, darktable, DT_COLORSPACE_NONE, dt_dev_backbuf_get_hash(), dt_dev_clear_rawdetail_mask(), dt_dev_pixelpipe_cache_flush_clmem(), dt_dev_pixelpipe_cache_get_entry(), dt_dev_pixelpipe_cache_remove(), dt_dev_pixelpipe_cleanup_nodes(), dt_dev_set_backbuf(), dt_free, dt_masks_free_form(), DT_PIXELPIPE_CACHE_HASH_INVALID, dt_pthread_mutex_destroy(), dt_dev_pixelpipe_t::forms, dt_dev_pixelpipe_t::icc_filename, dt_dev_pixelpipe_t::icc_type, dt_dev_pixelpipe_t::no_cache, dt_dev_pixelpipe_t::output_imgid, darktable_t::pixelpipe_cache, TRUE, UNKNOWN_IMAGE, and void().
Referenced by dt_dev_cleanup(), dt_focus_draw_clusters(), and dt_imageio_export_with_flags().
| void dt_dev_pixelpipe_cleanup_nodes | ( | dt_dev_pixelpipe_t * | pipe | ) |
References dt_dev_pixelpipe_iop_t::data, dt_free, dt_free_gpointer(), dt_iop_cleanup_pipe(), dt_pixelpipe_raster_cleanup(), dt_dev_pixelpipe_t::iop_order_list, dt_dev_pixelpipe_t::nodes, and dt_dev_pixelpipe_iop_t::raster_masks.
Referenced by dt_dev_pixelpipe_change(), dt_dev_pixelpipe_cleanup(), and leave().
| void dt_dev_pixelpipe_create_nodes | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev | ||
| ) |
References _reset_piece_cache_entry(), dt_iop_buffer_dsc_update_bpp(), dt_iop_init_pipe(), dt_ioppr_iop_order_copy_deep(), DT_PIXELPIPE_CACHE_HASH_INVALID, dt_pixelpipe_raster_alloc(), DT_REQUEST_ONLY_IN_GUI, dt_dev_pixelpipe_iop_t::enabled, dt_dev_pixelpipe_t::iheight, dt_develop_t::iop, dt_develop_t::iop_order_list, dt_dev_pixelpipe_t::iop_order_list, dt_dev_pixelpipe_t::iwidth, dt_dev_pixelpipe_t::nodes, TRUE, and TYPE_FLOAT.
Referenced by dt_dev_pixelpipe_change(), dt_focus_draw_clusters(), and dt_imageio_export_with_flags().
| void dt_dev_pixelpipe_disable_after | ( | dt_dev_pixelpipe_t * | pipe, |
| const char * | op | ||
| ) |
References dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_iop_t::enabled, and dt_dev_pixelpipe_t::nodes.
Referenced by _filter_pipeline().
| void dt_dev_pixelpipe_disable_before | ( | dt_dev_pixelpipe_t * | pipe, |
| const char * | op | ||
| ) |
References dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_iop_t::enabled, and dt_dev_pixelpipe_t::nodes.
Referenced by _filter_pipeline().
|
inlinestatic |
References dt_dev_pixelpipe_t::changed, and dt_atomic_get_int().
Referenced by _flag_pipe(), dt_dev_darkroom_pipeline(), dt_dev_get_thumbnail_size(), and dt_dev_pixelpipe_change().
|
inlinestatic |
|
inlinestatic |
References dt_atomic_get_uint64(), and dt_dev_pixelpipe_t::history_hash.
Referenced by _flag_pipe(), _update_backbuf_cache_reference(), dt_dev_darkroom_pipeline(), dt_dev_get_thumbnail_size(), dt_dev_pixelpipe_is_pipeline_valid(), dt_dev_pixelpipe_process(), gui_post_expose(), and gui_post_expose().
| gboolean dt_dev_pixelpipe_get_realtime | ( | const dt_dev_pixelpipe_t * | pipe | ) |
| gboolean dt_dev_pixelpipe_has_reentry | ( | dt_dev_pixelpipe_t * | pipe | ) |
References dt_dev_pixelpipe_t::reentry.
Referenced by dt_dev_darkroom_pipeline().
| int dt_dev_pixelpipe_init | ( | dt_dev_pixelpipe_t * | pipe | ) |
References DT_DEV_PIXELPIPE_FULL, dt_dev_pixelpipe_init_cached(), dt_dev_pixelpipe_t::store_all_raster_masks, TRUE, and dt_dev_pixelpipe_t::type.
Referenced by dt_dev_init().
| int dt_dev_pixelpipe_init_cached | ( | dt_dev_pixelpipe_t * | pipe | ) |
References dt_dev_pixelpipe_t::backbuf, dt_dev_pixelpipe_t::busy_mutex, dt_dev_pixelpipe_t::devid, dt_atomic_set_int(), DT_COLORSPACE_NONE, DT_DEV_PIPE_UNCHANGED, dt_dev_pixelpipe_reset_reentry(), dt_dev_pixelpipe_set_changed(), dt_dev_pixelpipe_set_hash(), dt_dev_pixelpipe_set_history_hash(), dt_dev_set_backbuf(), DT_INTENT_LAST, DT_PIXELPIPE_CACHE_HASH_INVALID, dt_pthread_mutex_init(), FALSE, dt_dev_pixelpipe_t::icc_intent, dt_dev_pixelpipe_t::icc_type, IMAGEIO_INT8, IMAGEIO_RGB, dt_dev_pixelpipe_t::last_history_hash, dt_dev_pixelpipe_t::levels, dt_dev_pixelpipe_t::output_imgid, dt_dev_pixelpipe_t::realtime, dt_dev_pixelpipe_t::shutdown, and UNKNOWN_IMAGE.
Referenced by dt_dev_pixelpipe_init(), dt_dev_pixelpipe_init_dummy(), dt_dev_pixelpipe_init_export(), dt_dev_pixelpipe_init_preview(), and dt_dev_pixelpipe_init_thumbnail().
| int dt_dev_pixelpipe_init_dummy | ( | dt_dev_pixelpipe_t * | pipe | ) |
References dt_dev_pixelpipe_init_cached(), DT_DEV_PIXELPIPE_THUMBNAIL, dt_dev_pixelpipe_t::no_cache, TRUE, and dt_dev_pixelpipe_t::type.
Referenced by dt_focus_draw_clusters().
| int dt_dev_pixelpipe_init_export | ( | dt_dev_pixelpipe_t * | pipe, |
| int | levels, | ||
| gboolean | store_masks | ||
| ) |
| int dt_dev_pixelpipe_init_preview | ( | dt_dev_pixelpipe_t * | pipe | ) |
| int dt_dev_pixelpipe_init_thumbnail | ( | dt_dev_pixelpipe_t * | pipe | ) |
References dt_dev_pixelpipe_init_cached(), DT_DEV_PIXELPIPE_THUMBNAIL, dt_dev_pixelpipe_t::no_cache, TRUE, and dt_dev_pixelpipe_t::type.
Referenced by dt_imageio_export_with_flags().
|
inlinestatic |
References dt_dev_pixelpipe_t::changed, dt_atomic_or_int(), and flags.
Referenced by _change_pipe(), dt_dev_darkroom_pipeline(), and dt_dev_get_thumbnail_size().
| int dt_dev_pixelpipe_process | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev, | ||
| dt_iop_roi_t | roi | ||
| ) |
References _print_opencl_errors(), _requests_cache(), _update_backbuf_cache_reference(), dt_dev_pixelpipe_t::backbuf, dt_develop_t::color_picker, darktable, dt_dev_pixelpipe_t::devid, dt_atomic_get_int(), dt_capabilities_remove(), DT_DEBUG_DEV, DT_DEBUG_MEMORY, DT_DEBUG_OPENCL, dt_dev_backbuf_get_hash(), dt_dev_pixelpipe_cache_peek(), dt_dev_pixelpipe_cache_print(), dt_dev_pixelpipe_cache_unref_hash(), DT_DEV_PIXELPIPE_DISPLAY_NONE, dt_dev_pixelpipe_get_hash(), dt_dev_pixelpipe_get_history_hash(), dt_dev_pixelpipe_get_roi_in(), dt_dev_pixelpipe_process_rec(), dt_free, dt_get_times(), dt_masks_dup_forms_deep(), dt_masks_free_form(), dt_opencl_check_tuning(), dt_opencl_events_flush(), dt_opencl_events_reset(), dt_opencl_lock_device(), DT_OPENCL_MAX_ERRORS, dt_opencl_unlock_device(), dt_opencl_update_settings(), DT_PIXELPIPE_CACHE_HASH_INVALID, dt_pixelpipe_get_global_hash(), dt_pixelpipe_get_pipe_name(), dt_print(), dt_print_mem_usage(), dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_pthread_rwlock_rdlock, dt_pthread_rwlock_unlock, dt_show_times(), dt_opencl_t::error_count, FALSE, dt_dev_pixelpipe_t::flush_cache, dt_develop_t::forms, dt_dev_pixelpipe_t::forms, dt_develop_t::gui_attached, dt_iop_roi_t::height, dt_develop_t::iop, KILL_SWITCH_PIPE, dt_dev_pixelpipe_t::mask_display, dt_develop_t::masks_mutex, dt_dev_pixelpipe_t::nodes, darktable_t::opencl, dt_dev_pixelpipe_t::opencl_enabled, dt_dev_pixelpipe_t::opencl_error, dt_develop_t::pending_module, dt_develop_t::pending_pipe, dt_develop_t::piece_hash, darktable_t::pipeline_threadsafe, darktable_t::pixelpipe_cache, dt_dev_pixelpipe_t::shutdown, dt_opencl_t::stopped, TRUE, dt_dev_pixelpipe_t::type, darktable_t::unmuted, void(), and dt_iop_roi_t::width.
Referenced by dt_dev_darkroom_pipeline(), and dt_imageio_export_with_flags().
| void dt_dev_pixelpipe_reset_reentry | ( | dt_dev_pixelpipe_t * | pipe | ) |
References DT_PIXELPIPE_CACHE_HASH_INVALID, FALSE, dt_dev_pixelpipe_t::flush_cache, dt_dev_pixelpipe_t::reentry, and dt_dev_pixelpipe_t::reentry_hash.
Referenced by dt_dev_darkroom_pipeline(), and dt_dev_pixelpipe_init_cached().
|
inlinestatic |
References dt_dev_pixelpipe_t::changed, dt_atomic_set_int(), and v.
Referenced by dt_dev_pixelpipe_change(), and dt_dev_pixelpipe_init_cached().
|
inlinestatic |
References dt_atomic_set_uint64(), and dt_dev_pixelpipe_t::hash.
Referenced by dt_dev_pixelpipe_init_cached(), and dt_pixelpipe_get_global_hash().
|
inlinestatic |
References dt_atomic_set_uint64(), and dt_dev_pixelpipe_t::history_hash.
Referenced by dt_dev_pixelpipe_init_cached(), dt_dev_pixelpipe_synch_all_real(), and dt_dev_pixelpipe_synch_top().
| void dt_dev_pixelpipe_set_icc | ( | dt_dev_pixelpipe_t * | pipe, |
| dt_colorspaces_color_profile_type_t | icc_type, | ||
| const gchar * | icc_filename, | ||
| dt_iop_color_intent_t | icc_intent | ||
| ) |
References dt_free, dt_dev_pixelpipe_t::icc_filename, dt_dev_pixelpipe_t::icc_intent, and dt_dev_pixelpipe_t::icc_type.
Referenced by dt_imageio_export_with_flags().
| void dt_dev_pixelpipe_set_input | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev, | ||
| int32_t | imgid, | ||
| int | width, | ||
| int | height, | ||
| dt_mipmap_size_t | size | ||
| ) |
References height, dt_dev_pixelpipe_t::iheight, dt_dev_pixelpipe_t::image, dt_develop_t::image_storage, dt_dev_pixelpipe_t::imgid, dt_dev_pixelpipe_t::iwidth, size, dt_dev_pixelpipe_t::size, and width.
Referenced by _sync_virtual_pipe(), dt_dev_darkroom_pipeline(), dt_dev_get_thumbnail_size(), dt_focus_draw_clusters(), and dt_imageio_export_with_flags().
| void dt_dev_pixelpipe_set_realtime | ( | dt_dev_pixelpipe_t * | pipe, |
| gboolean | state | ||
| ) |
References dt_atomic_set_int(), FALSE, dt_dev_pixelpipe_t::realtime, and TRUE.
Referenced by dt_dev_pixelpipe_change_zoom_main(), dt_dev_pixelpipe_update_zoom_main_real(), and dt_drawlayer_set_pipeline_realtime_mode().
| gboolean dt_dev_pixelpipe_set_reentry | ( | dt_dev_pixelpipe_t * | pipe, |
| uint64_t | hash | ||
| ) |
Set the re-entry pipeline flag, only if no object is already capturing it. Re-entered pipelines run with cache disabled, but without flushing the whole cache. This was designed for cases where raster masks references are lost on pipeline, for example when going to lighttable and re-entering darkroom (pipe caches are not flushed for performance, if re-entering the same image), as to trigger a full pipe run and reinit references.
It can be used for any case where a full pipeline recompute is needed once, based on runtime module requirements, but a full cache flush would be overkill.
NOTE: in main darkroom pipe, the coordinates of the ROI can change between runs from the same thread.
| pipe | |
| hash | Unique ID of the object attempting capture the re-entry flag. This should stay constant between 2 pipeline runs from the same thread. |
References DT_DEBUG_DEV, DT_PIXELPIPE_CACHE_HASH_INVALID, dt_print(), FALSE, dt_dev_pixelpipe_t::reentry, dt_dev_pixelpipe_t::reentry_hash, and TRUE.
Referenced by dt_dev_get_raster_mask().
| void dt_dev_pixelpipe_synch_all_real | ( | dt_dev_pixelpipe_t * | pipe, |
| dt_develop_t * | dev, | ||
| const char * | caller_func | ||
| ) |
Find the last history item matching each pipeline node (module), in the order of pipeline execution. This is super important because modules providing raster masks need to be inited before modules using them, in the order of pipeline nodes. But history holds no guaranty that raster masks providers will be older than raster masks users, especially after history compression. So reading in history order is not an option.
| pipe | |
| dev | |
| caller_func |
References _get_debug_pipe_name(), _sync_pipe_nodes_from_history(), DT_DEBUG_DEV, dt_dev_get_history_end_ext(), dt_dev_get_history_hash(), dt_dev_pixelpipe_set_history_hash(), DT_PIXELPIPE_CACHE_HASH_INVALID, dt_print(), dt_dev_history_item_t::hash, dt_develop_t::history, dt_dev_pixelpipe_t::last_history_hash, dt_dev_pixelpipe_t::last_history_item, and type.
| void dt_dev_pixelpipe_synch_top | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev | ||
| ) |
References _get_debug_pipe_name(), _sync_pipe_nodes_from_history_from_node(), dt_dev_pixelpipe_iop_t::data, DT_DEBUG_DEV, DT_DEBUG_PARAMS, dt_dev_get_history_end_ext(), dt_dev_get_history_hash(), dt_dev_pixelpipe_set_history_hash(), DT_PIXELPIPE_CACHE_HASH_INVALID, dt_print(), dt_dev_history_item_t::hash, dt_develop_t::history, dt_dev_pixelpipe_t::last_history_hash, dt_dev_pixelpipe_t::last_history_item, dt_dev_history_item_t::multi_name, dt_dev_pixelpipe_t::nodes, and type.
Referenced by dt_dev_pixelpipe_change().
| gboolean dt_dev_pixelpipe_unset_reentry | ( | dt_dev_pixelpipe_t * | pipe, |
| uint64_t | hash | ||
| ) |
Remove the re-entry pipeline flag, only if the object identifier is the one that set it. See dt_dev_pixelpipe_set_reentry.
| pipe | |
| hash | Unique ID of the object attempting capture the re-entry flag. This should stay constant between 2 pipeline runs from the same thread. |
References DT_DEBUG_DEV, DT_PIXELPIPE_CACHE_HASH_INVALID, dt_print(), FALSE, dt_dev_pixelpipe_t::reentry, dt_dev_pixelpipe_t::reentry_hash, and TRUE.
Referenced by dt_dev_get_raster_mask().
| gboolean dt_dev_write_rawdetail_mask | ( | const dt_dev_pixelpipe_t * | pipe, |
| const dt_dev_pixelpipe_iop_t * | piece, | ||
| float *const | rgb, | ||
| const dt_iop_roi_t *const | roi_in, | ||
| const int | mode | ||
| ) |
References dt_iop_buffer_dsc_t::coeffs, dt_dev_pixelpipe_iop_t::dsc_in, DT_DEBUG_MASKS, dt_dev_clear_rawdetail_mask(), DT_DEV_DETAIL_MASK_RAWPREPARE, DT_DEV_DETAIL_MASK_REQUIRED, dt_masks_calc_rawdetail_mask(), dt_pixelpipe_cache_alloc_align_float_cache, dt_pixelpipe_cache_free_align, dt_print(), error(), FALSE, height, dt_iop_roi_t::height, dt_dev_pixelpipe_t::rawdetail_mask_data, dt_dev_pixelpipe_t::rawdetail_mask_roi, rgb, dt_iop_buffer_dsc_t::temperature, TRUE, dt_dev_pixelpipe_t::want_detail_mask, width, and dt_iop_roi_t::width.
| char * dt_pixelpipe_get_pipe_name | ( | dt_dev_pixelpipe_type_t | pipe_type | ) |
References DT_DEV_PIXELPIPE_EXPORT, DT_DEV_PIXELPIPE_FULL, DT_DEV_PIXELPIPE_PREVIEW, DT_DEV_PIXELPIPE_THUMBNAIL, and r.
Referenced by _get_debug_pipe_name(), _print_nan_debug(), _print_opencl_errors(), _print_perf_debug(), _trace_buffer_content(), _trace_cache_owner(), dt_dev_darkroom_pipeline(), dt_dev_get_raster_mask(), dt_dev_pixelpipe_debug_dump_module_io(), dt_dev_pixelpipe_process(), dt_dev_pixelpipe_process_rec(), and dt_iop_commit_params().