package/intel-mediadriver: bump version to 22.1.0

Removed patch 0002 which was applied upstream:
42ffd7983a

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Bernd Kuhls 2021-12-30 16:34:28 +01:00 committed by Thomas Petazzoni
parent 97c90696d9
commit cf13b5b301
3 changed files with 2 additions and 502 deletions

View File

@ -1,500 +0,0 @@
From 42ffd7983a32b75cf8403c235d8d0f727191390c Mon Sep 17 00:00:00 2001
From: kankanzh <kankan.zheng@intel.com>
Date: Mon, 29 Nov 2021 14:16:42 +0800
Subject: [PATCH] [Media Common] GMM Multi-Adapter Interface Changes
* [Media Common] GMM Multi-Adapter Interface Changes
Gmm change interface to support Multi-Adapter, media UMD need change the corresponding interface.
Downloaded from upstream commit
https://github.com/intel/media-driver/commit/42ffd7983a32b75cf8403c235d8d0f727191390c
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
.../linux/common/os/media_skuwa_specific.h | 1 +
.../linux/common/os/mos_os_specific.h | 1 -
media_driver/linux/common/ddi/media_libva.cpp | 70 +++++++++++--------
.../linux/common/ddi/media_libva_common.h | 2 -
.../linux/common/os/linux_shadow_skuwa.h | 1 +
.../linux/common/os/mos_auxtable_mgr.cpp | 21 ++----
.../linux/common/os/mos_auxtable_mgr.h | 4 +-
.../linux/common/os/mos_interface.cpp | 31 +++++---
.../linux/common/os/mos_os_specific.c | 14 +---
media_driver/media_top_cmake.cmake | 2 +-
.../agnostic/common/os/mos_interface.h | 16 +++++
.../common/os/mos_context_specific_next.cpp | 59 ++++++++--------
12 files changed, 118 insertions(+), 104 deletions(-)
diff --git a/media_common/linux/common/os/media_skuwa_specific.h b/media_common/linux/common/os/media_skuwa_specific.h
index 7f8f4fe317..7c046bc44c 100644
--- a/media_common/linux/common/os/media_skuwa_specific.h
+++ b/media_common/linux/common/os/media_skuwa_specific.h
@@ -40,5 +40,6 @@ using MEDIA_ENGINE_INFO = MEDIA_GT_SYSTEM_INFO;
using GMM_SKU_FEATURE_TABLE = SHADOW_MEDIA_FEATURE_TABLE;
using GMM_WA_TABLE = SHADOW_MEDIA_WA_TABLE;
using GMM_GT_SYSTEM_INFO = MEDIA_GT_SYSTEM_INFO;
+using GMM_ADAPTER_BDF = MEDIA_ADAPTER_BDF;
#endif // __MEDIA_SKUWA_H__
diff --git a/media_common/linux/common/os/mos_os_specific.h b/media_common/linux/common/os/mos_os_specific.h
index 3c33196447..ce881c0912 100644
--- a/media_common/linux/common/os/mos_os_specific.h
+++ b/media_common/linux/common/os/mos_os_specific.h
@@ -582,7 +582,6 @@ struct _MOS_OS_CONTEXT
void *pLibdrmHandle;
GMM_CLIENT_CONTEXT *pGmmClientContext; //UMD specific ClientContext object in GMM
- GmmExportEntries GmmFuncs;
AuxTableMgr *m_auxTableMgr;
// GPU Status Buffer
diff --git a/media_driver/linux/common/ddi/media_libva.cpp b/media_driver/linux/common/ddi/media_libva.cpp
index 36f5f1889d..6202af5f2d 100755
--- a/media_driver/linux/common/ddi/media_libva.cpp
+++ b/media_driver/linux/common/ddi/media_libva.cpp
@@ -1857,6 +1857,9 @@ VAStatus DdiMedia_InitMediaContext (
GMM_GT_SYSTEM_INFO gmmGtInfo;
memset(&gmmGtInfo, 0, sizeof(gmmGtInfo));
+ GMM_ADAPTER_BDF gmmAdapterBDF;
+ memset(&gmmAdapterBDF, 0, sizeof(gmmAdapterBDF));
+
eStatus = HWInfo_GetGmmInfo(mediaCtx->fd, &gmmSkuTable, &gmmWaTable, &gmmGtInfo);
if (MOS_STATUS_SUCCESS != eStatus)
{
@@ -1881,32 +1884,50 @@ VAStatus DdiMedia_InitMediaContext (
return VA_STATUS_ERROR_OPERATION_FAILED;
}
- GMM_STATUS gmmStatus = OpenGmm(&mediaCtx->GmmFuncs);
- if (gmmStatus != GMM_SUCCESS)
+ // fill in the mos context struct as input to initialize m_osContext
+ MOS_CONTEXT mosCtx = {};
+ mosCtx.bufmgr = mediaCtx->pDrmBufMgr;
+ mosCtx.fd = mediaCtx->fd;
+ mosCtx.iDeviceId = mediaCtx->iDeviceId;
+ mosCtx.SkuTable = mediaCtx->SkuTable;
+ mosCtx.WaTable = mediaCtx->WaTable;
+ mosCtx.gtSystemInfo = *mediaCtx->pGtSystemInfo;
+ mosCtx.platform = mediaCtx->platform;
+ mosCtx.ppMediaMemDecompState = &mediaCtx->pMediaMemDecompState;
+ mosCtx.pfnMemoryDecompress = mediaCtx->pfnMemoryDecompress;
+ mosCtx.pfnMediaMemoryCopy = mediaCtx->pfnMediaMemoryCopy;
+ mosCtx.pfnMediaMemoryCopy2D = mediaCtx->pfnMediaMemoryCopy2D;
+ mosCtx.ppMediaCopyState = &mediaCtx->pMediaCopyState;
+
+ eStatus = MosInterface::GetAdapterBDF(&mosCtx, &gmmAdapterBDF);
+ if (MOS_STATUS_SUCCESS != eStatus)
{
- DDI_ASSERTMESSAGE("gmm init failed.");
+ DDI_ASSERTMESSAGE("Fatal error - unsuccesfull Gmm Adapter BDF initialization");
FreeForMediaContext(mediaCtx);
return VA_STATUS_ERROR_OPERATION_FAILED;
}
- // init GMM context
- gmmStatus = mediaCtx->GmmFuncs.pfnCreateSingletonContext(mediaCtx->platform,
- &gmmSkuTable,
- &gmmWaTable,
- &gmmGtInfo);
-
- if (gmmStatus != GMM_SUCCESS)
+ // Initialize Gmm context
+ GMM_INIT_IN_ARGS gmmInitAgrs = {};
+ GMM_INIT_OUT_ARGS gmmOutArgs = {};
+ gmmInitAgrs.Platform = mediaCtx->platform;
+ gmmInitAgrs.pSkuTable = &gmmSkuTable;
+ gmmInitAgrs.pWaTable = &gmmWaTable;
+ gmmInitAgrs.pGtSysInfo = &gmmGtInfo;
+ gmmInitAgrs.FileDescriptor = gmmAdapterBDF.Data;
+ gmmInitAgrs.ClientType = (GMM_CLIENT)GMM_LIBVA_LINUX;
+
+ GMM_STATUS status = InitializeGmm(&gmmInitAgrs, &gmmOutArgs);
+ if (status != GMM_SUCCESS)
{
- DDI_ASSERTMESSAGE("gmm init failed.");
+ DDI_ASSERTMESSAGE("InitializeGmm fail.");
FreeForMediaContext(mediaCtx);
return VA_STATUS_ERROR_OPERATION_FAILED;
}
-
- // Create GMM Client Context
- mediaCtx->pGmmClientContext = mediaCtx->GmmFuncs.pfnCreateClientContext((GMM_CLIENT)GMM_LIBVA_LINUX);
+ mediaCtx->pGmmClientContext = gmmOutArgs.pGmmClientContext;
// Create GMM page table manager
- mediaCtx->m_auxTableMgr = AuxTableMgr::CreateAuxTableMgr(mediaCtx->pDrmBufMgr, &mediaCtx->SkuTable);
+ mediaCtx->m_auxTableMgr = AuxTableMgr::CreateAuxTableMgr(mediaCtx->pDrmBufMgr, &mediaCtx->SkuTable, mediaCtx->pGmmClientContext);
MOS_USER_FEATURE_VALUE_DATA UserFeatureData;
MOS_ZeroMemory(&UserFeatureData, sizeof(UserFeatureData));
@@ -1929,19 +1950,6 @@ VAStatus DdiMedia_InitMediaContext (
return VA_STATUS_ERROR_OPERATION_FAILED;
}
- // fill in the mos context struct as input to initialize m_osContext
- mosCtx.bufmgr = mediaCtx->pDrmBufMgr;
- mosCtx.fd = mediaCtx->fd;
- mosCtx.iDeviceId = mediaCtx->iDeviceId;
- mosCtx.SkuTable = mediaCtx->SkuTable;
- mosCtx.WaTable = mediaCtx->WaTable;
- mosCtx.gtSystemInfo = *mediaCtx->pGtSystemInfo;
- mosCtx.platform = mediaCtx->platform;
- mosCtx.ppMediaMemDecompState = &mediaCtx->pMediaMemDecompState;
- mosCtx.pfnMemoryDecompress = mediaCtx->pfnMemoryDecompress;
- mosCtx.pfnMediaMemoryCopy = mediaCtx->pfnMediaMemoryCopy;
- mosCtx.pfnMediaMemoryCopy2D = mediaCtx->pfnMediaMemoryCopy2D;
- mosCtx.ppMediaCopyState = &mediaCtx->pMediaCopyState;
mosCtx.m_auxTableMgr = mediaCtx->m_auxTableMgr;
mosCtx.pGmmClientContext = mediaCtx->pGmmClientContext;
@@ -2262,8 +2270,10 @@ VAStatus DdiMedia_Terminate (
// Destroy memory allocated to store Media System Info
MOS_FreeMemory(mediaCtx->pGtSystemInfo);
// Free GMM memory.
- mediaCtx->GmmFuncs.pfnDeleteClientContext(mediaCtx->pGmmClientContext);
- mediaCtx->GmmFuncs.pfnDestroySingletonContext();
+ GMM_INIT_OUT_ARGS gmmOutArgs = {};
+ gmmOutArgs.pGmmClientContext = mediaCtx->pGmmClientContext;
+ GmmAdapterDestroy(&gmmOutArgs);
+ mediaCtx->pGmmClientContext = nullptr;
MosUtilities::MosUtilitiesClose(nullptr);
}
diff --git a/media_driver/linux/common/ddi/media_libva_common.h b/media_driver/linux/common/ddi/media_libva_common.h
index e967d49f5a..74ce820346 100644
--- a/media_driver/linux/common/ddi/media_libva_common.h
+++ b/media_driver/linux/common/ddi/media_libva_common.h
@@ -536,8 +536,6 @@ struct DDI_MEDIA_CONTEXT
GMM_CLIENT_CONTEXT *pGmmClientContext;
- GmmExportEntries GmmFuncs;
-
// Aux Table Manager
AuxTableMgr *m_auxTableMgr;
diff --git a/media_driver/linux/common/os/linux_shadow_skuwa.h b/media_driver/linux/common/os/linux_shadow_skuwa.h
index 529fa05a1b..30321c9563 100644
--- a/media_driver/linux/common/os/linux_shadow_skuwa.h
+++ b/media_driver/linux/common/os/linux_shadow_skuwa.h
@@ -33,5 +33,6 @@
using SHADOW_MEDIA_FEATURE_TABLE = SKU_FEATURE_TABLE;
using SHADOW_MEDIA_WA_TABLE = WA_TABLE;
using MEDIA_GT_SYSTEM_INFO = GT_SYSTEM_INFO;
+using MEDIA_ADAPTER_BDF = ADAPTER_BDF;
#endif //__SKU_WA_H__
diff --git a/media_driver/linux/common/os/mos_auxtable_mgr.cpp b/media_driver/linux/common/os/mos_auxtable_mgr.cpp
index fdab2b4c07..292dde020a 100644
--- a/media_driver/linux/common/os/mos_auxtable_mgr.cpp
+++ b/media_driver/linux/common/os/mos_auxtable_mgr.cpp
@@ -118,19 +118,13 @@ static void WaitFromCpuCb(void *bo)
}
}
-AuxTableMgr::AuxTableMgr(MOS_BUFMGR *bufMgr)
+AuxTableMgr::AuxTableMgr(MOS_BUFMGR *bufMgr, GMM_CLIENT_CONTEXT *gmmClientContext)
{
if (bufMgr)
{
GMM_DEVICE_CALLBACKS_INT deviceCb = {0};
- GmmExportEntries GmmFuncs;
- GMM_STATUS gmmStatus = OpenGmm(&GmmFuncs);
- if(gmmStatus != GMM_SUCCESS)
- {
- MOS_OS_ASSERTMESSAGE("gmm init failed.");
- }
- m_gmmClientContext = GmmFuncs.pfnCreateClientContext((GMM_CLIENT)GMM_LIBVA_LINUX);
+ m_gmmClientContext = gmmClientContext;
if (m_gmmClientContext == nullptr)
{
MOS_OS_ASSERTMESSAGE(" nullptr returned by GmmCreateClientContext");
@@ -160,22 +154,15 @@ AuxTableMgr::~AuxTableMgr()
}
if (m_gmmClientContext != nullptr)
{
- GmmExportEntries GmmFuncs;
- GMM_STATUS gmmStatus = OpenGmm(&GmmFuncs);
- if(gmmStatus != GMM_SUCCESS)
- {
- MOS_OS_ASSERTMESSAGE("gmm init failed.");
- }
- GmmFuncs.pfnDeleteClientContext((GMM_CLIENT_CONTEXT *)m_gmmClientContext);
m_gmmClientContext = nullptr;
}
}
-AuxTableMgr * AuxTableMgr::CreateAuxTableMgr(MOS_BUFMGR *bufMgr, MEDIA_FEATURE_TABLE *sku)
+AuxTableMgr * AuxTableMgr::CreateAuxTableMgr(MOS_BUFMGR *bufMgr, MEDIA_FEATURE_TABLE *sku, GMM_CLIENT_CONTEXT *gmmClientContext)
{
if (MEDIA_IS_SKU(sku, FtrE2ECompression) && !MEDIA_IS_SKU(sku, FtrFlatPhysCCS))
{
- AuxTableMgr *auxTableMgr = MOS_New(AuxTableMgr, bufMgr);
+ AuxTableMgr *auxTableMgr = MOS_New(AuxTableMgr, bufMgr, gmmClientContext);
if (auxTableMgr == nullptr)
{
MOS_OS_ASSERTMESSAGE(" nullptr returned by creating AuxTableMgr");
diff --git a/media_driver/linux/common/os/mos_auxtable_mgr.h b/media_driver/linux/common/os/mos_auxtable_mgr.h
index 8fbf59da91..421d2293d6 100644
--- a/media_driver/linux/common/os/mos_auxtable_mgr.h
+++ b/media_driver/linux/common/os/mos_auxtable_mgr.h
@@ -43,7 +43,7 @@ class AuxTableMgr
//!
//! \brief Constructor
//!
- AuxTableMgr(MOS_BUFMGR *bufMgr);
+ AuxTableMgr(MOS_BUFMGR *bufMgr, GMM_CLIENT_CONTEXT *gmmClientContext);
//!
//! \brief Destructor
@@ -62,7 +62,7 @@ class AuxTableMgr
//! \return Object pointer to AuxTableMgr
//! Return object pointer if success or return nullptr if failed
//!
- static AuxTableMgr * CreateAuxTableMgr(MOS_BUFMGR *bufMgr, MEDIA_FEATURE_TABLE *sku);
+ static AuxTableMgr * CreateAuxTableMgr(MOS_BUFMGR *bufMgr, MEDIA_FEATURE_TABLE *sku, GMM_CLIENT_CONTEXT *gmmClientContext);
//!
//! \brief Map resource to aux table
diff --git a/media_driver/linux/common/os/mos_interface.cpp b/media_driver/linux/common/os/mos_interface.cpp
index 3b841bd586..caf4916ba9 100644
--- a/media_driver/linux/common/os/mos_interface.cpp
+++ b/media_driver/linux/common/os/mos_interface.cpp
@@ -367,17 +367,9 @@ MOS_STATUS MosInterface::InitStreamParameters(
context->m_osDeviceContext = streamState->osDeviceContext;
context->bSimIsActive = streamState->simIsActive;
- if (GMM_SUCCESS != OpenGmm(&context->GmmFuncs))
- {
- MOS_FreeMemAndSetNull(context);
-
- MOS_OS_ASSERTMESSAGE("Unable to open gmm");
- return MOS_STATUS_INVALID_PARAMETER;
- }
-
streamState->perStreamParameters = (OS_PER_STREAM_PARAMETERS)context;
- context->pGmmClientContext = context->GmmFuncs.pfnCreateClientContext((GMM_CLIENT)GMM_LIBVA_LINUX);
+ context->pGmmClientContext = streamState->osDeviceContext->GetGmmClientContext();;
context->bufmgr = bufMgr;
context->m_gpuContextMgr = osDeviceContext->GetGpuContextMgr();
@@ -608,6 +600,27 @@ MOS_STATUS MosInterface::CreateGpuContext(
return MOS_STATUS_SUCCESS;
}
+MOS_STATUS MosInterface::GetAdapterBDF(PMOS_CONTEXT mosCtx, ADAPTER_BDF *adapterBDF)
+{
+ MOS_OS_FUNCTION_ENTER;
+
+ drmDevicePtr device;
+
+ MOS_OS_CHK_NULL_RETURN(mosCtx);
+ if (drmGetDevice(mosCtx->fd, &device) == 0)
+ {
+ adapterBDF->Bus = device->businfo.pci->bus;
+ adapterBDF->Device = device->businfo.pci->dev;
+ adapterBDF->Function = device->businfo.pci->func;
+ }
+ else
+ {
+ adapterBDF->Data = 0;
+ }
+
+ return MOS_STATUS_SUCCESS;
+}
+
MOS_STATUS MosInterface::DestroyGpuContext(
MOS_STREAM_HANDLE streamState,
GPU_CONTEXT_HANDLE gpuContext)
diff --git a/media_driver/linux/common/os/mos_os_specific.c b/media_driver/linux/common/os/mos_os_specific.c
index 7b7f57747b..e433c6fe61 100644
--- a/media_driver/linux/common/os/mos_os_specific.c
+++ b/media_driver/linux/common/os/mos_os_specific.c
@@ -1190,8 +1190,6 @@ void Linux_Destroy(
mos_gem_context_destroy(pOsContext->intel_context);
}
- pOsContext->GmmFuncs.pfnDeleteClientContext(pOsContext->pGmmClientContext);
-
MOS_FreeMemAndSetNull(pOsContext);
}
@@ -1931,7 +1929,6 @@ MOS_STATUS Mos_DestroyInterface(PMOS_INTERFACE pOsInterface)
mos_gem_context_destroy(perStreamParameters->intel_context);
perStreamParameters->intel_context = nullptr;
}
- perStreamParameters->GmmFuncs.pfnDeleteClientContext(perStreamParameters->pGmmClientContext);
MOS_FreeMemAndSetNull(perStreamParameters);
streamState->perStreamParameters = nullptr;
}
@@ -7476,13 +7473,6 @@ MOS_STATUS Mos_Specific_InitInterface(
// Create Linux OS Context
pOsContext = (PMOS_OS_CONTEXT)MOS_AllocAndZeroMemory(sizeof(MOS_OS_CONTEXT));
MOS_OS_CHK_NULL_RETURN(pOsContext);
-
- if (GMM_SUCCESS != OpenGmm(&pOsContext->GmmFuncs))
- {
- MOS_OS_ASSERTMESSAGE("Unable to open gmm");
- eStatus = MOS_STATUS_INVALID_PARAMETER;
- goto finish;
- }
}
if (pOsInterface->modulizedMosEnabled && !Mos_Solo_IsEnabled(nullptr))
@@ -7513,12 +7503,12 @@ MOS_STATUS Mos_Specific_InitInterface(
{
OsContextSpecific *pOsContextSpecific = static_cast<OsContextSpecific *>(pOsInterface->osContextPtr);
pOsContext->intel_context = pOsContextSpecific->GetDrmContext();
- pOsContext->pGmmClientContext = pOsContext->GmmFuncs.pfnCreateClientContext((GMM_CLIENT)GMM_LIBVA_LINUX);
+ pOsContext->pGmmClientContext = pOsDriverContext->pGmmClientContext;
}
}
else
{
- pOsContext->pGmmClientContext = pOsContext->GmmFuncs.pfnCreateClientContext((GMM_CLIENT)GMM_LIBVA_LINUX);
+ pOsContext->pGmmClientContext = pOsDriverContext->pGmmClientContext;
}
MOS_ZeroMemory(&UserFeatureData, sizeof(UserFeatureData));
diff --git a/media_driver/media_top_cmake.cmake b/media_driver/media_top_cmake.cmake
index d0d8cb5244..426728e16d 100755
--- a/media_driver/media_top_cmake.cmake
+++ b/media_driver/media_top_cmake.cmake
@@ -142,7 +142,7 @@ if (NOT DEFINED INCLUDED_LIBS OR "${INCLUDED_LIBS}" STREQUAL "")
endif()
target_compile_options( ${LIB_NAME} PUBLIC ${LIBGMM_CFLAGS_OTHER})
- target_link_libraries ( ${LIB_NAME} ${LIBGMM_LIBRARIES})
+ target_link_libraries ( ${LIB_NAME} ${LIBGMM_LIBRARIES} drm)
include(${MEDIA_EXT_CMAKE}/ext/media_feature_include_ext.cmake OPTIONAL)
diff --git a/media_softlet/agnostic/common/os/mos_interface.h b/media_softlet/agnostic/common/os/mos_interface.h
index 42e4acc6f6..6ae60d8e49 100644
--- a/media_softlet/agnostic/common/os/mos_interface.h
+++ b/media_softlet/agnostic/common/os/mos_interface.h
@@ -1815,6 +1815,22 @@ class MosInterface
COMMAND_BUFFER_HANDLE cmdBuf,
MOS_SUBMISSION_TYPE type);
+ //!
+ //! \brief Get Adapter BDF
+ //! \details [System info Interface] Get Adapter BDF
+ //! \details Caller: DDI & HAL
+ //! \details This func is called to differentiate the behavior according to Adapter BDF.
+ //!
+ //! \param [in] mosCtx
+ //! Pointer of Mos context
+ //! \param [out] adapterBDF
+ //! Adapter BDF info
+ //!
+ //! \return MOS_STATUS
+ //! MOS_STATUS_SUCCESS if success, else fail reason
+ //!
+ static MOS_STATUS GetAdapterBDF(PMOS_CONTEXT mosCtx, ADAPTER_BDF *adapterBDF);
+
#if _DEBUG || _RELEASE_INTERNAL
//!
//! \brief Get engine count
diff --git a/media_softlet/linux/common/os/mos_context_specific_next.cpp b/media_softlet/linux/common/os/mos_context_specific_next.cpp
index bd331fba31..6842cc6872 100644
--- a/media_softlet/linux/common/os/mos_context_specific_next.cpp
+++ b/media_softlet/linux/common/os/mos_context_specific_next.cpp
@@ -30,6 +30,7 @@
#include <unistd.h>
#include <dlfcn.h>
#include "hwinfo_linux.h"
+#include "mos_interface.h"
#include <stdlib.h>
#include <sys/ipc.h>
@@ -144,9 +145,10 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
m_platformInfo.eRenderCoreFamily,
(m_platformInfo.usRevId << 16) | m_platformInfo.usDeviceID);
- GMM_SKU_FEATURE_TABLE gmmSkuTable = {};
- GMM_WA_TABLE gmmWaTable = {};
- GMM_GT_SYSTEM_INFO gmmGtInfo = {};
+ GMM_SKU_FEATURE_TABLE gmmSkuTable = {};
+ GMM_WA_TABLE gmmWaTable = {};
+ GMM_GT_SYSTEM_INFO gmmGtInfo = {};
+ GMM_ADAPTER_BDF gmmAdapterBDF = {};
eStatus = HWInfo_GetGmmInfo(m_fd, &gmmSkuTable, &gmmWaTable, &gmmGtInfo);
if (MOS_STATUS_SUCCESS != eStatus)
{
@@ -154,28 +156,32 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
return eStatus;
}
- GmmExportEntries gmmFuncs = {};
- GMM_STATUS gmmStatus = OpenGmm(&gmmFuncs);
- if (gmmStatus != GMM_SUCCESS)
+ eStatus = MosInterface::GetAdapterBDF(osDriverContext, &gmmAdapterBDF);
+ if (MOS_STATUS_SUCCESS != eStatus)
{
- MOS_OS_ASSERTMESSAGE("Fatal error - gmm init failed.");
- return MOS_STATUS_INVALID_PARAMETER;
+ MOS_OS_ASSERTMESSAGE("Fatal error - unsuccesfull Gmm Adapter BDF initialization");
+ return eStatus;
}
- // init GMM context
- gmmStatus = gmmFuncs.pfnCreateSingletonContext(m_platformInfo,
- &gmmSkuTable,
- &gmmWaTable,
- &gmmGtInfo);
-
- if (gmmStatus != GMM_SUCCESS)
+ // Initialize Gmm context
+ GMM_INIT_IN_ARGS gmmInitAgrs = {};
+ GMM_INIT_OUT_ARGS gmmOutArgs = {};
+ gmmInitAgrs.Platform = m_platformInfo;
+ gmmInitAgrs.pSkuTable = &gmmSkuTable;
+ gmmInitAgrs.pWaTable = &gmmWaTable;
+ gmmInitAgrs.pGtSysInfo = &gmmGtInfo;
+ gmmInitAgrs.FileDescriptor = gmmAdapterBDF.Data;
+ gmmInitAgrs.ClientType = (GMM_CLIENT)GMM_LIBVA_LINUX;
+
+ GMM_STATUS status = InitializeGmm(&gmmInitAgrs, &gmmOutArgs);
+ if (status != GMM_SUCCESS)
{
- MOS_OS_ASSERTMESSAGE("Fatal error - gmm CreateSingletonContext failed.");
+ MOS_OS_ASSERTMESSAGE("Fatal error - InitializeGmm fail.");
return MOS_STATUS_INVALID_PARAMETER;
}
- m_gmmClientContext = gmmFuncs.pfnCreateClientContext((GMM_CLIENT)GMM_LIBVA_LINUX);
+ m_gmmClientContext = gmmOutArgs.pGmmClientContext;
- m_auxTableMgr = AuxTableMgr::CreateAuxTableMgr(m_bufmgr, &m_skuTable);
+ m_auxTableMgr = AuxTableMgr::CreateAuxTableMgr(m_bufmgr, &m_skuTable, m_gmmClientContext);
MOS_ZeroMemory(&UserFeatureData, sizeof(UserFeatureData));
#if (_DEBUG || _RELEASE_INTERNAL)
@@ -266,18 +272,11 @@ void OsContextSpecificNext::Destroy()
mos_bufmgr_destroy(m_bufmgr);
- GmmExportEntries GmmFuncs;
- GMM_STATUS gmmStatus = OpenGmm(&GmmFuncs);
- if (gmmStatus == GMM_SUCCESS)
- {
- GmmFuncs.pfnDeleteClientContext((GMM_CLIENT_CONTEXT *)m_gmmClientContext);
- m_gmmClientContext = nullptr;
- GmmFuncs.pfnDestroySingletonContext();
- }
- else
- {
- MOS_OS_ASSERTMESSAGE("gmm init failed.");
- }
+ // Delete Gmm context
+ GMM_INIT_OUT_ARGS gmmOutArgs = {};
+ gmmOutArgs.pGmmClientContext = m_gmmClientContext;
+ GmmAdapterDestroy(&gmmOutArgs);
+ m_gmmClientContext = nullptr;
SetOsContextValid(false);
}

View File

@ -1,3 +1,3 @@
# Locally computed
sha256 9b5ef7716c5d8199229512020c18dce5cabee25fbf3f1912179502bedb655919 intel-media-21.4.3.tar.gz
sha256 6c1cd5c4c1b7bd1c7785ed4d553b76b17dd7e673619a39e0c3070246aa671024 intel-media-22.1.0.tar.gz
sha256 74979d5aaee78b8da82e3aafd415a216b6131dfff6d95d6930927c8a4e3bded3 LICENSE.md

View File

@ -6,7 +6,7 @@
# based on https://software.intel.com/en-us/articles/build-and-debug-open-source-media-stack
INTEL_MEDIADRIVER_VERSION = 21.4.3
INTEL_MEDIADRIVER_VERSION = 22.1.0
INTEL_MEDIADRIVER_SITE = http://github.com/intel/media-driver/archive
INTEL_MEDIADRIVER_SOURCE= intel-media-$(INTEL_MEDIADRIVER_VERSION).tar.gz
INTEL_MEDIADRIVER_LICENSE = MIT, BSD-3-Clause