~mmach/netext73/webkit2gtk

« back to all changes in this revision

Viewing changes to Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/BUILD.gn

  • Committer: mmach
  • Date: 2023-06-16 17:21:37 UTC
  • Revision ID: netbit73@gmail.com-20230616172137-2rqx6yr96ga9g3kp
1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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.
 
4
#
 
5
# This file houses the build configuration for the ANGLE Vulkan back-end.
 
6
 
 
7
import("//build_overrides/swiftshader.gni")
 
8
import("../../../../gni/angle.gni")
 
9
 
 
10
assert(angle_enable_vulkan)
 
11
 
 
12
declare_args() {
 
13
  # Enable custom (cpu-side) secondary command buffers
 
14
  angle_enable_custom_vulkan_cmd_buffers = true
 
15
 
 
16
  # Enable Vulkan GPU trace event capability
 
17
  angle_enable_vulkan_gpu_trace_events = false
 
18
}
 
19
 
 
20
_vulkan_backend_sources = [
 
21
  "BufferVk.cpp",
 
22
  "BufferVk.h",
 
23
  "CommandGraph.cpp",
 
24
  "CommandGraph.h",
 
25
  "CompilerVk.cpp",
 
26
  "CompilerVk.h",
 
27
  "ContextVk.cpp",
 
28
  "ContextVk.h",
 
29
  "DeviceVk.cpp",
 
30
  "DeviceVk.h",
 
31
  "DisplayVk.cpp",
 
32
  "DisplayVk.h",
 
33
  "DisplayVk_api.h",
 
34
  "FenceNVVk.cpp",
 
35
  "FenceNVVk.h",
 
36
  "FramebufferVk.cpp",
 
37
  "FramebufferVk.h",
 
38
  "GlslangWrapperVk.cpp",
 
39
  "GlslangWrapperVk.h",
 
40
  "ImageVk.cpp",
 
41
  "ImageVk.h",
 
42
  "MemoryObjectVk.cpp",
 
43
  "MemoryObjectVk.h",
 
44
  "OverlayVk.cpp",
 
45
  "OverlayVk.h",
 
46
  "PersistentCommandPool.cpp",
 
47
  "PersistentCommandPool.h",
 
48
  "ProgramVk.cpp",
 
49
  "ProgramVk.h",
 
50
  "ProgramPipelineVk.cpp",
 
51
  "ProgramPipelineVk.h",
 
52
  "QueryVk.cpp",
 
53
  "QueryVk.h",
 
54
  "RenderbufferVk.cpp",
 
55
  "RenderbufferVk.h",
 
56
  "RendererVk.cpp",
 
57
  "RendererVk.h",
 
58
  "RenderTargetVk.cpp",
 
59
  "RenderTargetVk.h",
 
60
  "SamplerVk.cpp",
 
61
  "SamplerVk.h",
 
62
  "SecondaryCommandBuffer.cpp",
 
63
  "SecondaryCommandBuffer.h",
 
64
  "SemaphoreVk.cpp",
 
65
  "SemaphoreVk.h",
 
66
  "ShaderVk.cpp",
 
67
  "ShaderVk.h",
 
68
  "SurfaceVk.cpp",
 
69
  "SurfaceVk.h",
 
70
  "SyncVk.cpp",
 
71
  "SyncVk.h",
 
72
  "TextureVk.cpp",
 
73
  "TextureVk.h",
 
74
  "TransformFeedbackVk.cpp",
 
75
  "TransformFeedbackVk.h",
 
76
  "UtilsVk.cpp",
 
77
  "UtilsVk.h",
 
78
  "VertexArrayVk.cpp",
 
79
  "VertexArrayVk.h",
 
80
  "vk_cache_utils.cpp",
 
81
  "vk_cache_utils.h",
 
82
  "vk_caps_utils.cpp",
 
83
  "vk_caps_utils.h",
 
84
  "vk_ext_provoking_vertex.h",
 
85
  "vk_format_table_autogen.cpp",
 
86
  "vk_format_utils.h",
 
87
  "vk_format_utils.cpp",
 
88
  "vk_helpers.cpp",
 
89
  "vk_helpers.h",
 
90
  "vk_internal_shaders_autogen.h",
 
91
  "vk_internal_shaders_autogen.cpp",
 
92
  "vk_mandatory_format_support_table_autogen.cpp",
 
93
  "vk_utils.cpp",
 
94
  "vk_utils.h",
 
95
  "vk_wrapper.h",
 
96
]
 
97
 
 
98
if (is_android) {
 
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",
 
106
  ]
 
107
}
 
108
 
 
109
if (is_win) {
 
110
  _vulkan_backend_sources += [
 
111
    "win32/DisplayVkWin32.cpp",
 
112
    "win32/DisplayVkWin32.h",
 
113
    "win32/WindowSurfaceVkWin32.cpp",
 
114
    "win32/WindowSurfaceVkWin32.h",
 
115
  ]
 
116
}
 
117
 
 
118
if (angle_use_x11) {
 
119
  _vulkan_backend_sources += [
 
120
    "xcb/DisplayVkXcb.cpp",
 
121
    "xcb/DisplayVkXcb.h",
 
122
    "xcb/WindowSurfaceVkXcb.cpp",
 
123
    "xcb/WindowSurfaceVkXcb.h",
 
124
  ]
 
125
}
 
126
 
 
127
if (is_fuchsia) {
 
128
  _vulkan_backend_sources += [
 
129
    "fuchsia/DisplayVkFuchsia.cpp",
 
130
    "fuchsia/DisplayVkFuchsia.h",
 
131
    "fuchsia/WindowSurfaceVkFuchsia.cpp",
 
132
    "fuchsia/WindowSurfaceVkFuchsia.h",
 
133
  ]
 
134
}
 
