static const enum surface_update_type update_surface_trace_level = UPDATE_TYPE_FULL;
 
+static void validate_dcc_with_meta_address(
+       struct dc_plane_dcc_param *dcc,
+       struct dc_plane_address *address)
+{
+       if ((address->grph.meta_addr.quad_part == 0) &&
+               dcc->enable) {
+               ASSERT(!dcc->enable);
+               dcc->enable = false;
+       } else if ((address->grph.meta_addr.quad_part != 0) &&
+               !dcc->enable)
+               dcc->enable = true;
+
+       if (address->type != PLN_ADDR_TYPE_GRAPHICS) {
+               if ((address->grph_stereo.right_meta_addr.quad_part == 0) &&
+                       dcc->enable) {
+                       ASSERT(!dcc->enable);
+                       dcc->enable = false;
+               } else if ((address->grph_stereo.right_meta_addr.quad_part != 0) &&
+                       !dcc->enable)
+                       dcc->enable = true;
+       }
+}
+
 static void copy_surface_update_to_plane(
                struct dc_plane_state *surface,
                struct dc_surface_update *srf_update)
 {
        if (srf_update->flip_addr) {
                surface->address = srf_update->flip_addr->address;
+               validate_dcc_with_meta_address(&surface->dcc, &surface->address);
+
                surface->flip_immediate =
                        srf_update->flip_addr->flip_immediate;
                surface->time.time_elapsed_in_us[surface->time.index] =
                                srf_update->plane_info->global_alpha_value;
                surface->dcc =
                                srf_update->plane_info->dcc;
+               validate_dcc_with_meta_address(&surface->dcc, &surface->address);
+
                surface->sdr_white_level =
                                srf_update->plane_info->sdr_white_level;
                surface->layer_index =