diff options
author | Krunoslav Kovac <Krunoslav.Kovac@amd.com> | 2017-12-22 11:22:39 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-02-19 14:17:38 -0500 |
commit | 6d9ac917e6269c3446e19cb6adecd51aefa5fedf (patch) | |
tree | 044ac79b08bb019f41270596112b7e3d76dbf304 /drivers | |
parent | 529c690ba8ef2da093ea84a64df72bdb8123479f (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.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dc.h | 5 |
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; |