From 1f2c31250ffd3f73459028f6aa215035e88aa7ef Mon Sep 17 00:00:00 2001 From: Michal Mrozek Date: Thu, 20 May 2021 11:06:19 +0000 Subject: [PATCH] Add new interface to HwHelper Signed-off-by: Michal Mrozek --- opencl/test/unit_test/helpers/hw_helper_tests.cpp | 6 ++++++ shared/source/helpers/hw_helper.h | 3 +++ shared/source/helpers/hw_helper_bdw_plus.inl | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/opencl/test/unit_test/helpers/hw_helper_tests.cpp b/opencl/test/unit_test/helpers/hw_helper_tests.cpp index 1aac457487..4133234df8 100644 --- a/opencl/test/unit_test/helpers/hw_helper_tests.cpp +++ b/opencl/test/unit_test/helpers/hw_helper_tests.cpp @@ -1276,6 +1276,12 @@ TEST_F(HwHelperTest, whenGettingNumberOfCacheRegionsThenReturnZero) { EXPECT_EQ(0u, hwHelper.getNumCacheRegions(*defaultHwInfo)); } +HWCMDTEST_F(IGFX_GEN8_CORE, HwHelperTest, whenCheckingForSmallKernelPreferenceThenFalseIsReturned) { + auto &hwHelper = HwHelper::get(renderCoreFamily); + EXPECT_FALSE(hwHelper.preferSmallWorkgroupSizeForKernel(0u)); + EXPECT_FALSE(hwHelper.preferSmallWorkgroupSizeForKernel(20000u)); +} + TEST_F(HwHelperTest, givenGenHelperWhenKernelArgumentIsNotPureStatefulThenRequireNonAuxMode) { auto &clHwHelper = ClHwHelper::get(renderCoreFamily); diff --git a/shared/source/helpers/hw_helper.h b/shared/source/helpers/hw_helper.h index a82652ec7b..a28cb16688 100644 --- a/shared/source/helpers/hw_helper.h +++ b/shared/source/helpers/hw_helper.h @@ -71,6 +71,7 @@ class HwHelper { virtual bool isFenceAllocationRequired(const HardwareInfo &hwInfo) const = 0; virtual const AubMemDump::LrcaHelper &getCsTraits(aub_stream::EngineType engineType) const = 0; virtual bool hvAlign4Required() const = 0; + virtual bool preferSmallWorkgroupSizeForKernel(const size_t size) const = 0; virtual bool isBufferSizeSuitableForRenderCompression(const size_t size) const = 0; virtual bool obtainBlitterPreference(const HardwareInfo &hwInfo) const = 0; virtual FrontEndType getFrontEndType(const HardwareInfo &hwInfo) const = 0; @@ -388,6 +389,8 @@ class HwHelperHw : public HwHelper { void applyAdditionalCompressionSettings(Gmm &gmm, bool isNotCompressed) const override; + bool preferSmallWorkgroupSizeForKernel(const size_t size) const override; + protected: LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const override; diff --git a/shared/source/helpers/hw_helper_bdw_plus.inl b/shared/source/helpers/hw_helper_bdw_plus.inl index 17b71fa559..9a8bdc8b75 100644 --- a/shared/source/helpers/hw_helper_bdw_plus.inl +++ b/shared/source/helpers/hw_helper_bdw_plus.inl @@ -103,6 +103,11 @@ uint64_t HwHelperHw::getGpuTimeStampInNS(uint64_t timeStamp, double f return static_cast(timeStamp * frequency); } +template +inline bool HwHelperHw::preferSmallWorkgroupSizeForKernel(const size_t size) const { + return false; +} + constexpr uint32_t planarYuvMaxHeight = 16352; template