checkVulkanVersion static method

bool checkVulkanVersion()

Implementation

static bool checkVulkanVersion() {
  try {
    final DynamicLibrary vulkanLib = Platform.isWindows
        ? DynamicLibrary.open('vulkan-1.dll')
        : DynamicLibrary.open('libvulkan.so');
    final VkEnumerateInstanceVersionDart vkEnumerateInstanceVersion =
        vulkanLib.lookupFunction<VkEnumerateInstanceVersionNative,
            VkEnumerateInstanceVersionDart>('vkEnumerateInstanceVersion');
    final Pointer<Uint32> apiVersion = calloc<Uint32>();
    final int result = vkEnumerateInstanceVersion(apiVersion);
    bool available = false;
    if (result == 0) {
      final int version = apiVersion.value;
      final int variant = (version >> 29);
      final int major = (version >> 22) & 0x7F;
      final int minor = (version >> 12) & 0x3FF;
      available = variant  == 0 && (major > 1 || (major == 1 && minor >= 1));
      //print("Vulkan version ${major}.${minor}");
    }
    calloc.free(apiVersion);
    return available;
  } on Exception {
  } on ArgumentError {}
  return false;
}