Commit 9b7d2ee6 authored by Peng Huang's avatar Peng Huang Committed by Commit Bot

Add vulkan feature on about gpu page.

This CL does two things:

1) exposes if Vulkan is enabled on chrome://gpu

2) adds vulkan feature which can be disabled by
gpu/config/software_rendering_list.json file based on environment.

Bug: 1002166,887018
Change-Id: Iee4b4e38e5e3761aeba1530a0d64d128f5aa9ae8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1832293Reviewed-by: default avatarJonathan Backer <backer@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#702166}
parent 2623e05c
......@@ -27,6 +27,7 @@
#include "content/browser/gpu/gpu_process_host.h"
#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
#include "gpu/command_buffer/service/gpu_switches.h"
#include "gpu/config/gpu_blocklist.h"
#include "gpu/config/gpu_driver_bug_list.h"
#include "gpu/config/gpu_driver_bug_workaround_type.h"
......@@ -34,6 +35,7 @@
#include "gpu/config/gpu_finch_features.h"
#include "gpu/config/gpu_switches.h"
#include "gpu/ipc/host/gpu_memory_buffer_support.h"
#include "gpu/vulkan/buildflags.h"
#include "media/media_buildflags.h"
#include "ui/gl/gl_switches.h"
......@@ -179,6 +181,13 @@ const GpuFeatureData GetGpuFeatureData(
SafeGetFeatureStatus(gpu_feature_info, gpu::GPU_FEATURE_TYPE_METAL),
!base::FeatureList::IsEnabled(features::kMetal) /* disabled */,
DisableInfo::NotProblem(), false /* fallback_to_software */},
#endif
#if BUILDFLAG(ENABLE_VULKAN)
{"vulkan",
SafeGetFeatureStatus(gpu_feature_info, gpu::GPU_FEATURE_TYPE_VULKAN),
!base::FeatureList::IsEnabled(features::kVulkan) &&
!command_line.HasSwitch(switches::kUseVulkan) /* disabled */,
DisableInfo::NotProblem(), false /* fallback_to_software */},
#endif
{"multiple_raster_threads", gpu::kGpuFeatureStatusEnabled,
NumberOfRendererRasterThreads() == 1,
......@@ -267,6 +276,7 @@ std::unique_ptr<base::DictionaryValue> GetFeatureStatusImpl(
status += "_on";
}
if (gpu_feature_data.name == "metal" ||
gpu_feature_data.name == "vulkan" ||
gpu_feature_data.name == "surface_control") {
status += "_on";
}
......
......@@ -241,6 +241,7 @@ cr.define('gpu', function() {
'rasterization': 'Rasterization',
'oop_rasterization': 'Out-of-process Rasterization',
'metal': 'Metal',
'vulkan': 'Vulkan',
'multiple_raster_threads': 'Multiple Raster Threads',
'native_gpu_memory_buffers': 'Native GpuMemoryBuffers',
'protected_video_decode': 'Hardware Protected Video Decode',
......
......@@ -157,6 +157,7 @@ jumbo_source_set("config_sources") {
"//base",
"//build:branding_buildflags",
"//gpu/ipc/common:gpu_preferences_interface",
"//gpu/vulkan:buildflags",
"//media:media_buildflags",
"//third_party/re2",
"//ui/gl",
......
......@@ -48,6 +48,7 @@ std::unique_ptr<GpuBlocklist> GpuBlocklist::Create(
list->AddSupportedFeature("android_surface_control",
GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL);
list->AddSupportedFeature("metal", GPU_FEATURE_TYPE_METAL);
list->AddSupportedFeature("vulkan", GPU_FEATURE_TYPE_VULKAN);
return list;
}
......
......@@ -24,6 +24,7 @@ enum GpuFeatureType {
GPU_FEATURE_TYPE_OOP_RASTERIZATION,
GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL,
GPU_FEATURE_TYPE_METAL,
GPU_FEATURE_TYPE_VULKAN,
NUMBER_OF_GPU_FEATURE_TYPES
};
......
......@@ -24,6 +24,7 @@
#include "gpu/config/gpu_info_collector.h"
#include "gpu/config/gpu_preferences.h"
#include "gpu/config/gpu_switches.h"
#include "gpu/vulkan/buildflags.h"
#include "ui/gfx/extension_set.h"
#include "ui/gl/buildflags.h"
#include "ui/gl/gl_switches.h"
......@@ -72,6 +73,22 @@ GpuFeatureStatus GetMetalFeatureStatus(
#endif
}
GpuFeatureStatus GetVulkanFeatureStatus(
const std::set<int>& blacklisted_features,
const GpuPreferences& gpu_preferences) {
#if BUILDFLAG(ENABLE_VULKAN)
if (blacklisted_features.count(GPU_FEATURE_TYPE_VULKAN))
return kGpuFeatureStatusBlacklisted;
if (gpu_preferences.use_vulkan == VulkanImplementationName::kNone)
return kGpuFeatureStatusDisabled;
return kGpuFeatureStatusEnabled;
#else
return kGpuFeatureStatusDisabled;
#endif
}
GpuFeatureStatus GetGpuRasterizationFeatureStatus(
const std::set<int>& blacklisted_features,
const base::CommandLine& command_line) {
......@@ -312,6 +329,8 @@ GpuFeatureInfo ComputeGpuFeatureInfoWithHardwareAccelerationDisabled() {
kGpuFeatureStatusDisabled;
gpu_feature_info.status_values[GPU_FEATURE_TYPE_METAL] =
kGpuFeatureStatusDisabled;
gpu_feature_info.status_values[GPU_FEATURE_TYPE_VULKAN] =
kGpuFeatureStatusDisabled;
#if DCHECK_IS_ON()
for (int ii = 0; ii < NUMBER_OF_GPU_FEATURE_TYPES; ++ii) {
DCHECK_NE(kGpuFeatureStatusUndefined, gpu_feature_info.status_values[ii]);
......@@ -348,6 +367,8 @@ GpuFeatureInfo ComputeGpuFeatureInfoWithNoGpu() {
kGpuFeatureStatusDisabled;
gpu_feature_info.status_values[GPU_FEATURE_TYPE_METAL] =
kGpuFeatureStatusDisabled;
gpu_feature_info.status_values[GPU_FEATURE_TYPE_VULKAN] =
kGpuFeatureStatusDisabled;
#if DCHECK_IS_ON()
for (int ii = 0; ii < NUMBER_OF_GPU_FEATURE_TYPES; ++ii) {
DCHECK_NE(kGpuFeatureStatusUndefined, gpu_feature_info.status_values[ii]);
......@@ -384,6 +405,8 @@ GpuFeatureInfo ComputeGpuFeatureInfoForSwiftShader() {
kGpuFeatureStatusDisabled;
gpu_feature_info.status_values[GPU_FEATURE_TYPE_METAL] =
kGpuFeatureStatusDisabled;
gpu_feature_info.status_values[GPU_FEATURE_TYPE_VULKAN] =
kGpuFeatureStatusDisabled;
#if DCHECK_IS_ON()
for (int ii = 0; ii < NUMBER_OF_GPU_FEATURE_TYPES; ++ii) {
DCHECK_NE(kGpuFeatureStatusUndefined, gpu_feature_info.status_values[ii]);
......@@ -465,6 +488,8 @@ GpuFeatureInfo ComputeGpuFeatureInfo(const GPUInfo& gpu_info,
gpu_preferences);
gpu_feature_info.status_values[GPU_FEATURE_TYPE_METAL] =
GetMetalFeatureStatus(blacklisted_features, gpu_preferences);
gpu_feature_info.status_values[GPU_FEATURE_TYPE_VULKAN] =
GetVulkanFeatureStatus(blacklisted_features, gpu_preferences);
#if DCHECK_IS_ON()
for (int ii = 0; ii < NUMBER_OF_GPU_FEATURE_TYPES; ++ii) {
DCHECK_NE(kGpuFeatureStatusUndefined, gpu_feature_info.status_values[ii]);
......
......@@ -274,7 +274,10 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
#endif
#if BUILDFLAG(ENABLE_VULKAN)
if (gpu_preferences_.use_vulkan != gpu::VulkanImplementationName::kNone) {
if (gpu_feature_info_.status_values[gpu::GPU_FEATURE_TYPE_VULKAN] ==
gpu::kGpuFeatureStatusEnabled) {
DCHECK_NE(gpu_preferences_.use_vulkan,
gpu::VulkanImplementationName::kNone);
bool use_swiftshader = gpu_preferences_.use_vulkan ==
gpu::VulkanImplementationName::kSwiftshader;
const bool enforce_protected_memory =
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment