don't call finish() in enqueueWriteMemObjForUnmap()

Fixes #247

Change-Id: Iac43c239a6ea361afb6d8addf14ae1697d3af7d7
Signed-off-by: Jacek Danecki <jacek.danecki@intel.com>
This commit is contained in:
Jacek Danecki 2020-01-13 15:27:15 +01:00 committed by sys_ocldev
parent fb8706d2b4
commit 4a07232ce9
3 changed files with 2 additions and 63 deletions

2
Jenkinsfile vendored
View File

@ -1,5 +1,5 @@
#!groovy
dependenciesRevision='6e37b862b951b119315eb412eb2650b282c8dcfe-1356'
strategy='EQUAL'
allowedCD=258
allowedCD=257
allowedF=11

View File

@ -333,15 +333,6 @@ cl_int CommandQueue::enqueueWriteMemObjForUnmap(MemObj *memObj, void *mappedPtr,
retVal = enqueueWriteImage(image, CL_FALSE, writeOrigin, &unmapInfo.size[0],
image->getHostPtrRowPitch(), image->getHostPtrSlicePitch(), mappedPtr, memObj->getMapAllocation(),
eventsRequest.numEventsInWaitList, eventsRequest.eventWaitList, eventsRequest.outEvent);
bool mustCallFinish = true;
if (!(image->getMemoryPropertiesFlags() & CL_MEM_USE_HOST_PTR)) {
mustCallFinish = true;
} else {
mustCallFinish = (CommandQueue::getTaskLevelFromWaitList(this->taskLevel, eventsRequest.numEventsInWaitList, eventsRequest.eventWaitList) != Event::eventNotReady);
}
if (mustCallFinish) {
finish();
}
}
} else {
retVal = enqueueMarkerWithWaitList(eventsRequest.numEventsInWaitList, eventsRequest.eventWaitList, eventsRequest.outEvent);

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2017-2019 Intel Corporation
* Copyright (C) 2017-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -81,58 +81,6 @@ HWTEST_F(ImageUnmapTest, givenImageWhenUnmapMemObjIsCalledThenEnqueueNonBlocking
}
}
HWTEST_F(ImageUnmapTest, givenImageWhenUnmapMemObjIsCalledWithMemUseHostPtrAndWithoutEventsThenFinishIsCalled) {
std::unique_ptr<MyMockCommandQueue<FamilyType>> commandQueue(new MyMockCommandQueue<FamilyType>(context.get(), device.get()));
image.reset(ImageHelper<ImageUseHostPtr<Image3dDefaults>>::create(context.get()));
auto ptr = image->getBasePtrForMap(device->getRootDeviceIndex());
MemObjOffsetArray origin = {{0, 0, 0}};
MemObjSizeArray region = {{1, 1, 1}};
cl_map_flags mapFlags = CL_MAP_WRITE;
image->addMappedPtr(ptr, 1, mapFlags, region, origin, 0);
commandQueue->enqueueUnmapMemObject(image.get(), ptr, 0, nullptr, nullptr);
EXPECT_EQ(UnitTestHelper<FamilyType>::tiledImagesSupported ? 1u : 0u,
commandQueue->finishCalled);
}
HWTEST_F(ImageUnmapTest, givenImageWhenUnmapMemObjIsCalledWithoutMemUseHostPtrThenFinishIsCalled) {
std::unique_ptr<MyMockCommandQueue<FamilyType>> commandQueue(new MyMockCommandQueue<FamilyType>(context.get(), device.get()));
auto ptr = image->getBasePtrForMap(device->getRootDeviceIndex());
MemObjOffsetArray origin = {{0, 0, 0}};
MemObjSizeArray region = {{1, 1, 1}};
cl_map_flags mapFlags = CL_MAP_WRITE;
image->addMappedPtr(ptr, 2, mapFlags, region, origin, 0);
commandQueue->enqueueUnmapMemObject(image.get(), ptr, 0, nullptr, nullptr);
EXPECT_EQ(UnitTestHelper<FamilyType>::tiledImagesSupported ? 1u : 0u,
commandQueue->finishCalled);
}
HWTEST_F(ImageUnmapTest, givenImageWhenUnmapMemObjIsCalledWithMemUseHostPtrAndWithNotReadyEventsThenFinishIsNotCalled) {
std::unique_ptr<MyMockCommandQueue<FamilyType>> commandQueue(new MyMockCommandQueue<FamilyType>(context.get(), device.get()));
image.reset(ImageHelper<ImageUseHostPtr<Image3dDefaults>>::create(context.get()));
MockEvent<UserEvent> mockEvent(context.get());
mockEvent.setStatus(Event::eventNotReady);
cl_event clEvent = &mockEvent;
commandQueue->enqueueUnmapMemObject(image.get(), nullptr, 1, &clEvent, nullptr);
EXPECT_EQ(0u, commandQueue->finishCalled);
}
HWTEST_F(ImageUnmapTest, givenImageWhenUnmapMemObjIsCalledWithMemUseHostPtrAndWithoutNotReadyEventsThenFinishIsCalled) {
std::unique_ptr<MyMockCommandQueue<FamilyType>> commandQueue(new MyMockCommandQueue<FamilyType>(context.get(), device.get()));
image.reset(ImageHelper<ImageUseHostPtr<Image3dDefaults>>::create(context.get()));
MockEvent<UserEvent> mockEvent(context.get());
mockEvent.setStatus(0);
cl_event clEvent = &mockEvent;
auto ptr = image->getBasePtrForMap(device->getRootDeviceIndex());
MemObjOffsetArray origin = {{0, 0, 0}};
MemObjSizeArray region = {{1, 1, 1}};
cl_map_flags mapFlags = CL_MAP_WRITE;
image->addMappedPtr(ptr, 1, mapFlags, region, origin, 0);
commandQueue->enqueueUnmapMemObject(image.get(), ptr, 1, &clEvent, nullptr);
EXPECT_EQ(UnitTestHelper<FamilyType>::tiledImagesSupported ? 1u : 0u,
commandQueue->finishCalled);
}
HWTEST_F(ImageUnmapTest, givenImageWhenEnqueueMapImageIsCalledTwiceThenAllocatedMemoryPtrIsNotOverridden) {
if (!UnitTestHelper<FamilyType>::tiledImagesSupported) {
GTEST_SKIP();