mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-26 07:00:17 +08:00
Improve error handling for shared objects.
Change-Id: I86fccb26cbf327b49c1b4992eeb3d25e52d3bced
This commit is contained in:
committed by
sys_ocldev
parent
e2680d395c
commit
5e7eccefe5
@@ -332,9 +332,16 @@ LinearStream &CommandQueue::getCS(size_t minRequiredSize) {
|
||||
}
|
||||
|
||||
cl_int CommandQueue::enqueueAcquireSharedObjects(cl_uint numObjects, const cl_mem *memObjects, cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *oclEvent, cl_uint cmdType) {
|
||||
if ((memObjects == nullptr && numObjects != 0) || (memObjects != nullptr && numObjects == 0)) {
|
||||
return CL_INVALID_VALUE;
|
||||
}
|
||||
|
||||
for (unsigned int object = 0; object < numObjects; object++) {
|
||||
auto memObject = castToObjectOrAbort<MemObj>(memObjects[object]);
|
||||
auto memObject = castToObject<MemObj>(memObjects[object]);
|
||||
if (memObject == nullptr || memObject->peekSharingHandler() == nullptr) {
|
||||
return CL_INVALID_MEM_OBJECT;
|
||||
}
|
||||
|
||||
memObject->peekSharingHandler()->acquire(memObject);
|
||||
memObject->acquireCount++;
|
||||
}
|
||||
@@ -351,8 +358,16 @@ cl_int CommandQueue::enqueueAcquireSharedObjects(cl_uint numObjects, const cl_me
|
||||
}
|
||||
|
||||
cl_int CommandQueue::enqueueReleaseSharedObjects(cl_uint numObjects, const cl_mem *memObjects, cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *oclEvent, cl_uint cmdType) {
|
||||
if ((memObjects == nullptr && numObjects != 0) || (memObjects != nullptr && numObjects == 0)) {
|
||||
return CL_INVALID_VALUE;
|
||||
}
|
||||
|
||||
for (unsigned int object = 0; object < numObjects; object++) {
|
||||
auto memObject = castToObjectOrAbort<MemObj>(memObjects[object]);
|
||||
auto memObject = castToObject<MemObj>(memObjects[object]);
|
||||
if (memObject == nullptr || memObject->peekSharingHandler() == nullptr) {
|
||||
return CL_INVALID_MEM_OBJECT;
|
||||
}
|
||||
|
||||
memObject->peekSharingHandler()->release(memObject);
|
||||
DEBUG_BREAK_IF(memObject->acquireCount <= 0);
|
||||
memObject->acquireCount--;
|
||||
|
||||
Reference in New Issue
Block a user