Hoist out_rgbx
allocation out of the loops
This commit is contained in:
parent
bf499055e1
commit
9dee6dddf1
@ -4338,6 +4338,11 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
|
|||||||
|
|
||||||
//Film Simulations
|
//Film Simulations
|
||||||
if ( colorLUT ) {
|
if ( colorLUT ) {
|
||||||
|
std::size_t out_rgbx_size = 4 * (TS + 16);
|
||||||
|
std::unique_ptr<float> out_rgbx_buf(new float[out_rgbx_size]);
|
||||||
|
void* out_rgbx_ptr = out_rgbx_buf.get();
|
||||||
|
float* const out_rgbx = reinterpret_cast<float*>(std::align(16, 4 * TS, out_rgbx_ptr, out_rgbx_size));
|
||||||
|
|
||||||
for (int i = istart, ti = 0; i < tH; i++, ti++) {
|
for (int i = istart, ti = 0; i < tH; i++, ti++) {
|
||||||
for (int j = jstart, tj = 0; j < tW; j++, tj++) {
|
for (int j = jstart, tj = 0; j < tW; j++, tj++) {
|
||||||
float &sourceR = rtemp[ti * TS + tj];
|
float &sourceR = rtemp[ti * TS + tj];
|
||||||
@ -4357,12 +4362,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
|
|||||||
sourceB = CLIP<float>( Color::gamma_srgb( sourceB ) );
|
sourceB = CLIP<float>( Color::gamma_srgb( sourceB ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::size_t line_size = std::min(TS, tW - jstart);
|
colorLUT->getRGB(std::min(TS, tW - jstart), rtemp + ti * TS, gtemp + ti * TS, btemp + ti * TS, out_rgbx);
|
||||||
std::size_t out_rgbx_size = 4 * (line_size + 16);
|
|
||||||
std::unique_ptr<float> out_rgbx_buf(new float[out_rgbx_size]);
|
|
||||||
void* out_rgbx_ptr = out_rgbx_buf.get();
|
|
||||||
float* const out_rgbx = reinterpret_cast<float*>(std::align(16, 4 * line_size, out_rgbx_ptr, out_rgbx_size));
|
|
||||||
colorLUT->getRGB(line_size, rtemp + ti * TS, gtemp + ti * TS, btemp + ti * TS, out_rgbx);
|
|
||||||
|
|
||||||
for (int j = jstart, tj = 0; j < tW; j++, tj++) {
|
for (int j = jstart, tj = 0; j < tW; j++, tj++) {
|
||||||
float &sourceR = rtemp[ti * TS + tj];
|
float &sourceR = rtemp[ti * TS + tj];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user