Add debug flag to override bank index in local memory bank selector
Change-Id: Ie85129fc7cbdeb9cfa88b401430f983c096a868f Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>
This commit is contained in:
parent
87596d2387
commit
dadbd5a09f
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include "shared/source/helpers/basic_math.h"
|
||||
#include "shared/source/memory_manager/local_memory_usage.h"
|
||||
#include "shared/test/unit_test/helpers/debug_manager_state_restore.h"
|
||||
|
||||
#include "third_party/gtest/gtest/gtest.h"
|
||||
|
||||
|
@ -56,6 +57,18 @@ TEST(localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenMemoryIsReleased
|
|||
EXPECT_EQ(allocationSize, selector.getOccupiedMemorySizeForBank(bankIndex));
|
||||
}
|
||||
|
||||
TEST(localMemoryUsageTest, givenOverrideLeastOccupiedBankDebugFlagWhenGetLeastOccupiedBankIsCalledThenForcedBankIndexIsReturned) {
|
||||
DebugManagerStateRestore dbgRestore;
|
||||
MockLocalMemoryUsageBankSelector selector(1u);
|
||||
auto bankIndex = selector.getLeastOccupiedBank();
|
||||
EXPECT_EQ(0u, bankIndex);
|
||||
|
||||
uint32_t forcedBankIndex = 64u;
|
||||
DebugManager.flags.OverrideLeastOccupiedBank.set(static_cast<int32_t>(forcedBankIndex));
|
||||
bankIndex = selector.getLeastOccupiedBank();
|
||||
EXPECT_EQ(forcedBankIndex, bankIndex);
|
||||
}
|
||||
|
||||
TEST(localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenMemoryAllocatedSeveralTimesItIsStoredOnDifferentBanks) {
|
||||
MockLocalMemoryUsageBankSelector selector(5u);
|
||||
|
||||
|
|
|
@ -162,5 +162,6 @@ LimitBlitterMaxHeight = -1
|
|||
FlushAfterEachBlit = -1
|
||||
UseCommandBufferHeaderSizeForWddmQueueSubmission = 1
|
||||
OverridePreemptionSurfaceSizeInMb = -1
|
||||
OverrideLeastOccupiedBank = -1
|
||||
UseAsyncDrmExec = -1
|
||||
EnableMultiStorageResources = -1
|
|
@ -64,6 +64,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, LimitBlitterMaxWidth, -1, "-1: default, >=0: Max
|
|||
DECLARE_DEBUG_VARIABLE(int32_t, LimitBlitterMaxHeight, -1, "-1: default, >=0: Max height")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, FlushAfterEachBlit, -1, "-1: default, 0: disable, 1: enable")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, OverridePreemptionSurfaceSizeInMb, -1, "-1: default, >=0 Override preemption surface size with value")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, OverrideLeastOccupiedBank, -1, "-1: default, >=0 Override least occupied bank with value")
|
||||
|
||||
/*LOGGING FLAGS*/
|
||||
DECLARE_DEBUG_VARIABLE(bool, PrintDebugSettings, false, "Dump all debug variables settings to text file. Print to stdout if value is different than default.")
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
|
||||
#include "shared/source/memory_manager/local_memory_usage.h"
|
||||
|
||||
#include "shared/source/debug_settings/debug_settings_manager.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <bitset>
|
||||
#include <iterator>
|
||||
|
@ -23,6 +25,10 @@ LocalMemoryUsageBankSelector::LocalMemoryUsageBankSelector(uint32_t banksCount)
|
|||
}
|
||||
|
||||
uint32_t LocalMemoryUsageBankSelector::getLeastOccupiedBank() {
|
||||
if (DebugManager.flags.OverrideLeastOccupiedBank.get() != -1) {
|
||||
return static_cast<uint32_t>(DebugManager.flags.OverrideLeastOccupiedBank.get());
|
||||
}
|
||||
|
||||
auto leastOccupiedBankIterator = std::min_element(memorySizes.get(), memorySizes.get() + banksCount);
|
||||
return static_cast<uint32_t>(std::distance(memorySizes.get(), leastOccupiedBankIterator));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue