1
# Copyright 2019 The ANGLE Project Authors. All rights reserved.
2
# Use of this source code is governed by a BSD-style license that can be
3
# found in the LICENSE file.
5
# This file houses the build configuration for the ANGLE Vulkan back-end.
7
import("//build_overrides/swiftshader.gni")
8
import("../../../../gni/angle.gni")
10
assert(angle_enable_vulkan)
13
# Enable custom (cpu-side) secondary command buffers
14
angle_enable_custom_vulkan_cmd_buffers = true
16
# Enable Vulkan GPU trace event capability
17
angle_enable_vulkan_gpu_trace_events = false
20
_vulkan_backend_sources = [
38
"GlslangWrapperVk.cpp",
46
"PersistentCommandPool.cpp",
47
"PersistentCommandPool.h",
50
"ProgramPipelineVk.cpp",
51
"ProgramPipelineVk.h",
62
"SecondaryCommandBuffer.cpp",
63
"SecondaryCommandBuffer.h",
74
"TransformFeedbackVk.cpp",
75
"TransformFeedbackVk.h",
84
"vk_ext_provoking_vertex.h",
85
"vk_format_table_autogen.cpp",
87
"vk_format_utils.cpp",
90
"vk_internal_shaders_autogen.h",
91
"vk_internal_shaders_autogen.cpp",
92
"vk_mandatory_format_support_table_autogen.cpp",
99
_vulkan_backend_sources += [
100
"android/DisplayVkAndroid.cpp",
101
"android/DisplayVkAndroid.h",
102
"android/HardwareBufferImageSiblingVkAndroid.cpp",
103
"android/HardwareBufferImageSiblingVkAndroid.h",
104
"android/WindowSurfaceVkAndroid.cpp",
105
"android/WindowSurfaceVkAndroid.h",
110
_vulkan_backend_sources += [
111
"win32/DisplayVkWin32.cpp",
112
"win32/DisplayVkWin32.h",
113
"win32/WindowSurfaceVkWin32.cpp",
114
"win32/WindowSurfaceVkWin32.h",
119
_vulkan_backend_sources += [
120
"xcb/DisplayVkXcb.cpp",
121
"xcb/DisplayVkXcb.h",
122
"xcb/WindowSurfaceVkXcb.cpp",
123
"xcb/WindowSurfaceVkXcb.h",
128
_vulkan_backend_sources += [
129
"fuchsia/DisplayVkFuchsia.cpp",
130
"fuchsia/DisplayVkFuchsia.h",
131
"fuchsia/WindowSurfaceVkFuchsia.cpp",
132
"fuchsia/WindowSurfaceVkFuchsia.h",
137
_vulkan_backend_sources += [
138
"ggp/DisplayVkGGP.cpp",
139
"ggp/DisplayVkGGP.h",
140
"ggp/WindowSurfaceVkGGP.cpp",
141
"ggp/WindowSurfaceVkGGP.h",
146
_vulkan_backend_sources += [
147
"mac/DisplayVkMac.mm",
148
"mac/DisplayVkMac.h",
149
"mac/WindowSurfaceVkMac.mm",
150
"mac/WindowSurfaceVkMac.h",
154
config("angle_vulkan_lib_android") {
160
group("angle_vulkan_entry_points") {
161
public_configs = [ ":angle_vulkan_lib_android" ]
163
"$angle_root/src/third_party/volk:volk",
164
"$angle_root/third_party/vulkan-headers/src:vulkan_headers",
168
"$angle_root/src/common/fuchsia_egl",
169
"//third_party/fuchsia-sdk:vulkan_base",
170
"//third_party/fuchsia-sdk/sdk:vulkan",
172
} else if (!is_android && !is_ggp) {
174
"$angle_root/third_party/vulkan-loader/src:libvulkan",
179
config("angle_vulkan_backend_config") {
180
defines = [ "ANGLE_ENABLE_VULKAN" ]
181
if (angle_enable_swiftshader) {
182
defines += [ "ANGLE_ENABLE_SWIFTSHADER" ]
184
if (angle_enable_custom_vulkan_cmd_buffers) {
185
defines += [ "ANGLE_USE_CUSTOM_VULKAN_CMD_BUFFERS=1" ]
188
if (angle_enable_vulkan_gpu_trace_events) {
189
defines += [ "ANGLE_ENABLE_VULKAN_GPU_TRACE_EVENTS=1" ]
193
angle_source_set("angle_vulkan_backend") {
194
sources = _vulkan_backend_sources
197
":angle_vulkan_entry_points",
198
"$angle_root:angle_gpu_info_util",
199
"$angle_root:angle_image_util",
200
"$angle_root/third_party/vulkan-headers/src:vulkan_headers",
201
"$angle_spirv_tools_dir:spvtools_val",
204
"$angle_root:angle_glslang_wrapper",
205
"$angle_root:libANGLE_headers",
207
public_configs = [ ":angle_vulkan_backend_config" ]
212
"ANGLE_VK_LAYERS_DIR=\"$angle_data_dir\"",
213
"ANGLE_VK_MOCK_ICD_JSON=\"$angle_data_dir/VkICD_mock_icd.json\"",
220
# Include generated shaders.
221
import("vk_internal_shaders_autogen.gni")
222
sources += angle_vulkan_internal_shaders
224
if (!is_android && !is_fuchsia && !is_ggp) {
226
"$angle_root/third_party/vulkan-loader/src:libvulkan",
227
"$angle_root/third_party/vulkan-tools/src:VkICD_mock_icd",
231
if (angle_enable_vulkan_validation_layers) {
232
defines += [ "ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT" ]
234
data_deps += [ "//third_party/fuchsia-sdk:vulkan_validation" ]
236
data_deps += [ "$angle_root/third_party/vulkan-validation-layers/src:vulkan_validation_layers" ]
238
data_deps += [ "$angle_root/third_party/vulkan-validation-layers/src:vulkan_gen_json_files" ]
243
if (angle_enable_swiftshader) {
244
import("$swiftshader_dir/src/Vulkan/vulkan.gni")
245
_sws_icd = "./$swiftshader_icd_file_name"
247
_sws_icd = ".\\\\$swiftshader_icd_file_name"
250
defines += [ "ANGLE_VK_SWIFTSHADER_ICD_JSON=\"${_sws_icd}\"" ]
253
"$swiftshader_dir/src/Vulkan:icd_file",
254
"$swiftshader_dir/src/Vulkan:swiftshader_libvulkan",