mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-26 23:33:20 +08:00
Correct callback API functions
Add implementation to clSetProgramReleaseCallback and clSetContextDestructorCallback functions. Resolves: NEO-4962, NEO-5051 Change-Id: Iad6fffc663665a3cf16b96aa90065140cf8c5477 Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
5358f2cf9c
commit
d889c599b2
@@ -3121,3 +3121,35 @@ TEST(ProgramReplaceDeviceBinary, GivenBinaryZebinThenUseAsBothPackedAndUnpackedB
|
||||
EXPECT_EQ(0, memcmp(program.packedDeviceBinary.get(), zebin.storage.data(), program.packedDeviceBinarySize));
|
||||
EXPECT_EQ(0, memcmp(program.unpackedDeviceBinary.get(), zebin.storage.data(), program.unpackedDeviceBinarySize));
|
||||
}
|
||||
|
||||
TEST(Program, WhenSettingProgramReleaseCallbackThenCallOrderIsPreserved) {
|
||||
struct UserDataType {
|
||||
cl_program expectedProgram;
|
||||
std::vector<size_t> &vectorToModify;
|
||||
size_t valueToAdd;
|
||||
};
|
||||
auto callback = [](cl_program program, void *userData) -> void {
|
||||
auto pUserData = reinterpret_cast<UserDataType *>(userData);
|
||||
EXPECT_EQ(pUserData->expectedProgram, program);
|
||||
pUserData->vectorToModify.push_back(pUserData->valueToAdd);
|
||||
};
|
||||
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
auto pProgram = new MockProgram{executionEnvironment};
|
||||
std::vector<size_t> callbacksReturnValues;
|
||||
UserDataType userDataArray[]{
|
||||
{pProgram, callbacksReturnValues, 1},
|
||||
{pProgram, callbacksReturnValues, 2},
|
||||
{pProgram, callbacksReturnValues, 3}};
|
||||
|
||||
for (auto &userData : userDataArray) {
|
||||
cl_int retVal = clSetProgramReleaseCallback(pProgram, callback, &userData);
|
||||
ASSERT_EQ(CL_SUCCESS, retVal);
|
||||
}
|
||||
delete pProgram;
|
||||
|
||||
ASSERT_EQ(3u, callbacksReturnValues.size());
|
||||
EXPECT_EQ(3u, callbacksReturnValues[0]);
|
||||
EXPECT_EQ(2u, callbacksReturnValues[1]);
|
||||
EXPECT_EQ(1u, callbacksReturnValues[2]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user