fix: state cache invalidation WA for xe3

Related-To: NEO-16281, NEO-16405

Signed-off-by: Jaroslaw Warchulski <jaroslaw.warchulski@intel.com>
This commit is contained in:
Jaroslaw Warchulski
2025-10-15 10:29:20 +00:00
committed by Compute-Runtime-Automation
parent efc7bcba4b
commit ebdf993a25
34 changed files with 296 additions and 54 deletions

View File

@@ -70,6 +70,7 @@ class ReleaseHelper {
virtual bool shouldQueryPeerAccess() const = 0;
virtual bool isSpirSupported() const = 0;
virtual bool isSingleDispatchRequiredForMultiCCS() const = 0;
virtual bool isStateCacheInvalidationWaRequired() const = 0;
protected:
ReleaseHelper(HardwareIpVersion hardwareIpVersion) : hardwareIpVersion(hardwareIpVersion) {}
@@ -119,6 +120,7 @@ class ReleaseHelperHw : public ReleaseHelper {
bool shouldQueryPeerAccess() const override;
bool isSpirSupported() const override;
bool isSingleDispatchRequiredForMultiCCS() const override;
bool isStateCacheInvalidationWaRequired() const override;
protected:
ReleaseHelperHw(HardwareIpVersion hardwareIpVersion) : ReleaseHelper(hardwareIpVersion) {}

View File

@@ -196,4 +196,9 @@ bool ReleaseHelperHw<releaseType>::isSingleDispatchRequiredForMultiCCS() const {
return false;
}
template <ReleaseType releaseType>
bool ReleaseHelperHw<releaseType>::isStateCacheInvalidationWaRequired() const {
return false;
}
} // namespace NEO

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024 Intel Corporation
* Copyright (C) 2024-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -33,4 +33,9 @@ const SizeToPreferredSlmValueArray &ReleaseHelperHw<release>::getSizeToPreferred
return sizeToPreferredSlmValue;
}
template <>
bool ReleaseHelperHw<release>::isStateCacheInvalidationWaRequired() const {
return true;
}
} // namespace NEO

View File

@@ -48,6 +48,7 @@ class MockReleaseHelper : public ReleaseHelper {
ADDMETHOD_CONST_NOBASE(shouldQueryPeerAccess, bool, false, ());
ADDMETHOD_CONST_NOBASE(isSpirSupported, bool, true, ());
ADDMETHOD_CONST_NOBASE(isSingleDispatchRequiredForMultiCCS, bool, false, ());
ADDMETHOD_CONST_NOBASE(isStateCacheInvalidationWaRequired, bool, false, ());
const SizeToPreferredSlmValueArray &getSizeToPreferredSlmValue(bool isHeapless) const override {
static SizeToPreferredSlmValueArray sizeToPreferredSlmValue = {};

View File

@@ -128,4 +128,8 @@ TEST_F(ReleaseHelper1255Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper1255Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper1255Tests, whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
}

View File

@@ -128,4 +128,8 @@ TEST_F(ReleaseHelper1256Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper1256Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper1256Tests, whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
}

View File

@@ -128,4 +128,8 @@ TEST_F(ReleaseHelper1257Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper1257Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper1257Tests, whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
}

View File

@@ -113,4 +113,8 @@ TEST_F(ReleaseHelper1260Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper1260Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper1260Tests, whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
}

View File

@@ -112,4 +112,8 @@ TEST_F(ReleaseHelper1261Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper1261Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper1261Tests, whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
}

View File

@@ -122,4 +122,8 @@ TEST_F(ReleaseHelper1270Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper1270Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper1270Tests, whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
}

View File

@@ -122,4 +122,8 @@ TEST_F(ReleaseHelper1271Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper1271Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper1271Tests, whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
}

View File

@@ -128,4 +128,8 @@ TEST_F(ReleaseHelper1274Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper1274Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper1274Tests, whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
}

View File

@@ -121,4 +121,8 @@ TEST_F(ReleaseHelper2001Tests, whenShouldQueryPeerAccessCalledThenTrueReturned)
TEST_F(ReleaseHelper2001Tests, whenIsSingleDispatchRequiredForMultiCCSThenTrueReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenTrueReturned();
}
}
TEST_F(ReleaseHelper2001Tests, whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
}

View File

@@ -121,4 +121,8 @@ TEST_F(ReleaseHelper2002Tests, whenShouldQueryPeerAccessCalledThenTrueReturned)
TEST_F(ReleaseHelper2002Tests, whenIsSingleDispatchRequiredForMultiCCSThenTrueReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenTrueReturned();
}
}
TEST_F(ReleaseHelper2002Tests, whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
}

View File

@@ -124,4 +124,8 @@ TEST_F(ReleaseHelper2004Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper2004Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper2004Tests, whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
}

View File

@@ -122,4 +122,8 @@ TEST_F(ReleaseHelper3000Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper3000Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper3000Tests, whenIsStateCacheInvalidationWaRequiredCalledThenTrueReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenTrueReturned();
}

View File

@@ -122,4 +122,8 @@ TEST_F(ReleaseHelper3001Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper3001Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper3001Tests, whenIsStateCacheInvalidationWaRequiredCalledThenTrueReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenTrueReturned();
}

View File

@@ -122,4 +122,8 @@ TEST_F(ReleaseHelper3003Tests, whenShouldQueryPeerAccessCalledThenFalseReturned)
TEST_F(ReleaseHelper3003Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) {
whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
}
}
TEST_F(ReleaseHelper3003Tests, whenIsStateCacheInvalidationWaRequiredCalledThenTrueReturned) {
whenIsStateCacheInvalidationWaRequiredCalledThenTrueReturned();
}

View File

@@ -231,4 +231,22 @@ void ReleaseHelperTestsBase::whenIsSingleDispatchRequiredForMultiCCSCalledThenTr
ASSERT_NE(nullptr, releaseHelper);
EXPECT_TRUE(releaseHelper->isSingleDispatchRequiredForMultiCCS());
}
}
}
void ReleaseHelperTestsBase::whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned() {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;
releaseHelper = ReleaseHelper::create(ipVersion);
ASSERT_NE(nullptr, releaseHelper);
EXPECT_FALSE(releaseHelper->isStateCacheInvalidationWaRequired());
}
}
void ReleaseHelperTestsBase::whenIsStateCacheInvalidationWaRequiredCalledThenTrueReturned() {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;
releaseHelper = ReleaseHelper::create(ipVersion);
ASSERT_NE(nullptr, releaseHelper);
EXPECT_TRUE(releaseHelper->isStateCacheInvalidationWaRequired());
}
}

View File

@@ -41,6 +41,8 @@ struct ReleaseHelperTestsBase : public ::testing::Test {
void whenShouldQueryPeerAccessCalledThenTrueReturned();
void whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned();
void whenIsSingleDispatchRequiredForMultiCCSCalledThenTrueReturned();
void whenIsStateCacheInvalidationWaRequiredCalledThenFalseReturned();
void whenIsStateCacheInvalidationWaRequiredCalledThenTrueReturned();
virtual std::vector<uint32_t> getRevisions() = 0;
std::unique_ptr<ReleaseHelper> releaseHelper;