@@ -195,3 +195,40 @@ XE3_CORETEST_F(CommandEncodeStatesXe3Test, givenHeapSharingEnabledWhenRetrieving
195
195
itorCmd = find<_3DSTATE_BINDING_TABLE_POOL_ALLOC *>(commands.begin (), commands.end ());
196
196
EXPECT_EQ (commands.end (), itorCmd);
197
197
}
198
+
199
+ XE3_CORETEST_F (Xe3CoreCommandEncoderTest, givenPipelinedEuThreadArbitrationPolicyWhenEncodeEuSchedulingPolicyIsCalledThenIddContainsCorrectEuSchedulingPolicy) {
200
+ using INTERFACE_DESCRIPTOR_DATA = typename FamilyType::INTERFACE_DESCRIPTOR_DATA;
201
+
202
+ INTERFACE_DESCRIPTOR_DATA idd = FamilyType::cmdInitInterfaceDescriptorData;
203
+ KernelDescriptor kernelDescriptor;
204
+ int32_t defaultPipelinedThreadArbitrationPolicy = ThreadArbitrationPolicy::NotPresent;
205
+
206
+ {
207
+ kernelDescriptor.kernelAttributes .threadArbitrationPolicy = ThreadArbitrationPolicy::NotPresent;
208
+ EncodeDispatchKernel<FamilyType>::encodeEuSchedulingPolicy (&idd, kernelDescriptor, defaultPipelinedThreadArbitrationPolicy);
209
+ EXPECT_EQ (INTERFACE_DESCRIPTOR_DATA::EU_THREAD_SCHEDULING_MODE_OVERRIDE::EU_THREAD_SCHEDULING_MODE_OVERRIDE_HW_DEFAULT, idd.getEuThreadSchedulingModeOverride ());
210
+ }
211
+
212
+ defaultPipelinedThreadArbitrationPolicy = ThreadArbitrationPolicy::RoundRobin;
213
+
214
+ {
215
+ kernelDescriptor.kernelAttributes .threadArbitrationPolicy = ThreadArbitrationPolicy::NotPresent;
216
+ EncodeDispatchKernel<FamilyType>::encodeEuSchedulingPolicy (&idd, kernelDescriptor, defaultPipelinedThreadArbitrationPolicy);
217
+ EXPECT_EQ (INTERFACE_DESCRIPTOR_DATA::EU_THREAD_SCHEDULING_MODE_OVERRIDE::EU_THREAD_SCHEDULING_MODE_OVERRIDE_ROUND_ROBIN, idd.getEuThreadSchedulingModeOverride ());
218
+ }
219
+ {
220
+ kernelDescriptor.kernelAttributes .threadArbitrationPolicy = ThreadArbitrationPolicy::AgeBased;
221
+ EncodeDispatchKernel<FamilyType>::encodeEuSchedulingPolicy (&idd, kernelDescriptor, defaultPipelinedThreadArbitrationPolicy);
222
+ EXPECT_EQ (INTERFACE_DESCRIPTOR_DATA::EU_THREAD_SCHEDULING_MODE_OVERRIDE::EU_THREAD_SCHEDULING_MODE_OVERRIDE_OLDEST_FIRST, idd.getEuThreadSchedulingModeOverride ());
223
+ }
224
+ {
225
+ kernelDescriptor.kernelAttributes .threadArbitrationPolicy = ThreadArbitrationPolicy::RoundRobin;
226
+ EncodeDispatchKernel<FamilyType>::encodeEuSchedulingPolicy (&idd, kernelDescriptor, defaultPipelinedThreadArbitrationPolicy);
227
+ EXPECT_EQ (INTERFACE_DESCRIPTOR_DATA::EU_THREAD_SCHEDULING_MODE_OVERRIDE::EU_THREAD_SCHEDULING_MODE_OVERRIDE_ROUND_ROBIN, idd.getEuThreadSchedulingModeOverride ());
228
+ }
229
+ {
230
+ kernelDescriptor.kernelAttributes .threadArbitrationPolicy = ThreadArbitrationPolicy::RoundRobinAfterDependency;
231
+ EncodeDispatchKernel<FamilyType>::encodeEuSchedulingPolicy (&idd, kernelDescriptor, defaultPipelinedThreadArbitrationPolicy);
232
+ EXPECT_EQ (INTERFACE_DESCRIPTOR_DATA::EU_THREAD_SCHEDULING_MODE_OVERRIDE::EU_THREAD_SCHEDULING_MODE_OVERRIDE_STALL_BASED_ROUND_ROBIN, idd.getEuThreadSchedulingModeOverride ());
233
+ }
234
+ }
0 commit comments