private static string GetVulkanDriverVersionRaw(string gpuInfo, string version)
        {
            if (string.IsNullOrEmpty(version))
            {
                return(null);
            }

            var ver = int.Parse(version);

            if (IsAmd(gpuInfo))
            {
                var major  = (ver >> 22) & 0x3ff;
                var minor  = (ver >> 12) & 0x3ff;
                var patch  = ver & 0xfff;
                var result = $"{major}.{minor}.{patch}";
                if (gpuInfo.Contains("RADV", StringComparison.InvariantCultureIgnoreCase))
                {
                    return(result);
                }

                return(AmdDriverVersionProvider.GetFromVulkanAsync(result).ConfigureAwait(false).GetAwaiter().GetResult());
            }
            else
            {
                var major = (ver >> 22) & 0x3ff;
                var minor = (ver >> 14) & 0xff;
                var patch = ver & 0x3fff;
                if (major == 0 && gpuInfo.Contains("Intel", StringComparison.InvariantCultureIgnoreCase))
                {
                    return($"{minor}.{patch}");
                }

                if (IsNvidia(gpuInfo))
                {
                    if (patch == 0)
                    {
                        return($"{major}.{minor}");
                    }
                    return($"{major}.{minor:00}.{(patch >> 6) & 0xff}.{patch & 0x3f}");
                }

                return($"{major}.{minor}.{patch}");
            }
        }
        private static string GetVulkanDriverVersion(string gpu, string foundDevices)
        {
            if (string.IsNullOrEmpty(gpu) || string.IsNullOrEmpty(foundDevices))
            {
                return(null);
            }

            var info = (from line in foundDevices.Split(Environment.NewLine)
                        let m = VulkanDeviceInfo.Match(line)
                                where m.Success
                                select m
                        ).FirstOrDefault(m => m.Groups["device_name"].Value == gpu);
            var result = info?.Groups["version"].Value;

            if (string.IsNullOrEmpty(result))
            {
                return(null);
            }

            if (gpu.Contains("Radeon", StringComparison.InvariantCultureIgnoreCase) ||
                gpu.Contains("AMD", StringComparison.InvariantCultureIgnoreCase) ||
                gpu.Contains("ATI ", StringComparison.InvariantCultureIgnoreCase))
            {
                if (gpu.Contains("RADV", StringComparison.InvariantCultureIgnoreCase))
                {
                    return(result);
                }

                return(AmdDriverVersionProvider.GetFromVulkanAsync(result).ConfigureAwait(false).GetAwaiter().GetResult());
            }

            if (result.EndsWith(".0.0"))
            {
                result = result.Substring(0, result.Length - 4);
            }
            if (result.Length > 3 && result[result.Length - 2] == '.')
            {
                result = result.Substring(0, result.Length - 1) + "0" + result[result.Length - 1];
            }
            return(result);
        }