Enhance validation in sharing scenarios.

Change-Id: I590c5d66602749fb5702e414ccf2b1acec3bc9e7
This commit is contained in:
Mrozek, Michal
2018-07-17 15:19:18 +02:00
committed by sys_ocldev
parent f4222785ee
commit d2e820aac8
2 changed files with 13 additions and 3 deletions

View File

@ -215,9 +215,13 @@ cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR(cl_command_queue commandQ
for (unsigned int object = 0; object < numObjects; object++) {
auto memObject = castToObject<MemObj>(memObjects[object]);
if (!static_cast<D3DSharing<D3DTypesHelper::D3D9> *>(memObject->peekSharingHandler())->isSharedResource()) {
cmdQ->finish(true);
break;
if (memObject) {
if (!static_cast<D3DSharing<D3DTypesHelper::D3D9> *>(memObject->peekSharingHandler())->isSharedResource()) {
cmdQ->finish(true);
break;
}
} else {
return CL_INVALID_MEM_OBJECT;
}
}

View File

@ -760,6 +760,12 @@ TEST_F(D3D9Tests, acquireReleaseOnNonSharedResourceSurfaceAndNonLockable) {
EXPECT_TRUE(memcmp(&requestedResCopyBlt, &expectedResCopyBlt, sizeof(GMM_RES_COPY_BLT)) == 0);
}
TEST_F(D3D9Tests, givenInvalidClMemObjectPassedOnReleaseListWhenCallIsMadeThenFailureIsReturned) {
auto fakeObject = reinterpret_cast<cl_mem>(cmdQ);
auto retVal = clEnqueueReleaseDX9MediaSurfacesKHR(cmdQ, 1, &fakeObject, 0, nullptr, nullptr);
EXPECT_EQ(CL_INVALID_MEM_OBJECT, retVal);
}
TEST_F(D3D9Tests, givenResourcesCreatedFromDifferentDevicesWhenAcquireReleaseCalledThenUpdateDevice) {
EXPECT_CALL(*mockSharingFcns, getTexture2dDesc(_, _)).Times(1).WillOnce(SetArgPointee<0>(mockSharingFcns->mockTexture2dDesc));