Skip to content

Commit f0e53d5

Browse files
Add UNRECOVERABLE_IF for unexpected builtIn setArgBuffer scenario
Change-Id: I87a5c373eae9c833239e0eb4dca6f1660c763a86
1 parent 3edb738 commit f0e53d5

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

runtime/kernel/kernel.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,6 +1117,8 @@ cl_int Kernel::setArgBuffer(uint32_t argIndex,
11171117
bool forceNonAuxMode = buffer->getGraphicsAllocation()->getAllocationType() == GraphicsAllocation::AllocationType::BUFFER_COMPRESSED &&
11181118
!kernelArgInfo.pureStatefulBufferAccess;
11191119

1120+
UNRECOVERABLE_IF(forceNonAuxMode && isBuiltIn);
1121+
11201122
if (requiresSshForBuffers()) {
11211123
auto surfaceState = ptrOffset(getSurfaceStateHeap(), kernelArgInfo.offsetHeap);
11221124
buffer->setArgStateful(surfaceState, forceNonAuxMode);

unit_tests/mem_obj/buffer_set_arg_tests.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,15 @@ HWTEST_F(BufferSetArgTest, givenNonPureStatefulArgWhenRenderCompressedBufferIsSe
190190
EXPECT_TRUE(RENDER_SURFACE_STATE::AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_CCS_E == surfaceState->getAuxiliarySurfaceMode());
191191
}
192192

193+
HWTEST_F(BufferSetArgTest, givenNonPureStatefulArgWhenSetArgOnBuiltinIsCalledThenAbort) {
194+
buffer->getGraphicsAllocation()->setAllocationType(GraphicsAllocation::AllocationType::BUFFER_COMPRESSED);
195+
cl_mem clMem = buffer;
196+
197+
pKernelInfo->kernelArgInfo.at(0).pureStatefulBufferAccess = false;
198+
pKernel->isBuiltIn = true;
199+
EXPECT_THROW(pKernel->setArgBuffer(0, sizeof(cl_mem), &clMem), std::exception);
200+
}
201+
193202
TEST_F(BufferSetArgTest, setKernelArgBufferFor32BitAddressing) {
194203
auto pKernelArg = (void **)(pKernel->getCrossThreadData() +
195204
pKernelInfo->kernelArgInfo[0].kernelArgPatchInfoVector[0].crossthreadOffset);

0 commit comments

Comments
 (0)