aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorKrunoslav Kovac <Krunoslav.Kovac@amd.com>2017-12-22 11:22:39 -0500
committerAlex Deucher <alexander.deucher@amd.com>2018-02-19 14:17:38 -0500
commit6d9ac917e6269c3446e19cb6adecd51aefa5fedf (patch)
tree044ac79b08bb019f41270596112b7e3d76dbf304 /drivers
parent529c690ba8ef2da093ea84a64df72bdb8123479f (diff)
drm/amd/display: [RS4][RV] SDR Brightness Boost
We assume FP16 1.0 frame buffer value maps to 80 nits. DC changes are to make this configurable. Signed-off-by: Krunoslav Kovac <Krunoslav.Kovac@amd.com> Reviewed-by: Anthony Koo <Anthony.Koo@amd.com> Acked-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/amd/display/dc/core/dc.c6
-rw-r--r--drivers/gpu/drm/amd/display/dc/dc.h5
2 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
index 350458d3730c..990f891a46f6 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -1057,6 +1057,9 @@ static enum surface_update_type get_plane_info_update_type(const struct dc_surfa
1057 if (u->plane_info->input_tf != u->surface->input_tf) 1057 if (u->plane_info->input_tf != u->surface->input_tf)
1058 update_flags->bits.input_tf_change = 1; 1058 update_flags->bits.input_tf_change = 1;
1059 1059
1060 if (u->plane_info->sdr_white_level != u->surface->sdr_white_level)
1061 update_flags->bits.output_tf_change = 1;
1062
1060 if (u->plane_info->horizontal_mirror != u->surface->horizontal_mirror) 1063 if (u->plane_info->horizontal_mirror != u->surface->horizontal_mirror)
1061 update_flags->bits.horizontal_mirror_change = 1; 1064 update_flags->bits.horizontal_mirror_change = 1;
1062 1065
@@ -1101,7 +1104,8 @@ static enum surface_update_type get_plane_info_update_type(const struct dc_surfa
1101 || update_flags->bits.stereo_format_change 1104 || update_flags->bits.stereo_format_change
1102 || update_flags->bits.gamma_change 1105 || update_flags->bits.gamma_change
1103 || update_flags->bits.bpp_change 1106 || update_flags->bits.bpp_change
1104 || update_flags->bits.bandwidth_change) 1107 || update_flags->bits.bandwidth_change
1108 || update_flags->bits.output_tf_change)
1105 return UPDATE_TYPE_FULL; 1109 return UPDATE_TYPE_FULL;
1106 1110
1107 return UPDATE_TYPE_MED; 1111 return UPDATE_TYPE_MED;
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
index bc595bc15fe2..41d095318a5c 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -367,6 +367,8 @@ struct dc_transfer_func {
367 struct dc_transfer_func_distributed_points tf_pts; 367 struct dc_transfer_func_distributed_points tf_pts;
368 enum dc_transfer_func_type type; 368 enum dc_transfer_func_type type;
369 enum dc_transfer_func_predefined tf; 369 enum dc_transfer_func_predefined tf;
370 /* FP16 1.0 reference level in nits, default is 80 nits, only for PQ*/
371 uint32_t sdr_ref_white_level;
370 struct dc_context *ctx; 372 struct dc_context *ctx;
371}; 373};
372 374
@@ -397,6 +399,7 @@ union surface_update_flags {
397 uint32_t position_change:1; 399 uint32_t position_change:1;
398 uint32_t in_transfer_func_change:1; 400 uint32_t in_transfer_func_change:1;
399 uint32_t input_csc_change:1; 401 uint32_t input_csc_change:1;
402 uint32_t output_tf_change:1;
400 403
401 /* Full updates */ 404 /* Full updates */
402 uint32_t new_plane:1; 405 uint32_t new_plane:1;
@@ -428,6 +431,7 @@ struct dc_plane_state {
428 struct dc_bias_and_scale *bias_and_scale; 431 struct dc_bias_and_scale *bias_and_scale;
429 struct csc_transform input_csc_color_matrix; 432 struct csc_transform input_csc_color_matrix;
430 struct fixed31_32 coeff_reduction_factor; 433 struct fixed31_32 coeff_reduction_factor;
434 uint32_t sdr_white_level;
431 435
432 // TODO: No longer used, remove 436 // TODO: No longer used, remove
433 struct dc_hdr_static_metadata hdr_static_ctx; 437 struct dc_hdr_static_metadata hdr_static_ctx;
@@ -464,6 +468,7 @@ struct dc_plane_info {
464 enum plane_stereo_format stereo_format; 468 enum plane_stereo_format stereo_format;
465 enum dc_color_space color_space; 469 enum dc_color_space color_space;
466 enum color_transfer_func input_tf; 470 enum color_transfer_func input_tf;
471 unsigned int sdr_white_level;
467 bool horizontal_mirror; 472 bool horizontal_mirror;
468 bool visible; 473 bool visible;
469 bool per_pixel_alpha; 474 bool per_pixel_alpha;