summaryrefslogtreecommitdiff
path: root/sdm
diff options
context:
space:
mode:
authorSaurabh Dubey <sdubey@codeaurora.org>2017-10-24 16:28:01 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2017-11-28 20:32:24 -0800
commitd90a6a43cc31c1dbcda05dce2b184cc444893908 (patch)
treee368763a68ad7592ef020c1ddc72daf7549787e9 /sdm
parentabf236b541b685f71acbeafc3c533a316b2b3f30 (diff)
downloaddisplay-d90a6a43cc31c1dbcda05dce2b184cc444893908.tar.gz
display: Enhance debug logging
1) Enable dynamic debugging in DRM 2) Add more Qservice debug categories, add corresponding kTags 3) Use ALOG for messages before core creation and after it is destroyed 4) Categorize existing logs correctly 5) Add more logs Change-Id: I3a9907900c6546adca907ecf720a78649fdc800b Crs-fixed: 2146757
Diffstat (limited to 'sdm')
-rw-r--r--sdm/include/core/debug_interface.h4
-rw-r--r--sdm/include/utils/rect.h1
-rw-r--r--sdm/libs/core/display_base.cpp11
-rw-r--r--sdm/libs/core/drm/hw_info_drm.cpp13
-rw-r--r--sdm/libs/core/fb/hw_device.cpp32
-rw-r--r--sdm/libs/core/fb/hw_hdmi.cpp6
-rw-r--r--sdm/libs/core/fb/hw_scale.cpp6
-rw-r--r--sdm/libs/hwc2/hwc_debugger.cpp24
-rw-r--r--sdm/libs/hwc2/hwc_debugger.h2
-rw-r--r--sdm/libs/hwc2/hwc_display.cpp20
-rw-r--r--sdm/libs/hwc2/hwc_layers.cpp14
-rw-r--r--sdm/libs/hwc2/hwc_session.cpp19
-rw-r--r--sdm/libs/hwc2/hwc_session_services.cpp5
-rw-r--r--sdm/libs/hwc2/hwc_tonemapper.cpp3
-rw-r--r--sdm/libs/utils/rect.cpp5
15 files changed, 119 insertions, 46 deletions
diff --git a/sdm/include/core/debug_interface.h b/sdm/include/core/debug_interface.h
index da219442..dba85ac5 100644
--- a/sdm/include/core/debug_interface.h
+++ b/sdm/include/core/debug_interface.h
@@ -49,7 +49,9 @@ enum DebugTag {
kTagRotator, //!< Debug log is tagged for rotator.
kTagScalar, //!< Debug log is tagged for Scalar Helper.
kTagQDCM, //!< Debug log is tagged for display QDCM color managing.
- kTagQOSClient, //!< Debug log is tagged for Qos client
+ kTagQOSClient, //!< Debug log is tagged for Qos client.
+ kTagDisplay, //!< Debug log is tagged for display core logs.
+ kTagClient, //!< Debug log is tagged for SDM client.
};
/*! @brief Display debug handler class.
diff --git a/sdm/include/utils/rect.h b/sdm/include/utils/rect.h
index 303fc9f1..b25f76e8 100644
--- a/sdm/include/utils/rect.h
+++ b/sdm/include/utils/rect.h
@@ -45,6 +45,7 @@ namespace sdm {
bool IsValid(const LayerRect &rect);
bool IsCongruent(const LayerRect &rect1, const LayerRect &rect2);
+ void LogI(DebugTag debug_tag, const char *prefix, const LayerRect &roi);
void Log(DebugTag debug_tag, const char *prefix, const LayerRect &roi);
void Normalize(const uint32_t &align_x, const uint32_t &align_y, LayerRect *rect);
LayerRect Union(const LayerRect &rect1, const LayerRect &rect2);
diff --git a/sdm/libs/core/display_base.cpp b/sdm/libs/core/display_base.cpp
index 1e948a2a..f04c8265 100644
--- a/sdm/libs/core/display_base.cpp
+++ b/sdm/libs/core/display_base.cpp
@@ -155,7 +155,7 @@ DisplayError DisplayBase::BuildLayerStackStats(LayerStack *layer_stack) {
hw_layers_info.app_layer_count++;
}
- DLOGV_IF(kTagNone, "LayerStack layer_count: %d, app_layer_count: %d, gpu_target_index: %d, "
+ DLOGD_IF(kTagNone, "LayerStack layer_count: %d, app_layer_count: %d, gpu_target_index: %d, "
"display type: %d", layers.size(), hw_layers_info.app_layer_count,
hw_layers_info.gpu_target_index, display_type_);
@@ -223,6 +223,7 @@ DisplayError DisplayBase::Prepare(LayerStack *layer_stack) {
return kErrorParameters;
}
+ DLOGI_IF(kTagDisplay, "Entering Prepare for display type : %d", display_type_);
error = BuildLayerStackStats(layer_stack);
if (error != kErrorNone) {
return error;
@@ -275,6 +276,7 @@ DisplayError DisplayBase::Prepare(LayerStack *layer_stack) {
DLOGW("ValidateHDR failed");
}
+ DLOGI_IF(kTagDisplay, "Exiting Prepare for display type : %d", display_type_);
return error;
}
@@ -309,6 +311,7 @@ DisplayError DisplayBase::Commit(LayerStack *layer_stack) {
}
}
+ DLOGI_IF(kTagDisplay, "Entering commit for display type : %d", display_type_);
CommitLayerParams(layer_stack);
error = comp_manager_->Commit(display_comp_ctx_, &hw_layers_);
@@ -340,6 +343,7 @@ DisplayError DisplayBase::Commit(LayerStack *layer_stack) {
return error;
}
+ DLOGI_IF(kTagDisplay, "Exiting commit for display type : %d", display_type_);
return kErrorNone;
}
@@ -1117,6 +1121,7 @@ DisplayError DisplayBase::ReconfigureMixer(uint32_t width, uint32_t height) {
return kErrorParameters;
}
+ DLOGD_IF(kTagQDCM, "Reconfiguring mixer with width : %d, height : %d", width, height);
HWMixerAttributes mixer_attributes;
mixer_attributes.width = width;
mixer_attributes.height = height;
@@ -1169,9 +1174,10 @@ bool DisplayBase::NeedsMixerReconfiguration(LayerStack *layer_stack, uint32_t *n
uint32_t align_y = 2;
if (req_mixer_width_ && req_mixer_height_) {
+ DLOGD_IF(kTagDisplay, "Required mixer width : %d, height : %d",
+ req_mixer_width_, req_mixer_height_);
*new_mixer_width = req_mixer_width_;
*new_mixer_height = req_mixer_height_;
-
return (req_mixer_width_ != mixer_width || req_mixer_height_ != mixer_height);
}
@@ -1187,6 +1193,7 @@ bool DisplayBase::NeedsMixerReconfiguration(LayerStack *layer_stack, uint32_t *n
max_area_layer_index = i;
}
}
+ DLOGV_IF(kTagDisplay, "Max area layer at index : %d", max_area_layer_index);
// TODO(user): Mark layer which needs downscaling on GPU fallback as priority layer and use MDP
// for composition to avoid quality mismatch between GPU and MDP switch(idle timeout usecase).
diff --git a/sdm/libs/core/drm/hw_info_drm.cpp b/sdm/libs/core/drm/hw_info_drm.cpp
index 55bc003b..9070ca35 100644
--- a/sdm/libs/core/drm/hw_info_drm.cpp
+++ b/sdm/libs/core/drm/hw_info_drm.cpp
@@ -85,17 +85,18 @@ namespace sdm {
class DRMLoggerImpl : public DRMLogger {
public:
-#define PRINTLOG(method, format, buf) \
+#define PRINTLOG(tag, method, format, buf) \
va_list list; \
va_start(list, format); \
vsnprintf(buf, sizeof(buf), format, list); \
va_end(list); \
- Debug::Get()->method(kTagNone, "%s", buf);
+ Debug::Get()->method(tag, "%s", buf);
- void Error(const char *format, ...) { PRINTLOG(Error, format, buf_); }
- void Warning(const char *format, ...) { PRINTLOG(Warning, format, buf_); }
- void Info(const char *format, ...) { PRINTLOG(Info, format, buf_); }
- void Debug(const char *format, ...) { PRINTLOG(Debug, format, buf_); }
+ void Error(const char *format, ...) { PRINTLOG(kTagNone, Error, format, buf_); }
+ void Warning(const char *format, ...) { PRINTLOG(kTagDriverConfig, Warning, format, buf_); }
+ void Info(const char *format, ...) { PRINTLOG(kTagDriverConfig, Info, format, buf_); }
+ void Debug(const char *format, ...) { PRINTLOG(kTagDriverConfig, Debug, format, buf_); }
+ void Verbose(const char *format, ...) { PRINTLOG(kTagDriverConfig, Verbose, format, buf_); }
private:
char buf_[1024] = {};
diff --git a/sdm/libs/core/fb/hw_device.cpp b/sdm/libs/core/fb/hw_device.cpp
index cac14548..38e57d85 100644
--- a/sdm/libs/core/fb/hw_device.cpp
+++ b/sdm/libs/core/fb/hw_device.cpp
@@ -190,9 +190,9 @@ DisplayError HWDevice::Validate(HWLayers *hw_layers) {
HWLayersInfo &hw_layer_info = hw_layers->info;
uint32_t hw_layer_count = UINT32(hw_layer_info.hw_layers.size());
- DLOGV_IF(kTagDriverConfig, "************************** %s Validate Input ***********************",
+ DLOGD_IF(kTagDriverConfig, "************************** %s Validate Input ***********************",
device_name_);
- DLOGV_IF(kTagDriverConfig, "SDE layer count is %d", hw_layer_count);
+ DLOGD_IF(kTagDriverConfig, "SDE layer count is %d", hw_layer_count);
mdp_layer_commit_v1 &mdp_commit = mdp_disp_commit_.commit_v1;
uint32_t &mdp_layer_count = mdp_commit.input_layer_cnt;
@@ -267,11 +267,11 @@ DisplayError HWDevice::Validate(HWLayers *hw_layers) {
mdp_layer_count++;
- DLOGV_IF(kTagDriverConfig, "******************* Layer[%d] %s pipe Input ******************",
+ DLOGD_IF(kTagDriverConfig, "******************* Layer[%d] %s pipe Input ******************",
i, count ? "Right" : "Left");
- DLOGV_IF(kTagDriverConfig, "in_w %d, in_h %d, in_f %d", mdp_buffer.width, mdp_buffer.height,
+ DLOGD_IF(kTagDriverConfig, "in_w %d, in_h %d, in_f %d", mdp_buffer.width, mdp_buffer.height,
mdp_buffer.format);
- DLOGV_IF(kTagDriverConfig, "plane_alpha %d, zorder %d, blending %d, horz_deci %d, "
+ DLOGD_IF(kTagDriverConfig, "plane_alpha %d, zorder %d, blending %d, horz_deci %d, "
"vert_deci %d, pipe_id = 0x%x, mdp_flags 0x%x", mdp_layer.alpha, mdp_layer.z_order,
mdp_layer.blend_op, mdp_layer.horz_deci, mdp_layer.vert_deci, mdp_layer.pipe_ndx,
mdp_layer.flags);
@@ -280,7 +280,7 @@ DisplayError HWDevice::Validate(HWLayers *hw_layers) {
DLOGV_IF(kTagDriverConfig, "dst_rect [%d, %d, %d, %d]", mdp_layer.dst_rect.x,
mdp_layer.dst_rect.y, mdp_layer.dst_rect.w, mdp_layer.dst_rect.h);
hw_scale_->DumpScaleData(mdp_layer.scale);
- DLOGV_IF(kTagDriverConfig, "*************************************************************");
+ DLOGD_IF(kTagDriverConfig, "*************************************************************");
}
}
}
@@ -338,16 +338,16 @@ DisplayError HWDevice::Validate(HWLayers *hw_layers) {
index++;
- DLOGV_IF(kTagDriverConfig, "************************ DestScalar[%d] **************************",
+ DLOGD_IF(kTagDriverConfig, "************************ DestScalar[%d] **************************",
dest_scalar_data->dest_scaler_ndx);
- DLOGV_IF(kTagDriverConfig, "Mixer WxH %dx%d flags %x", dest_scalar_data->lm_width,
+ DLOGD_IF(kTagDriverConfig, "Mixer WxH %dx%d flags %x", dest_scalar_data->lm_width,
dest_scalar_data->lm_height, dest_scalar_data->flags);
#ifdef MDP_DESTSCALER_ROI_ENABLE
- DLOGV_IF(kTagDriverConfig, "Panel ROI [%d, %d, %d, %d]", dest_scalar_data->panel_roi.x,
+ DLOGD_IF(kTagDriverConfig, "Panel ROI [%d, %d, %d, %d]", dest_scalar_data->panel_roi.x,
dest_scalar_data->panel_roi.y, dest_scalar_data->panel_roi.w,
dest_scalar_data->panel_roi.h);
#endif
- DLOGV_IF(kTagDriverConfig, "*****************************************************************");
+ DLOGD_IF(kTagDriverConfig, "*****************************************************************");
}
mdp_commit.dest_scaler_cnt = UINT32(hw_layer_info.dest_scale_info_map.size());
@@ -411,9 +411,9 @@ DisplayError HWDevice::Commit(HWLayers *hw_layers) {
HWLayersInfo &hw_layer_info = hw_layers->info;
uint32_t hw_layer_count = UINT32(hw_layer_info.hw_layers.size());
- DLOGV_IF(kTagDriverConfig, "*************************** %s Commit Input ************************",
+ DLOGD_IF(kTagDriverConfig, "*************************** %s Commit Input ************************",
device_name_);
- DLOGV_IF(kTagDriverConfig, "SDE layer count is %d", hw_layer_count);
+ DLOGD_IF(kTagDriverConfig, "SDE layer count is %d", hw_layer_count);
mdp_layer_commit_v1 &mdp_commit = mdp_disp_commit_.commit_v1;
uint32_t mdp_layer_index = 0;
@@ -449,16 +449,16 @@ DisplayError HWDevice::Commit(HWLayers *hw_layers) {
mdp_buffer.fence = input_buffer->acquire_fence_fd;
mdp_layer_index++;
- DLOGV_IF(kTagDriverConfig, "****************** Layer[%d] %s pipe Input *******************",
+ DLOGD_IF(kTagDriverConfig, "****************** Layer[%d] %s pipe Input *******************",
i, count ? "Right" : "Left");
- DLOGI_IF(kTagDriverConfig, "in_w %d, in_h %d, in_f %d, horz_deci %d, vert_deci %d",
+ DLOGD_IF(kTagDriverConfig, "in_w %d, in_h %d, in_f %d, horz_deci %d, vert_deci %d",
mdp_buffer.width, mdp_buffer.height, mdp_buffer.format, mdp_layer.horz_deci,
mdp_layer.vert_deci);
- DLOGI_IF(kTagDriverConfig, "in_buf_fd %d, in_buf_offset %d, in_buf_stride %d, " \
+ DLOGV_IF(kTagDriverConfig, "in_buf_fd %d, in_buf_offset %d, in_buf_stride %d, " \
"in_plane_count %d, in_fence %d, layer count %d", mdp_buffer.planes[0].fd,
mdp_buffer.planes[0].offset, mdp_buffer.planes[0].stride, mdp_buffer.plane_count,
mdp_buffer.fence, mdp_commit.input_layer_cnt);
- DLOGV_IF(kTagDriverConfig, "*************************************************************");
+ DLOGD_IF(kTagDriverConfig, "*************************************************************");
}
}
}
diff --git a/sdm/libs/core/fb/hw_hdmi.cpp b/sdm/libs/core/fb/hw_hdmi.cpp
index e1d7ba12..e339908e 100644
--- a/sdm/libs/core/fb/hw_hdmi.cpp
+++ b/sdm/libs/core/fb/hw_hdmi.cpp
@@ -1059,7 +1059,7 @@ DisplayError HWHDMI::UpdateHDRMetaData(HWLayers *hw_layers) {
(bits_per_component < 0) ? 0 : UINT32(bits_per_component);
hdr_ctrl.hdr_stream.content_type = GetContentType(hdr_layer.input_buffer);
- DLOGV_IF(kTagDriverConfig, "kSet: HDR Stream : MaxDisplayLuminance = %d\n"
+ DLOGD_IF(kTagDriverConfig, "kSet: HDR Stream : MaxDisplayLuminance = %d\n"
"MinDisplayLuminance = %d MaxContentLightLevel = %d MaxAverageLightLevel = %d\n"
"Red_x = %d Red_y = %d Green_x = %d Green_y = %d Blue_x = %d Blue_y = %d\n"
"WhitePoint_x = %d WhitePoint_y = %d EOTF = %d PixelEncoding = %d Colorimetry = %d\n"
@@ -1083,7 +1083,7 @@ DisplayError HWHDMI::UpdateHDRMetaData(HWLayers *hw_layers) {
cdm_color_space_ = (mdp_color_space) MDP_CSC_DEFAULT;
cdm_color_space_commit_ = true;
#endif
- DLOGV_IF(kTagDriverConfig, "kReset: HDR Stream: HDR_RESET");
+ DLOGD_IF(kTagDriverConfig, "kReset: HDR Stream: HDR_RESET");
} else if (hdr_layer_info.operation == HWHDRLayerInfo::kNoOp) {
if (reset_hdr_flag_) {
hdr_reset_end_ = time(NULL);
@@ -1092,7 +1092,7 @@ DisplayError HWHDMI::UpdateHDRMetaData(HWLayers *hw_layers) {
reset_hdr_flag_ = false;
memset(&hdr_ctrl.hdr_stream, 0, sizeof(hdr_ctrl.hdr_stream));
hdr_ctrl.hdr_state = HDR_DISABLE;
- DLOGV_IF(kTagDriverConfig, "kNoOp: HDR Stream: HDR_DISABLE");
+ DLOGD_IF(kTagDriverConfig, "kNoOp: HDR Stream: HDR_DISABLE");
} else {
return kErrorNone;
}
diff --git a/sdm/libs/core/fb/hw_scale.cpp b/sdm/libs/core/fb/hw_scale.cpp
index e44af5d6..02585704 100644
--- a/sdm/libs/core/fb/hw_scale.cpp
+++ b/sdm/libs/core/fb/hw_scale.cpp
@@ -104,7 +104,7 @@ void HWScaleV1::DumpScaleData(void *mdp_scale) {
mdp_scale_data *scale = reinterpret_cast<mdp_scale_data *>(mdp_scale);
if (scale->enable_pxl_ext) {
- DLOGV_IF(kTagDriverConfig, "Scale Enable = %d", scale->enable_pxl_ext);
+ DLOGD_IF(kTagDriverConfig, "Scale Enable = %d", scale->enable_pxl_ext);
for (int j = 0; j < MAX_PLANES; j++) {
DLOGV_IF(kTagDriverConfig, "Scale Data[%d] : Phase=[%x %x %x %x] Pixel_Ext=[%d %d %d %d]",
j, scale->init_phase_x[j], scale->phase_step_x[j], scale->init_phase_y[j],
@@ -273,7 +273,7 @@ void HWScaleV2::DumpScaleData(void *mdp_scale) {
mdp_scale_data_v2 *scale = reinterpret_cast<mdp_scale_data_v2 *>(mdp_scale);
if (scale->enable) {
- DLOGV_IF(kTagDriverConfig, "Scale Enable = %d", scale->enable);
+ DLOGD_IF(kTagDriverConfig, "Scale Enable = %d", scale->enable);
for (int j = 0; j < MAX_PLANES; j++) {
DLOGV_IF(kTagDriverConfig, "Scale Data[%d]: Phase_init[x y]=[%x %x] Phase_step:[x y]=[%x %x]",
j, scale->init_phase_x[j], scale->init_phase_y[j], scale->phase_step_x[j],
@@ -287,7 +287,7 @@ void HWScaleV2::DumpScaleData(void *mdp_scale) {
scale->src_width[j], scale->src_height[j], scale->roi_w[j]);
}
- DLOGV_IF(kTagDriverConfig, "LUT flags = %d", scale->lut_flag);
+ DLOGD_IF(kTagDriverConfig, "LUT flags = %d", scale->lut_flag);
DLOGV_IF(kTagDriverConfig, "y_rgb_filter=%d, uv_filter=%d, alpha_filter=%d, blend_cfg=%d",
scale->y_rgb_filter_cfg, scale->uv_filter_cfg, scale->alpha_filter_cfg, scale->blend_cfg);
DLOGV_IF(kTagDriverConfig, "dir_lut=%d, y_rgb_cir=%d, uv_cir=%d, y_rgb_sep=%d, uv_sep=%d",
diff --git a/sdm/libs/hwc2/hwc_debugger.cpp b/sdm/libs/hwc2/hwc_debugger.cpp
index ffbb5c57..8b517995 100644
--- a/sdm/libs/hwc2/hwc_debugger.cpp
+++ b/sdm/libs/hwc2/hwc_debugger.cpp
@@ -41,6 +41,10 @@ int32_t HWCDebugHandler::verbose_level_ = 0x0;
void HWCDebugHandler::DebugAll(bool enable, int verbose_level) {
if (enable) {
debug_flags_ = 0x7FFFFFFF;
+ if (verbose_level) {
+ // Enable verbose scalar logs only when explicitely enabled
+ debug_flags_[kTagScalar] = 0;
+ }
verbose_level_ = verbose_level;
} else {
debug_flags_ = 0x1; // kTagNone should always be printed.
@@ -118,6 +122,26 @@ void HWCDebugHandler::DebugQdcm(bool enable, int verbose_level) {
}
}
+void HWCDebugHandler::DebugClient(bool enable, int verbose_level) {
+ if (enable) {
+ debug_flags_[kTagClient] = 1;
+ verbose_level_ = verbose_level;
+ } else {
+ debug_flags_[kTagClient] = 0;
+ verbose_level_ = 0;
+ }
+}
+
+void HWCDebugHandler::DebugDisplay(bool enable, int verbose_level) {
+ if (enable) {
+ debug_flags_[kTagDisplay] = 1;
+ verbose_level_ = verbose_level;
+ } else {
+ debug_flags_[kTagDisplay] = 0;
+ verbose_level_ = 0;
+ }
+}
+
void HWCDebugHandler::Error(DebugTag tag, const char *format, ...) {
if (debug_flags_[tag]) {
va_list list;
diff --git a/sdm/libs/hwc2/hwc_debugger.h b/sdm/libs/hwc2/hwc_debugger.h
index 82ff2f26..04cbfa73 100644
--- a/sdm/libs/hwc2/hwc_debugger.h
+++ b/sdm/libs/hwc2/hwc_debugger.h
@@ -53,6 +53,8 @@ class HWCDebugHandler : public DebugHandler {
static void DebugRotator(bool enable, int verbose_level);
static void DebugScalar(bool enable, int verbose_level);
static void DebugQdcm(bool enable, int verbose_level);
+ static void DebugClient(bool enable, int verbose_level);
+ static void DebugDisplay(bool enable, int verbose_level);
static int GetIdleTimeoutMs();
virtual void Error(DebugTag tag, const char *format, ...);
diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp
index a89147cb..51b485e7 100644
--- a/sdm/libs/hwc2/hwc_display.cpp
+++ b/sdm/libs/hwc2/hwc_display.cpp
@@ -119,6 +119,7 @@ HWC2::Error HWCColorMode::SetColorMode(android_color_mode_t mode) {
DLOGE("failed for mode = %d", mode);
}
+ DLOGV_IF(kTagClient, "Color mode %d successfully set.", mode);
return status;
}
@@ -126,6 +127,7 @@ HWC2::Error HWCColorMode::SetColorModeById(int32_t color_mode_id) {
DLOGI("Applying mode: %d", color_mode_id);
DisplayError error = display_intf_->SetColorModeById(color_mode_id);
if (error != kErrorNone) {
+ DLOGI_IF(kTagClient, "Failed to apply mode: %d", color_mode_id);
return HWC2::Error::BadParameter;
}
return HWC2::Error::None;
@@ -202,14 +204,14 @@ void HWCColorMode::PopulateColorModes() {
return;
}
- DLOGV_IF(kTagQDCM, "Color Modes supported count = %d", color_mode_count);
+ DLOGV_IF(kTagClient, "Color Modes supported count = %d", color_mode_count);
const std::string color_transform = "identity";
std::vector<std::string> color_modes(color_mode_count);
error = display_intf_->GetColorModes(&color_mode_count, &color_modes);
for (uint32_t i = 0; i < color_mode_count; i++) {
std::string &mode_string = color_modes.at(i);
- DLOGV_IF(kTagQDCM, "Color Mode[%d] = %s", i, mode_string.c_str());
+ DLOGV_IF(kTagClient, "Color Mode[%d] = %s", i, mode_string.c_str());
AttrVal attr;
error = display_intf_->GetColorModeAttr(mode_string, &attr);
std::string color_gamut, dynamic_range, pic_quality;
@@ -223,6 +225,10 @@ void HWCColorMode::PopulateColorModes() {
pic_quality = it.second;
}
}
+
+ DLOGV_IF(kTagClient, "color_gamut : %s, dynamic_range : %s, pic_quality : %s",
+ color_gamut.c_str(), dynamic_range.c_str(), pic_quality.c_str());
+
if (dynamic_range == kHdr) {
continue;
}
@@ -1195,7 +1201,7 @@ HWC2::Error HWCDisplay::CommitLayerStack(void) {
}
if (!validated_) {
- DLOGV_IF(kTagCompManager, "Display %d is not validated", id_);
+ DLOGV_IF(kTagClient, "Display %d is not validated", id_);
return HWC2::Error::NotValidated;
}
@@ -1780,6 +1786,7 @@ void HWCDisplay::MarkLayersForClientComposition() {
// ClientComposition - GPU comp, to acheive this, set skip flag so that
// SDM does not handle this layer and hwc_layer composition will be
// set correctly at the end of Prepare.
+ DLOGV_IF(kTagClient, "HWC Layers marked for GPU comp");
for (auto hwc_layer : layer_set_) {
Layer *layer = hwc_layer->GetSDMLayer();
layer->flags.skip = true;
@@ -2027,25 +2034,32 @@ std::string HWCDisplay::Dump() {
bool HWCDisplay::CanSkipValidate() {
if (solid_fill_enable_) {
+ DLOGV_IF(kTagClient, "Solid fill is enabled. Returning false.");
return false;
}
// Layer Stack checks
if (layer_stack_.flags.hdr_present && (tone_mapper_ && tone_mapper_->IsActive())) {
+ DLOGV_IF(kTagClient, "HDR content present with tone mapping enabled. Returning false.");
return false;
}
if (client_target_->NeedsValidation()) {
+ DLOGV_IF(kTagClient, "Framebuffer target needs validation. Returning false.");
return false;
}
for (auto hwc_layer : layer_set_) {
if (hwc_layer->NeedsValidation()) {
+ DLOGV_IF(kTagClient, "hwc_layer[%d] needs validation. Returning false.",
+ hwc_layer->GetId());
return false;
}
// Do not allow Skip Validate, if any layer needs GPU Composition.
if (hwc_layer->GetDeviceSelectedCompositionType() == HWC2::Composition::Client) {
+ DLOGV_IF(kTagClient, "hwc_layer[%d] is GPU composed. Returning false.",
+ hwc_layer->GetId());
return false;
}
}
diff --git a/sdm/libs/hwc2/hwc_layers.cpp b/sdm/libs/hwc2/hwc_layers.cpp
index 2466413c..bf660b53 100644
--- a/sdm/libs/hwc2/hwc_layers.cpp
+++ b/sdm/libs/hwc2/hwc_layers.cpp
@@ -92,7 +92,7 @@ bool GetColorPrimary(const int32_t &dataspace, ColorPrimaries *color_primary) {
*color_primary = ColorPrimaries_BT2020;
break;
default:
- DLOGV_IF(kTagStrategy, "Unsupported Standard Request = %d", standard);
+ DLOGV_IF(kTagClient, "Unsupported Standard Request = %d", standard);
supported_csc = false;
}
return supported_csc;
@@ -121,7 +121,7 @@ bool GetTransfer(const int32_t &dataspace, GammaTransfer *gamma_transfer) {
*gamma_transfer = Transfer_Gamma2_2;
break;
default:
- DLOGV_IF(kTagStrategy, "Unsupported Transfer Request = %d", transfer);
+ DLOGV_IF(kTagClient, "Unsupported Transfer Request = %d", transfer);
supported_transfer = false;
}
return supported_transfer;
@@ -137,7 +137,7 @@ void GetRange(const int32_t &dataspace, ColorRange *color_range) {
*color_range = Range_Limited;
break;
default:
- DLOGV_IF(kTagStrategy, "Unsupported Range Request = %d", range);
+ DLOGV_IF(kTagClient, "Unsupported Range Request = %d", range);
break;
}
}
@@ -320,7 +320,7 @@ HWC2::Error HWCLayer::SetLayerColor(hwc_color_t color) {
}
layer_->solid_fill_color = GetUint32Color(color);
layer_->input_buffer.format = kFormatARGB8888;
- DLOGV_IF(kTagCompManager, "[%" PRIu64 "][%" PRIu64 "] Layer color set to %x", display_id_, id_,
+ DLOGV_IF(kTagClient, "[%" PRIu64 "][%" PRIu64 "] Layer color set to %x", display_id_, id_,
layer_->solid_fill_color);
return HWC2::Error::None;
}
@@ -375,7 +375,7 @@ HWC2::Error HWCLayer::SetLayerDataspace(int32_t dataspace) {
break;
default:
// unknown legacy dataspace
- DLOGW_IF(kTagQDCM, "Unsupported dataspace type %d", dataspace);
+ DLOGW_IF(kTagClient, "Unsupported dataspace type %d", dataspace);
}
}
@@ -731,6 +731,10 @@ DisplayError HWCLayer::SetMetaData(const private_handle_t *pvt_handle, Layer *la
if (getMetaData(handle, GET_PP_PARAM_INTERLACED, &interlaced) == 0) {
interlace = interlaced ? true : false;
}
+ if (interlace != layer_buffer->flags.interlace) {
+ DLOGI("Layer buffer interlaced metadata has changed. old=%d, new=%d",
+ layer_buffer->flags.interlace, interlace);
+ }
uint32_t linear_format = 0;
if (getMetaData(handle, GET_LINEAR_FORMAT, &linear_format) == 0) {
diff --git a/sdm/libs/hwc2/hwc_session.cpp b/sdm/libs/hwc2/hwc_session.cpp
index a7f210af..cd51405f 100644
--- a/sdm/libs/hwc2/hwc_session.cpp
+++ b/sdm/libs/hwc2/hwc_session.cpp
@@ -155,7 +155,7 @@ int HWCSession::Init() {
iqservice->connect(android::sp<qClient::IQClient>(this));
qservice_ = reinterpret_cast<qService::QService *>(iqservice.get());
} else {
- DLOGE("Failed to acquire %s", qservice_name);
+ ALOGE("%s::%s: Failed to acquire %s", __CLASS__, __FUNCTION__, qservice_name);
return -EINVAL;
}
@@ -163,7 +163,8 @@ int HWCSession::Init() {
DisplayError error = buffer_allocator_.Init();
if (error != kErrorNone) {
- DLOGE("Buffer allocaor initialization failed. Error = %d", error);
+ ALOGE("%s::%s: Buffer allocaor initialization failed. Error = %d",
+ __CLASS__, __FUNCTION__, error);
return -EINVAL;
}
@@ -173,7 +174,7 @@ int HWCSession::Init() {
&buffer_sync_handler_, &socket_handler_, &core_intf_);
if (error != kErrorNone) {
buffer_allocator_.Deinit();
- DLOGE("Display core initialization failed. Error = %d", error);
+ ALOGE("%s::%s: Display core initialization failed. Error = %d", __CLASS__, __FUNCTION__, error);
return -EINVAL;
}
@@ -250,7 +251,7 @@ int HWCSession::Deinit() {
DisplayError error = CoreInterface::DestroyCore();
if (error != kErrorNone) {
- DLOGE("Display core de-initialization failed. Error = %d", error);
+ ALOGE("Display core de-initialization failed. Error = %d", error);
}
return 0;
@@ -258,7 +259,7 @@ int HWCSession::Deinit() {
int HWCSession::Open(const hw_module_t *module, const char *name, hw_device_t **device) {
if (!module || !name || !device) {
- DLOGE("Invalid parameters.");
+ ALOGE("%s::%s: Invalid parameters.", __CLASS__, __FUNCTION__);
return -EINVAL;
}
@@ -1474,6 +1475,14 @@ void HWCSession::DynamicDebug(const android::Parcel *input_parcel) {
HWCDebugHandler::DebugScalar(enable, verbose_level);
break;
+ case qService::IQService::DEBUG_CLIENT:
+ HWCDebugHandler::DebugClient(enable, verbose_level);
+ break;
+
+ case qService::IQService::DEBUG_DISPLAY:
+ HWCDebugHandler::DebugDisplay(enable, verbose_level);
+ break;
+
default:
DLOGW("type = %d is not supported", type);
}
diff --git a/sdm/libs/hwc2/hwc_session_services.cpp b/sdm/libs/hwc2/hwc_session_services.cpp
index f4241e06..f19c85b7 100644
--- a/sdm/libs/hwc2/hwc_session_services.cpp
+++ b/sdm/libs/hwc2/hwc_session_services.cpp
@@ -44,9 +44,10 @@ using ::android::hardware::Void;
void HWCSession::StartServices() {
status_t status = IDisplayConfig::registerAsService();
if (status != OK) {
- DLOGW("Could not register IDisplayConfig as service (%d).", status);
+ ALOGW("%s::%s: Could not register IDisplayConfig as service (%d).",
+ __CLASS__, __FUNCTION__, status);
} else {
- DLOGI("IDisplayConfig service registration completed.");
+ ALOGI("%s::%s: IDisplayConfig service registration completed.", __CLASS__, __FUNCTION__);
}
}
diff --git a/sdm/libs/hwc2/hwc_tonemapper.cpp b/sdm/libs/hwc2/hwc_tonemapper.cpp
index a224e8d4..26caec9b 100644
--- a/sdm/libs/hwc2/hwc_tonemapper.cpp
+++ b/sdm/libs/hwc2/hwc_tonemapper.cpp
@@ -181,6 +181,7 @@ int HWCToneMapper::HandleToneMap(LayerStack *layer_stack) {
}
if (layer->request.flags.tone_map) {
+ DLOGV_IF(kTagClient, "Tonemapping for layer at index %d", i);
switch (layer->composition) {
case kCompositionGPUTarget:
if (!gpu_count) {
@@ -211,6 +212,7 @@ int HWCToneMapper::HandleToneMap(LayerStack *layer_stack) {
ToneMapSession *session = tone_map_sessions_.at(session_index);
ToneMap(layer, session);
+ DLOGI_IF(kTagClient, "Layer %d associated with session index %d", i, session_index);
session->layer_index_ = INT(i);
}
}
@@ -259,6 +261,7 @@ void HWCToneMapper::PostCommit(LayerStack *layer_stack) {
session->acquired_ = false;
it++;
} else {
+ DLOGI_IF(kTagClient, "Tone map session %d closed.", session_index);
delete session;
it = tone_map_sessions_.erase(it);
int deleted_session = INT(session_index);
diff --git a/sdm/libs/utils/rect.cpp b/sdm/libs/utils/rect.cpp
index c227cb30..a8305426 100644
--- a/sdm/libs/utils/rect.cpp
+++ b/sdm/libs/utils/rect.cpp
@@ -47,6 +47,11 @@ bool IsCongruent(const LayerRect &rect1, const LayerRect &rect2) {
(rect1.bottom == rect2.bottom));
}
+void LogI(DebugTag debug_tag, const char *prefix, const LayerRect &roi) {
+ DLOGI_IF(debug_tag, "%s: left = %.0f, top = %.0f, right = %.0f, bottom = %.0f",
+ prefix, roi.left, roi.top, roi.right, roi.bottom);
+}
+
void Log(DebugTag debug_tag, const char *prefix, const LayerRect &roi) {
DLOGV_IF(debug_tag, "%s: left = %.0f, top = %.0f, right = %.0f, bottom = %.0f",
prefix, roi.left, roi.top, roi.right, roi.bottom);