135
 
 
136
if (is_ggp) {
 
137
  _vulkan_backend_sources += [
 
138
    "ggp/DisplayVkGGP.cpp",
 
139
    "ggp/DisplayVkGGP.h",
 
140
    "ggp/WindowSurfaceVkGGP.cpp",
 
141
    "ggp/WindowSurfaceVkGGP.h",
 
142
  ]
 
143
}
 
144
 
 
145
if (is_mac) {
 
146
  _vulkan_backend_sources += [
 
147
    "mac/DisplayVkMac.mm",
 
148
    "mac/DisplayVkMac.h",
 
149
    "mac/WindowSurfaceVkMac.mm",
 
150
    "mac/WindowSurfaceVkMac.h",
 
151
  ]
 
152
}
 
153
 
 
154
config("angle_vulkan_lib_android") {
 
155
  if (is_android) {
 
156
    libs = [ "vulkan" ]
 
157
  }
 
158
}
 
159
 
 
160
group("angle_vulkan_entry_points") {
 
161
  public_configs = [ ":angle_vulkan_lib_android" ]
 
162
  public_deps = [
 
163
    "$angle_root/src/third_party/volk:volk",
 
164
    "$angle_root/third_party/vulkan-headers/src:vulkan_headers",
 
165
  ]
 
166
  if (is_fuchsia) {
 
167
    public_deps += [
 
168
      "$angle_root/src/common/fuchsia_egl",
 
169
      "//third_party/fuchsia-sdk:vulkan_base",
 
170
      "//third_party/fuchsia-sdk/sdk:vulkan",
 
171
    ]
 
172
  } else if (!is_android && !is_ggp) {
 
173
    data_deps = [
 
174
      "$angle_root/third_party/vulkan-loader/src:libvulkan",
 
175
    ]
 
176
  }
 
177
}
 
178
 
 
179
config("angle_vulkan_backend_config") {
 
180
  defines = [ "ANGLE_ENABLE_VULKAN" ]
 
181
  if (angle_enable_swiftshader) {
 
182
    defines += [ "ANGLE_ENABLE_SWIFTSHADER" ]
 
183
  }
 
184
  if (angle_enable_custom_vulkan_cmd_buffers) {
 
185
    defines += [ "ANGLE_USE_CUSTOM_VULKAN_CMD_BUFFERS=1" ]
 
186
  }
 
187
 
 
188
  if (angle_enable_vulkan_gpu_trace_events) {
 
189
    defines += [ "ANGLE_ENABLE_VULKAN_GPU_TRACE_EVENTS=1" ]
 
190
  }
 
191
}
 
192
 
 
193
angle_source_set("angle_vulkan_backend") {
 
194
  sources = _vulkan_backend_sources
 
195
  libs = []
 
196
  deps = [
 
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",
 
202
  ]
 
203
  public_deps = [
 
204
    "$angle_root:angle_glslang_wrapper",
 
205
    "$angle_root:libANGLE_headers",
 
206
  ]
 
207
  public_configs = [ ":angle_vulkan_backend_config" ]
 
208
 
 
209
  data_deps = []
 
210
 
 
211
  defines = [
 
212
    "ANGLE_VK_LAYERS_DIR=\"$angle_data_dir\"",
 
213
    "ANGLE_VK_MOCK_ICD_JSON=\"$angle_data_dir/VkICD_mock_icd.json\"",
 
214
  ]
 
215
 
 
216
  if (is_android) {
 
217
    libs += [ "vulkan" ]
 
218
  }
 
219
 
 
220
  # Include generated shaders.
 
221
  import("vk_internal_shaders_autogen.gni")
 
222
  sources += angle_vulkan_internal_shaders
 
223
 
 
224
  if (!is_android && !is_fuchsia && !is_ggp) {
 
225
    data_deps += [
 
226
      "$angle_root/third_party/vulkan-loader/src:libvulkan",
 
227
      "$angle_root/third_party/vulkan-tools/src:VkICD_mock_icd",
 
228
    ]
 
229
  }
 
230
 
 
231
  if (angle_enable_vulkan_validation_layers) {
 
232
    defines += [ "ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT" ]
 
233
    if (is_fuchsia) {
 
234
      data_deps += [ "//third_party/fuchsia-sdk:vulkan_validation" ]
 
235
    } else {
 
236
      data_deps += [ "$angle_root/third_party/vulkan-validation-layers/src:vulkan_validation_layers" ]
 
237
      if (!is_android) {
 
238
        data_deps += [ "$angle_root/third_party/vulkan-validation-layers/src:vulkan_gen_json_files" ]
 
239
      }
 
240
    }
 
241
  }
 
242
 
 
243
  if (angle_enable_swiftshader) {
 
244
    import("$swiftshader_dir/src/Vulkan/vulkan.gni")
 
245
    _sws_icd = "./$swiftshader_icd_file_name"
 
246
    if (is_win) {
 
247
      _sws_icd = ".\\\\$swiftshader_icd_file_name"
 
248
    }
 
249
 
 
250
    defines += [ "ANGLE_VK_SWIFTSHADER_ICD_JSON=\"${_sws_icd}\"" ]
 
251
 
 
252
    data_deps += [
 
253
      "$swiftshader_dir/src/Vulkan:icd_file",
 
254
      "$swiftshader_dir/src/Vulkan:swiftshader_libvulkan",
 
255
    ]
 
256
  }
 
257
}