• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("//bazel:flags.bzl", "bool_flag", "selects", "string_flag_with_values")
2load("//bazel:skia_rules.bzl", "exports_files_legacy", "generate_cpp_files_for_headers", "select_multi", "skia_cc_deps", "skia_cc_library", "skia_filegroup", "split_srcs_and_hdrs")
3
4package(
5    default_applicable_licenses = ["//:license"],
6)
7
8licenses(["notice"])
9
10exports_files_legacy()
11
12# In own group for exporting to //gn/gpu.gni:skia_shared_gpu_sources.
13SHARED_FILES = [
14    "AsyncReadTypes.h",
15    "AtlasTypes.cpp",
16    "AtlasTypes.h",
17    "Blend.cpp",
18    "Blend.h",
19    "BlendFormula.cpp",
20    "BlendFormula.h",
21    "BlurUtils.cpp",
22    "BlurUtils.h",
23    "BufferWriter.h",
24    "DataUtils.cpp",
25    "DataUtils.h",
26    "DitherUtils.cpp",
27    "DitherUtils.h",
28    "GpuRefCnt.h",
29    "GpuTypesPriv.h",
30    "KeyBuilder.h",
31    "MutableTextureStatePriv.h",
32    "MutableTextureState.cpp",
33    "PipelineUtils.cpp",
34    "PipelineUtils.h",
35    "Rectanizer.h",
36    "RectanizerPow2.cpp",
37    "RectanizerPow2.h",
38    "RectanizerSkyline.cpp",
39    "RectanizerSkyline.h",
40    "RefCntedCallback.h",
41    "ResourceKey.cpp",
42    "ResourceKey.h",
43    "SkBackingFit.cpp",
44    "SkBackingFit.h",
45    "Swizzle.cpp",
46    "Swizzle.h",
47    "SwizzlePriv.h",
48    "TiledTextureUtils.cpp",
49    "TiledTextureUtils.h",
50]
51
52split_srcs_and_hdrs(
53    name = "shared",
54    files = SHARED_FILES,
55)
56
57CORE_FILES = [
58    "ShaderErrorHandler.cpp",
59    "SkRenderEngineAbortf.h",
60]
61
62split_srcs_and_hdrs(
63    name = "core",
64    files = CORE_FILES,
65)
66
67string_flag_with_values(
68    name = "gpu_backend",
69    multiple = True,
70    values = [
71        "gl_ganesh",
72        "metal_ganesh",
73        "vulkan_ganesh",
74        "dawn_graphite",
75        "metal_graphite",
76        "vulkan_graphite",
77    ],
78)
79
80string_flag_with_values(
81    name = "with_gl_standard",
82    values = [
83        "gles_standard",
84        "gl_standard",
85        "webgl_standard",
86    ],
87)
88
89selects.config_setting_group(
90    name = "has_ganesh_backend",
91    match_any = [
92        ":gl_ganesh",
93        ":metal_ganesh",
94        ":vulkan_ganesh",
95    ],
96    visibility = ["//:__subpackages__"],
97)
98
99selects.config_setting_group(
100    name = "has_graphite_backend",
101    match_any = [
102        ":dawn_graphite",
103        ":metal_graphite",
104        ":vulkan_graphite",
105    ],
106    visibility = ["//:__subpackages__"],
107)
108
109selects.config_setting_group(
110    name = "vulkan_with_vma",
111    match_all = [
112        ":vulkan_ganesh",
113        ":use_vulkan_memory_allocator_true",
114    ],
115    visibility = ["//:__subpackages__"],
116)
117
118bool_flag(
119    # Users should use :vulkan_with_vma directly
120    name = "use_vulkan_memory_allocator",
121    default = True,
122)
123
124bool_flag(
125    name = "enable_gpu_test_utils",
126    default = False,
127)
128
129selects.config_setting_group(
130    name = "has_dawn",
131    match_any = [
132        ":dawn_graphite",
133    ],
134)
135
136selects.config_setting_group(
137    name = "has_metal",
138    match_any = [
139        ":metal_ganesh",
140        ":metal_graphite",
141    ],
142)
143
144selects.config_setting_group(
145    name = "has_vulkan",
146    match_any = [
147        ":vulkan_ganesh",
148        ":vulkan_graphite",
149    ],
150)
151
152skia_filegroup(
153    name = "srcs",
154    srcs = [
155        ":core_srcs",
156        ":shared_srcs",
157        "//src/gpu/ganesh:srcs",
158        "//src/gpu/tessellate:srcs",
159    ] + select(
160        {
161            ":has_vulkan": ["//src/gpu/vk:srcs"],
162            "@platforms//os:android": ["//src/gpu/android:shared_android_srcs"],
163            "//conditions:default": [],
164        },
165    ),
166    visibility = ["//src:__pkg__"],
167)
168
169skia_filegroup(
170    name = "objc_srcs",
171    srcs = [
172        "//src/gpu/ganesh:objc_srcs",
173        "//src/gpu/mtl:shared_objc_srcs",
174    ],
175    visibility = ["//src:__pkg__"],
176)
177
178skia_filegroup(
179    name = "private_hdrs",
180    srcs = [
181        ":core_hdrs",
182        ":shared_hdrs",
183        "//src/gpu/ganesh:private_hdrs",
184        "//src/gpu/tessellate:private_hdrs",
185    ] + select_multi(
186        {
187            ":has_vulkan": ["//src/gpu/vk:private_hdrs"],
188            ":has_metal": ["//src/gpu/mtl:private_hdrs"],
189        },
190    ),
191    visibility = ["//src:__pkg__"],
192)
193
194skia_cc_deps(
195    name = "deps",
196    visibility = ["//src:__pkg__"],
197    deps = [
198        "//src/gpu/ganesh:deps",
199    ] + select_multi(
200        {
201            ":has_vulkan": ["//src/gpu/vk:deps"],
202        },
203    ),
204)
205
206skia_cc_library(
207    name = "gpu",
208    srcs = [
209        ":core_srcs",
210        ":shared_srcs",
211        "//src/gpu/tessellate:private_hdrs",
212        "//src/gpu/tessellate:srcs",
213        "//src/utils:shader_utils_srcs",
214    ],
215    hdrs = [
216        ":core_hdrs",
217        ":shared_hdrs",
218        "//include/gpu:shared_gpu_hdrs",
219        "//src/utils:shader_utils_hdrs",
220    ],
221    visibility = [
222        "//src/gpu:__subpackages__",
223        "//src/sksl/codegen:__pkg__",
224    ],
225    deps = [
226        "//:core",
227        "//src/base",
228        "//src/core:core_priv",
229    ],
230)
231
232generate_cpp_files_for_headers(
233    name = "headers_to_compile",
234    headers = [
235        "AsyncReadTypes.h",
236        "BufferWriter.h",
237        "GpuRefCnt.h",
238        "GpuTypesPriv.h",
239        "KeyBuilder.h",
240        "MutableTextureStatePriv.h",
241        "SkRenderEngineAbortf.h",
242        "SwizzlePriv.h",
243    ],
244)
245