Commit fdda085d authored by Chris Blume's avatar Chris Blume Committed by Commit Bot

Revert "Add vulkan information in about::gpu page"

This reverts commit 2ef6fce8.

Reason for revert: This CL broke GPU FYI Win x64 DX12 Vulkan Builder (dbg)

https://ci.chromium.org/p/chromium/builders/ci/GPU%20FYI%20Win%20x64%20DX12%20Vulkan%20Builder%20%28dbg%29

lld-link: error: obj/gpu/vulkan/vulkan/vulkan_instance.obj: locally defined symbol imported: public: __cdecl gpu::VulkanInfo::VulkanInfo(void) (defined in obj/gpu/config/vulkan_info/vulkan_info.obj) [LNK4217]


Original change's description:
> Add vulkan information in about::gpu page
> 
> This CL adds VulkanInfo in GPUInfo, and then send it to browser
> process with GPUInfo. And it will be serialized to binary data and pass
> to about:gpu page for displaying.
> 
> This CL adds a vulkan_types.mojom generated from vulkan header file.
> The structs in that files have many fields. It increases binary size.
> The increasing is expected.
> 
> Bug: 887018
> Change-Id: I2725326091ef47c3034939b3970d0e5bbaf6dc3f
> Binary-Size: Size increase is unavoidable (see above)
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1868832
> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
> Reviewed-by: Tom Sepez <tsepez@chromium.org>
> Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
> Reviewed-by: Jonathan Backer <backer@chromium.org>
> Commit-Queue: Peng Huang <penghuang@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#714424}

TBR=penghuang@chromium.org,backer@chromium.org,zmo@chromium.org,kbr@chromium.org,tsepez@chromium.org,alexmos@chromium.org

