![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include "common/darktable.h"#include "common/box_filters.h"#include "common/guided_filter.h"#include "common/math.h"#include "common/opencl.h"#include <assert.h>#include <float.h>#include <stdlib.h>#include <string.h>
Include dependency graph for guided_filter.c:Data Structures | |
| struct | tile |
| struct | color_image |
Macros | |
| #define | GF_TILE_SIZE 512 |
| #define | SIMD_FOR for |
| #define | _mm_prefetch(where, hint) |
| #define | INP_MEAN 0 |
| #define | GUIDE_MEAN_R 1 |
| #define | GUIDE_MEAN_G 2 |
| #define | GUIDE_MEAN_B 3 |
| #define | COV_R 0 |
| #define | COV_G 1 |
| #define | COV_B 2 |
| #define | VAR_RR 3 |
| #define | VAR_RG 4 |
| #define | VAR_RB 5 |
| #define | VAR_GG 6 |
| #define | VAR_BB 8 |
| #define | VAR_GB 7 |
| #define | A_RED 0 |
| #define | A_GREEN 1 |
| #define | A_BLUE 2 |
| #define | B 3 |
Typedefs | |
| typedef struct tile | tile |
| typedef struct color_image | color_image |
Functions | |
| static | __attribute__ ((always_inline)) |
| static float * | get_color_pixel (color_image img, size_t i) |
| static __DT_CLONE_TARGETS__ int | guided_filter_tiling (color_image imgg, gray_image img, gray_image img_out, tile target, const int w, const float eps, const float guide_weight, const float min, const float max) |
| __DT_CLONE_TARGETS__ int | guided_filter (const float *const guide, const float *const in, float *const out, const int width, const int height, const int ch, const int w, const float sqrt_eps, const float guide_weight, const float min, const float max) |
| dt_guided_filter_cl_global_t * | dt_guided_filter_init_cl_global () |
| void | dt_guided_filter_free_cl_global (dt_guided_filter_cl_global_t *g) |
| static int | cl_split_rgb (const int devid, const int width, const int height, cl_mem guide, cl_mem imgg_r, cl_mem imgg_g, cl_mem imgg_b, const float guide_weight) |
| static int | cl_box_mean (const int devid, const int width, const int height, const int w, cl_mem in, cl_mem out, cl_mem temp) |
| static int | cl_covariances (const int devid, const int width, const int height, cl_mem guide, cl_mem in, cl_mem cov_imgg_img_r, cl_mem cov_imgg_img_g, cl_mem cov_imgg_img_b, const float guide_weight) |
| static int | cl_variances (const int devid, const int width, const int height, cl_mem guide, cl_mem var_imgg_rr, cl_mem var_imgg_rg, cl_mem var_imgg_rb, cl_mem var_imgg_gg, cl_mem var_imgg_gb, cl_mem var_imgg_bb, const float guide_weight) |
| static int | cl_update_covariance (const int devid, const int width, const int height, cl_mem in, cl_mem out, cl_mem a, cl_mem b, float eps) |
| static int | cl_solve (const int devid, const int width, const int height, cl_mem img_mean, cl_mem imgg_mean_r, cl_mem imgg_mean_g, cl_mem imgg_mean_b, cl_mem cov_imgg_img_r, cl_mem cov_imgg_img_g, cl_mem cov_imgg_img_b, cl_mem var_imgg_rr, cl_mem var_imgg_rg, cl_mem var_imgg_rb, cl_mem var_imgg_gg, cl_mem var_imgg_gb, cl_mem var_imgg_bb, cl_mem a_r, cl_mem a_g, cl_mem a_b, cl_mem b) |
| static int | cl_generate_result (const int devid, const int width, const int height, cl_mem guide, cl_mem a_r, cl_mem a_g, cl_mem a_b, cl_mem b, cl_mem out, const float guide_weight, const float min, const float max) |
| static int | guided_filter_cl_impl (int devid, cl_mem guide, cl_mem in, cl_mem out, const int width, const int height, const int ch, const int w, const float sqrt_eps, const float guide_weight, const float min, const float max) |
| static int | guided_filter_cl_fallback (int devid, cl_mem guide, cl_mem in, cl_mem out, const int width, const int height, const int ch, const int w, const float sqrt_eps, const float guide_weight, const float min, const float max) |
| int | guided_filter_cl (int devid, cl_mem guide, cl_mem in, cl_mem out, const int width, const int height, const int ch, const int w, const float sqrt_eps, const float guide_weight, const float min, const float max) |
| #define _mm_prefetch | ( | where, | |
| hint | |||
| ) |
| #define A_BLUE 2 |
| #define A_GREEN 1 |
| #define A_RED 0 |
| #define B 3 |
| #define COV_B 2 |
| #define COV_G 1 |
| #define COV_R 0 |
| #define GF_TILE_SIZE 512 |
| #define GUIDE_MEAN_B 3 |
| #define GUIDE_MEAN_G 2 |
| #define GUIDE_MEAN_R 1 |
| #define INP_MEAN 0 |
| #define SIMD_FOR for |
| #define VAR_BB 8 |
| #define VAR_GB 7 |
| #define VAR_GG 6 |
| #define VAR_RB 5 |
| #define VAR_RG 4 |
| #define VAR_RR 3 |
| typedef struct color_image color_image |
|
inlinestatic |
|
static |
References darktable, dt_opencl_enqueue_kernel_2d(), dt_opencl_set_kernel_arg(), dt_opencl_t::guided_filter, height, dt_guided_filter_cl_global_t::kernel_guided_filter_box_mean_x, dt_guided_filter_cl_global_t::kernel_guided_filter_box_mean_y, darktable_t::opencl, out, ROUNDUPDHT, ROUNDUPDWD, and width.
Referenced by guided_filter_cl_impl().
|
static |
|
static |
References darktable, dt_opencl_enqueue_kernel_2d(), dt_opencl_set_kernel_arg(), dt_opencl_t::guided_filter, height, kernel(), dt_guided_filter_cl_global_t::kernel_guided_filter_generate_result, max, min, darktable_t::opencl, out, ROUNDUPDHT, ROUNDUPDWD, and width.
Referenced by guided_filter_cl_impl().
|
static |
|
static |
|
static |
References darktable, dt_opencl_enqueue_kernel_2d(), dt_opencl_set_kernel_arg(), eps, dt_opencl_t::guided_filter, height, kernel(), dt_guided_filter_cl_global_t::kernel_guided_filter_update_covariance, darktable_t::opencl, out, ROUNDUPDHT, ROUNDUPDWD, and width.
Referenced by guided_filter_cl_impl().
|
static |
| void dt_guided_filter_free_cl_global | ( | dt_guided_filter_cl_global_t * | g | ) |
References dt_free, dt_opencl_free_kernel(), g, and IS_NULL_PTR.
Referenced by dt_opencl_cleanup().
| dt_guided_filter_cl_global_t * dt_guided_filter_init_cl_global | ( | ) |
References dt_opencl_create_kernel(), and g.
Referenced by dt_opencl_init().
|
inlinestatic |
References color_image::data, i, and color_image::stride.
Referenced by guided_filter_tiling().
| __DT_CLONE_TARGETS__ int guided_filter | ( | const float *const | guide, |
| const float *const | in, | ||
| float *const | out, | ||
| const int | width, | ||
| const int | height, | ||
| const int | ch, | ||
| const int | w, | ||
| const float | sqrt_eps, | ||
| const float | guide_weight, | ||
| const float | min, | ||
| const float | max | ||
| ) |
References ch, eps, guided_filter_tiling(), height, i, max, min, min_i(), out, and width.
Referenced by _develop_blend_process_feather(), guided_filter_cl_fallback(), and process().
| int guided_filter_cl | ( | int | devid, |
| cl_mem | guide, | ||
| cl_mem | in, | ||
| cl_mem | out, | ||
| const int | width, | ||
| const int | height, | ||
| const int | ch, | ||
| const int | w, | ||
| const float | sqrt_eps, | ||
| const float | guide_weight, | ||
| const float | min, | ||
| const float | max | ||
| ) |
References ch, DT_DEBUG_OPENCL, dt_opencl_image_fits_device(), dt_print(), guided_filter_cl_fallback(), guided_filter_cl_impl(), height, max, min, out, and width.
Referenced by dt_develop_blend_process_cl(), and process_cl().
|
static |
References ch, dt_opencl_read_host_from_device(), dt_opencl_write_host_to_device(), dt_pixelpipe_cache_alloc_align_float_cache, dt_pixelpipe_cache_free_align, error(), guided_filter(), height, IS_NULL_PTR, max, min, out, and width.
Referenced by guided_filter_cl().
|
static |
References cl_box_mean(), cl_covariances(), cl_generate_result(), cl_solve(), cl_split_rgb(), cl_update_covariance(), cl_variances(), dt_opencl_alloc_device(), dt_opencl_release_mem_object(), eps, error(), height, IS_NULL_PTR, max, min, out, and width.
Referenced by guided_filter_cl().
|
static |
References __OMP_PARALLEL_FOR__, A_BLUE, A_GREEN, A_RED, B, BOXFILTER_KAHAN_SUM, COV_B, COV_G, COV_R, color_image::data, gray_image::data, dt_box_mean(), dt_box_mean_horizontal(), dt_box_mean_vertical(), dt_get_perthread, dt_pixelpipe_cache_alloc_perthread_float, dt_pixelpipe_cache_free_align, eps, get_color_pixel(), GUIDE_MEAN_B, GUIDE_MEAN_G, GUIDE_MEAN_R, height, color_image::height, i, INP_MEAN, IS_NULL_PTR, k, tile::left, tile::lower, max, max_i(), min, min_i(), tile::right, size, color_image::stride, tile::upper, VAR_BB, VAR_GB, VAR_GG, VAR_RB, VAR_RG, VAR_RR, width, color_image::width, and gray_image::width.
Referenced by guided_filter().