refactor: encapsulate gmm page table manager handle

wrap destruction logic within unique ptr

set csr handle when creating page table manager

Related-To: NEO-11080
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2025-10-24 09:53:03 +00:00
committed by Compute-Runtime-Automation
parent ad05878165
commit 145f03c294
11 changed files with 43 additions and 53 deletions

View File

@@ -1,20 +1,23 @@
/*
* Copyright (C) 2019-2021 Intel Corporation
* Copyright (C) 2019-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/gmm_helper/client_context/gmm_client_context.h"
#include "shared/source/gmm_helper/gmm_helper.h"
#include "shared/source/gmm_helper/page_table_mngr.h"
namespace NEO {
GmmPageTableMngr::GmmPageTableMngr(GmmClientContext *gmmClientContext, unsigned int translationTableFlags, GMM_TRANSLATIONTABLE_CALLBACKS *translationTableCb) : clientContext(gmmClientContext->getHandle()) {
pageTableManager = clientContext->CreatePageTblMgrObject(translationTableCb, translationTableFlags);
}
GmmPageTableMngr::GmmPageTableMngr(GmmClientContext *gmmClientContext, unsigned int translationTableFlags, GMM_TRANSLATIONTABLE_CALLBACKS *translationTableCb, void *aubCsrHandle) {
auto clientContext = gmmClientContext->getHandle();
auto deleter = [=](GMM_PAGETABLE_MGR *pageTableManager) {
clientContext->DestroyPageTblMgrObject(pageTableManager);
};
void GmmPageTableMngr::setCsrHandle(void *csrHandle) {
pageTableManager->GmmSetCsrHandle(csrHandle);
pageTableManager = {clientContext->CreatePageTblMgrObject(translationTableCb, translationTableFlags), deleter};
if (aubCsrHandle) {
pageTableManager->GmmSetCsrHandle(aubCsrHandle);
}
}
} // namespace NEO

View File

@@ -177,10 +177,9 @@ GmmPageTableMngr *WddmCommandStreamReceiver<GfxFamily>::createPageTableManager()
ttCallbacks.pfWriteL3Adr = writeL3AddressFuncFactory[hwInfo->platform.eRenderCoreFamily];
GmmPageTableMngr *gmmPageTableMngr = GmmPageTableMngr::create(rootDeviceEnvironment->getGmmClientContext(), TT_TYPE::AUXTT, &ttCallbacks);
if (this->wddm->needsNotifyAubCaptureCallback()) {
gmmPageTableMngr->setCsrHandle(this);
}
void *aubCsrHandle = this->wddm->needsNotifyAubCaptureCallback() ? this : nullptr;
GmmPageTableMngr *gmmPageTableMngr = GmmPageTableMngr::create(rootDeviceEnvironment->getGmmClientContext(), TT_TYPE::AUXTT, &ttCallbacks, aubCsrHandle);
this->pageTableManager.reset(gmmPageTableMngr);
return gmmPageTableMngr;
}