[Decode] Fix for HandBrake transcoding perf with mmc
Move huc copy WL(Clear ccs) to VDBOX main WL
diff --git a/media_driver/agnostic/common/codec/hal/codechal_hw.cpp b/media_driver/agnostic/common/codec/hal/codechal_hw.cpp
index ce896fa..f4e7cea 100644
--- a/media_driver/agnostic/common/codec/hal/codechal_hw.cpp
+++ b/media_driver/agnostic/common/codec/hal/codechal_hw.cpp
@@ -426,7 +426,8 @@
uint32_t cpCmdsize = 0;
uint32_t cpPatchListSize = 0;
- if (m_hucInterface && (standard == CODECHAL_HEVC || standard == CODECHAL_CENC || standard == CODECHAL_VP9 || standard == CODECHAL_AVC))
+ if (m_hucInterface && (standard == CODECHAL_HEVC || standard == CODECHAL_CENC || standard == CODECHAL_VP9
+ || standard == CODECHAL_AVC || standard == CODECHAL_MPEG2 || standard == CODECHAL_VC1 || standard == CODECHAL_JPEG))
{
CODECHAL_HW_CHK_STATUS_RETURN(m_hucInterface->GetHucStateCommandSize(
mode, &hucCommandsSize, &hucPatchListSize, params));
diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_decode_avc_g12.cpp b/media_driver/agnostic/gen12/codec/hal/codechal_decode_avc_g12.cpp
index cdc648c..49601b1 100644
--- a/media_driver/agnostic/gen12/codec/hal/codechal_decode_avc_g12.cpp
+++ b/media_driver/agnostic/gen12/codec/hal/codechal_decode_avc_g12.cpp
@@ -42,6 +42,20 @@
CODECHAL_DECODE_CHK_NULL_RETURN(settings);
CODECHAL_DECODE_CHK_STATUS_RETURN(CodechalDecodeAvc::AllocateStandard(settings));
+#ifdef _MMC_SUPPORTED
+ // To WA invalid aux data caused HW issue when MMC on
+ if (m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)))
+ {
+ //Add HUC STATE Commands
+ MHW_VDBOX_STATE_CMDSIZE_PARAMS stateCmdSizeParams;
+
+ m_hwInterface->GetHucStateCommandSize(
+ CODECHAL_DECODE_MODE_AVCVLD,
+ &m_HucStateCmdBufferSizeNeeded,
+ &m_HucPatchListSizeNeeded,
+ &stateCmdSizeParams);
+ }
+#endif
if ( MOS_VE_SUPPORTED(m_osInterface))
{
@@ -162,6 +176,21 @@
return MOS_STATUS_SUCCESS;
}
+void CodechalDecodeAvcG12::CalcRequestedSpace(
+ uint32_t &requestedSize,
+ uint32_t &additionalSizeNeeded,
+ uint32_t &requestedPatchListSize)
+{
+ CODECHAL_DECODE_FUNCTION_ENTER;
+
+ requestedSize = m_commandBufferSizeNeeded + m_HucStateCmdBufferSizeNeeded +
+ (m_standardDecodeSizeNeeded * (m_decodeParams.m_numSlices + 1));
+ requestedPatchListSize = m_commandPatchListSizeNeeded + m_HucPatchListSizeNeeded +
+ (m_standardDecodePatchListSizeNeeded * (m_decodeParams.m_numSlices + 1));
+ additionalSizeNeeded = COMMAND_BUFFER_RESERVED_SPACE;
+
+}
+
MOS_STATUS CodechalDecodeAvcG12::SetFrameStates()
{
MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
@@ -182,25 +211,6 @@
}
#endif
-#ifdef _MMC_SUPPORTED
- // To WA invalid aux data caused HW issue when MMC on
- if (m_mmc && m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)) &&
- m_decodeParams.m_destSurface && !Mos_ResourceIsNull(&m_decodeParams.m_destSurface->OsResource) &&
- m_decodeParams.m_destSurface->OsResource.bConvertedFromDDIResource)
- {
- if (m_secureDecoder && m_secureDecoder->IsAuxDataInvalid(&m_decodeParams.m_destSurface->OsResource))
- {
- CODECHAL_DECODE_CHK_STATUS_RETURN(m_secureDecoder->InitAuxSurface(&m_decodeParams.m_destSurface->OsResource, false, true));
- }
- else
- {
- CODECHAL_DECODE_VERBOSEMESSAGE("Clear CCS by VE resolve before frame %d submission", m_frameNum);
- CODECHAL_DECODE_CHK_STATUS_RETURN(static_cast<CodecHalMmcStateG12 *>(m_mmc)->ClearAuxSurf(
- this, m_miInterface, &m_decodeParams.m_destSurface->OsResource, m_veState));
- }
- }
-#endif
-
CODECHAL_DECODE_CHK_STATUS_RETURN(CodechalDecodeAvc::SetFrameStates());
if (MOS_VE_SUPPORTED(m_osInterface) && !MOS_VE_CTXBASEDSCHEDULING_SUPPORTED(m_osInterface))
@@ -227,6 +237,25 @@
CODECHAL_DECODE_FUNCTION_ENTER;
+#ifdef _MMC_SUPPORTED
+ // To WA invalid aux data caused HW issue when MMC on
+ if (m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)) &&
+ m_decodeParams.m_destSurface && !Mos_ResourceIsNull(&m_decodeParams.m_destSurface->OsResource) &&
+ m_decodeParams.m_destSurface->OsResource.bConvertedFromDDIResource)
+ {
+ if (m_secureDecoder && m_secureDecoder->IsAuxDataInvalid(&m_decodeParams.m_destSurface->OsResource))
+ {
+ CODECHAL_DECODE_CHK_STATUS_RETURN(m_secureDecoder->InitAuxSurface(&m_decodeParams.m_destSurface->OsResource, false, true));
+ }
+ else
+ {
+ CODECHAL_DECODE_VERBOSEMESSAGE("Clear CCS by VE resolve before frame %d submission", m_frameNum);
+ CODECHAL_DECODE_CHK_STATUS_RETURN(static_cast<CodecHalMmcStateG12 *>(m_mmc)->ClearAuxSurf(
+ this, m_miInterface, &m_decodeParams.m_destSurface->OsResource, m_veState));
+ }
+ }
+#endif
+
if (m_secureDecoder)
{
CODECHAL_DECODE_CHK_STATUS_RETURN(m_secureDecoder->Execute(this));
diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_decode_avc_g12.h b/media_driver/agnostic/gen12/codec/hal/codechal_decode_avc_g12.h
index 97f48e6..8491ed4 100644
--- a/media_driver/agnostic/gen12/codec/hal/codechal_decode_avc_g12.h
+++ b/media_driver/agnostic/gen12/codec/hal/codechal_decode_avc_g12.h
@@ -124,6 +124,10 @@
MOS_STATUS InitSfcState() override;
MOS_STATUS SetGpuCtxCreatOption(CodechalSetting *settings) override;
+ void CalcRequestedSpace(
+ uint32_t &requestedSize,
+ uint32_t &additionalSizeNeeded,
+ uint32_t &requestedPatchListSize) override;
//!
//! \brief Utility function to allocate internal histogram surface
@@ -137,6 +141,10 @@
PMOS_SURFACE m_histogramSurface = nullptr; //!< Internal histogram buffer
+ //! \Huc state level command buffer size is required
+ uint32_t m_HucStateCmdBufferSizeNeeded = 0;
+ //! \Huc state level patch list size is required
+ uint32_t m_HucPatchListSizeNeeded = 0;
};
#endif // __CODECHAL_DECODER_AVC_G12_H__
diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_decode_jpeg_g12.cpp b/media_driver/agnostic/gen12/codec/hal/codechal_decode_jpeg_g12.cpp
index 05acee4..66d2188 100644
--- a/media_driver/agnostic/gen12/codec/hal/codechal_decode_jpeg_g12.cpp
+++ b/media_driver/agnostic/gen12/codec/hal/codechal_decode_jpeg_g12.cpp
@@ -111,18 +111,6 @@
&vesetParams));
}
-#ifdef _MMC_SUPPORTED
- // To WA invalid aux data caused HW issue when MMC on
- if (m_mmc && m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)) &&
- !Mos_ResourceIsNull(&m_destSurface.OsResource) &&
- m_destSurface.OsResource.bConvertedFromDDIResource)
- {
- CODECHAL_DECODE_VERBOSEMESSAGE("Clear CCS by VE resolve before frame %d submission", m_frameNum);
- CODECHAL_DECODE_CHK_STATUS_RETURN(static_cast<CodecHalMmcStateG12 *>(m_mmc)->ClearAuxSurf(
- this, m_miInterface, &m_destSurface.OsResource, m_veState));
- }
-#endif
-
return eStatus;
}
@@ -131,6 +119,17 @@
MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
CODECHAL_DECODE_FUNCTION_ENTER;
+#ifdef _MMC_SUPPORTED
+ // To WA invalid aux data caused HW issue when MMC on
+ if (m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)) &&
+ !Mos_ResourceIsNull(&m_destSurface.OsResource) &&
+ m_destSurface.OsResource.bConvertedFromDDIResource)
+ {
+ CODECHAL_DECODE_VERBOSEMESSAGE("Clear CCS by VE resolve before frame %d submission", m_frameNum);
+ CODECHAL_DECODE_CHK_STATUS_RETURN(static_cast<CodecHalMmcStateG12 *>(m_mmc)->ClearAuxSurf(
+ this, m_miInterface, &m_destSurface.OsResource, m_veState));
+ }
+#endif
MHW_VDBOX_JPEG_DECODE_PIC_STATE jpegPicState;
jpegPicState.dwOutputFormat = m_decodeParams.m_destSurface->Format;
@@ -566,6 +565,21 @@
CODECHAL_DECODE_CHK_STATUS_RETURN(CodechalDecodeJpeg::AllocateStandard(settings));
+#ifdef _MMC_SUPPORTED
+ // To WA invalid aux data caused HW issue when MMC on
+ if (m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)))
+ {
+ //Add HUC STATE Commands
+ MHW_VDBOX_STATE_CMDSIZE_PARAMS stateCmdSizeParams;
+
+ m_hwInterface->GetHucStateCommandSize(
+ CODECHAL_DECODE_MODE_JPEG,
+ &m_HucStateCmdBufferSizeNeeded,
+ &m_HucPatchListSizeNeeded,
+ &stateCmdSizeParams);
+ }
+#endif
+
if ( MOS_VE_SUPPORTED(m_osInterface))
{
static_cast<MhwVdboxMfxInterfaceG12*>(m_mfxInterface)->DisableScalabilitySupport();
@@ -592,3 +606,17 @@
Mos_CheckVirtualEngineSupported(m_osInterface, true, true);
}
+void CodechalDecodeJpegG12::CalcRequestedSpace(
+ uint32_t &requestedSize,
+ uint32_t &additionalSizeNeeded,
+ uint32_t &requestedPatchListSize)
+{
+ CODECHAL_DECODE_FUNCTION_ENTER;
+
+ requestedSize = m_commandBufferSizeNeeded + m_HucStateCmdBufferSizeNeeded +
+ (m_standardDecodeSizeNeeded * (m_decodeParams.m_numSlices + 1));
+ requestedPatchListSize = m_commandPatchListSizeNeeded + m_HucPatchListSizeNeeded +
+ (m_standardDecodePatchListSizeNeeded * (m_decodeParams.m_numSlices + 1));
+ additionalSizeNeeded = COMMAND_BUFFER_RESERVED_SPACE;
+}
+
diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_decode_jpeg_g12.h b/media_driver/agnostic/gen12/codec/hal/codechal_decode_jpeg_g12.h
index 34dd54f..e1da35b 100644
--- a/media_driver/agnostic/gen12/codec/hal/codechal_decode_jpeg_g12.h
+++ b/media_driver/agnostic/gen12/codec/hal/codechal_decode_jpeg_g12.h
@@ -82,6 +82,10 @@
MOS_STATUS DecodePrimitiveLevel() override;
MOS_STATUS InitMmcState() override;
+ void CalcRequestedSpace(
+ uint32_t &requestedSize,
+ uint32_t &additionalSizeNeeded,
+ uint32_t &requestedPatchListSize) override;
#ifdef _DECODE_PROCESSING_SUPPORTED
MOS_STATUS InitSfcState() override;
@@ -91,6 +95,10 @@
private:
PCODECHAL_DECODE_SINGLEPIPE_VIRTUALENGINE_STATE m_veState = nullptr; //!< single pipe virtual engine state
+ //! \Huc state level command buffer size is required
+ uint32_t m_HucStateCmdBufferSizeNeeded = 0;
+ //! \Huc state level patch list size is required
+ uint32_t m_HucPatchListSizeNeeded = 0;
};
#endif // __CODECHAL_DECODER_JPEG_G12_H__
diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_decode_mpeg2_g12.cpp b/media_driver/agnostic/gen12/codec/hal/codechal_decode_mpeg2_g12.cpp
index dca1232..d53124f 100644
--- a/media_driver/agnostic/gen12/codec/hal/codechal_decode_mpeg2_g12.cpp
+++ b/media_driver/agnostic/gen12/codec/hal/codechal_decode_mpeg2_g12.cpp
@@ -97,18 +97,6 @@
CODECHAL_DECODE_CHK_STATUS_RETURN(CodecHalDecodeSinglePipeVE_SetHintParams(m_veState, &vesetParams));
}
-#ifdef _MMC_SUPPORTED
- // To WA invalid aux data caused HW issue when MMC on
- if (m_mmc && m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)) &&
- !Mos_ResourceIsNull(&m_destSurface.OsResource) &&
- m_destSurface.OsResource.bConvertedFromDDIResource)
- {
- CODECHAL_DECODE_VERBOSEMESSAGE("Clear CCS by VE resolve before frame %d submission", m_frameNum);
- CODECHAL_DECODE_CHK_STATUS_RETURN(static_cast<CodecHalMmcStateG12 *>(m_mmc)->ClearAuxSurf(
- this, m_miInterface, &m_destSurface.OsResource, m_veState));
- }
-#endif
-
return eStatus;
}
@@ -117,6 +105,17 @@
MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
CODECHAL_DECODE_FUNCTION_ENTER;
+#ifdef _MMC_SUPPORTED
+ // To WA invalid aux data caused HW issue when MMC on
+ if (m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)) &&
+ !Mos_ResourceIsNull(&m_destSurface.OsResource) &&
+ m_destSurface.OsResource.bConvertedFromDDIResource)
+ {
+ CODECHAL_DECODE_VERBOSEMESSAGE("Clear CCS by VE resolve before frame %d submission", m_frameNum);
+ CODECHAL_DECODE_CHK_STATUS_RETURN(static_cast<CodecHalMmcStateG12 *>(m_mmc)->ClearAuxSurf(
+ this, m_miInterface, &m_destSurface.OsResource, m_veState));
+ }
+#endif
uint8_t fwdRefIdx = (uint8_t)m_picParams->m_forwardRefIdx;
uint8_t bwdRefIdx = (uint8_t)m_picParams->m_backwardRefIdx;
@@ -634,6 +633,21 @@
CODECHAL_DECODE_CHK_STATUS_RETURN(CodechalDecodeMpeg2::AllocateStandard(
settings));
+#ifdef _MMC_SUPPORTED
+ // To WA invalid aux data caused HW issue when MMC on
+ if (m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)))
+ {
+ MHW_VDBOX_STATE_CMDSIZE_PARAMS stateCmdSizeParams;
+
+ //Add HUC STATE Commands
+ m_hwInterface->GetHucStateCommandSize(
+ CODECHAL_DECODE_MODE_MPEG2VLD,
+ &m_HucStateCmdBufferSizeNeeded,
+ &m_HucPatchListSizeNeeded,
+ &stateCmdSizeParams);
+ }
+#endif
+
if ( MOS_VE_SUPPORTED(m_osInterface))
{
static_cast<MhwVdboxMfxInterfaceG12*>(m_mfxInterface)->DisableScalabilitySupport();
@@ -660,3 +674,17 @@
Mos_CheckVirtualEngineSupported(m_osInterface, true, true);
}
+void CodechalDecodeMpeg2G12::CalcRequestedSpace(
+ uint32_t &requestedSize,
+ uint32_t &additionalSizeNeeded,
+ uint32_t &requestedPatchListSize)
+{
+ CODECHAL_DECODE_FUNCTION_ENTER;
+
+ requestedSize = m_commandBufferSizeNeeded + m_HucStateCmdBufferSizeNeeded +
+ (m_standardDecodeSizeNeeded * (m_decodeParams.m_numSlices + 1));
+ requestedPatchListSize = m_commandPatchListSizeNeeded + m_HucPatchListSizeNeeded +
+ (m_standardDecodePatchListSizeNeeded * (m_decodeParams.m_numSlices + 1));
+ additionalSizeNeeded = COMMAND_BUFFER_RESERVED_SPACE;
+}
+
diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_decode_mpeg2_g12.h b/media_driver/agnostic/gen12/codec/hal/codechal_decode_mpeg2_g12.h
index 0094dad..3154255 100644
--- a/media_driver/agnostic/gen12/codec/hal/codechal_decode_mpeg2_g12.h
+++ b/media_driver/agnostic/gen12/codec/hal/codechal_decode_mpeg2_g12.h
@@ -84,11 +84,20 @@
MOS_STATUS InitMmcState() override;
+ void CalcRequestedSpace(
+ uint32_t &requestedSize,
+ uint32_t &additionalSizeNeeded,
+ uint32_t &requestedPatchListSize) override;
+
protected:
MOS_STATUS SetGpuCtxCreatOption(CodechalSetting *settings) override;
private:
PCODECHAL_DECODE_SINGLEPIPE_VIRTUALENGINE_STATE m_veState = nullptr; //!< single pipe virtual engine state
+ //! \Huc state level command buffer size is required
+ uint32_t m_HucStateCmdBufferSizeNeeded = 0;
+ //! \Huc state level patch list size is required
+ uint32_t m_HucPatchListSizeNeeded = 0;
};
#endif // __CODECHAL_DECODER_MPEG2_G11_H__
diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_decode_vc1_g12.cpp b/media_driver/agnostic/gen12/codec/hal/codechal_decode_vc1_g12.cpp
index e3a1ead..9917ea8 100644
--- a/media_driver/agnostic/gen12/codec/hal/codechal_decode_vc1_g12.cpp
+++ b/media_driver/agnostic/gen12/codec/hal/codechal_decode_vc1_g12.cpp
@@ -59,6 +59,21 @@
CODECHAL_DECODE_CHK_STATUS_RETURN(CodechalDecodeVc1::AllocateStandard(settings));
+#ifdef _MMC_SUPPORTED
+ // To WA invalid aux data caused HW issue when MMC on
+ if (m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)))
+ {
+ //Add HUC STATE Commands
+ MHW_VDBOX_STATE_CMDSIZE_PARAMS stateCmdSizeParams;
+
+ m_hwInterface->GetHucStateCommandSize(
+ CODECHAL_DECODE_MODE_VC1VLD,
+ &m_HucStateCmdBufferSizeNeeded,
+ &m_HucPatchListSizeNeeded,
+ &stateCmdSizeParams);
+ }
+#endif
+
if ( MOS_VE_SUPPORTED(m_osInterface))
{
static_cast<MhwVdboxMfxInterfaceG12*>(m_mfxInterface)->DisableScalabilitySupport();
@@ -118,16 +133,6 @@
}
#ifdef _MMC_SUPPORTED
- // To WA invalid aux data caused HW issue when MMC on
- if (m_mmc && m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)) &&
- !Mos_ResourceIsNull(&m_destSurface.OsResource) &&
- m_destSurface.OsResource.bConvertedFromDDIResource)
- {
- CODECHAL_DECODE_VERBOSEMESSAGE("Clear CCS by VE resolve before frame %d submission", m_frameNum);
- CODECHAL_DECODE_CHK_STATUS_RETURN(static_cast<CodecHalMmcStateG12 *>(m_mmc)->ClearAuxSurf(
- this, m_miInterface, &m_destSurface.OsResource, m_veState));
- }
-
bool isBPicture = m_mfxInterface->IsVc1BPicture(
m_vc1PicParams->CurrPic,
m_vc1PicParams->picture_fields.is_first_field,
@@ -161,6 +166,18 @@
MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
CODECHAL_DECODE_FUNCTION_ENTER;
+#ifdef _MMC_SUPPORTED
+ // To WA invalid aux data caused HW issue when MMC on
+ if (m_mmc->IsMmcEnabled() && (MEDIA_IS_WA(m_waTable, Wa_1408785368) || MEDIA_IS_WA(m_waTable, Wa_22010493002)) &&
+ !Mos_ResourceIsNull(&m_destSurface.OsResource) && m_destSurface.OsResource.bConvertedFromDDIResource &&
+ !(!CodecHal_PictureIsField(m_vc1PicParams->CurrPic) &&
+ m_vc1PicParams->picture_fields.picture_type == vc1SkippedFrame))
+ {
+ CODECHAL_DECODE_VERBOSEMESSAGE("Clear CCS by VE resolve before frame %d submission", m_frameNum);
+ CODECHAL_DECODE_CHK_STATUS_RETURN(static_cast<CodecHalMmcStateG12 *>(m_mmc)->ClearAuxSurf(
+ this, m_miInterface, &m_destSurface.OsResource, m_veState));
+ }
+#endif
PCODEC_REF_LIST *vc1RefList;
vc1RefList = &(m_vc1RefList[0]);
@@ -1609,3 +1626,17 @@
m_veState = nullptr;
}
}
+
+void CodechalDecodeVc1G12::CalcRequestedSpace(
+ uint32_t &requestedSize,
+ uint32_t &additionalSizeNeeded,
+ uint32_t &requestedPatchListSize)
+{
+ CODECHAL_DECODE_FUNCTION_ENTER;
+
+ requestedSize = m_commandBufferSizeNeeded + m_HucStateCmdBufferSizeNeeded +
+ (m_standardDecodeSizeNeeded * (m_decodeParams.m_numSlices + 1));
+ requestedPatchListSize = m_commandPatchListSizeNeeded + m_HucPatchListSizeNeeded +
+ (m_standardDecodePatchListSizeNeeded * (m_decodeParams.m_numSlices + 1));
+ additionalSizeNeeded = COMMAND_BUFFER_RESERVED_SPACE;
+}
diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_decode_vc1_g12.h b/media_driver/agnostic/gen12/codec/hal/codechal_decode_vc1_g12.h
index 405b14c..f30f72f 100644
--- a/media_driver/agnostic/gen12/codec/hal/codechal_decode_vc1_g12.h
+++ b/media_driver/agnostic/gen12/codec/hal/codechal_decode_vc1_g12.h
@@ -83,6 +83,10 @@
MOS_STATUS DecodePrimitiveLevelIT() override;
MOS_STATUS InitMmcState() override;
+ void CalcRequestedSpace(
+ uint32_t &requestedSize,
+ uint32_t &additionalSizeNeeded,
+ uint32_t &requestedPatchListSize) override;
protected:
MOS_STATUS HandleSkipFrame() override;
@@ -92,5 +96,9 @@
MOS_STATUS SetGpuCtxCreatOption(CodechalSetting *settings) override;
PCODECHAL_DECODE_SINGLEPIPE_VIRTUALENGINE_STATE m_veState = nullptr; //!< Sinlge pipe VirtualEngine
+ //! \Huc state level command buffer size is required
+ uint32_t m_HucStateCmdBufferSizeNeeded = 0;
+ //! \Huc state level patch list size is required
+ uint32_t m_HucPatchListSizeNeeded = 0;
};
#endif // __CODECHAL_DECODER_VC1_G12_H__
diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_mmc_g12.cpp b/media_driver/agnostic/gen12/codec/hal/codechal_mmc_g12.cpp
index 8998d09..c23de37 100644
--- a/media_driver/agnostic/gen12/codec/hal/codechal_mmc_g12.cpp
+++ b/media_driver/agnostic/gen12/codec/hal/codechal_mmc_g12.cpp
@@ -243,6 +243,7 @@
return MOS_STATUS_SUCCESS;
}
+//Program Huc Copy related command to clear aux table, not sumbit
MOS_STATUS CodecHalMmcStateG12::ClearAuxSurf(
CodechalDecode* m_decoder,
MhwMiInterface * miInterface,
@@ -313,26 +314,8 @@
0, // u32CopyInputOffset
auxSurfOffset)); // u32CopyOutputOffset
- MOS_ZeroMemory(&flushDwParams, sizeof(flushDwParams));
- CODECHAL_HW_CHK_STATUS_RETURN(miInterface->AddMiFlushDwCmd(
- &cmdBuffer,
- &flushDwParams));
-
- CODECHAL_HW_CHK_STATUS_RETURN(miInterface->AddMiBatchBufferEnd(
- &cmdBuffer,
- nullptr));
-
m_osInterface->pfnReturnCommandBuffer(m_osInterface, &cmdBuffer, 0);
- if (MOS_VE_SUPPORTED(m_osInterface))
- {
- CodecHalDecodeSinglePipeVE_PopulateHintParams(m_veState, &cmdBuffer, false);
- }
-
- CODECHAL_HW_CHK_STATUS_RETURN(m_osInterface->pfnSubmitCommandBuffer(m_osInterface, &cmdBuffer, false));
-
- CODECHAL_HW_CHK_STATUS_RETURN(m_osInterface->pfnSetGpuContext(m_osInterface, m_decoder->GetVideoContext()));
-
return eStatus;
}