Change-Id: I3b0aff2cfcfa8b65df2ca9109325451567cf8039
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 887018
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1913565Reviewed-by: default avatarChris Blume <cblume@chromium.org>
Commit-Queue: Chris Blume <cblume@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714714}
parent 38169a33
......@@ -126,7 +126,6 @@ grit("resources") {
]
deps = [
"//content/browser/process_internals:mojo_bindings_js",
"//gpu/ipc/common:vulkan_interface_js",
"//url/mojom:url_mojom_origin_js",
]
}
......
......@@ -88,11 +88,6 @@ class AuxGPUInfoEnumerator : public gpu::GPUInfo::Enumerator {
dictionary_->setDouble(name, value.InSecondsF());
}
void AddBinary(const char* name,
const base::span<const uint8_t>& value) override {
// TODO(penghuang): send vulkan info to devtool
}
void BeginGPUDevice() override {}
void EndGPUDevice() override {}
......
......@@ -10,7 +10,6 @@
#include <string>
#include <utility>
#include "base/base64.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/command_line.h"
......@@ -74,8 +73,6 @@ WebUIDataSource* CreateGpuHTMLSource() {
source->UseStringsJs();
source->AddResourcePath("gpu_internals.js", IDR_GPU_INTERNALS_JS);
source->AddResourcePath("vulkan_info.mojom.js", IDR_VULKAN_INFO_MOJO_JS);
source->AddResourcePath("vulkan_types.mojom.js", IDR_VULKAN_TYPES_MOJO_JS);
source->SetDefaultResource(IDR_GPU_INTERNALS_HTML);
return source;
}
......@@ -330,13 +327,6 @@ std::unique_ptr<base::DictionaryValue> GpuInfoAsDictionaryValue() {
info->Set("diagnostics", std::move(dx_info));
#endif
#if BUILDFLAG(ENABLE_VULKAN)
if (gpu_info.vulkan_info) {
auto blob = gpu_info.vulkan_info->Serialize();
info->SetString("vulkanInfo", base::Base64Encode(blob));
}
#endif
return info;
}
......
......@@ -42,9 +42,6 @@ tabbox tabpanels {
<script src="chrome://resources/js/cr/ui/tabs.js"></script>
<script src="chrome://resources/js/load_time_data.js"></script>
<script src="chrome://resources/js/util.js"></script>
<script src="chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js"></script>
<script src="chrome://resources/gpu/ipc/common/vulkan_types.mojom-lite.js"></script>
<script src="chrome://resources/gpu/ipc/common/vulkan_info.mojom-lite.js"></script>
<script src="gpu_internals.js"></script>
<script src="strings.js"></script>
</head>
......
......@@ -4,7 +4,6 @@
// <include src="browser_bridge.js">
// <include src="info_view.js">
// <include src="vulkan_info.js">
let browserBridge;
......
......@@ -67,10 +67,6 @@
color: rgb(128, 128, 128);
}
#vulkan-info-value {
white-space: pre;
}
#copy-to-clipboard {
user-select: none;
}
......@@ -61,11 +61,6 @@ found in the LICENSE file.
<div id="video-acceleration-info"></div>
</div>
<div>
<h3>Vulkan Information</h3>
<div id="vulkan-info"></div>
</div>
<div class="diagnostics">
<h3>Diagnostics</h3>
<div class="diagnostics-loading">... loading ...</div>
......@@ -117,7 +112,7 @@ found in the LICENSE file.
<span class="row-title" jscontent="description">title</span>
</td>
<td jsdisplay="!(value instanceof Array)">
<span jscontent="value" jsvalues=".id:id">value</span>
<span jscontent="value">value</span>
</td>
<td jsdisplay="value instanceof Array" colspan=2>
<span jscontent="description" class="row-title"></span>
......
......@@ -211,19 +211,6 @@ cr.define('gpu', function() {
} else {
diagnosticsDiv.hidden = true;
}
if (gpuInfo.vulkanInfo) {
const vulkanInfo = new gpu.VulkanInfo(gpuInfo.vulkanInfo);
const data = [{
'description': 'info',
'value': vulkanInfo.toString(),
'id': 'vulkan-info-value'
}];
this.setTable_('vulkan-info', data);
} else {
this.setTable_('vulkan-info', []);
}
} else {
this.setText_('basic-info', '... loading ...');
diagnosticsDiv.hidden = true;
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
cr.define('gpu', function() {
class VulkanInfo {
constructor(base64Data) {
const array = Uint8Array.from(atob(base64Data), c => c.charCodeAt(0));
const dataView = new DataView(array.buffer);
this.vulkanInfo_ = gpu.mojom.VulkanInfo_Deserialize(dataView);
}
toString() {
return JSON.stringify(this.vulkanInfo_, null, 2);
}
}
return {VulkanInfo: VulkanInfo};
});
......@@ -99,8 +99,6 @@ const std::map<int, std::string> CreateContentResourceIdToAliasMap() {
"mojo/mojo/public/mojom/base/unguessable_token.mojom-lite.js"},
{IDR_URL_MOJO_HTML, "mojo/url/mojom/url.mojom.html"},
{IDR_URL_MOJO_JS, "mojo/url/mojom/url.mojom-lite.js"},
{IDR_VULKAN_INFO_MOJO_JS, "gpu/ipc/common/vulkan_info.mojom-lite.js"},
{IDR_VULKAN_TYPES_MOJO_JS, "gpu/ipc/common/vulkan_types.mojom-lite.js"},
};
}
......
......@@ -47,8 +47,6 @@
<include name="IDR_UNGUESSABLE_TOKEN_MOJO_JS" file="${root_gen_dir}/mojo/public/mojom/base/unguessable_token.mojom-lite.js" use_base_dir="false" type="BINDATA" compress="gzip" />
<include name="IDR_URL_MOJO_HTML" file="${root_gen_dir}/url/mojom/url.mojom.html" use_base_dir="false" type="BINDATA" compress="gzip" />
<include name="IDR_URL_MOJO_JS" file="${root_gen_dir}/url/mojom/url.mojom-lite.js" use_base_dir="false" type="BINDATA" compress="gzip" />
<include name="IDR_VULKAN_INFO_MOJO_JS" file="${root_gen_dir}/gpu/ipc/common/vulkan_info.mojom-lite.js" use_base_dir="false" type="BINDATA" compress="gzip" />
<include name="IDR_VULKAN_TYPES_MOJO_JS" file="${root_gen_dir}/gpu/ipc/common/vulkan_types.mojom-lite.js" use_base_dir="false" type="BINDATA" compress="gzip" />
</includes>
</release>
</grit>
......@@ -6,7 +6,6 @@ import("//build/config/chrome_build.gni")
import("//build/config/chromecast_build.gni")
import("//build/config/jumbo.gni")
import("//build/config/ui.gni")
import("//gpu/vulkan/features.gni")
group("config") {
if (is_component_build) {
......@@ -90,23 +89,6 @@ action("workaround_list") {
}
}
if (enable_vulkan) {
source_set("vulkan_info") {
sources = [
"vulkan_info.cc",
"vulkan_info.h",
]
configs += [ "//gpu:gpu_implementation" ]
deps = [
"//gpu/ipc/common:vulkan_interface",
]
all_dependent_configs = [ "//third_party/vulkan:vulkan_config" ]
}
}
jumbo_source_set("config_sources") {
# External code should depend on this via //gpu/config above rather than
# depending on this directly or the component build will break.
......@@ -170,10 +152,6 @@ jumbo_source_set("config_sources") {
"//components/crash/core/common:crash_key",
]
if (enable_vulkan) {
public_deps += [ ":vulkan_info" ]
}
deps = [
":process_json",
"//base",
......
......@@ -266,10 +266,6 @@ void GPUInfo::EnumerateFields(Enumerator* enumerator) const {
bool oop_rasterization_supported;
bool subpixel_font_rendering;
#if BUILDFLAG(ENABLE_VULKAN)
base::Optional<VulkanInfo> vulkan_info;
#endif
};
// If this assert fails then most likely something below needs to be updated.
......@@ -340,12 +336,6 @@ void GPUInfo::EnumerateFields(Enumerator* enumerator) const {
#endif
enumerator->AddBool("oopRasterizationSupported", oop_rasterization_supported);
enumerator->AddBool("subpixelFontRendering", subpixel_font_rendering);
#if BUILDFLAG(ENABLE_VULKAN)
if (vulkan_info) {
auto blob = vulkan_info->Serialize();
enumerator->AddBinary("vulkanInfo", base::span<const uint8_t>(blob));
}
#endif
enumerator->EndAuxAttributes();
}
......
......@@ -13,24 +13,17 @@
#include <string>
#include <vector>
#include "base/containers/span.h"
#include "base/optional.h"
#include "base/time/time.h"
#include "base/version.h"
#include "build/build_config.h"
#include "gpu/config/dx_diag_node.h"
#include "gpu/gpu_export.h"
#include "gpu/vulkan/buildflags.h"
#include "ui/gfx/geometry/size.h"
#if defined(USE_X11)
typedef unsigned long VisualID;
#endif
#if BUILDFLAG(ENABLE_VULKAN)
#include "gpu/config/vulkan_info.h"
#endif
namespace gpu {
// These values are persisted to logs. Entries should not be renumbered and
......@@ -364,10 +357,6 @@ struct GPU_EXPORT GPUInfo {
bool subpixel_font_rendering;
#if BUILDFLAG(ENABLE_VULKAN)
base::Optional<VulkanInfo> vulkan_info;
#endif
// Note: when adding new members, please remember to update EnumerateFields
// in gpu_info.cc.
......@@ -387,8 +376,6 @@ struct GPU_EXPORT GPUInfo {
virtual void AddBool(const char* name, bool value) = 0;
virtual void AddTimeDeltaInSecondsF(const char* name,
const base::TimeDelta& value) = 0;
virtual void AddBinary(const char* name,
const base::span<const uint8_t>& blob) = 0;
// Markers indicating that a GPUDevice is being described.
virtual void BeginGPUDevice() = 0;
......
......@@ -27,9 +27,6 @@ class TestGPUInfoEnumerator : public gpu::GPUInfo::Enumerator {
void AddBool(const char* name, bool value) override {}
void AddBinary(const char* name,
const base::span<const uint8_t>& blob) override {}
void AddTimeDeltaInSecondsF(const char* name,
const base::TimeDelta& value) override {}
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "gpu/config/vulkan_info.h"
#include "gpu/ipc/common/vulkan_info.mojom.h"
#include "gpu/ipc/common/vulkan_info_mojom_traits.h"
namespace gpu {
VulkanPhysicalDeviceInfo::VulkanPhysicalDeviceInfo() = default;
VulkanPhysicalDeviceInfo::VulkanPhysicalDeviceInfo(
const VulkanPhysicalDeviceInfo& other) = default;
VulkanPhysicalDeviceInfo::~VulkanPhysicalDeviceInfo() = default;
VulkanPhysicalDeviceInfo& VulkanPhysicalDeviceInfo::operator=(
const VulkanPhysicalDeviceInfo& info) = default;
VulkanInfo::VulkanInfo() = default;
VulkanInfo::~VulkanInfo() = default;
VulkanInfo::VulkanInfo(const VulkanInfo& other) {
*this = other;
}
VulkanInfo& VulkanInfo::operator=(const VulkanInfo& other) {
api_version = other.api_version;
used_api_version = other.used_api_version;
instance_extensions = other.instance_extensions;
instance_layers = other.instance_layers;
physical_devices = other.physical_devices;
SetEnabledInstanceExtensions(other.enabled_instance_extensions);
return *this;
}
std::vector<uint8_t> VulkanInfo::Serialize() const {
return gpu::mojom::VulkanInfo::Serialize(this);
}
void VulkanInfo::SetEnabledInstanceExtensions(
const std::vector<const char*>& extensions) {
enabled_instance_extensions.clear();
for (const auto* const extension : extensions) {
bool found = false;
for (const auto& instance_extension : instance_extensions) {
if (strcmp(extension, instance_extension.extensionName) == 0) {
enabled_instance_extensions.push_back(instance_extension.extensionName);
found = true;
break;
}
}
if (!found) {
LOG(ERROR) << "The enabled extension '" << extension
<< "' is not in instance_extensions!";
}
}
}
void VulkanInfo::SetEnabledInstanceExtensions(
const std::vector<base::StringPiece>& extensions) {
enabled_instance_extensions.clear();
for (const auto& extension : extensions) {
bool found = false;
for (const auto& instance_extension : instance_extensions) {
if (extension == instance_extension.extensionName) {
enabled_instance_extensions.push_back(instance_extension.extensionName);
found = true;
break;
}
}
if (!found) {
LOG(ERROR) << "The enabled extension '" << extension
<< "' is not in instance_extensions!";
}
}
}
} // namespace gpu
......@@ -3,7 +3,6 @@
# found in the LICENSE file.
import("//build/config/ui.gni")
import("//gpu/vulkan/features.gni")
import("//mojo/public/tools/bindings/mojom.gni")
import("//ui/ozone/ozone.gni")
......@@ -200,17 +199,6 @@ component("vulkan_ycbcr_info") {
configs += [ "//gpu:gpu_implementation" ]
}
source_set("vulkan_types") {
sources = [
"vulkan_types.h",
]
public_deps = [
"//ui/gfx",
]
all_dependent_configs = [ "//third_party/vulkan:vulkan_config" ]
configs += [ "//gpu:gpu_implementation" ]
}
mojom("interfaces") {
generate_java = true
sources = [
......@@ -234,11 +222,6 @@ mojom("interfaces") {
"//ui/gfx/geometry/mojom",
"//ui/gfx/mojom",
]
if (enable_vulkan) {
public_deps += [ ":vulkan_interface" ]
enabled_features = [ "supports_vulkan" ]
}
}
mojom("gpu_preferences_interface") {
......@@ -258,19 +241,6 @@ mojom("gpu_preferences_interface") {
}
}
mojom("vulkan_interface") {
generate_java = true
sources = [
"vulkan_info.mojom",
"vulkan_types.mojom",
]
public_deps = [
"//mojo/public/mojom/base",
]
js_generate_struct_deserializers = true
}
mojom("test_interfaces") {
testonly = true
sources = [
......@@ -281,21 +251,6 @@ mojom("test_interfaces") {
":gpu_preferences_interface",
":interfaces",
]
if (enable_vulkan) {
public_deps += [ ":vulkan_interface" ]
}
}
source_set("vulkan_types_mojom_traits") {
sources = [
"vulkan_types_mojom_traits.h",
]
deps = [
":vulkan_interface_shared_cpp_sources",
":vulkan_types",
]
}
source_set("mojom_traits") {
......@@ -318,7 +273,4 @@ source_set("mojom_traits") {
if (is_android) {
sources += [ "vulkan_ycbcr_info_mojom_traits.h" ]
}
if (enable_vulkan) {
deps += [ ":vulkan_types_mojom_traits" ]
}
}
......@@ -3,8 +3,6 @@
set noparent
file://ipc/SECURITY_OWNERS
per-file generate_vulkan_types.py=file://gpu/OWNERS
# The following lines are redundant, they're just to silence the presubmit
per-file *_messages*.h=set noparent
per-file *_messages*.h=file://ipc/SECURITY_OWNERS
......
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Enforces Vulkan types autogen matches script output.
See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
for more details on the presubmit API built into depot_tools.
"""
import os.path
def CommonChecks(input_api, output_api):
generating_files = input_api.AffectedFiles(
file_filter=lambda x: os.path.basename(x.LocalPath()) in [
'generate_vulkan_types.py'])
generated_files = input_api.AffectedFiles(
file_filter=lambda x: os.path.basename(x.LocalPath()) in [
'vulkan_types.mojom', 'vulkan_types_mojom_traits.h',
'vulkan_types_mojom_traits.cc', 'vulkan_types.typemap'
])
messages = []
if generated_files and not generating_files:
long_text = 'Changed files:\n'
for file in generated_files:
long_text += file.LocalPath() + '\n'
long_text += '\n'
messages.append(output_api.PresubmitError(
'Vulkan types generated files changed but the generator '
'did not.', long_text=long_text))
with input_api.temporary_directory() as temp_dir:
commands = []
if generating_files:
commands.append(input_api.Command(name='generate_vulkan_types',
cmd=[input_api.python_executable,
'generate_vulkan_types.py',
'--check',
'--output-dir=' + temp_dir],
kwargs={},
message=output_api.PresubmitError))
if commands:
messages.extend(input_api.RunTests(commands))
return messages
def CheckChangeOnUpload(input_api, output_api):
return CommonChecks(input_api, output_api)
def CheckChangeOnCommit(input_api, output_api):
return CommonChecks(input_api, output_api)
This diff is collapsed.
......@@ -9,9 +9,6 @@ import "gpu/ipc/common/dx_diag_node.mojom";
import "mojo/public/mojom/base/time.mojom";
import "ui/gfx/geometry/mojom/geometry.mojom";
[EnableIf=supports_vulkan]
import "gpu/ipc/common/vulkan_info.mojom";
// gpu::GPUInfo::GPUDevice
struct GpuDevice {
uint32 vendor_id;
......@@ -176,7 +173,4 @@ struct GpuInfo {
uint64 rgba_visual;
bool oop_rasterization_supported;
bool subpixel_font_rendering;
[EnableIf=supports_vulkan]
VulkanInfo? vulkan_info;
};
......@@ -8,10 +8,6 @@
#include "base/logging.h"
#include "mojo/public/cpp/base/time_mojom_traits.h"
#if BUILDFLAG(ENABLE_VULKAN)
#include "gpu/ipc/common/vulkan_info_mojom_traits.h"
#endif
namespace mojo {
// static
......@@ -417,11 +413,7 @@ bool StructTraits<gpu::mojom::GpuInfoDataView, gpu::GPUInfo>::Read(
data.ReadVideoEncodeAcceleratorSupportedProfiles(
&out->video_encode_accelerator_supported_profiles) &&
data.ReadImageDecodeAcceleratorSupportedProfiles(
&out->image_decode_accelerator_supported_profiles) &&
#if BUILDFLAG(ENABLE_VULKAN)
data.ReadVulkanInfo(&out->vulkan_info) &&
#endif
true;
&out->image_decode_accelerator_supported_profiles);
}
} // namespace mojo
......@@ -395,13 +395,6 @@ struct StructTraits<gpu::mojom::GpuInfoDataView, gpu::GPUInfo> {
static bool subpixel_font_rendering(const gpu::GPUInfo& input) {
return input.subpixel_font_rendering;
}
#if BUILDFLAG(ENABLE_VULKAN)
static const base::Optional<gpu::VulkanInfo> vulkan_info(
const gpu::GPUInfo& input) {
return input.vulkan_info;
}
#endif
};
} // namespace mojo
......
......@@ -16,6 +16,4 @@ typemaps = [
"//gpu/ipc/common/surface_handle.typemap",
"//gpu/ipc/common/sync_token.typemap",
"//gpu/ipc/common/vulkan_ycbcr_info.typemap",
"//gpu/ipc/common/vulkan_info.typemap",
"//gpu/ipc/common/vulkan_types.typemap",
]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// gpu/config/vulkan_info.h
module gpu.mojom;
import "gpu/ipc/common/vulkan_types.mojom";
struct VulkanPhysicalDeviceInfo {
VkPhysicalDeviceProperties properties;
array<VkLayerProperties> layers;
VkPhysicalDeviceFeatures features;
bool feature_sampler_ycbcr_conversion;
bool feature_protected_memory;
array<VkQueueFamilyProperties> queue_families;
};
struct VulkanInfo {
uint32 api_version;
uint32 used_api_version;
array<VkExtensionProperties> instance_extensions;
array<string> enabled_instance_extensions;
array<VkLayerProperties> instance_layers;
array<VulkanPhysicalDeviceInfo> physical_devices;
};
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
mojom = "//gpu/ipc/common/vulkan_info.mojom"
public_headers = [ "//gpu/config/vulkan_info.h" ]
traits_headers = [ "//gpu/ipc/common/vulkan_info_mojom_traits.h" ]
public_deps = [
# "//gpu/config",
"//gpu/ipc/common:vulkan_types",
"//gpu/ipc/common:vulkan_types_mojom_traits",
]
type_mappings = [
"gpu.mojom.VulkanPhysicalDeviceInfo=::gpu::VulkanPhysicalDeviceInfo",
"gpu.mojom.VulkanInfo=::gpu::VulkanInfo",
]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GPU_IPC_COMMON_VULKAN_INFO_MOJOM_TRAITS_H_
#define GPU_IPC_COMMON_VULKAN_INFO_MOJOM_TRAITS_H_
#include "base/containers/span.h"
#include "base/strings/string_piece.h"
#include "gpu/config/vulkan_info.h"
#include "gpu/ipc/common/vulkan_info.mojom-shared.h"
#include "gpu/ipc/common/vulkan_types_mojom_traits.h"
namespace mojo {
template <>
struct StructTraits<gpu::mojom::VulkanPhysicalDeviceInfoDataView,
gpu::VulkanPhysicalDeviceInfo> {
static const VkPhysicalDeviceProperties& properties(
const gpu::VulkanPhysicalDeviceInfo& input) {
return input.properties;
}
static const std::vector<VkLayerProperties>& layers(
const gpu::VulkanPhysicalDeviceInfo& input) {
return input.layers;
}
static const VkPhysicalDeviceFeatures& features(
const gpu::VulkanPhysicalDeviceInfo& input) {
return input.features;
}
static bool feature_sampler_ycbcr_conversion(
const gpu::VulkanPhysicalDeviceInfo& input) {
return input.feature_sampler_ycbcr_conversion;
}
static bool feature_protected_memory(
const gpu::VulkanPhysicalDeviceInfo& input) {
return input.feature_protected_memory;
}
static const std::vector<VkQueueFamilyProperties>& queue_families(
const gpu::VulkanPhysicalDeviceInfo& input) {
return input.queue_families;
}
static bool Read(gpu::mojom::VulkanPhysicalDeviceInfoDataView data,
gpu::VulkanPhysicalDeviceInfo* out) {
if (!data.ReadProperties(&out->properties))
return false;
if (!data.ReadLayers(&out->layers))
return false;
if (!data.ReadFeatures(&out->features))
return false;
out->feature_sampler_ycbcr_conversion =
data.feature_sampler_ycbcr_conversion();
out->feature_protected_memory = data.feature_protected_memory();
if (!data.ReadQueueFamilies(&out->queue_families))
return false;
return true;
}
};
template <>
struct StructTraits<gpu::mojom::VulkanInfoDataView, gpu::VulkanInfo> {
static uint32_t api_version(const gpu::VulkanInfo& input) {
return input.api_version;
}
static uint32_t used_api_version(const gpu::VulkanInfo& input) {
return input.used_api_version;
}
static const std::vector<VkExtensionProperties>& instance_extensions(
const gpu::VulkanInfo& input) {
return input.instance_extensions;
}
static std::vector<base::StringPiece> enabled_instance_extensions(
const gpu::VulkanInfo& input) {
std::vector<base::StringPiece> extensions;
extensions.reserve(input.enabled_instance_extensions.size());
for (const char* extension : input.enabled_instance_extensions)
extensions.emplace_back(extension);
return extensions;
}
static const std::vector<VkLayerProperties>& instance_layers(
const gpu::VulkanInfo& input) {
return input.instance_layers;
}
static const std::vector<gpu::VulkanPhysicalDeviceInfo>& physical_devices(
const gpu::VulkanInfo& input) {
return input.physical_devices;
}
static bool Read(gpu::mojom::VulkanInfoDataView data, gpu::VulkanInfo* out) {
out->api_version = data.api_version();
out->used_api_version = data.used_api_version();
if (!data.ReadInstanceExtensions(&out->instance_extensions))
return false;
std::vector<base::StringPiece> extensions;
if (!data.ReadEnabledInstanceExtensions(&extensions))
return false;
out->SetEnabledInstanceExtensions(extensions);
return data.ReadInstanceLayers(&out->instance_layers) &&
data.ReadPhysicalDevices(&out->physical_devices);
}
};
} // namespace mojo
#endif // GPU_IPC_COMMON_VULKAN_INFO_MOJOM_TRAITS_H_
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GPU_IPC_COMMON_VULKAN_TYPES_H_
#define GPU_IPC_COMMON_VULKAN_TYPES_H_
#include <vulkan/vulkan.h>
#endif // GPU_IPC_COMMON_VULKAN_TYPES_H_
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file is auto-generated from
// gpu/ipc/common/generate_vulkan_types.py
// It's formatted by clang-format using chromium coding style:
// clang-format -i -style=chromium filename
// DO NOT EDIT!
module gpu.mojom;
struct VkExtensionProperties {
string extensionName;
uint32 specVersion;
};
struct VkLayerProperties {
string layerName;
uint32 specVersion;
uint32 implementationVersion;
string description;
};
enum VkPhysicalDeviceType {
OTHER = 0,
INTEGRATED_GPU = 1,
DISCRETE_GPU = 2,
VIRTUAL_GPU = 3,
CPU = 4,
INVALID_VALUE = -1,
};
struct VkPhysicalDeviceLimits {
uint32 maxImageDimension1D;
uint32 maxImageDimension2D;
uint32 maxImageDimension3D;
uint32 maxImageDimensionCube;
uint32 maxImageArrayLayers;
uint32 maxTexelBufferElements;
uint32 maxUniformBufferRange;
uint32 maxStorageBufferRange;
uint32 maxPushConstantsSize;
uint32 maxMemoryAllocationCount;
uint32 maxSamplerAllocationCount;
uint64 bufferImageGranularity;
uint64 sparseAddressSpaceSize;
uint32 maxBoundDescriptorSets;
uint32 maxPerStageDescriptorSamplers;
uint32 maxPerStageDescriptorUniformBuffers;
uint32 maxPerStageDescriptorStorageBuffers;
uint32 maxPerStageDescriptorSampledImages;
uint32 maxPerStageDescriptorStorageImages;
uint32 maxPerStageDescriptorInputAttachments;
uint32 maxPerStageResources;
uint32 maxDescriptorSetSamplers;
uint32 maxDescriptorSetUniformBuffers;
uint32 maxDescriptorSetUniformBuffersDynamic;
uint32 maxDescriptorSetStorageBuffers;
uint32 maxDescriptorSetStorageBuffersDynamic;
uint32 maxDescriptorSetSampledImages;
uint32 maxDescriptorSetStorageImages;
uint32 maxDescriptorSetInputAttachments;
uint32 maxVertexInputAttributes;
uint32 maxVertexInputBindings;
uint32 maxVertexInputAttributeOffset;
uint32 maxVertexInputBindingStride;
uint32 maxVertexOutputComponents;
uint32 maxTessellationGenerationLevel;
uint32 maxTessellationPatchSize;
uint32 maxTessellationControlPerVertexInputComponents;
uint32 maxTessellationControlPerVertexOutputComponents;
uint32 maxTessellationControlPerPatchOutputComponents;
uint32 maxTessellationControlTotalOutputComponents;
uint32 maxTessellationEvaluationInputComponents;
uint32 maxTessellationEvaluationOutputComponents;
uint32 maxGeometryShaderInvocations;
uint32 maxGeometryInputComponents;
uint32 maxGeometryOutputComponents;
uint32 maxGeometryOutputVertices;
uint32 maxGeometryTotalOutputComponents;
uint32 maxFragmentInputComponents;
uint32 maxFragmentOutputAttachments;
uint32 maxFragmentDualSrcAttachments;
uint32 maxFragmentCombinedOutputResources;
uint32 maxComputeSharedMemorySize;
array<uint32, 3> maxComputeWorkGroupCount;
uint32 maxComputeWorkGroupInvocations;
array<uint32, 3> maxComputeWorkGroupSize;
uint32 subPixelPrecisionBits;
uint32 subTexelPrecisionBits;
uint32 mipmapPrecisionBits;
uint32 maxDrawIndexedIndexValue;
uint32 maxDrawIndirectCount;
float maxSamplerLodBias;
float maxSamplerAnisotropy;
uint32 maxViewports;
array<uint32, 2> maxViewportDimensions;
array<float, 2> viewportBoundsRange;
uint32 viewportSubPixelBits;
uint64 minMemoryMapAlignment;
uint64 minTexelBufferOffsetAlignment;
uint64 minUniformBufferOffsetAlignment;
uint64 minStorageBufferOffsetAlignment;
int32 minTexelOffset;
uint32 maxTexelOffset;
int32 minTexelGatherOffset;
uint32 maxTexelGatherOffset;
float minInterpolationOffset;
float maxInterpolationOffset;
uint32 subPixelInterpolationOffsetBits;
uint32 maxFramebufferWidth;
uint32 maxFramebufferHeight;
uint32 maxFramebufferLayers;
uint32 framebufferColorSampleCounts;
uint32 framebufferDepthSampleCounts;
uint32 framebufferStencilSampleCounts;
uint32 framebufferNoAttachmentsSampleCounts;
uint32 maxColorAttachments;
uint32 sampledImageColorSampleCounts;
uint32 sampledImageIntegerSampleCounts;
uint32 sampledImageDepthSampleCounts;
uint32 sampledImageStencilSampleCounts;
uint32 storageImageSampleCounts;
uint32 maxSampleMaskWords;
bool timestampComputeAndGraphics;
float timestampPeriod;
uint32 maxClipDistances;
uint32 maxCullDistances;
uint32 maxCombinedClipAndCullDistances;
uint32 discreteQueuePriorities;
array<float, 2> pointSizeRange;
array<float, 2> lineWidthRange;
float pointSizeGranularity;
float lineWidthGranularity;
bool strictLines;
bool standardSampleLocations;
uint64 optimalBufferCopyOffsetAlignment;
uint64 optimalBufferCopyRowPitchAlignment;
uint64 nonCoherentAtomSize;
};
struct VkPhysicalDeviceSparseProperties {
bool residencyStandard2DBlockShape;
bool residencyStandard2DMultisampleBlockShape;
bool residencyStandard3DBlockShape;
bool residencyAlignedMipSize;
bool residencyNonResidentStrict;
};
struct VkPhysicalDeviceProperties {
uint32 apiVersion;
uint32 driverVersion;
uint32 vendorID;
uint32 deviceID;
VkPhysicalDeviceType deviceType;
string deviceName;
array<uint8, 16> pipelineCacheUUID;
VkPhysicalDeviceLimits limits;
VkPhysicalDeviceSparseProperties sparseProperties;
};
struct VkPhysicalDeviceFeatures {
bool robustBufferAccess;
bool fullDrawIndexUint32;
bool imageCubeArray;
bool independentBlend;
bool geometryShader;
bool tessellationShader;
bool sampleRateShading;
bool dualSrcBlend;
bool logicOp;
bool multiDrawIndirect;
bool drawIndirectFirstInstance;
bool depthClamp;
bool depthBiasClamp;
bool fillModeNonSolid;
bool depthBounds;
bool wideLines;
bool largePoints;
bool alphaToOne;
bool multiViewport;
bool samplerAnisotropy;
bool textureCompressionETC2;
bool textureCompressionASTC_LDR;
bool textureCompressionBC;
bool occlusionQueryPrecise;
bool pipelineStatisticsQuery;
bool vertexPipelineStoresAndAtomics;
bool fragmentStoresAndAtomics;
bool shaderTessellationAndGeometryPointSize;
bool shaderImageGatherExtended;
bool shaderStorageImageExtendedFormats;
bool shaderStorageImageMultisample;
bool shaderStorageImageReadWithoutFormat;
bool shaderStorageImageWriteWithoutFormat;
bool shaderUniformBufferArrayDynamicIndexing;
bool shaderSampledImageArrayDynamicIndexing;
bool shaderStorageBufferArrayDynamicIndexing;
bool shaderStorageImageArrayDynamicIndexing;
bool shaderClipDistance;
bool shaderCullDistance;
bool shaderFloat64;
bool shaderInt64;
bool shaderInt16;
bool shaderResourceResidency;
bool shaderResourceMinLod;
bool sparseBinding;
bool sparseResidencyBuffer;
bool sparseResidencyImage2D;
bool sparseResidencyImage3D;
bool sparseResidency2Samples;
bool sparseResidency4Samples;
bool sparseResidency8Samples;
bool sparseResidency16Samples;
bool sparseResidencyAliased;
bool variableMultisampleRate;
bool inheritedQueries;
};
struct VkExtent3D {
uint32 width;
uint32 height;
uint32 depth;
};
struct VkQueueFamilyProperties {
uint32 queueFlags;
uint32 queueCount;
uint32 timestampValidBits;
VkExtent3D minImageTransferGranularity;
};
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This file is auto-generated from
# gpu/ipc/common/generate_vulkan_types.py
# DO NOT EDIT!
mojom = "//gpu/ipc/common/vulkan_types.mojom"
public_headers = [ "//gpu/ipc/common/vulkan_types.h" ]
traits_headers = [ "//gpu/ipc/common/vulkan_types_mojom_traits.h" ]
sources = [
"//gpu/ipc/common/vulkan_types_mojom_traits.cc",
]
public_deps = [
"//gpu/ipc/common:vulkan_types",
]
type_mappings = [
"gpu.mojom.VkExtensionProperties=::VkExtensionProperties",
"gpu.mojom.VkLayerProperties=::VkLayerProperties",
"gpu.mojom.VkPhysicalDeviceProperties=::VkPhysicalDeviceProperties",
"gpu.mojom.VkPhysicalDeviceType=::VkPhysicalDeviceType",
"gpu.mojom.VkPhysicalDeviceLimits=::VkPhysicalDeviceLimits",
"gpu.mojom.VkPhysicalDeviceSparseProperties=::VkPhysicalDeviceSparseProperties",
"gpu.mojom.VkPhysicalDeviceFeatures=::VkPhysicalDeviceFeatures",
"gpu.mojom.VkQueueFamilyProperties=::VkQueueFamilyProperties",
"gpu.mojom.VkExtent3D=::VkExtent3D",
]
This diff is collapsed.
This diff is collapsed.
......@@ -62,7 +62,6 @@ jumbo_component("service") {
public_deps = [
"//base",
"//components/viz/common",
"//gpu/config",
"//ipc",
"//ui/base",
"//ui/display",
......
......@@ -51,7 +51,6 @@
#if BUILDFLAG(ENABLE_VULKAN)
#include "gpu/vulkan/init/vulkan_factory.h"
#include "gpu/vulkan/vulkan_implementation.h"
#include "gpu/vulkan/vulkan_instance.h"
#endif
namespace gpu {
......@@ -660,9 +659,6 @@ void GpuInit::InitializeVulkan() {
gpu_preferences_.use_vulkan = gpu::VulkanImplementationName::kNone;
gpu_feature_info_.status_values[gpu::GPU_FEATURE_TYPE_VULKAN] =
gpu::kGpuFeatureStatusDisabled;
} else {
gpu_info_.vulkan_info =
vulkan_implementation_->GetVulkanInstance()->vulkan_info();
}
#else
gpu_preferences_.use_vulkan = gpu::VulkanImplementationName::kNone;
......
......@@ -43,6 +43,8 @@ if (enable_vulkan) {
"vulkan_function_pointers.h",
"vulkan_implementation.cc",
"vulkan_implementation.h",
"vulkan_info.cc",
"vulkan_info.h",
"vulkan_instance.cc",
"vulkan_instance.h",
"vulkan_surface.cc",
......@@ -67,9 +69,7 @@ if (enable_vulkan) {
"//base",
"//ui/gfx",
]
public_deps = [
"//gpu/config:vulkan_info",
]
public_deps = []
data_deps = []
if (is_posix) {
......
......@@ -22,7 +22,7 @@ def CommonChecks(input_api, output_api):
messages = []
if generated_files and not generating_files:
if (len(generated_files) > 0 and len(generating_files) == 0):
long_text = 'Changed files:\n'
for file in generated_files:
long_text += file.LocalPath() + '\n'
......@@ -33,7 +33,7 @@ def CommonChecks(input_api, output_api):
with input_api.temporary_directory() as temp_dir:
commands = []
if generating_files:
if len(generating_files) > 0:
commands.append(input_api.Command(name='generate_bindings',
cmd=[input_api.python_executable,
'generate_bindings.py',
......@@ -41,7 +41,7 @@ def CommonChecks(input_api, output_api):
'--output-dir=' + temp_dir],
kwargs={},
message=output_api.PresubmitError))
if commands:
if len(commands) > 0:
messages.extend(input_api.RunTests(commands))
return messages
......
......@@ -8,10 +8,10 @@
#include <utility>
#include <vector>
#include "gpu/config/vulkan_info.h"
#include "gpu/vulkan/vulkan_command_pool.h"
#include "gpu/vulkan/vulkan_fence_helper.h"
#include "gpu/vulkan/vulkan_function_pointers.h"
#include "gpu/vulkan/vulkan_info.h"
namespace gpu {
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "gpu/vulkan/vulkan_info.h"
namespace gpu {
VulkanInfo::VulkanInfo() = default;
VulkanInfo::~VulkanInfo() = default;
VulkanInfo::PhysicalDeviceInfo::PhysicalDeviceInfo() = default;
VulkanInfo::PhysicalDeviceInfo::PhysicalDeviceInfo(
const PhysicalDeviceInfo& other) = default;
VulkanInfo::PhysicalDeviceInfo::~PhysicalDeviceInfo() = default;
VulkanInfo::PhysicalDeviceInfo& VulkanInfo::PhysicalDeviceInfo::operator=(
const PhysicalDeviceInfo& info) = default;
} // namespace gpu
......@@ -2,61 +2,50 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GPU_CONFIG_VULKAN_INFO_H_
#define GPU_CONFIG_VULKAN_INFO_H_
#ifndef GPU_VULKAN_VULKAN_INFO_H_
#define GPU_VULKAN_VULKAN_INFO_H_
#include <vulkan/vulkan.h>
#include <vector>
#include "base/macros.h"
#include "base/strings/string_piece.h"
#include "gpu/gpu_export.h"
#include "gpu/vulkan/vulkan_export.h"
#include "ui/gfx/extension_set.h"
namespace gpu {
class GPU_EXPORT VulkanPhysicalDeviceInfo {
public:
VulkanPhysicalDeviceInfo();
VulkanPhysicalDeviceInfo(const VulkanPhysicalDeviceInfo& other);
~VulkanPhysicalDeviceInfo();
VulkanPhysicalDeviceInfo& operator=(const VulkanPhysicalDeviceInfo& other);
// This is a local variable in GPU process, it will not be sent via IPC.
VkPhysicalDevice device = VK_NULL_HANDLE;
VkPhysicalDeviceProperties properties = {};
std::vector<VkLayerProperties> layers;
VkPhysicalDeviceFeatures features = {};
// Extended physical device features:
bool feature_sampler_ycbcr_conversion = false;
bool feature_protected_memory = false;
std::vector<VkQueueFamilyProperties> queue_families;
};
class GPU_EXPORT VulkanInfo {
class VULKAN_EXPORT VulkanInfo {
public:
VulkanInfo();
VulkanInfo(const VulkanInfo& other);
~VulkanInfo();
VulkanInfo& operator=(const VulkanInfo& other);
std::vector<uint8_t> Serialize() const;
class PhysicalDeviceInfo {
public:
PhysicalDeviceInfo();
PhysicalDeviceInfo(const PhysicalDeviceInfo& other);
~PhysicalDeviceInfo();
PhysicalDeviceInfo& operator=(const PhysicalDeviceInfo& other);
VkPhysicalDevice device = VK_NULL_HANDLE;
VkPhysicalDeviceProperties properties = {};
std::vector<VkLayerProperties> layers;
VkPhysicalDeviceFeatures features = {};
// Extended physical device features:
bool feature_sampler_ycbcr_conversion = false;
bool feature_protected_memory = false;
void SetEnabledInstanceExtensions(const std::vector<const char*>& extensions);
void SetEnabledInstanceExtensions(
const std::vector<base::StringPiece>& extensions);
std::vector<VkQueueFamilyProperties> queue_families;
};
uint32_t api_version = VK_MAKE_VERSION(1, 0, 0);
uint32_t used_api_version = VK_MAKE_VERSION(1, 0, 0);
std::vector<VkExtensionProperties> instance_extensions;
std::vector<const char*> enabled_instance_extensions;
std::vector<VkLayerProperties> instance_layers;
std::vector<VulkanPhysicalDeviceInfo> physical_devices;
std::vector<PhysicalDeviceInfo> physical_devices;
};
} // namespace gpu
#endif // GPU_CONFIG_VULKAN_INFO_H_
#endif // GPU_VULKAN_VULKAN_INFO_H_
......@@ -10,8 +10,8 @@
#include "base/logging.h"
#include "base/macros.h"
#include "gpu/config/vulkan_info.h"
#include "gpu/vulkan/vulkan_export.h"
#include "gpu/vulkan/vulkan_info.h"
#include "ui/gfx/extension_set.h"
namespace gpu {
......
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