getVulkanGPUMemory queries GPUs using vulkaninfo as a fallback. Note: vulkaninfo JSON is a Vulkan Profiles export and does not include VkPhysicalDeviceMemoryProperties, so memory heaps are parsed from text output.
()
| 979 | // Note: vulkaninfo JSON is a Vulkan Profiles export and does not include |
| 980 | // VkPhysicalDeviceMemoryProperties, so memory heaps are parsed from text output. |
| 981 | func getVulkanGPUMemory() []GPUMemoryInfo { |
| 982 | if _, err := exec.LookPath("vulkaninfo"); err != nil { |
| 983 | return nil |
| 984 | } |
| 985 | |
| 986 | cmd := exec.Command("vulkaninfo", "--text") |
| 987 | |
| 988 | var stdout, stderr bytes.Buffer |
| 989 | cmd.Stdout = &stdout |
| 990 | cmd.Stderr = &stderr |
| 991 | |
| 992 | if err := cmd.Run(); err != nil { |
| 993 | xlog.Debug("vulkaninfo failed", "error", err, "stderr", stderr.String()) |
| 994 | return nil |
| 995 | } |
| 996 | |
| 997 | return parseVulkanGPUMemoryText(strings.NewReader(stdout.String())) |
| 998 | |
| 999 | } |
| 1000 | |
| 1001 | type vulkanGPUTextInfo struct { |
| 1002 | index int |
no test coverage detected