Add error handling in d3d9 sharing scenario.

Change-Id: I3f337b633514d90298f03a9fa486757026137151
This commit is contained in:
Mrozek, Michal
2018-07-17 14:43:42 +02:00
committed by sys_ocldev
parent 121376b248
commit 07031518dc
2 changed files with 15 additions and 1 deletions

View File

@ -123,7 +123,12 @@ cl_mem CL_API_CALL clCreateFromDX9MediaSurfaceINTEL(cl_context context, cl_mem_f
cl_dx9_surface_info_khr surfaceInfo = {resource, sharedHandle};
auto ctx = castToObject<Context>(context);
return D3DSurface::create(ctx, &surfaceInfo, flags, 0, plane, errcodeRet);
if (ctx) {
return D3DSurface::create(ctx, &surfaceInfo, flags, 0, plane, errcodeRet);
} else {
err.set(CL_INVALID_CONTEXT);
return nullptr;
}
}
cl_int CL_API_CALL clEnqueueAcquireDX9ObjectsINTEL(cl_command_queue commandQueue, cl_uint numObjects, const cl_mem *memObjects,

View File

@ -821,6 +821,15 @@ TEST_F(D3D9Tests, givenInvalidFlagsWhenSurfaceIsCreatedThenReturnError) {
EXPECT_EQ(nullptr, img);
}
TEST_F(D3D9Tests, givenInvalidContextWhenImageIsCreatedThenErrorIsReturned) {
auto invalidContext = reinterpret_cast<cl_context>(this->cmdQ);
auto retVal = CL_SUCCESS;
auto img = clCreateFromDX9MediaSurfaceINTEL(invalidContext, CL_MEM_READ_WRITE, surfaceInfo.resource, surfaceInfo.shared_handle, 0, &retVal);
EXPECT_EQ(CL_INVALID_CONTEXT, retVal);
EXPECT_EQ(nullptr, img);
}
TEST_F(D3D9Tests, givenTheSameResourceAndPlaneWhenSurfaceIsCreatedThenReturnError) {
mockSharingFcns->mockTexture2dDesc.Format = (D3DFORMAT)MAKEFOURCC('Y', 'V', '1', '2');
surfaceInfo.shared_handle = (HANDLE)1;