Skip to content

Commit e0d3db3

Browse files
fix: improve release helper
Related-To: NEO-7786 Signed-off-by: Kamil Kopryk <[email protected]>
1 parent 66eb1c9 commit e0d3db3

24 files changed

+104
-45
lines changed

shared/source/command_container/command_encoder_xehp_and_later.inl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -730,8 +730,9 @@ inline void EncodeWA<Family>::addPipeControlPriorToNonPipelinedStateCommand(Line
730730
const RootDeviceEnvironment &rootDeviceEnvironment, bool isRcs) {
731731

732732
auto &productHelper = rootDeviceEnvironment.getHelper<ProductHelper>();
733+
auto *releaseHelper = rootDeviceEnvironment.getReleaseHelper();
733734
auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo();
734-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs);
735+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs, releaseHelper);
735736

736737
if (isExtendedWARequired) {
737738
args.textureCacheInvalidationEnable = true;

shared/source/command_container/encode_compute_mode_tgllp_and_later.inl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ template <typename Family>
1616
size_t EncodeComputeMode<Family>::getCmdSizeForComputeMode(const RootDeviceEnvironment &rootDeviceEnvironment, bool hasSharedHandles, bool isRcs) {
1717
size_t size = 0;
1818
auto &productHelper = rootDeviceEnvironment.getHelper<ProductHelper>();
19+
auto *releaseHelper = rootDeviceEnvironment.getReleaseHelper();
1920
auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo();
20-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs);
21+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs, releaseHelper);
2122
std::ignore = isExtendedWARequired;
2223

2324
if (isBasicWARequired) {
@@ -39,9 +40,9 @@ inline void EncodeComputeMode<Family>::programComputeModeCommandWithSynchronizat
3940
bool hasSharedHandles, const RootDeviceEnvironment &rootDeviceEnvironment, bool isRcs, bool dcFlush, LogicalStateHelper *logicalStateHelper) {
4041
auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo();
4142
NEO::EncodeWA<Family>::encodeAdditionalPipelineSelect(csr, args, true, rootDeviceEnvironment, isRcs);
42-
43+
auto *releaseHelper = rootDeviceEnvironment.getReleaseHelper();
4344
auto &productHelper = rootDeviceEnvironment.getHelper<ProductHelper>();
44-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs);
45+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs, releaseHelper);
4546
std::ignore = isExtendedWARequired;
4647

