Enable Mid-Thread preemption for Gen9
Change-Id: Iacec1c8fa899d4fbf0cbb9cc292990546871ca6a
This commit is contained in:
parent
8ee2c54a50
commit
474b6a2a23
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -21,7 +21,7 @@
|
|||
*/
|
||||
|
||||
#include <cstdint>
|
||||
#include "built_ins.h"
|
||||
#include "runtime/built_ins/built_ins.h"
|
||||
#include "runtime/built_ins/vme_dispatch_builder.h"
|
||||
#include "runtime/built_ins/sip.h"
|
||||
#include "runtime/compiler_interface/compiler_interface.h"
|
||||
|
|
|
@ -161,9 +161,6 @@ void CommandStreamReceiver::cleanupResources() {
|
|||
scratchAllocation = nullptr;
|
||||
}
|
||||
|
||||
if (preemptionCsrAllocation) {
|
||||
memoryManager->freeGraphicsMemory(preemptionCsrAllocation);
|
||||
}
|
||||
|
||||
if (commandStream.getBase()) {
|
||||
memoryManager->freeGraphicsMemory(commandStream.getGraphicsAllocation());
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -72,7 +72,7 @@ bool familyEnabled[IGFX_MAX_CORE] = {
|
|||
Device::Device(const HardwareInfo &hwInfo,
|
||||
bool isRootDevice)
|
||||
: memoryManager(nullptr), enabledClVersion(false), hwInfo(hwInfo), isRoot(isRootDevice),
|
||||
commandStreamReceiver(nullptr), tagAddress(nullptr), tagAllocation(nullptr),
|
||||
commandStreamReceiver(nullptr), tagAddress(nullptr), tagAllocation(nullptr), preemptionAllocation(nullptr),
|
||||
osTime(nullptr), slmWindowStartAddress(nullptr) {
|
||||
memset(&deviceInfo, 0, sizeof(deviceInfo));
|
||||
deviceExtensions.reserve(1000);
|
||||
|
@ -93,6 +93,10 @@ Device::~Device() {
|
|||
tagAllocation = nullptr;
|
||||
commandStreamReceiver = nullptr;
|
||||
if (memoryManager) {
|
||||
if (preemptionAllocation) {
|
||||
memoryManager->freeGraphicsMemory(preemptionAllocation);
|
||||
preemptionAllocation = nullptr;
|
||||
}
|
||||
memoryManager->waitForDeletions();
|
||||
}
|
||||
delete memoryManager;
|
||||
|
@ -156,11 +160,11 @@ bool Device::createDeviceImpl(const HardwareInfo *pHwInfo,
|
|||
size_t requiredSize = pHwInfo->pSysInfo->CsrSizeInMb * MemoryConstants::megaByte;
|
||||
size_t alignment = 256 * MemoryConstants::kiloByte;
|
||||
bool uncacheable = pDevice->getWaTable()->waCSRUncachable;
|
||||
auto preemptionAllocation = outDevice.memoryManager->allocateGraphicsMemory(requiredSize, alignment, false, uncacheable);
|
||||
if (!preemptionAllocation) {
|
||||
pDevice->preemptionAllocation = outDevice.memoryManager->allocateGraphicsMemory(requiredSize, alignment, false, uncacheable);
|
||||
if (!pDevice->preemptionAllocation) {
|
||||
return false;
|
||||
}
|
||||
commandStreamReceiver->setPreemptionCsrAllocation(preemptionAllocation);
|
||||
commandStreamReceiver->setPreemptionCsrAllocation(pDevice->preemptionAllocation);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -122,6 +122,7 @@ class Device : public BaseObject<_cl_device_id> {
|
|||
PerformanceCounters *getPerformanceCounters() { return performanceCounters.get(); }
|
||||
static decltype(&PerformanceCounters::create) createPerformanceCountersFunc;
|
||||
PreemptionMode getPreemptionMode() const { return preemptionMode; }
|
||||
GraphicsAllocation *getPreemptionAllocation() const { return preemptionAllocation; }
|
||||
MOCKABLE_VIRTUAL const WhitelistedRegisters &getWhitelistedRegisters() { return hwInfo.capabilityTable.whitelistedRegisters; }
|
||||
std::vector<unsigned int> simultaneousInterops;
|
||||
std::string deviceExtensions;
|
||||
|
@ -148,6 +149,7 @@ class Device : public BaseObject<_cl_device_id> {
|
|||
|
||||
volatile uint32_t *tagAddress;
|
||||
GraphicsAllocation *tagAllocation;
|
||||
GraphicsAllocation *preemptionAllocation;
|
||||
std::unique_ptr<OSTime> osTime;
|
||||
std::unique_ptr<DriverInfo> driverInfo;
|
||||
std::unique_ptr<PerformanceCounters> performanceCounters;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -60,7 +60,7 @@ const RuntimeCapabilityTable BXT::capabilityTable{
|
|||
true, // ftrSupportsVmeAvcTextureSampler
|
||||
false, // ftrSupportsVmeAvcPreemption
|
||||
false,
|
||||
PreemptionMode::ThreadGroup,
|
||||
PreemptionMode::MidThread,
|
||||
{true, false},
|
||||
&isSimulationBXT,
|
||||
true,
|
||||
|
|
|
@ -55,7 +55,7 @@ const RuntimeCapabilityTable CFL::capabilityTable{
|
|||
true, // ftrSupportsVmeAvcTextureSampler
|
||||
false, // ftrSupportsVmeAvcPreemption
|
||||
false,
|
||||
PreemptionMode::ThreadGroup,
|
||||
PreemptionMode::MidThread,
|
||||
{true, false},
|
||||
&isSimulationCFL,
|
||||
true,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -55,7 +55,7 @@ const RuntimeCapabilityTable GLK::capabilityTable{
|
|||
true, // ftrSupportsVmeAvcTextureSampler
|
||||
false, // ftrSupportsVmeAvcPreemption
|
||||
false,
|
||||
PreemptionMode::ThreadGroup,
|
||||
PreemptionMode::MidThread,
|
||||
{true, false},
|
||||
&isSimulationGLK,
|
||||
true,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -55,7 +55,7 @@ const RuntimeCapabilityTable KBL::capabilityTable{
|
|||
true, // ftrSupportsVmeAvcTextureSampler
|
||||
false, // ftrSupportsVmeAvcPreemption
|
||||
false,
|
||||
PreemptionMode::ThreadGroup,
|
||||
PreemptionMode::MidThread,
|
||||
{true, false},
|
||||
&isSimulationKBL,
|
||||
true,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -63,7 +63,7 @@ const RuntimeCapabilityTable SKL::capabilityTable{
|
|||
true, // ftrSupportsVmeAvcTextureSampler
|
||||
false, // ftrSupportsVmeAvcPreemption
|
||||
false,
|
||||
PreemptionMode::ThreadGroup,
|
||||
PreemptionMode::MidThread,
|
||||
{true, false},
|
||||
&isSimulationSKL,
|
||||
true,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -44,7 +44,7 @@ int HwInfoConfigHw<IGFX_BROXTON>::configureHardwareCustom(HardwareInfo *hwInfo,
|
|||
|
||||
pSkuTable->ftrGpGpuMidBatchPreempt = 1;
|
||||
pSkuTable->ftrGpGpuThreadGroupLevelPreempt = 1;
|
||||
pSkuTable->ftrGpGpuMidThreadLevelPreempt = 1;
|
||||
pSkuTable->ftrGpGpuMidThreadLevelPreempt = 0;
|
||||
pSkuTable->ftr3dMidBatchPreempt = 1;
|
||||
pSkuTable->ftr3dObjectLevelPreempt = 1;
|
||||
pSkuTable->ftrPerCtxtPreemptionGranularityControl = 1;
|
||||
|
|
|
@ -43,7 +43,7 @@ int HwInfoConfigHw<IGFX_COFFEELAKE>::configureHardwareCustom(HardwareInfo *hwInf
|
|||
|
||||
pSkuTable->ftrGpGpuMidBatchPreempt = 1;
|
||||
pSkuTable->ftrGpGpuThreadGroupLevelPreempt = 1;
|
||||
pSkuTable->ftrGpGpuMidThreadLevelPreempt = 1;
|
||||
pSkuTable->ftrGpGpuMidThreadLevelPreempt = 0;
|
||||
pSkuTable->ftr3dMidBatchPreempt = 1;
|
||||
pSkuTable->ftr3dObjectLevelPreempt = 1;
|
||||
pSkuTable->ftrPerCtxtPreemptionGranularityControl = 1;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -39,7 +39,7 @@ int HwInfoConfigHw<IGFX_GEMINILAKE>::configureHardwareCustom(HardwareInfo *hwInf
|
|||
|
||||
pSkuTable->ftrGpGpuMidBatchPreempt = 1;
|
||||
pSkuTable->ftrGpGpuThreadGroupLevelPreempt = 1;
|
||||
pSkuTable->ftrGpGpuMidThreadLevelPreempt = 1;
|
||||
pSkuTable->ftrGpGpuMidThreadLevelPreempt = 0;
|
||||
pSkuTable->ftr3dMidBatchPreempt = 1;
|
||||
pSkuTable->ftr3dObjectLevelPreempt = 1;
|
||||
pSkuTable->ftrPerCtxtPreemptionGranularityControl = 1;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -44,7 +44,7 @@ int HwInfoConfigHw<IGFX_KABYLAKE>::configureHardwareCustom(HardwareInfo *hwInfo,
|
|||
|
||||
pSkuTable->ftrGpGpuMidBatchPreempt = 1;
|
||||
pSkuTable->ftrGpGpuThreadGroupLevelPreempt = 1;
|
||||
pSkuTable->ftrGpGpuMidThreadLevelPreempt = 1;
|
||||
pSkuTable->ftrGpGpuMidThreadLevelPreempt = 0;
|
||||
pSkuTable->ftr3dMidBatchPreempt = 1;
|
||||
pSkuTable->ftr3dObjectLevelPreempt = 1;
|
||||
pSkuTable->ftrPerCtxtPreemptionGranularityControl = 1;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -45,7 +45,7 @@ int HwInfoConfigHw<IGFX_SKYLAKE>::configureHardwareCustom(HardwareInfo *hwInfo,
|
|||
|
||||
pSkuTable->ftrGpGpuMidBatchPreempt = 1;
|
||||
pSkuTable->ftrGpGpuThreadGroupLevelPreempt = 1;
|
||||
pSkuTable->ftrGpGpuMidThreadLevelPreempt = 1;
|
||||
pSkuTable->ftrGpGpuMidThreadLevelPreempt = 0;
|
||||
pSkuTable->ftr3dMidBatchPreempt = 1;
|
||||
pSkuTable->ftr3dObjectLevelPreempt = 1;
|
||||
pSkuTable->ftrPerCtxtPreemptionGranularityControl = 1;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -325,4 +325,28 @@ TEST_F(clCreateCommandQueueWithPropertiesApi, returnErrorOnDeviceWithMedPriority
|
|||
EXPECT_EQ(nullptr, cmdqd);
|
||||
EXPECT_EQ(retVal, CL_INVALID_QUEUE_PROPERTIES);
|
||||
}
|
||||
|
||||
TEST_F(clCreateCommandQueueWithPropertiesApi, returnErrorOnQueueWithPriority) {
|
||||
auto pDevice = pPlatform->getDevice(0);
|
||||
DeviceInfo &devInfo = const_cast<DeviceInfo &>(pDevice->getDeviceInfo());
|
||||
devInfo.priorityHintsSupported = false;
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
cl_queue_properties ondevice[] = {CL_QUEUE_PRIORITY_KHR, CL_QUEUE_PRIORITY_LOW_KHR, 0};
|
||||
auto cmdqd = clCreateCommandQueueWithProperties(pContext, devices[0], ondevice, &retVal);
|
||||
EXPECT_EQ(nullptr, cmdqd);
|
||||
EXPECT_EQ(retVal, CL_INVALID_QUEUE_PROPERTIES);
|
||||
}
|
||||
|
||||
TEST_F(clCreateCommandQueueWithPropertiesApi, returnSuccessOnQueueWithPriority) {
|
||||
auto pDevice = pPlatform->getDevice(0);
|
||||
DeviceInfo &devInfo = const_cast<DeviceInfo &>(pDevice->getDeviceInfo());
|
||||
devInfo.priorityHintsSupported = true;
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
cl_queue_properties ondevice[] = {CL_QUEUE_PRIORITY_KHR, CL_QUEUE_PRIORITY_LOW_KHR, 0};
|
||||
auto cmdqd = clCreateCommandQueueWithProperties(pContext, devices[0], ondevice, &retVal);
|
||||
EXPECT_NE(nullptr, cmdqd);
|
||||
EXPECT_EQ(retVal, CL_SUCCESS);
|
||||
retVal = clReleaseCommandQueue(cmdqd);
|
||||
EXPECT_EQ(retVal, CL_SUCCESS);
|
||||
}
|
||||
} // namespace ULT
|
||||
|
|
|
@ -31,7 +31,6 @@
|
|||
#include "runtime/scheduler/scheduler_kernel.h"
|
||||
#include "unit_tests/fixtures/hello_world_fixture.h"
|
||||
#include "unit_tests/helpers/hw_parse.h"
|
||||
#include "unit_tests/helpers/debug_manager_state_restore.h"
|
||||
#include "unit_tests/mocks/mock_kernel.h"
|
||||
#include "unit_tests/mocks/mock_command_queue.h"
|
||||
#include "unit_tests/mocks/mock_context.h"
|
||||
|
@ -84,6 +83,9 @@ void DevicePreemptionTests::forceWhitelistedRegs(bool whitelisted) {
|
|||
}
|
||||
|
||||
void ThreadGroupPreemptionEnqueueKernelTest::SetUp() {
|
||||
dbgRestore.reset(new DebugManagerStateRestore());
|
||||
DebugManager.flags.ForcePreemptionMode.set(static_cast<int32_t>(PreemptionMode::ThreadGroup));
|
||||
|
||||
globalHwInfo = const_cast<HardwareInfo *>(platformDevices[0]);
|
||||
originalPreemptionMode = globalHwInfo->capabilityTable.defaultPreemptionMode;
|
||||
globalHwInfo->capabilityTable.defaultPreemptionMode = PreemptionMode::ThreadGroup;
|
||||
|
@ -99,6 +101,9 @@ void ThreadGroupPreemptionEnqueueKernelTest::TearDown() {
|
|||
}
|
||||
|
||||
void MidThreadPreemptionEnqueueKernelTest::SetUp() {
|
||||
dbgRestore.reset(new DebugManagerStateRestore());
|
||||
DebugManager.flags.ForcePreemptionMode.set(static_cast<int32_t>(PreemptionMode::MidThread));
|
||||
|
||||
globalHwInfo = const_cast<HardwareInfo *>(platformDevices[0]);
|
||||
originalPreemptionMode = globalHwInfo->capabilityTable.defaultPreemptionMode;
|
||||
globalHwInfo->capabilityTable.defaultPreemptionMode = PreemptionMode::MidThread;
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "unit_tests/helpers/debug_manager_state_restore.h"
|
||||
#include "unit_tests/fixtures/hello_world_fixture.h"
|
||||
#include "unit_tests/gen_common/test.h"
|
||||
|
||||
|
@ -51,8 +52,6 @@ using PreemptionEnqueueKernelFixture = HelloWorldFixture<HelloWorldFixtureFactor
|
|||
using PreemptionEnqueueKernelTest = Test<PreemptionEnqueueKernelFixture>;
|
||||
}
|
||||
|
||||
class DebugManagerStateRestore;
|
||||
|
||||
class DevicePreemptionTests : public ::testing::Test {
|
||||
public:
|
||||
void SetUp() override;
|
||||
|
@ -77,20 +76,22 @@ class DevicePreemptionTests : public ::testing::Test {
|
|||
|
||||
struct ThreadGroupPreemptionEnqueueKernelTest : OCLRT::PreemptionEnqueueKernelTest {
|
||||
void SetUp() override;
|
||||
|
||||
void TearDown() override;
|
||||
|
||||
OCLRT::HardwareInfo *globalHwInfo;
|
||||
OCLRT::PreemptionMode originalPreemptionMode;
|
||||
|
||||
std::unique_ptr<DebugManagerStateRestore> dbgRestore;
|
||||
};
|
||||
|
||||
struct MidThreadPreemptionEnqueueKernelTest : OCLRT::PreemptionEnqueueKernelTest {
|
||||
void SetUp() override;
|
||||
|
||||
void TearDown() override;
|
||||
|
||||
OCLRT::HardwareInfo *globalHwInfo;
|
||||
OCLRT::PreemptionMode originalPreemptionMode;
|
||||
|
||||
std::unique_ptr<DebugManagerStateRestore> dbgRestore;
|
||||
};
|
||||
|
||||
struct PreemptionTestHwDetails {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -51,6 +51,30 @@ BXTTEST_F(HwInfoConfigTestLinuxBxt, configureHwInfo) {
|
|||
EXPECT_EQ((outHwInfo.pSysInfo->EUCount - outHwInfo.pSysInfo->EuCountPerPoolMin), outHwInfo.pSysInfo->EuCountPerPoolMax);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGttCacheInvalidation);
|
||||
|
||||
//constant sysInfo/ftr flags
|
||||
EXPECT_EQ(1u, outHwInfo.pSysInfo->VEBoxInfo.Instances.Bits.VEBox0Enabled);
|
||||
EXPECT_TRUE(outHwInfo.pSysInfo->VEBoxInfo.IsValid);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrVEBOX);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrULT);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrGpGpuMidBatchPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrGpGpuThreadGroupLevelPreempt);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGpGpuMidThreadLevelPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftr3dMidBatchPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftr3dObjectLevelPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrPerCtxtPreemptionGranularityControl);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrLCIA);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrPPGTT);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrL3IACoherency);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrIA32eGfxPTEs);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrDisplayYTiling);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrTranslationTable);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrUserModeTranslationTable);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrEnableGuC);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbc);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbc2AddressTranslation);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbcBlitterTracking);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbcCpuTracking);
|
||||
|
||||
EXPECT_EQ(GTTYPE_GTA, outHwInfo.pPlatform->eGTType);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGT1);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGT1_5);
|
||||
|
|
|
@ -53,6 +53,29 @@ CFLTEST_F(HwInfoConfigTestLinuxCfl, configureHwInfo) {
|
|||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGTC);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGTX);
|
||||
|
||||
//constant sysInfo/ftr flags
|
||||
EXPECT_EQ(1u, outHwInfo.pSysInfo->VEBoxInfo.Instances.Bits.VEBox0Enabled);
|
||||
EXPECT_TRUE(outHwInfo.pSysInfo->VEBoxInfo.IsValid);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrVEBOX);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrGpGpuMidBatchPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrGpGpuThreadGroupLevelPreempt);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGpGpuMidThreadLevelPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftr3dMidBatchPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftr3dObjectLevelPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrPerCtxtPreemptionGranularityControl);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrPPGTT);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrSVM);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrL3IACoherency);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrIA32eGfxPTEs);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrDisplayYTiling);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrTranslationTable);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrUserModeTranslationTable);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrEnableGuC);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbc);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbc2AddressTranslation);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbcBlitterTracking);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbcCpuTracking);
|
||||
|
||||
ReleaseOutHwInfoStructs();
|
||||
|
||||
drm->StoredDeviceID = ICFL_GT1_DT_DEVICE_F0_ID;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -59,6 +59,27 @@ GLKTEST_F(HwInfoConfigTestLinuxGlk, configureHwInfo) {
|
|||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGTC);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGTX);
|
||||
|
||||
//constant sysInfo/ftr flags
|
||||
EXPECT_EQ(1u, outHwInfo.pSysInfo->VEBoxInfo.Instances.Bits.VEBox0Enabled);
|
||||
EXPECT_TRUE(outHwInfo.pSysInfo->VEBoxInfo.IsValid);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrGpGpuMidBatchPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrGpGpuThreadGroupLevelPreempt);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGpGpuMidThreadLevelPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftr3dMidBatchPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftr3dObjectLevelPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrPerCtxtPreemptionGranularityControl);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrLCIA);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrPPGTT);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrL3IACoherency);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrIA32eGfxPTEs);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrTranslationTable);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrUserModeTranslationTable);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrEnableGuC);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrTileMappedResource);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrULT);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrAstcHdr2D);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrAstcLdr2D);
|
||||
|
||||
ReleaseOutHwInfoStructs();
|
||||
|
||||
drm->StoredDeviceID = IGLK_GT2_ULT_18EU_DEVICE_F0_ID;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -53,6 +53,29 @@ KBLTEST_F(HwInfoConfigTestLinuxKbl, configureHwInfo) {
|
|||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGTC);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGTX);
|
||||
|
||||
//constant sysInfo/ftr flags
|
||||
EXPECT_EQ(1u, outHwInfo.pSysInfo->VEBoxInfo.Instances.Bits.VEBox0Enabled);
|
||||
EXPECT_TRUE(outHwInfo.pSysInfo->VEBoxInfo.IsValid);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrVEBOX);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrGpGpuMidBatchPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrGpGpuThreadGroupLevelPreempt);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGpGpuMidThreadLevelPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftr3dMidBatchPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftr3dObjectLevelPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrPerCtxtPreemptionGranularityControl);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrPPGTT);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrSVM);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrL3IACoherency);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrIA32eGfxPTEs);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrDisplayYTiling);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrTranslationTable);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrUserModeTranslationTable);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrEnableGuC);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbc);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbc2AddressTranslation);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbcBlitterTracking);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbcCpuTracking);
|
||||
|
||||
ReleaseOutHwInfoStructs();
|
||||
|
||||
drm->StoredDeviceID = IKBL_GT1_ULT_DEVICE_F0_ID;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -53,6 +53,31 @@ SKLTEST_F(HwInfoConfigTestLinuxSkl, configureHwInfo) {
|
|||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGTC);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGTX);
|
||||
|
||||
//constant sysInfo/ftr flags
|
||||
EXPECT_EQ(1u, outHwInfo.pSysInfo->VEBoxInfo.Instances.Bits.VEBox0Enabled);
|
||||
EXPECT_EQ(1u, outHwInfo.pSysInfo->VDBoxInfo.Instances.Bits.VDBox0Enabled);
|
||||
EXPECT_TRUE(outHwInfo.pSysInfo->VEBoxInfo.IsValid);
|
||||
EXPECT_TRUE(outHwInfo.pSysInfo->VDBoxInfo.IsValid);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrGpGpuMidBatchPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrGpGpuThreadGroupLevelPreempt);
|
||||
EXPECT_EQ(0u, outHwInfo.pSkuTable->ftrGpGpuMidThreadLevelPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftr3dMidBatchPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftr3dObjectLevelPreempt);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrPerCtxtPreemptionGranularityControl);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrPPGTT);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrSVM);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrL3IACoherency);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrIA32eGfxPTEs);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrDisplayYTiling);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrTranslationTable);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrUserModeTranslationTable);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrEnableGuC);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbc);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbc2AddressTranslation);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbcBlitterTracking);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrFbcCpuTracking);
|
||||
EXPECT_EQ(1u, outHwInfo.pSkuTable->ftrVEBOX);
|
||||
|
||||
ReleaseOutHwInfoStructs();
|
||||
|
||||
drm->StoredDeviceID = ISKL_GT1_DT_DEVICE_F0_ID;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -46,7 +46,7 @@ GEN9TEST_F(Gen9DeviceCaps, allSkusSupportCorrectlyRoundedDivideSqrt) {
|
|||
}
|
||||
|
||||
GEN9TEST_F(Gen9DeviceCaps, defaultPreemptionMode) {
|
||||
EXPECT_TRUE(PreemptionMode::ThreadGroup == pDevice->getHardwareInfo().capabilityTable.defaultPreemptionMode);
|
||||
EXPECT_EQ(PreemptionMode::MidThread, pDevice->getHardwareInfo().capabilityTable.defaultPreemptionMode);
|
||||
}
|
||||
|
||||
GEN9TEST_F(Gen9DeviceCaps, whitelistedRegisters) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -48,6 +48,7 @@ class UltCommandStreamReceiver : public CommandStreamReceiverHw<GfxFamily> {
|
|||
using BaseClass::CommandStreamReceiver::lastSentThreadAribtrationPolicy;
|
||||
using BaseClass::CommandStreamReceiver::latestFlushedTaskCount;
|
||||
using BaseClass::CommandStreamReceiver::latestSentStatelessMocsConfig;
|
||||
using BaseClass::CommandStreamReceiver::lastPreemptionMode;
|
||||
using BaseClass::CommandStreamReceiver::taskCount;
|
||||
using BaseClass::CommandStreamReceiver::taskLevel;
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -28,6 +28,7 @@
|
|||
#include "unit_tests/memory_leak_listener.h"
|
||||
#include "unit_tests/mocks/mock_gmm.h"
|
||||
#include "runtime/gmm_helper/resource_info.h"
|
||||
#include "runtime/os_interface/debug_settings_manager.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include <algorithm>
|
||||
#include <mutex>
|
||||
|
@ -157,6 +158,9 @@ std::string getRunPath(char *argv0) {
|
|||
return res;
|
||||
}
|
||||
|
||||
extern int preemptionModeFromDebugManager;
|
||||
int preemptionModeFromDebugManager = -1;
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
int retVal = 0;
|
||||
bool useDefaultListener = false;
|
||||
|
@ -352,6 +356,10 @@ int main(int argc, char **argv) {
|
|||
gEnvironment->setMockFileNames(fclMockFile, igcMockFile);
|
||||
gEnvironment->setDefaultDebugVars(fclDebugVars, igcDebugVars, device);
|
||||
|
||||
// globally override-disable preemption to speed-up test execution
|
||||
preemptionModeFromDebugManager = OCLRT::DebugManager.flags.ForcePreemptionMode.get();
|
||||
OCLRT::DebugManager.flags.ForcePreemptionMode.set(static_cast<int>(PreemptionMode::Disabled));
|
||||
|
||||
#if defined(__linux__)
|
||||
//ULTs timeout
|
||||
if (enable_alarm) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -76,6 +76,7 @@ void MockDevice::resetCommandStreamReceiver(CommandStreamReceiver *newCsr) {
|
|||
commandStreamReceiver = newCsr;
|
||||
commandStreamReceiver->setMemoryManager(memoryManager);
|
||||
commandStreamReceiver->setTagAllocation(tagAllocation);
|
||||
commandStreamReceiver->setPreemptionCsrAllocation(preemptionAllocation);
|
||||
memoryManager->csr = commandStreamReceiver;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -27,6 +27,7 @@
|
|||
#include "runtime/helpers/get_info.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "unit_tests/helpers/debug_manager_state_restore.h"
|
||||
#include "unit_tests/mocks/mock_device.h"
|
||||
#include "unit_tests/mocks/mock_context.h"
|
||||
#include "unit_tests/mocks/mock_command_queue.h"
|
||||
|
@ -109,14 +110,10 @@ TEST(ApiOsTest, notSupportedApiList) {
|
|||
}
|
||||
|
||||
TEST(DeviceOsTest, DeviceCreationFailMidThreadPreemption) {
|
||||
HardwareInfo *hwInfo = const_cast<HardwareInfo *>(*platformDevices);
|
||||
auto defaultPreemption = hwInfo->capabilityTable.defaultPreemptionMode;
|
||||
hwInfo->capabilityTable.defaultPreemptionMode = PreemptionMode::MidThread;
|
||||
|
||||
auto pDevice = Device::create<OCLRT::FailDeviceAfterOne>(hwInfo);
|
||||
DebugManagerStateRestore dbgRestore;
|
||||
DebugManager.flags.ForcePreemptionMode.set(static_cast<int32_t>(PreemptionMode::MidThread));
|
||||
auto pDevice = Device::create<OCLRT::FailDeviceAfterOne>(nullptr);
|
||||
|
||||
EXPECT_THAT(pDevice, nullptr);
|
||||
|
||||
hwInfo->capabilityTable.defaultPreemptionMode = defaultPreemption;
|
||||
}
|
||||
} // namespace OCLRT
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, Intel Corporation
|
||||
* Copyright (c) 2017 - 2018, Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -24,6 +24,7 @@
|
|||
#include "runtime/helpers/get_info.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "unit_tests/helpers/debug_manager_state_restore.h"
|
||||
#include "unit_tests/mocks/mock_device.h"
|
||||
|
||||
using namespace ::testing;
|
||||
|
@ -72,14 +73,10 @@ TEST(DeviceOsTest, DeviceCreationFail) {
|
|||
}
|
||||
|
||||
TEST(DeviceOsTest, DeviceCreationFailMidThreadPreemption) {
|
||||
HardwareInfo *hwInfo = const_cast<HardwareInfo *>(*platformDevices);
|
||||
auto defaultPreemption = hwInfo->capabilityTable.defaultPreemptionMode;
|
||||
hwInfo->capabilityTable.defaultPreemptionMode = PreemptionMode::MidThread;
|
||||
|
||||
auto pDevice = Device::create<OCLRT::FailDeviceAfterOne>(hwInfo);
|
||||
DebugManagerStateRestore dbgRestore;
|
||||
DebugManager.flags.ForcePreemptionMode.set(static_cast<int32_t>(PreemptionMode::MidThread));
|
||||
auto pDevice = Device::create<OCLRT::FailDeviceAfterOne>(nullptr);
|
||||
|
||||
EXPECT_THAT(pDevice, nullptr);
|
||||
|
||||
hwInfo->capabilityTable.defaultPreemptionMode = defaultPreemption;
|
||||
}
|
||||
} // namespace OCLRT
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
|
||||
using namespace OCLRT;
|
||||
|
||||
extern int preemptionModeFromDebugManager;
|
||||
|
||||
class ThreadGroupPreemptionTests : public DevicePreemptionTests {
|
||||
void SetUp() override {
|
||||
dbgRestore.reset(new DebugManagerStateRestore());
|
||||
|
@ -98,6 +100,27 @@ TEST_F(ThreadGroupPreemptionTests, allowDefaultModeForNonKernelRequest) {
|
|||
EXPECT_EQ(PreemptionMode::ThreadGroup, PreemptionHelper::taskPreemptionMode(*device, nullptr));
|
||||
}
|
||||
|
||||
TEST_F(ThreadGroupPreemptionTests, givenKernelWithNoEnvironmentPatchSetWhenLSQCWaIsTurnedOnThenThreadGroupPreemptionIsBeingSelected) {
|
||||
kernelInfo.get()->patchInfo.executionEnvironment = nullptr;
|
||||
waTable->waDisableLSQCROPERFforOCL = 1;
|
||||
EXPECT_TRUE(PreemptionHelper::allowThreadGroupPreemption(kernel.get(), waTable));
|
||||
EXPECT_EQ(PreemptionMode::ThreadGroup, PreemptionHelper::taskPreemptionMode(*device, kernel.get()));
|
||||
}
|
||||
|
||||
TEST_F(ThreadGroupPreemptionTests, givenKernelWithEnvironmentPatchSetWhenLSQCWaIsTurnedOnThenThreadGroupPreemptionIsBeingSelected) {
|
||||
executionEnvironment.get()->UsesFencesForReadWriteImages = 0;
|
||||
waTable->waDisableLSQCROPERFforOCL = 1;
|
||||
EXPECT_TRUE(PreemptionHelper::allowThreadGroupPreemption(kernel.get(), waTable));
|
||||
EXPECT_EQ(PreemptionMode::ThreadGroup, PreemptionHelper::taskPreemptionMode(*device, kernel.get()));
|
||||
}
|
||||
|
||||
TEST_F(ThreadGroupPreemptionTests, givenKernelWithEnvironmentPatchSetWhenLSQCWaIsTurnedOffThenThreadGroupPreemptionIsBeingSelected) {
|
||||
executionEnvironment.get()->UsesFencesForReadWriteImages = 1;
|
||||
waTable->waDisableLSQCROPERFforOCL = 0;
|
||||
EXPECT_TRUE(PreemptionHelper::allowThreadGroupPreemption(kernel.get(), waTable));
|
||||
EXPECT_EQ(PreemptionMode::ThreadGroup, PreemptionHelper::taskPreemptionMode(*device, kernel.get()));
|
||||
}
|
||||
|
||||
TEST_F(ThreadGroupPreemptionTests, allowMidBatch) {
|
||||
device->setPreemptionMode(PreemptionMode::MidBatch);
|
||||
EXPECT_EQ(PreemptionMode::MidBatch, PreemptionHelper::taskPreemptionMode(*device, nullptr));
|
||||
|
@ -286,7 +309,7 @@ TEST_F(DevicePreemptionTests, setDefaultDisabledPreemptionNoMidBatchSupport) {
|
|||
}
|
||||
|
||||
TEST(PreemptionTest, defaultMode) {
|
||||
EXPECT_EQ(0, DebugManager.flags.ForcePreemptionMode.get());
|
||||
EXPECT_EQ(0, preemptionModeFromDebugManager);
|
||||
}
|
||||
|
||||
TEST(PreemptionTest, whenPreemptionModeIsNotMidThreadThenInstructionHeapSipKernelReservedSizeIsEmpty) {
|
||||
|
@ -517,6 +540,9 @@ HWTEST_F(MidThreadPreemptionTests, createCsrSurfaceNoWa) {
|
|||
ASSERT_NE(nullptr, csrSurface);
|
||||
EXPECT_FALSE(csrSurface->uncacheable);
|
||||
|
||||
GraphicsAllocation *devCsrSurface = mockDevice->getPreemptionAllocation();
|
||||
EXPECT_EQ(csrSurface, devCsrSurface);
|
||||
|
||||
const_cast<HardwareInfo *>(platformDevices[0])->pWaTable = waTable;
|
||||
}
|
||||
|
||||
|
@ -534,5 +560,8 @@ HWTEST_F(MidThreadPreemptionTests, createCsrSurfaceWa) {
|
|||
ASSERT_NE(nullptr, csrSurface);
|
||||
EXPECT_TRUE(csrSurface->uncacheable);
|
||||
|
||||
GraphicsAllocation *devCsrSurface = mockDevice->getPreemptionAllocation();
|
||||
EXPECT_EQ(csrSurface, devCsrSurface);
|
||||
|
||||
const_cast<HardwareInfo *>(platformDevices[0])->pWaTable = waTable;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue