![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include "common/debug.h"#include "common/darktable.h"#include "common/dtpthread.h"#include "develop/imageop.h"#include "develop/pixelpipe.h"#include "develop/pixelpipe_cache.h"#include "develop/blend.h"#include "gui/color_picker_proxy.h"#include "control/control.h"#include "control/signal.h"#include <stdint.h>
Include dependency graph for dev_pixelpipe.c:
|
static |
References dt_atomic_set_int(), dt_dev_pixelpipe_or_changed(), flag, IS_NULL_PTR, dt_dev_pixelpipe_t::shutdown, and TRUE.
Referenced by _sync_virtual_pipe(), dt_dev_pixelpipe_rebuild_all_real(), dt_dev_pixelpipe_resync_history_main_real(), dt_dev_pixelpipe_resync_history_preview_real(), dt_dev_pixelpipe_update_history_main_real(), dt_dev_pixelpipe_update_history_preview_real(), dt_dev_pixelpipe_update_zoom_main_real(), and dt_dev_pixelpipe_update_zoom_preview_real().
|
static |
References _get_debug_pipe_name(), _prepare_piece_input_contract(), dt_iop_buffer_dsc_t::bpp, dt_iop_buffer_dsc_t::channels, darktable, dt_dev_pixelpipe_iop_t::dsc_in, dt_dev_pixelpipe_iop_t::dsc_out, DT_DEBUG_PIPE, dt_free, dt_iop_buffer_dsc_update_bpp(), dt_iop_commit_params(), dt_print(), dt_dev_pixelpipe_iop_t::enabled, dt_iop_buffer_dsc_t::filters, and darktable_t::unmuted.
Referenced by _sync_pipe_nodes_from_history(), and _sync_pipe_nodes_from_history_from_node().
|
static |
References dt_hash(), DT_MAX_FILENAME_LEN, dt_image_t::filename, and dt_dev_pixelpipe_t::image.
Referenced by dt_dev_pixelpipe_node_hash(), and dt_pixelpipe_get_global_hash().
|
static |
References dt_dev_pixelpipe_cache_wait_t::connected, dt_dev_pixelpipe_cache_wait_cleanup(), dt_dev_pixelpipe_cache_wait_t::hash, IS_NULL_PTR, dt_dev_pixelpipe_cache_wait_t::restart, dt_dev_pixelpipe_cache_wait_t::user_data, and void().
Referenced by dt_dev_pixelpipe_cache_peek_gui(), and dt_dev_pixelpipe_cache_wait_cleanup().
|
static |
References dt_dev_pixelpipe_iop_t::data, and dt_dev_pixelpipe_t::nodes.
Referenced by _sync_pipe_nodes_from_history(), and _sync_pipe_nodes_from_history_from_node().
|
static |
References DT_DEV_PIXELPIPE_NONE, dt_pixelpipe_get_pipe_name(), dt_dev_pixelpipe_t::type, and dt_develop_t::virtual_pipe.
Referenced by _commit_piece_contract(), _prepare_piece_input_contract(), dt_dev_pixelpipe_change(), dt_dev_pixelpipe_get_roi_in(), dt_dev_pixelpipe_get_roi_out(), dt_dev_pixelpipe_synch_all_real(), dt_dev_pixelpipe_synch_top(), and dt_pixelpipe_get_global_hash().
|
static |
|
static |
|
static |
References _get_debug_pipe_name(), dt_dev_pixelpipe_iop_t::blendop_hash, dt_iop_buffer_dsc_t::bpp, dt_iop_buffer_dsc_t::channels, darktable, dt_dev_pixelpipe_iop_t::dsc_in, dt_dev_pixelpipe_iop_t::dsc_out, dt_control_log(), DT_DEBUG_PIPE, dt_free, dt_iop_buffer_dsc_update_bpp(), DT_PIXELPIPE_CACHE_HASH_INVALID, dt_print(), dt_dev_pixelpipe_iop_t::enabled, FALSE, dt_iop_buffer_dsc_t::filters, dt_dev_pixelpipe_iop_t::global_hash, dt_dev_pixelpipe_iop_t::global_mask_hash, dt_dev_pixelpipe_iop_t::hash, TRUE, and darktable_t::unmuted.
Referenced by _commit_piece_contract().
|
static |
References dt_iop_buffer_dsc_t::channels, dt_iop_buffer_dsc_t::cst, dt_dev_pixelpipe_iop_t::data, dt_iop_buffer_dsc_t::datatype, dt_dev_pixelpipe_iop_t::detail_mask, dt_dev_pixelpipe_iop_t::dsc_in, DT_DEV_DETAIL_MASK_ENABLED, DT_DEV_DETAIL_MASK_NONE, dt_dev_pixelpipe_iop_t::enabled, IOP_CS_RGB, IS_NULL_PTR, dt_dev_pixelpipe_t::nodes, dt_dev_pixelpipe_iop_t::process_tiling_ready, TYPE_FLOAT, and dt_dev_pixelpipe_t::want_detail_mask.
Referenced by _sync_pipe_nodes_from_history(), _sync_pipe_nodes_from_history_from_node(), _sync_realtime_top_history_in_place(), and dt_dev_pixelpipe_change().
|
static |
Seal host-cache retention policy on synchronized pieces before processing starts.
piece->force_opencl_cache is part of the sealed runtime contract: the processing recursion only consumes it and must not infer GUI/runtime heuristics while running. This pass therefore authors all host-cache retention requests immediately after history synchronization, while the live pipe graph and current GUI state are both known.
The reverse walk carries one upstream requirement: "the previous enabled module must keep its output on host because the current enabled module will read from RAM instead of OpenCL".
Keep that carry explicit: we only cache module outputs, so any consumer that needs the current module input must author a requirement on the previous enabled module, not on the current one.
We add to that:
force_opencl_cache,GUI cache requests are intentionally not turned into eager host retention here. dt_dev_pixelpipe_cache_peek_gui() can already reopen a device-only cacheline and materialize RAM on demand, so keeping the one-shot request out of this policy avoids forcing stale module-output cachelines to be published to host just because a transient GUI reader missed once.
References _module_requires_global_histogram_input_cache(), _module_requires_global_histogram_output_cache(), dt_dev_pixelpipe_iop_t::data, dt_conf_get_bool(), dt_conf_key_exists(), dt_conf_key_not_empty(), dt_conf_set_bool(), DT_DEV_PIXELPIPE_FULL, DT_DEV_PIXELPIPE_PREVIEW, dt_free, dt_iop_color_picker_force_cache(), dt_opencl_is_inited(), DT_REQUEST_ON, DT_REQUEST_ONLY_IN_GUI, dt_dev_pixelpipe_iop_t::enabled, FALSE, dt_dev_pixelpipe_iop_t::force_opencl_cache, dt_develop_t::gui_attached, dt_develop_t::gui_module, dt_dev_pixelpipe_t::gui_observable_source, IS_NULL_PTR, dt_dev_pixelpipe_t::nodes, dt_dev_pixelpipe_iop_t::process_cl_ready, dt_dev_pixelpipe_iop_t::request_histogram, TRUE, and dt_dev_pixelpipe_t::type.
Referenced by dt_dev_pixelpipe_change().
|
static |
References _commit_piece_contract(), _find_detailmask_node(), _refresh_pipe_detail_mask_state(), _sync_pipe_nodes_from_history_from_node(), dt_dev_history_item_t::blend_params, dt_dev_pixelpipe_iop_t::blendop_hash, dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_iop_t::detail_mask, dt_develop_blend_params_t::details, dt_image_t::dsc, DT_DEBUG_PARAMS, DT_DEV_DETAIL_MASK_ENABLED, DT_DEV_DETAIL_MASK_NONE, DT_PIXELPIPE_CACHE_HASH_INVALID, dt_print(), dt_dev_history_item_t::enabled, dt_dev_pixelpipe_iop_t::enabled, FALSE, dt_dev_pixelpipe_iop_t::global_hash, dt_dev_pixelpipe_iop_t::global_mask_hash, dt_dev_pixelpipe_iop_t::hash, dt_develop_t::history, dt_dev_pixelpipe_t::image, IS_NULL_PTR, dt_dev_pixelpipe_t::nodes, dt_dev_history_item_t::params, TRUE, and dt_dev_pixelpipe_t::want_detail_mask.
Referenced by dt_dev_pixelpipe_synch_all_real().
|
static |
References _commit_piece_contract(), _find_detailmask_node(), _refresh_pipe_detail_mask_state(), _sync_pipe_nodes_from_history_from_node(), dt_dev_history_item_t::blend_params, dt_dev_pixelpipe_iop_t::blendop_hash, dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_iop_t::detail_mask, dt_develop_blend_params_t::details, dt_image_t::dsc, dt_dev_pixelpipe_iop_t::dsc_out, DT_DEBUG_PARAMS, DT_DEV_DETAIL_MASK_ENABLED, DT_DEV_DETAIL_MASK_NONE, DT_PIXELPIPE_CACHE_HASH_INVALID, dt_print(), dt_dev_history_item_t::enabled, dt_dev_pixelpipe_iop_t::enabled, FALSE, dt_dev_pixelpipe_iop_t::global_hash, dt_dev_pixelpipe_iop_t::global_mask_hash, dt_dev_pixelpipe_iop_t::hash, dt_develop_t::history, dt_dev_pixelpipe_t::image, IS_NULL_PTR, dt_dev_pixelpipe_t::nodes, dt_dev_history_item_t::params, TRUE, and dt_dev_pixelpipe_t::want_detail_mask.
Referenced by _sync_pipe_nodes_from_history(), _sync_pipe_nodes_from_history_from_node(), and dt_dev_pixelpipe_synch_top().
|
static |
Update the current top history entry in place for realtime pipes.
Realtime editing keeps appending new top history items for the currently focused module while the pipe is already instantiated. In that situation we can refresh just that module piece from the newest top history item and advance the pipe history fence without replaying the generic synch_top() walk through the whole tail of the stack.
This helper only replaces the history-tail replay. The rest of dt_dev_pixelpipe_change() still needs to run afterwards so cache policy and ROI contracts remain sealed for the next processing pass.
References _refresh_pipe_detail_mask_state(), dt_dev_history_item_t::blend_params, dt_dev_pixelpipe_iop_t::detail_mask, dt_develop_blend_params_t::details, DT_DEV_DETAIL_MASK_NONE, dt_dev_get_history_end_ext(), dt_dev_get_history_hash(), dt_dev_pixelpipe_get_module_piece(), dt_dev_pixelpipe_get_realtime(), dt_dev_pixelpipe_set_history_hash(), dt_iop_commit_params(), dt_pixelpipe_get_global_hash(), dt_dev_history_item_t::enabled, dt_dev_pixelpipe_iop_t::enabled, FALSE, dt_develop_t::gui_module, dt_dev_history_item_t::hash, dt_develop_t::history, IS_NULL_PTR, dt_dev_pixelpipe_t::last_history_hash, dt_dev_pixelpipe_t::last_history_item, dt_dev_history_item_t::params, TRUE, and dt_dev_pixelpipe_t::want_detail_mask.
Referenced by dt_dev_pixelpipe_change().
|
static |
References _change_pipe(), dt_dev_pixelpipe_change(), dt_dev_pixelpipe_set_input(), DT_MIPMAP_FULL, flag, dt_develop_t::gui_attached, dt_image_t::id, dt_dev_pixelpipe_t::iheight, dt_dev_pixelpipe_t::image, dt_develop_t::image_storage, dt_dev_pixelpipe_t::imgid, IS_NULL_PTR, dt_dev_pixelpipe_t::iwidth, dt_develop_t::raw_height, dt_develop_t::raw_inited, dt_develop_t::raw_width, dt_develop_t::roi, and dt_develop_t::virtual_pipe.
Referenced by dt_dev_pixelpipe_rebuild_all_real(), dt_dev_pixelpipe_resync_history_preview_real(), dt_dev_pixelpipe_sync_virtual(), dt_dev_pixelpipe_update_history_preview_real(), dt_dev_pixelpipe_update_zoom_main_real(), and dt_dev_pixelpipe_update_zoom_preview_real().
| gboolean dt_dev_pixelpipe_activemodule_disables_currentmodule | ( | struct dt_develop_t * | dev, |
| struct dt_iop_module_t * | current_module | ||
| ) |
| gboolean dt_dev_pixelpipe_cache_peek_gui | ( | dt_dev_pixelpipe_t * | pipe, |
| const dt_dev_pixelpipe_iop_t * | piece, | ||
| void ** | data, | ||
| dt_pixel_cache_entry_t ** | cache_entry, | ||
| dt_dev_pixelpipe_cache_wait_t * | wait, | ||
| dt_dev_pixelpipe_cache_ready_callback_t | restart, | ||
| gpointer | restart_data | ||
| ) |
References _dt_dev_pixelpipe_cache_wait_ready_callback(), dt_dev_pixelpipe_iop_t::bypass_cache, dt_dev_pixelpipe_t::bypass_cache, dt_dev_pixelpipe_cache_wait_t::connected, darktable, dt_dev_pixelpipe_t::devid, DT_DEBUG_CONTROL_SIGNAL_CONNECT, DT_DEBUG_DEV, DT_DEV_PIPE_CACHE_REQUEST, dt_dev_pixelpipe_cache_peek(), DT_DEV_PIXELPIPE_CACHE_REQUEST_BACKBUF, DT_DEV_PIXELPIPE_CACHE_REQUEST_MODULE, dt_dev_pixelpipe_cache_wait_cleanup(), dt_dev_pixelpipe_get_hash(), dt_dev_pixelpipe_get_realtime(), dt_dev_pixelpipe_or_changed(), dt_dev_pixelpipe_set_cache_request(), DT_PIXELPIPE_CACHE_HASH_INVALID, dt_pixelpipe_get_pipe_name(), dt_print(), DT_SIGNAL_CACHELINE_READY, FALSE, dt_dev_pixelpipe_iop_t::global_hash, dt_dev_pixelpipe_cache_wait_t::hash, IS_NULL_PTR, dt_dev_pixelpipe_t::no_cache, dt_dev_pixelpipe_cache_wait_t::pipe, darktable_t::pixelpipe_cache, dt_dev_pixelpipe_cache_wait_t::restart, darktable_t::signals, TRUE, dt_dev_pixelpipe_t::type, and dt_dev_pixelpipe_cache_wait_t::user_data.
Referenced by _lib_navigation_draw_callback(), _lib_navigation_history_resync_callback(), _lock_pipe_surface(), _pixelpipe_pick_from_image(), _process_histogram(), _process_vectorscope(), _process_waveform(), _refresh_global_histogram_backbuf_for_hash(), _refresh_preview_cursor_sample(), _refresh_preview_module_histogram_for_hash(), and _sample_picker_from_cache().
| void dt_dev_pixelpipe_cache_wait_cleanup | ( | dt_dev_pixelpipe_cache_wait_t * | wait | ) |
References _dt_dev_pixelpipe_cache_wait_ready_callback(), dt_dev_pixelpipe_cache_wait_t::connected, darktable, DT_DEBUG_CONTROL_SIGNAL_DISCONNECT, DT_PIXELPIPE_CACHE_HASH_INVALID, FALSE, dt_dev_pixelpipe_cache_wait_t::hash, IS_NULL_PTR, dt_dev_pixelpipe_cache_wait_t::pipe, dt_dev_pixelpipe_cache_wait_t::restart, darktable_t::signals, and dt_dev_pixelpipe_cache_wait_t::user_data.
Referenced by _dt_dev_pixelpipe_cache_wait_ready_callback(), and dt_dev_pixelpipe_cache_peek_gui().
| void dt_dev_pixelpipe_change | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev | ||
| ) |
Consume and clear pending change flags in one atomic step.
The previous get-then-store sequence could lose updates when another thread OR-ed a new flag between the load and the reset. That made history resync requests randomly disappear, especially under fast GUI actions such as toggles or consecutive parameter commits.
References _get_debug_pipe_name(), _refresh_pipe_detail_mask_state(), _seal_opencl_cache_policy(), _sync_realtime_top_history_in_place(), dt_dev_pixelpipe_t::bypass_blendif, dt_dev_pixelpipe_t::changed, dt_atomic_exch_int(), DT_DEBUG_DEV, DT_DEV_DETAIL_MASK_NONE, DT_DEV_PIPE_CACHE_REQUEST, DT_DEV_PIPE_REMOVE, DT_DEV_PIPE_SYNCH, DT_DEV_PIPE_TOP_CHANGED, DT_DEV_PIPE_UNCHANGED, DT_DEV_PIPE_ZOOMED, dt_dev_pixelpipe_cleanup_nodes(), dt_dev_pixelpipe_create_nodes(), DT_DEV_PIXELPIPE_DISPLAY_NONE, dt_dev_pixelpipe_get_roi_out(), dt_dev_pixelpipe_synch_all, dt_dev_pixelpipe_synch_top(), dt_free, dt_get_times(), dt_print(), dt_pthread_rwlock_rdlock, dt_pthread_rwlock_unlock, dt_show_times_f(), dt_develop_t::history_mutex, dt_dev_pixelpipe_t::iheight, dt_dev_pixelpipe_t::iwidth, dt_dev_pixelpipe_t::mask_display, dt_dev_pixelpipe_t::nodes, dt_dev_pixelpipe_t::processed_height, dt_dev_pixelpipe_t::processed_width, type, and dt_dev_pixelpipe_t::want_detail_mask.
Referenced by _sync_virtual_pipe(), dt_dev_darkroom_pipeline(), and dt_dev_get_thumbnail_size().
| void dt_dev_pixelpipe_change_zoom_main | ( | dt_develop_t * | dev | ) |
References darktable, dt_atomic_set_int(), dt_control_navigation_redraw(), dt_dev_pixelpipe_set_realtime(), dt_dev_pixelpipe_update_zoom_main, dt_dev_update_mouse_effect_radius(), dt_ui_center(), FALSE, darktable_t::gui, dt_develop_t::gui_attached, IS_NULL_PTR, dt_develop_t::pipe, dt_dev_pixelpipe_t::shutdown, TRUE, and dt_gui_gtk_t::ui.
Referenced by _change_scaling(), _key_scroll(), _lib_navigation_set_position(), _toggle_side_borders_accel_callback(), _zoom_preset_change(), display_borders_callback(), full_screen_callback(), and mouse_moved().
| const dt_dev_pixelpipe_iop_t * dt_dev_pixelpipe_get_module_piece | ( | const dt_dev_pixelpipe_t * | pipe, |
| const dt_iop_module_t * | module | ||
| ) |
References dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_iop_t::enabled, IS_NULL_PTR, and dt_dev_pixelpipe_t::nodes.
Referenced by _get_backbuf_source_piece(), _get_live_histogram_hash(), _refresh_global_histogram_backbuf_for_hash(), _refresh_preview_cursor_sample(), _refresh_preview_histograms(), _refresh_preview_module_histogram_for_hash(), _resolve_backbuf_sampling_source(), _sample_picker_from_cache(), _sync_realtime_top_history_in_place(), _track_active_picker_hashes(), and dt_iop_color_picker_force_cache().
| const dt_dev_pixelpipe_iop_t * dt_dev_pixelpipe_get_prev_enabled_piece | ( | const dt_dev_pixelpipe_t * | pipe, |
| const dt_dev_pixelpipe_iop_t * | piece | ||
| ) |
References dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_iop_t::enabled, IS_NULL_PTR, and dt_dev_pixelpipe_t::nodes.
Referenced by _get_backbuf_source_piece(), _get_live_histogram_hash(), _refresh_global_histogram_backbuf_for_hash(), _refresh_preview_cursor_sample(), _refresh_preview_histograms(), _refresh_preview_module_histogram_for_hash(), _resolve_backbuf_sampling_source(), _sample_picker_from_cache(), _track_active_picker_hashes(), and dt_iop_color_picker_force_cache().
| void dt_dev_pixelpipe_get_roi_in | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev, | ||
| const struct dt_iop_roi_t | roi_out | ||
| ) |
References _get_debug_pipe_name(), dt_iop_buffer_dsc_t::channels, dt_iop_buffer_dsc_t::cst, darktable, dt_dev_pixelpipe_iop_t::data, dt_image_t::dsc, dt_dev_pixelpipe_iop_t::dsc_in, dt_dev_pixelpipe_iop_t::dsc_out, DT_DEBUG_PIPE, dt_dev_pixelpipe_activemodule_disables_currentmodule(), dt_free, dt_print(), dt_dev_pixelpipe_iop_t::enabled, FALSE, dt_iop_buffer_dsc_t::filters, dt_iop_roi_t::height, dt_dev_pixelpipe_t::image, IOP_CS_RAW, dt_dev_pixelpipe_t::nodes, dt_dev_pixelpipe_iop_t::roi_in, dt_dev_pixelpipe_iop_t::roi_out, dt_iop_roi_t::scale, darktable_t::unmuted, dt_iop_roi_t::width, dt_iop_roi_t::x, dt_iop_buffer_dsc_t::xtrans, and dt_iop_roi_t::y.
Referenced by dt_dev_pixelpipe_process().
| void dt_dev_pixelpipe_get_roi_out | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev, | ||
| const int | width_in, | ||
| const int | height_in, | ||
| int * | width, | ||
| int * | height | ||
| ) |
References _get_debug_pipe_name(), dt_dev_pixelpipe_iop_t::buf_in, dt_dev_pixelpipe_iop_t::buf_out, darktable, dt_dev_pixelpipe_iop_t::data, DT_DEBUG_PIPE, dt_dev_pixelpipe_activemodule_disables_currentmodule(), dt_free, dt_print(), dt_dev_pixelpipe_iop_t::enabled, FALSE, height, dt_iop_roi_t::height, dt_dev_pixelpipe_t::nodes, dt_iop_roi_t::scale, darktable_t::unmuted, width, dt_iop_roi_t::width, dt_iop_roi_t::x, and dt_iop_roi_t::y.
Referenced by dt_dev_get_thumbnail_size(), dt_dev_pixelpipe_change(), dt_focus_draw_clusters(), and dt_imageio_export_with_flags().
| gboolean dt_dev_pixelpipe_is_backbufer_valid | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev | ||
| ) |
References dt_dev_pixelpipe_t::backbuf, dt_dev_backbuf_get_hash(), dt_dev_backbuf_get_history_hash(), dt_dev_get_history_hash(), dt_dev_pixelpipe_get_hash(), and DT_PIXELPIPE_CACHE_HASH_INVALID.
Referenced by _do_get_structure_auto(), _do_get_structure_lines(), _do_get_structure_quad(), _is_backbuf_ready(), and _lib_navigation_draw_callback().
| gboolean dt_dev_pixelpipe_is_pipeline_valid | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev | ||
| ) |
References dt_dev_get_history_hash(), and dt_dev_pixelpipe_get_history_hash().
| uint64_t dt_dev_pixelpipe_node_hash | ( | dt_dev_pixelpipe_t * | pipe, |
| const dt_dev_pixelpipe_iop_t * | piece, | ||
| const dt_iop_roi_t | roi_out, | ||
| const int | pos | ||
| ) |
References _default_pipe_hash(), dt_hash(), and dt_dev_pixelpipe_iop_t::global_hash.
Referenced by _current_preview_input_hash(), _init_base_buffer(), _sync_private_buffer_from_preview_cache(), and dt_dev_pixelpipe_process_rec().
| void dt_dev_pixelpipe_rebuild_all_real | ( | dt_develop_t * | dev | ) |
| void dt_dev_pixelpipe_reset_all | ( | dt_develop_t * | dev | ) |
| void dt_dev_pixelpipe_resync_history_all_real | ( | dt_develop_t * | dev | ) |
| void dt_dev_pixelpipe_resync_history_main_real | ( | dt_develop_t * | dev | ) |
References _change_pipe(), DT_DEV_PIPE_SYNCH, dt_develop_t::gui_attached, IS_NULL_PTR, and dt_develop_t::pipe.
| void dt_dev_pixelpipe_resync_history_preview_real | ( | dt_develop_t * | dev | ) |
| void dt_dev_pixelpipe_sync_virtual | ( | dt_develop_t * | dev, |
| dt_dev_pixelpipe_change_t | flag | ||
| ) |
References _sync_virtual_pipe(), and flag.
Referenced by gui_post_expose(), and gui_post_expose().
| 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, |
| 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, IS_NULL_PTR, 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().
| void dt_dev_pixelpipe_update_history_all_real | ( | dt_develop_t * | dev | ) |
| void dt_dev_pixelpipe_update_history_main_real | ( | dt_develop_t * | dev | ) |
References _change_pipe(), DT_DEV_PIPE_TOP_CHANGED, dt_develop_t::gui_attached, IS_NULL_PTR, and dt_develop_t::pipe.
| void dt_dev_pixelpipe_update_history_preview_real | ( | dt_develop_t * | dev | ) |
| void dt_dev_pixelpipe_update_zoom_main_real | ( | dt_develop_t * | dev | ) |
| void dt_dev_pixelpipe_update_zoom_preview_real | ( | dt_develop_t * | dev | ) |
| void dt_pixelpipe_get_global_hash | ( | dt_dev_pixelpipe_t * | pipe, |
| dt_develop_t * | dev | ||
| ) |
References _default_pipe_hash(), _get_debug_pipe_name(), dt_dev_pixelpipe_iop_t::blendop_hash, dt_iop_buffer_dsc_t::bpp, dt_dev_pixelpipe_iop_t::bypass_cache, dt_dev_pixelpipe_t::bypass_cache, darktable, dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_iop_t::dsc_in, dt_dev_pixelpipe_iop_t::dsc_out, DT_DEBUG_PIPE, DT_DEBUG_VERBOSE, dt_dev_pixelpipe_activemodule_disables_currentmodule(), DT_DEV_PIXELPIPE_DISPLAY_NONE, DT_DEV_PIXELPIPE_FULL, dt_dev_pixelpipe_set_hash(), dt_hash(), dt_print(), dt_dev_pixelpipe_iop_t::enabled, FALSE, dt_dev_pixelpipe_iop_t::global_hash, dt_dev_pixelpipe_iop_t::global_mask_hash, dt_develop_t::gui_attached, dt_develop_t::gui_module, dt_dev_pixelpipe_iop_t::hash, IOP_TAG_DISTORT, dt_dev_pixelpipe_t::nodes, dt_develop_t::pipe, dt_dev_pixelpipe_iop_t::roi_in, dt_dev_pixelpipe_iop_t::roi_out, TRUE, type, dt_dev_pixelpipe_t::type, and darktable_t::unmuted.
Referenced by _sync_realtime_top_history_in_place(), and dt_dev_pixelpipe_process().