mirror of
https://github.com/intel/compute-runtime.git
synced 2025-11-15 10:14:56 +08:00
feature: specify cache level when reserving a region
Related-To: NEO-12837 Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
37e81d2a11
commit
4467b1e8de
@@ -16,7 +16,7 @@
|
||||
namespace NEO {
|
||||
|
||||
CacheRegion ClosCacheReservation::reserveCache(CacheLevel cacheLevel, uint16_t numWays) {
|
||||
auto closIndex = allocEntry();
|
||||
auto closIndex = allocEntry(cacheLevel);
|
||||
if (closIndex == CacheRegion::none) {
|
||||
return CacheRegion::none;
|
||||
}
|
||||
@@ -36,8 +36,8 @@ CacheRegion ClosCacheReservation::freeCache(CacheLevel cacheLevel, CacheRegion c
|
||||
return freeEntry(closIndex);
|
||||
}
|
||||
|
||||
CacheRegion ClosCacheReservation::allocEntry() {
|
||||
return ioctlHelper.closAlloc();
|
||||
CacheRegion ClosCacheReservation::allocEntry(CacheLevel cacheLevel) {
|
||||
return ioctlHelper.closAlloc(cacheLevel);
|
||||
}
|
||||
|
||||
CacheRegion ClosCacheReservation::freeEntry(CacheRegion closIndex) {
|
||||
|
||||
@@ -24,7 +24,7 @@ class ClosCacheReservation {
|
||||
CacheRegion freeCache(CacheLevel cacheLevel, CacheRegion closIndex);
|
||||
|
||||
protected:
|
||||
CacheRegion allocEntry();
|
||||
CacheRegion allocEntry(CacheLevel cacheLevel);
|
||||
CacheRegion freeEntry(CacheRegion closIndex);
|
||||
uint16_t allocCacheWay(CacheRegion closIndex, CacheLevel cacheLevel, uint16_t numWays);
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ class IoctlHelper {
|
||||
virtual bool isVmBindAvailable() = 0;
|
||||
virtual int createGemExt(const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint64_t patIndex, std::optional<uint32_t> vmId, int32_t pairHandle, bool isChunked, uint32_t numOfChunks, std::optional<uint32_t> memPolicyMode, std::optional<std::vector<unsigned long>> memPolicyNodemask, std::optional<bool> isCoherent) = 0;
|
||||
virtual uint32_t createGem(uint64_t size, uint32_t memoryBanks, std::optional<bool> isCoherent) = 0;
|
||||
virtual CacheRegion closAlloc() = 0;
|
||||
virtual CacheRegion closAlloc(CacheLevel cacheLevel) = 0;
|
||||
virtual uint16_t closAllocWays(CacheRegion closIndex, uint16_t cacheLevel, uint16_t numWays) = 0;
|
||||
virtual CacheRegion closFree(CacheRegion closIndex) = 0;
|
||||
virtual int waitUserFence(uint32_t ctxId, uint64_t address,
|
||||
@@ -286,7 +286,7 @@ class IoctlHelperUpstream : public IoctlHelperI915 {
|
||||
bool isChunkingAvailable() override;
|
||||
bool isVmBindAvailable() override;
|
||||
int createGemExt(const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint64_t patIndex, std::optional<uint32_t> vmId, int32_t pairHandle, bool isChunked, uint32_t numOfChunks, std::optional<uint32_t> memPolicyMode, std::optional<std::vector<unsigned long>> memPolicyNodemask, std::optional<bool> isCoherent) override;
|
||||
CacheRegion closAlloc() override;
|
||||
CacheRegion closAlloc(CacheLevel cacheLevel) override;
|
||||
uint16_t closAllocWays(CacheRegion closIndex, uint16_t cacheLevel, uint16_t numWays) override;
|
||||
CacheRegion closFree(CacheRegion closIndex) override;
|
||||
int waitUserFence(uint32_t ctxId, uint64_t address,
|
||||
@@ -363,7 +363,7 @@ class IoctlHelperPrelim20 : public IoctlHelperI915 {
|
||||
bool isChunkingAvailable() override;
|
||||
bool isVmBindAvailable() override;
|
||||
int createGemExt(const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint64_t patIndex, std::optional<uint32_t> vmId, int32_t pairHandle, bool isChunked, uint32_t numOfChunks, std::optional<uint32_t> memPolicyMode, std::optional<std::vector<unsigned long>> memPolicyNodemask, std::optional<bool> isCoherent) override;
|
||||
CacheRegion closAlloc() override;
|
||||
CacheRegion closAlloc(CacheLevel cacheLevel) override;
|
||||
uint16_t closAllocWays(CacheRegion closIndex, uint16_t cacheLevel, uint16_t numWays) override;
|
||||
CacheRegion closFree(CacheRegion closIndex) override;
|
||||
int waitUserFence(uint32_t ctxId, uint64_t address,
|
||||
|
||||
@@ -262,7 +262,7 @@ int IoctlHelperPrelim20::createGemExt(const MemRegionsVec &memClassInstances, si
|
||||
return ret;
|
||||
}
|
||||
|
||||
CacheRegion IoctlHelperPrelim20::closAlloc() {
|
||||
CacheRegion IoctlHelperPrelim20::closAlloc(CacheLevel cacheLevel) {
|
||||
struct prelim_drm_i915_gem_clos_reserve clos = {};
|
||||
|
||||
int ret = IoctlHelper::ioctl(DrmIoctl::gemClosReserve, &clos);
|
||||
|
||||
@@ -115,7 +115,7 @@ void IoctlHelperUpstream::detectExtSetPatSupport() {
|
||||
this->isSetPatSupported ? "enabled" : "disabled");
|
||||
}
|
||||
|
||||
CacheRegion IoctlHelperUpstream::closAlloc() {
|
||||
CacheRegion IoctlHelperUpstream::closAlloc(CacheLevel cacheLevel) {
|
||||
return CacheRegion::none;
|
||||
}
|
||||
|
||||
|
||||
@@ -698,7 +698,7 @@ uint32_t IoctlHelperXe::createGem(uint64_t size, uint32_t memoryBanks, std::opti
|
||||
return create.handle;
|
||||
}
|
||||
|
||||
CacheRegion IoctlHelperXe::closAlloc() {
|
||||
CacheRegion IoctlHelperXe::closAlloc(CacheLevel cacheLevel) {
|
||||
xeLog(" -> IoctlHelperXe::%s\n", __FUNCTION__);
|
||||
return CacheRegion::none;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class IoctlHelperXe : public IoctlHelper {
|
||||
bool isVmBindAvailable() override;
|
||||
int createGemExt(const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint64_t patIndex, std::optional<uint32_t> vmId, int32_t pairHandle, bool isChunked, uint32_t numOfChunks, std::optional<uint32_t> memPolicyMode, std::optional<std::vector<unsigned long>> memPolicyNodemask, std::optional<bool> isCoherent) override;
|
||||
uint32_t createGem(uint64_t size, uint32_t memoryBanks, std::optional<bool> isCoherent) override;
|
||||
CacheRegion closAlloc() override;
|
||||
CacheRegion closAlloc(CacheLevel cacheLevel) override;
|
||||
uint16_t closAllocWays(CacheRegion closIndex, uint16_t cacheLevel, uint16_t numWays) override;
|
||||
CacheRegion closFree(CacheRegion closIndex) override;
|
||||
int waitUserFence(uint32_t ctxId, uint64_t address,
|
||||
|
||||
@@ -240,7 +240,7 @@ TEST_F(IoctlHelperPrelimFixture, givenPrelimsWhenCallIoctlThenProperIoctlRegiste
|
||||
TEST_F(IoctlHelperPrelimFixture, givenPrelimsWhenClosAllocThenReturnCorrectRegion) {
|
||||
drm->ioctlCallsCount = 0;
|
||||
auto ioctlHelper = drm->getIoctlHelper();
|
||||
auto cacheRegion = ioctlHelper->closAlloc();
|
||||
auto cacheRegion = ioctlHelper->closAlloc(NEO::CacheLevel::level3);
|
||||
|
||||
EXPECT_EQ(CacheRegion::region1, cacheRegion);
|
||||
EXPECT_EQ(1u, drm->ioctlCallsCount);
|
||||
@@ -250,7 +250,7 @@ TEST_F(IoctlHelperPrelimFixture, givenPrelimsAndInvalidIoctlReturnValWhenClosAll
|
||||
drm->ioctlRetVal = -1;
|
||||
drm->ioctlCallsCount = 0;
|
||||
auto ioctlHelper = drm->getIoctlHelper();
|
||||
auto cacheRegion = ioctlHelper->closAlloc();
|
||||
auto cacheRegion = ioctlHelper->closAlloc(NEO::CacheLevel::level3);
|
||||
|
||||
EXPECT_EQ(CacheRegion::none, cacheRegion);
|
||||
EXPECT_EQ(1u, drm->ioctlCallsCount);
|
||||
|
||||
@@ -468,7 +468,7 @@ TEST(IoctlHelperTestsUpstream, givenUpstreamWhenClosAllocThenReturnNoneRegion) {
|
||||
auto drm = std::make_unique<DrmTipMock>(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
|
||||
auto ioctlHelper = drm->getIoctlHelper();
|
||||
auto cacheRegion = ioctlHelper->closAlloc();
|
||||
auto cacheRegion = ioctlHelper->closAlloc(NEO::CacheLevel::level3);
|
||||
|
||||
EXPECT_EQ(CacheRegion::none, cacheRegion);
|
||||
}
|
||||
|
||||
@@ -304,7 +304,7 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingAnyMethodThenDummyValueIsRe
|
||||
|
||||
EXPECT_FALSE(xeIoctlHelper->isSetPairAvailable());
|
||||
|
||||
EXPECT_EQ(CacheRegion::none, xeIoctlHelper->closAlloc());
|
||||
EXPECT_EQ(CacheRegion::none, xeIoctlHelper->closAlloc(NEO::CacheLevel::level3));
|
||||
|
||||
EXPECT_EQ(0u, xeIoctlHelper->closAllocWays(CacheRegion::none, 0u, 0u));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user