diff options
-rw-r--r-- | libdrmutils/drm_logger.h | 6 | ||||
-rw-r--r-- | libqservice/IQService.h | 4 | ||||
-rw-r--r-- | sdm/include/core/debug_interface.h | 4 | ||||
-rw-r--r-- | sdm/include/utils/rect.h | 1 | ||||
-rw-r--r-- | sdm/libs/core/display_base.cpp | 11 | ||||
-rw-r--r-- | sdm/libs/core/drm/hw_info_drm.cpp | 13 | ||||
-rw-r--r-- | sdm/libs/core/fb/hw_device.cpp | 32 | ||||
-rw-r--r-- | sdm/libs/core/fb/hw_hdmi.cpp | 6 | ||||
-rw-r--r-- | sdm/libs/core/fb/hw_scale.cpp | 6 | ||||
-rw-r--r-- | sdm/libs/hwc2/hwc_debugger.cpp | 24 | ||||
-rw-r--r-- | sdm/libs/hwc2/hwc_debugger.h | 2 | ||||
-rw-r--r-- | sdm/libs/hwc2/hwc_display.cpp | 20 | ||||
-rw-r--r-- | sdm/libs/hwc2/hwc_layers.cpp | 14 | ||||
-rw-r--r-- | sdm/libs/hwc2/hwc_session.cpp | 19 | ||||
-rw-r--r-- | sdm/libs/hwc2/hwc_session_services.cpp | 5 | ||||
-rw-r--r-- | sdm/libs/hwc2/hwc_tonemapper.cpp | 3 | ||||
-rw-r--r-- | sdm/libs/utils/rect.cpp | 5 |
17 files changed, 126 insertions, 49 deletions
diff --git a/libdrmutils/drm_logger.h b/libdrmutils/drm_logger.h index d0b07738..8e8bb727 100644 --- a/libdrmutils/drm_logger.h +++ b/libdrmutils/drm_logger.h @@ -41,6 +41,7 @@ class DRMLogger { virtual void Warning(const char *format, ...) = 0; virtual void Info(const char *format, ...) = 0; virtual void Debug(const char *format, ...) = 0; + virtual void Verbose(const char *format, ...) = 0; static void Set(DRMLogger *logger) { s_instance = logger; } static DRMLogger *Get() { return s_instance; } @@ -60,9 +61,8 @@ class DRMLogger { #define DRM_LOGE(format, ...) DRM_LOG_CONTEXT(Error, format, ##__VA_ARGS__) #define DRM_LOGW(format, ...) DRM_LOG_CONTEXT(Warning, format, ##__VA_ARGS__) #define DRM_LOGI(format, ...) DRM_LOG_CONTEXT(Info, format, ##__VA_ARGS__) -#define DRM_LOGD_IF(pred, format, ...) \ - if (pred) \ - DRM_LOG_CONTEXT(Debug, format, ##__VA_ARGS__) +#define DRM_LOGD(format, ...) DRM_LOG_CONTEXT(Debug, format, ##__VA_ARGS__) +#define DRM_LOGV(format, ...) DRM_LOG_CONTEXT(Verbose, format, ##__VA_ARGS__) } // namespace drm_utils diff --git a/libqservice/IQService.h b/libqservice/IQService.h index 610cd4eb..5765b10d 100644 --- a/libqservice/IQService.h +++ b/libqservice/IQService.h @@ -95,6 +95,10 @@ public: DEBUG_ROTATOR, DEBUG_QDCM, DEBUG_SCALAR, + DEBUG_CLIENT, + DEBUG_DISPLAY, + DEBUG_MAX_VAL = DEBUG_DISPLAY, // Used to check each bit of the debug command paramater. + // Update DEBUG_MAX_VAL when adding new debug tag. }; enum { 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); |