mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Reduce usage of global gfx core helper getter [3/n]
Related-To: NEO-6853 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
ac802931b3
commit
10dbfc0d19
@ -347,7 +347,7 @@ template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void CommandQueueHw<gfxCoreFamily>::programFrontEnd(uint64_t scratchAddress, uint32_t perThreadScratchSpaceSize, NEO::LinearStream &cmdStream, NEO::StreamProperties &streamProperties) {
|
||||
UNRECOVERABLE_IF(csr == nullptr);
|
||||
auto &hwInfo = device->getHwInfo();
|
||||
auto &gfxCoreHelper = NEO::GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = device->getGfxCoreHelper();
|
||||
auto engineGroupType = gfxCoreHelper.getEngineGroupType(csr->getOsContext().getEngineType(),
|
||||
csr->getOsContext().getEngineUsage(), hwInfo);
|
||||
auto pVfeState = NEO::PreambleHelper<GfxFamily>::getSpaceForVfeState(&cmdStream, hwInfo, engineGroupType);
|
||||
|
@ -91,7 +91,7 @@ struct Device : _ze_device_handle_t {
|
||||
virtual uint32_t getMOCS(bool l3enabled, bool l1enabled) = 0;
|
||||
virtual uint32_t getMaxNumHwThreads() const = 0;
|
||||
|
||||
virtual NEO::GfxCoreHelper &getGfxCoreHelper() = 0;
|
||||
virtual const NEO::GfxCoreHelper &getGfxCoreHelper() = 0;
|
||||
bool isImplicitScalingCapable() const {
|
||||
return implicitScalingCapable;
|
||||
}
|
||||
|
@ -223,7 +223,7 @@ void DeviceImp::adjustCommandQueueDesc(uint32_t &ordinal, uint32_t &index) {
|
||||
auto nodeOrdinal = NEO::DebugManager.flags.NodeOrdinal.get();
|
||||
if (nodeOrdinal != -1) {
|
||||
const NEO::HardwareInfo &hwInfo = neoDevice->getHardwareInfo();
|
||||
const NEO::GfxCoreHelper &gfxCoreHelper = NEO::GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
const NEO::GfxCoreHelper &gfxCoreHelper = neoDevice->getGfxCoreHelper();
|
||||
auto &engineGroups = getActiveDevice()->getRegularEngineGroups();
|
||||
|
||||
auto engineGroupType = gfxCoreHelper.getEngineGroupType(static_cast<aub_stream::EngineType>(nodeOrdinal), NEO::EngineUsage::Regular, hwInfo);
|
||||
@ -643,7 +643,7 @@ static constexpr ze_device_fp_flags_t defaultFpFlags = static_cast<ze_device_fp_
|
||||
ze_result_t DeviceImp::getKernelProperties(ze_device_module_properties_t *pKernelProperties) {
|
||||
const auto &hardwareInfo = this->neoDevice->getHardwareInfo();
|
||||
const auto &deviceInfo = this->neoDevice->getDeviceInfo();
|
||||
auto &gfxCoreHelper = NEO::GfxCoreHelper::get(hardwareInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = this->neoDevice->getGfxCoreHelper();
|
||||
|
||||
std::string ilVersion = deviceInfo.ilVersion;
|
||||
size_t majorVersionPos = ilVersion.find('_');
|
||||
@ -741,7 +741,7 @@ ze_result_t DeviceImp::getKernelProperties(ze_device_module_properties_t *pKerne
|
||||
ze_result_t DeviceImp::getProperties(ze_device_properties_t *pDeviceProperties) {
|
||||
const auto &deviceInfo = this->neoDevice->getDeviceInfo();
|
||||
const auto &hardwareInfo = this->neoDevice->getHardwareInfo();
|
||||
auto &gfxCoreHelper = NEO::GfxCoreHelper::get(hardwareInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = this->neoDevice->getGfxCoreHelper();
|
||||
|
||||
pDeviceProperties->type = ZE_DEVICE_TYPE_GPU;
|
||||
|
||||
@ -1045,9 +1045,8 @@ uint32_t DeviceImp::getMOCS(bool l3enabled, bool l1enabled) {
|
||||
return getGfxCoreHelper().getMocsIndex(*getNEODevice()->getGmmHelper(), l3enabled, l1enabled) << 1;
|
||||
}
|
||||
|
||||
NEO::GfxCoreHelper &DeviceImp::getGfxCoreHelper() {
|
||||
const auto &hardwareInfo = neoDevice->getHardwareInfo();
|
||||
return NEO::GfxCoreHelper::get(hardwareInfo.platform.eRenderCoreFamily);
|
||||
const NEO::GfxCoreHelper &DeviceImp::getGfxCoreHelper() {
|
||||
return this->neoDevice->getGfxCoreHelper();
|
||||
}
|
||||
|
||||
NEO::OSInterface &DeviceImp::getOsInterface() { return *neoDevice->getRootDeviceEnvironment().osInterface; }
|
||||
|
@ -70,7 +70,7 @@ struct DeviceImp : public Device {
|
||||
void *getExecEnvironment() override;
|
||||
BuiltinFunctionsLib *getBuiltinFunctionsLib() override;
|
||||
uint32_t getMOCS(bool l3enabled, bool l1enabled) override;
|
||||
NEO::GfxCoreHelper &getGfxCoreHelper() override;
|
||||
const NEO::GfxCoreHelper &getGfxCoreHelper() override;
|
||||
const NEO::HardwareInfo &getHwInfo() const override;
|
||||
NEO::OSInterface &getOsInterface() override;
|
||||
uint32_t getPlatformInfo() const override;
|
||||
@ -90,7 +90,7 @@ struct DeviceImp : public Device {
|
||||
const NEO::DeviceInfo &getDeviceInfo() const override;
|
||||
|
||||
void activateMetricGroups() override;
|
||||
void processAdditionalKernelProperties(NEO::GfxCoreHelper &gfxCoreHelper, ze_device_module_properties_t *pKernelProperties);
|
||||
void processAdditionalKernelProperties(const NEO::GfxCoreHelper &gfxCoreHelper, ze_device_module_properties_t *pKernelProperties);
|
||||
NEO::GraphicsAllocation *getDebugSurface() const override { return debugSurface; }
|
||||
void setDebugSurface(NEO::GraphicsAllocation *debugSurface) { this->debugSurface = debugSurface; };
|
||||
~DeviceImp() override;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
namespace L0 {
|
||||
|
||||
void DeviceImp::processAdditionalKernelProperties(NEO::GfxCoreHelper &gfxCoreHelper, ze_device_module_properties_t *pKernelProperties) {
|
||||
void DeviceImp::processAdditionalKernelProperties(const NEO::GfxCoreHelper &gfxCoreHelper, ze_device_module_properties_t *pKernelProperties) {
|
||||
}
|
||||
|
||||
DeviceImp::CmdListCreateFunPtrT DeviceImp::getCmdListCreateFunc(const ze_command_list_desc_t *desc) {
|
||||
|
@ -737,7 +737,7 @@ ze_result_t KernelImp::getProperties(ze_kernel_properties_t *pKernelProperties)
|
||||
reinterpret_cast<ze_kernel_preferred_group_size_properties_t *>(extendedProperties);
|
||||
|
||||
preferredGroupSizeProperties->preferredMultiple = this->kernelImmData->getKernelInfo()->getMaxSimdSize();
|
||||
auto &gfxCoreHelper = NEO::GfxCoreHelper::get(this->module->getDevice()->getHwInfo().platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = this->module->getDevice()->getGfxCoreHelper();
|
||||
if (gfxCoreHelper.isFusedEuDispatchEnabled(this->module->getDevice()->getHwInfo(), kernelDescriptor.kernelAttributes.flags.requiresDisabledEUFusion)) {
|
||||
preferredGroupSizeProperties->preferredMultiple *= 2;
|
||||
}
|
||||
@ -990,7 +990,7 @@ void KernelImp::setDebugSurface() {
|
||||
}
|
||||
}
|
||||
void *KernelImp::patchBindlessSurfaceState(NEO::GraphicsAllocation *alloc, uint32_t bindless) {
|
||||
auto &gfxCoreHelper = NEO::GfxCoreHelper::get(this->module->getDevice()->getHwInfo().platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = this->module->getDevice()->getGfxCoreHelper();
|
||||
auto surfaceStateSize = gfxCoreHelper.getRenderSurfaceStateSize();
|
||||
NEO::BindlessHeapsHelper *bindlessHeapsHelper = this->module->getDevice()->getNEODevice()->getBindlessHeapsHelper();
|
||||
auto ssInHeap = bindlessHeapsHelper->allocateSSInHeap(surfaceStateSize, alloc, NEO::BindlessHeapsHelper::GLOBAL_SSH);
|
||||
|
@ -18,8 +18,7 @@ inline void patchWithImplicitSurface(ArrayRef<uint8_t> crossThreadData, ArrayRef
|
||||
auto addressToPatch = allocation.getGpuAddress();
|
||||
size_t sizeToPatch = allocation.getUnderlyingBufferSize();
|
||||
|
||||
auto &hwInfo = device.getHardwareInfo();
|
||||
auto &gfxCoreHelper = NEO::GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = device.getGfxCoreHelper();
|
||||
auto isDebuggerActive = device.isDebuggerActive() || device.getDebugger() != nullptr;
|
||||
NEO::EncodeSurfaceStateArgs args;
|
||||
args.outMemory = surfaceState;
|
||||
|
@ -278,13 +278,15 @@ TEST_F(KernelImp, GivenNumChannelsZeroWhenSettingGroupSizeThenLocalIdsNotGenerat
|
||||
}
|
||||
|
||||
HWTEST_F(KernelImp, givenSurfaceStateHeapWhenPatchWithImplicitSurfaceCalledThenIsDebuggerActiveIsSetCorrectly) {
|
||||
static EncodeSurfaceStateArgs savedSurfaceStateArgs{};
|
||||
static size_t encodeBufferSurfaceStateCalled{};
|
||||
savedSurfaceStateArgs = {};
|
||||
encodeBufferSurfaceStateCalled = {};
|
||||
struct MockGfxCoreHelper : NEO::GfxCoreHelperHw<FamilyType> {
|
||||
void encodeBufferSurfaceState(EncodeSurfaceStateArgs &args) override {
|
||||
void encodeBufferSurfaceState(EncodeSurfaceStateArgs &args) const override {
|
||||
savedSurfaceStateArgs = args;
|
||||
++encodeBufferSurfaceStateCalled;
|
||||
}
|
||||
EncodeSurfaceStateArgs savedSurfaceStateArgs;
|
||||
size_t encodeBufferSurfaceStateCalled{0};
|
||||
};
|
||||
MockGfxCoreHelper gfxCoreHelper{};
|
||||
auto hwInfo = *defaultHwInfo.get();
|
||||
@ -299,13 +301,13 @@ HWTEST_F(KernelImp, givenSurfaceStateHeapWhenPatchWithImplicitSurfaceCalledThenI
|
||||
uintptr_t ptrToPatchInCrossThreadData = 0;
|
||||
NEO::MockGraphicsAllocation globalBuffer;
|
||||
ArgDescPointer ptr;
|
||||
ASSERT_EQ(gfxCoreHelper.encodeBufferSurfaceStateCalled, 0u);
|
||||
ASSERT_EQ(encodeBufferSurfaceStateCalled, 0u);
|
||||
{
|
||||
patchWithImplicitSurface(crossThreadDataArrayRef, surfaceStateHeapArrayRef,
|
||||
ptrToPatchInCrossThreadData,
|
||||
globalBuffer, ptr,
|
||||
*neoDevice, false, false);
|
||||
EXPECT_EQ(gfxCoreHelper.encodeBufferSurfaceStateCalled, 0u);
|
||||
EXPECT_EQ(encodeBufferSurfaceStateCalled, 0u);
|
||||
}
|
||||
{
|
||||
ptr.bindful = 1;
|
||||
@ -313,8 +315,8 @@ HWTEST_F(KernelImp, givenSurfaceStateHeapWhenPatchWithImplicitSurfaceCalledThenI
|
||||
ptrToPatchInCrossThreadData,
|
||||
globalBuffer, ptr,
|
||||
*neoDevice, false, false);
|
||||
ASSERT_EQ(gfxCoreHelper.encodeBufferSurfaceStateCalled, 1u);
|
||||
EXPECT_FALSE(gfxCoreHelper.savedSurfaceStateArgs.isDebuggerActive);
|
||||
ASSERT_EQ(encodeBufferSurfaceStateCalled, 1u);
|
||||
EXPECT_FALSE(savedSurfaceStateArgs.isDebuggerActive);
|
||||
}
|
||||
{
|
||||
neoDevice->setDebuggerActive(true);
|
||||
@ -322,8 +324,8 @@ HWTEST_F(KernelImp, givenSurfaceStateHeapWhenPatchWithImplicitSurfaceCalledThenI
|
||||
ptrToPatchInCrossThreadData,
|
||||
globalBuffer, ptr,
|
||||
*neoDevice, false, false);
|
||||
ASSERT_EQ(gfxCoreHelper.encodeBufferSurfaceStateCalled, 2u);
|
||||
EXPECT_TRUE(gfxCoreHelper.savedSurfaceStateArgs.isDebuggerActive);
|
||||
ASSERT_EQ(encodeBufferSurfaceStateCalled, 2u);
|
||||
EXPECT_TRUE(savedSurfaceStateArgs.isDebuggerActive);
|
||||
}
|
||||
{
|
||||
neoDevice->setDebuggerActive(false);
|
||||
@ -333,8 +335,8 @@ HWTEST_F(KernelImp, givenSurfaceStateHeapWhenPatchWithImplicitSurfaceCalledThenI
|
||||
ptrToPatchInCrossThreadData,
|
||||
globalBuffer, ptr,
|
||||
*neoDevice, false, false);
|
||||
ASSERT_EQ(gfxCoreHelper.encodeBufferSurfaceStateCalled, 3u);
|
||||
EXPECT_TRUE(gfxCoreHelper.savedSurfaceStateArgs.isDebuggerActive);
|
||||
ASSERT_EQ(encodeBufferSurfaceStateCalled, 3u);
|
||||
EXPECT_TRUE(savedSurfaceStateArgs.isDebuggerActive);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6044,7 +6044,7 @@ cl_int CL_API_CALL clEnqueueNDCountKernelINTEL(cl_command_queue commandQueue,
|
||||
}
|
||||
|
||||
auto &hardwareInfo = device.getHardwareInfo();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(hardwareInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = device.getGfxCoreHelper();
|
||||
auto engineGroupType = gfxCoreHelper.getEngineGroupType(pCommandQueue->getGpgpuEngine().getEngineType(),
|
||||
pCommandQueue->getGpgpuEngine().getEngineUsage(), hardwareInfo);
|
||||
if (!gfxCoreHelper.isCooperativeDispatchSupported(engineGroupType, hardwareInfo)) {
|
||||
|
@ -268,5 +268,8 @@ bool ClDevice::isPciBusInfoValid() const {
|
||||
return deviceInfo.pciBusInfo.pci_domain != PhysicalDevicePciBusInfo::invalidValue && deviceInfo.pciBusInfo.pci_bus != PhysicalDevicePciBusInfo::invalidValue &&
|
||||
deviceInfo.pciBusInfo.pci_device != PhysicalDevicePciBusInfo::invalidValue && deviceInfo.pciBusInfo.pci_function != PhysicalDevicePciBusInfo::invalidValue;
|
||||
}
|
||||
const GfxCoreHelper &ClDevice::getGfxCoreHelper() const {
|
||||
return device.getGfxCoreHelper();
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
@ -37,6 +37,7 @@ struct EngineControl;
|
||||
struct HardwareInfo;
|
||||
struct RootDeviceEnvironment;
|
||||
struct SelectorCopyEngine;
|
||||
class GfxCoreHelper;
|
||||
|
||||
template <>
|
||||
struct OpenCLObjectMapper<_cl_device_id> {
|
||||
@ -125,6 +126,7 @@ class ClDevice : public BaseObject<_cl_device_id> {
|
||||
MOCKABLE_VIRTUAL cl_command_queue_capabilities_intel getQueueFamilyCapabilities(EngineGroupType type);
|
||||
void getQueueFamilyName(char *outputName, EngineGroupType type);
|
||||
Platform *getPlatform() const;
|
||||
const GfxCoreHelper &getGfxCoreHelper() const;
|
||||
|
||||
protected:
|
||||
void initializeCaps();
|
||||
|
@ -26,7 +26,7 @@ Vec3<size_t> computeWorkgroupSize(const DispatchInfo &dispatchInfo) {
|
||||
if (kernel != nullptr) {
|
||||
auto &device = dispatchInfo.getClDevice();
|
||||
const auto &hwInfo = device.getHardwareInfo();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = device.getGfxCoreHelper();
|
||||
if (DebugManager.flags.EnableComputeWorkSizeND.get()) {
|
||||
WorkSizeInfo wsInfo = createWorkSizeInfoFromDispatchInfo(dispatchInfo);
|
||||
if (wsInfo.slmTotalSize == 0 && !wsInfo.hasBarriers && !wsInfo.imgUsed && gfxCoreHelper.preferSmallWorkgroupSizeForKernel(kernel->getKernelInfo().heapInfo.KernelUnpaddedSize, hwInfo) &&
|
||||
|
@ -84,7 +84,7 @@ CommandQueue::CommandQueue(Context *context, ClDevice *device, const cl_queue_pr
|
||||
|
||||
if (device) {
|
||||
auto &hwInfo = device->getHardwareInfo();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = device->getGfxCoreHelper();
|
||||
auto hwInfoConfig = HwInfoConfig::get(hwInfo.platform.eProductFamily);
|
||||
|
||||
bcsAllowed = hwInfoConfig->isBlitterFullySupported(hwInfo) &&
|
||||
@ -153,7 +153,7 @@ void CommandQueue::initializeGpgpu() const {
|
||||
std::lock_guard<std::mutex> lock(mutex);
|
||||
if (gpgpuEngine == nullptr) {
|
||||
auto &hwInfo = device->getDevice().getHardwareInfo();
|
||||
auto &gfxCoreHelper = NEO::GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = device->getGfxCoreHelper();
|
||||
|
||||
auto engineRoundRobinAvailable = gfxCoreHelper.isAssignEngineRoundRobinSupported(hwInfo) &&
|
||||
this->isAssignEngineRoundRobinEnabled();
|
||||
@ -305,7 +305,7 @@ CommandStreamReceiver &CommandQueue::selectCsrForBuiltinOperation(const CsrSelec
|
||||
void CommandQueue::constructBcsEngine(bool internalUsage) {
|
||||
if (bcsAllowed && !bcsInitialized) {
|
||||
auto &hwInfo = device->getHardwareInfo();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = device->getGfxCoreHelper();
|
||||
auto &neoDevice = device->getNearestGenericSubDevice(0)->getDevice();
|
||||
auto &selectorCopyEngine = neoDevice.getSelectorCopyEngine();
|
||||
auto bcsEngineType = EngineHelpers::getBcsEngineType(hwInfo, device->getDeviceBitfield(), selectorCopyEngine, internalUsage);
|
||||
@ -856,7 +856,7 @@ cl_uint CommandQueue::getQueueFamilyIndex() const {
|
||||
return queueFamilyIndex;
|
||||
} else {
|
||||
const auto &hwInfo = device->getHardwareInfo();
|
||||
const auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
const auto &gfxCoreHelper = device->getGfxCoreHelper();
|
||||
const auto engineGroupType = gfxCoreHelper.getEngineGroupType(getGpgpuEngine().getEngineType(), getGpgpuEngine().getEngineUsage(), hwInfo);
|
||||
const auto familyIndex = device->getDevice().getEngineGroupIndexFromEngineGroupType(engineGroupType);
|
||||
return static_cast<cl_uint>(familyIndex);
|
||||
@ -1096,7 +1096,7 @@ void CommandQueue::processProperties(const cl_queue_properties *properties) {
|
||||
if (nodeOrdinal != -1) {
|
||||
int currentEngineIndex = 0;
|
||||
const HardwareInfo &hwInfo = getDevice().getHardwareInfo();
|
||||
const GfxCoreHelper &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
const GfxCoreHelper &gfxCoreHelper = getDevice().getGfxCoreHelper();
|
||||
|
||||
auto engineGroupType = gfxCoreHelper.getEngineGroupType(static_cast<aub_stream::EngineType>(nodeOrdinal), EngineUsage::Regular, hwInfo);
|
||||
selectedQueueFamilyIndex = static_cast<cl_uint>(getDevice().getEngineGroupIndexFromEngineGroupType(engineGroupType));
|
||||
@ -1136,7 +1136,7 @@ void CommandQueue::processProperties(const cl_queue_properties *properties) {
|
||||
|
||||
void CommandQueue::overrideEngine(aub_stream::EngineType engineType, EngineUsage engineUsage) {
|
||||
const HardwareInfo &hwInfo = getDevice().getHardwareInfo();
|
||||
const GfxCoreHelper &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
const GfxCoreHelper &gfxCoreHelper = getDevice().getGfxCoreHelper();
|
||||
const EngineGroupType engineGroupType = gfxCoreHelper.getEngineGroupType(engineType, engineUsage, hwInfo);
|
||||
const bool isEngineCopyOnly = EngineHelper::isCopyOnlyEngineType(engineGroupType);
|
||||
|
||||
@ -1184,7 +1184,7 @@ void CommandQueue::assignDataToOverwrittenBcsNode(TagNodeBase *node) {
|
||||
}
|
||||
|
||||
bool CommandQueue::isWaitForTimestampsEnabled() const {
|
||||
const auto &gfxCoreHelper = GfxCoreHelper::get(getDevice().getHardwareInfo().platform.eRenderCoreFamily);
|
||||
const auto &gfxCoreHelper = getDevice().getGfxCoreHelper();
|
||||
const auto &hwInfoConfig = *HwInfoConfig::get(getDevice().getHardwareInfo().platform.eProductFamily);
|
||||
auto enabled = CommandQueue::isTimestampWaitEnabled();
|
||||
enabled &= gfxCoreHelper.isTimestampWaitSupportedForQueues();
|
||||
|
@ -168,6 +168,7 @@ template <typename GfxFamily>
|
||||
size_t EnqueueOperation<GfxFamily>::getTotalSizeRequiredCS(uint32_t eventType, const CsrDependencies &csrDeps, bool reserveProfilingCmdsSpace, bool reservePerfCounters, bool blitEnqueue, CommandQueue &commandQueue, const MultiDispatchInfo &multiDispatchInfo, bool isMarkerWithProfiling, bool eventsInWaitlist) {
|
||||
size_t expectedSizeCS = 0;
|
||||
auto &hwInfo = commandQueue.getDevice().getHardwareInfo();
|
||||
auto &gfxCoreHelper = commandQueue.getDevice().getGfxCoreHelper();
|
||||
auto &commandQueueHw = static_cast<CommandQueueHw<GfxFamily> &>(commandQueue);
|
||||
|
||||
if (blitEnqueue) {
|
||||
@ -199,7 +200,7 @@ size_t EnqueueOperation<GfxFamily>::getTotalSizeRequiredCS(uint32_t eventType, c
|
||||
}
|
||||
} else if (isMarkerWithProfiling) {
|
||||
expectedSizeCS += 2 * MemorySynchronizationCommands<GfxFamily>::getSizeForSingleBarrier(false);
|
||||
if (!GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily).useOnlyGlobalTimestamps()) {
|
||||
if (!gfxCoreHelper.useOnlyGlobalTimestamps()) {
|
||||
expectedSizeCS += 2 * EncodeStoreMMIO<GfxFamily>::size;
|
||||
}
|
||||
}
|
||||
|
@ -267,7 +267,7 @@ cl_ulong Event::getDelta(cl_ulong startTime,
|
||||
void Event::calculateSubmitTimestampData() {
|
||||
if (DebugManager.flags.EnableDeviceBasedTimestamps.get()) {
|
||||
auto &device = cmdQueue->getDevice();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(device.getHardwareInfo().platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = device.getGfxCoreHelper();
|
||||
double resolution = device.getDeviceInfo().profilingTimerResolution;
|
||||
|
||||
int64_t timerDiff = queueTimeStamp.CPUTimeinNS - gfxCoreHelper.getGpuTimeStampInNS(queueTimeStamp.GPUTimeStamp, resolution);
|
||||
@ -286,7 +286,7 @@ uint64_t Event::getTimeInNSFromTimestampData(const TimeStampData ×tamp) con
|
||||
|
||||
if (cmdQueue && DebugManager.flags.EnableDeviceBasedTimestamps.get()) {
|
||||
auto &device = cmdQueue->getDevice();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(device.getHardwareInfo().platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = device.getGfxCoreHelper();
|
||||
double resolution = device.getDeviceInfo().profilingTimerResolution;
|
||||
|
||||
return gfxCoreHelper.getGpuTimeStampInNS(timestamp.GPUTimeStamp, resolution);
|
||||
@ -324,7 +324,7 @@ bool Event::calcProfilingData() {
|
||||
calculateProfilingDataInternal(globalStartTS, globalEndTS, &globalEndTS, globalStartTS);
|
||||
|
||||
} else if (timeStampNode) {
|
||||
if (GfxCoreHelper::get(this->cmdQueue->getDevice().getHardwareInfo().platform.eRenderCoreFamily).useOnlyGlobalTimestamps()) {
|
||||
if (this->cmdQueue->getDevice().getGfxCoreHelper().useOnlyGlobalTimestamps()) {
|
||||
calculateProfilingDataInternal(
|
||||
timeStampNode->getGlobalStartValue(0),
|
||||
timeStampNode->getGlobalEndValue(0),
|
||||
@ -350,7 +350,7 @@ void Event::calculateProfilingDataInternal(uint64_t contextStartTS, uint64_t con
|
||||
uint64_t cpuCompleteDuration = 0;
|
||||
|
||||
auto &device = this->cmdQueue->getDevice();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(device.getHardwareInfo().platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = device.getGfxCoreHelper();
|
||||
auto frequency = device.getDeviceInfo().profilingTimerResolution;
|
||||
auto gpuQueueTimeStamp = gfxCoreHelper.getGpuTimeStampInNS(queueTimeStamp.GPUTimeStamp, frequency);
|
||||
|
||||
|
@ -137,8 +137,7 @@ template <typename GfxFamily>
|
||||
void HardwareCommandsHelper<GfxFamily>::programCacheFlushAfterWalkerCommand(LinearStream *commandStream, const CommandQueue &commandQueue, const Kernel *kernel, [[maybe_unused]] uint64_t postSyncAddress) {
|
||||
// 1. make sure previous kernel finished
|
||||
PipeControlArgs args;
|
||||
auto &hardwareInfo = commandQueue.getDevice().getHardwareInfo();
|
||||
args.unTypedDataPortCacheFlush = GfxCoreHelper::get(hardwareInfo.platform.eRenderCoreFamily).unTypedDataPortCacheFlushRequired();
|
||||
args.unTypedDataPortCacheFlush = commandQueue.getDevice().getGfxCoreHelper().unTypedDataPortCacheFlushRequired();
|
||||
|
||||
MemorySynchronizationCommands<GfxFamily>::addSingleBarrier(*commandStream, args);
|
||||
|
||||
@ -158,6 +157,7 @@ void HardwareCommandsHelper<GfxFamily>::programCacheFlushAfterWalkerCommand(Line
|
||||
postSyncAddressToFlush = postSyncAddress;
|
||||
}
|
||||
|
||||
auto &hardwareInfo = commandQueue.getDevice().getHardwareInfo();
|
||||
flushGpuCache<GfxFamily>(commandStream, range, postSyncAddressToFlush, hardwareInfo);
|
||||
}
|
||||
}
|
||||
|
@ -555,7 +555,7 @@ cl_int Kernel::getWorkGroupInfo(cl_kernel_work_group_info paramName,
|
||||
cl_ulong privateMemSize;
|
||||
size_t maxWorkgroupSize;
|
||||
const auto &hwInfo = clDevice.getHardwareInfo();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = clDevice.getGfxCoreHelper();
|
||||
auto &clGfxCoreHelper = clDevice.getRootDeviceEnvironment().getHelper<ClGfxCoreHelper>();
|
||||
GetInfoHelper info(paramValue, paramValueSize, paramValueSizeRet);
|
||||
|
||||
@ -2087,7 +2087,7 @@ uint64_t Kernel::getKernelStartAddress(const bool localIdsGenerationByRuntime, c
|
||||
kernelStartOffset += getStartOffset();
|
||||
|
||||
auto &hardwareInfo = getHardwareInfo();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(hardwareInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = getDevice().getGfxCoreHelper();
|
||||
|
||||
if (isCssUsed && gfxCoreHelper.isOffsetToSkipSetFFIDGPWARequired(hardwareInfo)) {
|
||||
kernelStartOffset += kernelInfo.kernelDescriptor.entryPoints.skipSetFFIDGP;
|
||||
@ -2096,7 +2096,7 @@ uint64_t Kernel::getKernelStartAddress(const bool localIdsGenerationByRuntime, c
|
||||
return kernelStartOffset;
|
||||
}
|
||||
void *Kernel::patchBindlessSurfaceState(NEO::GraphicsAllocation *alloc, uint32_t bindless) {
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(getDevice().getHardwareInfo().platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = getDevice().getGfxCoreHelper();
|
||||
auto surfaceStateSize = gfxCoreHelper.getRenderSurfaceStateSize();
|
||||
NEO::BindlessHeapsHelper *bindlessHeapsHelper = getDevice().getDevice().getBindlessHeapsHelper();
|
||||
auto ssInHeap = bindlessHeapsHelper->allocateSSInHeap(surfaceStateSize, alloc, NEO::BindlessHeapsHelper::GLOBAL_SSH);
|
||||
@ -2115,8 +2115,7 @@ uint32_t Kernel::getAdditionalKernelExecInfo() const {
|
||||
}
|
||||
|
||||
bool Kernel::requiresWaDisableRccRhwoOptimization() const {
|
||||
auto &hardwareInfo = getHardwareInfo();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(hardwareInfo.platform.eRenderCoreFamily);
|
||||
auto &gfxCoreHelper = getDevice().getGfxCoreHelper();
|
||||
auto rootDeviceIndex = getDevice().getRootDeviceIndex();
|
||||
|
||||
if (gfxCoreHelper.isWaDisableRccRhwoOptimizationRequired() && isUsingSharedObjArgs()) {
|
||||
|
@ -296,10 +296,13 @@ Buffer *Buffer::create(Context *context,
|
||||
allocationInfos[rootDeviceIndex] = {};
|
||||
auto &allocationInfo = allocationInfos[rootDeviceIndex];
|
||||
|
||||
auto hwInfo = (&memoryManager->peekExecutionEnvironment())->rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo();
|
||||
auto &executionEnvironment = memoryManager->peekExecutionEnvironment();
|
||||
auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[rootDeviceIndex];
|
||||
auto hwInfo = rootDeviceEnvironment.getHardwareInfo();
|
||||
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<GfxCoreHelper>();
|
||||
|
||||
bool compressionEnabled = MemObjHelper::isSuitableForCompression(GfxCoreHelper::compressedBuffersSupported(*hwInfo), memoryProperties, *context,
|
||||
GfxCoreHelper::get(hwInfo->platform.eRenderCoreFamily).isBufferSizeSuitableForCompression(size, *hwInfo));
|
||||
gfxCoreHelper.isBufferSizeSuitableForCompression(size, *hwInfo));
|
||||
|
||||
allocationInfo.allocationType = getGraphicsAllocationTypeAndCompressionPreference(memoryProperties, *context, compressionEnabled,
|
||||
memoryManager->isLocalMemorySupported(rootDeviceIndex));
|
||||
|
@ -148,7 +148,7 @@ Image *Image::create(Context *context,
|
||||
: imageWidth * surfaceFormat->surfaceFormat.ImageElementSizeInBytes;
|
||||
const auto hostPtrSlicePitch = getHostPtrSlicePitch(*imageDesc, hostPtrRowPitch, imageHeight);
|
||||
|
||||
auto &defaultGfxCoreHelper = GfxCoreHelper::get(context->getDevice(0)->getHardwareInfo().platform.eRenderCoreFamily);
|
||||
auto &defaultGfxCoreHelper = context->getDevice(0)->getGfxCoreHelper();
|
||||
imgInfo.linearStorage = defaultGfxCoreHelper.isLinearStoragePreferred(context->isSharedContext, Image::isImage1d(*imageDesc),
|
||||
memoryProperties.flags.forceLinearStorage);
|
||||
|
||||
@ -183,8 +183,9 @@ Image *Image::create(Context *context,
|
||||
auto &allocationInfo = allocationInfos[rootDeviceIndex];
|
||||
allocationInfo.zeroCopyAllowed = false;
|
||||
|
||||
auto &hwInfo = *memoryManager->peekExecutionEnvironment().rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
auto &rootDeviceEnvironment = *memoryManager->peekExecutionEnvironment().rootDeviceEnvironments[rootDeviceIndex];
|
||||
auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo();
|
||||
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<GfxCoreHelper>();
|
||||
|
||||
if (imageFromBuffer) {
|
||||
// Image from buffer - we never allocate memory, we use what buffer provides
|
||||
|
@ -73,7 +73,7 @@ std::string Program::getInternalOptions() const {
|
||||
CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::bindlessMode);
|
||||
}
|
||||
|
||||
auto enableStatelessToStatefulWithOffset = GfxCoreHelper::get(pClDevice->getHardwareInfo().platform.eRenderCoreFamily).isStatelessToStatefulWithOffsetSupported();
|
||||
auto enableStatelessToStatefulWithOffset = pClDevice->getGfxCoreHelper().isStatelessToStatefulWithOffsetSupported();
|
||||
if (DebugManager.flags.EnableStatelessToStatefulBufferOffsetOpt.get() != -1) {
|
||||
enableStatelessToStatefulWithOffset = DebugManager.flags.EnableStatelessToStatefulBufferOffsetOpt.get() != 0;
|
||||
}
|
||||
|
@ -107,14 +107,16 @@ Image *D3DTexture<D3D>::create2d(Context *context, D3DTexture2d *d3dTexture, cl_
|
||||
|
||||
auto d3dTextureObj = new D3DTexture<D3D>(context, d3dTexture, subresource, textureStaging, sharedResource);
|
||||
|
||||
auto hwInfo = memoryManager->peekExecutionEnvironment().rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo->platform.eRenderCoreFamily);
|
||||
auto &executionEnvironment = memoryManager->peekExecutionEnvironment();
|
||||
auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[rootDeviceIndex];
|
||||
auto hwInfo = rootDeviceEnvironment.getHardwareInfo();
|
||||
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<GfxCoreHelper>();
|
||||
const ClSurfaceFormatInfo *clSurfaceFormat = nullptr;
|
||||
if ((textureDesc.Format == DXGI_FORMAT_NV12) || (textureDesc.Format == DXGI_FORMAT_P010) || (textureDesc.Format == DXGI_FORMAT_P016)) {
|
||||
clSurfaceFormat = findYuvSurfaceFormatInfo(textureDesc.Format, imagePlane, flags);
|
||||
imgInfo.surfaceFormat = &clSurfaceFormat->surfaceFormat;
|
||||
} else {
|
||||
clSurfaceFormat = findSurfaceFormatInfo(alloc->getDefaultGmm()->gmmResourceInfo->getResourceFormat(), flags, context->getDevice(0)->getHardwareInfo().capabilityTable.supportsOcl21Features, gfxCoreHelper.packedFormatsSupported());
|
||||
clSurfaceFormat = findSurfaceFormatInfo(alloc->getDefaultGmm()->gmmResourceInfo->getResourceFormat(), flags, hwInfo->capabilityTable.supportsOcl21Features, gfxCoreHelper.packedFormatsSupported());
|
||||
imgInfo.surfaceFormat = &clSurfaceFormat->surfaceFormat;
|
||||
}
|
||||
|
||||
@ -197,10 +199,12 @@ Image *D3DTexture<D3D>::create3d(Context *context, D3DTexture3d *d3dTexture, cl_
|
||||
|
||||
updateImgInfoAndDesc(alloc->getDefaultGmm(), imgInfo, ImagePlane::NO_PLANE, 0u);
|
||||
|
||||
auto hwInfo = memoryManager->peekExecutionEnvironment().rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo();
|
||||
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo->platform.eRenderCoreFamily);
|
||||
auto &executionEnvironment = memoryManager->peekExecutionEnvironment();
|
||||
auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[rootDeviceIndex];
|
||||
auto hwInfo = rootDeviceEnvironment.getHardwareInfo();
|
||||
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<GfxCoreHelper>();
|
||||
auto d3dTextureObj = new D3DTexture<D3D>(context, d3dTexture, subresource, textureStaging, sharedResource);
|
||||
auto *clSurfaceFormat = findSurfaceFormatInfo(alloc->getDefaultGmm()->gmmResourceInfo->getResourceFormat(), flags, context->getDevice(0)->getHardwareInfo().capabilityTable.supportsOcl21Features, gfxCoreHelper.packedFormatsSupported());
|
||||
auto *clSurfaceFormat = findSurfaceFormatInfo(alloc->getDefaultGmm()->gmmResourceInfo->getResourceFormat(), flags, hwInfo->capabilityTable.supportsOcl21Features, gfxCoreHelper.packedFormatsSupported());
|
||||
imgInfo.qPitch = alloc->getDefaultGmm()->queryQPitch(GMM_RESOURCE_TYPE::RESOURCE_3D);
|
||||
|
||||
imgInfo.surfaceFormat = &clSurfaceFormat->surfaceFormat;
|
||||
|
@ -95,7 +95,7 @@ class GfxCoreHelper {
|
||||
static uint32_t getMaxThreadsForVfe(const HardwareInfo &hwInfo);
|
||||
virtual uint32_t getMetricsLibraryGenId() const = 0;
|
||||
virtual uint32_t getMocsIndex(const GmmHelper &gmmHelper, bool l3enabled, bool l1enabled) const = 0;
|
||||
virtual bool isLinearStoragePreferred(bool isSharedContext, bool isImage1d, bool forceLinearStorage) = 0;
|
||||
virtual bool isLinearStoragePreferred(bool isSharedContext, bool isImage1d, bool forceLinearStorage) const = 0;
|
||||
virtual uint8_t getBarriersCountFromHasBarriers(uint8_t hasBarriers) const = 0;
|
||||
virtual uint32_t calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) const = 0;
|
||||
virtual uint32_t alignSlmSize(uint32_t slmSize) = 0;
|
||||
@ -103,7 +103,7 @@ class GfxCoreHelper {
|
||||
|
||||
virtual bool isWaDisableRccRhwoOptimizationRequired() const = 0;
|
||||
virtual bool isAdditionalFeatureFlagRequired(const FeatureTable *featureTable) const = 0;
|
||||
virtual uint32_t getMinimalSIMDSize() = 0;
|
||||
virtual uint32_t getMinimalSIMDSize() const = 0;
|
||||
virtual bool isWorkaroundRequired(uint32_t lowestSteppingWithBug, uint32_t steppingWithFix, const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isOffsetToSkipSetFFIDGPWARequired(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isFusedEuDispatchEnabled(const HardwareInfo &hwInfo, bool disableEUFusionForKernel) const = 0;
|
||||
@ -156,7 +156,7 @@ class GfxCoreHelper {
|
||||
virtual uint64_t getMaxMemAllocSize() const = 0;
|
||||
virtual uint64_t getPatIndex(CacheRegion cacheRegion, CachePolicy cachePolicy) const = 0;
|
||||
virtual bool isStatelessToStatefulWithOffsetSupported() const = 0;
|
||||
virtual void encodeBufferSurfaceState(EncodeSurfaceStateArgs &args) = 0;
|
||||
virtual void encodeBufferSurfaceState(EncodeSurfaceStateArgs &args) const = 0;
|
||||
virtual bool disableL3CacheForDebug(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isRevisionSpecificBinaryBuiltinRequired() const = 0;
|
||||
virtual bool forceNonGpuCoherencyWA(bool requiresCoherency) const = 0;
|
||||
@ -271,7 +271,7 @@ class GfxCoreHelperHw : public GfxCoreHelper {
|
||||
|
||||
uint32_t getMocsIndex(const GmmHelper &gmmHelper, bool l3enabled, bool l1enabled) const override;
|
||||
|
||||
bool isLinearStoragePreferred(bool isSharedContext, bool isImage1d, bool forceLinearStorage) override;
|
||||
bool isLinearStoragePreferred(bool isSharedContext, bool isImage1d, bool forceLinearStorage) const override;
|
||||
|
||||
uint8_t getBarriersCountFromHasBarriers(uint8_t hasBarriers) const override;
|
||||
|
||||
@ -295,7 +295,7 @@ class GfxCoreHelperHw : public GfxCoreHelper {
|
||||
|
||||
bool isAdditionalFeatureFlagRequired(const FeatureTable *featureTable) const override;
|
||||
|
||||
uint32_t getMinimalSIMDSize() override;
|
||||
uint32_t getMinimalSIMDSize() const override;
|
||||
|
||||
uint64_t getGpuTimeStampInNS(uint64_t timeStamp, double frequency) const override;
|
||||
|
||||
@ -373,7 +373,7 @@ class GfxCoreHelperHw : public GfxCoreHelper {
|
||||
uint64_t getMaxMemAllocSize() const override;
|
||||
uint64_t getPatIndex(CacheRegion cacheRegion, CachePolicy cachePolicy) const override;
|
||||
bool isStatelessToStatefulWithOffsetSupported() const override;
|
||||
void encodeBufferSurfaceState(EncodeSurfaceStateArgs &args) override;
|
||||
void encodeBufferSurfaceState(EncodeSurfaceStateArgs &args) const override;
|
||||
bool disableL3CacheForDebug(const HardwareInfo &hwInfo) const override;
|
||||
bool isRevisionSpecificBinaryBuiltinRequired() const override;
|
||||
bool forceNonGpuCoherencyWA(bool requiresCoherency) const override;
|
||||
|
@ -410,7 +410,7 @@ uint32_t GfxCoreHelperHw<GfxFamily>::getMetricsLibraryGenId() const {
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
bool GfxCoreHelperHw<GfxFamily>::isLinearStoragePreferred(bool isSharedContext, bool isImage1d, bool forceLinearStorage) {
|
||||
bool GfxCoreHelperHw<GfxFamily>::isLinearStoragePreferred(bool isSharedContext, bool isImage1d, bool forceLinearStorage) const {
|
||||
if (DebugManager.flags.ForceLinearImages.get() || forceLinearStorage || isSharedContext || isImage1d) {
|
||||
return true;
|
||||
}
|
||||
@ -470,7 +470,7 @@ bool GfxCoreHelperHw<GfxFamily>::isWaDisableRccRhwoOptimizationRequired() const
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
inline uint32_t GfxCoreHelperHw<GfxFamily>::getMinimalSIMDSize() {
|
||||
inline uint32_t GfxCoreHelperHw<GfxFamily>::getMinimalSIMDSize() const {
|
||||
return 8u;
|
||||
}
|
||||
|
||||
@ -666,7 +666,7 @@ void GfxCoreHelperHw<GfxFamily>::adjustPreemptionSurfaceSize(size_t &csrSize) co
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
void GfxCoreHelperHw<GfxFamily>::encodeBufferSurfaceState(EncodeSurfaceStateArgs &args) {
|
||||
void GfxCoreHelperHw<GfxFamily>::encodeBufferSurfaceState(EncodeSurfaceStateArgs &args) const {
|
||||
EncodeSurfaceState<GfxFamily>::encodeBuffer(args);
|
||||
}
|
||||
|
||||
|
@ -115,7 +115,7 @@ void GfxCoreHelperHw<Family>::adjustDefaultEngineType(HardwareInfo *pHwInfo) {
|
||||
}
|
||||
|
||||
template <>
|
||||
bool GfxCoreHelperHw<Family>::isLinearStoragePreferred(bool isSharedContext, bool isImage1d, bool forceLinearStorage) {
|
||||
bool GfxCoreHelperHw<Family>::isLinearStoragePreferred(bool isSharedContext, bool isImage1d, bool forceLinearStorage) const {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -125,7 +125,7 @@ uint32_t GfxCoreHelperHw<Family>::getMetricsLibraryGenId() const {
|
||||
}
|
||||
|
||||
template <>
|
||||
uint32_t GfxCoreHelperHw<Family>::getMinimalSIMDSize() {
|
||||
uint32_t GfxCoreHelperHw<Family>::getMinimalSIMDSize() const {
|
||||
return 16u;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user