Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
simd.h File Reference
#include "system/mem_alloc.h"
#include "system/openmp.h"
#include <glib.h>
#include <math.h>
+ Include dependency graph for simd.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define DT_PIXEL_SIMD_CHANNELS   4
 
#define for_each_channel(_var, ...)    for (size_t _var = 0; _var < DT_PIXEL_SIMD_CHANNELS; _var++)
 
#define for_four_channels(_var, ...)    for (size_t _var = 0; _var < 4; _var++)
 

Typedefs

typedef DT_ALIGNED_PIXEL float dt_aligned_pixel_t[4]
 
typedef float dt_aligned_pixel_simd_t __attribute__((vector_size(16), aligned(16)))
 Apply one channel's tone curve to each of the three colour channels, or pass the channel through untouched when it has none.
 

Functions

static __attribute__ ((always_inline)) dt_aligned_pixel_simd_t dt_simd_set1(const float value)
 
 for (int c=0;c< 4;c++) out[c]
 
 dt_store_simd (out, value)
 
static void copy_pixel_nontemporal (float *const __restrict__ out, const float *const __restrict__ in)
 
static void copy_pixel (float *const __restrict__ out, const float *const __restrict__ in)
 

Variables

static const dt_aligned_pixel_simd_t sign
 
return out = row1 * in[1] + out
 
static const dt_aligned_pixel_simd_t exponent
 
static const dt_aligned_pixel_simd_t value
 
static const dt_aligned_pixel_simd_t row0
 
static const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t row1
 
static const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t row2
 

Macro Definition Documentation

◆ DT_PIXEL_SIMD_CHANNELS

#define DT_PIXEL_SIMD_CHANNELS   4

Definition at line 63 of file simd.h.

◆ for_each_channel

#define for_each_channel (   _var,
  ... 
)     for (size_t _var = 0; _var < DT_PIXEL_SIMD_CHANNELS; _var++)

Definition at line 87 of file simd.h.

◆ for_four_channels

#define for_four_channels (   _var,
  ... 
)     for (size_t _var = 0; _var < 4; _var++)

Definition at line 89 of file simd.h.

Typedef Documentation

◆ __attribute__

static __attribute__
inline

Apply one channel's tone curve to each of the three colour channels, or pass the channel through untouched when it has none.

Enable aggressive floating-point arithmetic optimizations, in denormals handling. Set through user preference cpu_fp_mode

Build the keyed full transform matrix for one scene luminance.

Multi-tap smudge source sample with directional jitter.

Parameters
rgb_insource pixel.
rgb_outdestination pixel. Only channels 0..2 are written – the 4th lane is left alone, which is what preserves alpha through an in-place conversion.
lutthe profile's lut_in or lut_out. A NULL entry, or one whose [0] is negative, means "channel is linear" and is copied straight through.
unbounded_coeffsthe matching unbounded_coeffs_in/_out.
lutsizeentry count.

uses D50 white point.

Uses D50

Uses D65

uses D50 white point and clips the output to [0..1].

Conversion algorithms between XYZ and JzAzBz and JzCzhz are described in the following paper:

Perceptually uniform color space for image signals including high dynamic range and wide gamut https://www.osapublishing.org/oe/fulltext.cfm?uri=oe-25-13-15131&id=368272

Parameters
motion_dxMotion X used to orient anisotropic taps.
motion_dyMotion Y used to orient anisotropic taps.

Inside the [dark ; bright] segment, the module linearly interpolates between the two user transforms. Outside that segment, the nearest transform fades linearly back to identity over one segment length so the correction tapers out instead of clipping.

Parameters
[in]luminanceCurrent pixel scene luminance in XYZ Y.
[in]dPrecomputed module state for the current pipe.
[out]matrixKeyed full transform matrix in transposed padded form.
mode

Definition at line 55 of file simd.h.

◆ dt_aligned_pixel_t

typedef DT_ALIGNED_PIXEL float dt_aligned_pixel_t[4]

Definition at line 53 of file simd.h.

Function Documentation

◆ __attribute__()

