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
diff --git a/libdrmutils/drm_logger.h b/libdrmutils/drm_logger.h
index d0b0773..8e8bb72 100644
--- a/libdrmutils/drm_logger.h
+++ b/libdrmutils/drm_logger.h
@@ -41,6 +41,7 @@
   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 @@
 #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 610cd4e..5765b10 100644
--- a/libqservice/IQService.h
+++ b/libqservice/IQService.h
@@ -95,6 +95,10 @@
         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 da21944..dba85ac 100644
--- a/sdm/include/core/debug_interface.h
+++ b/sdm/include/core/debug_interface.h
@@ -49,7 +49,9 @@
   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 303fc9f..b25f76e 100644
--- a/sdm/include/utils/rect.h
+++ b/sdm/include/utils/rect.h
@@ -45,6 +45,7 @@
 
   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 1e948a2..f04c826 100644
--- a/sdm/libs/core/display_base.cpp
+++ b/sdm/libs/core/display_base.cpp
@@ -155,7 +155,7 @@
     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 @@
     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 @@
     DLOGW("ValidateHDR failed");
   }
 
+  DLOGI_IF(kTagDisplay, "Exiting Prepare for display type : %d", display_type_);
   return error;
 }
 
@@ -309,6 +311,7 @@
     }
   }
 
+  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 @@
     return error;
   }
 
+  DLOGI_IF(kTagDisplay, "Exiting commit for display type : %d", display_type_);
   return kErrorNone;
 }
 
@@ -1117,6 +1121,7 @@
     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 @@
   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 @@
       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 55bc003..9070ca3 100644
--- a/sdm/libs/core/drm/hw_info_drm.cpp
+++ b/sdm/libs/core/drm/hw_info_drm.cpp
@@ -85,17 +85,18 @@
 
 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 cac1454..38e57d8 100644
--- a/sdm/libs/core/fb/hw_device.cpp
+++ b/sdm/libs/core/fb/hw_device.cpp
@@ -190,9 +190,9 @@
   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 @@
 
         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 @@
         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 @@
 
     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 @@
   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 @@
         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 e1d7ba1..e339908 100644
--- a/sdm/libs/core/fb/hw_hdmi.cpp
+++ b/sdm/libs/core/fb/hw_hdmi.cpp
@@ -1059,7 +1059,7 @@
                            (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 @@
     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 @@
           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 e44af5d..0258570 100644
--- a/sdm/libs/core/fb/hw_scale.cpp
+++ b/sdm/libs/core/fb/hw_scale.cpp
@@ -104,7 +104,7 @@
 
   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 @@
 
   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 @@
         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 ffbb5c5..8b51799 100644
--- a/sdm/libs/hwc2/hwc_debugger.cpp
+++ b/sdm/libs/hwc2/hwc_debugger.cpp
@@ -41,6 +41,10 @@
 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::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 82ff2f2..04cbfa7 100644
--- a/sdm/libs/hwc2/hwc_debugger.h
+++ b/sdm/libs/hwc2/hwc_debugger.h
@@ -53,6 +53,8 @@
   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 a89147c..51b485e 100644
--- a/sdm/libs/hwc2/hwc_display.cpp
+++ b/sdm/libs/hwc2/hwc_display.cpp
@@ -119,6 +119,7 @@
     DLOGE("failed for mode = %d", mode);
   }
 
+  DLOGV_IF(kTagClient, "Color mode %d successfully set.", mode);
   return status;
 }
 
@@ -126,6 +127,7 @@
   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 @@
     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 @@
           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 @@
   }
 
   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 @@
   // 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 @@
 
 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 2466413..bf660b5 100644
--- a/sdm/libs/hwc2/hwc_layers.cpp
+++ b/sdm/libs/hwc2/hwc_layers.cpp
@@ -92,7 +92,7 @@
       *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 @@
       *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 @@
       *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 @@
   }
   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 @@
         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 @@
   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 a7f210a..cd51405 100644
--- a/sdm/libs/hwc2/hwc_session.cpp
+++ b/sdm/libs/hwc2/hwc_session.cpp
@@ -155,7 +155,7 @@
     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 @@
 
   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 @@
                                     &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 @@
 
   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::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 @@
       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 f4241e0..f19c85b 100644
--- a/sdm/libs/hwc2/hwc_session_services.cpp
+++ b/sdm/libs/hwc2/hwc_session_services.cpp
@@ -44,9 +44,10 @@
 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 a224e8d..26caec9 100644
--- a/sdm/libs/hwc2/hwc_tonemapper.cpp
+++ b/sdm/libs/hwc2/hwc_tonemapper.cpp
@@ -181,6 +181,7 @@
     }
 
     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 @@
 
       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 @@
       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 c227cb3..a830542 100644
--- a/sdm/libs/utils/rect.cpp
+++ b/sdm/libs/utils/rect.cpp
@@ -47,6 +47,11 @@
           (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);