diff options
author | dan sinclair <dj2@everburning.com> | 2019-03-05 09:18:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-05 09:18:17 -0500 |
commit | 703c18173e633d6b26d575bc53659cc17ea60af8 (patch) | |
tree | 72bd58128d2ef8e52b3c7bb54806064edbf46675 /samples | |
parent | 7b805bb199ae43fcc9541a7d2b7b5497221c46cd (diff) | |
download | amber-703c18173e633d6b26d575bc53659cc17ea60af8.tar.gz |
Add vulkan information into -V output. (#326)
This CL adds information from the vulkan physical device into the -V
output when requested.
Fixes #323
Diffstat (limited to 'samples')
-rw-r--r-- | samples/amber.cc | 7 | ||||
-rw-r--r-- | samples/config_helper.cc | 9 | ||||
-rw-r--r-- | samples/config_helper.h | 2 | ||||
-rw-r--r-- | samples/config_helper_dawn.cc | 1 | ||||
-rw-r--r-- | samples/config_helper_dawn.h | 1 | ||||
-rw-r--r-- | samples/config_helper_vulkan.cc | 42 | ||||
-rw-r--r-- | samples/config_helper_vulkan.h | 4 |
7 files changed, 56 insertions, 10 deletions
diff --git a/samples/amber.cc b/samples/amber.cc index 7f27d00..160c60b 100644 --- a/samples/amber.cc +++ b/samples/amber.cc @@ -231,11 +231,6 @@ int main(int argc, const char** argv) { return 0; } - if (options.input_filenames.empty()) { - std::cerr << "Input file must be provided." << std::endl; - return 2; - } - amber::Result result; std::vector<std::string> failures; struct RecipeData { @@ -303,7 +298,7 @@ int main(int argc, const char** argv) { required_instance_extensions.end()), std::vector<std::string>(required_device_extensions.begin(), required_device_extensions.end()), - options.disable_validation_layer, &config); + options.disable_validation_layer, options.show_version_info, &config); if (!r.IsSuccess()) { std::cout << r.Error() << std::endl; diff --git a/samples/config_helper.cc b/samples/config_helper.cc index 45c6834..05963fb 100644 --- a/samples/config_helper.cc +++ b/samples/config_helper.cc @@ -44,6 +44,7 @@ amber::Result ConfigHelper::CreateConfig( const std::vector<std::string>& required_instance_extensions, const std::vector<std::string>& required_device_extensions, bool disable_validation_layer, + bool show_version_info, std::unique_ptr<amber::EngineConfig>* config) { switch (engine) { case amber::kEngineTypeVulkan: @@ -65,10 +66,10 @@ amber::Result ConfigHelper::CreateConfig( if (!impl_) return amber::Result("Unable to create config helper"); - return impl_->CreateConfig(engine_major, engine_minor, required_features, - required_instance_extensions, - required_device_extensions, - disable_validation_layer, config); + return impl_->CreateConfig( + engine_major, engine_minor, required_features, + required_instance_extensions, required_device_extensions, + disable_validation_layer, show_version_info, config); } amber::Result ConfigHelper::Shutdown() { diff --git a/samples/config_helper.h b/samples/config_helper.h index 90bb0d7..5698f2a 100644 --- a/samples/config_helper.h +++ b/samples/config_helper.h @@ -39,6 +39,7 @@ class ConfigHelperImpl { const std::vector<std::string>& required_instance_extensions, const std::vector<std::string>& required_device_extensions, bool disable_validation_layer, + bool show_version_info, std::unique_ptr<amber::EngineConfig>* config) = 0; // Destroy instance and device. @@ -64,6 +65,7 @@ class ConfigHelper { const std::vector<std::string>& required_instance_extensions, const std::vector<std::string>& required_device_extensions, bool disable_validation_layer, + bool show_version_info, std::unique_ptr<amber::EngineConfig>* config); // Destroy instance and device. diff --git a/samples/config_helper_dawn.cc b/samples/config_helper_dawn.cc index 3afbe37..4c449f8 100644 --- a/samples/config_helper_dawn.cc +++ b/samples/config_helper_dawn.cc @@ -37,6 +37,7 @@ amber::Result ConfigHelperDawn::CreateConfig( const std::vector<std::string>&, const std::vector<std::string>&, bool, + bool, std::unique_ptr<amber::EngineConfig>* config) { #if AMBER_DAWN_METAL auto r = dawn::CreateMetalDevice(&dawn_instance_, &dawn_device_); diff --git a/samples/config_helper_dawn.h b/samples/config_helper_dawn.h index 712e70f..4bc1fc7 100644 --- a/samples/config_helper_dawn.h +++ b/samples/config_helper_dawn.h @@ -44,6 +44,7 @@ class ConfigHelperDawn : public ConfigHelperImpl { const std::vector<std::string>& required_instance_extensions, const std::vector<std::string>& required_device_extensions, bool disable_validation_layer, + bool show_version_info, std::unique_ptr<amber::EngineConfig>* config) override; // Destroy Dawn instance and device. diff --git a/samples/config_helper_vulkan.cc b/samples/config_helper_vulkan.cc index e26600d..b6de67f 100644 --- a/samples/config_helper_vulkan.cc +++ b/samples/config_helper_vulkan.cc @@ -17,6 +17,7 @@ #include <vulkan/vulkan.h> #include <algorithm> #include <cstring> +#include <iostream> #include <set> #include "samples/log.h" @@ -571,6 +572,24 @@ uint32_t ChooseQueueFamilyIndex(const VkPhysicalDevice& physical_device) { return std::numeric_limits<uint32_t>::max(); } +std::string deviceTypeToName(VkPhysicalDeviceType type) { + switch (type) { + case VK_PHYSICAL_DEVICE_TYPE_OTHER: + return "other"; + case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU: + return "integrated gpu"; + case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU: + return "discrete gpu"; + case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU: + return "virtual gpu"; + case VK_PHYSICAL_DEVICE_TYPE_CPU: + return "cpu"; + default: + break; + } + return "unknown"; +} + } // namespace ConfigHelperVulkan::ConfigHelperVulkan() = default; @@ -833,6 +852,25 @@ amber::Result ConfigHelperVulkan::DoCreateDevice(VkDeviceCreateInfo* info) { return {}; } +void ConfigHelperVulkan::DumpPhysicalDeviceInfo() { + VkPhysicalDeviceProperties props; + vkGetPhysicalDeviceProperties(vulkan_physical_device_, &props); + + uint32_t api_version = props.apiVersion; + + std::cout << std::endl; + std::cout << "Physical device properties:" << std::endl; + std::cout << " apiVersion: " << VK_VERSION_MAJOR(api_version) << "." + << VK_VERSION_MINOR(api_version) << "." + << VK_VERSION_PATCH(api_version) << std::endl; + std::cout << " driverVersion: " << props.driverVersion << std::endl; + std::cout << " vendorID: " << props.vendorID << std::endl; + std::cout << " deviceID: " << props.deviceID << std::endl; + std::cout << " deviceType: " << deviceTypeToName(props.deviceType) + << std::endl; + std::cout << " deviceName: " << props.deviceName << std::endl; +} + amber::Result ConfigHelperVulkan::CreateConfig( uint32_t engine_major, uint32_t engine_minor, @@ -840,6 +878,7 @@ amber::Result ConfigHelperVulkan::CreateConfig( const std::vector<std::string>& required_instance_extensions, const std::vector<std::string>& required_device_extensions, bool disable_validation_layer, + bool show_version_info, std::unique_ptr<amber::EngineConfig>* cfg_holder) { amber::Result r = CreateVulkanInstance(engine_major, engine_minor, required_instance_extensions, @@ -857,6 +896,9 @@ amber::Result ConfigHelperVulkan::CreateConfig( if (!r.IsSuccess()) return r; + if (show_version_info) + DumpPhysicalDeviceInfo(); + r = CreateVulkanDevice(required_features, required_device_extensions); if (!r.IsSuccess()) return r; diff --git a/samples/config_helper_vulkan.h b/samples/config_helper_vulkan.h index eb4e512..10e66d2 100644 --- a/samples/config_helper_vulkan.h +++ b/samples/config_helper_vulkan.h @@ -48,6 +48,7 @@ class ConfigHelperVulkan : public ConfigHelperImpl { const std::vector<std::string>& required_instance_extensions, const std::vector<std::string>& required_device_extensions, bool disable_validation_layer, + bool show_version_info, std::unique_ptr<amber::EngineConfig>* config) override; // Destroy Vulkan instance and device. @@ -89,6 +90,9 @@ class ConfigHelperVulkan : public ConfigHelperImpl { // Creates the physical device given the device |info|. amber::Result DoCreateDevice(VkDeviceCreateInfo* info); + // Writes information related to the vulkan instance to stdout. + void DumpPhysicalDeviceInfo(); + VkInstance vulkan_instance_ = VK_NULL_HANDLE; VkDebugReportCallbackEXT vulkan_callback_ = VK_NULL_HANDLE; VkPhysicalDevice vulkan_physical_device_ = VK_NULL_HANDLE; |