35 if((mask == NULL) || (tmp == NULL))
goto error;
44 wb[0] = wb[1] = wb[2] = 1.0f;
52 fprintf(stderr,
"[dt_dev_write_rawdetail_mask] couldn't write detail mask\n");
80 const int devid = pipe->
devid;
82 cl_int err = CL_SUCCESS;
84 if(mask == NULL)
goto error;
87 tmp = dt_opencl_alloc_device_buffer(devid,
sizeof(
float) *
width *
height);
88 if(tmp == NULL)
goto error;
96 wb[0] = wb[1] = wb[2] = 1.0f;
98 size_t sizes[3] = { ROUNDUPDWD(
width, devid), ROUNDUPDHT(
height, devid), 1 };
107 if(err != CL_SUCCESS)
goto error;
110 size_t sizes[3] = { ROUNDUPDWD(
width, devid), ROUNDUPDHT(
height, devid), 1 };
117 if(err != CL_SUCCESS)
goto error;
120 err = dt_opencl_read_host_from_device(devid, mask,
out,
width,
height,
sizeof(
float));
121 if(err != CL_SUCCESS)
goto error;
133 fprintf(stderr,
"[dt_dev_write_rawdetail_mask_cl] couldn't write detail mask: %i\n", err);
146 gboolean valid =
FALSE;
150 for(source_iter = pipe->
nodes; source_iter; source_iter = g_list_next(source_iter))
165 if(!valid)
return NULL;
169 float *resmask = src;
173 for(GList *iter = source_iter; iter; iter = g_list_next(iter))
179 if(module->module->distort_mask
180 && !(!strcmp(module->module->op,
"finalscale")
181 && module->roi_in.width == 0
182 && module->roi_in.height == 0))
185 (
size_t)module->roi_out.width * module->roi_out.height, 0);
187 module->roi_in.width, module->roi_in.height,
188 module->roi_out.width, module->roi_out.height);
189 module->module->distort_mask(module->module, (dt_dev_pixelpipe_t *)pipe, module, inmask, tmp,
190 &module->roi_in, &module->roi_out);
195 else if(!module->module->distort_mask
196 && (module->roi_in.width != module->roi_out.width
197 || module->roi_in.height != module->roi_out.height
198 || module->roi_in.x != module->roi_out.x
199 || module->roi_in.y != module->roi_out.y))
200 fprintf(stderr,
"FIXME: module `%s' changed the roi from %d x %d @ %d / %d to %d x %d | %d / %d but doesn't have "
201 "distort_mask() implemented!\n", module->module->op, module->roi_in.width,
202 module->roi_in.height, module->roi_in.x, module->roi_in.y,
203 module->roi_out.width, module->roi_out.height, module->roi_out.x,
206 if(module->module == target_module)
break;
static void error(char *msg)
Definition ashift_lsd.c:202
#define TRUE
Definition ashift_lsd.c:162
#define FALSE
Definition ashift_lsd.c:158
int width
Definition bilateral.h:1
int height
Definition bilateral.h:1
static float kernel(const float *x, const float *y)
Definition colorchecker.c:469
static const dt_colormatrix_t dt_aligned_pixel_t out
Definition colorspaces_inline_conversions.h:184
static dt_aligned_pixel_t rgb
Definition colorspaces_inline_conversions.h:530
void dt_vprint(dt_debug_thread_t thread, const char *msg,...)
Definition darktable.c:1555
darktable_t darktable
Definition darktable.c:178
void dt_print(dt_debug_thread_t thread, const char *msg,...)
Definition darktable.c:1530
@ DT_DEBUG_MASKS
Definition darktable.h:647
#define dt_pixelpipe_cache_alloc_align_float_cache(pixels, id)
Definition darktable.h:371
#define dt_pixelpipe_cache_free_align(mem)
Definition darktable.h:377
gboolean dt_dev_pixelpipe_activemodule_disables_currentmodule(struct dt_develop_t *dev, struct dt_iop_module_t *current_module)
Definition dev_pixelpipe.c:212
@ DT_DEV_DETAIL_MASK_DEMOSAIC
Definition develop.h:140
@ DT_DEV_DETAIL_MASK_REQUIRED
Definition develop.h:139
@ DT_DEV_DETAIL_MASK_RAWPREPARE
Definition develop.h:141
void dt_masks_calc_rawdetail_mask(float *const src, float *const out, float *const tmp, const int width, const int height, const dt_aligned_pixel_t wb)
mask
Definition dtstyle_to_xmp.py:79
static int dt_opencl_enqueue_kernel_2d(const int dev, const int kernel, const size_t *sizes)
Definition opencl.h:574
static int dt_opencl_set_kernel_arg(const int dev, const int kernel, const size_t size, const void *arg)
Definition opencl.h:570
static void dt_opencl_release_mem_object(void *mem)
Definition opencl.h:619
float * dt_dev_distort_detail_mask(const dt_dev_pixelpipe_t *pipe, float *src, const dt_iop_module_t *target_module)
Definition pixelpipe_rawdetail.c:142
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_clear_rawdetail_mask(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_rawdetail.c:11
struct dt_opencl_t * opencl
Definition darktable.h:713
Definition pixelpipe_hb.h:95
gboolean enabled
Definition pixelpipe_hb.h:110
dt_iop_buffer_dsc_t dsc_in
Definition pixelpipe_hb.h:140
struct dt_iop_module_t *void * data
Definition pixelpipe_hb.h:96
Definition pixelpipe_hb.h:216
int want_detail_mask
Definition pixelpipe_hb.h:257
GList * nodes
Definition pixelpipe_hb.h:237
float * rawdetail_mask_data
Definition pixelpipe_hb.h:255
struct dt_iop_roi_t rawdetail_mask_roi
Definition pixelpipe_hb.h:256
int devid
Definition pixelpipe_hb.h:292
dt_aligned_pixel_t coeffs
Definition develop/format.h:69
struct dt_iop_buffer_dsc_t::@17 temperature
GModule *dt_dev_operation_t op
Definition imageop.h:226
int width
Definition imageop.h:68
int height
Definition imageop.h:68