FastLED 3.10.8
Loading...
Searching...
No Matches

◆ vpass_full()

template<int R, typename RGB_T, typename acc_t, bool ApplyAlpha, typename AlphaT>
static void fl::gfx::blur_detail::vpass_full ( RGB_T * pixels,
int w,
int h,
RGB_T * scratch,
AlphaT alpha )
static

Definition at line 1089 of file blur.cpp.hpp.

1089 {
1090#if defined(FL_IS_AVR)
1091 // AVR: column-by-column with per-channel noinline + O3.
1092 FL_BUILTIN_MEMSET(scratch, 0, R * sizeof(RGB_T));
1093 FL_BUILTIN_MEMSET(scratch + R + h, 0, R * sizeof(RGB_T));
1094
1095 for (int x = 0; x < w; ++x) {
1096 // Linearize column into padded region.
1097 {
1098 const RGB_T *src = pixels + x;
1099 RGB_T *dst = scratch + R;
1100 for (int i = 0; i < h; ++i) {
1101 *dst++ = *src;
1102 src += w;
1103 }
1104 }
1105 if (ApplyAlpha)
1106 apply_pass_alpha_1ch<R>(scratch, pixels + x, h, w, alpha);
1107 else
1108 apply_pass_1ch<R>(scratch, pixels + x, h, w);
1109 }
1110#else
1111 // Non-AVR: row-major vertical pass for cache efficiency.
1112 // Direct R=2 V-pass using exact [1,4,6,4,1] kernel (no cascaded R=1).
1113 if (ApplyAlpha) {
1115 pixels, w, h, scratch, alpha);
1116 } else {
1118 pixels, w, h, scratch, alpha);
1119 }
1120#endif
1121}
#define FL_BUILTIN_MEMSET(dest, val, n)
static FL_OPTIMIZE_FUNCTION void vpass_rowmajor_impl(RGB_T *pixels, int w, int h, RGB_T *scratch, AlphaT alpha) FL_NO_EXCEPT
Definition blur.cpp.hpp:968

References FL_BUILTIN_MEMSET, fl::FL_NO_EXCEPT, vpass_rowmajor_impl(), and fl::x.

Referenced by fl::gfx::blurGaussianImpl().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: