drm/amd/display: fix regamma build optimization
authorJosip Pavic <Josip.Pavic@amd.com>
Tue, 26 Nov 2019 17:26:14 +0000 (12:26 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 18 Dec 2019 21:09:09 +0000 (16:09 -0500)
[Why]
When the global variable pow_buffer_ptr is set to -1, by definition
optimizations should not be used to build the regamma. Since
translate_from_linear_space unconditionally increments this global, it
inadvertently enables the optimization.

[How]
Increment pow_buffer_ptr only if it is not -1.

Signed-off-by: Josip Pavic <Josip.Pavic@amd.com>
Reviewed-by: Krunoslav Kovac <Krunoslav.Kovac@amd.com>
Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/modules/color/color_gamma.c

index b52c4d3..1b278c4 100644 (file)
@@ -364,8 +364,10 @@ static struct fixed31_32 translate_from_linear_space(
                        scratch_2 = dc_fixpt_mul(gamma_of_2,
                                        pow_buffer[pow_buffer_ptr%16]);
 
-               pow_buffer[pow_buffer_ptr%16] = scratch_2;
-               pow_buffer_ptr++;
+               if (pow_buffer_ptr != -1) {
+                       pow_buffer[pow_buffer_ptr%16] = scratch_2;
+                       pow_buffer_ptr++;
+               }
 
                scratch_1 = dc_fixpt_mul(scratch_1, scratch_2);
                scratch_1 = dc_fixpt_sub(scratch_1, args->a2);