mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-10 12:53:42 +08:00
Pass root device index to UpdateData
Related-To: NEO-4672 Change-Id: Ic264aa257bc721b48cd6460bb4843c6e2be213d9 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:

committed by
sys_ocldev

parent
4662183ccc
commit
990f81efea
@ -249,7 +249,7 @@ cl_int CommandQueue::enqueueAcquireSharedObjects(cl_uint numObjects, const cl_me
|
||||
return CL_INVALID_MEM_OBJECT;
|
||||
}
|
||||
|
||||
int result = memObject->peekSharingHandler()->acquire(memObject);
|
||||
int result = memObject->peekSharingHandler()->acquire(memObject, getDevice().getRootDeviceIndex());
|
||||
if (result != CL_SUCCESS) {
|
||||
return result;
|
||||
}
|
||||
|
@ -15,9 +15,9 @@
|
||||
|
||||
namespace NEO {
|
||||
|
||||
int SharingHandler::acquire(MemObj *memObj) {
|
||||
int SharingHandler::acquire(MemObj *memObj, uint32_t rootDeviceIndex) {
|
||||
if (acquireCount == 0) {
|
||||
UpdateData updateData;
|
||||
UpdateData updateData{rootDeviceIndex};
|
||||
auto currentSharedHandle = memObj->getGraphicsAllocation()->peekSharedHandle();
|
||||
updateData.sharedHandle = currentSharedHandle;
|
||||
updateData.memObject = memObj;
|
||||
|
@ -20,6 +20,8 @@ enum SynchronizeStatus {
|
||||
};
|
||||
|
||||
struct UpdateData {
|
||||
UpdateData(uint32_t inRootDeviceIndex) : rootDeviceIndex(inRootDeviceIndex){};
|
||||
const uint32_t rootDeviceIndex;
|
||||
SynchronizeStatus synchronizationStatus;
|
||||
osHandle sharedHandle;
|
||||
MemObj *memObject = nullptr;
|
||||
@ -35,7 +37,7 @@ class SharingFunctions {
|
||||
|
||||
class SharingHandler {
|
||||
public:
|
||||
int acquire(MemObj *memObj);
|
||||
int acquire(MemObj *memObj, uint32_t rootDeviceIndex);
|
||||
void release(MemObj *memObject, uint32_t rootDeviceIndex);
|
||||
virtual ~SharingHandler() = default;
|
||||
|
||||
|
@ -1003,13 +1003,17 @@ TEST(CommandQueue, givenEnqueueReleaseSharedObjectsWhenIncorrectArgumentsThenRet
|
||||
}
|
||||
|
||||
TEST(CommandQueue, givenEnqueueAcquireSharedObjectsCallWhenAcquireFailsThenCorrectErrorIsReturned) {
|
||||
const auto rootDeviceIndex = 1u;
|
||||
class MockSharingHandler : public SharingHandler {
|
||||
int validateUpdateData(UpdateData &data) override {
|
||||
EXPECT_EQ(1u, data.rootDeviceIndex);
|
||||
return CL_INVALID_MEM_OBJECT;
|
||||
}
|
||||
};
|
||||
MockContext context;
|
||||
MockCommandQueue cmdQ(&context, nullptr, 0);
|
||||
|
||||
UltClDeviceFactory deviceFactory{2, 0};
|
||||
MockContext context(deviceFactory.rootDevices[rootDeviceIndex]);
|
||||
MockCommandQueue cmdQ(&context, context.getDevice(0), 0);
|
||||
auto buffer = std::unique_ptr<Buffer>(BufferHelper<>::create(&context));
|
||||
|
||||
MockSharingHandler *handler = new MockSharingHandler;
|
||||
|
@ -868,7 +868,7 @@ TEST_F(D3D9Tests, givenResourcesCreatedFromDifferentDevicesWhenAcquireReleaseCal
|
||||
memoryManager->expectedLockingAllocation = sharedImg->getGraphicsAllocation();
|
||||
|
||||
mockSharingFcns->setDevice(nullptr); // force device change
|
||||
sharedImg->getSharingHandler()->acquire(sharedImg.get());
|
||||
sharedImg->getSharingHandler()->acquire(sharedImg.get(), context->getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_EQ(createdResourceDevice, mockSharingFcns->getDevice());
|
||||
|
||||
mockSharingFcns->setDevice(nullptr); // force device change
|
||||
|
@ -713,7 +713,7 @@ TEST(D3DSurfaceTest, givenD3DSurfaceWhenInvalidMemObjectIsPassedToValidateUpdate
|
||||
std::unique_ptr<D3DSurface> surface(new MockD3DSurface(&context, &surfaceInfo, nullptr, 0, imagePlane, 0, false, false));
|
||||
|
||||
MockBuffer buffer;
|
||||
UpdateData updateData;
|
||||
UpdateData updateData{context.getDevice(0)->getRootDeviceIndex()};
|
||||
updateData.memObject = &buffer;
|
||||
auto result = surface->validateUpdateData(updateData);
|
||||
EXPECT_EQ(CL_INVALID_MEM_OBJECT, result);
|
||||
|
@ -106,7 +106,7 @@ TEST_F(GlReusedBufferTests, givenGlobalShareHandleChangedWhenAcquiringSharedBuff
|
||||
|
||||
bufferInfoOutput.globalShareHandle = 41;
|
||||
dllParam.loadBuffer(bufferInfoOutput);
|
||||
glBuffer->acquire(clBuffer.get());
|
||||
glBuffer->acquire(clBuffer.get(), context.getDevice(0)->getRootDeviceIndex());
|
||||
auto newGraphicsAllocation = clBuffer->getGraphicsAllocation();
|
||||
|
||||
EXPECT_NE(oldGraphicsAllocation, newGraphicsAllocation);
|
||||
@ -135,7 +135,7 @@ TEST_F(GlReusedBufferTests, givenGlobalShareHandleDidNotChangeWhenAcquiringShare
|
||||
auto glBuffer = new MyGlBuffer(context.getSharing<GLSharingFunctions>(), bufferId1);
|
||||
clBuffer->setSharingHandler(glBuffer);
|
||||
|
||||
glBuffer->acquire(clBuffer.get());
|
||||
glBuffer->acquire(clBuffer.get(), context.getDevice(0)->getRootDeviceIndex());
|
||||
|
||||
glBuffer->release(clBuffer.get(), context.getDevice(0)->getRootDeviceIndex());
|
||||
}
|
||||
@ -161,7 +161,7 @@ TEST_F(GlReusedBufferTests, givenGlobalShareHandleChangedWhenAcquiringSharedBuff
|
||||
|
||||
bufferInfoOutput.globalShareHandle = 41;
|
||||
dllParam.loadBuffer(bufferInfoOutput);
|
||||
glBuffer->acquire(clBuffer.get());
|
||||
glBuffer->acquire(clBuffer.get(), context.getDevice(0)->getRootDeviceIndex());
|
||||
|
||||
glBuffer->release(clBuffer.get(), context.getDevice(0)->getRootDeviceIndex());
|
||||
}
|
||||
@ -181,12 +181,12 @@ TEST_F(GlReusedBufferTests, givenMultipleBuffersAndGlobalShareHandleChangedWhenA
|
||||
|
||||
bufferInfoOutput.globalShareHandle = 41;
|
||||
dllParam.loadBuffer(bufferInfoOutput);
|
||||
clBuffer1->peekSharingHandler()->acquire(clBuffer1.get());
|
||||
clBuffer1->peekSharingHandler()->acquire(clBuffer1.get(), context.getDevice(0)->getRootDeviceIndex());
|
||||
auto newGraphicsAllocation = clBuffer1->getGraphicsAllocation();
|
||||
EXPECT_EQ(1, graphicsAllocationsForGlBufferReuse->size());
|
||||
EXPECT_EQ(newGraphicsAllocation, graphicsAllocationsForGlBufferReuse->at(0).second);
|
||||
|
||||
clBuffer2->peekSharingHandler()->acquire(clBuffer2.get());
|
||||
clBuffer2->peekSharingHandler()->acquire(clBuffer2.get(), context.getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_EQ(clBuffer2->getGraphicsAllocation(), newGraphicsAllocation);
|
||||
EXPECT_EQ(1, graphicsAllocationsForGlBufferReuse->size());
|
||||
EXPECT_EQ(newGraphicsAllocation, graphicsAllocationsForGlBufferReuse->at(0).second);
|
||||
@ -210,7 +210,7 @@ TEST_F(GlReusedBufferTests, givenGraphicsAllocationCreationReturnsNullptrWhenAcq
|
||||
bufferInfoOutput.globalShareHandle = 41;
|
||||
dllParam.loadBuffer(bufferInfoOutput);
|
||||
context.memoryManager = failingMemoryManager.get();
|
||||
auto result = glBuffer->acquire(clBuffer.get());
|
||||
auto result = glBuffer->acquire(clBuffer.get(), context.getDevice(0)->getRootDeviceIndex());
|
||||
|
||||
EXPECT_EQ(CL_OUT_OF_RESOURCES, result);
|
||||
EXPECT_EQ(nullptr, clBuffer->getGraphicsAllocation());
|
||||
|
@ -216,7 +216,7 @@ TEST_F(glSharingTests, givenClGLBufferWhenItIsAcquiredThenAcuqireCountIsIncremen
|
||||
EXPECT_FALSE(memObject->isReadWriteOnCpuAllowed());
|
||||
auto currentGraphicsAllocation = memObject->getGraphicsAllocation();
|
||||
|
||||
memObject->peekSharingHandler()->acquire(memObject);
|
||||
memObject->peekSharingHandler()->acquire(memObject, context.getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_EQ(2, mockGlSharing->dllParam->getParam("GLAcquireSharedBufferCalled"));
|
||||
EXPECT_EQ(1, mockGlSharing->dllParam->getParam("GLGetCurrentContextCalled"));
|
||||
|
||||
@ -233,11 +233,11 @@ TEST_F(glSharingTests, givenClGLBufferWhenItIsAcquiredTwiceThenAcuqireIsNotCalle
|
||||
auto glBuffer = clCreateFromGLBuffer(&context, 0, bufferId, &retVal);
|
||||
auto memObject = castToObject<MemObj>(glBuffer);
|
||||
|
||||
memObject->peekSharingHandler()->acquire(memObject);
|
||||
memObject->peekSharingHandler()->acquire(memObject, context.getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_EQ(2, mockGlSharing->dllParam->getParam("GLAcquireSharedBufferCalled"));
|
||||
EXPECT_EQ(1, mockGlSharing->dllParam->getParam("GLGetCurrentContextCalled"));
|
||||
|
||||
memObject->peekSharingHandler()->acquire(memObject);
|
||||
memObject->peekSharingHandler()->acquire(memObject, context.getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_EQ(2, mockGlSharing->dllParam->getParam("GLAcquireSharedBufferCalled"));
|
||||
EXPECT_EQ(1, mockGlSharing->dllParam->getParam("GLGetCurrentContextCalled"));
|
||||
|
||||
@ -274,13 +274,13 @@ TEST_F(glSharingTests, givenClGLBufferWhenItIsAcquiredTwiceAfterReleaseThenAcuqi
|
||||
auto glBuffer = clCreateFromGLBuffer(&context, 0, bufferId, &retVal);
|
||||
auto memObject = castToObject<MemObj>(glBuffer);
|
||||
|
||||
memObject->peekSharingHandler()->acquire(memObject);
|
||||
memObject->peekSharingHandler()->acquire(memObject, context.getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_EQ(2, mockGlSharing->dllParam->getParam("GLAcquireSharedBufferCalled"));
|
||||
EXPECT_EQ(1, mockGlSharing->dllParam->getParam("GLGetCurrentContextCalled"));
|
||||
|
||||
memObject->peekSharingHandler()->release(memObject, context.getDevice(0)->getRootDeviceIndex());
|
||||
|
||||
memObject->peekSharingHandler()->acquire(memObject);
|
||||
memObject->peekSharingHandler()->acquire(memObject, context.getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_EQ(3, mockGlSharing->dllParam->getParam("GLAcquireSharedBufferCalled"));
|
||||
EXPECT_EQ(2, mockGlSharing->dllParam->getParam("GLGetCurrentContextCalled"));
|
||||
|
||||
@ -292,8 +292,8 @@ TEST_F(glSharingTests, givenClGLBufferWhenItIsAcquireCountIsDecrementedToZeroThe
|
||||
std::unique_ptr<Buffer> buffer(GlBuffer::createSharedGlBuffer(&context, CL_MEM_READ_WRITE, bufferId, nullptr));
|
||||
auto sharingHandler = buffer->peekSharingHandler();
|
||||
|
||||
sharingHandler->acquire(buffer.get());
|
||||
sharingHandler->acquire(buffer.get());
|
||||
sharingHandler->acquire(buffer.get(), context.getDevice(0)->getRootDeviceIndex());
|
||||
sharingHandler->acquire(buffer.get(), context.getDevice(0)->getRootDeviceIndex());
|
||||
|
||||
sharingHandler->release(buffer.get(), context.getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_EQ(0, mockGlSharing->dllParam->getParam("GLReleaseSharedBufferCalled"));
|
||||
@ -313,7 +313,7 @@ TEST_F(glSharingTests, givenClGLBufferWhenItIsAcquiredWithDifferentOffsetThenGra
|
||||
mockGlSharing->m_bufferInfoOutput.bufferOffset = 50u;
|
||||
mockGlSharing->uploadDataToBufferInfo();
|
||||
|
||||
memObject->peekSharingHandler()->acquire(memObject);
|
||||
memObject->peekSharingHandler()->acquire(memObject, context.getDevice(0)->getRootDeviceIndex());
|
||||
|
||||
auto offsetedGraphicsAddress = memObject->getGraphicsAllocation()->getGpuAddress();
|
||||
|
||||
|
@ -442,8 +442,8 @@ TEST_F(GlSharingTextureTests, givenSharedGlTextureWhenItIsAcquireCountIsDecremen
|
||||
std::unique_ptr<Image> image(GlTexture::createSharedGlTexture(clContext.get(), CL_MEM_READ_ONLY, GL_TEXTURE_2D, 0, textureId, nullptr));
|
||||
auto sharingHandler = image->peekSharingHandler();
|
||||
|
||||
sharingHandler->acquire(image.get());
|
||||
sharingHandler->acquire(image.get());
|
||||
sharingHandler->acquire(image.get(), clContext->getDevice(0)->getRootDeviceIndex());
|
||||
sharingHandler->acquire(image.get(), clContext->getDevice(0)->getRootDeviceIndex());
|
||||
|
||||
sharingHandler->release(image.get(), clContext->getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_EQ(0, glSharing->dllParam->getParam("GLReleaseSharedTextureCalled"));
|
||||
@ -458,8 +458,8 @@ TEST_F(GlSharingTextureTests, givenSharedRenderBufferWhenItIsAcquireCountIsDecre
|
||||
std::unique_ptr<Image> image(GlTexture::createSharedGlTexture(clContext.get(), CL_MEM_READ_WRITE, GL_RENDERBUFFER_EXT, 0, textureId, nullptr));
|
||||
auto sharingHandler = image->peekSharingHandler();
|
||||
|
||||
sharingHandler->acquire(image.get());
|
||||
sharingHandler->acquire(image.get());
|
||||
sharingHandler->acquire(image.get(), clContext->getDevice(0)->getRootDeviceIndex());
|
||||
sharingHandler->acquire(image.get(), clContext->getDevice(0)->getRootDeviceIndex());
|
||||
|
||||
sharingHandler->release(image.get(), clContext->getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_EQ(0, glSharing->dllParam->getParam("GLReleaseSharedRenderBufferCalled"));
|
||||
|
@ -21,7 +21,8 @@ TEST(sharingHandler, givenBasicSharingHandlerWhenSynchronizeObjectThenErrorIsRet
|
||||
|
||||
} sharingHandler;
|
||||
|
||||
UpdateData updateData;
|
||||
const uint32_t rootDeviceIndex = 1u;
|
||||
UpdateData updateData{rootDeviceIndex};
|
||||
sharingHandler.synchronizeHandlerMock(updateData);
|
||||
EXPECT_EQ(SynchronizeStatus::SYNCHRONIZE_ERROR, updateData.synchronizationStatus);
|
||||
|
||||
@ -49,7 +50,7 @@ TEST(sharingHandler, givenMemObjWhenAcquireIncrementCounterThenReleaseShouldDecr
|
||||
} sharingHandler;
|
||||
|
||||
EXPECT_EQ(0u, sharingHandler.acquireCount);
|
||||
sharingHandler.acquire(memObj.get());
|
||||
sharingHandler.acquire(memObj.get(), mockAllocation->getRootDeviceIndex());
|
||||
EXPECT_EQ(1u, sharingHandler.acquireCount);
|
||||
sharingHandler.release(memObj.get(), mockAllocation->getRootDeviceIndex());
|
||||
EXPECT_EQ(0u, sharingHandler.acquireCount);
|
||||
@ -74,9 +75,9 @@ TEST(sharingHandler, givenMemObjWhenAcquireTwoTimesThenReleaseShouldBeCalledTwoT
|
||||
} sharingHandler;
|
||||
|
||||
EXPECT_EQ(0u, sharingHandler.acquireCount);
|
||||
sharingHandler.acquire(memObj.get());
|
||||
sharingHandler.acquire(memObj.get(), mockAllocation->getRootDeviceIndex());
|
||||
EXPECT_EQ(1u, sharingHandler.acquireCount);
|
||||
sharingHandler.acquire(memObj.get());
|
||||
sharingHandler.acquire(memObj.get(), mockAllocation->getRootDeviceIndex());
|
||||
EXPECT_EQ(2u, sharingHandler.acquireCount);
|
||||
sharingHandler.release(memObj.get(), mockAllocation->getRootDeviceIndex());
|
||||
EXPECT_EQ(1u, sharingHandler.acquireCount);
|
||||
@ -92,7 +93,8 @@ TEST(sharingHandler, givenSharingHandlerWhenValidateUpdateDataIsCalledWithNonNul
|
||||
using SharingHandler::validateUpdateData;
|
||||
};
|
||||
MockSharingHandler sharingHandler;
|
||||
UpdateData updateData;
|
||||
const uint32_t rootDeviceIndex = 1u;
|
||||
UpdateData updateData{rootDeviceIndex};
|
||||
sharingHandler.validateUpdateData(updateData);
|
||||
}
|
||||
|
||||
@ -103,6 +105,6 @@ TEST(sharingHandler, givenSharingHandlerWhenAcquiringThenReturnErrorCode) {
|
||||
MemObj memObj(&context, CL_MEM_OBJECT_BUFFER, MemoryPropertiesHelper::createMemoryProperties(CL_MEM_USE_HOST_PTR, 0, 0), CL_MEM_USE_HOST_PTR, 0,
|
||||
1, nullptr, nullptr, graphicsAllocation, true, false, false);
|
||||
|
||||
auto result = sharingHandler.acquire(&memObj);
|
||||
auto result = sharingHandler.acquire(&memObj, graphicsAllocation->getRootDeviceIndex());
|
||||
EXPECT_NE(CL_SUCCESS, result);
|
||||
}
|
||||
|
@ -29,10 +29,10 @@ TEST_F(UnifiedSharingBufferTestsWithMemoryManager, givenUnifiedBufferThenItCanBe
|
||||
|
||||
ASSERT_EQ(0u, sharingHandler->acquireCount);
|
||||
|
||||
ASSERT_EQ(CL_SUCCESS, sharingHandler->acquire(buffer.get()));
|
||||
ASSERT_EQ(CL_SUCCESS, sharingHandler->acquire(buffer.get(), context->getDevice(0)->getRootDeviceIndex()));
|
||||
EXPECT_EQ(1u, sharingHandler->acquireCount);
|
||||
|
||||
ASSERT_EQ(CL_SUCCESS, sharingHandler->acquire(buffer.get()));
|
||||
ASSERT_EQ(CL_SUCCESS, sharingHandler->acquire(buffer.get(), context->getDevice(0)->getRootDeviceIndex()));
|
||||
EXPECT_EQ(2u, sharingHandler->acquireCount);
|
||||
|
||||
sharingHandler->release(buffer.get(), context->getDevice(0)->getRootDeviceIndex());
|
||||
|
@ -152,10 +152,10 @@ TEST_F(UnifiedSharingTestsWithMemoryManager, givenUnifiedSharingHandlerWhenAcqui
|
||||
|
||||
ASSERT_EQ(0u, sharingHandler->synchronizeObjectCalled);
|
||||
|
||||
ASSERT_EQ(CL_SUCCESS, sharingHandler->acquire(buffer.get()));
|
||||
ASSERT_EQ(CL_SUCCESS, sharingHandler->acquire(buffer.get(), context->getDevice(0)->getRootDeviceIndex()));
|
||||
EXPECT_EQ(1u, sharingHandler->synchronizeObjectCalled);
|
||||
|
||||
ASSERT_EQ(CL_SUCCESS, sharingHandler->acquire(buffer.get()));
|
||||
ASSERT_EQ(CL_SUCCESS, sharingHandler->acquire(buffer.get(), context->getDevice(0)->getRootDeviceIndex()));
|
||||
EXPECT_EQ(1u, sharingHandler->synchronizeObjectCalled);
|
||||
|
||||
ASSERT_EQ(0u, sharingHandler->releaseResourceCalled);
|
||||
|
@ -329,11 +329,11 @@ TEST_F(VaSharingTests, givenContextWhenClCreateFromVaApiMediaSurfaceIsCalledThen
|
||||
TEST_F(VaSharingTests, givenVASurfaceWhenItIsAcquiredTwiceThenAcquireIsNotCalled) {
|
||||
createMediaSurface();
|
||||
|
||||
sharedImg->peekSharingHandler()->acquire(sharedImg);
|
||||
sharedImg->peekSharingHandler()->acquire(sharedImg, context.getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_TRUE(vaSharing->sharingFunctions.extGetSurfaceHandleCalled);
|
||||
|
||||
vaSharing->sharingFunctions.extGetSurfaceHandleCalled = false;
|
||||
sharedImg->peekSharingHandler()->acquire(sharedImg);
|
||||
sharedImg->peekSharingHandler()->acquire(sharedImg, context.getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_FALSE(vaSharing->sharingFunctions.extGetSurfaceHandleCalled);
|
||||
}
|
||||
|
||||
@ -471,7 +471,7 @@ TEST_F(VaSharingTests, givenNonInteropUserSyncContextWhenAcquireIsCalledThenSync
|
||||
auto memObj = castToObject<MemObj>(sharedClMem);
|
||||
|
||||
EXPECT_FALSE(vaSharing->sharingFunctions.syncSurfaceCalled);
|
||||
memObj->peekSharingHandler()->acquire(sharedImg);
|
||||
memObj->peekSharingHandler()->acquire(sharedImg, context.getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_TRUE(vaSharing->sharingFunctions.syncSurfaceCalled);
|
||||
}
|
||||
|
||||
@ -481,7 +481,7 @@ TEST_F(VaSharingTests, givenInteropUserSyncContextWhenAcquireIsCalledThenDontSyn
|
||||
createMediaSurface();
|
||||
|
||||
EXPECT_FALSE(vaSharing->sharingFunctions.syncSurfaceCalled);
|
||||
sharedImg->peekSharingHandler()->acquire(sharedImg);
|
||||
sharedImg->peekSharingHandler()->acquire(sharedImg, context.getDevice(0)->getRootDeviceIndex());
|
||||
EXPECT_FALSE(vaSharing->sharingFunctions.syncSurfaceCalled);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user