fix: Flush render state cache on release shared object

Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
Lukasz Jobczyk
2024-04-22 14:55:54 +00:00
committed by Compute-Runtime-Automation
parent 9553dd1098
commit d122e1c906
3 changed files with 48 additions and 6 deletions

View File

@@ -615,16 +615,23 @@ cl_int CommandQueue::enqueueReleaseSharedObjects(cl_uint numObjects, const cl_me
return CL_INVALID_VALUE;
}
bool isImageReleased = false;
for (unsigned int object = 0; object < numObjects; object++) {
auto memObject = castToObject<MemObj>(memObjects[object]);
if (memObject == nullptr || memObject->peekSharingHandler() == nullptr) {
return CL_INVALID_MEM_OBJECT;
}
isImageReleased |= memObject->getMultiGraphicsAllocation().getAllocationType() == AllocationType::sharedImage;
memObject->peekSharingHandler()->release(memObject, getDevice().getRootDeviceIndex());
DEBUG_BREAK_IF(memObject->acquireCount <= 0);
memObject->acquireCount--;
}
if (isImageReleased && this->getGpgpuCommandStreamReceiver().isDirectSubmissionEnabled()) {
this->getGpgpuCommandStreamReceiver().sendRenderStateCacheFlush();
}
auto status = enqueueMarkerWithWaitList(
numEventsInWaitList,
eventWaitList,