Свойство CL_CONTEXT_PLATFORM
позволяет выбрать идентификатор конкретной платформы. Для clCreateContext()
это не очень полезно, так как в любом случае платформа будет неявно выбрана через список устройств. Однако для clCreateContextFromType()
это позволяет вам создать контекст, например, для «всех графических процессоров в системе, использующих реализацию AMD» (в отличие от реализации Intel).
Другие свойства облегчают взаимодействие между OpenCL и другими графические или вычислительные библиотеки, такие как OpenGL, DirectX и тому подобное. Поэтому, если вы хотите обмениваться текстурами между OpenCL и OpenGL, это говорит вашей реализации Open CL , для которой в контексте Open GL вы будете предоставлять имена текстур, которые являются просто целочисленными дескрипторами и не уникальны для контекстов OpenGL.
С практической точки зрения вы передаете свойства в виде массива с нулем в конце, например:
cl_context_properties properties[] =
{
CL_CONTEXT_PLATFORM, selected_platform_id,
0 // signals end of property list
};
cl_int error = 0;
cl_context context = clCreateContextFromType(properties, CL_DEVICE_TYPE_GPU, NULL, NULL, &error);