diff --git a/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_hcp_g12_X.cpp b/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_hcp_g12_X.cpp
index 9d0e7f9..a170b8e 100644
--- a/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_hcp_g12_X.cpp
+++ b/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_hcp_g12_X.cpp
@@ -1714,7 +1714,6 @@
         cmd->DW3.YOffsetForVCr = params->dwReconSurfHeight;
     }
 
-    cmd->DW4.CompressionFormat       = params->dwCompressionFormat;
     cmd->DW4.MemoryCompressionEnable = MmcEnable(params->mmcState) ? ((~params->mmcSkipMask) & 0xff) : 0;
     cmd->DW4.CompressionType         = MmcIsRc(params->mmcState) ? 0xff : 0;
 
diff --git a/media_driver/media_softlet/agnostic/Xe_M/Xe_M_base/codec/hal/dec/hevc/packet/decode_hevc_picture_packet_xe_m_base.cpp b/media_driver/media_softlet/agnostic/Xe_M/Xe_M_base/codec/hal/dec/hevc/packet/decode_hevc_picture_packet_xe_m_base.cpp
index 33f2356..ea0c21b 100644
--- a/media_driver/media_softlet/agnostic/Xe_M/Xe_M_base/codec/hal/dec/hevc/packet/decode_hevc_picture_packet_xe_m_base.cpp
+++ b/media_driver/media_softlet/agnostic/Xe_M/Xe_M_base/codec/hal/dec/hevc/packet/decode_hevc_picture_packet_xe_m_base.cpp
@@ -367,12 +367,6 @@
     DECODE_CHK_STATUS(m_mmcState->SetSurfaceMmcState(dstSurfaceParams.psSurface));
     DECODE_CHK_STATUS(m_mmcState->GetSurfaceMmcState(dstSurfaceParams.psSurface, &dstSurfaceParams.mmcState));
     DECODE_CHK_STATUS(m_mmcState->GetSurfaceMmcFormat(dstSurfaceParams.psSurface, &dstSurfaceParams.dwCompressionFormat));
-
-    if (dstSurfaceParams.mmcState == MOS_MEMCOMP_DISABLED && m_mmcState->IsMmcEnabled())
-    {
-        m_hevcBasicFeature->m_hasMixedmmcState = true;
-        DECODE_NORMALMESSAGE("Current %d frame has mixed mmc state\n", m_hevcBasicFeature->m_frameNum);
-    }
 #endif
 
     return MOS_STATUS_SUCCESS;
@@ -397,8 +391,8 @@
     // Set refSurfaceParams mmcState as MOS_MEMCOMP_MC to satisfy MmcEnable in AddHcpSurfaceCmd
     // The actual mmcstate is recorded by refSurfaceParams.mmcSkipMask
     refSurfaceParams.mmcState = MOS_MEMCOMP_MC;
-    DECODE_CHK_STATUS(m_mmcState->GetSurfaceMmcFormat(refSurfaceParams.psSurface, &refSurfaceParams.dwCompressionFormat));
     DECODE_CHK_STATUS(hevcDecodeMemComp->SetRefSurfaceMask(*m_hevcBasicFeature, pipeBufAddrParams.presReferences, refSurfaceParams.mmcSkipMask));
+    DECODE_CHK_STATUS(hevcDecodeMemComp->SetRefSurfaceCompressionFormat(*m_hevcBasicFeature, pipeBufAddrParams.presReferences, refSurfaceParams.dwCompressionFormat));
 #endif
 
     return MOS_STATUS_SUCCESS;
diff --git a/media_softlet/agnostic/common/codec/hal/dec/hevc/mmc/decode_hevc_mem_compression.cpp b/media_softlet/agnostic/common/codec/hal/dec/hevc/mmc/decode_hevc_mem_compression.cpp
index 8528d6d..4cd715c 100644
--- a/media_softlet/agnostic/common/codec/hal/dec/hevc/mmc/decode_hevc_mem_compression.cpp
+++ b/media_softlet/agnostic/common/codec/hal/dec/hevc/mmc/decode_hevc_mem_compression.cpp
@@ -71,12 +71,6 @@
     {
         if (presReferences[i] != nullptr)
         {
-            if (hevcBasicFeature.m_hasMixedmmcState)
-            {
-                DECODE_NORMALMESSAGE("Decompress reference surface due to mixed mmc state\n");
-                DECODE_CHK_STATUS(m_osInterface->pfnDecompResource(m_osInterface, presReferences[i]));
-            }
-
             DECODE_CHK_STATUS(m_osInterface->pfnGetMemoryCompressionMode(
                 m_osInterface, presReferences[i], &refMmcState));
         }
@@ -92,6 +86,37 @@
     return MOS_STATUS_SUCCESS;
 }
 
