|
12 | 12 | #include "shared/test/unit_test/utilities/base_object_utils.h" |
13 | 13 |
|
14 | 14 | #include "opencl/source/event/user_event.h" |
| 15 | +#include "opencl/source/helpers/cl_hw_helper.h" |
15 | 16 | #include "opencl/source/platform/platform.h" |
16 | 17 | #include "opencl/test/unit_test/command_stream/thread_arbitration_policy_helper.h" |
17 | 18 | #include "opencl/test/unit_test/fixtures/enqueue_handler_fixture.h" |
@@ -498,8 +499,12 @@ HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWhenSubCaptureIsOnThenActivateSu |
498 | 499 | mockCmdQ->release(); |
499 | 500 | } |
500 | 501 |
|
501 | | -HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWhenClSetKernelExecInfoAlreadysetKernelThreadArbitrationPolicyThenRequiredThreadArbitrationPolicyIsSetProperly) { |
| 502 | +HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWhenClSetKernelExecInfoAlreadySetKernelThreadArbitrationPolicyThenRequiredThreadArbitrationPolicyIsSetProperly) { |
502 | 503 | REQUIRE_SVM_OR_SKIP(pClDevice); |
| 504 | + auto &hwHelper = NEO::ClHwHelper::get(pClDevice->getHardwareInfo().platform.eRenderCoreFamily); |
| 505 | + if (!hwHelper.isSupportedKernelThreadArbitrationPolicy()) { |
| 506 | + GTEST_SKIP(); |
| 507 | + } |
503 | 508 | DebugManagerStateRestore stateRestore; |
504 | 509 | DebugManager.flags.AUBDumpSubCaptureMode.set(static_cast<int32_t>(AubSubCaptureManager::SubCaptureMode::Filter)); |
505 | 510 |
|
@@ -529,6 +534,42 @@ HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWhenClSetKernelExecInfoAlreadyse |
529 | 534 | mockCmdQ->release(); |
530 | 535 | } |
531 | 536 |
|
| 537 | +HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWhenNotSupportedPolicyChangeThenRequiredThreadArbitrationPolicyNotChangedAndIsSetAsDefault) { |
| 538 | + auto &hwHelper = NEO::ClHwHelper::get(pClDevice->getHardwareInfo().platform.eRenderCoreFamily); |
| 539 | + if (hwHelper.isSupportedKernelThreadArbitrationPolicy()) { |
| 540 | + GTEST_SKIP(); |
| 541 | + } |
| 542 | + DebugManagerStateRestore stateRestore; |
| 543 | + DebugManager.flags.AUBDumpSubCaptureMode.set(static_cast<int32_t>(AubSubCaptureManager::SubCaptureMode::Filter)); |
| 544 | + |
| 545 | + MockKernelWithInternals kernelInternals(*pClDevice, context); |
| 546 | + Kernel *kernel = kernelInternals.mockKernel; |
| 547 | + MockMultiDispatchInfo multiDispatchInfo(pClDevice, kernel); |
| 548 | + |
| 549 | + uint32_t euThreadSetting = CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_ROUND_ROBIN_INTEL; |
| 550 | + size_t ptrSizeInBytes = 1 * sizeof(uint32_t *); |
| 551 | + auto retVal = clSetKernelExecInfo( |
| 552 | + kernelInternals.mockMultiDeviceKernel, // cl_kernel kernel |
| 553 | + CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_INTEL, // cl_kernel_exec_info param_name |
| 554 | + ptrSizeInBytes, // size_t param_value_size |
| 555 | + &euThreadSetting // const void *param_value |
| 556 | + ); |
| 557 | + EXPECT_EQ(CL_INVALID_DEVICE, retVal); |
| 558 | + auto mockCmdQ = new MockCommandQueueHw<FamilyType>(context, pClDevice, 0); |
| 559 | + |
| 560 | + mockCmdQ->template enqueueHandler<CL_COMMAND_NDRANGE_KERNEL>(nullptr, |
| 561 | + 0, |
| 562 | + false, |
| 563 | + multiDispatchInfo, |
| 564 | + 0, |
| 565 | + nullptr, |
| 566 | + nullptr); |
| 567 | + EXPECT_NE(getNewKernelArbitrationPolicy(euThreadSetting), pDevice->getUltCommandStreamReceiver<FamilyType>().requiredThreadArbitrationPolicy); |
| 568 | + EXPECT_EQ(0u, pDevice->getUltCommandStreamReceiver<FamilyType>().requiredThreadArbitrationPolicy); |
| 569 | + |
| 570 | + mockCmdQ->release(); |
| 571 | +} |
| 572 | + |
532 | 573 | HWTEST_F(EnqueueHandlerTest, givenKernelUsingSyncBufferWhenEnqueuingKernelThenSshIsCorrectlyProgrammed) { |
533 | 574 | using BINDING_TABLE_STATE = typename FamilyType::BINDING_TABLE_STATE; |
534 | 575 | using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE; |
|
0 commit comments