diff --git a/sdm/libs/hwc2/hwc_layers.cpp b/sdm/libs/hwc2/hwc_layers.cpp
index a8c1926..aed84b1 100644
--- a/sdm/libs/hwc2/hwc_layers.cpp
+++ b/sdm/libs/hwc2/hwc_layers.cpp
@@ -601,7 +601,6 @@
   }
   if ((!SameConfig(&old_mastering_display, &mastering_display, UINT32(sizeof(MasteringDisplay)))) ||
        (!SameConfig(&old_content_light, &content_light, UINT32(sizeof(ContentLightLevel))))) {
-    per_frame_hdr_metadata_ = true;
     layer_->update_mask.set(kMetadataUpdate);
     geometry_changes_ |= kDataspace;
   }
@@ -625,7 +624,6 @@
           DLOGE("Size of HDR10_PLUS_SEI = %d", sizes[i]);
           return HWC2::Error::BadParameter;
         }
-        per_frame_hdr_metadata_ = false;
         // if dynamic metadata changes, store and set needs validate
         if (!SameConfig(static_cast<const uint8_t*>(color_metadata.dynamicMetaDataPayload),
                         metadata, sizes[i])) {
@@ -633,9 +631,11 @@
           color_metadata.dynamicMetaDataValid = true;
           color_metadata.dynamicMetaDataLen = sizes[i];
           std::memcpy(color_metadata.dynamicMetaDataPayload, metadata, sizes[i]);
-          per_frame_hdr_metadata_ = true;
           layer_->update_mask.set(kMetadataUpdate);
         }
+        // once blob data is set by FW, we should not read from gralloc metadata as video HAL
+        // is setting thru gralloc metadata OR native window API (TODO(user): Revisit).
+        per_frame_hdr_metadata_blob_ = true;
         break;
       default:
         DLOGW("Invalid key = %d", keys[i]);
@@ -963,7 +963,9 @@
      use_color_metadata = true;
   }
 
-  if (use_color_metadata && !per_frame_hdr_metadata_) {
+  // Since client has set PerFrameMetadatablobs its dataspace and hdr10+ data will be updated
+  // so we can skip reading from ColorMetaData.
+  if (use_color_metadata && !per_frame_hdr_metadata_blob_) {
     ColorMetaData new_metadata = {};
     if (sdm::SetCSC(handle, &new_metadata) == kErrorNone) {
       // If dataspace is KNOWN, overwrite the gralloc metadata CSC using the previously derived CSC
@@ -978,6 +980,9 @@
           (layer_buffer->color_metadata.range != new_metadata.range)) {
         layer_->update_mask.set(kMetadataUpdate);
       }
+      DLOGV_IF(kTagClient, "Layer id =%lld Dynamic Metadata valid = %d size = %d", id_,
+               new_metadata.dynamicMetaDataValid,
+               new_metadata.dynamicMetaDataLen);
       if (new_metadata.dynamicMetaDataValid &&
           !SameConfig(layer_buffer->color_metadata.dynamicMetaDataPayload,
           new_metadata.dynamicMetaDataPayload, HDR_DYNAMIC_META_DATA_SZ)) {
diff --git a/sdm/libs/hwc2/hwc_layers.h b/sdm/libs/hwc2/hwc_layers.h
index aa77e60..8fc4afd 100644
--- a/sdm/libs/hwc2/hwc_layers.h
+++ b/sdm/libs/hwc2/hwc_layers.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2019, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2020, The Linux Foundation. All rights reserved.
  * Not a Contribution.
  *
  * Copyright 2015 The Android Open Source Project
@@ -139,7 +139,7 @@
   bool non_integral_source_crop_ = false;
   bool has_metadata_refresh_rate_ = false;
   bool buffer_flipped_ = false;
-  bool per_frame_hdr_metadata_ = false;  // used to track if perframe metadata and blob is set.
+  bool per_frame_hdr_metadata_blob_ = false;  // used to track if perframe metadata blob is set
 
   // Composition requested by client(SF) Original
   HWC2::Composition client_requested_orig_ = HWC2::Composition::Device;
