| From 8c59834aa9050a7305901506e8b9125f54e38e5e Mon Sep 17 00:00:00 2001 |
| From: IvanLosev <ivan.losev@intel.com> |
| Date: Mon, 26 Jul 2021 22:26:38 +0800 |
| Subject: [PATCH 2/2] [Encode] Enable Jpeg MMC for G12 |
| |
| Set propper mmc state for jpeg raw surface |
| --- |
| .../common/codec/hal/codechal_encode_jpeg.cpp | 3 + |
| .../codec/hal/codechal_encode_jpeg_g12.cpp | 4 +- |
| .../hal/codechal_mmc_encode_jpeg_g12.cpp | 57 +++++++++++++++++++ |
| .../codec/hal/codechal_mmc_encode_jpeg_g12.h | 53 +++++++++++++++++ |
| .../agnostic/gen12/codec/hal/media_srcs.cmake | 11 ++++ |
| 5 files changed, 126 insertions(+), 2 deletions(-) |
| create mode 100644 media_driver/agnostic/gen12/codec/hal/codechal_mmc_encode_jpeg_g12.cpp |
| create mode 100644 media_driver/agnostic/gen12/codec/hal/codechal_mmc_encode_jpeg_g12.h |
| |
| diff --git a/media_driver/agnostic/common/codec/hal/codechal_encode_jpeg.cpp b/media_driver/agnostic/common/codec/hal/codechal_encode_jpeg.cpp |
| index 55ced95f685d..49dcfdd95b2b 100644 |
| --- a/media_driver/agnostic/common/codec/hal/codechal_encode_jpeg.cpp |
| +++ b/media_driver/agnostic/common/codec/hal/codechal_encode_jpeg.cpp |
| @@ -599,6 +599,9 @@ MOS_STATUS CodechalEncodeJpegState::ExecutePictureLevel() |
| pipeBufAddrParams.Mode = m_mode; |
| pipeBufAddrParams.psRawSurface = &m_rawSurface; // original picture to be encoded |
| |
| + CODECHAL_ENCODE_CHK_NULL_RETURN(m_mmcState); |
| + CODECHAL_ENCODE_CHK_STATUS_RETURN(m_mmcState->SetPipeBufAddr(&pipeBufAddrParams, &cmdBuffer)); |
| + |
| CODECHAL_DEBUG_TOOL( |
| CODECHAL_ENCODE_CHK_STATUS_RETURN(m_debugInterface->DumpYUVSurface( |
| &m_rawSurface, |
| diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_encode_jpeg_g12.cpp b/media_driver/agnostic/gen12/codec/hal/codechal_encode_jpeg_g12.cpp |
| index e6d8826b7a12..e480866fb92b 100644 |
| --- a/media_driver/agnostic/gen12/codec/hal/codechal_encode_jpeg_g12.cpp |
| +++ b/media_driver/agnostic/gen12/codec/hal/codechal_encode_jpeg_g12.cpp |
| @@ -25,7 +25,7 @@ |
| //! |
| |
| #include "codechal_encode_jpeg_g12.h" |
| -#include "codechal_mmc_g12.h" |
| +#include "codechal_mmc_encode_jpeg_g12.h" |
| #include "mos_util_user_interface.h" |
| |
| CodechalEncodeJpegStateG12::CodechalEncodeJpegStateG12( |
| @@ -72,7 +72,7 @@ MOS_STATUS CodechalEncodeJpegStateG12::InitMmcState() |
| { |
| CODECHAL_ENCODE_FUNCTION_ENTER; |
| #ifdef _MMC_SUPPORTED |
| - m_mmcState = MOS_New(CodecHalMmcStateG12, m_hwInterface); |
| + m_mmcState = MOS_New(CodechalMmcEncodeJpegG12, m_hwInterface, this); |
| CODECHAL_ENCODE_CHK_NULL_RETURN(m_mmcState); |
| #endif |
| return MOS_STATUS_SUCCESS; |
| diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_mmc_encode_jpeg_g12.cpp b/media_driver/agnostic/gen12/codec/hal/codechal_mmc_encode_jpeg_g12.cpp |
| new file mode 100644 |
| index 000000000000..07f71c59924a |
| --- /dev/null |
| +++ b/media_driver/agnostic/gen12/codec/hal/codechal_mmc_encode_jpeg_g12.cpp |
| @@ -0,0 +1,57 @@ |
| +/* |
| +* Copyright (c) 2021, Intel Corporation |
| +* |
| +* Permission is hereby granted, free of charge, to any person obtaining a |
| +* copy of this software and associated documentation files (the "Software"), |
| +* to deal in the Software without restriction, including without limitation |
| +* the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| +* and/or sell copies of the Software, and to permit persons to whom the |
| +* Software is furnished to do so, subject to the following conditions: |
| +* |
| +* The above copyright notice and this permission notice shall be included |
| +* in all copies or substantial portions of the Software. |
| +* |
| +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| +* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR |
| +* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
| +* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
| +* OTHER DEALINGS IN THE SOFTWARE. |
| +*/ |
| +//! |
| +//! \file codechal_mmc_encode_jpeg_g12.cpp |
| +//! \brief Impelements the public interface for Gen12 CodecHal Media Memory Compression |
| +//! |
| + |
| +#include "codechal_mmc_encode_jpeg_g12.h" |
| + |
| +CodechalMmcEncodeJpegG12::CodechalMmcEncodeJpegG12( |
| + CodechalHwInterface *hwInterface, |
| + void *standardState): |
| + CodecHalMmcStateG12(hwInterface) |
| +{ |
| + MOS_FUNCTION_ENTER(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_ENCODE); |
| + InitEncodeMmcEnable(hwInterface); |
| +} |
| + |
| +MOS_STATUS CodechalMmcEncodeJpegG12::SetPipeBufAddr( |
| + PMHW_VDBOX_PIPE_BUF_ADDR_PARAMS pipeBufAddrParams, |
| + PMOS_COMMAND_BUFFER cmdBuffer) |
| +{ |
| + MOS_FUNCTION_ENTER(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_ENCODE); |
| + MOS_CHK_NULL_RETURN(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_ENCODE, pipeBufAddrParams); |
| + MOS_CHK_NULL_RETURN(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_ENCODE, pipeBufAddrParams->psRawSurface); |
| + |
| + if (m_mmcEnabled) |
| + { |
| + MOS_CHK_STATUS_RETURN(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_ENCODE, m_osInterface->pfnGetMemoryCompressionMode(m_osInterface, |
| + &pipeBufAddrParams->psRawSurface->OsResource, &pipeBufAddrParams->RawSurfMmcState)); |
| + } |
| + else |
| + { |
| + pipeBufAddrParams->RawSurfMmcState = MOS_MEMCOMP_DISABLED; |
| + } |
| + |
| + return MOS_STATUS_SUCCESS; |
| +} |
| diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_mmc_encode_jpeg_g12.h b/media_driver/agnostic/gen12/codec/hal/codechal_mmc_encode_jpeg_g12.h |
| new file mode 100644 |
| index 000000000000..79636fd1769d |
| --- /dev/null |
| +++ b/media_driver/agnostic/gen12/codec/hal/codechal_mmc_encode_jpeg_g12.h |
| @@ -0,0 +1,53 @@ |
| +/* |
| +* Copyright (c) 2021, Intel Corporation |
| +* |
| +* Permission is hereby granted, free of charge, to any person obtaining a |
| +* copy of this software and associated documentation files (the "Software"), |
| +* to deal in the Software without restriction, including without limitation |
| +* the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| +* and/or sell copies of the Software, and to permit persons to whom the |
| +* Software is furnished to do so, subject to the following conditions: |
| +* |
| +* The above copyright notice and this permission notice shall be included |
| +* in all copies or substantial portions of the Software. |
| +* |
| +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| +* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR |
| +* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
| +* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
| +* OTHER DEALINGS IN THE SOFTWARE. |
| +*/ |
| +//! |
| +//! \file codechal_mmc_encode_jpeg_g12.h |
| +//! \brief Defines the public interface for CodecHal Media Memory Compression |
| +//! |
| +#pragma once |
| + |
| +#include "codechal_mmc_g12.h" |
| + |
| +//! \class CodechalMmcEncodeJpegG12 |
| +//! \brief Media memory compression encode JPEG state for Gen12. This class defines the member fields |
| +//! functions etc used by encode JPEG memory compression. |
| +//! |
| +class CodechalMmcEncodeJpegG12 : public CodecHalMmcStateG12 |
| +{ |
| +public: |
| + |
| + //! |
| + //! \brief Constructor |
| + //! |
| + CodechalMmcEncodeJpegG12( |
| + CodechalHwInterface *hwInterface, |
| + void *encoderState); |
| + |
| + //! |
| + //! \brief Destructor |
| + //! |
| + virtual ~CodechalMmcEncodeJpegG12() {} |
| + |
| + MOS_STATUS SetPipeBufAddr( |
| + PMHW_VDBOX_PIPE_BUF_ADDR_PARAMS pipeBufAddrParams, |
| + PMOS_COMMAND_BUFFER cmdBuffer = nullptr) override; |
| +}; |
| diff --git a/media_driver/agnostic/gen12/codec/hal/media_srcs.cmake b/media_driver/agnostic/gen12/codec/hal/media_srcs.cmake |
| index a6d715f6009c..829cf2444c17 100644 |
| --- a/media_driver/agnostic/gen12/codec/hal/media_srcs.cmake |
| +++ b/media_driver/agnostic/gen12/codec/hal/media_srcs.cmake |
| @@ -435,6 +435,17 @@ if(${JPEG_Encode_Supported} STREQUAL "yes") |
| ${TMP_3_HEADERS_} |
| ${CMAKE_CURRENT_LIST_DIR}/codechal_encode_jpeg_g12.h |
| ) |
| + |
| + if(${MMC_Supported} STREQUAL "yes") |
| + set(TMP_2_SOURCES_ |
| + ${TMP_2_SOURCES_} |
| + ${CMAKE_CURRENT_LIST_DIR}/codechal_mmc_encode_jpeg_g12.cpp |
| + ) |
| + set(TMP_2_HEADERS_ |
| + ${TMP_2_HEADERS_} |
| + ${CMAKE_CURRENT_LIST_DIR}/codechal_mmc_encode_jpeg_g12.h |
| + ) |
| + endif() |
| endif() |
| |
| set(SOURCES_ |
| -- |
| 2.29.0 |
| |