diff --git a/media_driver/agnostic/common/codec/hal/codechal_huc_cmd_initializer.cpp b/media_driver/agnostic/common/codec/hal/codechal_huc_cmd_initializer.cpp
index d277a9c..4441f22 100644
--- a/media_driver/agnostic/common/codec/hal/codechal_huc_cmd_initializer.cpp
+++ b/media_driver/agnostic/common/codec/hal/codechal_huc_cmd_initializer.cpp
@@ -341,6 +341,7 @@
     bool                                        brcEnabled,
     bool                                        streaminEnabled,
     bool                                        roiStreamInEnabled,
+    bool                                        brcAdaptiveRegionBoostEnable,
     bool                                        roundingEnabled,
     bool                                        panicEnabled,
     int32_t                                     currentPass
@@ -378,6 +379,7 @@
     m_panicEnabled       = panicEnabled;
     m_roiStreamInEnabled = roiStreamInEnabled;
     m_currentPass        = currentPass;
+    m_brcAdaptiveRegionBoostEnabled = brcAdaptiveRegionBoostEnable;
 
     MOS_ZeroMemory(&lockFlagsWriteOnly, sizeof(MOS_LOCK_PARAMS));
     lockFlagsWriteOnly.WriteOnly = 1;
diff --git a/media_driver/agnostic/common/codec/hal/codechal_huc_cmd_initializer.h b/media_driver/agnostic/common/codec/hal/codechal_huc_cmd_initializer.h
index 8c8d46b..1c5533f 100644
--- a/media_driver/agnostic/common/codec/hal/codechal_huc_cmd_initializer.h
+++ b/media_driver/agnostic/common/codec/hal/codechal_huc_cmd_initializer.h
@@ -216,6 +216,7 @@
     bool                                        m_roundingEnabled = false;
     bool                                        m_panicEnabled = false;
     bool                                        m_roiStreamInEnabled = false;
+    bool                                        m_brcAdaptiveRegionBoostEnabled = false;
     int32_t                                     m_currentPass = 0;
     int32_t                                     m_cmdCount = 0 ;
 
@@ -291,6 +292,7 @@
         bool                                        brcEnabled,
         bool                                        streaminEnabled,
         bool                                        roiStreamInEnabled,
+        bool                                        brcAdaptiveRegionBoostEnable,
         bool                                        roundingEnabled,
         bool                                        panicEnabled,
         int32_t                                     currentPass
diff --git a/media_driver/agnostic/common/codec/hal/codechal_vdenc_hevc.cpp b/media_driver/agnostic/common/codec/hal/codechal_vdenc_hevc.cpp
index e5de91a..5077c3f 100644
--- a/media_driver/agnostic/common/codec/hal/codechal_vdenc_hevc.cpp
+++ b/media_driver/agnostic/common/codec/hal/codechal_vdenc_hevc.cpp
@@ -2045,6 +2045,7 @@
         m_brcEnabled,
         m_vdencStreamInEnabled,
         m_vdencNativeROIEnabled,
+        m_brcAdaptiveRegionBoostEnable,
         m_hevcVdencRoundingEnabled,
         panicEnabled,
         currentPass));
@@ -2844,6 +2845,80 @@
     return eStatus;
 }
 
