Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
dt_dev_pixelpipe_iop_t Struct Reference

#include <pixelpipe_hb.h>

+ Collaboration diagram for dt_dev_pixelpipe_iop_t:

Data Fields

struct dt_iop_module_t *void * data
 
size_t data_size
 
void * blendop_data
 
gboolean enabled
 
gboolean detail_mask
 
dt_dev_request_flags_t request_histogram
 
dt_dev_histogram_collection_params_t histogram_params
 
int iwidth
 
int iheight
 
uint64_t hash
 
uint64_t blendop_hash
 
uint64_t global_hash
 
uint64_t global_mask_hash
 
uint64_t upstream_hash
 
int bpc
 
dt_iop_roi_t buf_in
 
dt_iop_roi_t buf_out
 
dt_iop_roi_t roi_in
 
dt_iop_roi_t roi_out
 
int process_cl_ready
 
int process_tiling_ready
 
dt_iop_buffer_dsc_t dsc_in
 
dt_iop_buffer_dsc_t dsc_out
 
dt_iop_buffer_dsc_t dsc_mask
 
gboolean bypass_cache
 
dt_pixel_cache_entry_t cache_entry
 
dt_pixel_cache_entry_t cache_entry_prev
 
gboolean cache_output_on_ram
 

Detailed Description

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:

  • the upstream descriptor is copied into dsc_in,
  • module input_format() may overwrite the fields it requires on dsc_in,
  • the resulting hard storage contract is sanitized against the actual upstream storage format; only bit depth, channel count, and RAW filter layout must match,
  • dsc_out is initialized from dsc_in,
  • commit_params() may update value-domain metadata that depends on module parameters, such as processed_maximum or RAW normalization coefficients,
  • module output_format() may finally overwrite the output storage contract.

After synchronization:

  • dsc_in and dsc_out are authoritative and immutable during process(), process_cl(), process_tiling(), and blending,
  • runtime code may compare the previous piece output descriptor with dsc_in to decide whether a colorspace conversion is needed, but it must not rewrite the contract,
  • ROI callbacks (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,
  • cache entries published by this piece inherit the descriptor of the pixels produced by this stage, namely dsc_out.

Mutable lifecycle summary:

  • commit_params(), input_format(), output_format(), and ROI planning are the only places allowed to author the contract,
  • processing code treats the piece as read-only,
  • the cache-related fields only track output ownership/reuse hints and do not participate in the pixel format contract itself.

Definition at line 102 of file pixelpipe_hb.h.

Field Documentation

◆ blendop_data

void* dt_dev_pixelpipe_iop_t::blendop_data

Definition at line 117 of file pixelpipe_hb.h.

◆ blendop_hash

uint64_t dt_dev_pixelpipe_iop_t::blendop_hash

Definition at line 128 of file pixelpipe_hb.h.

◆ bpc

int dt_dev_pixelpipe_iop_t::bpc

Definition at line 153 of file pixelpipe_hb.h.

◆ buf_in

dt_iop_roi_t dt_dev_pixelpipe_iop_t::buf_in

Definition at line 154 of file pixelpipe_hb.h.

◆ buf_out

dt_iop_roi_t dt_dev_pixelpipe_iop_t::buf_out

Definition at line 154 of file pixelpipe_hb.h.

Referenced by _refresh_preview_cursor_sample().

◆ bypass_cache

gboolean dt_dev_pixelpipe_iop_t::bypass_cache

Definition at line 168 of file pixelpipe_hb.h.

◆ cache_entry

dt_pixel_cache_entry_t dt_dev_pixelpipe_iop_t::cache_entry

Definition at line 176 of file pixelpipe_hb.h.

◆ cache_entry_prev

dt_pixel_cache_entry_t dt_dev_pixelpipe_iop_t::cache_entry_prev

The cacheline written the run BEFORE cache_entry, offered as a second reuse candidate.

It exists for one case: an output a consumer holds across frames, i.e. the backbuffer. Such an entry is refused by the rekey guard while it is on screen, and with a single hint the producer then had nothing to fall back on and allocated a new cacheline every frame – measured, 122 distinct host buffers over 122 frames, each re-pinning 12.2 MB for OpenCL. Two slots let it alternate: the one from two runs ago has been released by then, so the frame being displayed is republished rather than overwritten and both keep their payload.

It costs nothing for every other module. cache_entry is tried first and, with nothing holding it, succeeds – so this slot is never consulted and no second cacheline is kept alive on its account.

Definition at line 190 of file pixelpipe_hb.h.

◆ cache_output_on_ram

gboolean dt_dev_pixelpipe_iop_t::cache_output_on_ram

Definition at line 196 of file pixelpipe_hb.h.

◆ data

◆ data_size

size_t dt_dev_pixelpipe_iop_t::data_size

Definition at line 115 of file pixelpipe_hb.h.

◆ detail_mask

gboolean dt_dev_pixelpipe_iop_t::detail_mask

Definition at line 119 of file pixelpipe_hb.h.

◆ dsc_in

dt_iop_buffer_dsc_t dt_dev_pixelpipe_iop_t::dsc_in

Definition at line 165 of file pixelpipe_hb.h.

Referenced by _refresh_pipe_detail_mask_state().

◆ dsc_mask

dt_iop_buffer_dsc_t dt_dev_pixelpipe_iop_t::dsc_mask

Definition at line 165 of file pixelpipe_hb.h.

◆ dsc_out

◆ enabled

◆ global_hash

◆ global_mask_hash

uint64_t dt_dev_pixelpipe_iop_t::global_mask_hash

Definition at line 135 of file pixelpipe_hb.h.

◆ hash

uint64_t dt_dev_pixelpipe_iop_t::hash

Definition at line 127 of file pixelpipe_hb.h.

◆ histogram_params

dt_dev_histogram_collection_params_t dt_dev_pixelpipe_iop_t::histogram_params

Definition at line 122 of file pixelpipe_hb.h.

◆ iheight

int dt_dev_pixelpipe_iop_t::iheight

Definition at line 124 of file pixelpipe_hb.h.

◆ iwidth

int dt_dev_pixelpipe_iop_t::iwidth

Definition at line 124 of file pixelpipe_hb.h.

◆ process_cl_ready

int dt_dev_pixelpipe_iop_t::process_cl_ready

Definition at line 156 of file pixelpipe_hb.h.

◆ process_tiling_ready

int dt_dev_pixelpipe_iop_t::process_tiling_ready

Definition at line 157 of file pixelpipe_hb.h.

Referenced by _refresh_pipe_detail_mask_state().

◆ request_histogram

dt_dev_request_flags_t dt_dev_pixelpipe_iop_t::request_histogram

Definition at line 121 of file pixelpipe_hb.h.

◆ roi_in

◆ roi_out

◆ upstream_hash

uint64_t dt_dev_pixelpipe_iop_t::upstream_hash

Definition at line 151 of file pixelpipe_hb.h.


The documentation for this struct was generated from the following file: