64#if defined __DragonFly__ || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__
67#elif !defined _XOPEN_SOURCE && !defined _WIN32
68#define _XOPEN_SOURCE 700
72#define __STDC_FORMAT_MACROS
79#include "external/ThreadSafetyAnalysis.h"
90#include <sys/resource.h>
94#include <glib/gstdio.h>
95#include <glib/gi18n.h>
97#include <json-glib/json-glib.h>
103#include <sys/types.h>
119#define DT_MODULE_VERSION 23
124#define DT_CURRENT_PERFORMANCE_CONFIGURE_VERSION 11
125#define DT_PERF_INFOSIZE 4096
129#define DT_MODULE(MODVER) \
130 int dt_module_dt_version() \
132 return -DT_MODULE_VERSION; \
134 int dt_module_mod_version() \
139#define DT_MODULE(MODVER) \
140 int dt_module_dt_version() \
142 return DT_MODULE_VERSION; \
144 int dt_module_mod_version() \
150#define DT_MODULE_INTROSPECTION(MODVER, PARAMSTYPE) DT_MODULE(MODVER)
166#define STR_HELPER(x) #x
169#define STR(x) STR_HELPER(x)
171#define DT_IMAGE_DBLOCKS 64
177#define DT_RESTRICT restrict
181#define UNKNOWN_IMAGE -1
200#include <mach/mach.h>
201#include <sys/sysctl.h>
204#if defined(__DragonFly__) || defined(__FreeBSD__)
205typedef unsigned int u_int;
206#include <sys/sysctl.h>
207#include <sys/types.h>
209#if defined(__NetBSD__) || defined(__OpenBSD__)
210#include <sys/param.h>
211#include <sys/sysctl.h>
214#if defined(__aarch64__)
219#include <xmmintrin.h>
226# ifdef HAVE_OMP_FIRSTPRIVATE_WITH_CONST
228# define dt_omp_firstprivate(...) firstprivate(__VA_ARGS__)
231# define dt_omp_firstprivate(...)
234#ifndef dt_omp_sharedconst
236#if defined(__clang__) || __GNUC__ > 8
237# define dt_omp_sharedconst(...) shared(__VA_ARGS__)
241# define dt_omp_sharedconst(var, ...)
246#ifndef dt_omp_nontemporal
250#if (__clang__+0 >= 10 || __GNUC__ >= 9)
251# define dt_omp_nontemporal(...) nontemporal(__VA_ARGS__)
254# define dt_omp_nontemporal(var, ...)
260# define omp_get_max_threads() 1
261# define omp_get_thread_num() 0
281#if __has_attribute(target_clones) && !defined(_WIN32) && !defined(__APPLE__) && !defined(NATIVE_ARCH)
282 # if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64)
283 #define __DT_CLONE_TARGETS__ __attribute__((target_clones("default", "sse2", "avx", "avx2")))
284 # elif defined(__PPC64__)
286 #define __DT_CLONE_TARGETS__ __attribute__((target_clones("default","cpu=power9")))
288 #define __DT_CLONE_TARGETS__
291 #define __DT_CLONE_TARGETS__
295#define DT_IS_ALIGNED(x) __builtin_assume_aligned(x, DT_CACHELINE_BYTES)
299#if defined(__APPLE__) && defined(__aarch64__)
300 #define DT_CACHELINE_BYTES 128
301 #define DT_CACHELINE_FLOATS 32
302 #define DT_CACHELINE_PIXELS 8
304 #define DT_CACHELINE_BYTES 64
305 #define DT_CACHELINE_FLOATS 16
306 #define DT_CACHELINE_PIXELS 4
312#define DT_ALIGNED_ARRAY __attribute__((aligned(DT_CACHELINE_BYTES)))
313#define DT_ALIGNED_PIXEL __attribute__((aligned(16)))
318 return (uintptr_t)pointer % byte_count == 0;
324 return ((
size % alignment) == 0) ?
size : ((
size - 1) / alignment + 1) * alignment;
337#if defined(__FreeBSD_version) && __FreeBSD_version < 700013
338 return malloc(aligned_size);
340 return _aligned_malloc(aligned_size, alignment);
343 if(posix_memalign(&ptr, alignment, aligned_size))
return NULL;
352#define DT_STRINGIFY_HELPER(x) #x
353#define DT_STRINGIFY(x) DT_STRINGIFY_HELPER(x)
357#define dt_pixelpipe_cache_alloc_align_cache(size, id) \
358 dt_pixelpipe_cache_alloc_align_cache_impl(darktable.pixelpipe_cache, (size), (id), __FILE__ ":" DT_STRINGIFY(__LINE__))
360#ifndef dt_pixelpipe_cache_alloc_align
361#define dt_pixelpipe_cache_alloc_align(size, pipe) \
362 dt_pixelpipe_cache_alloc_align_cache((size), (pipe)->type)
365#ifndef dt_pixelpipe_cache_alloc_align_float
366#define dt_pixelpipe_cache_alloc_align_float(pixels, pipe) \
367 ((float *)dt_pixelpipe_cache_alloc_align((size_t)(pixels) * sizeof(float), (pipe)))
370#ifndef dt_pixelpipe_cache_alloc_align_float_cache
371#define dt_pixelpipe_cache_alloc_align_float_cache(pixels, id) \
372 ((float *)dt_pixelpipe_cache_alloc_align_cache((size_t)(pixels) * sizeof(float), (id)))
377#define dt_pixelpipe_cache_free_align(mem) \
378 dt_pixelpipe_cache_free_align_cache(darktable.pixelpipe_cache, (void **)&(mem), __FILE__ ":" DT_STRINGIFY(__LINE__));
380#define dt_free(ptr) \
383 g_free((void *)(ptr)); \
384 *(void **)(&(ptr)) = NULL; \
405#define dt_free_align(ptr) \
408 dt_free_align_ptr((void *)(ptr)); \
409 *(void **)(&(ptr)) = NULL; \
415 if(buf) memset(buf, 0,
size);
424 float *
const buf = (
float*)
dt_alloc_align(pixels *
sizeof(
float));
425 if(buf) memset(buf, 0, pixels *
sizeof(
float));
448typedef float dt_aligned_pixel_simd_t
__attribute__((vector_size(16), aligned(16)));
455static inline __attribute__((always_inline)) dt_aligned_pixel_simd_t
456dt_simd_abs(
const dt_aligned_pixel_simd_t
value)
458 dt_aligned_pixel_simd_t
out =
value;
459 for(
int c = 0;
c < 4;
c++)
464static inline __attribute__((always_inline)) dt_aligned_pixel_simd_t
465dt_simd_max_zero(
const dt_aligned_pixel_simd_t
value)
467 dt_aligned_pixel_simd_t
out =
value;
468 for(
int c = 0;
c < 4;
c++)
473static inline __attribute__((always_inline)) dt_aligned_pixel_simd_t
474dt_simd_copysign(
const dt_aligned_pixel_simd_t magnitude,
const dt_aligned_pixel_simd_t
sign)
476 dt_aligned_pixel_simd_t
out = magnitude;
477 for(
int c = 0;
c < 4;
c++)
482static inline __attribute__((always_inline)) dt_aligned_pixel_simd_t
483dt_simd_pow(
const dt_aligned_pixel_simd_t base,
const dt_aligned_pixel_simd_t
exponent)
485 dt_aligned_pixel_simd_t
out = base;
486 for(
int c = 0;
c < 4;
c++)
491static inline __attribute__((always_inline)) dt_aligned_pixel_simd_t
492dt_load_simd(
const float *
const pixel)
494 dt_aligned_pixel_simd_t
out;
495 __builtin_memcpy(&
out, pixel,
sizeof(
out));
502 __builtin_memcpy(pixel, &
value,
sizeof(
value));
505static inline __attribute__((always_inline)) dt_aligned_pixel_simd_t
508 const float *
const in = (
const float *
const)__builtin_assume_aligned(pixel, 16);
509 return dt_load_simd(in);
515 float *
const out = (
float *
const)__builtin_assume_aligned(pixel, 16);
520dt_store_simd_nontemporal(
float *
const pixel,
const dt_aligned_pixel_simd_t
value)
522 float *
const out = (
float *
const)__builtin_assume_aligned(pixel, 16);
527 dt_aligned_pixel_simd_t simd;
529 } cast = { .simd =
value };
530 _mm_stream_ps(
out, cast.sse);
531#elif defined(__aarch64__)
534 dt_aligned_pixel_simd_t simd;
536 } cast = { .simd =
value };
537 vst1q_f32(
out, cast.neon);
538#elif (__clang__+0 > 7) && (__clang__+0 < 10)
545static inline __attribute__((always_inline)) dt_aligned_pixel_simd_t
546dt_mat3x4_mul_vec4(
const dt_aligned_pixel_simd_t in,
const dt_aligned_pixel_simd_t
row0,
547 const dt_aligned_pixel_simd_t
row1,
const dt_aligned_pixel_simd_t
row2)
555#ifdef DT_NO_VECTORIZATION
556#define DT_PIXEL_SIMD_CHANNELS 3
558#define DT_PIXEL_SIMD_CHANNELS 4
571#if defined(_OPENMP) && defined(OPENMP_SIMD_) && !defined(DT_NO_SIMD_HINTS)
573#define _DT_Pragma_(x) _Pragma(#x)
574#define _DT_Pragma(x) _DT_Pragma_(x)
575#define for_each_channel(_var, ...) \
576 _DT_Pragma(omp simd __VA_ARGS__) \
577 for (size_t _var = 0; _var < DT_PIXEL_SIMD_CHANNELS; _var++)
578#define for_four_channels(_var, ...) \
579 _DT_Pragma(omp simd __VA_ARGS__) \
580 for (size_t _var = 0; _var < 4; _var++)
582#define for_each_channel(_var, ...) \
583 for (size_t _var = 0; _var < DT_PIXEL_SIMD_CHANNELS; _var++)
584#define for_four_channels(_var, ...) \
585 for (size_t _var = 0; _var < 4; _var++)
598 float *
const __restrict__
out,
599 const float *
const __restrict__ in)
601 dt_store_simd_nontemporal(
out, dt_load_simd(in));
608static inline void copy_pixel(
float *
const __restrict__
out,
const float *
const __restrict__ in)
777int dt_init(
int argc,
char *argv[],
const gboolean init_gui,
const gboolean load_data,
lua_State *
L);
817 for(
size_t k = 0; k <
size /
sizeof(
unsigned char); k++) {
818 unsigned char *
const item = (
unsigned char *
const)buffer + k;
825static inline gboolean
dt_modifier_is(
const GdkModifierType state,
const GdkModifierType desired_modifier_mask)
827 const GdkModifierType modifiers = gtk_accelerator_get_default_mod_mask();
829 return (state & modifiers) == desired_modifier_mask;
833static inline gboolean
dt_modifiers_include(
const GdkModifierType state,
const GdkModifierType desired_modifier_mask)
836 const GdkModifierType modifiers = gtk_accelerator_get_default_mod_mask();
838 return (state & (modifiers & desired_modifier_mask)) == desired_modifier_mask;
849 gettimeofday(&time, NULL);
850 return time.tv_sec - 1290608000 + (1.0 / 1000000.0) * time.tv_usec;
870#define g_list_is_singleton(list) ((list) && (!(list)->next))
877 if (!list)
return TRUE;
878 list = g_list_next(list);
886 return g_list_next(list) ? g_list_next(list) : list;
891 return g_list_next(list) ? g_list_next(list) : head;
898 return g_list_previous(list) ? g_list_previous(list) : g_list_last((GList*)list);
907int dt_load_from_string(
const gchar *image_to_load, gboolean open_image_in_dr, gboolean *single_image);
909#define dt_unreachable_codepath_with_desc(D) \
910 dt_unreachable_codepath_with_caller(D, __FILE__, __LINE__, __FUNCTION__)
911#define dt_unreachable_codepath() dt_unreachable_codepath_with_caller("unreachable", __FILE__, __LINE__, __FUNCTION__)
913 const int line,
const char *function)
915 fprintf(stderr,
"[dt_unreachable_codepath] {%s} %s:%d (%s) - we should not be here. please report this to "
918 __builtin_unreachable();
928 const size_t alloc_size =
n * objsize;
933 if(!buf)
return NULL;
937#ifndef dt_pixelpipe_cache_alloc_perthread
938#define dt_pixelpipe_cache_alloc_perthread(n, objsize, padded_size) \
939 ((void *)dt_pixelpipe_cache_alloc_perthread_impl((n), (objsize), (padded_size), __FILE__ ":" DT_STRINGIFY(__LINE__)))
945 if(!buf)
return NULL;
950#ifndef dt_pixelpipe_cache_calloc_perthread
951#define dt_pixelpipe_cache_calloc_perthread(n, objsize, padded_size) \
952 ((void *)dt_pixelpipe_cache_calloc_perthread_impl((n), (objsize), (padded_size), __FILE__ ":" DT_STRINGIFY(__LINE__)))
961#ifndef dt_pixelpipe_cache_alloc_perthread_float
962#define dt_pixelpipe_cache_alloc_perthread_float(n, padded_size) \
963 ((float *)dt_pixelpipe_cache_alloc_perthread_float_impl((n), (padded_size), __FILE__ ":" DT_STRINGIFY(__LINE__)))
967#define dt_get_perthread(buf, padsize) DT_IS_ALIGNED((buf) + ((padsize) * dt_get_thread_num()))
970#define dt_get_bythread(buf, padsize, tnum) DT_IS_ALIGNED((buf) + ((padsize) * (tnum)))
977 for(
size_t i = 0;
i <
size;
i++)
978 hash = ((hash << 5) + hash) ^ str[
i];
984#define DT_MAX_FILENAME_LEN 256
1003#define DT_MAX_PATH_FOR_PARAMS 4096
1007 if(!
string || !to_replace)
return NULL;
1008 gchar **split = g_strsplit(
string, to_replace, -1);
1009 gchar *text = g_strjoinv(
"", split);
1029 if(!s)
return g_strdup(
"");
1031 PangoAttrList *attrs = NULL;
1032 gchar *plain = NULL;
1034 const gchar *underscore =
"_";
1035 gunichar mnemonic = underscore[0];
1036 if(!pango_parse_markup(s, -1, mnemonic, &attrs, &plain, NULL, NULL))
1039 pango_attr_list_unref(attrs);
const char ** description(struct dt_iop_module_t *self)
Definition ashift.c:159
#define TRUE
Definition ashift_lsd.c:162
#define FALSE
Definition ashift_lsd.c:158
return vector dt_simd_set1(valid ?(scaling+NORM_MIN) :NORM_MIN)
const float i
Definition colorspaces_inline_conversions.h:669
const float c
Definition colorspaces_inline_conversions.h:1365
const float L
Definition colorspaces_inline_conversions.h:724
const float n
Definition colorspaces_inline_conversions.h:929
dt_store_simd_aligned(out, dt_mat3x4_mul_vec4(vin, dt_colormatrix_row_to_simd(matrix, 0), dt_colormatrix_row_to_simd(matrix, 1), dt_colormatrix_row_to_simd(matrix, 2)))
return dt_load_simd_aligned(JCH)
static const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t row1
Definition darktable.h:547
#define DT_ALIGNED_PIXEL
Definition darktable.h:313
dt_store_simd(out, value)
static void memset_zero(void *const buffer, size_t size)
Set the memory buffer to zero as a pack of unsigned char.
Definition darktable.h:813
void dt_show_times(const dt_times_t *start, const char *prefix)
Definition darktable.c:1568
static gchar * dt_string_replace(const char *string, const char *to_replace)
Definition darktable.h:1005
static float * dt_calloc_align_float(size_t pixels)
Definition darktable.h:422
static void * dt_calloc_align(size_t size)
Definition darktable.h:412
static gboolean dt_modifiers_include(const GdkModifierType state, const GdkModifierType desired_modifier_mask)
Definition darktable.h:833
dt_debug_thread_t
Definition darktable.h:633
@ DT_DEBUG_LIGHTTABLE
Definition darktable.h:645
@ DT_DEBUG_UNDO
Definition darktable.h:654
@ DT_DEBUG_INPUT
Definition darktable.h:649
@ DT_DEBUG_PRINT
Definition darktable.h:650
@ DT_DEBUG_OPENCL
Definition darktable.h:642
@ DT_DEBUG_PIPE
Definition darktable.h:661
@ DT_DEBUG_HISTORY
Definition darktable.h:660
@ DT_DEBUG_CAMERA_SUPPORT
Definition darktable.h:651
@ DT_DEBUG_NAN
Definition darktable.h:646
@ DT_DEBUG_DEMOSAIC
Definition darktable.h:657
@ DT_DEBUG_MEMORY
Definition darktable.h:644
@ DT_DEBUG_PERF
Definition darktable.h:639
@ DT_DEBUG_VERBOSE
Definition darktable.h:663
@ DT_DEBUG_PARAMS
Definition darktable.h:656
@ DT_DEBUG_CONTROL
Definition darktable.h:637
@ DT_DEBUG_COLORPROFILE
Definition darktable.h:664
@ DT_DEBUG_CACHE
Definition darktable.h:636
@ DT_DEBUG_ALWAYS
Definition darktable.h:634
@ DT_DEBUG_SIGNAL
Definition darktable.h:655
@ DT_DEBUG_PWSTORAGE
Definition darktable.h:641
@ DT_DEBUG_SHORTCUTS
Definition darktable.h:658
@ DT_DEBUG_IMAGEIO
Definition darktable.h:653
@ DT_DEBUG_DEV
Definition darktable.h:638
@ DT_DEBUG_NOCACHE_REUSE
Definition darktable.h:665
@ DT_DEBUG_CAMCTL
Definition darktable.h:640
@ DT_DEBUG_IMPORT
Definition darktable.h:662
@ DT_DEBUG_IOPORDER
Definition darktable.h:652
@ DT_DEBUG_MASKS
Definition darktable.h:647
@ DT_DEBUG_TILING
Definition darktable.h:659
@ DT_DEBUG_SQL
Definition darktable.h:643
@ DT_DEBUG_LUA
Definition darktable.h:648
void dt_pixelpipe_cache_free_align_cache(struct dt_dev_pixelpipe_cache_t *cache, void **mem, const char *message)
Definition pixelpipe_cache.c:1172
void dt_cleanup()
Definition darktable.c:1349
void gboolean dt_supported_image(const gchar *filename)
check if file is a supported image
Definition darktable.c:266
static void copy_pixel(float *const __restrict__ out, const float *const __restrict__ in)
Definition darktable.h:608
int dt_init(int argc, char *argv[], const gboolean init_gui, const gboolean load_data, lua_State *L)
Definition darktable.c:452
static void dt_free_align_ptr(void *mem)
Definition darktable.h:399
#define for_each_channel(_var,...)
Definition darktable.h:582
float dt_boundingbox_t[4]
Definition darktable.h:630
static float * dt_alloc_align_float(size_t pixels)
Definition darktable.h:418
static size_t dt_round_size_sse(const size_t size)
Definition darktable.h:327
void void dt_print_nts(dt_debug_thread_t thread, const char *msg,...) __attribute__((format(printf
static void * dt_check_sse_aligned(void *pointer)
Definition darktable.h:428
static gchar * strip_markup(const char *s)
Remove Pango/Gtk markup and accels mnemonics from text labels. If the markup parsing fails,...
Definition darktable.h:1027
darktable_t darktable
Definition darktable.c:178
static void * dt_alloc_align_internal(size_t size)
Definition darktable.h:333
void dt_print_mem_usage()
Definition darktable.c:1795
static void dt_free_gpointer(gpointer ptr)
Definition darktable.h:387
float dt_aligned_pixel_simd_t __attribute__((vector_size(16), aligned(16)))
Multi-tap smudge source sample with directional jitter.
Definition darktable.h:448
static void copy_pixel_nontemporal(float *const __restrict__ out, const float *const __restrict__ in)
Definition darktable.h:597
void void void int dt_worker_threads()
Definition darktable.c:1665
static void * dt_pixelpipe_cache_alloc_perthread_impl(const size_t n, const size_t objsize, size_t *padded_size, const char *message)
Definition darktable.h:926
static const GList * g_list_next_wraparound(const GList *list, const GList *head)
Definition darktable.h:889
static const dt_aligned_pixel_simd_t sign
Definition darktable.h:475
static int dt_get_thread_num()
Definition darktable.h:269
size_t dt_get_singlebuffer_mem()
Definition darktable.c:1675
void * dt_alloc_align(size_t size)
Definition darktable.c:447
#define dt_free(ptr)
Definition darktable.h:380
void dt_capabilities_remove(char *capability)
Definition darktable.c:1778
void dt_print(dt_debug_thread_t thread, const char *msg,...) __attribute__((format(printf
static void dt_get_times(dt_times_t *t)
Definition darktable.h:853
static float * dt_pixelpipe_cache_alloc_perthread_float_impl(const size_t n, size_t *padded_size, const char *message)
Definition darktable.h:956
#define omp_get_thread_num()
Definition darktable.h:261
static const GList * g_list_prev_wraparound(const GList *list)
Definition darktable.h:894
void void void dt_vprint(dt_debug_thread_t thread, const char *msg,...) __attribute__((format(printf
static int dt_version()
Definition darktable.h:153
static gchar * delete_underscore(const char *s)
Definition darktable.h:1015
static uint64_t dt_hash(uint64_t hash, const char *str, size_t size)
Definition darktable.h:975
size_t dt_get_mipmap_mem()
Definition darktable.c:1681
static size_t dt_round_size(const size_t size, const size_t alignment)
Definition darktable.h:321
static void dt_unreachable_codepath_with_caller(const char *description, const char *file, const int line, const char *function)
Definition darktable.h:912
int dt_load_from_string(const gchar *image_to_load, gboolean open_image_in_dr, gboolean *single_image)
Definition darktable.c:282
#define DT_MODULE_VERSION
Definition darktable.h:119
return out
Definition darktable.h:479
static const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t row2
Definition darktable.h:548
static GList * g_list_next_bounded(GList *list)
Definition darktable.h:884
char * dt_version_major_minor()
Definition darktable.c:235
void dt_configure_runtime_performance(dt_sys_resources_t *resources, gboolean init_gui)
Definition darktable.c:1686
static const dt_aligned_pixel_simd_t value
Definition darktable.h:501
void dt_capabilities_add(char *capability)
Definition darktable.c:1767
static double dt_get_wtime(void)
Definition darktable.h:846
static void * dt_pixelpipe_cache_calloc_perthread_impl(const size_t n, const size_t objsize, size_t *padded_size, const char *message)
Definition darktable.h:942
void dt_capabilities_cleanup()
Definition darktable.c:1788
static gboolean dt_is_aligned(const void *pointer, size_t byte_count)
Definition darktable.h:316
static const dt_aligned_pixel_simd_t exponent
Definition darktable.h:484
void * dt_pixelpipe_cache_alloc_align_cache_impl(struct dt_dev_pixelpipe_cache_t *cache, size_t size, int id, const char *name)
Definition pixelpipe_cache.c:1124
static gboolean dt_modifier_is(const GdkModifierType state, const GdkModifierType desired_modifier_mask)
Definition darktable.h:825
void dt_show_times_f(const dt_times_t *start, const char *prefix, const char *suffix,...) __attribute__((format(printf
static const dt_aligned_pixel_simd_t row0
Definition darktable.h:546
size_t dt_get_available_mem()
Definition darktable.c:1670
int dt_capabilities_check(char *capability)
Definition darktable.c:1754
#define DT_CACHELINE_BYTES
Definition darktable.h:304
static gboolean g_list_shorter_than(const GList *list, unsigned len)
Definition darktable.h:871
#define dt_pthread_rwlock_t
Definition dtpthread.h:389
int getrusage(int who, struct rusage *usage)
Definition getrusage.c:56
#define RUSAGE_SELF
Definition getrusage.h:53
const int t
Definition iop_profile.h:227
int lua_State
Definition lua.h:95
size_t size
Definition mipmap_cache.c:3
k
Definition derive_filmic_v6_gamut_mapping.py:67
@ DT_SIGNAL_COUNT
Definition signal.h:288
unsigned __int64 uint64_t
Definition strptime.c:74
Definition darktable.h:684
struct dt_dbus_t * dbus
Definition darktable.h:714
struct dt_undo_t * undo
Definition darktable.h:715
char * tmpdir
Definition darktable.h:751
dt_pthread_mutex_t readFile_mutex
Definition darktable.h:731
char * cachedir
Definition darktable.h:753
dt_codepath_t codepath
Definition darktable.h:685
struct dt_lib_t * lib
Definition darktable.h:699
int32_t unmuted_signal_dbg_acts
Definition darktable.h:759
struct dt_imageio_t * imageio
Definition darktable.h:712
struct dt_dev_pixelpipe_cache_t * pixelpipe_cache
Definition darktable.h:718
int32_t num_openmp_threads
Definition darktable.h:686
struct dt_l10n_t * l10n
Definition darktable.h:717
struct dt_gui_gtk_t * gui
Definition darktable.h:703
dt_pthread_rwlock_t database_threadsafe
Definition darktable.h:744
struct dt_colorspaces_t * color_profiles
Definition darktable.h:716
GList * capabilities
Definition darktable.h:695
GTimeZone * utc_tz
Definition darktable.h:761
char * sharedir
Definition darktable.h:748
struct dt_collection_t * collection
Definition darktable.h:709
struct dt_mipmap_cache_t * mipmap_cache
Definition darktable.h:704
struct dt_selection_t * selection
Definition darktable.h:710
GList * iop
Definition darktable.h:689
dt_pthread_mutex_t exiv2_threadsafe
Definition darktable.h:728
struct dt_sys_resources_t dtresources
Definition darktable.h:763
dt_pthread_mutex_t plugin_threadsafe
Definition darktable.h:721
dt_lua_state_t lua_state
Definition darktable.h:755
char * moduledir
Definition darktable.h:749
dt_pthread_mutex_t capabilities_threadsafe
Definition darktable.h:724
GList * iop_order_list
Definition darktable.h:690
const struct dt_database_t * db
Definition darktable.h:707
GList * iop_order_rules
Definition darktable.h:691
struct dt_control_signal_t * signals
Definition darktable.h:702
struct dt_bauhaus_t * bauhaus
Definition darktable.h:706
struct dt_opencl_t * opencl
Definition darktable.h:713
char * configdir
Definition darktable.h:752
char * datadir
Definition darktable.h:747
GList * themes
Definition darktable.h:758
int32_t unmuted
Definition darktable.h:688
struct dt_image_cache_t * image_cache
Definition darktable.h:705
struct dt_develop_t * develop
Definition darktable.h:698
struct dt_points_t * points
Definition darktable.h:711
char * localedir
Definition darktable.h:750
dt_pthread_mutex_t pipeline_threadsafe
Definition darktable.h:736
struct dt_view_manager_t * view_manager
Definition darktable.h:700
char * kerneldir
Definition darktable.h:754
JsonParser * noiseprofile_parser
Definition darktable.h:696
GList * guides
Definition darktable.h:756
gboolean unmuted_signal_dbg[DT_SIGNAL_COUNT]
Definition darktable.h:760
char * main_message
Definition darktable.h:766
char * progname
Definition darktable.h:746
struct dt_conf_t * conf
Definition darktable.h:697
GDateTime * origin_gdt
Definition darktable.h:762
const struct dt_pwstorage_t * pwstorage
Definition darktable.h:708
double start_wtime
Definition darktable.h:757
struct dt_control_t * control
Definition darktable.h:701
Definition darktable.h:669
unsigned int OPENMP_SIMD
Definition darktable.h:672
unsigned int _no_intrinsics
Definition darktable.h:671
unsigned int SSE2
Definition darktable.h:670
Definition collection.h:169
Definition colorspaces.h:172
Definition common/database.c:99
Definition pixelpipe_cache.h:55
Definition image_cache.h:39
Definition imageio_module.h:133
Definition mipmap_cache.h:93
Definition pwstorage.h:49
Definition selection.c:48
Definition darktable.h:676
size_t headroom_memory
Definition darktable.h:679
size_t total_memory
Definition darktable.h:677
size_t mipmap_memory
Definition darktable.h:678
size_t pixelpipe_memory
Definition darktable.h:680
Definition darktable.h:770
double clock
Definition darktable.h:771
double user
Definition darktable.h:772
Definition views/view.h:167
Definition getrusage.h:33
struct timeval ru_utime
Definition getrusage.h:34
#define MAX(a, b)
Definition thinplate.c:29