diff --git a/displayengine/include/core/layer_buffer.h b/displayengine/include/core/layer_buffer.h
index c069c60..51fa5c5 100755
--- a/displayengine/include/core/layer_buffer.h
+++ b/displayengine/include/core/layer_buffer.h
@@ -87,6 +87,15 @@
                                       //!< factor of 2
                                       //!<    u(0), y(0), v(0), y(1), u(2), y(2), v(2), y(3)
                                       //!<    u(n-1), y(n-1), v(n-1), y(n)
+
+  /* All UBWC aligned formats. Any new format will be added towards end of this group to maintain
+     backward compatibility.
+  */
+  kFormatRGBA8888Ubwc = 0x400,        //!< UBWC aligned RGBA8888 format
+
+  kFormatRGB565Ubwc,                  //!< UBWC aligned RGB565 format
+
+  kFormatYCbCr420SPVenusUbwc,         //!< UBWC aligned Venus NV12 format
 };
 
 /*! @brief This structure defines a color sample plane belonging to a buffer format. RGB buffer
diff --git a/displayengine/libs/core/hw_framebuffer.cpp b/displayengine/libs/core/hw_framebuffer.cpp
index 0644e7d..54b0c83 100644
--- a/displayengine/libs/core/hw_framebuffer.cpp
+++ b/displayengine/libs/core/hw_framebuffer.cpp
@@ -649,6 +649,9 @@
   case kFormatYCrCb420SemiPlanar:       *target = MDP_Y_CRCB_H2V2;       break;
   case kFormatYCbCr422Packed:           *target = MDP_YCBYCR_H2V1;       break;
   case kFormatYCbCr420SemiPlanarVenus:  *target = MDP_Y_CBCR_H2V2_VENUS; break;
+  case kFormatRGBA8888Ubwc:             *target = MDP_RGBA_8888_UBWC;    break;
+  case kFormatRGB565Ubwc:               *target = MDP_RGB_565_UBWC;      break;
+  case kFormatYCbCr420SPVenusUbwc:      *target = MDP_Y_CBCR_H2V2_UBWC;  break;
   default:
     DLOGE("Unsupported format type %d", source);
     return kErrorParameters;
diff --git a/displayengine/libs/hwc/hwc_display.cpp b/displayengine/libs/hwc/hwc_display.cpp
index 771c07f..ce8f933 100644
--- a/displayengine/libs/hwc/hwc_display.cpp
+++ b/displayengine/libs/hwc/hwc_display.cpp
@@ -294,7 +294,7 @@
     LayerBuffer *layer_buffer = layer.input_buffer;
 
     if (pvt_handle) {
-      if (SetFormat(pvt_handle->format, &layer_buffer->format)) {
+      if (SetFormat(pvt_handle->format, pvt_handle->flags, &layer_buffer->format)) {
         return -EINVAL;
       }
 
@@ -512,7 +512,22 @@
   }
 }
 
-int HWCDisplay::SetFormat(const int32_t &source, LayerBufferFormat *target) {
+int HWCDisplay::SetFormat(const int32_t &source, const int flags, LayerBufferFormat *target) {
+
+  if (flags & private_handle_t::PRIV_FLAGS_UBWC_ALIGNED) {
+    switch (source) {
+      case HAL_PIXEL_FORMAT_RGBA_8888:          *target = kFormatRGBA8888Ubwc;            break;
+      case HAL_PIXEL_FORMAT_RGB_565:            *target = kFormatRGB565Ubwc;              break;
+      case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS:
+      case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS_UBWC:
+      case HAL_PIXEL_FORMAT_NV12_ENCODEABLE:    *target = kFormatYCbCr420SPVenusUbwc;     break;
+      default:
+        DLOGE("Unsupported format type for UBWC %d", source);
+        return -EINVAL;
+    }
+    return 0;
+  }
+
   switch (source) {
   case HAL_PIXEL_FORMAT_RGBA_8888:            *target = kFormatRGBA8888;                  break;
   case HAL_PIXEL_FORMAT_BGRA_8888:            *target = kFormatBGRA8888;                  break;
@@ -521,6 +536,7 @@
   case HAL_PIXEL_FORMAT_RGB_888:              *target = kFormatRGB888;                    break;
   case HAL_PIXEL_FORMAT_RGB_565:              *target = kFormatRGB565;                    break;
   case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS:   *target = kFormatYCbCr420SemiPlanarVenus;   break;
+  case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS_UBWC:  *target = kFormatYCbCr420SPVenusUbwc;   break;
   default:
     DLOGW("Unsupported format type = %d", source);
     return -EINVAL;
diff --git a/displayengine/libs/hwc/hwc_display.h b/displayengine/libs/hwc/hwc_display.h
index 0ba9ca7..8ac4b46 100644
--- a/displayengine/libs/hwc/hwc_display.h
+++ b/displayengine/libs/hwc/hwc_display.h
@@ -87,7 +87,7 @@
   inline void SetComposition(const int32_t &source, LayerComposition *target);
   inline void SetComposition(const int32_t &source, int32_t *target);
   inline void SetBlending(const int32_t &source, LayerBlending *target);
-  inline int SetFormat(const int32_t &source, LayerBufferFormat *target);
+  inline int SetFormat(const int32_t &source, const int flags, LayerBufferFormat *target);
 
   CoreInterface *core_intf_;
   hwc_procs_t const **hwc_procs_;
