Hello,
As you can see the subject, I can't create image object with my Intel HD graphics.
I have 3 computers that each computer has 'NVidia', 'Intel HD 4400', 'Intel HD 4600' graphic chip-set. Initially made program and kernels with NVidia first. And now, I tried to run my application on other computers but it failed.
Intel HD graphic chip-set returns 'CL_INVALID_IMAGE_DESCRIPTOR(-65)' for create image with cl::Image2D(...) .
I am using Windows 7, Intel OpenCL SDK for build. and 10.18.10.3496 driver for Intel HD graphics. I have saw Intel HD graphics OpenCL driver version is 1.2 and succeed image creation from OpenGL texture sharing. So, I tested which image format is supported by Intel HD graphics.
Here is the source code for doing test,
const cl_channel_order channel_order_value[] = {
CL_R,
CL_A,
CL_RG,
CL_RA,
CL_RGB,
CL_RGBA,
CL_BGRA,
CL_ARGB,
CL_INTENSITY,
CL_LUMINANCE,
CL_Rx,
CL_RGx,
CL_RGBx,
CL_DEPTH,
CL_DEPTH_STENCIL
};
const cl_channel_type channel_type_value[] = {
CL_SNORM_INT8,
CL_SNORM_INT16,
CL_UNORM_INT8,
CL_UNORM_INT16,
CL_UNORM_SHORT_565,
CL_UNORM_SHORT_555,
CL_UNORM_INT_101010,
CL_SIGNED_INT8,
CL_SIGNED_INT16,
CL_SIGNED_INT32,
CL_UNSIGNED_INT8,
CL_UNSIGNED_INT16,
CL_UNSIGNED_INT32,
CL_HALF_FLOAT,
CL_FLOAT,
CL_UNORM_INT24
};
const char* channel_order_name[] = { "CL_R","CL_A","CL_RG","CL_RA","CL_RGB","CL_RGBA","CL_BGRA","CL_ARGB","CL_INTENSITY","CL_LUMINANCE","CL_Rx","CL_RGx","CL_RGBx","CL_DEPTH","CL_DEPTH_STENCIL"
};
const char* channel_type_name[] = { "CL_SNORM_INT8","CL_SNORM_INT16","CL_UNORM_INT8","CL_UNORM_INT16","CL_UNORM_SHORT_565","CL_UNORM_SHORT_555","CL_UNORM_INT_101010","CL_SIGNED_INT8","CL_SIGNED_INT16","CL_SIGNED_INT32","CL_UNSIGNED_INT8","CL_UNSIGNED_INT16","CL_UNSIGNED_INT32","CL_HALF_FLOAT","CL_FLOAT","CL_UNORM_INT24"
};
void doImageCreationTest()
{
cl_int err = CL_SUCCESS;
for (int order = 0; order < 15; ++order)
{
for (int type = 0; type < 16; ++type)
{
err = CL_SUCCESS;
cl::Image2D img = cl::Image2D(context, CL_MEM_READ_WRITE, cl::ImageFormat(channel_order_value[order], channel_type_value[type]), 512, 512, 0, 0, &err);
if (err == CL_SUCCESS)
{
cout << "=> "<< channel_order_name[order] << " with "<< channel_type_name[type] << endl;
}
}
}
}
result:
[NVIDIA]
=> CL_R with CL_SNORM_INT8
=> CL_R with CL_SNORM_INT16
=> CL_R with CL_UNORM_INT8
=> CL_R with CL_UNORM_INT16
=> CL_R with CL_SIGNED_INT8
=> CL_R with CL_SIGNED_INT16
=> CL_R with CL_SIGNED_INT32
=> CL_R with CL_UNSIGNED_INT8
=> CL_R with CL_UNSIGNED_INT16
=> CL_R with CL_UNSIGNED_INT32
=> CL_R with CL_HALF_FLOAT
=> CL_R with CL_FLOAT
=> CL_A with CL_SNORM_INT8
=> CL_A with CL_SNORM_INT16
=> CL_A with CL_UNORM_INT8
=> CL_A with CL_UNORM_INT16
=> CL_A with CL_SIGNED_INT8
=> CL_A with CL_SIGNED_INT16
=> CL_A with CL_SIGNED_INT32
=> CL_A with CL_UNSIGNED_INT8
=> CL_A with CL_UNSIGNED_INT16
=> CL_A with CL_UNSIGNED_INT32
=> CL_A with CL_HALF_FLOAT
=> CL_A with CL_FLOAT
=> CL_RG with CL_SNORM_INT8
=> CL_RG with CL_SNORM_INT16
=> CL_RG with CL_UNORM_INT8
=> CL_RG with CL_UNORM_INT16
=> CL_RG with CL_SIGNED_INT8
=> CL_RG with CL_SIGNED_INT16
=> CL_RG with CL_SIGNED_INT32
=> CL_RG with CL_UNSIGNED_INT8
=> CL_RG with CL_UNSIGNED_INT16
=> CL_RG with CL_UNSIGNED_INT32
=> CL_RG with CL_HALF_FLOAT
=> CL_RG with CL_FLOAT
=> CL_RA with CL_SNORM_INT8
=> CL_RA with CL_SNORM_INT16
=> CL_RA with CL_UNORM_INT8
=> CL_RA with CL_UNORM_INT16
=> CL_RA with CL_SIGNED_INT8
=> CL_RA with CL_SIGNED_INT16
=> CL_RA with CL_SIGNED_INT32
=> CL_RA with CL_UNSIGNED_INT8
=> CL_RA with CL_UNSIGNED_INT16
=> CL_RA with CL_UNSIGNED_INT32
=> CL_RA with CL_HALF_FLOAT
=> CL_RA with CL_FLOAT
=> CL_RGB with CL_SNORM_INT8
=> CL_RGB with CL_SNORM_INT16
=> CL_RGB with CL_UNORM_INT8
=> CL_RGB with CL_UNORM_INT16
=> CL_RGB with CL_UNORM_SHORT_565
=> CL_RGB with CL_UNORM_SHORT_555
=> CL_RGB with CL_UNORM_INT_101010
=> CL_RGB with CL_SIGNED_INT8
=> CL_RGB with CL_SIGNED_INT16
=> CL_RGB with CL_SIGNED_INT32
=> CL_RGB with CL_UNSIGNED_INT8
=> CL_RGB with CL_UNSIGNED_INT16
=> CL_RGB with CL_UNSIGNED_INT32
=> CL_RGB with CL_HALF_FLOAT
=> CL_RGB with CL_FLOAT
=> CL_RGBA with CL_SNORM_INT8
=> CL_RGBA with CL_SNORM_INT16
=> CL_RGBA with CL_UNORM_INT8
=> CL_RGBA with CL_UNORM_INT16
=> CL_RGBA with CL_SIGNED_INT8
=> CL_RGBA with CL_SIGNED_INT16
=> CL_RGBA with CL_SIGNED_INT32
=> CL_RGBA with CL_UNSIGNED_INT8
=> CL_RGBA with CL_UNSIGNED_INT16
=> CL_RGBA with CL_UNSIGNED_INT32
=> CL_RGBA with CL_HALF_FLOAT
=> CL_RGBA with CL_FLOAT
=> CL_BGRA with CL_SNORM_INT8
=> CL_BGRA with CL_SNORM_INT16
=> CL_BGRA with CL_UNORM_INT8
=> CL_BGRA with CL_UNORM_INT16
=> CL_BGRA with CL_SIGNED_INT8
=> CL_BGRA with CL_SIGNED_INT16
=> CL_BGRA with CL_SIGNED_INT32
=> CL_BGRA with CL_UNSIGNED_INT8
=> CL_BGRA with CL_UNSIGNED_INT16
=> CL_BGRA with CL_UNSIGNED_INT32
=> CL_BGRA with CL_HALF_FLOAT
=> CL_BGRA with CL_FLOAT
=> CL_ARGB with CL_SNORM_INT8
=> CL_ARGB with CL_SNORM_INT16
=> CL_ARGB with CL_UNORM_INT8
=> CL_ARGB with CL_UNORM_INT16
=> CL_ARGB with CL_SIGNED_INT8
=> CL_ARGB with CL_SIGNED_INT16
=> CL_ARGB with CL_SIGNED_INT32
=> CL_ARGB with CL_UNSIGNED_INT8
=> CL_ARGB with CL_UNSIGNED_INT16
=> CL_ARGB with CL_UNSIGNED_INT32
=> CL_ARGB with CL_HALF_FLOAT
=> CL_ARGB with CL_FLOAT
=> CL_INTENSITY with CL_SNORM_INT8
=> CL_INTENSITY with CL_SNORM_INT16
=> CL_INTENSITY with CL_UNORM_INT8
=> CL_INTENSITY with CL_UNORM_INT16
=> CL_INTENSITY with CL_SIGNED_INT8
=> CL_INTENSITY with CL_SIGNED_INT16
=> CL_INTENSITY with CL_SIGNED_INT32
=> CL_INTENSITY with CL_UNSIGNED_INT8
=> CL_INTENSITY with CL_UNSIGNED_INT16
=> CL_INTENSITY with CL_UNSIGNED_INT32
=> CL_INTENSITY with CL_HALF_FLOAT
=> CL_INTENSITY with CL_FLOAT
=> CL_LUMINANCE with CL_SNORM_INT8
=> CL_LUMINANCE with CL_SNORM_INT16
=> CL_LUMINANCE with CL_UNORM_INT8
=> CL_LUMINANCE with CL_UNORM_INT16
=> CL_LUMINANCE with CL_SIGNED_INT8
=> CL_LUMINANCE with CL_SIGNED_INT16
=> CL_LUMINANCE with CL_SIGNED_INT32
=> CL_LUMINANCE with CL_UNSIGNED_INT8
=> CL_LUMINANCE with CL_UNSIGNED_INT16
=> CL_LUMINANCE with CL_UNSIGNED_INT32
=> CL_LUMINANCE with CL_HALF_FLOAT
=> CL_LUMINANCE with CL_FLOAT
=> CL_DEPTH with CL_SNORM_INT8
=> CL_DEPTH with CL_SNORM_INT16
=> CL_DEPTH with CL_UNORM_INT8
=> CL_DEPTH with CL_UNORM_INT16
=> CL_DEPTH with CL_SIGNED_INT8
=> CL_DEPTH with CL_SIGNED_INT16
=> CL_DEPTH with CL_SIGNED_INT32
=> CL_DEPTH with CL_UNSIGNED_INT8
=> CL_DEPTH with CL_UNSIGNED_INT16
=> CL_DEPTH with CL_UNSIGNED_INT32
=> CL_DEPTH with CL_HALF_FLOAT
=> CL_DEPTH with CL_FLOAT
But Intel HD cannot create any type of images.
What would I do for Intel HD graphics?
I am sorry for my poor English.