From 2cb3be0b47972338325b0e091a310ae9b8eae170 Mon Sep 17 00:00:00 2001 From: "Dunajski, Bartosz" Date: Fri, 20 Sep 2019 14:55:06 +0200 Subject: [PATCH] Pass Kernel to sendInterfaceDescriptorData() Change-Id: Ie3617ccadf577d120e941416ecda55e1b60a78d2 Signed-off-by: Dunajski, Bartosz --- runtime/helpers/hardware_commands_helper.h | 4 ++-- runtime/helpers/hardware_commands_helper.inl | 12 +++++------- runtime/helpers/hardware_commands_helper_base.inl | 1 + .../helpers/hardware_commands_helper_tests.cpp | 2 +- unit_tests/kernel/kernel_slm_tests.cpp | 3 +-- 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/runtime/helpers/hardware_commands_helper.h b/runtime/helpers/hardware_commands_helper.h index 4b18189945..b59c0542d5 100644 --- a/runtime/helpers/hardware_commands_helper.h +++ b/runtime/helpers/hardware_commands_helper.h @@ -44,6 +44,7 @@ struct HardwareCommandsHelper : public PerThreadDataHelper { static void setAdditionalInfo( INTERFACE_DESCRIPTOR_DATA *pInterfaceDescriptor, + const Kernel &kernel, const size_t &sizeCrossThreadData, const size_t &sizePerThreadData); @@ -59,9 +60,8 @@ struct HardwareCommandsHelper : public PerThreadDataHelper { size_t offsetSamplerState, uint32_t numSamplers, uint32_t threadsPerThreadGroup, - uint32_t sizeSlm, + const Kernel &kernel, uint32_t bindingTablePrefetchSize, - bool barrierEnable, PreemptionMode preemptionMode, INTERFACE_DESCRIPTOR_DATA *inlineInterfaceDescriptor); diff --git a/runtime/helpers/hardware_commands_helper.inl b/runtime/helpers/hardware_commands_helper.inl index 7e25faf67e..5da9b1d557 100644 --- a/runtime/helpers/hardware_commands_helper.inl +++ b/runtime/helpers/hardware_commands_helper.inl @@ -131,9 +131,8 @@ size_t HardwareCommandsHelper::sendInterfaceDescriptorData( size_t offsetSamplerState, uint32_t numSamplers, uint32_t threadsPerThreadGroup, - uint32_t sizeSlm, + const Kernel &kernel, uint32_t bindingTablePrefetchSize, - bool barrierEnable, PreemptionMode preemptionMode, INTERFACE_DESCRIPTOR_DATA *inlineInterfaceDescriptor) { using SAMPLER_STATE = typename GfxFamily::SAMPLER_STATE; @@ -151,7 +150,7 @@ size_t HardwareCommandsHelper::sendInterfaceDescriptorData( pInterfaceDescriptor->setDenormMode(INTERFACE_DESCRIPTOR_DATA::DENORM_MODE_SETBYKERNEL); - setAdditionalInfo(pInterfaceDescriptor, sizeCrossThreadData, sizePerThreadData); + setAdditionalInfo(pInterfaceDescriptor, kernel, sizeCrossThreadData, sizePerThreadData); pInterfaceDescriptor->setBindingTablePointer(static_cast(bindingTablePointer)); @@ -161,10 +160,10 @@ size_t HardwareCommandsHelper::sendInterfaceDescriptorData( auto samplerCountState = static_cast((numSamplers + 3) / 4); pInterfaceDescriptor->setSamplerCount(samplerCountState); - auto programmableIDSLMSize = static_cast(computeSlmValues(sizeSlm)); + auto programmableIDSLMSize = static_cast(computeSlmValues(kernel.slmTotalSize)); pInterfaceDescriptor->setSharedLocalMemorySize(programmableIDSLMSize); - pInterfaceDescriptor->setBarrierEnable(barrierEnable); + pInterfaceDescriptor->setBarrierEnable(!!kernel.getKernelInfo().patchInfo.executionEnvironment->HasBarriers); PreemptionHelper::programInterfaceDescriptorDataPreemption(pInterfaceDescriptor, preemptionMode); @@ -337,9 +336,8 @@ size_t HardwareCommandsHelper::sendIndirectState( samplerStateOffset, samplerCount, threadsPerThreadGroup, - kernel.slmTotalSize, + kernel, bindingTablePrefetchSize, - !!patchInfo.executionEnvironment->HasBarriers, preemptionMode, inlineInterfaceDescriptor); diff --git a/runtime/helpers/hardware_commands_helper_base.inl b/runtime/helpers/hardware_commands_helper_base.inl index c8d5ce0c63..490cedf5b5 100644 --- a/runtime/helpers/hardware_commands_helper_base.inl +++ b/runtime/helpers/hardware_commands_helper_base.inl @@ -22,6 +22,7 @@ typename HardwareCommandsHelper::INTERFACE_DESCRIPTOR_DATA *HardwareC template void HardwareCommandsHelper::setAdditionalInfo( INTERFACE_DESCRIPTOR_DATA *pInterfaceDescriptor, + const Kernel &kernel, const size_t &sizeCrossThreadData, const size_t &sizePerThreadData) { diff --git a/unit_tests/helpers/hardware_commands_helper_tests.cpp b/unit_tests/helpers/hardware_commands_helper_tests.cpp index 42fe7e6235..2aecd7c8b4 100644 --- a/unit_tests/helpers/hardware_commands_helper_tests.cpp +++ b/unit_tests/helpers/hardware_commands_helper_tests.cpp @@ -89,7 +89,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, HardwareCommandsTest, programInterfaceDescriptorData size_t crossThreadDataSize = kernel->getCrossThreadDataSize(); HardwareCommandsHelper::sendInterfaceDescriptorData( - indirectHeap, 0, 0, crossThreadDataSize, 64, 0, 0, 0, 1, 0 * KB, 0, false, pDevice->getPreemptionMode(), nullptr); + indirectHeap, 0, 0, crossThreadDataSize, 64, 0, 0, 0, 1, *kernel, 0, pDevice->getPreemptionMode(), nullptr); auto usedIndirectHeapAfter = indirectHeap.getUsed(); EXPECT_EQ(sizeof(INTERFACE_DESCRIPTOR_DATA), usedIndirectHeapAfter - usedIndirectHeapBefore); diff --git a/unit_tests/kernel/kernel_slm_tests.cpp b/unit_tests/kernel/kernel_slm_tests.cpp index 00519f9e52..d578e0f1dd 100644 --- a/unit_tests/kernel/kernel_slm_tests.cpp +++ b/unit_tests/kernel/kernel_slm_tests.cpp @@ -95,9 +95,8 @@ HWCMDTEST_P(IGFX_GEN8_CORE, KernelSLMAndBarrierTest, test_SLMProgramming) { 0, 0, 1, - kernelInfo.workloadInfo.slmStaticSize, + kernel, 4u, - !!executionEnvironment.HasBarriers, // Barriers Enabled pDevice->getPreemptionMode(), nullptr);