• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("@py_deps//:requirements.bzl", "requirement")
2load("@rules_python//python:defs.bzl", "py_binary")
3
4# This file will be copied into //third_party/externals/dawn via the new_local_repository
5# rule in WORKSPACE.bazel, so all files should be relative to that path.
6
7# We define this here because the emscripten toolchain calls the cpu wasm, whereas the
8# bazelbuild/platforms call it wasm32. https://github.com/emscripten-core/emsdk/issues/919
9config_setting(
10    name = "cpu_wasm",
11    values = {
12        "cpu": "wasm",
13    },
14)
15
16py_binary(
17    name = "dawn_json_generator",
18    srcs = [
19        "generator/dawn_json_generator.py",
20        "generator/generator_lib.py",
21    ],
22    deps = [
23        requirement("jinja2"),
24        # jinja2 has a dep on MarkupSafe. Declaring MarkupSafe here is not necessary, but it makes
25        # the link easier to find than searching the Bazel cache for generated deps.
26        requirement("MarkupSafe"),
27    ],
28)
29
30genrule(
31    name = "generate_webgpu_cpp",
32    srcs = [
33        "generator/templates/api_cpp.h",
34        "generator/templates/api_cpp_chained_struct.h",
35        "generator/templates/api_cpp_print.h",
36        "generator/templates/BSD_LICENSE",
37        "dawn.json",
38        "dawn_wire.json",
39    ],
40    outs = [
41        "include/dawn/webgpu_cpp.h",
42        "include/dawn/webgpu_cpp_chained_struct.h",
43        "include/dawn/webgpu_cpp_print.h",
44    ],
45    cmd = "$(location :dawn_json_generator) " +
46          "--dawn-json $(location dawn.json) " +
47          "--wire-json $(location dawn_wire.json) " +
48          "--template-dir $$(dirname $(location generator/templates/api_cpp.h)) " +
49          "--targets cpp_headers " +
50          "--output-dir $(RULEDIR)",
51    tools = [":dawn_json_generator"],
52)
53
54genrule(
55    name = "generate_webgpu",
56    srcs = [
57        "generator/templates/api.h",
58        "generator/templates/dawn_proc_table.h",
59        "generator/templates/BSD_LICENSE",
60        "dawn.json",
61        "dawn_wire.json",
62    ],
63    outs = [
64        "include/dawn/webgpu.h",
65        "include/dawn/dawn_proc_table.h",
66    ],
67    cmd = "$(location :dawn_json_generator) " +
68          "--dawn-json $(location dawn.json) " +
69          "--wire-json $(location dawn_wire.json) " +
70          "--template-dir $$(dirname $(location generator/templates/api.h)) " +
71          "--targets headers " +
72          "--output-dir $(RULEDIR)",
73    tools = [":dawn_json_generator"],
74)
75
76genrule(
77    name = "generate_proc",
78    srcs = [
79        "dawn.json",
80        "dawn_wire.json",
81        "generator/templates/BSD_LICENSE",
82        "generator/templates/dawn_proc.c",
83        "generator/templates/dawn_thread_dispatch_proc.cpp",
84    ],
85    outs = [
86        "src/dawn/dawn_proc.c",
87        "src/dawn/dawn_thread_dispatch_proc.cpp",
88    ],
89    cmd = "$(location :dawn_json_generator) " +
90          "--dawn-json $(location dawn.json) " +
91          "--wire-json $(location dawn_wire.json) " +
92          "--template-dir $$(dirname $(location generator/templates/BSD_LICENSE)) " +
93          "--targets proc " +
94          "--output-dir $(RULEDIR)",
95    tools = [":dawn_json_generator"],
96)
97
98genrule(
99    name = "generate_dawn_cpp",
100    srcs = [
101        "dawn.json",
102        "dawn_wire.json",
103        "generator/templates/BSD_LICENSE",
104        "generator/templates/api_cpp.cpp",
105    ],
106    outs = [
107        "src/dawn/webgpu_cpp.cpp",
108    ],
109    cmd = "$(location :dawn_json_generator) " +
110          "--dawn-json $(location dawn.json) " +
111          "--wire-json $(location dawn_wire.json) " +
112          "--template-dir $$(dirname $(location generator/templates/BSD_LICENSE)) " +
113          "--targets cpp " +
114          "--output-dir $(RULEDIR)",
115    tools = [":dawn_json_generator"],
116)
117
118genrule(
119    name = "generate_utils",
120    srcs = [
121        "dawn.json",
122        "dawn_wire.json",
123        "generator/templates/BSD_LICENSE",
124        "generator/templates/dawn/native/ChainUtils.cpp",
125        "generator/templates/dawn/native/ChainUtils.h",
126        "generator/templates/dawn/native/Features.h",
127        "generator/templates/dawn/native/Features.inl",
128        "generator/templates/dawn/native/ObjectType.cpp",
129        "generator/templates/dawn/native/ObjectType.h",
130        "generator/templates/dawn/native/ProcTable.cpp",
131        "generator/templates/dawn/native/ValidationUtils.cpp",
132        "generator/templates/dawn/native/ValidationUtils.h",
133        "generator/templates/dawn/native/api_StreamImpl.cpp",
134        "generator/templates/dawn/native/api_absl_format.cpp",
135        "generator/templates/dawn/native/api_absl_format.h",
136        "generator/templates/dawn/native/api_structs.cpp",
137        "generator/templates/dawn/native/api_structs.h",
138        "generator/templates/dawn/native/dawn_platform.h",
139    ],
140    outs = [
141        "src/dawn/native/ChainUtils_autogen.cpp",
142        "src/dawn/native/ChainUtils_autogen.h",
143        "src/dawn/native/Features_autogen.h",
144        "src/dawn/native/Features_autogen.inl",
145        "src/dawn/native/ObjectType_autogen.cpp",
146        "src/dawn/native/ObjectType_autogen.h",
147        "src/dawn/native/ProcTable.cpp",
148        "src/dawn/native/ValidationUtils_autogen.cpp",
149        "src/dawn/native/ValidationUtils_autogen.h",
150        "src/dawn/native/dawn_platform_autogen.h",
151        "src/dawn/native/webgpu_StreamImpl_autogen.cpp",
152        "src/dawn/native/webgpu_absl_format_autogen.cpp",
153        "src/dawn/native/webgpu_absl_format_autogen.h",
154        "src/dawn/native/wgpu_structs_autogen.cpp",
155        "src/dawn/native/wgpu_structs_autogen.h",
156    ],
157    cmd = "$(location :dawn_json_generator) " +
158          "--dawn-json $(location dawn.json) " +
159          "--wire-json $(location dawn_wire.json) " +
160          "--template-dir $$(dirname $(location generator/templates/BSD_LICENSE)) " +
161          "--targets native_utils " +
162          "--output-dir $(RULEDIR)",
163    tools = [":dawn_json_generator"],
164)
165
166py_binary(
167    name = "dawn_gpu_info_generator",
168    srcs = [
169        "generator/dawn_gpu_info_generator.py",
170        "generator/generator_lib.py",
171    ],
172    deps = [
173        requirement("jinja2"),
174        # jinja2 has a dep on MarkupSafe. Declaring MarkupSafe here is not necessary, but it makes
175        # the link easier to find than searching the Bazel cache for generated deps.
176        requirement("MarkupSafe"),
177    ],
178)
179
180genrule(
181    name = "generate_gpuinfo",
182    srcs = [
183        "src/dawn/gpu_info.json",
184        "generator/templates/BSD_LICENSE",
185        "generator/templates/dawn/common/GPUInfo.h",
186        "generator/templates/dawn/common/GPUInfo.cpp",
187    ],
188    outs = [
189        "src/dawn/common/GPUInfo_autogen.h",
190        "src/dawn/common/GPUInfo_autogen.cpp",
191    ],
192    cmd = "$(location :dawn_gpu_info_generator) " +
193          "--gpu-info-json $(location src/dawn/gpu_info.json) " +
194          "--template-dir $$(dirname $(location generator/templates/BSD_LICENSE)) " +
195          "--output-dir $(RULEDIR)",
196    tools = [":dawn_gpu_info_generator"],
197)
198
199py_binary(
200    name = "dawn_version_generator",
201    srcs = [
202        "generator/dawn_version_generator.py",
203        "generator/generator_lib.py",
204    ],
205    deps = [
206        requirement("jinja2"),
207        # jinja2 has a dep on MarkupSafe. Declaring MarkupSafe here is not necessary, but it makes
208        # the link easier to find than searching the Bazel cache for generated deps.
209        requirement("MarkupSafe"),
210    ],
211)
212
213# This currently has a blank version, which "disables caching" according to
214# https://dawn.googlesource.com/dawn/+/bd30d9e594226e96c07ec3cd46dbdc68928aef41/generator/dawn_version_generator.py#39
215# We don't anticipate that being a real issue. Should we need to make this work,
216# the easiest way is to use cat to read in .git/HEAD and specify that directly
217# to the dawn_version_generator script (which needs a patch to accept that argument.
218genrule(
219    name = "generate_version",
220    srcs = [
221        "generator/templates/BSD_LICENSE",
222        "generator/templates/dawn/common/Version.h",
223    ],
224    outs = [
225        "src/dawn/common/Version_autogen.h",
226    ],
227    cmd = "$(location :dawn_version_generator) " +
228          "--template-dir $$(dirname $(location generator/templates/BSD_LICENSE)) " +
229          "--dawn-dir $$(dirname $(location generator/templates/BSD_LICENSE)) " +
230          "--output-dir $(RULEDIR) 2> /dev/null",
231    tools = [":dawn_version_generator"],
232)
233
234DAWN_HDRS = [
235    "include/dawn/EnumClassBitmasks.h",
236    "include/dawn/dawn_proc.h",
237    "include/dawn/dawn_thread_dispatch_proc.h",
238    "include/dawn/native/D3D12Backend.h",
239    "include/dawn/native/DawnNative.h",
240    "include/dawn/native/MetalBackend.h",
241    "include/dawn/native/NullBackend.h",
242    "include/dawn/native/OpenGLBackend.h",
243    "include/dawn/native/VulkanBackend.h",
244    "include/dawn/native/dawn_native_export.h",
245    "include/dawn/platform/DawnPlatform.h",
246    "include/dawn/platform/dawn_platform_export.h",
247    "include/dawn/wire/Wire.h",
248    "include/dawn/wire/WireClient.h",
249    "include/dawn/wire/WireServer.h",
250    "include/dawn/wire/dawn_wire_export.h",
251    "include/webgpu/webgpu.h",
252    "include/webgpu/webgpu_cpp.h",
253]
254
255DAWN_SRCS = [
256    # Generated files
257    "include/dawn/dawn_proc_table.h",
258    "include/dawn/webgpu.h",
259    "include/dawn/webgpu_cpp.h",
260    "include/dawn/webgpu_cpp_chained_struct.h",
261    # From dawn/src/dawn/native/BUILD.gn:sources
262    "src/dawn/native/DawnNative.cpp",
263    "src/dawn/native/Adapter.cpp",
264    "src/dawn/native/Adapter.h",
265    "src/dawn/native/ApplyClearColorValueWithDrawHelper.cpp",
266    "src/dawn/native/ApplyClearColorValueWithDrawHelper.h",
267    "src/dawn/native/AsyncTask.cpp",
268    "src/dawn/native/AsyncTask.h",
269    "src/dawn/native/AttachmentState.cpp",
270    "src/dawn/native/AttachmentState.h",
271    "src/dawn/native/BackendConnection.cpp",
272    "src/dawn/native/BackendConnection.h",
273    "src/dawn/native/BindGroup.cpp",
274    "src/dawn/native/BindGroup.h",
275    "src/dawn/native/BindGroupLayout.cpp",
276    "src/dawn/native/BindGroupLayout.h",
277    "src/dawn/native/BindGroupLayoutInternal.cpp",
278    "src/dawn/native/BindGroupLayoutInternal.h",
279    "src/dawn/native/BindGroupTracker.h",
280    "src/dawn/native/BindingInfo.cpp",
281    "src/dawn/native/BindingInfo.h",
282    "src/dawn/native/BlitBufferToDepthStencil.cpp",
283    "src/dawn/native/BlitBufferToDepthStencil.h",
284    "src/dawn/native/BlitColorToColorWithDraw.cpp",
285    "src/dawn/native/BlitColorToColorWithDraw.h",
286    "src/dawn/native/BlitDepthToDepth.cpp",
287    "src/dawn/native/BlitDepthToDepth.h",
288    "src/dawn/native/BlitTextureToBuffer.cpp",
289    "src/dawn/native/BlitTextureToBuffer.h",
290    "src/dawn/native/Blob.cpp",
291    "src/dawn/native/Blob.h",
292    "src/dawn/native/BlobCache.cpp",
293    "src/dawn/native/BlobCache.h",
294    "src/dawn/native/BuddyAllocator.cpp",
295    "src/dawn/native/BuddyAllocator.h",
296    "src/dawn/native/BuddyMemoryAllocator.cpp",
297    "src/dawn/native/BuddyMemoryAllocator.h",
298    "src/dawn/native/Buffer.cpp",
299    "src/dawn/native/Buffer.h",
300    "src/dawn/native/CacheKey.cpp",
301    "src/dawn/native/CacheKey.h",
302    "src/dawn/native/CacheRequest.cpp",
303    "src/dawn/native/CacheRequest.h",
304    "src/dawn/native/CacheResult.h",
305    "src/dawn/native/CachedObject.cpp",
306    "src/dawn/native/CachedObject.h",
307    "src/dawn/native/CallbackTaskManager.cpp",
308    "src/dawn/native/CallbackTaskManager.h",
309    "src/dawn/native/ChainUtils.h",
310    "src/dawn/native/ChainUtilsImpl.h",
311    "src/dawn/native/CommandAllocator.cpp",
312    "src/dawn/native/CommandAllocator.h",
313    "src/dawn/native/CommandBuffer.cpp",
314    "src/dawn/native/CommandBuffer.h",
315    "src/dawn/native/CommandBufferStateTracker.cpp",
316    "src/dawn/native/CommandBufferStateTracker.h",
317    "src/dawn/native/CommandEncoder.cpp",
318    "src/dawn/native/CommandEncoder.h",
319    "src/dawn/native/CommandValidation.cpp",
320    "src/dawn/native/CommandValidation.h",
321    "src/dawn/native/Commands.cpp",
322    "src/dawn/native/Commands.h",
323    "src/dawn/native/CompilationMessages.cpp",
324    "src/dawn/native/CompilationMessages.h",
325    "src/dawn/native/ComputePassEncoder.cpp",
326    "src/dawn/native/ComputePassEncoder.h",
327    "src/dawn/native/ComputePipeline.cpp",
328    "src/dawn/native/ComputePipeline.h",
329    "src/dawn/native/CopyTextureForBrowserHelper.cpp",
330    "src/dawn/native/CopyTextureForBrowserHelper.h",
331    "src/dawn/native/CreatePipelineAsyncTask.cpp",
332    "src/dawn/native/CreatePipelineAsyncTask.h",
333    "src/dawn/native/Device.cpp",
334    "src/dawn/native/Device.h",
335    "src/dawn/native/DynamicUploader.cpp",
336    "src/dawn/native/DynamicUploader.h",
337    "src/dawn/native/EncodingContext.cpp",
338    "src/dawn/native/EncodingContext.h",
339    "src/dawn/native/EnumClassBitmasks.h",
340    "src/dawn/native/EnumMaskIterator.h",
341    "src/dawn/native/Error.cpp",
342    "src/dawn/native/Error.h",
343    "src/dawn/native/ErrorData.cpp",
344    "src/dawn/native/ErrorData.h",
345    "src/dawn/native/ErrorInjector.cpp",
346    "src/dawn/native/ErrorInjector.h",
347    "src/dawn/native/ErrorScope.cpp",
348    "src/dawn/native/ErrorScope.h",
349    "src/dawn/native/ExecutionQueue.cpp",
350    "src/dawn/native/ExecutionQueue.h",
351    "src/dawn/native/ExternalTexture.cpp",
352    "src/dawn/native/ExternalTexture.h",
353    "src/dawn/native/Features.cpp",
354    "src/dawn/native/Features.h",
355    "src/dawn/native/Format.cpp",
356    "src/dawn/native/Format.h",
357    "src/dawn/native/Forward.h",
358    "src/dawn/native/IndirectDrawMetadata.cpp",
359    "src/dawn/native/IndirectDrawMetadata.h",
360    "src/dawn/native/IndirectDrawValidationEncoder.cpp",
361    "src/dawn/native/IndirectDrawValidationEncoder.h",
362    "src/dawn/native/Instance.cpp",
363    "src/dawn/native/Instance.h",
364    "src/dawn/native/IntegerTypes.h",
365    "src/dawn/native/InternalPipelineStore.cpp",
366    "src/dawn/native/InternalPipelineStore.h",
367    "src/dawn/native/Limits.cpp",
368    "src/dawn/native/Limits.h",
369    "src/dawn/native/ObjectBase.cpp",
370    "src/dawn/native/ObjectBase.h",
371    "src/dawn/native/ObjectContentHasher.cpp",
372    "src/dawn/native/ObjectContentHasher.h",
373    "src/dawn/native/PassResourceUsage.cpp",
374    "src/dawn/native/PassResourceUsage.h",
375    "src/dawn/native/PassResourceUsageTracker.cpp",
376    "src/dawn/native/PassResourceUsageTracker.h",
377    "src/dawn/native/PerStage.cpp",
378    "src/dawn/native/PerStage.h",
379    "src/dawn/native/PhysicalDevice.cpp",
380    "src/dawn/native/PhysicalDevice.h",
381    "src/dawn/native/Pipeline.cpp",
382    "src/dawn/native/Pipeline.h",
383    "src/dawn/native/PipelineCache.cpp",
384    "src/dawn/native/PipelineCache.h",
385    "src/dawn/native/PipelineLayout.cpp",
386    "src/dawn/native/PipelineLayout.h",
387    "src/dawn/native/PooledResourceMemoryAllocator.cpp",
388    "src/dawn/native/PooledResourceMemoryAllocator.h",
389    "src/dawn/native/ProgrammableEncoder.cpp",
390    "src/dawn/native/ProgrammableEncoder.h",
391    "src/dawn/native/QueryHelper.cpp",
392    "src/dawn/native/QueryHelper.h",
393    "src/dawn/native/QuerySet.cpp",
394    "src/dawn/native/QuerySet.h",
395    "src/dawn/native/Queue.cpp",
396    "src/dawn/native/Queue.h",
397    "src/dawn/native/RefCountedWithExternalCount.cpp",
398    "src/dawn/native/RefCountedWithExternalCount.h",
399    "src/dawn/native/RenderBundle.cpp",
400    "src/dawn/native/RenderBundle.h",
401    "src/dawn/native/RenderBundleEncoder.cpp",
402    "src/dawn/native/RenderBundleEncoder.h",
403    "src/dawn/native/RenderEncoderBase.cpp",
404    "src/dawn/native/RenderEncoderBase.h",
405    "src/dawn/native/RenderPassEncoder.cpp",
406    "src/dawn/native/RenderPassEncoder.h",
407    "src/dawn/native/RenderPipeline.cpp",
408    "src/dawn/native/RenderPipeline.h",
409    "src/dawn/native/ResourceHeap.h",
410    "src/dawn/native/ResourceHeapAllocator.h",
411    "src/dawn/native/ResourceMemoryAllocation.cpp",
412    "src/dawn/native/ResourceMemoryAllocation.h",
413    "src/dawn/native/RingBufferAllocator.cpp",
414    "src/dawn/native/RingBufferAllocator.h",
415    "src/dawn/native/Sampler.cpp",
416    "src/dawn/native/Sampler.h",
417    "src/dawn/native/ScratchBuffer.cpp",
418    "src/dawn/native/ScratchBuffer.h",
419    "src/dawn/native/Serializable.h",
420    "src/dawn/native/ShaderModule.cpp",
421    "src/dawn/native/ShaderModule.h",
422    "src/dawn/native/SharedFence.cpp",
423    "src/dawn/native/SharedFence.h",
424    "src/dawn/native/SharedTextureMemory.cpp",
425    "src/dawn/native/SharedTextureMemory.h",
426    "src/dawn/native/StreamImplTint.cpp",
427    "src/dawn/native/Subresource.cpp",
428    "src/dawn/native/Subresource.h",
429    "src/dawn/native/SubresourceStorage.h",
430    "src/dawn/native/Surface.cpp",
431    "src/dawn/native/Surface.h",
432    "src/dawn/native/SwapChain.cpp",
433    "src/dawn/native/SwapChain.h",
434    "src/dawn/native/Texture.cpp",
435    "src/dawn/native/Texture.h",
436    "src/dawn/native/TintUtils.cpp",
437    "src/dawn/native/TintUtils.h",
438    "src/dawn/native/ToBackend.h",
439    "src/dawn/native/Toggles.cpp",
440    "src/dawn/native/Toggles.h",
441    "src/dawn/native/UsageValidationMode.h",
442    "src/dawn/native/VertexFormat.cpp",
443    "src/dawn/native/VertexFormat.h",
444    "src/dawn/native/VisitableMembers.h",
445    "src/dawn/native/dawn_platform.h",
446    "src/dawn/native/stream/BlobSource.cpp",
447    "src/dawn/native/stream/BlobSource.h",
448    "src/dawn/native/stream/ByteVectorSink.cpp",
449    "src/dawn/native/stream/ByteVectorSink.h",
450    "src/dawn/native/stream/Sink.h",
451    "src/dawn/native/stream/Source.h",
452    "src/dawn/native/stream/Stream.cpp",
453    "src/dawn/native/stream/Stream.h",
454    "src/dawn/native/utils/WGPUHelpers.cpp",
455    "src/dawn/native/utils/WGPUHelpers.h",
456    "src/dawn/native/webgpu_absl_format.cpp",
457    "src/dawn/native/webgpu_absl_format.h",
458    # From dawn/src/dawn/native/BUILD.gn:utils_gen
459    "src/dawn/native/ChainUtils_autogen.cpp",
460    "src/dawn/native/ChainUtils_autogen.h",
461    "src/dawn/native/Features_autogen.h",
462    "src/dawn/native/Features_autogen.inl",
463    "src/dawn/native/ObjectType_autogen.cpp",
464    "src/dawn/native/ObjectType_autogen.h",
465    "src/dawn/native/ProcTable.cpp",
466    "src/dawn/native/ValidationUtils_autogen.cpp",
467    "src/dawn/native/ValidationUtils_autogen.h",
468    "src/dawn/native/dawn_platform_autogen.h",
469    "src/dawn/native/webgpu_StreamImpl_autogen.cpp",
470    "src/dawn/native/webgpu_absl_format_autogen.cpp",
471    "src/dawn/native/webgpu_absl_format_autogen.h",
472    "src/dawn/native/wgpu_structs_autogen.cpp",
473    "src/dawn/native/wgpu_structs_autogen.h",
474    # From dawn/src/dawn/common/BUILD.gn:common
475    "src/dawn/common/Alloc.h",
476    "src/dawn/common/Assert.cpp",
477    "src/dawn/common/Assert.h",
478    "src/dawn/common/BitSetIterator.h",
479    "src/dawn/common/Compiler.h",
480    "src/dawn/common/ConcurrentCache.h",
481    "src/dawn/common/Constants.h",
482    "src/dawn/common/ContentLessObjectCache.h",
483    "src/dawn/common/ContentLessObjectCacheable.h",
484    "src/dawn/common/CoreFoundationRef.h",
485    "src/dawn/common/DynamicLib.cpp",
486    "src/dawn/common/DynamicLib.h",
487    "src/dawn/common/GPUInfo.cpp",
488    "src/dawn/common/GPUInfo.h",
489    "src/dawn/common/HashUtils.h",
490    "src/dawn/common/IOKitRef.h",
491    "src/dawn/common/LinkedList.h",
492    "src/dawn/common/Log.cpp",
493    "src/dawn/common/Log.h",
494    "src/dawn/common/Math.cpp",
495    "src/dawn/common/Math.h",
496    "src/dawn/common/Mutex.cpp",
497    "src/dawn/common/Mutex.h",
498    "src/dawn/common/MutexProtected.h",
499    "src/dawn/common/NSRef.h",
500    "src/dawn/common/NonCopyable.h",
501    "src/dawn/common/Numeric.h",
502    "src/dawn/common/PlacementAllocated.h",
503    "src/dawn/common/Platform.h",
504    "src/dawn/common/Preprocessor.h",
505    "src/dawn/common/Ref.h",
506    "src/dawn/common/RefBase.h",
507    "src/dawn/common/RefCounted.cpp",
508    "src/dawn/common/RefCounted.h",
509    "src/dawn/common/Result.cpp",
510    "src/dawn/common/Result.h",
511    "src/dawn/common/SerialMap.h",
512    "src/dawn/common/SerialQueue.h",
513    "src/dawn/common/SerialStorage.h",
514    "src/dawn/common/SlabAllocator.cpp",
515    "src/dawn/common/SlabAllocator.h",
516    "src/dawn/common/StackContainer.h",
517    "src/dawn/common/SystemUtils.cpp",
518    "src/dawn/common/SystemUtils.h",
519    "src/dawn/common/TypeTraits.h",
520    "src/dawn/common/TypedInteger.h",
521    "src/dawn/common/UnderlyingType.h",
522    "src/dawn/common/WeakRef.h",
523    "src/dawn/common/WeakRefSupport.cpp",
524    "src/dawn/common/WeakRefSupport.h",
525    "src/dawn/common/ityp_array.h",
526    "src/dawn/common/ityp_bitset.h",
527    "src/dawn/common/ityp_span.h",
528    "src/dawn/common/ityp_stack_vec.h",
529    "src/dawn/common/ityp_vector.h",
530    "src/dawn/common/vulkan_platform.h",
531    "src/dawn/common/xlib_with_undefs.h",
532    # Generated files in dawn/src/dawn/common/BUILD.gn
533    "src/dawn/common/GPUInfo_autogen.cpp",
534    "src/dawn/common/GPUInfo_autogen.h",
535    "src/dawn/common/Version_autogen.h",
536    # From dawn/src/dawn/platform/BUILD.gn:platform
537    "include/dawn/platform/DawnPlatform.h",
538    "include/dawn/platform/dawn_platform_export.h",
539    "src/dawn/platform/DawnPlatform.cpp",
540    "src/dawn/platform/WorkerThread.cpp",
541    "src/dawn/platform/WorkerThread.h",
542    "src/dawn/platform/metrics/HistogramMacros.cpp",
543    "src/dawn/platform/metrics/HistogramMacros.h",
544    "src/dawn/platform/tracing/EventTracer.cpp",
545    "src/dawn/platform/tracing/EventTracer.h",
546    "src/dawn/platform/tracing/TraceEvent.h",
547]
548
549DAWN_VULKAN_SRCS = [
550    # From dawn/src/dawn/native/BUILD.gn:sources (dawn_enable_vulkan)
551    "src/dawn/native/SpirvValidation.cpp",
552    "src/dawn/native/SpirvValidation.h",
553    "src/dawn/native/vulkan/BackendVk.cpp",
554    "src/dawn/native/vulkan/BackendVk.h",
555    "src/dawn/native/vulkan/BindGroupLayoutVk.cpp",
556    "src/dawn/native/vulkan/BindGroupLayoutVk.h",
557    "src/dawn/native/vulkan/BindGroupVk.cpp",
558    "src/dawn/native/vulkan/BindGroupVk.h",
559    "src/dawn/native/vulkan/BufferVk.cpp",
560    "src/dawn/native/vulkan/BufferVk.h",
561    "src/dawn/native/vulkan/StreamImplVk.cpp",
562    "src/dawn/native/vulkan/CommandBufferVk.cpp",
563    "src/dawn/native/vulkan/CommandBufferVk.h",
564    "src/dawn/native/vulkan/CommandRecordingContext.h",
565    "src/dawn/native/vulkan/ComputePipelineVk.cpp",
566    "src/dawn/native/vulkan/ComputePipelineVk.h",
567    "src/dawn/native/vulkan/DescriptorSetAllocation.h",
568    "src/dawn/native/vulkan/DescriptorSetAllocator.cpp",
569    "src/dawn/native/vulkan/DescriptorSetAllocator.h",
570    "src/dawn/native/vulkan/DeviceVk.cpp",
571    "src/dawn/native/vulkan/DeviceVk.h",
572    "src/dawn/native/vulkan/ExternalHandle.h",
573    "src/dawn/native/vulkan/FencedDeleter.cpp",
574    "src/dawn/native/vulkan/FencedDeleter.h",
575    "src/dawn/native/vulkan/Forward.h",
576    "src/dawn/native/vulkan/PhysicalDeviceVk.cpp",
577    "src/dawn/native/vulkan/PhysicalDeviceVk.h",
578    "src/dawn/native/vulkan/PipelineCacheVk.cpp",
579    "src/dawn/native/vulkan/PipelineCacheVk.h",
580    "src/dawn/native/vulkan/PipelineLayoutVk.cpp",
581    "src/dawn/native/vulkan/PipelineLayoutVk.h",
582    "src/dawn/native/vulkan/QuerySetVk.cpp",
583    "src/dawn/native/vulkan/QuerySetVk.h",
584    "src/dawn/native/vulkan/QueueVk.cpp",
585    "src/dawn/native/vulkan/QueueVk.h",
586    "src/dawn/native/vulkan/RenderPassCache.cpp",
587    "src/dawn/native/vulkan/RenderPassCache.h",
588    "src/dawn/native/vulkan/RenderPipelineVk.cpp",
589    "src/dawn/native/vulkan/RenderPipelineVk.h",
590    "src/dawn/native/vulkan/ResourceHeapVk.cpp",
591    "src/dawn/native/vulkan/ResourceHeapVk.h",
592    "src/dawn/native/vulkan/ResourceMemoryAllocatorVk.cpp",
593    "src/dawn/native/vulkan/ResourceMemoryAllocatorVk.h",
594    "src/dawn/native/vulkan/SamplerVk.cpp",
595    "src/dawn/native/vulkan/SamplerVk.h",
596    "src/dawn/native/vulkan/ShaderModuleVk.cpp",
597    "src/dawn/native/vulkan/ShaderModuleVk.h",
598    "src/dawn/native/vulkan/SwapChainVk.cpp",
599    "src/dawn/native/vulkan/SwapChainVk.h",
600    "src/dawn/native/vulkan/TextureVk.cpp",
601    "src/dawn/native/vulkan/TextureVk.h",
602    "src/dawn/native/vulkan/UtilsVulkan.cpp",
603    "src/dawn/native/vulkan/UtilsVulkan.h",
604    "src/dawn/native/vulkan/VulkanBackend.cpp",
605    "src/dawn/native/vulkan/VulkanError.cpp",
606    "src/dawn/native/vulkan/VulkanError.h",
607    "src/dawn/native/vulkan/VulkanExtensions.cpp",
608    "src/dawn/native/vulkan/VulkanExtensions.h",
609    "src/dawn/native/vulkan/VulkanFunctions.cpp",
610    "src/dawn/native/vulkan/VulkanFunctions.h",
611    "src/dawn/native/vulkan/VulkanInfo.cpp",
612    "src/dawn/native/vulkan/VulkanInfo.h",
613    "src/dawn/native/vulkan/external_memory/MemoryImportParams.h",
614    "src/dawn/native/vulkan/external_memory/MemoryService.cpp",
615    "src/dawn/native/vulkan/external_memory/MemoryService.h",
616    "src/dawn/native/vulkan/external_memory/MemoryServiceImplementation.cpp",
617    "src/dawn/native/vulkan/external_memory/MemoryServiceImplementation.h",
618    "src/dawn/native/vulkan/external_semaphore/SemaphoreService.cpp",
619    "src/dawn/native/vulkan/external_semaphore/SemaphoreService.h",
620    "src/dawn/native/vulkan/external_semaphore/SemaphoreServiceImplementation.cpp",
621    "src/dawn/native/vulkan/external_semaphore/SemaphoreServiceImplementation.h",
622]
623
624DAWN_VULKAN_LINUX_SRCS = [
625    # From dawn/src/dawn/native/BUILD.gn:sources (dawn_enable_vulkan && (is_android || is_linux || is_chromeos))
626    "src/dawn/native/vulkan/external_semaphore/SemaphoreServiceImplementationFD.cpp",
627    "src/dawn/native/vulkan/external_semaphore/SemaphoreServiceImplementationFD.h",
628    # From dawn/src/dawn/native/BUILD.gn:sources (dawn_enable_vulkan && (is_linux || is_chromeos))
629    "src/dawn/native/vulkan/external_memory/MemoryServiceImplementationDmaBuf.cpp",
630    "src/dawn/native/vulkan/external_memory/MemoryServiceImplementationDmaBuf.h",
631    "src/dawn/native/vulkan/external_memory/MemoryServiceImplementationOpaqueFD.cpp",
632    "src/dawn/native/vulkan/external_memory/MemoryServiceImplementationOpaqueFD.h",
633]
634
635DAWN_VULKAN_DEFINES = [
636    # From dawn/src/dawn/common/BUILD.gn:internal_config
637    "DAWN_ENABLE_BACKEND_VULKAN",
638]
639
640cc_library(
641    name = "dawn_native",
642    srcs = DAWN_SRCS + DAWN_VULKAN_SRCS + DAWN_VULKAN_LINUX_SRCS,
643    hdrs = DAWN_HDRS,
644    copts = [
645        # List this as a copt, so as not to propagate it to dependents
646        # Skia has its own vulkan headers and we do not want these to
647        # interfere/override those.
648        "-Iexternal/vulkan_headers/include",
649    ],
650    defines = DAWN_VULKAN_DEFINES,
651    includes = [
652        "include",
653        "src",
654    ],
655    visibility = ["//visibility:private"],  # only used by :dawn
656    deps = [
657        # Dawn specifically depends on dawn/src/tint:libtint
658        ":tint",
659        "@abseil_cpp//absl/strings:str_format",
660        "@vulkan_headers",
661        "@vulkan_tools",
662        "@vulkan_utility_libraries",
663    ],
664)
665
666cc_library(
667    name = "dawn_cpp",
668    srcs = [
669        # From dawn/src/dawn/BUILD.gn#cpp
670        "include/dawn/webgpu.h",
671        "include/dawn/EnumClassBitmasks.h",
672        "include/dawn/webgpu_cpp.h",
673        "include/dawn/webgpu_cpp_chained_struct.h",
674        "src/dawn/webgpu_cpp.cpp",
675    ],
676    includes = [
677        "include",
678    ],
679    visibility = ["//visibility:private"],  # only used by :dawn
680)
681
682cc_library(
683    name = "dawn_proc",
684    srcs = [
685        # From dawn/src/dawn/BUILD.gn#proc
686        "include/dawn/webgpu.h",
687        "include/dawn/dawn_proc.h",
688        "include/dawn/dawn_thread_dispatch_proc.h",
689        "include/dawn/dawn_proc_table.h",
690        "src/dawn/dawn_proc.c",
691        "src/dawn/dawn_thread_dispatch_proc.cpp",
692    ],
693    includes = [
694        "include",
695    ],
696    visibility = ["//visibility:private"],  # only used by :dawn
697)
698
699cc_library(
700    name = "dawn",
701    visibility = ["//visibility:public"],
702    deps = [
703        ":dawn_cpp",
704        ":dawn_native",
705        ":dawn_proc",
706    ],
707)
708
709cc_library(
710    name = "tint",
711    hdrs = glob(
712        [
713            "include/**/*.h",
714        ],
715        allow_empty = False,
716    ),
717    defines = [
718        "TINT_BUILD_WGSL_READER=1",
719        "TINT_BUILD_WGSL_WRITER=1",
720    ],
721    includes = ["include"],
722    visibility = ["//visibility:public"],
723    deps = [
724        "@dawn//src/tint/api",
725    ],
726)
727