mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-10 15:12:56 +08:00
Add method to read kernel base address
Signed-off-by: Jaime Arteaga <jaime.a.arteaga.molina@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
c8116b713f
commit
e8a6842b7e
@@ -106,6 +106,7 @@ struct Kernel : _ze_kernel_handle_t, virtual NEO::DispatchKernelEncoderI {
|
||||
~Kernel() override = default;
|
||||
|
||||
virtual ze_result_t destroy() = 0;
|
||||
virtual ze_result_t getBaseAddress(uint64_t *baseAddress) = 0;
|
||||
virtual ze_result_t setIndirectAccess(ze_kernel_indirect_access_flags_t flags) = 0;
|
||||
virtual ze_result_t getIndirectAccess(ze_kernel_indirect_access_flags_t *flags) = 0;
|
||||
virtual ze_result_t getSourceAttributes(uint32_t *pSize, char **pString) = 0;
|
||||
|
||||
@@ -213,6 +213,13 @@ void KernelImmutableData::createRelocatedDebugData(NEO::GraphicsAllocation *glob
|
||||
}
|
||||
}
|
||||
|
||||
ze_result_t KernelImp::getBaseAddress(uint64_t *baseAddress) {
|
||||
if (baseAddress) {
|
||||
*baseAddress = NEO::GmmHelper::decanonize(this->kernelImmData->getKernelInfo()->kernelAllocation->getGpuAddress());
|
||||
}
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
uint32_t KernelImmutableData::getIsaSize() const {
|
||||
return static_cast<uint32_t>(isaGraphicsAllocation->getUnderlyingBufferSize());
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ struct KernelImp : Kernel {
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
ze_result_t getBaseAddress(uint64_t *baseAddress) override;
|
||||
ze_result_t setIndirectAccess(ze_kernel_indirect_access_flags_t flags) override;
|
||||
ze_result_t getIndirectAccess(ze_kernel_indirect_access_flags_t *flags) override;
|
||||
ze_result_t getSourceAttributes(uint32_t *pSize, char **pString) override;
|
||||
|
||||
@@ -68,6 +68,8 @@ struct ModuleImmutableDataFixture : public DeviceFixture {
|
||||
0,
|
||||
sizeof(uint32_t),
|
||||
MemoryPool::System4KBPages));
|
||||
|
||||
kernelInfo->kernelAllocation = isaGraphicsAllocation.get();
|
||||
}
|
||||
|
||||
void setDevice(L0::Device *inDevice) {
|
||||
|
||||
@@ -62,6 +62,31 @@ TEST_F(KernelInitTest, givenKernelToInitWhenItHasUnknownArgThenUnknowKernelArgHa
|
||||
EXPECT_EQ(mockKernelImmData->getDescriptor().payloadMappings.explicitArgs[0].type, NEO::ArgDescriptor::ArgTUnknown);
|
||||
}
|
||||
|
||||
using KernelBaseAddressTests = Test<ModuleImmutableDataFixture>;
|
||||
TEST_F(KernelBaseAddressTests, whenQueryingKernelBaseAddressThenCorrectAddressIsReturned) {
|
||||
uint32_t perHwThreadPrivateMemorySizeRequested = 32u;
|
||||
|
||||
std::unique_ptr<MockImmutableData> mockKernelImmData =
|
||||
std::make_unique<MockImmutableData>(perHwThreadPrivateMemorySizeRequested);
|
||||
|
||||
createModuleFromBinary(perHwThreadPrivateMemorySizeRequested, false, mockKernelImmData.get());
|
||||
std::unique_ptr<ModuleImmutableDataFixture::MockKernel> kernel;
|
||||
kernel = std::make_unique<ModuleImmutableDataFixture::MockKernel>(module.get());
|
||||
ze_kernel_desc_t desc = {};
|
||||
desc.pKernelName = kernelName.c_str();
|
||||
mockKernelImmData->resizeExplicitArgs(1);
|
||||
kernel->initialize(&desc);
|
||||
|
||||
uint64_t baseAddress = 0;
|
||||
ze_result_t res = kernel->getBaseAddress(nullptr);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
|
||||
|
||||
res = kernel->getBaseAddress(&baseAddress);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
|
||||
EXPECT_NE(baseAddress, 0u);
|
||||
EXPECT_EQ(baseAddress, kernel->getImmutableData()->getKernelInfo()->kernelAllocation->getGpuAddress());
|
||||
}
|
||||
|
||||
TEST(KernelArgTest, givenKernelWhenSetArgUnknownCalledThenSuccessRteurned) {
|
||||
Mock<Kernel> mockKernel;
|
||||
EXPECT_EQ(mockKernel.setArgUnknown(0, 0, nullptr), ZE_RESULT_SUCCESS);
|
||||
|
||||
Reference in New Issue
Block a user