diff --git a/common.mk b/common.mk
index 0a37200..a30c0d9 100644
--- a/common.mk
+++ b/common.mk
@@ -75,5 +75,6 @@
 # If the macro is not present, the headers are picked from hardware/qcom/msmXXXX
 # failing which, they are picked from bionic.
     common_deps += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
-    kernel_includes += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
+    kernel_includes += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include \
+                       $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include/display
 endif
diff --git a/config/display-product.mk b/config/display-product.mk
index b9467fe..a76dded 100644
--- a/config/display-product.mk
+++ b/config/display-product.mk
@@ -116,6 +116,12 @@
 PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.protected_contents=true
 endif
 
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.force_hwc_copy_for_virtual_displays=true
+
+ifeq ($(TARGET_BOARD_PLATFORM),$(TRINKET))
+PRODUCT_PROPERTY_OVERRIDES += vendor.display.disable_excl_rect_partial_fb=1
+endif
+
 ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
 # Recovery is enabled, logging is enabled
 PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/gralloc/QtiMapper4.h b/gralloc/QtiMapper4.h
index 3c5137f..936393d 100644
--- a/gralloc/QtiMapper4.h
+++ b/gralloc/QtiMapper4.h
@@ -267,7 +267,10 @@
       {qtigralloc::MetadataType_AlignedHeightInPixels, "height in private_handle_t", true, false},
 #ifdef METADATA_V2
       {qtigralloc::MetadataType_StandardMetadataStatus, "Is standard metadata set", true, false},
-      {qtigralloc::MetadataType_VendorMetadataStatus, "Is vendor metadata set", true, false}
+      {qtigralloc::MetadataType_VendorMetadataStatus, "Is vendor metadata set", true, false},
+#endif
+#ifdef QTI_BUFFER_TYPE
+      {qtigralloc::MetadataType_BufferType, "Buffer type from private_handle_t", true, false},
 #endif
   };
 };
diff --git a/gralloc/gr_buf_mgr.cpp b/gralloc/gr_buf_mgr.cpp
index e78ba2e..825d20b 100644
--- a/gralloc/gr_buf_mgr.cpp
+++ b/gralloc/gr_buf_mgr.cpp
@@ -1392,6 +1392,12 @@
       qtigralloc::encodeMetadataState(metadata->isVendorMetadataSet, out);
       break;
 #endif
+#ifdef QTI_BUFFER_TYPE
+    case QTI_BUFFER_TYPE:
+      android::gralloc4::encodeUint32(qtigralloc::MetadataType_BufferType, handle->buffer_type,
+                                      out);
+      break;
+#endif
     default:
       error = Error::UNSUPPORTED;
   }
@@ -1423,7 +1429,7 @@
   // Reset to false for special cases below
   if (IS_VENDOR_METADATA_TYPE(metadatatype_value)) {
     metadata->isVendorMetadataSet[GET_VENDOR_METADATA_STATUS_INDEX(metadatatype_value)] = true;
-  } else {
+  } else if (GET_STANDARD_METADATA_STATUS_INDEX(metadatatype_value) < METADATA_SET_SIZE) {
     metadata->isStandardMetadataSet[GET_STANDARD_METADATA_STATUS_INDEX(metadatatype_value)] = true;
   }
 #endif
@@ -1600,7 +1606,7 @@
 #ifdef METADATA_V2
       if (IS_VENDOR_METADATA_TYPE(metadatatype_value)) {
         metadata->isVendorMetadataSet[GET_VENDOR_METADATA_STATUS_INDEX(metadatatype_value)] = false;
-      } else {
+      } else if (GET_STANDARD_METADATA_STATUS_INDEX(metadatatype_value) < METADATA_SET_SIZE) {
         metadata->isStandardMetadataSet[GET_STANDARD_METADATA_STATUS_INDEX(metadatatype_value)] =
             false;
       }
diff --git a/gralloc/gr_utils.cpp b/gralloc/gr_utils.cpp
index 312058e..98e60e2 100644
--- a/gralloc/gr_utils.cpp
+++ b/gralloc/gr_utils.cpp
@@ -658,6 +658,9 @@
   plane_info[0].step = step;
   plane_info[0].stride = width;
   plane_info[0].stride_bytes = static_cast<int32_t>(alignedWidth);
+  if (format == HAL_PIXEL_FORMAT_RAW16) {
+    plane_info[0].stride_bytes = static_cast<int32_t>(alignedWidth * GetBpp(format));
+  }
   plane_info[0].scanlines = height;
   plane_info[0].size = size;
 