+MOS_STATUS CodechalVdencHevcState::SetupRegionBoosting(PMOS_RESOURCE vdencStreamIn, uint16_t boostIndex)
+{
+    MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
+
+    CODECHAL_ENCODE_FUNCTION_ENTER;
+    CODECHAL_ENCODE_CHK_NULL_RETURN(vdencStreamIn);
+
+    MOS_LOCK_PARAMS lockFlags;
+    MOS_ZeroMemory(&lockFlags, sizeof(MOS_LOCK_PARAMS));
+    lockFlags.WriteOnly = 1;
+
+    uint8_t* data = (uint8_t*)m_osInterface->pfnLockResource(
+        m_osInterface,
+        vdencStreamIn,
+        &lockFlags);
+    CODECHAL_ENCODE_CHK_NULL_RETURN(data);
+
+    uint32_t streamInWidth = (MOS_ALIGN_CEIL(m_frameWidth, 64) / 32);
+    uint32_t streamInHeight = (MOS_ALIGN_CEIL(m_frameHeight, 64) / 32);
+    int32_t streamInNumCUs = streamInWidth * streamInHeight;
+
+    MOS_ZeroMemory(data, streamInNumCUs * 64);
+
+    MHW_VDBOX_VDENC_STREAMIN_STATE_PARAMS streaminDataParams;
+
+    MOS_ZeroMemory(&streaminDataParams, sizeof(streaminDataParams));
+    streaminDataParams.setQpRoiCtrl = true;
+    uint32_t roiCtrl = 85; // All four 16x16 blocks within the 32x32 blocks share the same region ID 1 (01010101).
+    for (uint16_t y = 0; y < streamInHeight; y++)
+    {
+        if ((y & 7) == boostIndex)
+        {
+            for (uint16_t x = 0; x < streamInWidth; x++)
+            {
+                streaminDataParams.roiCtrl = 85;
+                SetStreaminDataPerRegion(streamInWidth, y, y+1, x, x+1, &streaminDataParams, data);
+            }
+        }
+    }
+
+    MOS_ZeroMemory(&streaminDataParams, sizeof(streaminDataParams));
+    streaminDataParams.maxTuSize = 3;    //Maximum TU Size allowed, restriction to be set to 3
+    streaminDataParams.maxCuSize = 2;    //For ARB, currently support 32x32 block
+    switch (m_hevcSeqParams->TargetUsage)
+    {
+    case 1:
+    case 4:
+        streaminDataParams.numMergeCandidateCu64x64 = 4;
+        streaminDataParams.numMergeCandidateCu32x32 = 3;
+        streaminDataParams.numMergeCandidateCu16x16 = 2;
+        streaminDataParams.numMergeCandidateCu8x8   = 1;
+        streaminDataParams.numImePredictors         = m_imgStateImePredictors;
+        break;
+    case 7:
+        streaminDataParams.numMergeCandidateCu64x64 = 2;
+        streaminDataParams.numMergeCandidateCu32x32 = 2;
+        streaminDataParams.numMergeCandidateCu16x16 = 2;
+        streaminDataParams.numMergeCandidateCu8x8   = 0;
+        streaminDataParams.numImePredictors         = 4;
+        break;
+    }
+
+    for (auto i = 0; i < streamInNumCUs; i++)
+    {
+        SetStreaminDataPerLcu(&streaminDataParams, data + (i * 64));
+    }
+
+    m_osInterface->pfnUnlockResource(
+        m_osInterface,
+        vdencStreamIn);
+
+    return eStatus;
+}
+
 MOS_STATUS CodechalVdencHevcState::PrepareVDEncStreamInData()
 {
     MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
@@ -2853,7 +2928,18 @@
     if (m_vdencStreamInEnabled && m_encodeParams.bMbQpDataEnabled)
         CODECHAL_ENCODE_CHK_STATUS_RETURN(SetupMbQpStreamIn(&m_resVdencStreamInBuffer[m_currRecycledBufIdx]));
 
-    if (m_vdencStreamInEnabled && m_hevcPicParams->NumROI)
+    if (m_brcAdaptiveRegionBoostSupported && m_hevcPicParams->TargetFrameSize && !m_lookaheadDepth)
+    {
+        // Adaptive region boost is enabled for TCBRC only
+        m_brcAdaptiveRegionBoostEnable = true;
+        m_vdencStreamInEnabled         = true;
+    }
+    else
+    {
+        m_brcAdaptiveRegionBoostEnable = false;
+    }
+
+    if (!m_brcAdaptiveRegionBoostEnable && m_vdencStreamInEnabled && m_hevcPicParams->NumROI)
     {
         ProcessRoiDeltaQp();
 
@@ -2868,10 +2954,18 @@
             CODECHAL_ENCODE_CHK_STATUS_RETURN(SetupROIStreamIn(&(m_resVdencStreamInBuffer[m_currRecycledBufIdx])));
         }
     }
-    else if (m_vdencStreamInEnabled && (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)))
+    else if (!m_brcAdaptiveRegionBoostEnable && m_vdencStreamInEnabled && (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)))
     {
         CODECHAL_ENCODE_CHK_STATUS_RETURN(SetupDirtyRectStreamIn(&(m_resVdencStreamInBuffer[m_currRecycledBufIdx])));
     }
+
+    if (m_brcAdaptiveRegionBoostEnable)
+    {
+        uint16_t rowOffset[8] = {0, 3, 5, 2, 7, 4, 1, 6};
+        uint16_t circularFrameIdx = (m_storeData - 1) & 7;
+        CODECHAL_ENCODE_CHK_STATUS_RETURN(SetupRegionBoosting(&(m_resVdencStreamInBuffer[m_currRecycledBufIdx]), rowOffset[circularFrameIdx]));
+    }
+
     return eStatus;
 }
 
diff --git a/media_driver/agnostic/common/codec/hal/codechal_vdenc_hevc.h b/media_driver/agnostic/common/codec/hal/codechal_vdenc_hevc.h
index 559c3a6..51a66de 100644
--- a/media_driver/agnostic/common/codec/hal/codechal_vdenc_hevc.h
+++ b/media_driver/agnostic/common/codec/hal/codechal_vdenc_hevc.h
@@ -202,6 +202,8 @@
     bool                                    m_pakOnlyPass = false;                             //!< flag to signal VDEnc+PAK vs. PAK only
     bool                                    m_hevcVisualQualityImprovement = false;            //!< VQI enable flag
     bool                                    m_enableMotionAdaptive = false;                    //!< Motion adaptive enable flag
