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-2021 darktable developers.
4
5 darktable is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 darktable is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with darktable. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#pragma once
20
21#include "common/atomic.h"
22#include "common/image.h"
23#include "common/imageio.h"
24#include "common/iop_order.h"
25#include "control/conf.h"
26#include "develop/develop.h"
27#include "develop/imageop.h"
29
35struct dt_iop_module_t;
36struct dt_dev_raster_mask_t;
38
40{
41 int id; // 0 is reserved for the reusable masks written in blend.c
42 float *mask;
44
46{
47 struct dt_iop_module_t *module; // the module in the dev operation stack
48 struct dt_dev_pixelpipe_t *pipe; // the pipe this piece belongs to
49 void *data; // to be used by the module to store stuff per pipe piece
50
51 // Memory size of *data upon which we will compute integrity hashes.
52 // This needs to be the size of the constant part of the data structure.
53 // It can even be 0 if nothing relevant to cache integrity hashes is held there.
54 // If the data struct contains pointers, they should go at the end of the struct,
55 // and the size here should be adjusted to only include constant bits, starting at the address of *data.
56 // "Constant" means identical between 2 pipeline nodes init,
57 // because the lifecycle of a pixelpipe cache is longer than that of a pixelpipe itself.
58 // See an example in colorbalancergb.c
59 size_t data_size;
60
61 void *blendop_data; // to be used by the module to store blendop per pipe piece
62 gboolean enabled; // used to disable parts of the pipe for export, independent on module itself.
63
64 dt_dev_request_flags_t request_histogram; // (bitwise) set if you want an histogram captured
65 dt_dev_histogram_collection_params_t histogram_params; // set histogram generation params
66 uint32_t *histogram; // pointer to histogram data; histogram_bins_count bins with 4 channels each
67 dt_dev_histogram_stats_t histogram_stats; // stats of captured histogram
68 uint32_t histogram_max[4]; // maximum levels in histogram, one per channel
69
70 double iscale; // input actually just downscaled buffer? iscale*iwidth = actual width
71 int iwidth, iheight; // width and height of input buffer
72
73 // Hash representing the current state of the params, blend params and enabled state of this individual module
76
77 // Cumulative hash representing the current module hash and all the upstream modules from the pipeline,
78 // for the current ROI.
80
81 // Same as global hash but for raster masks
83
84 int bpc; // bits per channel, 32 means float
85 int colors; // how many colors per pixel
87 buf_out; // theoretical full buffer regions of interest, as passed through modify_roi_out
88 dt_iop_roi_t processed_roi_in, processed_roi_out; // the actual roi that was used for processing the piece
89 dt_iop_roi_t planned_roi_in, planned_roi_out; // sizes planned ahead for cache hash
90 int process_cl_ready; // set this to 0 in commit_params to temporarily disable the use of process_cl
91 int process_tiling_ready; // set this to 0 in commit_params to temporarily disable tiling
92
93 // the following are used internally for caching:
95
96 // bypass the cache for this module
97 gboolean bypass_cache;
98
99 GHashTable *raster_masks; // GList* of dt_dev_pixelpipe_raster_mask_t
101
103{
104 DT_DEV_PIPE_UNCHANGED = 0, // no event
105 DT_DEV_PIPE_TOP_CHANGED = 1 << 0, // only params of top element changed
106 DT_DEV_PIPE_REMOVE = 1 << 1, // possibly elements of the pipe have to be removed
108 = 1 << 2, // all nodes up to end need to be synched, but no removal of module pieces is necessary
109 DT_DEV_PIPE_ZOOMED = 1 << 3 // zoom event, preview pipe does not need changes
111
113{
114 DT_DEV_PIXELPIPE_DIRTY = 0, // history stack changed or image new
115 DT_DEV_PIXELPIPE_UNDEF = 1, // pixelpipe computation started and we don't know yet
116 DT_DEV_PIXELPIPE_VALID = 2, // pixelpipe has finished; valid result
117 DT_DEV_PIXELPIPE_INVALID = 3 // pixelpipe has finished; invalid result
119
126typedef struct dt_dev_pixelpipe_t
127{
128 // input image. Will be fetched directly from mipmap cache
129 int32_t imgid;
131
132 // width and height of input buffer
134 // input actually just downscaled buffer? iscale*iwidth = actual width
135 float iscale;
136 // dimensions of processed buffer
138
139 // this one actually contains the expected output format,
140 // and should be modified by process*(), if necessary.
142
144
151
152 // instances of pixelpipe, stored in GList of dt_dev_pixelpipe_iop_t
153 GList *nodes;
154 // event flag
156 // backbuffer (output)
157 uint8_t *backbuf;
162 dt_pthread_mutex_t backbuf_mutex, busy_mutex;
163 // output buffer (for display)
166
167 // the data for the luminance mask are kept in a buffer written by demosaic or rawprepare
168 // as we have to scale the mask later ke keep roi at that stage
172
174 // processing is true when actual pixel computations are ongoing
176 // running is true when the pipe thread is running, computing or idle
178 // shutting down?
180 // opencl enabled for this pixelpipe?
182 // opencl error detected?
184 // running in a tiling context?
186 // should this pixelpipe display a mask in the end?
188 // should this pixelpipe completely suppressed the blendif module?
190 // input data based on this timestamp:
193 // the final output pixel format this pixelpipe will be converted to
195 // opencl device that has been locked for this pipe.
196 int devid;
197 // image struct as it was when the pixelpipe was initialized. copied to avoid race conditions.
199 // the user might choose to overwrite the output color space and rendering intent.
203 // snapshot of modules
204 GList *iop;
205 // snapshot of modules iop_order
207 // snapshot of mask list
208 GList *forms;
209 // the masks generated in the pipe for later reusal are inside dt_dev_pixelpipe_iop_t
211
212 // hash of the last history item synchronized with pipeline
213 // that's because the sync_top option can't assume only one history
214 // item was added since the last synchronization.
216
217 // Modules can set this to TRUE internally so the pipeline will
218 // restart right away, in the same thread.
219 // The reentry flag can only be reset (to FALSE) by the same object that captured it.
220 // DO NOT SET THAT DIRECTLY, use the setter/getter functions
221 gboolean reentry;
222
223 // Unique identifier of the object capturing the reentry flag.
224 // This can be a mask or module hash, or anything that stays constant
225 // across 2 pipeline runs from a same thread (aka as long as we don't reinit).
226 // DO NOT SET THAT DIRECTLY, use the setter/getter functions
228
229 // Can be set arbitrarily by pixelpipe modules at runtime
230 // to invalidate downstream module cache lines.
231 // This always gets reset to FALSE when a pipeline finishes,
232 // whether on success or on error.
233 gboolean flush_cache;
234
236
237struct dt_develop_t;
238
239// inits the pixelpipe with plain passthrough input/output and empty input and default caching settings.
241// inits the preview pixelpipe with plain passthrough input/output and empty input and default caching
242// settings.
244// inits the pixelpipe with settings optimized for full-image export (no history stack cache)
246 gboolean store_masks);
247// inits the pixelpipe with settings optimized for thumbnail export (no history stack cache)
249// inits all but the pixel caches, so you can't actually process an image (just get dimensions and
250// distortions)
252// inits the pixelpipe
254// constructs a new input buffer from given RGB float array.
255void dt_dev_pixelpipe_set_input(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, int32_t imgid, int width,
256 int height, float iscale, dt_mipmap_size_t size);
257// set some metadata for colorout to avoid race conditions.
259 const gchar *icc_filename, dt_iop_color_intent_t icc_intent);
260
261// returns the dimensions of the full image after processing.
262void dt_dev_pixelpipe_get_roi_out(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, const int width_in,
263 const int height_in, int *width, int *height);
264void dt_dev_pixelpipe_get_roi_in(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, const struct dt_iop_roi_t roi_out);
265
266// Check if current_module is performing operations that dev->gui_module (active GUI module)
267// wants disabled. Use that to disable some features of current_module.
268// This is used mostly with distortion operations when the active GUI module
269// needs a full-ROI/undistorted input for its own editing mode,
270// like moving the framing on the full image.
271// WARNING: this doesn't check WHAT particular operations are performed and
272// and what operations should be cancelled (nor if they should all be cancelled).
273// So far, all the code uses that to prevent distortions on module output, masks and roi_out changes (cropping).
274// Meaning ANY of these operations will disable ALL of these operations.
276 struct dt_iop_module_t *current_module);
277// destroys all allocated data.
279
280// wrapper for cleanup_nodes, create_nodes, synch_all and synch_top, decides upon changed event which one to
281// take on. also locks dev->history_mutex.
283// cleanup all nodes except clean input/output
285// sync with develop_t history stack from scratch (new node added, have to pop old ones)
287// sync with develop_t history stack by just copying the top item params (same op, new params on top)
288void dt_dev_pixelpipe_synch_all_real(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, const char *caller_func);
289#define dt_dev_pixelpipe_synch_all(pipe, dev) dt_dev_pixelpipe_synch_all_real(pipe, dev, __FUNCTION__)
290// adjust output node according to history stack (history pop event)
292
293// process region of interest of pixels. returns 1 if pipe was altered during processing.
294int dt_dev_pixelpipe_process(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, int x, int y, int width,
295 int height, double scale);
296// convenience method that does not gamma-compress the image.
298 int width, int height, double scale);
299
300// disable given op and all that comes after it in the pipe:
302// disable given op and all that comes before it in the pipe:
304
305// helper function to pass a raster mask through a (so far) processed pipe
306// `*error` will be set to 1 if the raster mask reference couldn't be found while it should have been,
307// aka not if user has forgotten to input what module should provide its mask, but only
308// if the mask reference has been lost by the pipeline. This should lead to a pipeline cache flushing.
309// `*error` can be NULL, e.g. for non-cached pipelines (export, thumbnail).
310float *dt_dev_get_raster_mask(dt_dev_pixelpipe_t *pipe, const struct dt_iop_module_t *raster_mask_source,
311 const int raster_mask_id, const struct dt_iop_module_t *target_module,
312 gboolean *free_mask, int *error);
313
314// some helper functions related to the details mask interface
316
317gboolean dt_dev_write_rawdetail_mask(dt_dev_pixelpipe_iop_t *piece, float *const rgb, const dt_iop_roi_t *const roi_in, const int mode);
318#ifdef HAVE_OPENCL
319gboolean dt_dev_write_rawdetail_mask_cl(dt_dev_pixelpipe_iop_t *piece, cl_mem in, const dt_iop_roi_t *const roi_in, const int mode);
320#endif
321
322// helper function writing the pipe-processed ctmask data to dest
323float *dt_dev_distort_detail_mask(const dt_dev_pixelpipe_t *pipe, float *src, const struct dt_iop_module_t *target_module);
324
325// Compute the sequential hash over the pipeline for each module.
326// Need to run after dt_dev_pixelpipe_get_roi_in() has updated processed ROI in/out
328
329
350
361
362// check if pipeline should re-entry after it completes
364
365// Force-reset pipeline re-entry flag, for example if we lost the unique ID of the object
366// in a re-entry loop.
368
369// clang-format off
370// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
371// vim: shiftwidth=2 expandtab tabstop=2 cindent
372// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
373// clang-format on
static void error(char *msg)
Definition ashift_lsd.c:191
atomic_int dt_atomic_int
Definition atomic.h:44
int levels(struct dt_imageio_module_data_t *data)
Definition avif.c:685
int width
Definition bilateral.h:1
int height
Definition bilateral.h:1
dt_iop_color_intent_t
Definition colorspaces.h:43
dt_colorspaces_color_profile_type_t
Definition colorspaces.h:61
dt_imageio_levels_t
Definition imageio.h:46
float iscale
Definition mipmap_cache.c:2
size_t size
Definition mipmap_cache.c:3
dt_mipmap_size_t
Definition mipmap_cache.h:30
dt_dev_request_flags_t
Definition pixelpipe.h:41
dt_dev_pixelpipe_type_t
Definition pixelpipe.h:28
Pixelpipe cache for storing intermediate results in the pixelpipe.
int dt_dev_pixelpipe_process(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, int x, int y, int width, int height, double scale)
Definition pixelpipe_hb.c:1970
void dt_dev_pixelpipe_disable_before(dt_dev_pixelpipe_t *pipe, const char *op)
Definition pixelpipe_hb.c:1922
int dt_dev_pixelpipe_init_preview(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:159
void dt_dev_pixelpipe_set_input(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, int32_t imgid, int width, int height, float iscale, dt_mipmap_size_t size)
Definition pixelpipe_hb.c:230
void dt_dev_pixelpipe_reset_reentry(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:315
int dt_dev_pixelpipe_init_cached(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:180
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)
Definition pixelpipe_hb.c:2114
gboolean dt_dev_pixelpipe_has_reentry(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:310
gboolean dt_dev_write_rawdetail_mask(dt_dev_pixelpipe_iop_t *piece, float *const rgb, const dt_iop_roi_t *const roi_in, const int mode)
Definition pixelpipe_hb.c:2417
int dt_dev_pixelpipe_process_no_gamma(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, int x, int y, int width, int height, double scale)
Definition pixelpipe_hb.c:1889
void dt_dev_pixelpipe_disable_after(dt_dev_pixelpipe_t *pipe, const char *op)
Definition pixelpipe_hb.c:1908
dt_dev_pixelpipe_change_t
Definition pixelpipe_hb.h:103
@ DT_DEV_PIPE_ZOOMED
Definition pixelpipe_hb.h:109
@ DT_DEV_PIPE_SYNCH
Definition pixelpipe_hb.h:107
@ DT_DEV_PIPE_TOP_CHANGED
Definition pixelpipe_hb.h:105
@ DT_DEV_PIPE_REMOVE
Definition pixelpipe_hb.h:106
@ DT_DEV_PIPE_UNCHANGED
Definition pixelpipe_hb.h:104
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:244
void dt_dev_pixelpipe_synch_top(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev)
Definition pixelpipe_hb.c:591
int dt_dev_pixelpipe_init_export(dt_dev_pixelpipe_t *pipe, int32_t width, int32_t height, int levels, gboolean store_masks)
Definition pixelpipe_hb.c:135
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)
Definition pixelpipe_hb.c:2151
void dt_dev_pixelpipe_create_nodes(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev)
Definition pixelpipe_hb.c:352
int dt_dev_pixelpipe_init_dummy(dt_dev_pixelpipe_t *pipe, int32_t width, int32_t height)
Definition pixelpipe_hb.c:152
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 pixelpipe_hb.c:542
void dt_dev_pixelpipe_cleanup(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:253
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:297
dt_dev_pixelpipe_status_t
Definition pixelpipe_hb.h:113
@ DT_DEV_PIXELPIPE_INVALID
Definition pixelpipe_hb.h:117
@ DT_DEV_PIXELPIPE_VALID
Definition pixelpipe_hb.h:116
@ DT_DEV_PIXELPIPE_DIRTY
Definition pixelpipe_hb.h:114
@ DT_DEV_PIXELPIPE_UNDEF
Definition pixelpipe_hb.h:115
gboolean dt_dev_pixelpipe_activemodule_disables_currentmodule(struct dt_develop_t *dev, struct dt_iop_module_t *current_module)
Definition pixelpipe_hb.c:2105
int dt_dev_pixelpipe_init_thumbnail(dt_dev_pixelpipe_t *pipe, int32_t width, int32_t height)
Definition pixelpipe_hb.c:145
int dt_dev_pixelpipe_init(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:170
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:283
void dt_dev_pixelpipe_change(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev)
Definition pixelpipe_hb.c:642
void dt_dev_clear_rawdetail_mask(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:2411
void dt_dev_pixelpipe_cleanup_nodes(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:323
void dt_pixelpipe_get_global_hash(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev)
Definition pixelpipe_hb.c:431
unsigned __int64 uint64_t
Definition strptime.c:71
Definition pixelpipe.h:49
Definition pixelpipe.h:60
Definition pixelpipe_hb.h:46
gboolean enabled
Definition pixelpipe_hb.h:62
int colors
Definition pixelpipe_hb.h:85
dt_iop_buffer_dsc_t dsc_out
Definition pixelpipe_hb.h:94
uint32_t histogram_max[4]
Definition pixelpipe_hb.h:68
double iscale
Definition pixelpipe_hb.h:70
dt_dev_request_flags_t request_histogram
Definition pixelpipe_hb.h:64
size_t data_size
Definition pixelpipe_hb.h:59
dt_iop_roi_t buf_in
Definition pixelpipe_hb.h:86
uint64_t blendop_hash
Definition pixelpipe_hb.h:75
struct dt_iop_module_t *struct dt_dev_pixelpipe_t * pipe
Definition pixelpipe_hb.h:48
dt_iop_roi_t processed_roi_in
Definition pixelpipe_hb.h:88
int iheight
Definition pixelpipe_hb.h:71
uint64_t global_hash
Definition pixelpipe_hb.h:79
uint64_t hash
Definition pixelpipe_hb.h:74
int process_cl_ready
Definition pixelpipe_hb.h:90
dt_iop_buffer_dsc_t dsc_in
Definition pixelpipe_hb.h:94
uint32_t * histogram
Definition pixelpipe_hb.h:66
int iwidth
Definition pixelpipe_hb.h:71
dt_dev_histogram_stats_t histogram_stats
Definition pixelpipe_hb.h:67
uint64_t global_mask_hash
Definition pixelpipe_hb.h:82
dt_iop_roi_t processed_roi_out
Definition pixelpipe_hb.h:88
dt_iop_roi_t planned_roi_out
Definition pixelpipe_hb.h:89
gboolean bypass_cache
Definition pixelpipe_hb.h:97
dt_iop_roi_t buf_out
Definition pixelpipe_hb.h:87
int process_tiling_ready
Definition pixelpipe_hb.h:91
int bpc
Definition pixelpipe_hb.h:84
GHashTable * raster_masks
Definition pixelpipe_hb.h:99
dt_dev_histogram_collection_params_t histogram_params
Definition pixelpipe_hb.h:65
dt_iop_buffer_dsc_t dsc_mask
Definition pixelpipe_hb.h:94
void * data
Definition pixelpipe_hb.h:49
void * blendop_data
Definition pixelpipe_hb.h:61
dt_iop_roi_t planned_roi_in
Definition pixelpipe_hb.h:89
Definition pixelpipe_hb.h:40
float * mask
Definition pixelpipe_hb.h:42
int id
Definition pixelpipe_hb.h:41
Definition pixelpipe_hb.h:127
dt_colorspaces_color_profile_type_t icc_type
Definition pixelpipe_hb.h:200
struct dt_iop_order_iccprofile_info_t * work_profile_info
Definition pixelpipe_hb.h:146
struct dt_iop_order_iccprofile_info_t * input_profile_info
Definition pixelpipe_hb.h:148
int iwidth
Definition pixelpipe_hb.h:133
int want_detail_mask
Definition pixelpipe_hb.h:171
float backbuf_zoom_x
Definition pixelpipe_hb.h:160
GList * iop
Definition pixelpipe_hb.h:204
int opencl_error
Definition pixelpipe_hb.h:183
struct dt_iop_order_iccprofile_info_t * output_profile_info
Definition pixelpipe_hb.h:150
int running
Definition pixelpipe_hb.h:177
uint64_t backbuf_hash
Definition pixelpipe_hb.h:161
gchar * icc_filename
Definition pixelpipe_hb.h:201
int processed_width
Definition pixelpipe_hb.h:137
dt_dev_pixelpipe_change_t changed
Definition pixelpipe_hb.h:155
uint64_t last_history_hash
Definition pixelpipe_hb.h:215
dt_pthread_mutex_t busy_mutex
Definition pixelpipe_hb.h:162
gboolean flush_cache
Definition pixelpipe_hb.h:233
int mask_display
Definition pixelpipe_hb.h:187
float backbuf_scale
Definition pixelpipe_hb.h:159
GList * nodes
Definition pixelpipe_hb.h:153
dt_dev_pixelpipe_status_t status
Definition pixelpipe_hb.h:143
dt_imageio_levels_t levels
Definition pixelpipe_hb.h:194
uint8_t * backbuf
Definition pixelpipe_hb.h:157
gboolean reentry
Definition pixelpipe_hb.h:221
dt_mipmap_size_t size
Definition pixelpipe_hb.h:130
dt_iop_color_intent_t icc_intent
Definition pixelpipe_hb.h:202
dt_image_t image
Definition pixelpipe_hb.h:198
float * rawdetail_mask_data
Definition pixelpipe_hb.h:169
dt_atomic_int shutdown
Definition pixelpipe_hb.h:179
int output_backbuf_width
Definition pixelpipe_hb.h:165
dt_iop_buffer_dsc_t dsc
Definition pixelpipe_hb.h:141
uint64_t reentry_hash
Definition pixelpipe_hb.h:227
int opencl_enabled
Definition pixelpipe_hb.h:181
float backbuf_zoom_y
Definition pixelpipe_hb.h:160
int output_backbuf_height
Definition pixelpipe_hb.h:165
uint8_t * output_backbuf
Definition pixelpipe_hb.h:164
dt_dev_pixelpipe_type_t type
Definition pixelpipe_hb.h:192
float iscale
Definition pixelpipe_hb.h:135
int processed_height
Definition pixelpipe_hb.h:137
int32_t imgid
Definition pixelpipe_hb.h:129
gboolean store_all_raster_masks
Definition pixelpipe_hb.h:210
dt_pthread_mutex_t backbuf_mutex
Definition pixelpipe_hb.h:162
int bypass_blendif
Definition pixelpipe_hb.h:189
int tiling
Definition pixelpipe_hb.h:185
int backbuf_width
Definition pixelpipe_hb.h:158
int iheight
Definition pixelpipe_hb.h:133
struct dt_iop_roi_t rawdetail_mask_roi
Definition pixelpipe_hb.h:170
GList * forms
Definition pixelpipe_hb.h:208
int devid
Definition pixelpipe_hb.h:196
int processing
Definition pixelpipe_hb.h:175
int output_imgid
Definition pixelpipe_hb.h:173
GList * iop_order_list
Definition pixelpipe_hb.h:206
int backbuf_height
Definition pixelpipe_hb.h:158
int input_timestamp
Definition pixelpipe_hb.h:191
Definition develop.h:143
dt_clipping_preview_mode_t mode
Definition develop.h:285
struct dt_dev_pixelpipe_t * pipe
Definition develop.h:156
Definition common/image.h:195
Definition develop/format.h:36
Definition imageop.h:182
Definition iop_profile.h:41
Definition imageop.h:32