4748
if (isBasicWARequired) {

shared/source/command_stream/command_stream_receiver.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -978,6 +978,10 @@ const ProductHelper &CommandStreamReceiver::getProductHelper() const {
978978
return peekRootDeviceEnvironment().getHelper<ProductHelper>();
979979
}
980980

981+
const ReleaseHelper *CommandStreamReceiver::getReleaseHelper() const {
982+
return peekRootDeviceEnvironment().getReleaseHelper();
983+
}
984+
981985
TaskCountType CommandStreamReceiver::getCompletionValue(const GraphicsAllocation &gfxAllocation) {
982986
if (completionFenceValuePointer) {
983987
return *completionFenceValuePointer;

shared/source/command_stream/command_stream_receiver.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class LogicalStateHelper;
5353
class KmdNotifyHelper;
5454
class GfxCoreHelper;
5555
class ProductHelper;
56+
class ReleaseHelper;
5657
enum class WaitStatus;
5758
struct AubSubCaptureStatus;
5859

@@ -350,6 +351,7 @@ class CommandStreamReceiver {
350351

351352
const GfxCoreHelper &getGfxCoreHelper() const;
352353
const ProductHelper &getProductHelper() const;
354+
const ReleaseHelper *getReleaseHelper() const;
353355

354356
MOCKABLE_VIRTUAL bool isGpuHangDetected() const;
355357
MOCKABLE_VIRTUAL bool checkGpuHangDetected(TimeType currentTime, TimeType &lastHangCheckTime) const;

shared/source/command_stream/command_stream_receiver_hw_dg2_and_later.inl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ void CommandStreamReceiverHw<Family>::programPerDssBackedBuffer(LinearStream &co
3232
template <>
3333
size_t CommandStreamReceiverHw<Family>::getCmdSizeForPerDssBackedBuffer(const HardwareInfo &hwInfo) {
3434
size_t size = sizeof(_3DSTATE_BTD);
35-
35+
auto *releaseHelper = getReleaseHelper();
3636
auto &productHelper = getProductHelper();
37-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs());
37+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs(), releaseHelper);
3838
std::ignore = isBasicWARequired;
3939

4040
if (isExtendedWARequired) {
@@ -56,7 +56,8 @@ inline void CommandStreamReceiverHw<GfxFamily>::addPipeControlBefore3dState(Line
5656

5757
auto &hwInfo = peekHwInfo();
5858
auto &productHelper = getProductHelper();
59-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs());
59+
auto *releaseHelper = getReleaseHelper();
60+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs(), releaseHelper);
6061
std::ignore = isBasicWARequired;
6162

6263
PipeControlArgs args;
@@ -72,7 +73,8 @@ template <>
7273
void CommandStreamReceiverHw<Family>::dispatchRayTracingStateCommand(LinearStream &cmdStream, Device &device) {
7374
auto &hwInfo = peekHwInfo();
7475
auto &productHelper = getProductHelper();
75-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs());
76+
auto *releaseHelper = getReleaseHelper();
77+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs(), releaseHelper);
7678
std::ignore = isBasicWARequired;
7779

7880
if (isExtendedWARequired) {

shared/source/command_stream/command_stream_receiver_hw_xehp_and_later.inl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,11 @@ inline void CommandStreamReceiverHw<GfxFamily>::addPipeControlBeforeStateSip(Lin
135135
auto &hwInfo = peekHwInfo();
136136
auto &gfxCoreHelper = getGfxCoreHelper();
137137
auto &productHelper = getProductHelper();
138+
auto *releaseHelper = getReleaseHelper();
138139
bool debuggingEnabled = device.getDebugger() != nullptr;
139140
PipeControlArgs args;
140141
args.dcFlushEnable = this->dcFlushSupport;
141-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs());
142+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs(), releaseHelper);
142143
std::ignore = isExtendedWARequired;
143144

144145
if (isBasicWARequired && debuggingEnabled && !gfxCoreHelper.isSipWANeeded(hwInfo)) {

shared/source/command_stream/preemption_xehp_and_later.inl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ size_t PreemptionHelper::getRequiredStateSipCmdSize<GfxFamily>(Device &device, b
8989
size += 2 * sizeof(typename GfxFamily::MI_LOAD_REGISTER_IMM);
9090
} else {
9191
auto &productHelper = device.getProductHelper();
92-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs);
92+
auto *releaseHelper = device.getReleaseHelper();
93+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs, releaseHelper);
9394
const auto isWARequired = isBasicWARequired || isExtendedWARequired;
9495

9596
if (isWARequired) {

shared/source/os_interface/product_helper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ class ProductHelper {
106106
virtual bool isPrefetchDisablingRequired(const HardwareInfo &hwInfo) const = 0;
107107
virtual bool isNewResidencyModelSupported() const = 0;
108108
virtual bool isDirectSubmissionSupported(const HardwareInfo &hwInfo) const = 0;
109-
virtual std::pair<bool, bool> isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs) const = 0;
109+
virtual std::pair<bool, bool> isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const = 0;
110110
virtual bool heapInLocalMem(const HardwareInfo &hwInfo) const = 0;
111111
virtual void setCapabilityCoherencyFlag(const HardwareInfo &hwInfo, bool &coherencyFlag) = 0;
112112
virtual bool isAdditionalMediaSamplerProgrammingRequired() const = 0;

shared/source/os_interface/product_helper.inl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ bool ProductHelperHw<gfxProduct>::isAssignEngineRoundRobinSupported() const {
291291
}
292292

293293
template <PRODUCT_FAMILY gfxProduct>
294-
std::pair<bool, bool> ProductHelperHw<gfxProduct>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs) const {
294+
std::pair<bool, bool> ProductHelperHw<gfxProduct>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const {
295295
return {false, false};
296296
}
297297

shared/source/os_interface/product_helper_hw.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class ProductHelperHw : public ProductHelper {
5959
bool isPrefetchDisablingRequired(const HardwareInfo &hwInfo) const override;
6060
bool isNewResidencyModelSupported() const override;
6161
bool isDirectSubmissionSupported(const HardwareInfo &hwInfo) const override;
62-
std::pair<bool, bool> isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs) const override;
62+
std::pair<bool, bool> isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const override;
6363
bool heapInLocalMem(const HardwareInfo &hwInfo) const override;
6464
void setCapabilityCoherencyFlag(const HardwareInfo &hwInfo, bool &coherencyFlag) override;
6565
bool isAdditionalMediaSamplerProgrammingRequired() const override;

shared/source/release_helper/release_helper.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class ReleaseHelper {
2626
virtual bool isMatrixMultiplyAccumulateSupported() const = 0;
2727
virtual ~ReleaseHelper() = default;
2828
virtual bool isAdjustWalkOrderAvailable() const = 0;
29+
virtual bool isPipeControlPriorToNonPipelinedStateCommandsWARequired() const = 0;
2930

3031
protected:
3132
ReleaseHelper(HardwareIpVersion hardwareIpVersion) : hardwareIpVersion(hardwareIpVersion) {}
@@ -40,6 +41,7 @@ class ReleaseHelperHw : public ReleaseHelper {
4041
}
4142
bool isMatrixMultiplyAccumulateSupported() const override;
4243
bool isAdjustWalkOrderAvailable() const override;
44+
bool isPipeControlPriorToNonPipelinedStateCommandsWARequired() const override;
4345

4446
private:
4547
ReleaseHelperHw(HardwareIpVersion hardwareIpVersion) : ReleaseHelper(hardwareIpVersion) {}

shared/source/release_helper/release_helper_1270.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,17 @@
88
#include "shared/source/release_helper/release_helper.h"
99
#include "shared/source/release_helper/release_helper_base.inl"
1010

11+
#include "platforms.h"
1112
#include "release_definitions.h"
1213

1314
namespace NEO {
1415
constexpr auto release = ReleaseType::release1270;
16+
17+
template <>
18+
bool ReleaseHelperHw<release>::isPipeControlPriorToNonPipelinedStateCommandsWARequired() const {
19+
return hardwareIpVersion.value == AOT::MTL_M_A0;
20+
}
21+
1522
} // namespace NEO
1623
#include "shared/source/release_helper/release_helper_common_xe_lpg.inl"
1724

shared/source/release_helper/release_helper_1271.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,17 @@
88
#include "shared/source/release_helper/release_helper.h"
99
#include "shared/source/release_helper/release_helper_base.inl"
1010

11+
#include "platforms.h"
1112
#include "release_definitions.h"
1213

1314
namespace NEO {
1415
constexpr auto release = ReleaseType::release1271;
1516

17+
template <>
18+
bool ReleaseHelperHw<release>::isPipeControlPriorToNonPipelinedStateCommandsWARequired() const {
19+
return hardwareIpVersion.value == AOT::MTL_P_A0;
20+
}
21+
1622
} // namespace NEO
1723

1824
#include "shared/source/release_helper/release_helper_common_xe_lpg.inl"

shared/source/release_helper/release_helper_base.inl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,9 @@ bool ReleaseHelperHw<releaseType>::isAdjustWalkOrderAvailable() const {
1818
return false;
1919
}
2020

21+
template <ReleaseType releaseType>
22+
bool ReleaseHelperHw<releaseType>::isPipeControlPriorToNonPipelinedStateCommandsWARequired() const {
23+
return false;
24+
}
25+
2126
} // namespace NEO

shared/source/xe_hpc_core/os_agnostic_product_helper_xe_hpc_core.inl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ bool ProductHelperHw<gfxProduct>::isTimestampWaitSupportedForEvents() const {
2727
}
2828

2929
template <>
30-
std::pair<bool, bool> ProductHelperHw<gfxProduct>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs) const {
30+
std::pair<bool, bool> ProductHelperHw<gfxProduct>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const {
3131
auto isBasicWARequired = false;
3232
auto isExtendedWARequired = false;
3333

shared/source/xe_hpg_core/dg2/os_agnostic_product_helper_dg2.inl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ bool ProductHelperHw<gfxProduct>::isPrefetchDisablingRequired(const HardwareInfo
143143
}
144144

145145
template <>
146-
std::pair<bool, bool> ProductHelperHw<gfxProduct>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs) const {
146+
std::pair<bool, bool> ProductHelperHw<gfxProduct>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const {
147147
auto isAcm = DG2::isG10(hwInfo) || DG2::isG11(hwInfo) || DG2::isG12(hwInfo);
148148
auto isBasicWARequired = isAcm;
149149
auto isExtendedWARequired = isAcm && hwInfo.gtSystemInfo.CCSInfo.NumberOfCCSEnabled > 1 && !isRcs;

shared/source/xe_hpg_core/mtl/os_agnostic_product_helper_mtl.inl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,11 @@ uint32_t ProductHelperHw<gfxProduct>::getSteppingFromHwRevId(const HardwareInfo
5353
}
5454

5555
template <>
56-
std::pair<bool, bool> ProductHelperHw<gfxProduct>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs) const {
57-
auto isBasicWARequired = getProductConfigFromHwInfo(hwInfo) == AOT::MTL_M_A0 || getProductConfigFromHwInfo(hwInfo) == AOT::MTL_P_A0;
56+
std::pair<bool, bool> ProductHelperHw<gfxProduct>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const {
57+
auto isBasicWARequired = true;
58+
if (releaseHelper) {
59+
isBasicWARequired = releaseHelper->isPipeControlPriorToNonPipelinedStateCommandsWARequired();
60+
}
5861
auto isExtendedWARequired = false;
5962

6063
return {isBasicWARequired, isExtendedWARequired};

shared/test/common/mocks/mock_product_helper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ bool ProductHelperHw<IGFX_UNKNOWN>::isNewResidencyModelSupported() const {
203203
}
204204

205205
template <>
206-
std::pair<bool, bool> ProductHelperHw<IGFX_UNKNOWN>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs) const {
206+
std::pair<bool, bool> ProductHelperHw<IGFX_UNKNOWN>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const {
207207
return {false, false};
208208
}
209209

shared/test/unit_test/command_stream/compute_mode_tests_xehp_and_later.cpp

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ComputeModeRequirements, givenCoherencyWithoutShare
2424
setUpImpl<FamilyType>();
2525

2626
const auto &productHelper = device->getProductHelper();
27-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs());
27+
auto *releaseHelper = device->getReleaseHelper();
28+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs(), releaseHelper);
2829
std::ignore = isExtendedWARequired;
2930

3031
auto cmdsSize = sizeof(STATE_COMPUTE_MODE);
@@ -55,7 +56,9 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ComputeModeRequirements, givenCoherencyWithSharedHa
5556
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
5657

5758
const auto &productHelper = device->getProductHelper();
58-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs());
59+
auto *releaseHelper = device->getReleaseHelper();
60+
61+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs(), releaseHelper);
5962
std::ignore = isExtendedWARequired;
6063

6164
overrideComputeModeRequest<FamilyType>(false, false, true);
@@ -95,8 +98,9 @@ HWTEST2_F(ComputeModeRequirements, givenCoherencyWithoutSharedHandlesWhenCompute
9598
using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE;
9699
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
97100

101+
auto *releaseHelper = device->getReleaseHelper();
98102
const auto &productHelper = device->getProductHelper();
99-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs());
103+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs(), releaseHelper);
100104
std::ignore = isExtendedWARequired;
101105

102106
auto cmdsSize = sizeof(STATE_COMPUTE_MODE);
@@ -145,8 +149,9 @@ HWTEST2_F(ComputeModeRequirements, givenCoherencyWithSharedHandlesWhenComputeMod
145149
using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE;
146150
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
147151

152+
auto *releaseHelper = device->getReleaseHelper();
148153
const auto &productHelper = device->getProductHelper();
149-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs());
154+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs(), releaseHelper);
150155
std::ignore = isExtendedWARequired;
151156

152157
auto cmdsSize = sizeof(STATE_COMPUTE_MODE) + sizeof(PIPE_CONTROL);
@@ -343,8 +348,9 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ComputeModeRequirements, givenComputeModeCmdSizeWhe
343348
overrideComputeModeRequest<FamilyType>(false, false, false, false, 128u);
344349
EXPECT_FALSE(getCsrHw<FamilyType>()->streamProperties.stateComputeMode.isDirty());
345350

351+
auto *releaseHelper = device->getReleaseHelper();
346352
const auto &productHelper = device->getProductHelper();
347-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs());
353+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs(), releaseHelper);
348354
std::ignore = isExtendedWARequired;
349355