@@ -756,6 +759,9 @@
   switch (format) {
     case HAL_PIXEL_FORMAT_NV12_ENCODEABLE:
     case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS:
+      *aligned_w = VENUS_Y_STRIDE(COLOR_FMT_NV12, width);
+      *aligned_h = VENUS_Y_SCANLINES(COLOR_FMT_NV12, height);
+      break;
     case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS_UBWC:
       *aligned_w = VENUS_Y_STRIDE(COLOR_FMT_NV12_UBWC, width);
       *aligned_h = VENUS_Y_SCANLINES(COLOR_FMT_NV12_UBWC, height);
@@ -839,8 +845,20 @@
       size = alignedw * alignedh * bpp;
       size += GetRgbUBwcMetaBufferSize(width, height, bpp);
       break;
+    /*
+     * 1. The CtsMediaV2TestCases#CodecEncoderSurfaceTest is a transcode use case and shares
+     *    same surface between encoder and decoder.
+     * 2. Configures encoder with Opaque color format thus encoder sets ubwc usage bits and
+     *    is configured with NV12_UBWC format.
+     * 3. Configures decoder as 'flexible', thus configuring decoder with NV12 format.
+     * 4. Decoder should produce output to surface that will be fed back to encoder as input.
+     * 5. Though UBWC is enabled, we need to compute the actual buffer size (including aligned
+     *    width and height) based on pixel format that is set.
+     */
     case HAL_PIXEL_FORMAT_NV12_ENCODEABLE:
     case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS:
+      size = VENUS_BUFFER_SIZE(COLOR_FMT_NV12, width, height);
+      break;
     case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS_UBWC:
       size = VENUS_BUFFER_SIZE(COLOR_FMT_NV12_UBWC, width, height);
       break;
@@ -1011,6 +1029,16 @@
       aligned_w = ALIGN(width, 128);
       break;
     case HAL_PIXEL_FORMAT_YV12:
+      if ((usage & BufferUsage::GPU_TEXTURE) || (usage & BufferUsage::GPU_RENDER_TARGET)) {
+        if (AdrenoMemInfo::GetInstance() == nullptr) {
+          return;
+        }
+        alignment = AdrenoMemInfo::GetInstance()->GetGpuPixelAlignment();
+        aligned_w = ALIGN(width, alignment);
+      } else {
+        aligned_w = ALIGN(width, 16);
+      }
+      break;
     case HAL_PIXEL_FORMAT_YCbCr_422_SP:
     case HAL_PIXEL_FORMAT_YCrCb_422_SP:
     case HAL_PIXEL_FORMAT_YCbCr_422_I:
diff --git a/libdrmutils/Android.mk b/libdrmutils/Android.mk
index 172233f..e448d4f 100644
--- a/libdrmutils/Android.mk
+++ b/libdrmutils/Android.mk
@@ -5,7 +5,8 @@
 LOCAL_VENDOR_MODULE           := true
 LOCAL_MODULE_TAGS             := optional
 LOCAL_C_INCLUDES              := external/libdrm \
-                                 $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
+                                 $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include \
+                                 $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include/display
 LOCAL_HEADER_LIBRARIES        := display_headers
 LOCAL_SHARED_LIBRARIES        := libdrm libdl libdisplaydebug
 LOCAL_CFLAGS                  := -DLOG_TAG=\"DRMUTILS\" -Wall  -Werror -fno-operator-names
diff --git a/libdrmutils/drm_interface.h b/libdrmutils/drm_interface.h
index 918a7fe..5d27b4e 100644
--- a/libdrmutils/drm_interface.h
+++ b/libdrmutils/drm_interface.h
@@ -40,6 +40,7 @@
 #include "xf86drmMode.h"
 #include <drm/msm_drm.h>
 #include <drm/msm_drm_pp.h>
+#include <drm/sde_drm.h>
 
 namespace sde_drm {
 
diff --git a/libdrmutils/drm_master.cpp b/libdrmutils/drm_master.cpp
old mode 100644
new mode 100755
index f0d14b1..3a8516d
--- a/libdrmutils/drm_master.cpp
+++ b/libdrmutils/drm_master.cpp
@@ -33,6 +33,8 @@
 #include <unistd.h>
 #include <xf86drm.h>
 #include <xf86drmMode.h>
+#include <drm/sde_drm.h>
+
 // Intentionally included after xf86 headers so that they in-turn include libdrm version of drm.h
 // that doesn't use keyword "virtual" for a variable name. Not doing so leads to the kernel version
 // of drm.h being included causing compilation to fail
diff --git a/sdm/libs/core/drm/hw_device_drm.h b/sdm/libs/core/drm/hw_device_drm.h
index 5933347..c4a330a 100644
--- a/sdm/libs/core/drm/hw_device_drm.h
+++ b/sdm/libs/core/drm/hw_device_drm.h
@@ -231,7 +231,6 @@
   uint32_t cmd_mode_index_ = 0;
   bool switch_mode_valid_ = false;
   bool doze_poms_switch_done_ = false;
-  bool pending_poms_switch_ = false;
   bool active_ = false;
   DRMPowerMode last_power_mode_ = DRMPowerMode::OFF;
   bool pending_doze_ = false;
diff --git a/sdm/libs/core/drm/hw_peripheral_drm.cpp b/sdm/libs/core/drm/hw_peripheral_drm.cpp
index 85ec982..6b3faeb 100644
--- a/sdm/libs/core/drm/hw_peripheral_drm.cpp
+++ b/sdm/libs/core/drm/hw_peripheral_drm.cpp
@@ -105,7 +105,7 @@
     return kErrorNotSupported;
   }
 
-  if (doze_poms_switch_done_ || pending_poms_switch_) {
+  if (doze_poms_switch_done_) {
     return kErrorNotSupported;
   }
 
@@ -124,7 +124,7 @@
 
 
 DisplayError HWPeripheralDRM::SetRefreshRate(uint32_t refresh_rate) {
-  if (doze_poms_switch_done_ || pending_poms_switch_) {
+  if (doze_poms_switch_done_) {
     // poms switch in progress
     // Defer any refresh rate setting.
     return kErrorNotSupported;
@@ -139,7 +139,7 @@
 }
 
 DisplayError HWPeripheralDRM::SetDisplayMode(const HWDisplayMode hw_display_mode) {
-  if (doze_poms_switch_done_ || pending_poms_switch_) {
+  if (doze_poms_switch_done_) {
     return kErrorNotSupported;
   }
 
@@ -182,13 +182,6 @@
   synchronous_commit_ = false;
   active_ = true;
 
-  if (pending_poms_switch_) {
-    HWDeviceDRM::SetDisplayMode(kModeCommand);
-    hw_panel_info_.bitclk_rates = bitclk_rates_;
-    doze_poms_switch_done_ = true;
-    pending_poms_switch_ = false;
-  }
-
   idle_pc_state_ = sde_drm::DRMIdlePCState::NONE;
 
   return error;
@@ -512,7 +505,6 @@
   }
   idle_pc_state_ = sde_drm::DRMIdlePCState::NONE;
   idle_pc_enabled_ = true;
-  pending_poms_switch_ = false;
   active_ = true;
 
   return kErrorNone;
@@ -526,7 +518,6 @@
     return err;
   }
 
-  pending_poms_switch_ = false;
   active_ = false;
 
   return kErrorNone;
@@ -535,6 +526,7 @@
 DisplayError HWPeripheralDRM::Doze(const HWQosData &qos_data, int *release_fence) {
   DTRACE_SCOPED();
 
+  bool pending_poms_switch = false;
   if (!first_cycle_ && switch_mode_valid_ && !doze_poms_switch_done_ &&
     (current_mode_index_ == video_mode_index_)) {
     if (active_) {
@@ -542,7 +534,7 @@
       hw_panel_info_.bitclk_rates = bitclk_rates_;
       doze_poms_switch_done_ = true;
     } else {
-      pending_poms_switch_ = true;
+      pending_poms_switch = true;
     }
   }
 
@@ -551,6 +543,12 @@
     return err;
   }
 
+  if (pending_poms_switch) {
+    HWDeviceDRM::SetDisplayMode(kModeCommand);
+    hw_panel_info_.bitclk_rates = bitclk_rates_;
+    doze_poms_switch_done_ = true;
+  }
+
   if (first_cycle_) {
     active_ = true;
   }
@@ -573,14 +571,13 @@
     return err;
   }
 
-  pending_poms_switch_ = false;
   active_ = true;
 
   return kErrorNone;
 }
 
 DisplayError HWPeripheralDRM::SetDisplayAttributes(uint32_t index) {
-  if (doze_poms_switch_done_ || pending_poms_switch_) {
+  if (doze_poms_switch_done_) {
     return kErrorNotSupported;
   }
 
diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp
index 3eb900d..a4b8344 100644
--- a/sdm/libs/hwc2/hwc_display.cpp
+++ b/sdm/libs/hwc2/hwc_display.cpp
@@ -1165,8 +1165,7 @@
   }
 
   if (acquire_fence == 0) {
-    DLOGW("acquire_fence is zero");
-    return HWC2::Error::BadParameter;
+    DLOGV_IF(kTagClient, "Re-using cached buffer");
   }
 
   Layer *sdm_layer = client_target_->GetSDMLayer();