+MOS_STATUS HevcDecodeMemComp::SetRefSurfaceCompressionFormat(
+    HevcBasicFeature    &hevcBasicFeature,
+    const PMOS_RESOURCE *presReferences,
+    uint32_t            &mmcCompressionFormat)
+{
+    MOS_MEMCOMP_STATE refMmcState       = MOS_MEMCOMP_DISABLED;
+    uint32_t          compressionFormat = 0;
+    uint32_t          refcompressionFormat = 0;
+
+    for (uint16_t i = 0; i < CODECHAL_MAX_CUR_NUM_REF_FRAME_HEVC; i++)
+    {
+        if (presReferences[i] != nullptr)
+        {
+            DECODE_CHK_STATUS(m_osInterface->pfnGetMemoryCompressionMode(
+                m_osInterface, presReferences[i], &refMmcState));
+
+            if (refMmcState == MOS_MEMCOMP_MC || refMmcState == MOS_MEMCOMP_RC)
+            {
+                DECODE_CHK_STATUS(m_osInterface->pfnGetMemoryCompressionFormat(
+                    m_osInterface, presReferences[i], &compressionFormat));
+
+                refcompressionFormat = compressionFormat;
+            }
+        }
+    }
+    mmcCompressionFormat = refcompressionFormat;
+    DECODE_NORMALMESSAGE("HEVC reference surface compression format %d\n", mmcCompressionFormat);
+
+    return MOS_STATUS_SUCCESS;
+}
+
 MOS_STATUS HevcDecodeMemComp::CheckReferenceList(HevcBasicFeature &hevcBasicFeature,
         MOS_MEMCOMP_STATE &postDeblockSurfMmcState,
         MOS_MEMCOMP_STATE &preDeblockSurfMmcState,
diff --git a/media_softlet/agnostic/common/codec/hal/dec/hevc/mmc/decode_hevc_mem_compression.h b/media_softlet/agnostic/common/codec/hal/dec/hevc/mmc/decode_hevc_mem_compression.h
index 468fbe1..1f9c9d2 100644
--- a/media_softlet/agnostic/common/codec/hal/dec/hevc/mmc/decode_hevc_mem_compression.h
+++ b/media_softlet/agnostic/common/codec/hal/dec/hevc/mmc/decode_hevc_mem_compression.h
@@ -69,6 +69,11 @@
         const PMOS_RESOURCE *presReferences,
         uint8_t             &mmcSkipMask);
 
+    MOS_STATUS SetRefSurfaceCompressionFormat(
+        HevcBasicFeature    &hevcBasicFeature,
+        const PMOS_RESOURCE *presReferences,
+        uint32_t            &compressionFormat);
+
 protected:
     PMOS_INTERFACE m_osInterface = nullptr;
 
diff --git a/media_softlet/agnostic/common/codec/hal/dec/shared/features/decode_basic_feature.h b/media_softlet/agnostic/common/codec/hal/dec/shared/features/decode_basic_feature.h
index b35c79c..b4a48d2 100644
--- a/media_softlet/agnostic/common/codec/hal/dec/shared/features/decode_basic_feature.h
+++ b/media_softlet/agnostic/common/codec/hal/dec/shared/features/decode_basic_feature.h
@@ -137,7 +137,6 @@
     bool                            m_useDummyReference = false;        //!< Indicates if use dummy reference
     MOS_SURFACE                     m_dummyReference;                   //!< Dummy reference surface
     CODECHAL_DUMMY_REFERENCE_STATUS m_dummyReferenceStatus = CODECHAL_DUMMY_REFERENCE_INVALID; //!< Indicate the status of dummy reference
-    bool                            m_hasMixedmmcState  = false;        //!< Indicate if mixed mmc exist
     constexpr static uint8_t m_invalidFrameIndex = 0xff;                //!< Invalid frame index
     constexpr static uint8_t m_maxFrameIndex = CODECHAL_NUM_UNCOMPRESSED_SURFACE_HEVC; //!< Max frame index
 
