blob: 1df0a3f14adcff6ceb3de556b599424e52efda7b [file] [log] [blame]
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