mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
fix: using releaseHelper to determine MTP enablement
Related-To: NEO-12466 Signed-off-by: Andrzej Koska <andrzej.koska@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
e4be88dff0
commit
6abc5eb1a1
@@ -42,5 +42,6 @@ class MockReleaseHelper : public ReleaseHelper {
|
||||
ADDMETHOD_CONST_NOBASE(getAdditionalFp16Caps, uint32_t, {}, ());
|
||||
ADDMETHOD_CONST_NOBASE(getAdditionalExtraCaps, uint32_t, {}, ());
|
||||
ADDMETHOD_CONST_NOBASE(isLocalOnlyAllowed, bool, {}, ());
|
||||
ADDMETHOD_CONST_NOBASE(isMidThreadPreemptionDisallowedForRayTracingKernels, bool, false, ());
|
||||
};
|
||||
} // namespace NEO
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "shared/source/memory_manager/allocation_properties.h"
|
||||
#include "shared/source/memory_manager/os_agnostic_memory_manager.h"
|
||||
#include "shared/source/os_interface/product_helper_hw.h"
|
||||
#include "shared/source/release_helper/release_helper.h"
|
||||
#include "shared/test/common/cmd_parse/hw_parse.h"
|
||||
#include "shared/test/common/helpers/debug_manager_state_restore.h"
|
||||
#include "shared/test/common/helpers/dispatch_flags_helper.h"
|
||||
@@ -19,6 +20,7 @@
|
||||
#include "shared/test/common/mocks/mock_builtins.h"
|
||||
#include "shared/test/common/mocks/mock_device.h"
|
||||
#include "shared/test/common/mocks/mock_graphics_allocation.h"
|
||||
#include "shared/test/common/mocks/mock_release_helper.h"
|
||||
#include "shared/test/common/test_macros/hw_test.h"
|
||||
#include "shared/test/unit_test/fixtures/preemption_fixture.h"
|
||||
|
||||
@@ -603,35 +605,55 @@ HWTEST_F(MidThreadPreemptionTests, givenKernelWithRayTracingWhenGettingPreemptio
|
||||
kernelDescriptor.kernelAttributes.flags.hasRTCalls = true;
|
||||
|
||||
auto flags = PreemptionHelper::createPreemptionLevelFlags(*device, &kernelDescriptor);
|
||||
EXPECT_FALSE(flags.flags.disabledMidThreadPreemptionKernel);
|
||||
|
||||
NEO::ReleaseHelper *releaseHelper = device->getRootDeviceEnvironment().getReleaseHelper();
|
||||
if (releaseHelper) {
|
||||
EXPECT_EQ(flags.flags.disabledMidThreadPreemptionKernel, releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
} else {
|
||||
EXPECT_FALSE(flags.flags.disabledMidThreadPreemptionKernel);
|
||||
}
|
||||
}
|
||||
|
||||
class MockProductHelperForRtKernels : public ProductHelperHw<IGFX_UNKNOWN> {
|
||||
public:
|
||||
bool isMidThreadPreemptionDisallowedForRayTracingKernels() const override {
|
||||
return !midThreadPreemptionAllowedForRayTracing;
|
||||
}
|
||||
bool midThreadPreemptionAllowedForRayTracing = true;
|
||||
};
|
||||
HWTEST_F(MidThreadPreemptionTests, givenKernelWithRayTracingAndMidThreadPreemptionIsDisabledWhenGettingPreemptionFlagsThenMidThreadPreemptionIsDisabled) {
|
||||
|
||||
HWTEST_F(MidThreadPreemptionTests, givenKernelWithRayTracingWhenGettingPreemptionFlagsThenMidThreadPreemptionIsEnabledBasedOnProductHelperCapability) {
|
||||
MockExecutionEnvironment mockExecutionEnvironment{};
|
||||
|
||||
RAIIProductHelperFactory<MockProductHelperForRtKernels> productHelperBackup{*mockExecutionEnvironment.rootDeviceEnvironments[0]};
|
||||
auto device = std::unique_ptr<MockDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr));
|
||||
|
||||
KernelDescriptor kernelDescriptor{};
|
||||
|
||||
kernelDescriptor.kernelAttributes.flags.hasRTCalls = true;
|
||||
auto &productHelper = static_cast<MockProductHelperForRtKernels &>(device->getRootDeviceEnvironment().getHelper<ProductHelper>());
|
||||
{
|
||||
productHelper.midThreadPreemptionAllowedForRayTracing = true;
|
||||
auto flags = PreemptionHelper::createPreemptionLevelFlags(*device, &kernelDescriptor);
|
||||
|
||||
auto releaseHelper = std::make_unique<MockReleaseHelper>();
|
||||
releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernelsResult = true;
|
||||
device->getRootDeviceEnvironmentRef().releaseHelper = std::move(releaseHelper);
|
||||
auto flags = PreemptionHelper::createPreemptionLevelFlags(*device, &kernelDescriptor);
|
||||
EXPECT_TRUE(flags.flags.disabledMidThreadPreemptionKernel);
|
||||
}
|
||||
|
||||
HWTEST_F(MidThreadPreemptionTests, givenKernelWithRayTracingAndMidThreadPreemptionIsEnabledWhenGettingPreemptionFlagsThenMidThreadPreemptionIsEnabled) {
|
||||
|
||||
auto device = std::unique_ptr<MockDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr));
|
||||
|
||||
KernelDescriptor kernelDescriptor{};
|
||||
|
||||
kernelDescriptor.kernelAttributes.flags.hasRTCalls = true;
|
||||
|
||||
auto releaseHelper = std::make_unique<MockReleaseHelper>();
|
||||
releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernelsResult = false;
|
||||
device->getRootDeviceEnvironmentRef().releaseHelper = std::move(releaseHelper);
|
||||
auto flags = PreemptionHelper::createPreemptionLevelFlags(*device, &kernelDescriptor);
|
||||
EXPECT_FALSE(flags.flags.disabledMidThreadPreemptionKernel);
|
||||
}
|
||||
|
||||
HWTEST_F(MidThreadPreemptionTests, givenKernelWithRayTracingWhenGettingPreemptionFlagsThenMidThreadPreemptionIsEnabledBasedOnReleaseHelperCapability) {
|
||||
MockExecutionEnvironment mockExecutionEnvironment{};
|
||||
auto device = std::unique_ptr<MockDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr));
|
||||
KernelDescriptor kernelDescriptor{};
|
||||
kernelDescriptor.kernelAttributes.flags.hasRTCalls = true;
|
||||
NEO::ReleaseHelper *releaseHelper = device->getRootDeviceEnvironment().getReleaseHelper();
|
||||
auto flags = PreemptionHelper::createPreemptionLevelFlags(*device, &kernelDescriptor);
|
||||
if (releaseHelper) {
|
||||
EXPECT_EQ(flags.flags.disabledMidThreadPreemptionKernel, releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
} else {
|
||||
EXPECT_FALSE(flags.flags.disabledMidThreadPreemptionKernel);
|
||||
}
|
||||
{
|
||||
productHelper.midThreadPreemptionAllowedForRayTracing = false;
|
||||
auto flags = PreemptionHelper::createPreemptionLevelFlags(*device, &kernelDescriptor);
|
||||
EXPECT_TRUE(flags.flags.disabledMidThreadPreemptionKernel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ TEST_F(ReleaseHelper1255Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
||||
EXPECT_TRUE(releaseHelper->isGlobalBindlessAllocatorEnabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ TEST_F(ReleaseHelper1256Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
||||
EXPECT_TRUE(releaseHelper->isGlobalBindlessAllocatorEnabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ TEST_F(ReleaseHelper1257Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
||||
EXPECT_TRUE(releaseHelper->isGlobalBindlessAllocatorEnabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ TEST_F(ReleaseHelper1260Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
||||
EXPECT_TRUE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ TEST_F(ReleaseHelper1261Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
||||
EXPECT_TRUE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ TEST_F(ReleaseHelper1270Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
||||
EXPECT_TRUE(releaseHelper->isGlobalBindlessAllocatorEnabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ TEST_F(ReleaseHelper1271Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
||||
EXPECT_TRUE(releaseHelper->isGlobalBindlessAllocatorEnabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ TEST_F(ReleaseHelper1274Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
||||
EXPECT_TRUE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ TEST_F(ReleaseHelper2001Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
||||
EXPECT_FALSE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_TRUE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ TEST_F(ReleaseHelper2004Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
||||
EXPECT_FALSE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_TRUE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "shared/source/xe2_hpg_core/hw_cmds_bmg.h"
|
||||
#include "shared/source/xe2_hpg_core/hw_info_xe2_hpg_core.h"
|
||||
#include "shared/test/common/helpers/default_hw_info.h"
|
||||
#include "shared/test/common/mocks/mock_release_helper.h"
|
||||
#include "shared/test/common/test_macros/header/per_product_test_definitions.h"
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
#include "shared/test/unit_test/os_interface/product_helper_tests.h"
|
||||
@@ -34,7 +35,7 @@ BMGTEST_F(BmgProductHelper, givenProductHelperWhenGettingEvictIfNecessaryFlagSup
|
||||
|
||||
BMGTEST_F(BmgProductHelper, whenGettingMidThreadPreemptionSupportForRtKernelsThenExpectNoSupport) {
|
||||
|
||||
EXPECT_TRUE(productHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
EXPECT_TRUE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
|
||||
BMGTEST_F(BmgProductHelper, givenBmgProductHelperWhenIsInitBuiltinAsyncSupportedThenReturnFalse) {
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "shared/source/xe2_hpg_core/hw_info_xe2_hpg_core.h"
|
||||
#include "shared/test/common/helpers/debug_manager_state_restore.h"
|
||||
#include "shared/test/common/helpers/default_hw_info.h"
|
||||
#include "shared/test/common/mocks/mock_release_helper.h"
|
||||
#include "shared/test/common/test_macros/header/per_product_test_definitions.h"
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
#include "shared/test/unit_test/os_interface/product_helper_tests.h"
|
||||
@@ -36,7 +37,7 @@ LNLTEST_F(LnlProductHelper, givenProductHelperWhenGettingEvictIfNecessaryFlagSup
|
||||
|
||||
LNLTEST_F(LnlProductHelper, whenGettingMidThreadPreemptionSupportForRtKernelsThenExpectNoSupport) {
|
||||
|
||||
EXPECT_TRUE(productHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
EXPECT_TRUE(releaseHelper->isMidThreadPreemptionDisallowedForRayTracingKernels());
|
||||
}
|
||||
|
||||
LNLTEST_F(LnlProductHelper, givenProductHelperWhenGetCommandsStreamPropertiesSupportThenExpectCorrectValues) {
|
||||
|
||||
Reference in New Issue
Block a user