mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-25 21:42:53 +08:00
fix: Use virtual map calls to gmm only for compressed formats
Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
0cf975605b
commit
4e91c4b08f
@@ -7,15 +7,29 @@
|
||||
|
||||
#include "shared/source/gmm_helper/client_context/gmm_client_context.h"
|
||||
#include "shared/source/gmm_helper/client_context/map_gpu_va_gmm.h"
|
||||
#include "shared/source/gmm_helper/resource_info.h"
|
||||
#include "shared/source/os_interface/windows/gdi_interface.h"
|
||||
|
||||
namespace NEO {
|
||||
uint64_t GmmClientContext::mapGpuVirtualAddress(MapGpuVirtualAddressGmm *pMapGpuVa) {
|
||||
GMM_MAPGPUVIRTUALADDRESS gmmMapAddress = {pMapGpuVa->mapGpuVirtualAddressParams, 1, pMapGpuVa->resourceInfoHandle, pMapGpuVa->outVirtualAddress};
|
||||
return clientContext->MapGpuVirtualAddress(&gmmMapAddress);
|
||||
auto gmmResourceFlags = pMapGpuVa->resourceInfoHandle->getResourceFlags()->Info;
|
||||
if (gmmResourceFlags.MediaCompressed || gmmResourceFlags.RenderCompressed) {
|
||||
auto gmmResourceInfo = pMapGpuVa->resourceInfoHandle->peekGmmResourceInfo();
|
||||
GMM_MAPGPUVIRTUALADDRESS gmmMapAddress = {pMapGpuVa->mapGpuVirtualAddressParams, 1, &gmmResourceInfo, pMapGpuVa->outVirtualAddress};
|
||||
return clientContext->MapGpuVirtualAddress(&gmmMapAddress);
|
||||
} else {
|
||||
return pMapGpuVa->gdi->mapGpuVirtualAddress(pMapGpuVa->mapGpuVirtualAddressParams);
|
||||
}
|
||||
}
|
||||
uint64_t GmmClientContext::freeGpuVirtualAddress(FreeGpuVirtualAddressGmm *pFreeGpuVa) {
|
||||
GMM_FREEGPUVIRTUALADDRESS gmmFreeAddress = {pFreeGpuVa->hAdapter, pFreeGpuVa->baseAddress, pFreeGpuVa->size, 1, pFreeGpuVa->resourceInfoHandle};
|
||||
return clientContext->FreeGpuVirtualAddress(&gmmFreeAddress);
|
||||
auto gmmResourceFlags = pFreeGpuVa->resourceInfoHandle->getResourceFlags()->Info;
|
||||
if (gmmResourceFlags.MediaCompressed || gmmResourceFlags.RenderCompressed) {
|
||||
auto gmmResourceInfo = pFreeGpuVa->resourceInfoHandle->peekGmmResourceInfo();
|
||||
GMM_FREEGPUVIRTUALADDRESS gmmFreeAddress = {pFreeGpuVa->hAdapter, pFreeGpuVa->baseAddress, pFreeGpuVa->size, 1, &gmmResourceInfo};
|
||||
return clientContext->FreeGpuVirtualAddress(&gmmFreeAddress);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -10,23 +10,24 @@
|
||||
|
||||
namespace NEO {
|
||||
class Gdi;
|
||||
class GmmResourceInfo;
|
||||
|
||||
class MapGpuVirtualAddressGmm {
|
||||
public:
|
||||
MapGpuVirtualAddressGmm(D3DDDI_MAPGPUVIRTUALADDRESS *mapGpuVirtualAddressParams, GMM_RESOURCE_INFO **resourceInfoHandle, D3DGPU_VIRTUAL_ADDRESS *outVirtualAddress, Gdi *gdi) : mapGpuVirtualAddressParams(mapGpuVirtualAddressParams), resourceInfoHandle(resourceInfoHandle), outVirtualAddress(outVirtualAddress), gdi(gdi) {}
|
||||
MapGpuVirtualAddressGmm(D3DDDI_MAPGPUVIRTUALADDRESS *mapGpuVirtualAddressParams, GmmResourceInfo *resourceInfoHandle, D3DGPU_VIRTUAL_ADDRESS *outVirtualAddress, Gdi *gdi) : mapGpuVirtualAddressParams(mapGpuVirtualAddressParams), resourceInfoHandle(resourceInfoHandle), outVirtualAddress(outVirtualAddress), gdi(gdi) {}
|
||||
D3DDDI_MAPGPUVIRTUALADDRESS *mapGpuVirtualAddressParams;
|
||||
GMM_RESOURCE_INFO **resourceInfoHandle;
|
||||
GmmResourceInfo *resourceInfoHandle;
|
||||
D3DGPU_VIRTUAL_ADDRESS *outVirtualAddress;
|
||||
Gdi *gdi;
|
||||
};
|
||||
|
||||
class FreeGpuVirtualAddressGmm {
|
||||
public:
|
||||
FreeGpuVirtualAddressGmm(D3DKMT_HANDLE hAdapter, D3DGPU_VIRTUAL_ADDRESS baseAddress, D3DGPU_SIZE_T size, GMM_RESOURCE_INFO **resourceInfoHandle, Gdi *gdi) : hAdapter(hAdapter), baseAddress(baseAddress), size(size), resourceInfoHandle(resourceInfoHandle), gdi(gdi) {}
|
||||
FreeGpuVirtualAddressGmm(D3DKMT_HANDLE hAdapter, D3DGPU_VIRTUAL_ADDRESS baseAddress, D3DGPU_SIZE_T size, GmmResourceInfo *resourceInfoHandle, Gdi *gdi) : hAdapter(hAdapter), baseAddress(baseAddress), size(size), resourceInfoHandle(resourceInfoHandle), gdi(gdi) {}
|
||||
D3DKMT_HANDLE hAdapter;
|
||||
D3DGPU_VIRTUAL_ADDRESS baseAddress;
|
||||
D3DGPU_SIZE_T size;
|
||||
GMM_RESOURCE_INFO **resourceInfoHandle;
|
||||
GmmResourceInfo *resourceInfoHandle;
|
||||
Gdi *gdi;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user