refactor: Move isDummyBlitWaRequired function to release helper

Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
Filip Hazubski
2024-11-15 12:06:13 +00:00
committed by Compute-Runtime-Automation
parent d526dc9223
commit 8797c326b6
39 changed files with 124 additions and 60 deletions

View File

@@ -10,6 +10,7 @@
#include "shared/source/command_stream/linear_stream.h"
#include "shared/source/debug_settings/debug_settings_manager.h"
#include "shared/source/kernel/kernel_descriptor.h"
#include "shared/source/release_helper/release_helper.h"
#include "shared/test/common/cmd_parse/hw_parse.h"
#include "shared/test/common/helpers/unit_test_helper.h"
@@ -122,8 +123,8 @@ size_t UnitTestHelper<GfxFamily>::getAdditionalDshSize(uint32_t iddCount) {
template <typename GfxFamily>
void UnitTestHelper<GfxFamily>::verifyDummyBlitWa(const RootDeviceEnvironment *rootDeviceEnvironment, GenCmdList::iterator &cmdIterator) {
const auto &productHelper = rootDeviceEnvironment->getProductHelper();
if (productHelper.isDummyBlitWaRequired()) {
const auto releaseHelper = rootDeviceEnvironment->getReleaseHelper();
if (releaseHelper->isDummyBlitWaRequired()) {
using XY_COLOR_BLT = typename GfxFamily::XY_COLOR_BLT;
auto dummyBltCmd = genCmdCast<XY_COLOR_BLT *>(*(cmdIterator++));
EXPECT_NE(nullptr, dummyBltCmd);

View File

@@ -40,6 +40,7 @@ class MockReleaseHelper : public ReleaseHelper {
ADDMETHOD_CONST_NOBASE(getStackSizePerRay, uint32_t, {}, ());
ADDMETHOD_CONST_NOBASE(isLocalOnlyAllowed, bool, {}, ());
ADDMETHOD_CONST_NOBASE(isDisablingMsaaRequired, bool, false, ());
ADDMETHOD_CONST_NOBASE(isDummyBlitWaRequired, bool, false, ());
const SizeToPreferredSlmValueArray &getSizeToPreferredSlmValue(bool isHeapless) const override {
static SizeToPreferredSlmValueArray sizeToPreferredSlmValue = {};

View File

@@ -44,8 +44,8 @@ bool UnitTestHelper<Family>::getComputeDispatchAllWalkerFromFrontEndCommand(cons
template <>
void UnitTestHelper<Family>::verifyDummyBlitWa(const RootDeviceEnvironment *rootDeviceEnvironment, GenCmdList::iterator &cmdIterator) {
const auto &productHelper = rootDeviceEnvironment->getProductHelper();
if (productHelper.isDummyBlitWaRequired()) {
const auto releaseHelper = rootDeviceEnvironment->getReleaseHelper();
if (releaseHelper->isDummyBlitWaRequired()) {
auto dummyBltCmd = genCmdCast<typename Family::MEM_SET *>(*(cmdIterator++));
EXPECT_NE(nullptr, dummyBltCmd);

View File

@@ -23,6 +23,7 @@
#include "shared/test/common/mocks/mock_gmm.h"
#include "shared/test/common/mocks/mock_gmm_client_context.h"
#include "shared/test/common/mocks/mock_gmm_resource_info.h"
#include "shared/test/common/mocks/mock_release_helper.h"
#include "shared/test/common/mocks/ult_device_factory.h"
#include "shared/test/common/test_macros/hw_test.h"
#include "shared/test/unit_test/helpers/blit_commands_helper_tests.inl"
@@ -503,25 +504,14 @@ HWTEST2_F(BlitTests, givenDebugVariableWhenDispatchBlitCommandsForImageRegionIsC
EXPECT_EQ(expectedOutput.str(), output);
}
template <PRODUCT_FAMILY gfxProduct>
class TestDummyBlitMockProductHelper : public ProductHelperHw<gfxProduct> {
public:
bool isDummyBlitWaRequired() const override {
return dummyBlitRequired;
}
uint32_t dummyBlitRequired = true;
};
HWTEST2_F(BlitTests, givenDispatchDummyBlitWhenDummyBlitWaRequiredThenDummyBlitIsProgrammedCorrectly, IsXeHPOrAbove) {
DebugManagerStateRestore dbgRestore;
debugManager.flags.ForceDummyBlitWa.set(-1);
auto &rootDeviceEnvironment = static_cast<MockRootDeviceEnvironment &>(pDevice->getRootDeviceEnvironmentRef());
RAIIProductHelperFactory<TestDummyBlitMockProductHelper<productFamily>> raii{
rootDeviceEnvironment};
auto &productHelper = *raii.mockProductHelper;
productHelper.dummyBlitRequired = true;
auto releaseHelper = new MockReleaseHelper();
releaseHelper->isDummyBlitWaRequiredResult = true;
rootDeviceEnvironment.releaseHelper.reset(releaseHelper);
uint32_t streamBuffer[100] = {};
LinearStream stream(streamBuffer, sizeof(streamBuffer));
@@ -621,11 +611,7 @@ HWTEST2_F(BlitTests, givenDispatchDummyBlitWhenDummyBlitWaNotRequiredThenAdditio
DebugManagerStateRestore dbgRestore;
debugManager.flags.ForceDummyBlitWa.set(-1);
auto &rootDeviceEnvironment = static_cast<MockRootDeviceEnvironment &>(pDevice->getRootDeviceEnvironmentRef());
RAIIProductHelperFactory<TestDummyBlitMockProductHelper<productFamily>> raii{
rootDeviceEnvironment};
auto &productHelper = *raii.mockProductHelper;
productHelper.dummyBlitRequired = false;
rootDeviceEnvironment.releaseHelper = std::make_unique<MockReleaseHelper>();
uint32_t streamBuffer[100] = {};
LinearStream stream(streamBuffer, sizeof(streamBuffer));

View File

@@ -841,10 +841,6 @@ HWTEST_F(ProductHelperTest, givenProductHelperWhenCheckingIsUnlockingLockedPtrNe
EXPECT_FALSE(productHelper->isUnlockingLockedPtrNecessary(pInHwInfo));
}
HWTEST_F(ProductHelperTest, givenProductHelperWhenCheckDummyBlitWaRequiredThenReturnFalse) {
EXPECT_FALSE(productHelper->isDummyBlitWaRequired());
}
HWTEST_F(ProductHelperTest, givenProductHelperAndKernelBinaryFormatsWhenCheckingIsDetectIndirectAccessInKernelSupportedThenCorrectValueIsReturned) {
KernelDescriptor kernelDescriptor;
const auto igcDetectIndirectVersion = INDIRECT_ACCESS_DETECTION_VERSION;

View File

@@ -72,6 +72,10 @@ TEST_F(ReleaseHelper1255Tests, whenIsLocalOnlyAllowedCalledThenTrueReturned) {
whenIsLocalOnlyAllowedCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1255Tests, whenIsDummyBlitWaRequiredCalledThenFalseReturned) {
whenIsDummyBlitWaRequiredCalledThenFalseReturned();
}
TEST_F(ReleaseHelper1255Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -72,6 +72,10 @@ TEST_F(ReleaseHelper1256Tests, whenIsLocalOnlyAllowedCalledThenTrueReturned) {
whenIsLocalOnlyAllowedCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1256Tests, whenIsDummyBlitWaRequiredCalledThenFalseReturned) {
whenIsDummyBlitWaRequiredCalledThenFalseReturned();
}
TEST_F(ReleaseHelper1256Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -72,6 +72,10 @@ TEST_F(ReleaseHelper1257Tests, whenIsLocalOnlyAllowedCalledThenTrueReturned) {
whenIsLocalOnlyAllowedCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1257Tests, whenIsDummyBlitWaRequiredCalledThenFalseReturned) {
whenIsDummyBlitWaRequiredCalledThenFalseReturned();
}
TEST_F(ReleaseHelper1257Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -57,6 +57,10 @@ TEST_F(ReleaseHelper1260Tests, whenIsLocalOnlyAllowedCalledThenTrueReturned) {
whenIsLocalOnlyAllowedCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1260Tests, whenIsDummyBlitWaRequiredCalledThenTrueReturned) {
whenIsDummyBlitWaRequiredCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1260Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -56,6 +56,10 @@ TEST_F(ReleaseHelper1261Tests, whenIsLocalOnlyAllowedCalledThenTrueReturned) {
whenIsLocalOnlyAllowedCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1261Tests, whenIsDummyBlitWaRequiredCalledThenTrueReturned) {
whenIsDummyBlitWaRequiredCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1261Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -69,6 +69,10 @@ TEST_F(ReleaseHelper1270Tests, whenIsLocalOnlyAllowedCalledThenTrueReturned) {
whenIsLocalOnlyAllowedCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1270Tests, whenIsDummyBlitWaRequiredCalledThenTrueReturned) {
whenIsDummyBlitWaRequiredCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1270Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -69,6 +69,10 @@ TEST_F(ReleaseHelper1271Tests, whenIsLocalOnlyAllowedCalledThenTrueReturned) {
whenIsLocalOnlyAllowedCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1271Tests, whenIsDummyBlitWaRequiredCalledThenTrueReturned) {
whenIsDummyBlitWaRequiredCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1271Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -71,6 +71,10 @@ TEST_F(ReleaseHelper1274Tests, whenIsLocalOnlyAllowedCalledThenTrueReturned) {
whenIsLocalOnlyAllowedCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1274Tests, whenIsDummyBlitWaRequiredCalledThenTrueReturned) {
whenIsDummyBlitWaRequiredCalledThenTrueReturned();
}
TEST_F(ReleaseHelper1274Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -72,6 +72,10 @@ TEST_F(ReleaseHelper2001Tests, whenIsLocalOnlyAllowedCalledThenFalseReturned) {
whenIsLocalOnlyAllowedCalledThenFalseReturned();
}
TEST_F(ReleaseHelper2001Tests, whenIsDummyBlitWaRequiredCalledThenFalseReturned) {
whenIsDummyBlitWaRequiredCalledThenFalseReturned();
}
TEST_F(ReleaseHelper2001Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -72,6 +72,10 @@ TEST_F(ReleaseHelper2004Tests, whenIsLocalOnlyAllowedCalledThenFalseReturned) {
whenIsLocalOnlyAllowedCalledThenFalseReturned();
}
TEST_F(ReleaseHelper2004Tests, whenIsDummyBlitWaRequiredCalledThenFalseReturned) {
whenIsDummyBlitWaRequiredCalledThenFalseReturned();
}
TEST_F(ReleaseHelper2004Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -74,6 +74,10 @@ TEST_F(ReleaseHelper3000Tests, whenIsLocalOnlyAllowedCalledThenFalseReturned) {
whenIsLocalOnlyAllowedCalledThenFalseReturned();
}
TEST_F(ReleaseHelper3000Tests, whenIsDummyBlitWaRequiredCalledThenFalseReturned) {
whenIsDummyBlitWaRequiredCalledThenFalseReturned();
}
TEST_F(ReleaseHelper3000Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -74,6 +74,10 @@ TEST_F(ReleaseHelper3001Tests, whenIsLocalOnlyAllowedCalledThenFalseReturned) {
whenIsLocalOnlyAllowedCalledThenFalseReturned();
}
TEST_F(ReleaseHelper3001Tests, whenIsDummyBlitWaRequiredCalledThenFalseReturned) {
whenIsDummyBlitWaRequiredCalledThenFalseReturned();
}
TEST_F(ReleaseHelper3001Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;

View File

@@ -171,3 +171,21 @@ void ReleaseHelperTestsBase::whenGettingThreadsPerEuConfigsThenCorrectValueIsRet
}
}
}
void ReleaseHelperTestsBase::whenIsDummyBlitWaRequiredCalledThenTrueReturned() {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;
releaseHelper = ReleaseHelper::create(ipVersion);
ASSERT_NE(nullptr, releaseHelper);
EXPECT_TRUE(releaseHelper->isDummyBlitWaRequired());
}
}
void ReleaseHelperTestsBase::whenIsDummyBlitWaRequiredCalledThenFalseReturned() {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;
releaseHelper = ReleaseHelper::create(ipVersion);
ASSERT_NE(nullptr, releaseHelper);
EXPECT_FALSE(releaseHelper->isDummyBlitWaRequired());
}
}

View File

@@ -28,6 +28,8 @@ struct ReleaseHelperTestsBase : public ::testing::Test {
void whenGettingTotalMemBankSizeThenReturn32GB();
void whenGettingAdditionalFp16AtomicCapabilitiesThenReturnNoCapabilities();
void whenGettingAdditionalExtraKernelCapabilitiesThenReturnNoCapabilities();
void whenIsDummyBlitWaRequiredCalledThenTrueReturned();
void whenIsDummyBlitWaRequiredCalledThenFalseReturned();
void whenIsLocalOnlyAllowedCalledThenTrueReturned();
void whenIsLocalOnlyAllowedCalledThenFalseReturned();
void whenGettingPreferredSlmSizeThenAllEntriesEmpty();

View File

@@ -10,4 +10,3 @@
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenAskedIfIsBlitSplitEnqueueWARequiredThenReturnFalse, IGFX_PVC);
HWTEST_EXCLUDE_PRODUCT(BlitTests, GivenCpuAccessToLocalMemoryWhenGettingMaxBlitSizeThenValuesAreOverriden_BlitPlatforms, IGFX_PVC);
HWTEST_EXCLUDE_PRODUCT(GfxCoreHelperTest, GivenCooperativeEngineSupportedAndNotUsedWhenAdjustMaxWorkGroupCountIsCalledThenSmallerValueIsReturned, IGFX_PVC);
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenCheckDummyBlitWaRequiredThenReturnFalse, IGFX_PVC);

View File

@@ -289,10 +289,6 @@ PVCTEST_F(PvcProductHelper, whenQueryingMaxNumSamplersThenReturnZero) {
EXPECT_EQ(0u, productHelper->getMaxNumSamplers());
}
PVCTEST_F(PvcProductHelper, whenCheckingIfDummyBlitWaIsRequiredThenTrueIsReturned) {
EXPECT_TRUE(productHelper->isDummyBlitWaRequired());
}
PVCTEST_F(PvcProductHelper, givenProductHelperWhenAskingForReadOnlyResourceSupportThenTrueReturned) {
EXPECT_TRUE(productHelper->supportReadOnlyAllocations());
}

View File

@@ -22,4 +22,3 @@ HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenIsAdjustWalkOrde
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenCheckBlitEnqueuePreferredThenReturnTrue, IGFX_ARROWLAKE);
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, whenGettingPreferredAllocationMethodThenNoPreferenceIsReturned, IGFX_ARROWLAKE);
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenBooleanUncachedWhenCallOverridePatIndexThenProperPatIndexIsReturned, IGFX_ARROWLAKE);
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenCheckDummyBlitWaRequiredThenReturnFalse, IGFX_ARROWLAKE);

View File

@@ -18,4 +18,3 @@ HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenIsAdjustWalkOrde
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenCheckBlitEnqueuePreferredThenReturnTrue, IGFX_METEORLAKE);
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, whenGettingPreferredAllocationMethodThenNoPreferenceIsReturned, IGFX_METEORLAKE);
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenBooleanUncachedWhenCallOverridePatIndexThenProperPatIndexIsReturned, IGFX_METEORLAKE);
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenCheckDummyBlitWaRequiredThenReturnFalse, IGFX_METEORLAKE);

View File

@@ -361,10 +361,6 @@ HWTEST2_F(XeLpgProductHelperTests, givenProductHelperWhenCallDeferMOCSToPatThenF
EXPECT_FALSE(productHelper.deferMOCSToPatIndex());
}
HWTEST2_F(XeLpgProductHelperTests, givenProductHelperWhenCheckDummyBlitWaRequiredThenReturnTrue, IsXeLpg) {
EXPECT_TRUE(productHelper->isDummyBlitWaRequired());
}
HWTEST2_F(XeLpgProductHelperTests, givenPatIndexWhenCheckIsCoherentAllocationThenReturnProperValue, IsXeLpg) {
std::array<uint64_t, 2> listOfCoherentPatIndexes = {3, 4};
for (auto patIndex : listOfCoherentPatIndexes) {