private static long getDevice(long platform, CLCapabilities platformCaps, int deviceType) { MemoryStack stack = stackPush(); try { IntBuffer pi = stack.mallocInt(1); checkCLError(clGetDeviceIDs(platform, deviceType, null, pi)); PointerBuffer devices = stack.mallocPointer(pi.get(0)); checkCLError(clGetDeviceIDs(platform, deviceType, devices, null)); for (int i = 0; i < devices.capacity(); i++) { long device = devices.get(i); CLCapabilities caps = CL.createDeviceCapabilities(device, platformCaps); if (!(caps.cl_khr_gl_sharing || caps.cl_APPLE_gl_sharing)) continue; return device; } } finally { stack.pop(); } return NULL; }