mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-06 02:18:05 +08:00
Correct clCreateProgramWithBinary
store proper devices validate input devices, lengths and binary return correct binaries Related-To: NEO-5001 Change-Id: I3822c291a4430e64afe54f1486b0014f16de3d64 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
4c2d92890f
commit
8afdb2d981
@@ -43,8 +43,8 @@ struct HelloWorldKernelFixture : public ProgramFixture {
|
||||
pTestFilename->append(std::to_string(simd));
|
||||
}
|
||||
|
||||
cl_device_id device = pDevice;
|
||||
pContext = Context::create<MockContext>(nullptr, ClDeviceVector(&device, 1), nullptr, nullptr, retVal);
|
||||
auto deviceVector = toClDeviceVector(*pDevice);
|
||||
pContext = Context::create<MockContext>(nullptr, deviceVector, nullptr, nullptr, retVal);
|
||||
ASSERT_EQ(CL_SUCCESS, retVal);
|
||||
ASSERT_NE(nullptr, pContext);
|
||||
|
||||
@@ -56,18 +56,20 @@ struct HelloWorldKernelFixture : public ProgramFixture {
|
||||
|
||||
CreateProgramFromBinary(
|
||||
pContext,
|
||||
&device,
|
||||
deviceVector,
|
||||
*pTestFilename,
|
||||
optionsToProgram);
|
||||
} else {
|
||||
CreateProgramFromBinary(
|
||||
pContext,
|
||||
&device,
|
||||
deviceVector,
|
||||
*pTestFilename);
|
||||
}
|
||||
|
||||
ASSERT_NE(nullptr, pProgram);
|
||||
|
||||
cl_device_id device = pDevice;
|
||||
|
||||
retVal = pProgram->build(
|
||||
1,
|
||||
&device,
|
||||
|
||||
@@ -41,8 +41,8 @@ void ProgramFixture::CreateProgramWithSource(cl_context context,
|
||||
ASSERT_EQ(CL_SUCCESS, retVal);
|
||||
}
|
||||
|
||||
void ProgramFixture::CreateProgramFromBinary(cl_context context,
|
||||
cl_device_id *pDeviceList,
|
||||
void ProgramFixture::CreateProgramFromBinary(Context *pContext,
|
||||
const ClDeviceVector &deviceVector,
|
||||
const std::string &binaryFileName,
|
||||
cl_int &retVal,
|
||||
const std::string &options) {
|
||||
@@ -59,24 +59,23 @@ void ProgramFixture::CreateProgramFromBinary(cl_context context,
|
||||
ASSERT_NE(nullptr, knownSource);
|
||||
|
||||
pProgram = Program::create<MockProgram>(
|
||||
context,
|
||||
1,
|
||||
pDeviceList,
|
||||
pContext,
|
||||
deviceVector,
|
||||
&knownSourceSize,
|
||||
(const unsigned char **)&knownSource,
|
||||
nullptr,
|
||||
retVal);
|
||||
}
|
||||
|
||||
void ProgramFixture::CreateProgramFromBinary(cl_context pContext,
|
||||
cl_device_id *pDeviceList,
|
||||
void ProgramFixture::CreateProgramFromBinary(Context *pContext,
|
||||
const ClDeviceVector &deviceVector,
|
||||
const std::string &binaryFileName,
|
||||
const std::string &options) {
|
||||
Cleanup();
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
CreateProgramFromBinary(
|
||||
pContext,
|
||||
pDeviceList,
|
||||
deviceVector,
|
||||
binaryFileName,
|
||||
retVal,
|
||||
options);
|
||||
|
||||
@@ -18,14 +18,14 @@ namespace NEO {
|
||||
|
||||
class ProgramFixture {
|
||||
public:
|
||||
void CreateProgramFromBinary(cl_context context,
|
||||
cl_device_id *pDeviceList,
|
||||
void CreateProgramFromBinary(Context *pContext,
|
||||
const ClDeviceVector &deviceVector,
|
||||
const std::string &binaryFileName,
|
||||
cl_int &retVal,
|
||||
const std::string &options = "");
|
||||
|
||||
void CreateProgramFromBinary(cl_context pContext,
|
||||
cl_device_id *pDeviceList,
|
||||
void CreateProgramFromBinary(Context *pContext,
|
||||
const ClDeviceVector &deviceVector,
|
||||
const std::string &binaryFileName,
|
||||
const std::string &options = "");
|
||||
|
||||
|
||||
@@ -91,13 +91,14 @@ class SimpleArgKernelFixture : public ProgramFixture {
|
||||
}
|
||||
|
||||
cl_device_id device = pDevice;
|
||||
pContext = Context::create<MockContext>(nullptr, ClDeviceVector(&device, 1), nullptr, nullptr, retVal);
|
||||
auto deviceVector = toClDeviceVector(*pDevice);
|
||||
pContext = Context::create<MockContext>(nullptr, deviceVector, nullptr, nullptr, retVal);
|
||||
ASSERT_EQ(CL_SUCCESS, retVal);
|
||||
ASSERT_NE(nullptr, pContext);
|
||||
|
||||
CreateProgramFromBinary(
|
||||
pContext,
|
||||
&device,
|
||||
deviceVector,
|
||||
testFile);
|
||||
ASSERT_NE(nullptr, pProgram);
|
||||
|
||||
@@ -145,11 +146,10 @@ class SimpleArgNonUniformKernelFixture : public ProgramFixture {
|
||||
ProgramFixture::SetUp();
|
||||
|
||||
cl_device_id deviceId = device;
|
||||
cl_context clContext = context;
|
||||
|
||||
CreateProgramFromBinary(
|
||||
clContext,
|
||||
&deviceId,
|
||||
context,
|
||||
context->getDevices(),
|
||||
"simple_nonuniform",
|
||||
"-cl-std=CL2.0");
|
||||
ASSERT_NE(nullptr, pProgram);
|
||||
@@ -193,11 +193,10 @@ class SimpleKernelFixture : public ProgramFixture {
|
||||
ProgramFixture::SetUp();
|
||||
|
||||
cl_device_id deviceId = device;
|
||||
cl_context clContext = context;
|
||||
std::string programName("simple_kernels");
|
||||
CreateProgramFromBinary(
|
||||
clContext,
|
||||
&deviceId,
|
||||
context,
|
||||
toClDeviceVector(*device),
|
||||
programName);
|
||||
ASSERT_NE(nullptr, pProgram);
|
||||
|
||||
@@ -249,13 +248,12 @@ class SimpleKernelStatelessFixture : public ProgramFixture {
|
||||
void SetUp(ClDevice *device, Context *context) {
|
||||
ProgramFixture::SetUp();
|
||||
cl_device_id deviceId = device;
|
||||
cl_context clContext = context;
|
||||
DebugManager.flags.DisableStatelessToStatefulOptimization.set(true);
|
||||
DebugManager.flags.EnableStatelessToStatefulBufferOffsetOpt.set(false);
|
||||
|
||||
CreateProgramFromBinary(
|
||||
clContext,
|
||||
&deviceId,
|
||||
context,
|
||||
toClDeviceVector(*device),
|
||||
"stateless_kernel");
|
||||
ASSERT_NE(nullptr, pProgram);
|
||||
|
||||
@@ -300,10 +298,9 @@ class BindlessKernelFixture : public ProgramFixture {
|
||||
void createKernel(const std::string &programName, const std::string &kernelName) {
|
||||
DebugManager.flags.UseBindlessMode.set(1);
|
||||
cl_device_id deviceId = deviceCl;
|
||||
cl_context clContext = contextCl;
|
||||
CreateProgramFromBinary(
|
||||
clContext,
|
||||
&deviceId,
|
||||
contextCl,
|
||||
contextCl->getDevices(),
|
||||
programName);
|
||||
ASSERT_NE(nullptr, pProgram);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user