Пример #1
0
  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;
  }