![]() |
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) dt_dev_pixelpipe_synch_all_real(pipe, __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_cache_request_t | dt_dev_pixelpipe_cache_request_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 , DT_DEV_PIPE_CACHE_REQUEST = 1 << 4 , DT_DEV_PIPE_REENTRY = 1 << 5 } |
| enum | dt_dev_pixelpipe_cache_request_t { DT_DEV_PIXELPIPE_CACHE_REQUEST_NONE = 0 , DT_DEV_PIXELPIPE_CACHE_REQUEST_BACKBUF = 1 , DT_DEV_PIXELPIPE_CACHE_REQUEST_MODULE = 2 } |
| #define dt_dev_pixelpipe_synch_all | ( | pipe | ) | dt_dev_pixelpipe_synch_all_real(pipe, __FUNCTION__) |
Definition at line 496 of file pixelpipe_hb.h.
| 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 struct dt_dev_pixelpipe_t dt_dev_pixelpipe_t |
| Enumerator | |
|---|---|
| DT_DEV_PIXELPIPE_CACHE_REQUEST_NONE | |
| DT_DEV_PIXELPIPE_CACHE_REQUEST_BACKBUF | |
| DT_DEV_PIXELPIPE_CACHE_REQUEST_MODULE | |
Definition at line 174 of file pixelpipe_hb.h.
| Enumerator | |
|---|---|
| DT_DEV_PIPE_UNCHANGED | |
| DT_DEV_PIPE_TOP_CHANGED | |
| DT_DEV_PIPE_REMOVE | |
| DT_DEV_PIPE_SYNCH | |
| DT_DEV_PIPE_ZOOMED | |
| DT_DEV_PIPE_CACHE_REQUEST | |
| DT_DEV_PIPE_REENTRY | |
Definition at line 162 of file pixelpipe_hb.h.
|
inlinestatic |
Definition at line 196 of file pixelpipe_hb.h.
References dt_atomic_get_uint64(), and dt_backbuf_t::hash.
Referenced by _build_preview_fallback_surface(), _clear_histogram_backbuf(), _get_backbuf_source_piece(), _lib_navigation_draw_callback(), _lib_snapshots_refresh_pipe_image(), _lock_pipe_surface(), _needs_recompute(), _redraw_surface(), _refresh_global_histogram_backbuf_for_hash(), _resolve_backbuf_sampling_source(), _update_backbuf_cache_reference(), dt_dev_pixelpipe_cache_peek_gui(), dt_dev_pixelpipe_cleanup(), dt_dev_pixelpipe_is_backbufer_valid(), 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 |
Definition at line 206 of file pixelpipe_hb.h.
References dt_atomic_get_uint64(), and dt_backbuf_t::history_hash.
Referenced by dt_dev_pixelpipe_is_backbufer_valid().
|
inlinestatic |
Definition at line 201 of file pixelpipe_hb.h.
References dt_atomic_set_uint64(), and dt_backbuf_t::hash.
Referenced by dt_dev_set_backbuf(), and leave().
|
inlinestatic |
Definition at line 211 of file pixelpipe_hb.h.
References dt_atomic_set_uint64(), and dt_backbuf_t::history_hash.
Referenced by dt_dev_set_backbuf().
| 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(), and _refine_with_detail_mask_cl().
| 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, | ||
| int * | error | ||
| ) |
Retrieve a provider mask from the global cache and transform it to a consumer.
The returned buffer is always a caller-owned working copy. If an expected cache entry was evicted, *error is set to 1 so interactive pipelines can perform one targeted provider retry. error may be NULL for export/thumbnail callers.
Referenced by _develop_blend_init_raster_mask(), and write_image().
| void dt_dev_pixelpipe_cleanup | ( | dt_dev_pixelpipe_t * | pipe | ) |
Definition at line 490 of file pixelpipe_hb.c.
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_auto_destroy_apply(), dt_dev_pixelpipe_cache_flag_auto_destroy(), dt_dev_pixelpipe_cache_flush_clmem_for_pipe(), dt_dev_pixelpipe_cache_get_entry(), dt_dev_pixelpipe_cache_unref_hash(), dt_dev_pixelpipe_cleanup_nodes(), dt_dev_pixelpipe_reset_cache_request(), 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, k, dt_dev_pixelpipe_t::last_devid, dt_dev_pixelpipe_t::no_cache, dt_dev_pixelpipe_t::output_imgid, darktable_t::pixelpipe_cache, dt_dev_pixelpipe_t::raster_mask_hashes, TRUE, UNKNOWN_IMAGE, and void().
Referenced by _lib_snapshots_refresh_pipe_image(), dt_dev_cleanup(), dt_focus_draw_clusters(), and dt_imageio_export_with_flags().
| void dt_dev_pixelpipe_cleanup_nodes | ( | dt_dev_pixelpipe_t * | pipe | ) |
Definition at line 587 of file pixelpipe_hb.c.
References dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_set_history_hash(), dt_free, dt_free_gpointer(), dt_iop_cleanup_pipe(), DT_PIXELPIPE_CACHE_HASH_INVALID, dt_dev_pixelpipe_t::iop_order_list, IS_NULL_PTR, and dt_dev_pixelpipe_t::nodes.
Referenced by dt_dev_pixelpipe_change(), dt_dev_pixelpipe_cleanup(), and leave().
| void dt_dev_pixelpipe_create_nodes | ( | dt_dev_pixelpipe_t * | pipe | ) |
Definition at line 606 of file pixelpipe_hb.c.
References _reset_piece_cache_entry(), dt_dev_pixelpipe_t::dev, dt_iop_buffer_dsc_update_bpp(), dt_iop_init_pipe(), dt_ioppr_iop_order_copy_deep(), DT_PIXELPIPE_CACHE_HASH_INVALID, 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, IS_NULL_PTR, dt_dev_pixelpipe_t::iwidth, dt_dev_pixelpipe_t::nodes, TRUE, and TYPE_FLOAT.
Referenced by _lib_snapshots_refresh_pipe_image(), 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 | ||
| ) |
Definition at line 1157 of file pixelpipe_hb.c.
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 | ||
| ) |
Definition at line 1171 of file pixelpipe_hb.c.
References dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_iop_t::enabled, and dt_dev_pixelpipe_t::nodes.
Referenced by _filter_pipeline().
|
inlinestatic |
Definition at line 422 of file pixelpipe_hb.h.
References dt_dev_pixelpipe_t::cache_request, dt_atomic_get_int(), and DT_DEV_PIXELPIPE_CACHE_REQUEST_NONE.
Referenced by dt_dev_darkroom_pipeline(), and dt_dev_pixelpipe_process().
|
inlinestatic |
Definition at line 428 of file pixelpipe_hb.h.
References dt_dev_pixelpipe_t::cache_request_module, and dt_atomic_get_ptr().
Referenced by dt_dev_pixelpipe_process().
|
inlinestatic |
Definition at line 407 of file pixelpipe_hb.h.
References dt_dev_pixelpipe_t::changed, and dt_atomic_get_int().
Referenced by _resync_pipe_with_history(), and dt_dev_get_thumbnail_size().
|
inlinestatic |
Definition at line 387 of file pixelpipe_hb.h.
References dt_atomic_get_uint64(), and dt_dev_pixelpipe_t::hash.
Referenced by _update_backbuf_cache_reference(), dt_dev_pixelpipe_cache_peek_gui(), dt_dev_pixelpipe_is_backbufer_valid(), dt_dev_pixelpipe_process(), dt_dev_pixelpipe_process_rec(), dt_dev_resync_mipmap_cache(), and gui_post_expose().
|
inlinestatic |
Definition at line 397 of file pixelpipe_hb.h.
References dt_atomic_get_uint64(), and dt_dev_pixelpipe_t::history_hash.
Referenced by _resync_pipe_with_history(), _update_backbuf_cache_reference(), 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 | ) |
Definition at line 465 of file pixelpipe_hb.c.
References dt_atomic_get_int(), FALSE, and dt_dev_pixelpipe_t::realtime.
Referenced by _module_requires_global_histogram_input_cache(), _module_requires_global_histogram_output_cache(), _sample_picker_from_cache(), _seal_opencl_cache_policy(), _sync_focused_in_place(), commit_params(), dt_dev_darkroom_pipeline(), dt_dev_get_thumbnail_size(), dt_dev_pixelpipe_cache_peek_gui(), dt_drawlayer_set_pipeline_realtime_mode(), and process_cl().
| gboolean dt_dev_pixelpipe_has_reentry | ( | dt_dev_pixelpipe_t * | pipe | ) |
Definition at line 575 of file pixelpipe_hb.c.
References dt_dev_pixelpipe_t::reentry.
Referenced by dt_dev_darkroom_pipeline(), and dt_dev_pixelpipe_process().
|
inlinestatic |
Definition at line 476 of file pixelpipe_hb.h.
References dt_atomic_get_int(), dt_develop_t::pipe, dt_dev_pixelpipe_t::shutdown, and dt_dev_pixelpipe_t::shutdown_ext.
Referenced by dt_dev_pixelpipe_process().
| int dt_dev_pixelpipe_init | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev | ||
| ) |
Definition at line 416 of file pixelpipe_hb.c.
References dt_dev_pixelpipe_t::dev, 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 | ) |
Definition at line 427 of file pixelpipe_hb.c.
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_cache_request(), 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::iscale, dt_dev_pixelpipe_t::last_devid, dt_dev_pixelpipe_t::last_history_hash, dt_dev_pixelpipe_t::levels, dt_dev_pixelpipe_t::output_imgid, dt_dev_pixelpipe_t::raster_mask_hashes, dt_dev_pixelpipe_t::rawdetail_mask_hash, 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, |
| struct dt_develop_t * | dev | ||
| ) |
Definition at line 394 of file pixelpipe_hb.c.
References dt_dev_pixelpipe_t::dev, 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, |
| struct dt_develop_t * | dev, | ||
| int | levels, | ||
| gboolean | store_masks | ||
| ) |
Definition at line 374 of file pixelpipe_hb.c.
References dt_dev_pixelpipe_t::dev, DT_DEV_PIXELPIPE_EXPORT, dt_dev_pixelpipe_init_cached(), FALSE, dt_dev_pixelpipe_t::gui_observable_source, dt_dev_pixelpipe_t::levels, levels(), dt_dev_pixelpipe_t::store_all_raster_masks, and dt_dev_pixelpipe_t::type.
Referenced by dt_imageio_export_with_flags().
| int dt_dev_pixelpipe_init_preview | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev | ||
| ) |
Definition at line 403 of file pixelpipe_hb.c.
References dt_dev_pixelpipe_t::dev, dt_dev_pixelpipe_init_cached(), DT_DEV_PIXELPIPE_PREVIEW, dt_dev_pixelpipe_t::gui_observable_source, dt_dev_pixelpipe_t::store_all_raster_masks, TRUE, and dt_dev_pixelpipe_t::type.
Referenced by _lib_snapshots_refresh_pipe_image(), and dt_dev_init().
| int dt_dev_pixelpipe_init_thumbnail | ( | dt_dev_pixelpipe_t * | pipe, |
| struct dt_develop_t * | dev | ||
| ) |
Definition at line 385 of file pixelpipe_hb.c.
References dt_dev_pixelpipe_t::dev, 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 |
Definition at line 417 of file pixelpipe_hb.h.
References dt_dev_pixelpipe_t::changed, dt_atomic_or_int(), and flags.
Referenced by _change_pipe(), _publish_backend_progress(), _resync_pipe_with_history(), dt_dev_darkroom_pipeline(), dt_dev_get_thumbnail_size(), and dt_dev_pixelpipe_cache_peek_gui().
| int dt_dev_pixelpipe_process | ( | dt_dev_pixelpipe_t * | pipe, |
| dt_iop_roi_t | roi | ||
| ) |
We loop over enabled providers and the mask ids they advertise, looking for dedicated cachelines required by this graph. Acquire the new references before releasing the previous set so an unchanged mask never becomes briefly evictable between consecutive renders.
Invalidate immediately before the raster reconstruction pass, while no other pixelpipe can republish one of these shared hashes. Invalidating when the first pass failed is too early: the preview pipe may run before this retry and recreate the provider image while the dedicated mask cacheline remains absent.
We are looking for the provider output captured in reentry_hash, then collect every enabled cumulative output after it. This forces recursion through the provider while preserving all upstream cache lines.
Definition at line 1279 of file pixelpipe_hb.c.
References _bypass_cache(), _get_requested_piece_node(), _print_opencl_errors(), _update_backbuf_cache_reference(), dt_develop_t::color_picker, darktable, dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_t::dev, dt_dev_pixelpipe_t::devid, dt_capabilities_remove(), DT_DEBUG_DEV, DT_DEBUG_MEMORY, DT_DEBUG_OPENCL, dt_dev_pixelpipe_cache_invalidate_hashes(), dt_dev_pixelpipe_cache_peek(), dt_dev_pixelpipe_cache_print(), dt_dev_pixelpipe_cache_ref_entry_by_hash(), DT_DEV_PIXELPIPE_CACHE_REQUEST_MODULE, dt_dev_pixelpipe_cache_unref_hash(), DT_DEV_PIXELPIPE_DISPLAY_NONE, DT_DEV_PIXELPIPE_EXPORT, DT_DEV_PIXELPIPE_FULL, dt_dev_pixelpipe_get_cache_request(), dt_dev_pixelpipe_get_cache_request_module(), dt_dev_pixelpipe_get_hash(), dt_dev_pixelpipe_get_history_hash(), dt_dev_pixelpipe_get_roi_in(), dt_dev_pixelpipe_has_reentry(), dt_dev_pixelpipe_has_shutdown(), DT_DEV_PIXELPIPE_PREVIEW, dt_dev_pixelpipe_process_rec(), dt_dev_pixelpipe_raster_mask_hash(), dt_dev_pixelpipe_reset_cache_request(), DT_DEV_PIXELPIPE_THUMBNAIL, dt_free, dt_get_times(), dt_iop_is_raster_mask_used(), 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_sentry_set_processed_image(), dt_show_times(), dt_telemetry_record_file_type(), dt_dev_pixelpipe_iop_t::enabled, dt_opencl_t::error_count, FALSE, dt_dev_pixelpipe_t::flush_cache, dt_develop_t::forms, dt_dev_pixelpipe_t::forms, dt_dev_pixelpipe_iop_t::global_hash, dt_develop_t::gui_attached, dt_iop_roi_t::height, dt_develop_t::image_storage, dt_develop_t::iop, IS_NULL_PTR, k, KILL_SWITCH_PIPE, dt_dev_pixelpipe_t::last_devid, dt_dev_pixelpipe_t::mask_display, mask_id, mask_name, dt_develop_t::masks_mutex, dt_dev_pixelpipe_t::nodes, dt_iop_module_t::op, 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::raster_mask_hashes, dt_dev_pixelpipe_t::reentry_hash, dt_opencl_t::stopped, dt_dev_pixelpipe_t::store_all_raster_masks, TRUE, dt_dev_pixelpipe_t::type, darktable_t::unmuted, void(), and dt_iop_roi_t::width.
Referenced by _lib_snapshots_refresh_pipe_image(), dt_dev_darkroom_pipeline(), and dt_imageio_export_with_flags().
|
inlinestatic |
Definition at line 442 of file pixelpipe_hb.h.
References dt_dev_pixelpipe_t::cache_request, dt_dev_pixelpipe_t::cache_request_module, dt_atomic_set_int(), dt_atomic_set_ptr(), DT_DEV_PIXELPIPE_CACHE_REQUEST_NONE, and IS_NULL_PTR.
Referenced by dt_dev_pixelpipe_cleanup(), dt_dev_pixelpipe_init_cached(), and dt_dev_pixelpipe_process().
| void dt_dev_pixelpipe_reset_reentry | ( | dt_dev_pixelpipe_t * | pipe | ) |
Definition at line 580 of file pixelpipe_hb.c.
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 |
Definition at line 433 of file pixelpipe_hb.h.
References dt_dev_pixelpipe_t::cache_request, dt_dev_pixelpipe_t::cache_request_module, dt_atomic_set_int(), dt_atomic_set_ptr(), and IS_NULL_PTR.
Referenced by dt_dev_darkroom_pipeline(), and dt_dev_pixelpipe_cache_peek_gui().
|
inlinestatic |
Definition at line 412 of file pixelpipe_hb.h.
References dt_dev_pixelpipe_t::changed, dt_atomic_set_int(), and v.
Referenced by dt_dev_pixelpipe_init_cached().
|
inlinestatic |
Definition at line 392 of file pixelpipe_hb.h.
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 |
Definition at line 402 of file pixelpipe_hb.h.
References dt_atomic_set_uint64(), and dt_dev_pixelpipe_t::history_hash.
Referenced by dt_dev_get_thumbnail_size(), dt_dev_pixelpipe_change(), dt_dev_pixelpipe_cleanup_nodes(), and dt_dev_pixelpipe_init_cached().
| 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 | ||
| ) |
Definition at line 481 of file pixelpipe_hb.c.
References dt_free, dt_dev_pixelpipe_t::icc_filename, dt_dev_pixelpipe_t::icc_intent, and dt_dev_pixelpipe_t::icc_type.
Referenced by _lib_snapshots_refresh_pipe_image(), and dt_imageio_export_with_flags().
| void dt_dev_pixelpipe_set_input | ( | dt_dev_pixelpipe_t * | pipe, |
| int32_t | imgid, | ||
| int | width, | ||
| int | height, | ||
| float | iscale, | ||
| dt_mipmap_size_t | size | ||
| ) |
Definition at line 470 of file pixelpipe_hb.c.
References dt_dev_pixelpipe_t::dev, height, dt_dev_pixelpipe_t::iheight, dt_develop_t::image_storage, dt_dev_pixelpipe_t::imgid, iscale, dt_dev_pixelpipe_t::iscale, dt_dev_pixelpipe_t::iwidth, size, dt_dev_pixelpipe_t::size, and width.
Referenced by _lib_snapshots_refresh_pipe_image(), _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 | ||
| ) |
Definition at line 459 of file pixelpipe_hb.c.
References dt_atomic_set_int(), FALSE, IS_NULL_PTR, dt_dev_pixelpipe_t::realtime, state, 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 bypass normal exact hits for one processing pass. Raster-mask consumers use this after the dedicated side-band cacheline was evicted while the provider image remained cached: provider and downstream image states are invalidated immediately before the retry, while upstream states and the synchronized node graph remain intact.
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. |
Definition at line 548 of file pixelpipe_hb.c.
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, |
| 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 |
Definition at line 1437 of file dev_pixelpipe.c.
References _get_debug_pipe_name(), _sync_pipe_nodes_from_history(), dt_dev_pixelpipe_t::dev, DT_DEBUG_DEV, dt_dev_get_history_end_ext(), dt_free, 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 | ) |
Definition at line 1462 of file dev_pixelpipe.c.
References _get_debug_pipe_name(), _sync_pipe_nodes_from_history_from_node(), dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_t::dev, DT_DEBUG_DEV, DT_DEBUG_PARAMS, dt_dev_get_history_end_ext(), dt_free, 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().
| 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. |
Definition at line 562 of file pixelpipe_hb.c.
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().
| float * dt_dev_retrieve_rawdetail_mask | ( | const dt_dev_pixelpipe_t * | pipe, |
| const struct dt_iop_module_t * | target_module | ||
| ) |
Referenced by _refine_with_detail_mask(), and _refine_with_detail_mask_cl().
| char * dt_pixelpipe_get_pipe_name | ( | dt_dev_pixelpipe_type_t | pipe_type | ) |
Definition at line 257 of file pixelpipe_hb.c.
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_cache_peek_gui(), dt_dev_pixelpipe_debug_dump_module_io(), dt_dev_pixelpipe_process(), dt_dev_pixelpipe_process_rec(), and dt_iop_commit_params().