350356
auto cmdSize = sizeof(STATE_COMPUTE_MODE);
@@ -368,8 +374,9 @@ HWTEST2_F(ComputeModeRequirements, givenComputeModeProgrammingWhenLargeGrfModeCh
368374
using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE;
369375
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
370376

377+
auto *releaseHelper = device->getReleaseHelper();
371378
const auto &productHelper = device->getProductHelper();
372-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs());
379+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs(), releaseHelper);
373380
std::ignore = isExtendedWARequired;
374381

375382
auto cmdsSize = sizeof(STATE_COMPUTE_MODE);
@@ -430,8 +437,9 @@ HWTEST2_F(ComputeModeRequirements, givenComputeModeProgrammingWhenRequiredGRFNum
430437
using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE;
431438
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
432439

440+
auto *releaseHelper = device->getReleaseHelper();
433441
const auto &productHelper = device->getProductHelper();
434-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs());
442+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs(), releaseHelper);
435443
std::ignore = isExtendedWARequired;
436444

437445
auto cmdsSize = sizeof(STATE_COMPUTE_MODE);
@@ -464,8 +472,9 @@ HWTEST2_F(ComputeModeRequirements, givenComputeModeProgrammingWhenRequiredGRFNum
464472
using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE;
465473
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
466474

475+
auto *releaseHelper = device->getReleaseHelper();
467476
const auto &productHelper = device->getProductHelper();
468-
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs());
477+
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper.isPipeControlPriorToNonPipelinedStateCommandsWARequired(*defaultHwInfo, csr->isRcs(), releaseHelper);
469478
std::ignore = isExtendedWARequired;
470479

471480
auto cmdsSize = sizeof(STATE_COMPUTE_MODE);

0 commit comments

Comments
 (0)