Skip to content

Commit a611e4b

Browse files
Fix Image patching
Change-Id: Ibd89ecf18b92ed20972352f2aa39121b4b811d81 Signed-off-by: Dunajski, Bartosz <[email protected]>
1 parent 0643a89 commit a611e4b

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

runtime/kernel/kernel.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1392,9 +1392,10 @@ cl_int Kernel::setArgImageWithMipLevel(uint32_t argIndex,
13921392
patch<uint32_t, uint32_t>(kernelArgInfo.offsetHeap, crossThreadData, kernelArgInfo.offsetObjectId);
13931393
patch<uint32_t, cl_uint>(imageDesc.num_mip_levels, crossThreadData, kernelArgInfo.offsetNumMipLevels);
13941394

1395+
auto pixelSize = pImage->getSurfaceFormatInfo().ImageElementSizeInBytes;
13951396
patch<uint64_t, uint64_t>(pImage->getGraphicsAllocation()->getGpuAddress(), crossThreadData, kernelArgInfo.offsetFlatBaseOffset);
1396-
patch<uint32_t, size_t>(imageDesc.image_width - 1, crossThreadData, kernelArgInfo.offsetFlatWidth);
1397-
patch<uint32_t, size_t>(imageDesc.image_height - 1, crossThreadData, kernelArgInfo.offsetFlatHeight);
1397+
patch<uint32_t, size_t>((imageDesc.image_width * pixelSize) - 1, crossThreadData, kernelArgInfo.offsetFlatWidth);
1398+
patch<uint32_t, size_t>((imageDesc.image_height * pixelSize) - 1, crossThreadData, kernelArgInfo.offsetFlatHeight);
13981399
patch<uint32_t, size_t>(imageDesc.image_row_pitch - 1, crossThreadData, kernelArgInfo.offsetFlatPitch);
13991400

14001401
addAllocationToCacheFlushVector(argIndex, pImage->getGraphicsAllocation());

unit_tests/kernel/kernel_image_arg_tests.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,16 @@ TEST_F(KernelImageArgTest, givenKernelWithFlatImageTokensWhenArgIsSetThenPatchAl
6060

6161
pKernel->setArg(0, sizeof(memObj), &memObj);
6262
auto crossThreadData = reinterpret_cast<uint32_t *>(pKernel->getCrossThreadData());
63+
auto pixelSize = image->getSurfaceFormatInfo().ImageElementSizeInBytes;
6364

6465
auto offsetFlatBaseOffset = ptrOffset(crossThreadData, pKernel->getKernelInfo().kernelArgInfo[0].offsetFlatBaseOffset);
6566
EXPECT_EQ(imageBaseAddress, *reinterpret_cast<uint64_t *>(offsetFlatBaseOffset));
6667

6768
auto offsetFlatWidth = ptrOffset(crossThreadData, pKernel->getKernelInfo().kernelArgInfo[0].offsetFlatWidth);
68-
EXPECT_EQ(imageWidth - 1, *offsetFlatWidth);
69+
EXPECT_EQ(static_cast<uint32_t>((imageWidth * pixelSize) - 1), *offsetFlatWidth);
6970

7071
auto offsetFlatHeight = ptrOffset(crossThreadData, pKernel->getKernelInfo().kernelArgInfo[0].offsetFlatHeight);
71-
EXPECT_EQ(imageHeight - 1, *offsetFlatHeight);
72+
EXPECT_EQ(static_cast<uint32_t>((imageHeight * pixelSize) - 1), *offsetFlatHeight);
7273

7374
auto offsetFlatPitch = ptrOffset(crossThreadData, pKernel->getKernelInfo().kernelArgInfo[0].offsetFlatPitch);
7475
EXPECT_EQ(imageRowPitch - 1, *offsetFlatPitch);

0 commit comments

Comments
 (0)