mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 06:01:53 +02:00
drm/amd/display: Add Interface to Dump DSC Caps from dm
No common dsc params found between encoder and decoder is one of the reason that could prevent dsc from properly enabled. Dump the params to a specific timing to help locate possible invalid dsc params in either encoder or decoder side. Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com> Signed-off-by: Fangzhi Zuo <Jerry.Zuo@amd.com> Signed-off-by: Roman Li <roman.li@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
9c980a85de
commit
9eaf3abef7
|
|
@ -94,6 +94,11 @@ uint32_t dc_dsc_stream_bandwidth_overhead_in_kbps(
|
|||
const int num_slices_h,
|
||||
const bool is_dp);
|
||||
|
||||
void dc_dsc_dump_decoder_caps(const struct display_stream_compressor *dsc,
|
||||
const struct dsc_dec_dpcd_caps *dsc_sink_caps);
|
||||
void dc_dsc_dump_encoder_caps(const struct display_stream_compressor *dsc,
|
||||
const struct dc_crtc_timing *timing);
|
||||
|
||||
/* TODO - Hardware/specs limitation should be owned by dc dsc and returned to DM,
|
||||
* and DM can choose to OVERRIDE the limitation on CASE BY CASE basis.
|
||||
* Hardware/specs limitation should not be writable by DM.
|
||||
|
|
|
|||
|
|
@ -30,6 +30,9 @@
|
|||
#include "rc_calc.h"
|
||||
#include "fixed31_32.h"
|
||||
|
||||
#define DC_LOGGER \
|
||||
dsc->ctx->logger
|
||||
|
||||
/* This module's internal functions */
|
||||
|
||||
/* default DSC policy target bitrate limit is 16bpp */
|
||||
|
|
@ -480,6 +483,48 @@ bool dc_dsc_compute_bandwidth_range(
|
|||
return is_dsc_possible;
|
||||
}
|
||||
|
||||
void dc_dsc_dump_encoder_caps(const struct display_stream_compressor *dsc,
|
||||
const struct dc_crtc_timing *timing)
|
||||
{
|
||||
struct dsc_enc_caps dsc_enc_caps;
|
||||
|
||||
get_dsc_enc_caps(dsc, &dsc_enc_caps, timing->pix_clk_100hz);
|
||||
|
||||
DC_LOG_DSC("dsc encoder caps:");
|
||||
DC_LOG_DSC("\tdsc_version 0x%x", dsc_enc_caps.dsc_version);
|
||||
DC_LOG_DSC("\tslice_caps 0x%x", dsc_enc_caps.slice_caps.raw);
|
||||
DC_LOG_DSC("\tlb_bit_depth %d", dsc_enc_caps.lb_bit_depth);
|
||||
DC_LOG_DSC("\tis_block_pred_supported %d", dsc_enc_caps.is_block_pred_supported);
|
||||
DC_LOG_DSC("\tcolor_formats 0x%x", dsc_enc_caps.color_formats.raw);
|
||||
DC_LOG_DSC("\tcolor_depth 0x%x", dsc_enc_caps.color_depth.raw);
|
||||
DC_LOG_DSC("\tmax_total_throughput_mps %d", dsc_enc_caps.max_total_throughput_mps);
|
||||
DC_LOG_DSC("\tmax_slice_width %d", dsc_enc_caps.max_slice_width);
|
||||
DC_LOG_DSC("\tbpp_increment_div %d", dsc_enc_caps.bpp_increment_div);
|
||||
}
|
||||
|
||||
void dc_dsc_dump_decoder_caps(const struct display_stream_compressor *dsc,
|
||||
const struct dsc_dec_dpcd_caps *dsc_sink_caps)
|
||||
{
|
||||
DC_LOG_DSC("dsc decoder caps:");
|
||||
DC_LOG_DSC("\tis_dsc_supported %d", dsc_sink_caps->is_dsc_supported);
|
||||
DC_LOG_DSC("\tdsc_version 0x%x", dsc_sink_caps->dsc_version);
|
||||
DC_LOG_DSC("\trc_buffer_size %d", dsc_sink_caps->rc_buffer_size);
|
||||
DC_LOG_DSC("\tslice_caps1 0x%x", dsc_sink_caps->slice_caps1.raw);
|
||||
DC_LOG_DSC("\tslice_caps2 0x%x", dsc_sink_caps->slice_caps2.raw);
|
||||
DC_LOG_DSC("\tlb_bit_depth %d", dsc_sink_caps->lb_bit_depth);
|
||||
DC_LOG_DSC("\tis_block_pred_supported %d", dsc_sink_caps->is_block_pred_supported);
|
||||
DC_LOG_DSC("\tedp_max_bits_per_pixel %d", dsc_sink_caps->edp_max_bits_per_pixel);
|
||||
DC_LOG_DSC("\tcolor_formats 0x%x", dsc_sink_caps->color_formats.raw);
|
||||
DC_LOG_DSC("\tthroughput_mode_0_mps %d", dsc_sink_caps->throughput_mode_0_mps);
|
||||
DC_LOG_DSC("\tthroughput_mode_1_mps %d", dsc_sink_caps->throughput_mode_1_mps);
|
||||
DC_LOG_DSC("\tmax_slice_width %d", dsc_sink_caps->max_slice_width);
|
||||
DC_LOG_DSC("\tbpp_increment_div %d", dsc_sink_caps->bpp_increment_div);
|
||||
DC_LOG_DSC("\tbranch_overall_throughput_0_mps %d", dsc_sink_caps->branch_overall_throughput_0_mps);
|
||||
DC_LOG_DSC("\tbranch_overall_throughput_1_mps %d", dsc_sink_caps->branch_overall_throughput_1_mps);
|
||||
DC_LOG_DSC("\tbranch_max_line_width %d", dsc_sink_caps->branch_max_line_width);
|
||||
DC_LOG_DSC("\tis_dp %d", dsc_sink_caps->is_dp);
|
||||
}
|
||||
|
||||
static void get_dsc_enc_caps(
|
||||
const struct display_stream_compressor *dsc,
|
||||
struct dsc_enc_caps *dsc_enc_caps,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user