Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
pixelpipe_hb.h
Go to the documentation of this file.
1/*
2 This file is part of darktable,
3 Copyright (C) 2009-2013 johannes hanika.
4 Copyright (C) 2011 Henrik Andersson.
5 Copyright (C) 2011-2014, 2017 Ulrich Pegelow.
6 Copyright (C) 2012 Richard Wonka.
7 Copyright (C) 2013 Simon Spannagel.
8 Copyright (C) 2014-2016 Roman Lebedev.
9 Copyright (C) 2014, 2016-2017, 2019 Tobias Ellinghaus.
10 Copyright (C) 2016 Pedro Côrte-Real.
11 Copyright (C) 2018-2019 Edgardo Hoszowski.
12 Copyright (C) 2020, 2022-2026 Aurélien PIERRE.
13 Copyright (C) 2020-2021 Pascal Obry.
14 Copyright (C) 2020 Ralf Brown.
15 Copyright (C) 2021-2022 Hanno Schwalm.
16 Copyright (C) 2022 Martin Bařinka.
17
18 darktable is free software: you can redistribute it and/or modify
19 it under the terms of the GNU General Public License as published by
20 the Free Software Foundation, either version 3 of the License, or
21 (at your option) any later version.
22
23 darktable is distributed in the hope that it will be useful,
24 but WITHOUT ANY WARRANTY; without even the implied warranty of
25 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 GNU General Public License for more details.
27
28 You should have received a copy of the GNU General Public License
29 along with darktable. If not, see <http://www.gnu.org/licenses/>.
30*/
31
32#pragma once
33
34#include "common/atomic.h"
35#include "common/image.h"
36#include "common/imageio.h"
37#include "common/iop_order.h"
38#include "develop/imageop.h"
40
41
47struct dt_iop_module_t;
48struct dt_dev_raster_mask_t;
50
52{
53 int id; // 0 is reserved for the reusable masks written in blend.c
54 float *mask;
56
95{
96 struct dt_iop_module_t *module; // the module in the dev operation stack
97 void *data; // to be used by the module to store stuff per pipe piece
98
99 // Memory size of *data upon which we will compute integrity hashes.
100 // This needs to be the size of the constant part of the data structure.
101 // It can even be 0 if nothing relevant to cache integrity hashes is held there.
102 // If the data struct contains pointers, they should go at the end of the struct,
103 // and the size here should be adjusted to only include constant bits, starting at the address of *data.
104 // "Constant" means identical between 2 pipeline nodes init,
105 // because the lifecycle of a pixelpipe cache is longer than that of a pixelpipe itself.
106 // See an example in colorbalancergb.c
107 size_t data_size;
108
109 void *blendop_data; // to be used by the module to store blendop per pipe piece
110 gboolean enabled; // used to disable parts of the pipe for export, independent on module itself.
111
112 dt_dev_request_flags_t request_histogram; // (bitwise) set if you want an histogram captured
113 dt_dev_histogram_collection_params_t histogram_params; // set histogram generation params
114
115 int iwidth, iheight; // width and height of input buffer
116
117 // Hash representing the current state of the params, blend params and enabled state of this individual module
120
121 // Cumulative hash representing the current module hash and all the upstream modules from the pipeline,
122 // for the current ROI.
124
125 // Same as global hash but for raster masks
127
128 int bpc; // bits per channel, 32 means float
129 dt_iop_roi_t buf_in, buf_out; // theoretical full buffer regions of interest, as passed through modify_roi_out
130 dt_iop_roi_t roi_in, roi_out; // planned runtime regions of interest after backward ROI propagation
131 int process_cl_ready; // set this to 0 in commit_params to temporarily disable the use of process_cl
132 int process_tiling_ready; // set this to 0 in commit_params to temporarily disable tiling
133
134 // Sealed descriptor contract for this module instance.
135 // dsc_in is the module input contract after input_format() sanitized against
136 // the actual upstream storage format.
137 // dsc_out is the authored module output contract after commit_params() and
138 // output_format().
139 // dsc_mask carries the mask-side storage contract when masks are produced.
141
142 // bypass the cache for this module
143 gboolean bypass_cache;
144
145 // Snapshot of the last reusable output cacheline metadata.
146 // This is intentionally NOT used for bypass_cache / no_cache / reentry modes:
147 // - disposable outputs are flagged auto-destroy and must not be rekeyed,
148 // - realtime outputs and GPU-transient outputs can safely reuse their cacheline.
149 // The reused line is rekeyed while still write-locked, and it is destroyed if processing later
150 // fails before producing a valid output for the new hash.
152
153 // Set to TRUE for modules that should mandatorily cache their output to RAM
154 // even when running on OpenCL. This is a processing-policy flag authored
155 // during synchronization and then consumed by one recursion step; it does not
156 // change the descriptor contract.
158
159 GHashTable *raster_masks; // GList* of dt_dev_pixelpipe_raster_mask_t
161
163{
164 DT_DEV_PIPE_UNCHANGED = 0, // no event
165 DT_DEV_PIPE_TOP_CHANGED = 1 << 0, // only params of top element changed
166 DT_DEV_PIPE_REMOVE = 1 << 1, // possibly elements of the pipe have to be removed
168 = 1 << 2, // all nodes up to end need to be synched, but no removal of module pieces is necessary
169 DT_DEV_PIPE_ZOOMED = 1 << 3 // zoom event, preview pipe does not need changes
171
173{
174 DT_DEV_PIXELPIPE_DIRTY = 0, // history stack changed or image new
175 DT_DEV_PIXELPIPE_UNDEF = 1, // pixelpipe computation started and we don't know yet
176 DT_DEV_PIXELPIPE_VALID = 2, // pixelpipe has finished; valid result
177 DT_DEV_PIXELPIPE_INVALID = 3 // pixelpipe has finished; invalid result
179
186typedef struct dt_backbuf_t
187{
188 size_t bpp; // bits per pixel
189 size_t width; // pixel size of image
190 size_t height; // pixel size of image
191 dt_atomic_uint64 hash; // data checksum/integrity hash, for example to connect to a cacheline
192 dt_atomic_uint64 history_hash; // arbitrary state hash
194
195static inline uint64_t dt_dev_backbuf_get_hash(const dt_backbuf_t *backbuf)
196{
197 return dt_atomic_get_uint64(&backbuf->hash);
198}
199
200static inline void dt_dev_backbuf_set_hash(dt_backbuf_t *backbuf, const uint64_t hash)
201{
202 dt_atomic_set_uint64(&backbuf->hash, hash);
203}
204
206{
207 return dt_atomic_get_uint64(&backbuf->history_hash);
208}
209
210static inline void dt_dev_backbuf_set_history_hash(dt_backbuf_t *backbuf, const uint64_t history_hash)
211{
212 dt_atomic_set_uint64(&backbuf->history_hash, history_hash);
213}
214
215typedef struct dt_dev_pixelpipe_t
216{
217 // input image. Will be fetched directly from mipmap cache
218 int32_t imgid;
220
221 // width and height of full-resolution input buffer
223
224 // dimensions of processed buffer assuming we take full-resolution input
226
228
235
236 // instances of pixelpipe, stored in GList of dt_dev_pixelpipe_iop_t
237 GList *nodes;
238 // event flag
240
241 // backbuffer (output)
243
244 // Validity checksum of whole pipeline,
245 // taken as the global hash of the last pipe node (module),
246 // after the last synchronization between dev history and pipe nodes completed.
247 // This is computed in dt_dev_pixelpipe_get_global_hash
248 // ahead of processing image.
249 dt_atomic_uint64 hash;
250
251 dt_pthread_mutex_t busy_mutex;
252
253 // the data for the luminance mask are kept in a buffer written by demosaic or rawprepare
254 // as we have to scale the mask later ke keep roi at that stage
258
260 // processing is true when actual pixel computations are ongoing
262 // running is true when the pipe thread is running, computing or idle
264 // shutting down?
266 // Best-effort processing mode. When TRUE, the processing path bypasses the
267 // early-abort shutdown kill-switch checks that normally stop a stale pipeline
268 // as soon as parameters changed. This allows long-running interactive
269 // pipelines to keep producing "good enough" output until the flag is cleared.
270 // Cleanup/teardown shutdown semantics are unchanged.
272 // opencl enabled for this pixelpipe?
274 // opencl error detected?
276 // running in a tiling context?
278 // should this pixelpipe display a mask in the end?
280 // should this pixelpipe completely suppressed the blendif module?
282 // input data based on this timestamp:
285 // This pipe feeds GUI-side observables such as global histograms and picker
286 // sampling. The processing core reacts to this property instead of branching
287 // on pipeline type.
289 // the final output pixel format this pixelpipe will be converted to
291 // opencl device that has been locked for this pipe.
292 int devid;
293 // image struct as it was when the pixelpipe was initialized. copied to avoid race conditions.
295 // the user might choose to overwrite the output color space and rendering intent.
299 // snapshot of modules iop_order
301 // snapshot of mask list
302 GList *forms;
303 // the masks generated in the pipe for later reusal are inside dt_dev_pixelpipe_iop_t
305
306 // hash of the last history item synchronized with pipeline
307 // that's because the sync_top option can't assume only one history
308 // item was added since the last synchronization.
310 // pointer identity of the last synchronized history item.
311 // This complements `last_history_hash` for in-place top-entry updates where
312 // the same history node is reused and its hash changes.
314
315 // hash of the whole history stack at the time of synchonization
316 // between pipe and history. This is a local copy of
317 // dev_history_get_hash()
318 dt_atomic_uint64 history_hash;
319 // Modules can set this to TRUE internally so the pipeline will
320 // restart right away, in the same thread.
321 // The reentry flag can only be reset (to FALSE) by the same object that captured it.
322 // DO NOT SET THAT DIRECTLY, use the setter/getter functions
323 gboolean reentry;
324
325 // Unique identifier of the object capturing the reentry flag.
326 // This can be a mask or module hash, or anything that stays constant
327 // across 2 pipeline runs from a same thread (aka as long as we don't reinit).
328 // DO NOT SET THAT DIRECTLY, use the setter/getter functions
330
331 // Can be set arbitrarily by pixelpipe modules at runtime
332 // to invalidate downstream module cache lines.
333 // This always gets reset to FALSE when a pipeline finishes,
334 // whether on success or on error.
335 gboolean flush_cache;
336
337 // TRUE if at least one module is bypassing the cache
338 gboolean bypass_cache;
339
340 // If TRUE, do not keep any pixelpipe cache lines around for reuse.
341 // This is intended for one-shot pipelines such as thumbnail exports where caching is pure overhead
342 // and can lead to memory pressure (RAM buffers + OpenCL pinned/device buffers).
343 gboolean no_cache;
344
345 // Temporarily pause the infinite loop of pipeline
346 gboolean pause;
347
349
351{
352 return dt_atomic_get_uint64(&pipe->hash);
353}
354
355static inline void dt_dev_pixelpipe_set_hash(dt_dev_pixelpipe_t *pipe, const uint64_t hash)
356{
357 dt_atomic_set_uint64(&pipe->hash, hash);
358}
359
364
365static inline void dt_dev_pixelpipe_set_history_hash(dt_dev_pixelpipe_t *pipe, const uint64_t history_hash)
366{
367 dt_atomic_set_uint64(&pipe->history_hash, history_hash);
368}
369
374
379
384
385struct dt_develop_t;
386
387#ifdef __cplusplus
388extern "C" {
389#endif
390
392
393// inits the pixelpipe with plain passthrough input/output and empty input and default caching settings.
395// inits the preview pixelpipe with plain passthrough input/output and empty input and default caching
396// settings.
398// inits the pixelpipe with settings optimized for full-image export (no history stack cache)
400// inits the pixelpipe with settings optimized for thumbnail export (no history stack cache)
402// inits all but the pixel caches, so you can't actually process an image (just get dimensions and
403// distortions)
405// inits the pixelpipe
407// enable/disable best-effort processing mode, bypassing the usual early-abort
408// shutdown checks while the flag stays enabled.
410// return whether best-effort processing mode is currently enabled.
412// constructs a new input buffer from given RGB float array.
413void dt_dev_pixelpipe_set_input(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, int32_t imgid, int width,
415// set some metadata for colorout to avoid race conditions.
417 const gchar *icc_filename, dt_iop_color_intent_t icc_intent);
418// destroys all allocated data.
420// cleanup all nodes except clean input/output
422// sync with develop_t history stack from scratch (new node added, have to pop old ones)
423// this should be called with dev->history_mutex locked in read mode
425// sync with develop_t history stack by just copying the top item params (same op, new params on top)
427#define dt_dev_pixelpipe_synch_all(pipe, dev) dt_dev_pixelpipe_synch_all_real(pipe, dev, __FUNCTION__)
428// adjust output node according to history stack (history pop event)
430
431// process region of interest of pixels. returns 1 if pipe was altered during processing.
433
434// Refresh GUI samplers from the cachelines already published by a darkroom pipe.
435
436// disable given op and all that comes after it in the pipe:
438// disable given op and all that comes before it in the pipe:
440
441// helper function to pass a raster mask through a (so far) processed pipe
442// `*error` will be set to 1 if the raster mask reference couldn't be found while it should have been,
443// aka not if user has forgotten to input what module should provide its mask, but only
444// if the mask reference has been lost by the pipeline. This should lead to a pipeline cache flushing.
445// `*error` can be NULL, e.g. for non-cached pipelines (export, thumbnail).
446float *dt_dev_get_raster_mask(dt_dev_pixelpipe_t *pipe, const struct dt_iop_module_t *raster_mask_source,
447 const int raster_mask_id, const struct dt_iop_module_t *target_module,
448 gboolean *free_mask, int *error);
449
450// some helper functions related to the details mask interface
452
454 float *const rgb, const dt_iop_roi_t *const roi_in, const int mode);
455#ifdef HAVE_OPENCL
457 cl_mem in, const dt_iop_roi_t *const roi_in, const int mode);
458#endif
459
460// helper function writing the pipe-processed ctmask data to dest
462
463
484
495
496// check if pipeline should re-entry after it completes
498
499// Force-reset pipeline re-entry flag, for example if we lost the unique ID of the object
500// in a re-entry loop.
502
503#ifdef __cplusplus
504}
505#endif
506
507// clang-format off
508// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
509// vim: shiftwidth=2 expandtab tabstop=2 cindent
510// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
511// clang-format on
static void error(char *msg)
Definition ashift_lsd.c:202
void dt_atomic_set_int(dt_atomic_int *var, int value)
Definition atomic.h:65
int dt_atomic_get_int(dt_atomic_int *var)
Definition atomic.h:66
uint64_t dt_atomic_get_uint64(const dt_atomic_uint64 *var)
Definition atomic.h:68
void dt_atomic_set_uint64(dt_atomic_uint64 *var, uint64_t value)
Definition atomic.h:67
void dt_atomic_or_int(dt_atomic_int *var, int flags)
Definition atomic.h:75
atomic_int dt_atomic_int
Definition atomic.h:63
int levels(struct dt_imageio_module_data_t *data)
Definition avif.c:694
int width
Definition bilateral.h:1
int height
Definition bilateral.h:1
dt_iop_color_intent_t
Definition colorspaces.h:63
dt_colorspaces_color_profile_type_t
Definition colorspaces.h:81
static dt_aligned_pixel_t rgb
Definition colorspaces_inline_conversions.h:530
dt_imageio_levels_t
Definition imageio.h:60
static const float v
Definition iop_profile.h:223
size_t size
Definition mipmap_cache.c:3
dt_mipmap_buffer_dsc_flags flags
Definition mipmap_cache.c:4
dt_mipmap_size_t
Definition mipmap_cache.h:40
dt_dev_request_flags_t
Definition pixelpipe.h:46
dt_dev_pixelpipe_type_t
Definition pixelpipe.h:36
Pixelpipe cache for storing intermediate results in the pixelpipe.
void dt_dev_pixelpipe_disable_before(dt_dev_pixelpipe_t *pipe, const char *op)
Definition pixelpipe_hb.c:1251
int dt_dev_pixelpipe_init_preview(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:422
void dt_dev_pixelpipe_reset_reentry(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:567
static void dt_dev_pixelpipe_set_hash(dt_dev_pixelpipe_t *pipe, const uint64_t hash)
Definition pixelpipe_hb.h:355
static dt_dev_pixelpipe_change_t dt_dev_pixelpipe_get_changed(const dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.h:370
int dt_dev_pixelpipe_init_cached(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:444
gboolean dt_dev_pixelpipe_has_reentry(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:562
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)
Definition pixelpipe_rawdetail.c:17
void dt_dev_pixelpipe_disable_after(dt_dev_pixelpipe_t *pipe, const char *op)
Definition pixelpipe_hb.c:1237
int dt_dev_pixelpipe_init_export(dt_dev_pixelpipe_t *pipe, int levels, gboolean store_masks)
Definition pixelpipe_hb.c:396
static uint64_t dt_dev_backbuf_get_history_hash(const dt_backbuf_t *backbuf)
Definition pixelpipe_hb.h:205
int dt_dev_pixelpipe_init_thumbnail(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:406
static uint64_t dt_dev_pixelpipe_get_hash(const dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.h:350
static void dt_dev_pixelpipe_or_changed(dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_change_t flags)
Definition pixelpipe_hb.h:380
int dt_dev_pixelpipe_init_dummy(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:414
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)
Definition pixelpipe_hb.c:482
gboolean dt_dev_pixelpipe_get_realtime(const dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:477
dt_dev_pixelpipe_change_t
Definition pixelpipe_hb.h:163
@ DT_DEV_PIPE_ZOOMED
Definition pixelpipe_hb.h:169
@ DT_DEV_PIPE_SYNCH
Definition pixelpipe_hb.h:167
@ DT_DEV_PIPE_TOP_CHANGED
Definition pixelpipe_hb.h:165
@ DT_DEV_PIPE_REMOVE
Definition pixelpipe_hb.h:166
@ DT_DEV_PIPE_UNCHANGED
Definition pixelpipe_hb.h:164
static uint64_t dt_dev_pixelpipe_get_history_hash(const dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.h:360
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 pixelpipe_hb.c:492
static void dt_dev_pixelpipe_set_history_hash(dt_dev_pixelpipe_t *pipe, const uint64_t history_hash)
Definition pixelpipe_hb.h:365
char * dt_pixelpipe_get_pipe_name(dt_dev_pixelpipe_type_t pipe_type)
Definition pixelpipe_hb.c:259
void dt_dev_pixelpipe_synch_top(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev)
Definition dev_pixelpipe.c:675
void dt_dev_pixelpipe_create_nodes(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev)
Definition pixelpipe_hb.c:593
static void dt_dev_backbuf_set_hash(dt_backbuf_t *backbuf, const uint64_t hash)
Definition pixelpipe_hb.h:200
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_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....
Definition dev_pixelpipe.c:650
static uint64_t dt_dev_backbuf_get_hash(const dt_backbuf_t *backbuf)
Definition pixelpipe_hb.h:195
static void dt_dev_backbuf_set_history_hash(dt_backbuf_t *backbuf, const uint64_t history_hash)
Definition pixelpipe_hb.h:210
void dt_dev_pixelpipe_cleanup(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:501
static void dt_dev_pixelpipe_set_changed(dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_change_t v)
Definition pixelpipe_hb.h:375
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....
Definition pixelpipe_hb.c:549
dt_dev_pixelpipe_status_t
Definition pixelpipe_hb.h:173
@ DT_DEV_PIXELPIPE_INVALID
Definition pixelpipe_hb.h:177
@ DT_DEV_PIXELPIPE_VALID
Definition pixelpipe_hb.h:176
@ DT_DEV_PIXELPIPE_DIRTY
Definition pixelpipe_hb.h:174
@ DT_DEV_PIXELPIPE_UNDEF
Definition pixelpipe_hb.h:175
int dt_dev_pixelpipe_process(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, dt_iop_roi_t roi)
Definition pixelpipe_hb.c:1341
int dt_dev_pixelpipe_init(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:434
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 w...
Definition pixelpipe_hb.c:535
void dt_dev_pixelpipe_set_realtime(dt_dev_pixelpipe_t *pipe, gboolean state)
Definition pixelpipe_hb.c:471
void dt_dev_clear_rawdetail_mask(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_rawdetail.c:11
void dt_dev_pixelpipe_cleanup_nodes(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:574
unsigned __int64 uint64_t
Definition strptime.c:74
Definition pixelpipe_hb.h:187
size_t height
Definition pixelpipe_hb.h:190
size_t width
Definition pixelpipe_hb.h:189
dt_atomic_uint64 history_hash
Definition pixelpipe_hb.h:192
dt_atomic_uint64 hash
Definition pixelpipe_hb.h:191
size_t bpp
Definition pixelpipe_hb.h:188
Definition pixelpipe.h:54
Definition pixelpipe_hb.h:95
gboolean enabled
Definition pixelpipe_hb.h:110
dt_iop_buffer_dsc_t dsc_out
Definition pixelpipe_hb.h:140
gboolean force_opencl_cache
Definition pixelpipe_hb.h:157
dt_dev_request_flags_t request_histogram
Definition pixelpipe_hb.h:112
size_t data_size
Definition pixelpipe_hb.h:107
dt_iop_roi_t buf_in
Definition pixelpipe_hb.h:129
uint64_t blendop_hash
Definition pixelpipe_hb.h:119
int iheight
Definition pixelpipe_hb.h:115
uint64_t global_hash
Definition pixelpipe_hb.h:123
uint64_t hash
Definition pixelpipe_hb.h:118
int process_cl_ready
Definition pixelpipe_hb.h:131
dt_iop_buffer_dsc_t dsc_in
Definition pixelpipe_hb.h:140
int iwidth
Definition pixelpipe_hb.h:115
uint64_t global_mask_hash
Definition pixelpipe_hb.h:126
gboolean bypass_cache
Definition pixelpipe_hb.h:143
dt_iop_roi_t buf_out
Definition pixelpipe_hb.h:129
dt_pixel_cache_entry_t cache_entry
Definition pixelpipe_hb.h:151
int process_tiling_ready
Definition pixelpipe_hb.h:132
struct dt_iop_module_t *void * data
Definition pixelpipe_hb.h:96
int bpc
Definition pixelpipe_hb.h:128
dt_iop_roi_t roi_in
Definition pixelpipe_hb.h:130
GHashTable * raster_masks
Definition pixelpipe_hb.h:159
dt_dev_histogram_collection_params_t histogram_params
Definition pixelpipe_hb.h:113
dt_iop_buffer_dsc_t dsc_mask
Definition pixelpipe_hb.h:140
dt_iop_roi_t roi_out
Definition pixelpipe_hb.h:130
void * blendop_data
Definition pixelpipe_hb.h:109
Definition pixelpipe_hb.h:52
float * mask
Definition pixelpipe_hb.h:54
int id
Definition pixelpipe_hb.h:53
Definition pixelpipe_hb.h:216
dt_colorspaces_color_profile_type_t icc_type
Definition pixelpipe_hb.h:296
struct dt_iop_order_iccprofile_info_t * work_profile_info
Definition pixelpipe_hb.h:230
struct dt_iop_order_iccprofile_info_t * input_profile_info
Definition pixelpipe_hb.h:232
int iwidth
Definition pixelpipe_hb.h:222
int want_detail_mask
Definition pixelpipe_hb.h:257
gpointer last_history_item
Definition pixelpipe_hb.h:313
int opencl_error
Definition pixelpipe_hb.h:275
struct dt_iop_order_iccprofile_info_t * output_profile_info
Definition pixelpipe_hb.h:234
int running
Definition pixelpipe_hb.h:263
gboolean gui_observable_source
Definition pixelpipe_hb.h:288
gchar * icc_filename
Definition pixelpipe_hb.h:297
int processed_width
Definition pixelpipe_hb.h:225
uint64_t last_history_hash
Definition pixelpipe_hb.h:309
dt_pthread_mutex_t busy_mutex
Definition pixelpipe_hb.h:251
gboolean flush_cache
Definition pixelpipe_hb.h:335
int mask_display
Definition pixelpipe_hb.h:279
GList * nodes
Definition pixelpipe_hb.h:237
dt_dev_pixelpipe_status_t status
Definition pixelpipe_hb.h:227
dt_imageio_levels_t levels
Definition pixelpipe_hb.h:290
dt_atomic_int realtime
Definition pixelpipe_hb.h:271
dt_atomic_uint64 history_hash
Definition pixelpipe_hb.h:318
dt_backbuf_t backbuf
Definition pixelpipe_hb.h:242
gboolean reentry
Definition pixelpipe_hb.h:323
dt_mipmap_size_t size
Definition pixelpipe_hb.h:219
dt_iop_color_intent_t icc_intent
Definition pixelpipe_hb.h:298
dt_image_t image
Definition pixelpipe_hb.h:294
dt_atomic_uint64 hash
Definition pixelpipe_hb.h:249
float * rawdetail_mask_data
Definition pixelpipe_hb.h:255
dt_atomic_int shutdown
Definition pixelpipe_hb.h:265
uint64_t reentry_hash
Definition pixelpipe_hb.h:329
int opencl_enabled
Definition pixelpipe_hb.h:273
dt_dev_pixelpipe_type_t type
Definition pixelpipe_hb.h:284
dt_atomic_int changed
Definition pixelpipe_hb.h:239
int processed_height
Definition pixelpipe_hb.h:225
int32_t imgid
Definition pixelpipe_hb.h:218
gboolean no_cache
Definition pixelpipe_hb.h:343
gboolean store_all_raster_masks
Definition pixelpipe_hb.h:304
int bypass_blendif
Definition pixelpipe_hb.h:281
int tiling
Definition pixelpipe_hb.h:277
int iheight
Definition pixelpipe_hb.h:222
gboolean pause
Definition pixelpipe_hb.h:346
struct dt_iop_roi_t rawdetail_mask_roi
Definition pixelpipe_hb.h:256
gboolean bypass_cache
Definition pixelpipe_hb.h:338
GList * forms
Definition pixelpipe_hb.h:302
int devid
Definition pixelpipe_hb.h:292
int processing
Definition pixelpipe_hb.h:261
int output_imgid
Definition pixelpipe_hb.h:259
GList * iop_order_list
Definition pixelpipe_hb.h:300
int input_timestamp
Definition pixelpipe_hb.h:283
Definition develop.h:155
dt_clipping_preview_mode_t mode
Definition develop.h:417
float y
Definition develop.h:181
struct dt_dev_pixelpipe_t * pipe
Definition develop.h:231
struct dt_develop_t::@18 roi
Definition common/image.h:247
Definition develop/format.h:48
Definition imageop.h:216
Definition iop_profile.h:52
Definition imageop.h:67
Definition pixelpipe_cache.h:86