+    bool                                    m_brcAdaptiveRegionBoostSupported = false;         //!< ARB in BRC mode supported flag.
+    bool                                    m_brcAdaptiveRegionBoostEnable = false;            //!< ARB in BRC mode enable flag.
 
     //Resources for VDEnc
     MOS_RESOURCE                            m_sliceCountBuffer;                                //!< Slice count buffer
@@ -788,11 +790,21 @@
     //!
     //! \param    [in] streamIn
     //!           Pointer to streamin buffer
+    MOS_STATUS SetupForceIntraStreamIn(PMOS_RESOURCE streamIn);
+
+    //! \brief    Set VDENC StreamIn Surface for BRC Adaptive Region Boost
+    //!
+    //! \param    [in] vdencStreamIn
+    //!           StreamIn Surface Resource.
+    //! \param    [in] boostIndex
+    //!           Region index for boosting.
     //!
     //! \return   MOS_STATUS
     //!           MOS_STATUS_SUCCESS if success, else fail reason
     //!
-    MOS_STATUS SetupForceIntraStreamIn(PMOS_RESOURCE streamIn);
+    virtual MOS_STATUS SetupRegionBoosting(
+        PMOS_RESOURCE                vdencStreamIn,
+        uint16_t                     boostIndex);
 
     // Inherited virtual function
     MOS_STATUS Initialize(CodechalSetting * settings)  override;
diff --git a/media_driver/agnostic/gen11/codec/hal/codechal_huc_cmd_initializer_g11.cpp b/media_driver/agnostic/gen11/codec/hal/codechal_huc_cmd_initializer_g11.cpp
index 7f83f95..f358410 100644
--- a/media_driver/agnostic/gen11/codec/hal/codechal_huc_cmd_initializer_g11.cpp
+++ b/media_driver/agnostic/gen11/codec/hal/codechal_huc_cmd_initializer_g11.cpp
@@ -112,6 +112,12 @@
         }
     }
 
+    // For TCBRC adaptive region boost
+    if(m_brcAdaptiveRegionBoostEnabled)
+    {
+        cmd1.ROIStreamInEnabled = 1;
+    }
+
     // default
     cmd1.FwdPocNumForRefId0inL0 = 0x01;
     cmd1.FwdPocNumForRefId0inL1 = 0xff;
diff --git a/media_driver/agnostic/gen11/codec/hal/codechal_vdenc_hevc_g11.cpp b/media_driver/agnostic/gen11/codec/hal/codechal_vdenc_hevc_g11.cpp
index 612790b..4806830 100644
--- a/media_driver/agnostic/gen11/codec/hal/codechal_vdenc_hevc_g11.cpp
+++ b/media_driver/agnostic/gen11/codec/hal/codechal_vdenc_hevc_g11.cpp
@@ -561,7 +561,7 @@
     PCODECHAL_VDENC_HEVC_STREAMIN_STATE_G10 data = (PCODECHAL_VDENC_HEVC_STREAMIN_STATE_G10)streaminData;
     if (streaminParams->setQpRoiCtrl)
     {
-        if (m_vdencNativeROIEnabled)
+        if (m_vdencNativeROIEnabled || m_brcAdaptiveRegionBoostEnable)
         {
             data->DW0.RoiCtrl = streaminParams->roiCtrl;
         }
@@ -1995,6 +1995,7 @@
             m_brcEnabled,
             m_vdencStreamInEnabled,
             m_vdencNativeROIEnabled,
+            m_brcAdaptiveRegionBoostEnable,
             m_hevcVdencRoundingEnabled,
             panicEnabled,
             GetCurrentPass()));
@@ -3480,7 +3481,6 @@
         hucVdencBrcInitDmem->StreamInROIEnable_U8 = 1;
         hucVdencBrcInitDmem->StreamInSurfaceEnable_U8 = 1;
     }
-
     // RDOQ adaptation hardened to HW starting Gen11
     hucVdencBrcInitDmem->RDOQ_AdaptationEnable_U8 = 0;
 
@@ -4764,6 +4764,7 @@
     m_kuidCommon = IDR_CODEC_HME_DS_SCOREBOARD_KERNEL;
     m_hucPakStitchEnabled = true;
     m_scalabilityState = nullptr;
+    m_brcAdaptiveRegionBoostSupported = true;
 
     MOS_ZeroMemory(&m_resPakcuLevelStreamoutData, sizeof(m_resPakcuLevelStreamoutData));
     MOS_ZeroMemory(&m_resPakSliceLevelStreamoutData, sizeof(m_resPakSliceLevelStreamoutData));
