Add refcount on MemObj in blocked scenarios.

- Prevents destruction of MemObj while it may still be in use.
- Add UNRECOVERABLE to check whether object is deleted while having
dependencies, fix all problems is tests due to that fact.
- Fix special queue setting, clean interfaces.

Change-Id: I2a467e80df00ea1650decdcfa6866acf10b441f8
This commit is contained in:
Mrozek, Michal
2018-01-05 11:33:30 +01:00
committed by sys_ocldev
parent c838a7dfc6
commit b00819cafe
24 changed files with 247 additions and 160 deletions

View File

@@ -389,20 +389,20 @@ HWTEST_F(Nv12ImageTest, checkIfPlanesAreWritten) {
char hostPtr[16 * 16 * 16];
MockContext contextWithMockCmdQ(device.get(), true);
MockCommandQueueHw<FamilyType> cmdQ(&contextWithMockCmdQ, device.get(), 0);
auto contextWithMockCmdQ = new MockContext(device.get(), true);
auto cmdQ = new MockCommandQueueHw<FamilyType>(contextWithMockCmdQ, device.get(), 0);
contextWithMockCmdQ.setSpecialQueue(&cmdQ);
contextWithMockCmdQ->overrideSpecialQueueAndDecrementRefCount(cmdQ);
// Create Parent NV12 image
cl_mem_flags flags = CL_MEM_READ_ONLY | CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL | CL_MEM_USE_HOST_PTR;
auto surfaceFormat = Image::getSurfaceFormatFromTable(flags, &imageFormat);
auto imageNV12 = Image::create(&contextWithMockCmdQ, flags, surfaceFormat, &imageDesc, hostPtr, retVal);
auto imageNV12 = Image::create(contextWithMockCmdQ, flags, surfaceFormat, &imageDesc, hostPtr, retVal);
EXPECT_EQ(2u, cmdQ.EnqueueWriteImageCounter);
contextWithMockCmdQ.setSpecialQueue(nullptr);
EXPECT_EQ(2u, cmdQ->EnqueueWriteImageCounter);
ASSERT_NE(nullptr, imageNV12);
contextWithMockCmdQ->release();
delete imageNV12;
}