Move ClCoreHelper ownership to RootDeviceEnvironment 3/n

Related-To: NEO-6853
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>

Use RootDeviceEnvironment getHelper<ClCoreHelper> for
- getQueueFamilyName
- getKernelPrivateMemSize
- preferBlitterForLocalToLocalTransfers
This commit is contained in:
Kamil Kopryk
2022-11-15 12:12:11 +00:00
committed by Compute-Runtime-Automation
parent 5f8cc9b99b
commit 9564af14f5
8 changed files with 34 additions and 32 deletions

View File

@ -238,8 +238,8 @@ cl_command_queue_capabilities_intel ClDevice::getQueueFamilyCapabilities(EngineG
void ClDevice::getQueueFamilyName(char *outputName, EngineGroupType type) { void ClDevice::getQueueFamilyName(char *outputName, EngineGroupType type) {
std::string name{}; std::string name{};
const auto &clHwHelper = ClHwHelper::get(getHardwareInfo().platform.eRenderCoreFamily); const auto &clCoreHelper = this->getRootDeviceEnvironment().getHelper<ClCoreHelper>();
const bool hasHwSpecificName = clHwHelper.getQueueFamilyName(name, type); const bool hasHwSpecificName = clCoreHelper.getQueueFamilyName(name, type);
if (!hasHwSpecificName) { if (!hasHwSpecificName) {
switch (type) { switch (type) {

View File

@ -246,8 +246,8 @@ CommandStreamReceiver &CommandQueue::selectCsrForBuiltinOperation(const CsrSelec
aub_stream::EngineType preferredBcsEngineType = aub_stream::EngineType::NUM_ENGINES; aub_stream::EngineType preferredBcsEngineType = aub_stream::EngineType::NUM_ENGINES;
switch (args.direction) { switch (args.direction) {
case TransferDirection::LocalToLocal: { case TransferDirection::LocalToLocal: {
const auto &clHwHelper = ClHwHelper::get(device->getHardwareInfo().platform.eRenderCoreFamily); const auto &clCoreHelper = device->getRootDeviceEnvironment().getHelper<ClCoreHelper>();
preferBcs = clHwHelper.preferBlitterForLocalToLocalTransfers(); preferBcs = clCoreHelper.preferBlitterForLocalToLocalTransfers();
if (auto flag = DebugManager.flags.PreferCopyEngineForCopyBufferToBuffer.get(); flag != -1) { if (auto flag = DebugManager.flags.PreferCopyEngineForCopyBufferToBuffer.get(); flag != -1) {
preferBcs = static_cast<bool>(flag); preferBcs = static_cast<bool>(flag);
} }

View File

@ -8,13 +8,22 @@
#include "opencl/extensions/public/cl_ext_private.h" #include "opencl/extensions/public/cl_ext_private.h"
template <> template <>
inline bool ClHwHelperHw<Family>::preferBlitterForLocalToLocalTransfers() const { std::vector<uint32_t> ClHwHelperHw<Family>::getSupportedThreadArbitrationPolicies() const {
return false; return std::vector<uint32_t>{CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_OLDEST_FIRST_INTEL, CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_ROUND_ROBIN_INTEL, CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_AFTER_DEPENDENCY_ROUND_ROBIN_INTEL, CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_STALL_BASED_ROUND_ROBIN_INTEL};
} }
template <> template <>
std::vector<uint32_t> ClHwHelperHw<Family>::getSupportedThreadArbitrationPolicies() const { inline bool ClHwHelperHw<Family>::getQueueFamilyName(std::string &name, EngineGroupType type) const {
return std::vector<uint32_t>{CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_OLDEST_FIRST_INTEL, CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_ROUND_ROBIN_INTEL, CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_AFTER_DEPENDENCY_ROUND_ROBIN_INTEL, CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_STALL_BASED_ROUND_ROBIN_INTEL}; switch (type) {
case EngineGroupType::RenderCompute:
name = "cccs";
return true;
case EngineGroupType::LinkedCopy:
name = "linked bcs";
return true;
default:
return false;
}
} }
template <> template <>

View File

@ -551,7 +551,7 @@ cl_int Kernel::getWorkGroupInfo(cl_kernel_work_group_info paramName,
size_t maxWorkgroupSize; size_t maxWorkgroupSize;
const auto &hwInfo = clDevice.getHardwareInfo(); const auto &hwInfo = clDevice.getHardwareInfo();
auto &hwHelper = HwHelper::get(hwInfo.platform.eRenderCoreFamily); auto &hwHelper = HwHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &clHwHelper = ClHwHelper::get(hwInfo.platform.eRenderCoreFamily); auto &clCoreHelper = clDevice.getRootDeviceEnvironment().getHelper<ClCoreHelper>();
GetInfoHelper info(paramValue, paramValueSize, paramValueSizeRet); GetInfoHelper info(paramValue, paramValueSize, paramValueSizeRet);
switch (paramName) { switch (paramName) {
@ -594,7 +594,7 @@ cl_int Kernel::getWorkGroupInfo(cl_kernel_work_group_info paramName,
pSrc = &scratchSize; pSrc = &scratchSize;
break; break;
case CL_KERNEL_PRIVATE_MEM_SIZE: case CL_KERNEL_PRIVATE_MEM_SIZE:
privateMemSize = clHwHelper.getKernelPrivateMemSize(kernelInfo); privateMemSize = clCoreHelper.getKernelPrivateMemSize(kernelInfo);
srcSize = sizeof(privateMemSize); srcSize = sizeof(privateMemSize);
pSrc = &privateMemSize; pSrc = &privateMemSize;
break; break;

View File

@ -29,20 +29,6 @@ bool ClHwHelperHw<Family>::requiresAuxResolves(const KernelInfo &kernelInfo, con
return false; return false;
} }
template <>
inline bool ClHwHelperHw<Family>::getQueueFamilyName(std::string &name, EngineGroupType type) const {
switch (type) {
case EngineGroupType::RenderCompute:
name = "cccs";
return true;
case EngineGroupType::LinkedCopy:
name = "linked bcs";
return true;
default:
return false;
}
}
template <> template <>
cl_version ClHwHelperHw<Family>::getDeviceIpVersion(const HardwareInfo &hwInfo) const { cl_version ClHwHelperHw<Family>::getDeviceIpVersion(const HardwareInfo &hwInfo) const {
return makeDeviceIpVersion(12, 8, makeDeviceRevision(hwInfo)); return makeDeviceIpVersion(12, 8, makeDeviceRevision(hwInfo));

View File

@ -1817,7 +1817,8 @@ TEST_F(CsrSelectionCommandQueueWithBlitterTests, givenBlitterPresentAndLocalToLo
DebugManagerStateRestore restore{}; DebugManagerStateRestore restore{};
DebugManager.flags.EnableBlitterForEnqueueOperations.set(1); DebugManager.flags.EnableBlitterForEnqueueOperations.set(1);
const bool hwPreference = ClHwHelper::get(::defaultHwInfo->platform.eRenderCoreFamily).preferBlitterForLocalToLocalTransfers(); auto &clCoreHelper = clDevice->getRootDeviceEnvironment().getHelper<ClCoreHelper>();
const bool hwPreference = clCoreHelper.preferBlitterForLocalToLocalTransfers();
const auto &hwPreferenceCsr = hwPreference ? *queue->getBcsCommandStreamReceiver(aub_stream::ENGINE_BCS) : queue->getGpgpuCommandStreamReceiver(); const auto &hwPreferenceCsr = hwPreference ? *queue->getBcsCommandStreamReceiver(aub_stream::ENGINE_BCS) : queue->getGpgpuCommandStreamReceiver();
BuiltinOpParams builtinOpParams{}; BuiltinOpParams builtinOpParams{};

View File

@ -1324,7 +1324,9 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenDebugFlagSetToOneWhenEnqueueingCopyLocal
MockBuffer dstMemObj{dstGraphicsAllocation}; MockBuffer dstMemObj{dstGraphicsAllocation};
srcGraphicsAllocation.memoryPool = MemoryPool::LocalMemory; srcGraphicsAllocation.memoryPool = MemoryPool::LocalMemory;
dstGraphicsAllocation.memoryPool = MemoryPool::LocalMemory; dstGraphicsAllocation.memoryPool = MemoryPool::LocalMemory;
const bool preferBlitterHw = ClHwHelper::get(::defaultHwInfo->platform.eRenderCoreFamily).preferBlitterForLocalToLocalTransfers();
auto &clCoreHelper = this->device->getRootDeviceEnvironment().getHelper<ClCoreHelper>();
const bool preferBlitterHw = clCoreHelper.preferBlitterForLocalToLocalTransfers();
uint32_t expectedBlitBufferCalled = 0; uint32_t expectedBlitBufferCalled = 0;
DebugManager.flags.PreferCopyEngineForCopyBufferToBuffer.set(-1); DebugManager.flags.PreferCopyEngineForCopyBufferToBuffer.set(-1);

View File

@ -24,15 +24,23 @@
#include "hw_cmds_xe_hpc_core_base.h" #include "hw_cmds_xe_hpc_core_base.h"
using HwHelperTestsXeHpcCore = Test<ClDeviceFixture>; using ClHwHelperTestsXeHpcCore = Test<ClDeviceFixture>;
;
XE_HPC_CORETEST_F(HwHelperTestsXeHpcCore, givenXeHpcThenAuxTranslationIsNotRequired) { XE_HPC_CORETEST_F(ClHwHelperTestsXeHpcCore, givenXeHpcThenAuxTranslationIsNotRequired) {
auto &clCoreHelper = getHelper<ClCoreHelper>(); auto &clCoreHelper = getHelper<ClCoreHelper>();
KernelInfo kernelInfo{}; KernelInfo kernelInfo{};
EXPECT_FALSE(clCoreHelper.requiresAuxResolves(kernelInfo, getRootDeviceEnvironment())); EXPECT_FALSE(clCoreHelper.requiresAuxResolves(kernelInfo, getRootDeviceEnvironment()));
} }
XE_HPC_CORETEST_F(ClHwHelperTestsXeHpcCore, WhenCheckingPreferenceForBlitterForLocalToLocalTransfersThenReturnFalse) {
auto &clCoreHelper = getHelper<ClCoreHelper>();
EXPECT_FALSE(clCoreHelper.preferBlitterForLocalToLocalTransfers());
}
using HwHelperTestsXeHpcCore = Test<ClDeviceFixture>;
XE_HPC_CORETEST_F(HwHelperTestsXeHpcCore, givenHwHelperwhenAskingForDcFlushThenReturnFalse) { XE_HPC_CORETEST_F(HwHelperTestsXeHpcCore, givenHwHelperwhenAskingForDcFlushThenReturnFalse) {
EXPECT_FALSE(MemorySynchronizationCommands<FamilyType>::getDcFlushEnable(true, *defaultHwInfo)); EXPECT_FALSE(MemorySynchronizationCommands<FamilyType>::getDcFlushEnable(true, *defaultHwInfo));
} }
@ -717,10 +725,6 @@ XE_HPC_CORETEST_F(HwHelperTestsXeHpcCore, WhenCheckingSipWAThenFalseIsReturned)
EXPECT_FALSE(HwHelper::get(renderCoreFamily).isSipWANeeded(*defaultHwInfo)); EXPECT_FALSE(HwHelper::get(renderCoreFamily).isSipWANeeded(*defaultHwInfo));
} }
XE_HPC_CORETEST_F(HwHelperTestsXeHpcCore, WhenCheckingPreferenceForBlitterForLocalToLocalTransfersThenReturnFalse) {
EXPECT_FALSE(ClHwHelper::get(renderCoreFamily).preferBlitterForLocalToLocalTransfers());
}
XE_HPC_CORETEST_F(HwHelperTestsXeHpcCore, givenBdA0WhenBcsSubDeviceSupportIsCheckedThenReturnFalse) { XE_HPC_CORETEST_F(HwHelperTestsXeHpcCore, givenBdA0WhenBcsSubDeviceSupportIsCheckedThenReturnFalse) {
DebugManagerStateRestore restore; DebugManagerStateRestore restore;