diff --git a/level_zero/core/source/cmdlist/cmdlist.h b/level_zero/core/source/cmdlist/cmdlist.h index 94b709e4b4..d4bc8c3d46 100644 --- a/level_zero/core/source/cmdlist/cmdlist.h +++ b/level_zero/core/source/cmdlist/cmdlist.h @@ -235,7 +235,7 @@ struct CommandList : _ze_command_list_handle_t { void setAdditionalDispatchKernelArgsFromLaunchParams(NEO::EncodeDispatchKernelArgs &dispatchKernelArgs, const CmdListKernelLaunchParams &launchParams) const; void setAdditionalDispatchKernelArgsFromKernel(NEO::EncodeDispatchKernelArgs &dispatchKernelArgs, const Kernel *kernel) const; - ze_result_t validateLaunchParams(const CmdListKernelLaunchParams &launchParams) const; + ze_result_t validateLaunchParams(const Kernel &kernel, const CmdListKernelLaunchParams &launchParams) const; void setOrdinal(uint32_t ord) { ordinal = ord; } void setCommandListPerThreadScratchSize(uint32_t slotId, uint32_t size) { diff --git a/level_zero/core/source/cmdlist/cmdlist_additional_args.cpp b/level_zero/core/source/cmdlist/cmdlist_additional_args.cpp index 4c6d1f9f13..e584c0cc8b 100644 --- a/level_zero/core/source/cmdlist/cmdlist_additional_args.cpp +++ b/level_zero/core/source/cmdlist/cmdlist_additional_args.cpp @@ -18,7 +18,7 @@ void CommandList::setAdditionalDispatchKernelArgsFromLaunchParams(NEO::EncodeDis void CommandList::setAdditionalDispatchKernelArgsFromKernel(NEO::EncodeDispatchKernelArgs &dispatchKernelArgs, const Kernel *kernel) const { } -ze_result_t CommandList::validateLaunchParams(const CmdListKernelLaunchParams &launchParams) const { +ze_result_t CommandList::validateLaunchParams(const Kernel &kernel, const CmdListKernelLaunchParams &launchParams) const { return ZE_RESULT_SUCCESS; } diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.inl b/level_zero/core/source/cmdlist/cmdlist_hw.inl index cba655ff84..bc508c6b70 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw.inl @@ -416,6 +416,12 @@ ze_result_t CommandListCoreFamily::appendLaunchKernel(ze_kernel_h } auto kernel = Kernel::fromHandle(kernelHandle); + + auto result = validateLaunchParams(*kernel, launchParams); + if (result != ZE_RESULT_SUCCESS) { + return result; + } + auto ioh = commandContainer.getHeapWithRequiredSizeAndAlignment(NEO::IndirectHeapType::indirectObject, getIohSizeForPrefetch(*kernel, launchParams.reserveExtraPayloadSpace), GfxFamily::indirectDataAlignment); ensureCmdBufferSpaceForPrefetch();