mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
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:
committed by
Compute-Runtime-Automation
parent
ad05878165
commit
145f03c294
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user