@@ -53,6 +53,90 @@ XE_HP_CORE_TEST_F(CommandEncodeXeHpCoreTest, whenProgrammingStateComputeModeThen
53
53
EXPECT_TRUE (pScm->getLargeGrfMode ());
54
54
}
55
55
56
+ XE_HP_CORE_TEST_F (CommandEncodeXeHpCoreTest, givenForceDisableMultiAtomicsWhenDebugFlagIsZeroThenExpectForceDisableMultiAtomicsSetToFalse) {
57
+ using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE;
58
+
59
+ DebugManagerStateRestore dbgRestorer;
60
+ DebugManager.flags .ForceMultiGpuAtomics .set (0 );
61
+
62
+ uint8_t buffer[64 ]{};
63
+
64
+ STATE_COMPUTE_MODE scmCommandTemplate = FamilyType::cmdInitStateComputeMode;
65
+ scmCommandTemplate.setForceDisableSupportForMultiGpuAtomics (true );
66
+
67
+ StateComputeModeProperties properties;
68
+ LinearStream cmdStream (buffer, sizeof (buffer));
69
+ EncodeComputeMode<FamilyType>::adjustComputeMode (cmdStream, &scmCommandTemplate, properties, *defaultHwInfo);
70
+ auto scmCommand = reinterpret_cast <STATE_COMPUTE_MODE *>(cmdStream.getCpuBase ());
71
+
72
+ uint32_t expectedMaskBits = FamilyType::stateComputeModeForceDisableSupportMultiGpuAtomics;
73
+ EXPECT_EQ (expectedMaskBits, scmCommand->getMaskBits ());
74
+ EXPECT_FALSE (scmCommand->getForceDisableSupportForMultiGpuAtomics ());
75
+ }
76
+
77
+ XE_HP_CORE_TEST_F (CommandEncodeXeHpCoreTest, givenForceDisableMultiAtomicsWhenDebugFlagIsOneThenExpectForceDisableMultiAtomicsSetToTrue) {
78
+ using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE;
79
+
80
+ DebugManagerStateRestore dbgRestorer;
81
+ DebugManager.flags .ForceMultiGpuAtomics .set (1 );
82
+
83
+ uint8_t buffer[64 ]{};
84
+
85
+ STATE_COMPUTE_MODE scmCommandTemplate = FamilyType::cmdInitStateComputeMode;
86
+ scmCommandTemplate.setForceDisableSupportForMultiGpuAtomics (false );
87
+
88
+ StateComputeModeProperties properties;
89
+ LinearStream cmdStream (buffer, sizeof (buffer));
90
+ EncodeComputeMode<FamilyType>::adjustComputeMode (cmdStream, &scmCommandTemplate, properties, *defaultHwInfo);
91
+ auto scmCommand = reinterpret_cast <STATE_COMPUTE_MODE *>(cmdStream.getCpuBase ());
92
+
93
+ uint32_t expectedMaskBits = FamilyType::stateComputeModeForceDisableSupportMultiGpuAtomics;
94
+ EXPECT_EQ (expectedMaskBits, scmCommand->getMaskBits ());
95
+ EXPECT_TRUE (scmCommand->getForceDisableSupportForMultiGpuAtomics ());
96
+ }
97
+
98
+ XE_HP_CORE_TEST_F (CommandEncodeXeHpCoreTest, givenForceDisableMultiPartialWritesWhenDebugFlagIsZeroThenExpectForceDisableMultiPartialWritesSetToFalse) {
99
+ using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE;
100
+
101
+ DebugManagerStateRestore dbgRestorer;
102
+ DebugManager.flags .ForceMultiGpuPartialWrites .set (0 );
103
+
104
+ uint8_t buffer[64 ]{};
105
+
106
+ STATE_COMPUTE_MODE scmCommandTemplate = FamilyType::cmdInitStateComputeMode;
107
+ scmCommandTemplate.setForceDisableSupportForMultiGpuPartialWrites (true );
108
+
109
+ StateComputeModeProperties properties;
110
+ LinearStream cmdStream (buffer, sizeof (buffer));
111
+ EncodeComputeMode<FamilyType>::adjustComputeMode (cmdStream, &scmCommandTemplate, properties, *defaultHwInfo);
112
+ auto scmCommand = reinterpret_cast <STATE_COMPUTE_MODE *>(cmdStream.getCpuBase ());
113
+
114
+ uint32_t expectedMaskBits = FamilyType::stateComputeModeForceDisableSupportMultiGpuPartialWrites;
115
+ EXPECT_EQ (expectedMaskBits, scmCommand->getMaskBits ());
116
+ EXPECT_FALSE (scmCommand->getForceDisableSupportForMultiGpuAtomics ());
117
+ }
118
+
119
+ XE_HP_CORE_TEST_F (CommandEncodeXeHpCoreTest, givenForceDisableMultiPartialWritesWhenDebugFlagIsOneThenExpectForceDisableMultiPartialWritesSetToTrue) {
120
+ using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE;
121
+
122
+ DebugManagerStateRestore dbgRestorer;
123
+ DebugManager.flags .ForceMultiGpuPartialWrites .set (1 );
124
+
125
+ uint8_t buffer[64 ]{};
126
+
127
+ STATE_COMPUTE_MODE scmCommandTemplate = FamilyType::cmdInitStateComputeMode;
128
+ scmCommandTemplate.setForceDisableSupportForMultiGpuPartialWrites (false );
129
+
130
+ StateComputeModeProperties properties;
131
+ LinearStream cmdStream (buffer, sizeof (buffer));
132
+ EncodeComputeMode<FamilyType>::adjustComputeMode (cmdStream, &scmCommandTemplate, properties, *defaultHwInfo);
133
+ auto scmCommand = reinterpret_cast <STATE_COMPUTE_MODE *>(cmdStream.getCpuBase ());
134
+
135
+ uint32_t expectedMaskBits = FamilyType::stateComputeModeForceDisableSupportMultiGpuPartialWrites;
136
+ EXPECT_EQ (expectedMaskBits, scmCommand->getMaskBits ());
137
+ EXPECT_TRUE (scmCommand->getForceDisableSupportForMultiGpuPartialWrites ());
138
+ }
139
+
56
140
struct EncodeKernelGlobalAtomicsFixture : public CommandEncodeStatesFixture , public ::testing::Test {
57
141
void SetUp () override {
58
142
DebugManager.flags .CreateMultipleSubDevices .set (2 );
0 commit comments