static __attribute__ ( (always_inline ) const
inlinestatic

Definition at line 93 of file simd.h.

References value.

◆ copy_pixel()

static void copy_pixel ( float *const __restrict__  out,
const float *const __restrict__  in 
)
inlinestatic

Definition at line 217 of file simd.h.

References for_each_channel, k, L, and out.

Referenced by _heal_laplace_iteration(), and process().

◆ copy_pixel_nontemporal()

static void copy_pixel_nontemporal ( float *const __restrict__  out,
const float *const __restrict__  in 
)
inlinestatic

Definition at line 207 of file simd.h.

References L, and out.

Referenced by _interpolation_resample_plain(), expand_2D_Bspline(), and reduce_2D_Bspline().

◆ dt_store_simd()

◆ for()

for ( )

Variable Documentation

◆ exponent

const dt_aligned_pixel_simd_t exponent
Initial value:
{
dt_aligned_pixel_simd_t out = base
return out
Definition simd.h:122

Definition at line 126 of file simd.h.

Referenced by _float_to_half(), and dt_focuspeaking().

◆ out

return row2* in [2] out = row1 * in[1] + out

Definition at line 122 of file simd.h.

Referenced by copy_pixel(), and copy_pixel_nontemporal().

◆ row0

const dt_aligned_pixel_simd_t row0

◆ row1

const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t row1

◆ row2

const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t row2
Initial value:
{
dt_aligned_pixel_simd_t out = row0 * in[0]
static const dt_aligned_pixel_simd_t row0
Definition simd.h:189

Definition at line 190 of file simd.h.

Referenced by _downsample_guided_laplacian_fit(), gui_init(), guide_laplacians(), matrix_dot_float4_rows(), and matrix_product_float4().

◆ sign

◆ value

static const dt_aligned_pixel_simd_t value
Initial value:
{
static const dt_aligned_pixel_simd_t value
Definition simd.h:144

Definition at line 143 of file simd.h.

Referenced by __attribute__(), __attribute__(), __attribute__(), __OMP_DECLARE_SIMD__(), __OMP_DECLARE_SIMD__(), __OMP_DECLARE_SIMD__(), _accels_recent_get(), _accels_recent_set(), _alternative_mode(), _aniso_chroma(), _aniso_stage_cl_selftest(), _append_kv(), _arr_add_enum(), _backbuf_int_to_op(), _biharmonic_dome(), _bin_pixels_histogram_in_roi(), _bin_pixels_waveform_in_roi(), _bind_text(), _blendif_compute_factor(), _blendif_compute_factor(), _blendif_compute_factor(), _blendif_print_digits_ab(), _blendif_print_digits_default(), _blendif_print_digits_picker(), _blendif_scale_print_ab(), _blendif_scale_print_default(), _blendif_scale_print_hue(), _blendop_blendif_boost_factor_callback(), _bottom_border_callback(), _brush_set_interaction_value(), _build_clut(), _build_clut(), _cache_get_oldest(), _change_opacity(), _channel_display_false_color(), _channel_y_from_value(), _circle_set_interaction_value(), _clamp01(), _clamp01(), _clamp01(), _clamp01_simd(), _clamp01d(), _cleanup_metadata_value(), _collect_meta(), _combobox_conf_value_changed(), _compute_laplacian_normalization(), _connect_accel_hashtable(), _create_vectorscope_image(), _cursor_curve_state(), _default_linear_scale_callback(), _develop_blend_init_raster_mask(), _display_channel_value(), _display_datetime(), _draw_boxes(), _dt_cht_box_extract(), _ellipse_set_interaction_value(), _exif_decode_exif_data(), _exif_xmp_append_history_hash(), _fill_current_layer(), _find_parent_hashtable(), _first_id_for_text(), _float_to_half(), _folder_survey_save_locked(), _for_each_accel(), _for_each_accel_create_treeview_row(), _for_each_non_virtual_accel(), _for_each_path_create_treeview_row(), _for_each_remove(), _for_each_remove_old(), _free_confgen_value(), _get_axis_value_for_source(), _get_iso8601_int(), _get_selected_style_names(), _get_tb_added_metadata_rows(), _get_tb_removed_metadata_string_values(), _gradient_get_mask(), _gradient_get_mask_roi(), _gradient_set_interaction_value(), _grid_size_changed(), _gui_preferences_enum_set(), _handle_xpath(), _hl_knee_apply_cfa(), _hm_collect_labels_from_history_map(), _hscreen_to_mm(), _init_drawing(), _interpolate_and_mask_xtrans(), _ioporder_drag_data_get(), _is_int(), _knee_cl_selftest(), _left_border_callback(), _lib_backgroundjobs_updated(), _lock_callback(), _lrop(), _Luv_to_vectorscope_coord_zoom(), _map_source_changed(), _masks_gui_interaction_apply_value(), _menuitem_from_text(), _metadata_get_flags(), _metadata_update_value(), _mipmap_subcache_collect(), _mm_to_hscreen(), _mm_to_vscreen(), _name_for_value(), _percent_unit_of(), _piwigo_account_changed(), _piwigo_album_changed(), _piwigo_load_account(), _piwigo_query_add_arguments(), _polygon_set_interaction_value(), _populate_list(), _print_cache_lines(), _profile_key_is_sane(), _raster_combo_populate(), _rating_callback(), _read_float(), _read_pbm(), _read_pgm(), _read_ppm(), _remove_accel_hashtable(), _resizable_scroll_handle_resize(), _resize_thumbnails(), _right_border_callback(), _sample_axis_from_device_state(), _sample_picker_luminance_mask(), _sanitize_confgen(), _scale_changed(), _selected_metadata_row(), _set_delay(), _set_stage(), _signal_param_cleanup(), _slider_add_step(), _slider_move(), _slider_zoom_range(), _sp_pde_assemble(), _sp_row_op(), _splash_env_is_truthy(), _split_operator(), _take_from_list(), _to_mm(), _top_border_callback(), _update_slider(), _vectorscope_coord_zoom_to_Luv(), _view_map_set_map_source_g_object(), _vscreen_to_mm(), _widget_store_bool(), _widget_store_int(), _widget_stored_int(), _write_pixel(), _xmp_append_metadata(), add_non_clone_mask_entries_to_db(), append_pair_to_json(), autoset(), blue_callback(), calculate_clut_3dl(), collect_reference_patches_foreach(), collect_source_patches_foreach(), draw_color_boxes_inside(), dt_atomic_CAS_int(), dt_atomic_exch_int(), dt_atomic_set_int(), dt_atomic_set_ptr(), dt_atomic_set_uint64(), dt_bauhaus_combobox_set_from_value(), dt_bauhaus_popup_button_press(), dt_bauhaus_widget_accept(), dt_cache_for_all(), dt_cache_get_with_caller(), dt_cache_remove(), dt_cache_testget(), dt_collection_name_value_free(), dt_colorrings_gray_axis_rgb_from_L(), dt_conf_get_sanitize_float(), dt_conf_init(), dt_conf_is_equal(), dt_confgen_get_float(), dt_confgen_get_int(), dt_confgen_get_int64(), dt_control_job_set_progress(), dt_control_progress_set_progress(), dt_control_set_keyboard_over_id(), dt_control_set_mouse_over_id(), dt_dev_pixelpipe_cache_flush_clmem(), dt_dev_pixelpipe_cache_get_entries_stats(), dt_dev_pixelpipe_cache_get_entry_by_data(), dt_draw_histogram_8_zoomed(), dt_exif_decode_xmp_data(), dt_folder_survey_absorb_new_files(), dt_folder_survey_count_new_files(), dt_image_cache_get_entries_stats(), dt_introspection_get_enum_name(), dt_introspection_get_enum_value(), dt_iop_channelmixer_shared_paint_primaries_sliders(), dt_iop_is_raster_mask_used(), dt_iop_tonecurve_draw(), dt_iop_update_multi_priority(), dt_lightroom_import(), dt_masks_dynbuf_set(), dt_masks_form_set_interaction_value(), dt_masks_get_set_conf_value_with_toast(), dt_masks_gui_add_interaction_slider(), dt_masks_set_edit_mode(), dt_metadata_repository_add(), dt_metadata_repository_find_image_by_value(), dt_metadata_repository_get_all(), dt_metadata_repository_get_values(), dt_metadata_set(), dt_metadata_set_import(), dt_metadata_set_list(), dt_opencl_set_synchronization_timeout(), dt_preset_repository_update_flag(), dt_print_file(), dt_pwstorage_kwallet_get(), dt_pwstorage_kwallet_set(), dt_tag_get_list(), dt_thumbtable_offset_zoom(), dt_thumbtable_refresh_thumbnail_real(), dt_util_glist_uniq(), dt_widget_store_bool(), dt_widget_store_int(), dt_widget_stored_int(), dtgtk_gradient_slider_multivalue_set_increment(), dtgtk_gradient_slider_multivalue_set_picker(), dtgtk_gradient_slider_multivalue_set_resetvalue(), dtgtk_gradient_slider_multivalue_set_value(), dtgtk_gradient_slider_set_increment(), dtgtk_gradient_slider_set_picker(), dtgtk_gradient_slider_set_resetvalue(), dtgtk_gradient_slider_set_value(), edit_clicked(), export_raw(), fast_clamp(), get_interpolate(), get_preset_element(), get_preset_element_float(), get_preset_element_int(), global_progress_end(), global_progress_set(), green_callback(), lr2dt_blacks(), lr2dt_clarity(), lr2dt_grain_amount(), lr2dt_grain_frequency(), lr2dt_splittoning_balance(), lr2dt_vignette_gain(), lr2dt_vignette_midpoint(), max_style_id(), on_match_select(), parse_cht(), parse_csv(), parse_it8(), print2pixels(), process_button_clicked_callback(), red_callback(), scrolled(), secret_to_attributes(), set_16wide(), PermutohedralLattice< D, VD >::splat(), sql_int_for_bound_images(), strength(), testimg_gen_all_grey(), vstransform(), and write_image().