@@ -232,9 +232,12 @@ cl_int Kernel::initialize() {
232232 Buffer::setSurfaceState (&pClDevice->getDevice (), surfaceState, false , false , 0 , nullptr , 0 , nullptr , 0 , 0 , useGlobalAtomics, areMultipleSubDevicesInContext ());
233233 }
234234
235- setThreadArbitrationPolicy (hwHelper.getDefaultThreadArbitrationPolicy ());
235+ auto &threadArbitrationPolicy = const_cast <ThreadArbitrationPolicy &>(kernelInfo.kernelDescriptor .kernelAttributes .threadArbitrationPolicy );
236+ if (threadArbitrationPolicy == ThreadArbitrationPolicy::NotPresent) {
237+ threadArbitrationPolicy = static_cast <ThreadArbitrationPolicy>(hwHelper.getDefaultThreadArbitrationPolicy ());
238+ }
236239 if (false == kernelInfo.kernelDescriptor .kernelAttributes .flags .requiresSubgroupIndependentForwardProgress ) {
237- setThreadArbitrationPolicy ( ThreadArbitrationPolicy::AgeBased) ;
240+ threadArbitrationPolicy = ThreadArbitrationPolicy::AgeBased;
238241 }
239242
240243 auto &clHwHelper = ClHwHelper::get (hwInfo.platform .eRenderCoreFamily );
@@ -2230,18 +2233,19 @@ void Kernel::updateAuxTranslationRequired() {
22302233int Kernel::setKernelThreadArbitrationPolicy (uint32_t policy) {
22312234 auto &hwInfo = clDevice.getHardwareInfo ();
22322235 auto &hwHelper = NEO::ClHwHelper::get (hwInfo.platform .eRenderCoreFamily );
2236+ auto &threadArbitrationPolicy = const_cast <ThreadArbitrationPolicy &>(getDescriptor ().kernelAttributes .threadArbitrationPolicy );
22332237 if (!hwHelper.isSupportedKernelThreadArbitrationPolicy ()) {
2234- this -> threadArbitrationPolicy = ThreadArbitrationPolicy::NotPresent;
2238+ threadArbitrationPolicy = ThreadArbitrationPolicy::NotPresent;
22352239 return CL_INVALID_DEVICE;
22362240 } else if (policy == CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_ROUND_ROBIN_INTEL) {
2237- this -> threadArbitrationPolicy = ThreadArbitrationPolicy::RoundRobin;
2241+ threadArbitrationPolicy = ThreadArbitrationPolicy::RoundRobin;
22382242 } else if (policy == CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_OLDEST_FIRST_INTEL) {
2239- this -> threadArbitrationPolicy = ThreadArbitrationPolicy::AgeBased;
2243+ threadArbitrationPolicy = ThreadArbitrationPolicy::AgeBased;
22402244 } else if (policy == CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_AFTER_DEPENDENCY_ROUND_ROBIN_INTEL ||
22412245 policy == CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_STALL_BASED_ROUND_ROBIN_INTEL) {
2242- this -> threadArbitrationPolicy = ThreadArbitrationPolicy::RoundRobinAfterDependency;
2246+ threadArbitrationPolicy = ThreadArbitrationPolicy::RoundRobinAfterDependency;
22432247 } else {
2244- this -> threadArbitrationPolicy = ThreadArbitrationPolicy::NotPresent;
2248+ threadArbitrationPolicy = ThreadArbitrationPolicy::NotPresent;
22452249 return CL_INVALID_VALUE;
22462250 }
22472251 return CL_SUCCESS;
0 commit comments