[Encode] Fix the issue that CUQP doesn't take effect with TU1 for HEVC VDENC.
diff --git a/media_driver/agnostic/gen10/codec/hal/codechal_vdenc_hevc_g10.cpp b/media_driver/agnostic/gen10/codec/hal/codechal_vdenc_hevc_g10.cpp
index 5501399..370da78 100644
--- a/media_driver/agnostic/gen10/codec/hal/codechal_vdenc_hevc_g10.cpp
+++ b/media_driver/agnostic/gen10/codec/hal/codechal_vdenc_hevc_g10.cpp
@@ -1008,8 +1008,8 @@
     {
         //StreamIn CURBE
         curbe.DW6.LCUSize = 1;//Only LCU64 supported by the VDEnc HW
-        // Kernel should use driver-prepared stream-in surface during ROI/ Dirty-Rect
-        curbe.DW6.InputStreamInEn = (m_hevcPicParams->NumROI || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)));
+        // Kernel should use driver-prepared stream-in surface during ROI/ MBQP(LCUQP)/ Dirty-Rect
+        curbe.DW6.InputStreamInEn = (m_hevcPicParams->NumROI || m_encodeParams.bMbQpDataEnabled || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)));
         curbe.DW31.NumImePredictors = m_imgStateImePredictors;
         curbe.DW31.MaxCuSize = 3;
         curbe.DW31.MaxTuSize = 3;
@@ -1275,8 +1275,8 @@
 
     if (using4xMe)
     {
-        // Send driver-prepared stream-in surface as input during ROI/ Dirty-Rect
-        if (m_hevcPicParams->NumROI || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)))
+        // Send driver-prepared stream-in surface as input during ROI/ MBQP(LCUQP)/ Dirty-Rect
+        if (m_hevcPicParams->NumROI || m_encodeParams.bMbQpDataEnabled || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)))
         {
             MOS_ZeroMemory(&surfaceCodecParams, sizeof(surfaceCodecParams));
             surfaceCodecParams.dwSize = MOS_BYTES_TO_DWORDS((MOS_ALIGN_CEIL(m_frameWidth, CODEC_HEVC_VDENC_LCU_WIDTH) / 32) * (MOS_ALIGN_CEIL(m_frameHeight, CODEC_HEVC_VDENC_LCU_HEIGHT) / 32) * CODECHAL_CACHELINE_SIZE);
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 4806830..e7ad32c 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
@@ -4166,8 +4166,8 @@
     {
         //StreamIn CURBE
         curbe.DW6.LCUSize            = 1;//Only LCU64 supported by the VDEnc HW
-        // Kernel should use driver-prepared stream-in surface during ROI/ Dirty-Rect
-        curbe.DW6.InputStreamInEn    = (m_hevcPicParams->NumROI || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)));
+        // Kernel should use driver-prepared stream-in surface during ROI/ MBQP(LCUQP)/ Dirty-Rect
+        curbe.DW6.InputStreamInEn    = (m_hevcPicParams->NumROI || m_encodeParams.bMbQpDataEnabled || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)));
         curbe.DW31.MaxCuSize         = 3;
         curbe.DW31.MaxTuSize         = 3;
         switch (m_hevcSeqParams->TargetUsage)
@@ -4450,8 +4450,8 @@
 
         auto streamingSize = (MOS_ALIGN_CEIL(m_frameWidth, 64) / 32) * (MOS_ALIGN_CEIL(m_frameHeight, 64) / 32) * CODECHAL_CACHELINE_SIZE;
 
-        // Send driver-prepared stream-in surface as input during ROI/ Dirty-Rect
-        if (m_hevcPicParams->NumROI || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)))
+        // Send driver-prepared stream-in surface as input during ROI/ MBQP(LCUQP)/ Dirty-Rect
+        if (m_hevcPicParams->NumROI || m_encodeParams.bMbQpDataEnabled || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)))
         {
             MOS_ZeroMemory(&surfaceCodecParams, sizeof(surfaceCodecParams));
             surfaceCodecParams.dwSize = MOS_BYTES_TO_DWORDS(streamingSize);
diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_vdenc_hevc_g12.cpp b/media_driver/agnostic/gen12/codec/hal/codechal_vdenc_hevc_g12.cpp
index 4fc3a75..255dc70 100644
--- a/media_driver/agnostic/gen12/codec/hal/codechal_vdenc_hevc_g12.cpp
+++ b/media_driver/agnostic/gen12/codec/hal/codechal_vdenc_hevc_g12.cpp
@@ -5795,8 +5795,8 @@
     {
         //StreamIn CURBE
         curbe.DW6.LCUSize            = 1;//Only LCU64 supported by the VDEnc HW
-        // Kernel should use driver-prepared stream-in surface during ROI/ Dirty-Rect
-        curbe.DW6.InputStreamInEn    = (m_hevcPicParams->NumROI || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)));
+        // Kernel should use driver-prepared stream-in surface during ROI/ MBQP(LCUQP)/ Dirty-Rect
+        curbe.DW6.InputStreamInEn    = (m_hevcPicParams->NumROI || m_encodeParams.bMbQpDataEnabled || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)));
         curbe.DW31.MaxCuSize         = 3;
         curbe.DW31.MaxTuSize         = 3;
         switch (m_hevcSeqParams->TargetUsage)
@@ -6103,8 +6103,8 @@
 
         auto streamingSize = (MOS_ALIGN_CEIL(m_frameWidth, 64) / 32) * (MOS_ALIGN_CEIL(m_frameHeight, 64) / 32) * CODECHAL_CACHELINE_SIZE;
 
-        // Send driver-prepared stream-in surface as input during ROI/ Dirty-Rect
-        if (m_hevcPicParams->NumROI || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)))
+        // Send driver-prepared stream-in surface as input during ROI/ MBQP(LCUQP)/ Dirty-Rect
+        if (m_hevcPicParams->NumROI || m_encodeParams.bMbQpDataEnabled || (m_hevcPicParams->NumDirtyRects > 0 && (B_TYPE == m_hevcPicParams->CodingType)))
         {
             MOS_ZeroMemory(&surfaceCodecParams, sizeof(surfaceCodecParams));
             surfaceCodecParams.dwSize = MOS_BYTES_TO_DWORDS(streamingSize);