aboutsummaryrefslogtreecommitdiff
path: root/vulkaninfo/vulkaninfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'vulkaninfo/vulkaninfo.cpp')
-rw-r--r--vulkaninfo/vulkaninfo.cpp64
1 files changed, 35 insertions, 29 deletions
diff --git a/vulkaninfo/vulkaninfo.cpp b/vulkaninfo/vulkaninfo.cpp
index 719c0a37..09030a0d 100644
--- a/vulkaninfo/vulkaninfo.cpp
+++ b/vulkaninfo/vulkaninfo.cpp
@@ -351,7 +351,7 @@ void DumpGroups(Printer &p, AppInstance &inst) {
}
}
-void GpuDumpProps(Printer &p, AppGpu &gpu) {
+void GpuDumpProps(Printer &p, AppGpu &gpu, bool show_promoted_structs) {
auto props = gpu.GetDeviceProperties();
p.SetSubHeader();
{
@@ -378,7 +378,7 @@ void GpuDumpProps(Printer &p, AppGpu &gpu) {
p.AddNewline();
if (gpu.inst.CheckExtensionEnabled(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) {
void *place = gpu.props2.pNext;
- chain_iterator_phys_device_props2(p, gpu.inst, gpu, place);
+ chain_iterator_phys_device_props2(p, gpu.inst, gpu, show_promoted_structs, place);
}
}
@@ -523,13 +523,13 @@ void GpuDumpMemoryProps(Printer &p, AppGpu &gpu) {
p.AddNewline();
}
-void GpuDumpFeatures(Printer &p, AppGpu &gpu) {
+void GpuDumpFeatures(Printer &p, AppGpu &gpu, bool show_promoted_structs) {
p.SetHeader();
DumpVkPhysicalDeviceFeatures(p, "VkPhysicalDeviceFeatures", gpu.features);
p.AddNewline();
if (gpu.inst.CheckExtensionEnabled(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) {
void *place = gpu.features2.pNext;
- chain_iterator_phys_device_features2(p, gpu, place);
+ chain_iterator_phys_device_features2(p, gpu, show_promoted_structs, place);
}
}
@@ -618,11 +618,11 @@ void GpuDevDump(Printer &p, AppGpu &gpu) {
// Print gpu info for text, html, & vkconfig_output
// Uses a separate function than schema-json for clarity
-void DumpGpu(Printer &p, AppGpu &gpu, bool show_tooling_info, bool show_formats) {
+void DumpGpu(Printer &p, AppGpu &gpu, bool show_tooling_info, bool show_formats, bool show_promoted_structs) {
ObjectWrapper obj_gpu(p, "GPU" + std::to_string(gpu.id));
IndentWrapper indent(p);
- GpuDumpProps(p, gpu);
+ GpuDumpProps(p, gpu, show_promoted_structs);
DumpExtensions(p, "Device Extensions", gpu.device_extensions);
p.AddNewline();
{
@@ -633,7 +633,7 @@ void DumpGpu(Printer &p, AppGpu &gpu, bool show_tooling_info, bool show_formats)
}
}
GpuDumpMemoryProps(p, gpu);
- GpuDumpFeatures(p, gpu);
+ GpuDumpFeatures(p, gpu, show_promoted_structs);
if (show_tooling_info) {
GpuDumpToolingInfo(p, gpu);
}
@@ -653,7 +653,7 @@ void DumpGpuProfileCapabilities(Printer &p, AppGpu &gpu) {
DumpExtensions(p, "extensions", gpu.device_extensions);
{
ObjectWrapper obj(p, "features");
- GpuDumpFeatures(p, gpu);
+ GpuDumpFeatures(p, gpu, false);
}
{
ObjectWrapper obj(p, "properties");
@@ -676,7 +676,7 @@ void DumpGpuProfileCapabilities(Printer &p, AppGpu &gpu) {
}
if (gpu.inst.CheckExtensionEnabled(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) {
void *place = gpu.props2.pNext;
- chain_iterator_phys_device_props2(p, gpu.inst, gpu, place);
+ chain_iterator_phys_device_props2(p, gpu.inst, gpu, false, place);
}
}
{
@@ -914,35 +914,36 @@ static void ConsoleEnlarge() {
enum class OutputCategory { text, html, profile_json, vkconfig_output, summary };
const char *help_message_body =
"OPTIONS:\n"
- "[-h, --help] Print this help.\n"
- "[--summary] Show a summary of the instance and GPU's on a system.\n"
+ "[-h, --help] Print this help.\n"
+ "[--summary] Show a summary of the instance and GPU's on a system.\n"
"[-o <filename>, --output <filename>]\n"
- " Print output to a new file whose name is specified by filename.\n"
- " File will be written to the current working directory.\n"
- "[--text] Produce a text version of " APP_SHORT_NAME
+ " Print output to a new file whose name is specified by filename.\n"
+ " File will be written to the current working directory.\n"
+ "[--text] Produce a text version of " APP_SHORT_NAME
" output to stdout. This is\n"
- " the default output.\n"
- "[--html] Produce an html version of " APP_SHORT_NAME
+ " the default output.\n"
+ "[--html] Produce an html version of " APP_SHORT_NAME
" output, saved as\n"
- " \"" APP_SHORT_NAME
+ " \"" APP_SHORT_NAME
".html\" in the directory in which the command\n"
- " is run.\n"
- "[-j, --json] Produce a json version of " APP_SHORT_NAME
+ " is run.\n"
+ "[-j, --json] Produce a json version of " APP_SHORT_NAME
" output conforming to the Vulkan\n"
- " Profiles schema, saved as \n"
+ " Profiles schema, saved as \n"
" \"VP_" APP_UPPER_CASE_NAME
"_[DEVICE_NAME]_[DRIVER_VERSION].json\"\n"
" of the first gpu in the system.\n"
"[-j=<gpu-number>, --json=<gpu-number>]\n"
- " For a multi-gpu system, a single gpu can be targetted by\n"
- " specifying the gpu-number associated with the gpu of \n"
- " interest. This number can be determined by running\n"
- " " APP_SHORT_NAME
+ " For a multi-gpu system, a single gpu can be targetted by\n"
+ " specifying the gpu-number associated with the gpu of \n"
+ " interest. This number can be determined by running\n"
+ " " APP_SHORT_NAME
" without any options specified.\n"
- "[--show-tool-props] Show the active VkPhysicalDeviceToolPropertiesEXT that " APP_SHORT_NAME
+ "[--show-tool-props] Show the active VkPhysicalDeviceToolPropertiesEXT that " APP_SHORT_NAME
" finds.\n"
- "[--show-formats] Display the format properties of each physical device.\n"
- " Note: This only affects text output.\n";
+ "[--show-formats] Display the format properties of each physical device.\n"
+ " Note: This only affects text output.\n"
+ "[--show-promoted-structs] Include structs promoted to core in pNext Chains.\n";
void print_usage(const std::string &executable_name) {
std::cout << "\n" APP_SHORT_NAME " - Summarize " API_NAME " information in relation to the current environment.\n\n";
@@ -954,6 +955,7 @@ void print_usage(const std::string &executable_name) {
std::cout << " " << executable_name << " --html\n";
std::cout << " " << executable_name << " --show-formats\n";
std::cout << " " << executable_name << " --show-tool-props\n";
+ std::cout << " " << executable_name << " --show-promoted-structs\n";
std::cout << "\n" << help_message_body << std::endl;
}
@@ -963,6 +965,7 @@ struct ParsedResults {
bool has_selected_gpu; // differentiate between selecting the 0th gpu and using the default 0th value
bool show_tool_props;
bool show_formats;
+ bool show_promoted_structs;
bool print_to_file;
std::string filename; // set if explicitely given, or if vkconfig_output has a <path> argument
std::string default_filename;
@@ -1013,6 +1016,8 @@ util::vulkaninfo_optional<ParsedResults> parse_arguments(int argc, char **argv,
results.show_tool_props = true;
} else if (strcmp(argv[i], "--show-formats") == 0) {
results.show_formats = true;
+ } else if (strcmp(argv[i], "--show-promoted-structs") == 0) {
+ results.show_promoted_structs = true;
} else if ((strcmp(argv[i], "--output") == 0 || strcmp(argv[i], "-o") == 0) && argc > (i + 1)) {
if (argv[i + 1][0] == '-') {
std::cout << "-o or --output must be followed by a filename\n";
@@ -1100,7 +1105,7 @@ void RunPrinter(Printer &p, ParsedResults parse_data, AppInstance &instance, std
IndentWrapper indent(p);
for (auto &gpu : gpus) {
- DumpGpu(p, *(gpu.get()), parse_data.show_tool_props, parse_data.show_formats);
+ DumpGpu(p, *(gpu.get()), parse_data.show_tool_props, parse_data.show_formats, parse_data.show_promoted_structs);
}
}
}
@@ -1172,7 +1177,8 @@ int main(int argc, char **argv) {
uint32_t gpu_counter = 0;
for (auto &phys_device : phys_devices) {
- gpus.push_back(std::unique_ptr<AppGpu>(new AppGpu(instance, gpu_counter++, phys_device)));
+ gpus.push_back(
+ std::unique_ptr<AppGpu>(new AppGpu(instance, gpu_counter++, phys_device, parse_data.show_promoted_structs)));
}
std::vector<std::unique_ptr<AppSurface>> surfaces;