Commit 1f08ab28 by Jamie Madill Committed by Commit Bot

Re-land "GN: Componentize vulkan back-end build."

Re-land fixes angle_end2end_tests disabling Vulkan. This moves the build configuration into the Vulkan back-end dir. This should be a little easier to maintain as all Vulkan-related config is in one place. Note that this should not interfere with Skia's build as they do not import the Vulkan back-end sources. One additional possiblity that this enables is testing other compile-time permutations of the Vulkan back-end more easily. For example we could make a simple change to enable compile testing of the Vulkan back-end with custom command buffers disabled. Also fixes a few errors affecting less tested configs. Bug: angleproject:3943 Change-Id: I0161668abcc58fcf529dde120998d4b99445fdd5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1838454Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 901aa3fa
...@@ -29,9 +29,6 @@ declare_args() { ...@@ -29,9 +29,6 @@ declare_args() {
# Don't build extra (test, samples etc) for Windows UWP. We don't have # Don't build extra (test, samples etc) for Windows UWP. We don't have
# infrastructure (e.g. windowing helper functions) in place to run them. # infrastructure (e.g. windowing helper functions) in place to run them.
angle_build_all = !angle_is_winuwp angle_build_all = !angle_is_winuwp
# Currently SwiftShader's Vulkan front-end doesn't build on Android.
angle_swiftshader = !is_android
} }
if (!build_with_chromium && angle_build_all) { if (!build_with_chromium && angle_build_all) {
...@@ -103,12 +100,6 @@ config("internal_config") { ...@@ -103,12 +100,6 @@ config("internal_config") {
defines += [ "ANGLE_IS_32_BIT_CPU" ] defines += [ "ANGLE_IS_32_BIT_CPU" ]
} }
if (angle_enable_vulkan) {
if (angle_enable_vulkan_gpu_trace_events) {
defines += [ "ANGLE_ENABLE_VULKAN_GPU_TRACE_EVENTS=1" ]
}
}
if (angle_enable_trace) { if (angle_enable_trace) {
defines += [ "ANGLE_ENABLE_DEBUG_TRACE=1" ] defines += [ "ANGLE_ENABLE_DEBUG_TRACE=1" ]
} }
...@@ -207,6 +198,7 @@ angle_static_library("preprocessor") { ...@@ -207,6 +198,7 @@ angle_static_library("preprocessor") {
public_deps = [ public_deps = [
":angle_common", ":angle_common",
":angle_translator_headers",
] ]
} }
...@@ -301,11 +293,18 @@ config("angle_image_util_config") { ...@@ -301,11 +293,18 @@ config("angle_image_util_config") {
] ]
} }
angle_source_set("angle_image_util_headers") {
sources = libangle_image_util_headers
public_deps = [
":angle_common",
]
}
angle_static_library("angle_image_util") { angle_static_library("angle_image_util") {
sources = libangle_image_util_sources sources = libangle_image_util_sources
public_configs += [ ":angle_image_util_config" ] public_configs += [ ":angle_image_util_config" ]
public_deps = [ public_deps = [
":angle_common", ":angle_image_util_headers",
] ]
} }
...@@ -387,6 +386,13 @@ angle_static_library("angle_gpu_info_util") { ...@@ -387,6 +386,13 @@ angle_static_library("angle_gpu_info_util") {
} }
} }
angle_source_set("angle_translator_headers") {
sources = angle_translator_exported_headers
public_deps = [
":includes",
]
}
angle_static_library("translator") { angle_static_library("translator") {
sources = angle_translator_sources sources = angle_translator_sources
defines = [] defines = []
...@@ -420,6 +426,7 @@ angle_static_library("translator") { ...@@ -420,6 +426,7 @@ angle_static_library("translator") {
public_deps = [ public_deps = [
":angle_common", ":angle_common",
":angle_translator_headers",
] ]
if (is_win) { if (is_win) {
...@@ -506,15 +513,13 @@ config("angle_backend_config") { ...@@ -506,15 +513,13 @@ config("angle_backend_config") {
defines += [ "ANGLE_ENABLE_OPENGL_NULL" ] defines += [ "ANGLE_ENABLE_OPENGL_NULL" ]
} }
} }
if (angle_enable_vulkan) {
defines += [ "ANGLE_ENABLE_VULKAN" ]
if (angle_enable_custom_vulkan_cmd_buffers) {
defines += [ "ANGLE_USE_CUSTOM_VULKAN_CMD_BUFFERS=1" ]
}
}
if (angle_enable_null) { if (angle_enable_null) {
defines += [ "ANGLE_ENABLE_NULL" ] defines += [ "ANGLE_ENABLE_NULL" ]
} }
if (angle_enable_vulkan) {
configs = [ "src/libANGLE/renderer/vulkan:angle_vulkan_backend_config" ]
}
} }
config("libANGLE_config") { config("libANGLE_config") {
...@@ -546,111 +551,12 @@ config("libANGLE_config") { ...@@ -546,111 +551,12 @@ config("libANGLE_config") {
} }
} }
if (angle_enable_vulkan) { angle_source_set("libANGLE_headers") {
config("vulkan_config") { sources = libangle_headers
defines = [ public_deps = [
"ANGLE_VK_LAYERS_DIR=\"$angle_data_dir\"", ":angle_common",
"ANGLE_VK_MOCK_ICD_JSON=\"$angle_data_dir/VkICD_mock_icd.json\"", ":angle_translator_headers",
"ANGLE_VK_SWIFTSHADER_ICD_JSON=\"swiftshader/libvk_swiftshader_icd.json\"", ]
]
if (is_android) {
libs = [ "vulkan" ]
}
if (angle_enable_vulkan_validation_layers) {
defines += [ "ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT" ]
}
}
if (angle_swiftshader) {
copy("angle_swiftshader_icd_rename") {
sources = [
"$swiftshader_dir/src/Vulkan/vk_swiftshader_icd.json",
]
outputs = [
"$root_gen_dir/angle/libvk_swiftshader_icd.json",
]
}
action("angle_swiftshader_icd") {
deps = [
":angle_swiftshader_icd_rename",
]
script = "scripts/generate_vulkan_layers_json.py"
sources = [
"third_party/vulkan-headers/src/include/vulkan/vulkan_core.h",
]
# Must be listed after vulkan_core.h. git cl format sorts them if they
# are in one list. So split up the sources manually.
sources += [ "$root_gen_dir/angle/libvk_swiftshader_icd.json" ]
outputs = [
"$root_out_dir/swiftshader/libvk_swiftshader_icd.json",
]
data = outputs
_raw_sws_in = rebase_path("$root_gen_dir/angle", root_build_dir)
_raw_sws_out = rebase_path("$root_out_dir/swiftshader", root_build_dir)
_sws_output = ""
if (is_win) {
_sws_output += "vk_swiftshader.dll"
} else if (is_mac) {
_sws_output += "libvk_swiftshader.dylib"
} else {
_sws_output += "libvk_swiftshader.so"
}
args = [
"--icd",
"--replacement",
_sws_output,
_raw_sws_in,
_raw_sws_out,
] + rebase_path(sources, root_build_dir)
}
}
# Use this target to include everything ANGLE needs for Vulkan.
group("angle_vulkan") {
public_deps = [
"$angle_root/third_party/vulkan-headers/src:vulkan_headers",
]
public_configs = [ ":vulkan_config" ]
deps = []
data_deps = []
if (!is_android && !is_fuchsia) {
deps += [ "$angle_root/third_party/vulkan-loader/src:libvulkan" ]
data_deps += [ "$angle_root/third_party/vulkan-tools/src:VkICD_mock_icd" ]
public_configs +=
[ "$angle_root/third_party/vulkan-loader/src:vulkan_loader_config" ]
}
if (is_fuchsia) {
public_deps += [
"$angle_root/src/common/fuchsia_egl",
"//third_party/fuchsia-sdk:vulkan_base",
"//third_party/fuchsia-sdk/sdk:vulkan",
]
}
if (angle_enable_vulkan_validation_layers) {
if (is_fuchsia) {
deps += [ "//third_party/fuchsia-sdk:vulkan_validation" ]
} else {
data_deps += [ "$angle_root/third_party/vulkan-validation-layers/src:vulkan_validation_layers" ]
if (!is_android) {
data_deps += [ "$angle_root/third_party/vulkan-validation-layers/src:vulkan_gen_json_files" ]
}
}
}
if (angle_swiftshader) {
data_deps += [
":angle_swiftshader_icd",
"$swiftshader_dir/src/Vulkan:swiftshader_libvulkan",
]
}
}
} }
angle_source_set("libANGLE_base") { angle_source_set("libANGLE_base") {
...@@ -667,6 +573,7 @@ angle_source_set("libANGLE_base") { ...@@ -667,6 +573,7 @@ angle_source_set("libANGLE_base") {
":angle_common", ":angle_common",
":angle_gpu_info_util", ":angle_gpu_info_util",
":angle_version", ":angle_version",
":libANGLE_headers",
":translator", ":translator",
] ]
deps = [ deps = [
...@@ -674,6 +581,10 @@ angle_source_set("libANGLE_base") { ...@@ -674,6 +581,10 @@ angle_source_set("libANGLE_base") {
":includes", ":includes",
] ]
if (angle_enable_vulkan) {
public_deps += [ "src/libANGLE/renderer/vulkan:angle_vulkan_backend" ]
}
# Enable extra Chromium style warnings for libANGLE. # Enable extra Chromium style warnings for libANGLE.
if (is_clang) { if (is_clang) {
suppressed_configs -= [ "//build/config/clang:find_bad_constructs" ] suppressed_configs -= [ "//build/config/clang:find_bad_constructs" ]
...@@ -748,39 +659,6 @@ angle_source_set("libANGLE_base") { ...@@ -748,39 +659,6 @@ angle_source_set("libANGLE_base") {
} }
} }
if (angle_enable_vulkan) {
sources += libangle_vulkan_sources
if (is_win) {
sources += libangle_vulkan_win32_sources
}
if (is_linux) {
sources += libangle_vulkan_xcb_sources
}
if (is_fuchsia) {
sources += libangle_vulkan_fuchsia_sources
deps += [
"$angle_root/src/common/fuchsia_egl",
"$angle_root/src/common/fuchsia_egl:backend",
]
}
if (is_android) {
sources += libangle_vulkan_android_sources
libs += [ "vulkan" ]
}
deps += [
":angle_vulkan",
"${angle_glslang_dir}:glslang_default_resource_limits_sources",
"${angle_glslang_dir}:glslang_sources",
"${angle_spirv_tools_dir}:spvtools_val",
]
public_deps +=
[ "$angle_root/third_party/vulkan-headers/src:vulkan_headers" ]
# Include generated shaders.
import("src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni")
sources += angle_vulkan_internal_shaders
}
if (angle_enable_null) { if (angle_enable_null) {
sources += libangle_null_sources sources += libangle_null_sources
} }
...@@ -1189,8 +1067,8 @@ foreach(is_shared_library, ...@@ -1189,8 +1067,8 @@ foreach(is_shared_library,
if (is_fuchsia) { if (is_fuchsia) {
sources += util_fuchsia_sources sources += util_fuchsia_sources
public_deps += [ public_deps += [
":angle_vulkan",
"$angle_root/src/common/fuchsia_egl", "$angle_root/src/common/fuchsia_egl",
"src/libANGLE/renderer/vulkan:angle_vulkan",
"//third_party/fuchsia-sdk/sdk:async_loop_cpp", "//third_party/fuchsia-sdk/sdk:async_loop_cpp",
"//third_party/fuchsia-sdk/sdk:async_loop_default", "//third_party/fuchsia-sdk/sdk:async_loop_default",
"//third_party/fuchsia-sdk/sdk:fdio", "//third_party/fuchsia-sdk/sdk:fdio",
......
...@@ -87,14 +87,6 @@ declare_args() { ...@@ -87,14 +87,6 @@ declare_args() {
angle_enable_vulkan && !is_ubsan && !is_tsan && !is_asan && angle_enable_vulkan && !is_ubsan && !is_tsan && !is_asan &&
(is_debug || dcheck_always_on) (is_debug || dcheck_always_on)
if (angle_enable_vulkan) {
# Enable Vulkan GPU trace event capability
angle_enable_vulkan_gpu_trace_events = false
# Enable custom (cpu-side) secondary command buffers
angle_enable_custom_vulkan_cmd_buffers = true
}
# Disable overlay by default # Disable overlay by default
angle_enable_overlay = false angle_enable_overlay = false
} }
......
{ {
"src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py": "src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py":
"b05fa7c291a7c05d9bb1dd075990275b", "8a13b2f4f77d51928db01eceb2c4ad44",
"src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000000.inc": "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000000.inc":
"31832c377e532cd5ea05aab57154b8f8", "31832c377e532cd5ea05aab57154b8f8",
"src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000001.inc": "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000001.inc":
......
...@@ -2,6 +2,13 @@ ...@@ -2,6 +2,13 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
angle_translator_exported_headers = [
"include/GLSLANG/ShaderLang.h",
"include/GLSLANG/ShaderVars.h",
"src/compiler/translator/blocklayout.h",
"src/compiler/translator/blocklayoutHLSL.h",
]
angle_translator_sources = [ angle_translator_sources = [
"include/EGL/egl.h", "include/EGL/egl.h",
"include/EGL/eglext.h", "include/EGL/eglext.h",
...@@ -13,8 +20,6 @@ angle_translator_sources = [ ...@@ -13,8 +20,6 @@ angle_translator_sources = [
"include/GLES3/gl3platform.h", "include/GLES3/gl3platform.h",
"include/GLES3/gl31.h", "include/GLES3/gl31.h",
"include/GLES3/gl32.h", "include/GLES3/gl32.h",
"include/GLSLANG/ShaderLang.h",
"include/GLSLANG/ShaderVars.h",
"include/KHR/khrplatform.h", "include/KHR/khrplatform.h",
"include/angle_gl.h", "include/angle_gl.h",
"src/compiler/translator/BaseTypes.h", "src/compiler/translator/BaseTypes.h",
...@@ -102,7 +107,6 @@ angle_translator_sources = [ ...@@ -102,7 +107,6 @@ angle_translator_sources = [
"src/compiler/translator/VariablePacker.cpp", "src/compiler/translator/VariablePacker.cpp",
"src/compiler/translator/VariablePacker.h", "src/compiler/translator/VariablePacker.h",
"src/compiler/translator/blocklayout.cpp", "src/compiler/translator/blocklayout.cpp",
"src/compiler/translator/blocklayout.h",
"src/compiler/translator/glslang.h", "src/compiler/translator/glslang.h",
"src/compiler/translator/glslang_lex.cpp", "src/compiler/translator/glslang_lex.cpp",
"src/compiler/translator/glslang_tab.cpp", "src/compiler/translator/glslang_tab.cpp",
...@@ -247,7 +251,6 @@ angle_translator_hlsl_sources = [ ...@@ -247,7 +251,6 @@ angle_translator_hlsl_sources = [
"src/compiler/translator/AtomicCounterFunctionHLSL.cpp", "src/compiler/translator/AtomicCounterFunctionHLSL.cpp",
"src/compiler/translator/AtomicCounterFunctionHLSL.h", "src/compiler/translator/AtomicCounterFunctionHLSL.h",
"src/compiler/translator/blocklayoutHLSL.cpp", "src/compiler/translator/blocklayoutHLSL.cpp",
"src/compiler/translator/blocklayoutHLSL.h",
"src/compiler/translator/BuiltInFunctionEmulatorHLSL.cpp", "src/compiler/translator/BuiltInFunctionEmulatorHLSL.cpp",
"src/compiler/translator/BuiltInFunctionEmulatorHLSL.h", "src/compiler/translator/BuiltInFunctionEmulatorHLSL.h",
"src/compiler/translator/OutputHLSL.cpp", "src/compiler/translator/OutputHLSL.cpp",
......
# Copyright 2019 The ANGLE Project 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 houses the build configuration for the ANGLE Vulkan back-end.
import("../../../../gni/angle.gni")
assert(angle_enable_vulkan)
declare_args() {
# Enable custom (cpu-side) secondary command buffers
angle_enable_custom_vulkan_cmd_buffers = true
# Enable Vulkan GPU trace event capability
angle_enable_vulkan_gpu_trace_events = false
# Currently SwiftShader's Vulkan front-end doesn't build on Android.
angle_swiftshader = !is_android
}
_vulkan_backend_sources = [
"BufferVk.cpp",
"BufferVk.h",
"CommandGraph.cpp",
"CommandGraph.h",
"CompilerVk.cpp",
"CompilerVk.h",
"ContextVk.cpp",
"ContextVk.h",
"DeviceVk.cpp",
"DeviceVk.h",
"DisplayVk.cpp",
"DisplayVk.h",
"FenceNVVk.cpp",
"FenceNVVk.h",
"FramebufferVk.cpp",
"FramebufferVk.h",
"GlslangWrapper.cpp",
"GlslangWrapper.h",
"ImageVk.cpp",
"ImageVk.h",
"MemoryObjectVk.cpp",
"MemoryObjectVk.h",
"OverlayVk.cpp",
"OverlayVk.h",
"PersistentCommandPool.cpp",
"PersistentCommandPool.h",
"ProgramVk.cpp",
"ProgramVk.h",
"ProgramPipelineVk.cpp",
"ProgramPipelineVk.h",
"QueryVk.cpp",
"QueryVk.h",
"RenderbufferVk.cpp",
"RenderbufferVk.h",
"RendererVk.cpp",
"RendererVk.h",
"RenderTargetVk.cpp",
"RenderTargetVk.h",
"SamplerVk.cpp",
"SamplerVk.h",
"SecondaryCommandBuffer.cpp",
"SecondaryCommandBuffer.h",
"SemaphoreVk.cpp",
"SemaphoreVk.h",
"ShaderVk.cpp",
"ShaderVk.h",
"SurfaceVk.cpp",
"SurfaceVk.h",
"SyncVk.cpp",
"SyncVk.h",
"TextureVk.cpp",
"TextureVk.h",
"TransformFeedbackVk.cpp",
"TransformFeedbackVk.h",
"UtilsVk.cpp",
"UtilsVk.h",
"VertexArrayVk.cpp",
"VertexArrayVk.h",
"vk_cache_utils.cpp",
"vk_cache_utils.h",
"vk_caps_utils.cpp",
"vk_caps_utils.h",
"vk_format_table_autogen.cpp",
"vk_format_utils.h",
"vk_format_utils.cpp",
"vk_helpers.cpp",
"vk_helpers.h",
"vk_internal_shaders_autogen.h",
"vk_internal_shaders_autogen.cpp",
"vk_mandatory_format_support_table_autogen.cpp",
"vk_utils.cpp",
"vk_utils.h",
"vk_wrapper.h",
]
if (is_android) {
_vulkan_backend_sources += [
"android/DisplayVkAndroid.cpp",
"android/DisplayVkAndroid.h",
"android/HardwareBufferImageSiblingVkAndroid.cpp",
"android/HardwareBufferImageSiblingVkAndroid.h",
"android/WindowSurfaceVkAndroid.cpp",
"android/WindowSurfaceVkAndroid.h",
]
}
if (is_win) {
_vulkan_backend_sources += [
"win32/DisplayVkWin32.cpp",
"win32/DisplayVkWin32.h",
"win32/WindowSurfaceVkWin32.cpp",
"win32/WindowSurfaceVkWin32.h",
]
}
if (is_linux) {
_vulkan_backend_sources += [
"xcb/DisplayVkXcb.cpp",
"xcb/DisplayVkXcb.h",
"xcb/WindowSurfaceVkXcb.cpp",
"xcb/WindowSurfaceVkXcb.h",
]
}
if (is_fuchsia) {
_vulkan_backend_sources += [
"fuchsia/DisplayVkFuchsia.cpp",
"fuchsia/DisplayVkFuchsia.h",
"fuchsia/WindowSurfaceVkFuchsia.cpp",
"fuchsia/WindowSurfaceVkFuchsia.h",
]
}
config("vulkan_config") {
defines = [
"ANGLE_VK_LAYERS_DIR=\"$angle_data_dir\"",
"ANGLE_VK_MOCK_ICD_JSON=\"$angle_data_dir/VkICD_mock_icd.json\"",
"ANGLE_VK_SWIFTSHADER_ICD_JSON=\"swiftshader/libvk_swiftshader_icd.json\"",
]
if (is_android) {
libs = [ "vulkan" ]
}
if (angle_enable_vulkan_validation_layers) {
defines += [ "ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT" ]
}
}
if (angle_swiftshader) {
copy("angle_swiftshader_icd_rename") {
sources = [
"$swiftshader_dir/src/Vulkan/vk_swiftshader_icd.json",
]
outputs = [
"$root_gen_dir/angle/libvk_swiftshader_icd.json",
]
}
action("angle_swiftshader_icd") {
deps = [
":angle_swiftshader_icd_rename",
]
script = "$angle_root/scripts/generate_vulkan_layers_json.py"
sources = [
"$angle_root/third_party/vulkan-headers/src/include/vulkan/vulkan_core.h",
]
# Must be listed after vulkan_core.h. git cl format sorts them if they
# are in one list. So split up the sources manually.
sources += [ "$root_gen_dir/angle/libvk_swiftshader_icd.json" ]
outputs = [
"$root_out_dir/swiftshader/libvk_swiftshader_icd.json",
]
data = outputs
_raw_sws_in = rebase_path("$root_gen_dir/angle", root_build_dir)
_raw_sws_out = rebase_path("$root_out_dir/swiftshader", root_build_dir)
_sws_output = ""
if (is_win) {
_sws_output += "vk_swiftshader.dll"
} else if (is_mac) {
_sws_output += "libvk_swiftshader.dylib"
} else {
_sws_output += "libvk_swiftshader.so"
}
args = [
"--icd",
"--replacement",
_sws_output,
_raw_sws_in,
_raw_sws_out,
] + rebase_path(sources, root_build_dir)
}
}
# Use this target to include everything ANGLE needs for Vulkan.
group("angle_vulkan") {
public_deps = [
"$angle_root/third_party/vulkan-headers/src:vulkan_headers",
]
public_configs = [ ":vulkan_config" ]
deps = []
data_deps = []
if (!is_android && !is_fuchsia) {
deps += [ "$angle_root/third_party/vulkan-loader/src:libvulkan" ]
data_deps += [ "$angle_root/third_party/vulkan-tools/src:VkICD_mock_icd" ]
public_configs +=
[ "$angle_root/third_party/vulkan-loader/src:vulkan_loader_config" ]
}
if (is_fuchsia) {
public_deps += [
"$angle_root/src/common/fuchsia_egl",
"//third_party/fuchsia-sdk:vulkan_base",
"//third_party/fuchsia-sdk/sdk:vulkan",
]
}
if (angle_enable_vulkan_validation_layers) {
if (is_fuchsia) {
deps += [ "//third_party/fuchsia-sdk:vulkan_validation" ]
} else {
data_deps += [ "$angle_root/third_party/vulkan-validation-layers/src:vulkan_validation_layers" ]
if (!is_android) {
data_deps += [ "$angle_root/third_party/vulkan-validation-layers/src:vulkan_gen_json_files" ]
}
}
}
if (angle_swiftshader) {
data_deps += [
":angle_swiftshader_icd",
"$swiftshader_dir/src/Vulkan:swiftshader_libvulkan",
]
}
}
config("angle_vulkan_backend_config") {
defines = [ "ANGLE_ENABLE_VULKAN" ]
if (angle_enable_custom_vulkan_cmd_buffers) {
defines += [ "ANGLE_USE_CUSTOM_VULKAN_CMD_BUFFERS=1" ]
}
if (angle_enable_vulkan_gpu_trace_events) {
defines += [ "ANGLE_ENABLE_VULKAN_GPU_TRACE_EVENTS=1" ]
}
}
angle_source_set("angle_vulkan_backend") {
sources = _vulkan_backend_sources
libs = []
deps = [
":angle_vulkan",
"$angle_glslang_dir:glslang_default_resource_limits_sources",
"$angle_glslang_dir:glslang_sources",
"$angle_root:angle_image_util",
"$angle_spirv_tools_dir:spvtools_val",
]
public_deps = [
"$angle_root:libANGLE_headers",
"$angle_root/third_party/vulkan-headers/src:vulkan_headers",
]
public_configs = [ ":angle_vulkan_backend_config" ]
if (is_fuchsia) {
deps += [
"$angle_root/src/common/fuchsia_egl",
"$angle_root/src/common/fuchsia_egl:backend",
]
}
if (is_android) {
libs += [ "vulkan" ]
}
# Include generated shaders.
import("vk_internal_shaders_autogen.gni")
sources += angle_vulkan_internal_shaders
}
...@@ -596,7 +596,7 @@ def get_destroy_call(shader_and_variation): ...@@ -596,7 +596,7 @@ def get_destroy_call(shader_and_variation):
def shader_path(shader): def shader_path(shader):
return '"src/libANGLE/renderer/vulkan/%s"' % slash(shader) return '"%s"' % slash(shader)
def main(): def main():
......
...@@ -281,13 +281,17 @@ class CommandBuffer : public WrappedObject<CommandBuffer, VkCommandBuffer> ...@@ -281,13 +281,17 @@ class CommandBuffer : public WrappedObject<CommandBuffer, VkCommandBuffer>
VkDeviceSize offset, VkDeviceSize offset,
uint32_t drawCount, uint32_t drawCount,
uint32_t stride); uint32_t stride);
void drawIndirect(const Buffer &buffer,
VkDeviceSize offset,
uint32_t drawCount,
uint32_t stride);
VkResult end(); VkResult end();
void endQuery(VkQueryPool queryPool, uint32_t query); void endQuery(VkQueryPool queryPool, uint32_t query);
void endRenderPass(); void endRenderPass();
void executeCommands(uint32_t commandBufferCount, const CommandBuffer *commandBuffers); void executeCommands(uint32_t commandBufferCount, const CommandBuffer *commandBuffers);
void getMemoryUsageStats(size_t *usedMemoryOut, size_t *allocatedMemoryOut); void getMemoryUsageStats(size_t *usedMemoryOut, size_t *allocatedMemoryOut) const;
void executionBarrier(VkPipelineStageFlags stageMask); void executionBarrier(VkPipelineStageFlags stageMask);
...@@ -808,7 +812,7 @@ ANGLE_INLINE void CommandBuffer::executeCommands(uint32_t commandBufferCount, ...@@ -808,7 +812,7 @@ ANGLE_INLINE void CommandBuffer::executeCommands(uint32_t commandBufferCount,
} }
ANGLE_INLINE void CommandBuffer::getMemoryUsageStats(size_t *usedMemoryOut, ANGLE_INLINE void CommandBuffer::getMemoryUsageStats(size_t *usedMemoryOut,
size_t *allocatedMemoryOut) size_t *allocatedMemoryOut) const
{ {
// No data available. // No data available.
*usedMemoryOut = 0; *usedMemoryOut = 0;
...@@ -979,6 +983,15 @@ ANGLE_INLINE void CommandBuffer::drawIndexedIndirect(const Buffer &buffer, ...@@ -979,6 +983,15 @@ ANGLE_INLINE void CommandBuffer::drawIndexedIndirect(const Buffer &buffer,
vkCmdDrawIndexedIndirect(mHandle, buffer.getHandle(), offset, drawCount, stride); vkCmdDrawIndexedIndirect(mHandle, buffer.getHandle(), offset, drawCount, stride);
} }
ANGLE_INLINE void CommandBuffer::drawIndirect(const Buffer &buffer,
VkDeviceSize offset,
uint32_t drawCount,
uint32_t stride)
{
ASSERT(valid());
vkCmdDrawIndirect(mHandle, buffer.getHandle(), offset, drawCount, stride);
}
ANGLE_INLINE void CommandBuffer::dispatch(uint32_t groupCountX, ANGLE_INLINE void CommandBuffer::dispatch(uint32_t groupCountX,
uint32_t groupCountY, uint32_t groupCountY,
uint32_t groupCountZ) uint32_t groupCountZ)
......
...@@ -159,7 +159,7 @@ if (is_win || is_linux || is_mac || is_android || is_fuchsia) { ...@@ -159,7 +159,7 @@ if (is_win || is_linux || is_mac || is_android || is_fuchsia) {
use_native_activity = true use_native_activity = true
} }
if (angle_enable_vulkan) { if (angle_enable_vulkan) {
deps += [ "${angle_root}:angle_vulkan" ] deps += [ "${angle_root}/src/libANGLE/renderer/vulkan:angle_vulkan" ]
} }
} }
} }
......
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
#include <EGL/egl.h> #include <EGL/egl.h>
#include <EGL/eglext.h> #include <EGL/eglext.h>
#include "GLSLANG/ShaderLang.h"
#include "angle_test_instantiate.h" #include "angle_test_instantiate.h"
#include "util/EGLPlatformParameters.h" #include "util/EGLPlatformParameters.h"
......
...@@ -238,7 +238,7 @@ if (!is_android) { ...@@ -238,7 +238,7 @@ if (!is_android) {
configs += [ "//build/config/compiler:no_chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":vulkan_internal_config" ] configs += [ ":vulkan_internal_config" ]
public_configs = [ public_configs = [
"$angle_root:vulkan_config", "$angle_root/src/libANGLE/renderer/vulkan:vulkan_config",
":vulkan_loader_config", ":vulkan_loader_config",
] ]
configs -= vulkan_undefine_configs configs -= vulkan_undefine_configs
......
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