Allow to set shared system memory pointers in constant buffers.

Change-Id: Ie2a811c0f50abf667df82517abf2291e00a18460
Signed-off-by: Mrozek, Michal <michal.mrozek@intel.com>
This commit is contained in:
Mrozek, Michal
2019-09-04 17:26:57 +02:00
committed by sys_ocldev
parent b25422deb1
commit 29613a2b1a
5 changed files with 54 additions and 4 deletions

View File

@@ -204,6 +204,27 @@ HWTEST_F(KernelArgSvmTest, givenOffsetedSvmPointerWhenSetArgSvmAllocIsCalledThen
EXPECT_EQ(offsetedPtr, surfaceAddress);
}
HWTEST_F(KernelArgSvmTest, givenDeviceSupportingSharedSystemAllocationsWhenSetArgSvmIsCalledWithSurfaceStateThenSizeIsMaxAndAddressIsProgrammed) {
this->pDevice->deviceInfo.sharedSystemMemCapabilities = CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL | CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL | CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL | CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL;
auto systemPointer = reinterpret_cast<void *>(0xfeedbac);
pKernelInfo->usesSsh = true;
pKernelInfo->requiresSshForBuffers = true;
pKernel->setArgSvmAlloc(0, systemPointer, nullptr);
typedef typename FamilyType::RENDER_SURFACE_STATE RENDER_SURFACE_STATE;
auto surfaceState = reinterpret_cast<const RENDER_SURFACE_STATE *>(
ptrOffset(pKernel->getSurfaceStateHeap(),
pKernelInfo->kernelArgInfo[0].offsetHeap));
void *surfaceAddress = reinterpret_cast<void *>(surfaceState->getSurfaceBaseAddress());
EXPECT_EQ(systemPointer, surfaceAddress);
EXPECT_EQ(128u, surfaceState->getWidth());
EXPECT_EQ(2048u, surfaceState->getDepth());
EXPECT_EQ(16384u, surfaceState->getHeight());
}
TEST_F(KernelArgSvmTest, SetKernelArgImmediateInvalidArgValue) {
auto retVal = pKernel->setArgImmediate(0, 256, nullptr);
EXPECT_EQ(CL_INVALID_ARG_VALUE, retVal);