xref: /aosp_15_r20/external/executorch/backends/vulkan/targets.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Workerload("@fbcode//target_determinator/macros:ci.bzl", "ci")
2*523fa7a6SAndroid Build Coastguard Workerload("@fbcode_macros//build_defs:native_rules.bzl", "buck_genrule")
3*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
4*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//tools/build_defs:platform_defs.bzl", "ANDROID", "CXX", "FBCODE")
5*523fa7a6SAndroid Build Coastguard Worker
6*523fa7a6SAndroid Build Coastguard Worker
7*523fa7a6SAndroid Build Coastguard Workerdef get_vulkan_compiler_flags():
8*523fa7a6SAndroid Build Coastguard Worker    return ["-Wno-missing-prototypes", "-Wno-global-constructors"]
9*523fa7a6SAndroid Build Coastguard Worker
10*523fa7a6SAndroid Build Coastguard Workerdef get_labels(no_volk):
11*523fa7a6SAndroid Build Coastguard Worker    if no_volk:
12*523fa7a6SAndroid Build Coastguard Worker        return ci.labels(ci.linux(ci.mode("fbsource//arvr/mode/android/mac/dbg")))
13*523fa7a6SAndroid Build Coastguard Worker    else:
14*523fa7a6SAndroid Build Coastguard Worker        return []
15*523fa7a6SAndroid Build Coastguard Worker
16*523fa7a6SAndroid Build Coastguard Workerdef get_platforms(no_volk):
17*523fa7a6SAndroid Build Coastguard Worker    if no_volk:
18*523fa7a6SAndroid Build Coastguard Worker        return [ANDROID]
19*523fa7a6SAndroid Build Coastguard Worker    else:
20*523fa7a6SAndroid Build Coastguard Worker        return [ANDROID, CXX]
21*523fa7a6SAndroid Build Coastguard Worker
22*523fa7a6SAndroid Build Coastguard Workerdef vulkan_spv_shader_lib(name, spv_filegroups, is_fbcode = False, no_volk = False):
23*523fa7a6SAndroid Build Coastguard Worker    gen_vulkan_spv_target = "//xplat/executorch/backends/vulkan:gen_vulkan_spv_bin"
24*523fa7a6SAndroid Build Coastguard Worker    glslc_path = "//xplat/caffe2/fb/vulkan/dotslash:glslc"
25*523fa7a6SAndroid Build Coastguard Worker
26*523fa7a6SAndroid Build Coastguard Worker    if is_fbcode:
27*523fa7a6SAndroid Build Coastguard Worker        gen_vulkan_spv_target = "//executorch/backends/vulkan:gen_vulkan_spv_bin"
28*523fa7a6SAndroid Build Coastguard Worker        glslc_path = "//caffe2/fb/vulkan/tools:glslc"
29*523fa7a6SAndroid Build Coastguard Worker
30*523fa7a6SAndroid Build Coastguard Worker    glsl_paths = []
31*523fa7a6SAndroid Build Coastguard Worker
32*523fa7a6SAndroid Build Coastguard Worker    # TODO(ssjia): remove the need for subpath once subdir_glob is enabled in OSS
33*523fa7a6SAndroid Build Coastguard Worker    for target, subpath in spv_filegroups.items():
34*523fa7a6SAndroid Build Coastguard Worker        glsl_paths.append("$(location {})/{}".format(target, subpath))
35*523fa7a6SAndroid Build Coastguard Worker
36*523fa7a6SAndroid Build Coastguard Worker    genrule_cmd = (
37*523fa7a6SAndroid Build Coastguard Worker        "$(exe {}) ".format(gen_vulkan_spv_target) +
38*523fa7a6SAndroid Build Coastguard Worker        "--glsl-paths {} ".format(" ".join(glsl_paths)) +
39*523fa7a6SAndroid Build Coastguard Worker        "--output-path $OUT " +
40*523fa7a6SAndroid Build Coastguard Worker        "--glslc-path=$(exe {}) ".format(glslc_path) +
41*523fa7a6SAndroid Build Coastguard Worker        "--tmp-dir-path=$OUT " +
42*523fa7a6SAndroid Build Coastguard Worker        select({
43*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": "",
44*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//os:android": "--optimize",
45*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//os:linux": "--replace-u16vecn",
46*523fa7a6SAndroid Build Coastguard Worker        })
47*523fa7a6SAndroid Build Coastguard Worker    )
48*523fa7a6SAndroid Build Coastguard Worker
49*523fa7a6SAndroid Build Coastguard Worker    genrule_name = "gen_{}_cpp".format(name)
50*523fa7a6SAndroid Build Coastguard Worker    buck_genrule(
51*523fa7a6SAndroid Build Coastguard Worker        name = genrule_name,
52*523fa7a6SAndroid Build Coastguard Worker        outs = {
53*523fa7a6SAndroid Build Coastguard Worker            "{}.cpp".format(name): ["spv.cpp"],
54*523fa7a6SAndroid Build Coastguard Worker        },
55*523fa7a6SAndroid Build Coastguard Worker        cmd = genrule_cmd,
56*523fa7a6SAndroid Build Coastguard Worker        default_outs = ["."],
57*523fa7a6SAndroid Build Coastguard Worker        labels = ["uses_dotslash"],
58*523fa7a6SAndroid Build Coastguard Worker    )
59*523fa7a6SAndroid Build Coastguard Worker
60*523fa7a6SAndroid Build Coastguard Worker    suffix = "_no_volk" if no_volk else ""
61*523fa7a6SAndroid Build Coastguard Worker    runtime.cxx_library(
62*523fa7a6SAndroid Build Coastguard Worker        name = name,
63*523fa7a6SAndroid Build Coastguard Worker        srcs = [
64*523fa7a6SAndroid Build Coastguard Worker            ":{}[{}.cpp]".format(genrule_name, name),
65*523fa7a6SAndroid Build Coastguard Worker        ],
66*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = get_vulkan_compiler_flags(),
67*523fa7a6SAndroid Build Coastguard Worker        labels = get_labels(no_volk),
68*523fa7a6SAndroid Build Coastguard Worker        platforms = get_platforms(no_volk),
69*523fa7a6SAndroid Build Coastguard Worker        define_static_target = True,
70*523fa7a6SAndroid Build Coastguard Worker        # Static initialization is used to register shaders to the global shader registry,
71*523fa7a6SAndroid Build Coastguard Worker        # therefore link_whole must be True to make sure unused symbols are not discarded.
72*523fa7a6SAndroid Build Coastguard Worker        # @lint-ignore BUCKLINT: Avoid `link_whole=True`
73*523fa7a6SAndroid Build Coastguard Worker        link_whole = True,
74*523fa7a6SAndroid Build Coastguard Worker        # Define a soname that can be used for dynamic loading in Java, Python, etc.
75*523fa7a6SAndroid Build Coastguard Worker        soname = "lib{}.$(ext)".format(name),
76*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
77*523fa7a6SAndroid Build Coastguard Worker            "//executorch/backends/vulkan:vulkan_compute_api{}".format(suffix),
78*523fa7a6SAndroid Build Coastguard Worker        ],
79*523fa7a6SAndroid Build Coastguard Worker    )
80*523fa7a6SAndroid Build Coastguard Worker
81*523fa7a6SAndroid Build Coastguard Workerdef define_common_targets(is_fbcode = False):
82*523fa7a6SAndroid Build Coastguard Worker    runtime.python_library(
83*523fa7a6SAndroid Build Coastguard Worker        name = "gen_vulkan_spv_lib",
84*523fa7a6SAndroid Build Coastguard Worker        srcs = [
85*523fa7a6SAndroid Build Coastguard Worker            "runtime/gen_vulkan_spv.py",
86*523fa7a6SAndroid Build Coastguard Worker        ],
87*523fa7a6SAndroid Build Coastguard Worker        base_module = "",
88*523fa7a6SAndroid Build Coastguard Worker        external_deps = ["torchgen"],
89*523fa7a6SAndroid Build Coastguard Worker    )
90*523fa7a6SAndroid Build Coastguard Worker
91*523fa7a6SAndroid Build Coastguard Worker    runtime.python_binary(
92*523fa7a6SAndroid Build Coastguard Worker        name = "gen_vulkan_spv_bin",
93*523fa7a6SAndroid Build Coastguard Worker        main_module = "runtime.gen_vulkan_spv",
94*523fa7a6SAndroid Build Coastguard Worker        visibility = [
95*523fa7a6SAndroid Build Coastguard Worker            "//executorch/backends/vulkan/...",
96*523fa7a6SAndroid Build Coastguard Worker            "@EXECUTORCH_CLIENTS",
97*523fa7a6SAndroid Build Coastguard Worker        ],
98*523fa7a6SAndroid Build Coastguard Worker        deps = [
99*523fa7a6SAndroid Build Coastguard Worker            ":gen_vulkan_spv_lib",
100*523fa7a6SAndroid Build Coastguard Worker        ],
101*523fa7a6SAndroid Build Coastguard Worker    )
102*523fa7a6SAndroid Build Coastguard Worker
103*523fa7a6SAndroid Build Coastguard Worker    runtime.filegroup(
104*523fa7a6SAndroid Build Coastguard Worker        name = "vulkan_graph_runtime_shaders",
105*523fa7a6SAndroid Build Coastguard Worker        srcs = native.glob([
106*523fa7a6SAndroid Build Coastguard Worker            "runtime/graph/ops/glsl/*",
107*523fa7a6SAndroid Build Coastguard Worker        ]),
108*523fa7a6SAndroid Build Coastguard Worker    )
109*523fa7a6SAndroid Build Coastguard Worker
110*523fa7a6SAndroid Build Coastguard Worker    for no_volk in [True, False]:
111*523fa7a6SAndroid Build Coastguard Worker        # No volk builds only available on xplat to build for Android
112*523fa7a6SAndroid Build Coastguard Worker        if no_volk and is_fbcode:
113*523fa7a6SAndroid Build Coastguard Worker            continue
114*523fa7a6SAndroid Build Coastguard Worker
115*523fa7a6SAndroid Build Coastguard Worker        suffix = "_no_volk" if no_volk else ""
116*523fa7a6SAndroid Build Coastguard Worker
117*523fa7a6SAndroid Build Coastguard Worker        VK_API_PREPROCESSOR_FLAGS = []
118*523fa7a6SAndroid Build Coastguard Worker        VK_API_DEPS = [
119*523fa7a6SAndroid Build Coastguard Worker            "fbsource//third-party/VulkanMemoryAllocator/3.0.1:VulkanMemoryAllocator_xplat",
120*523fa7a6SAndroid Build Coastguard Worker        ]
121*523fa7a6SAndroid Build Coastguard Worker
122*523fa7a6SAndroid Build Coastguard Worker        default_deps = []
123*523fa7a6SAndroid Build Coastguard Worker        android_deps = ["fbsource//third-party/toolchains:android"]
124*523fa7a6SAndroid Build Coastguard Worker        default_flags = []
125*523fa7a6SAndroid Build Coastguard Worker        android_flags = []
126*523fa7a6SAndroid Build Coastguard Worker
127*523fa7a6SAndroid Build Coastguard Worker        if no_volk:
128*523fa7a6SAndroid Build Coastguard Worker            android_deps.append("fbsource//third-party/toolchains:vulkan")
129*523fa7a6SAndroid Build Coastguard Worker        else:
130*523fa7a6SAndroid Build Coastguard Worker            for deps in [default_deps, android_deps]:
131*523fa7a6SAndroid Build Coastguard Worker                deps.append("fbsource//third-party/volk:volk")
132*523fa7a6SAndroid Build Coastguard Worker            for flags in [default_flags, android_flags]:
133*523fa7a6SAndroid Build Coastguard Worker                flags.append("-DUSE_VULKAN_WRAPPER")
134*523fa7a6SAndroid Build Coastguard Worker                flags.append("-DUSE_VULKAN_VOLK")
135*523fa7a6SAndroid Build Coastguard Worker            android_flags.append("-DVK_ANDROID_external_memory_android_hardware_buffer")
136*523fa7a6SAndroid Build Coastguard Worker
137*523fa7a6SAndroid Build Coastguard Worker        if is_fbcode:
138*523fa7a6SAndroid Build Coastguard Worker            VK_API_DEPS += [
139*523fa7a6SAndroid Build Coastguard Worker                "fbsource//third-party/swiftshader:swiftshader_vk_headers",
140*523fa7a6SAndroid Build Coastguard Worker                "fbsource//third-party/swiftshader/lib/linux-x64:libvk_swiftshader_fbcode",
141*523fa7a6SAndroid Build Coastguard Worker                "fbsource//third-party/swiftshader/lib/linux-x64:libvk_swiftshader_so",
142*523fa7a6SAndroid Build Coastguard Worker            ]
143*523fa7a6SAndroid Build Coastguard Worker        else:
144*523fa7a6SAndroid Build Coastguard Worker            VK_API_DEPS += select({
145*523fa7a6SAndroid Build Coastguard Worker                "DEFAULT": default_deps,
146*523fa7a6SAndroid Build Coastguard Worker                "ovr_config//os:android": android_deps,
147*523fa7a6SAndroid Build Coastguard Worker                "ovr_config//os:macos": [
148*523fa7a6SAndroid Build Coastguard Worker                    "//third-party/khronos:moltenVK_static"
149*523fa7a6SAndroid Build Coastguard Worker                ],
150*523fa7a6SAndroid Build Coastguard Worker            })
151*523fa7a6SAndroid Build Coastguard Worker            VK_API_PREPROCESSOR_FLAGS += select({
152*523fa7a6SAndroid Build Coastguard Worker                "DEFAULT": default_flags,
153*523fa7a6SAndroid Build Coastguard Worker                "ovr_config//os:android": android_flags,
154*523fa7a6SAndroid Build Coastguard Worker                "ovr_config//os:macos": []
155*523fa7a6SAndroid Build Coastguard Worker            })
156*523fa7a6SAndroid Build Coastguard Worker
157*523fa7a6SAndroid Build Coastguard Worker        runtime.cxx_library(
158*523fa7a6SAndroid Build Coastguard Worker            name = "vulkan_compute_api{}".format(suffix),
159*523fa7a6SAndroid Build Coastguard Worker            compiler_flags = get_vulkan_compiler_flags(),
160*523fa7a6SAndroid Build Coastguard Worker            srcs = native.glob([
161*523fa7a6SAndroid Build Coastguard Worker                "runtime/api/**/*.cpp",
162*523fa7a6SAndroid Build Coastguard Worker                "runtime/utils/**/*.cpp",
163*523fa7a6SAndroid Build Coastguard Worker                "runtime/vk_api/**/*.cpp",
164*523fa7a6SAndroid Build Coastguard Worker            ]),
165*523fa7a6SAndroid Build Coastguard Worker            exported_headers = native.glob([
166*523fa7a6SAndroid Build Coastguard Worker                "runtime/api/**/*.h",
167*523fa7a6SAndroid Build Coastguard Worker                "runtime/utils/**/*.h",
168*523fa7a6SAndroid Build Coastguard Worker                "runtime/vk_api/**/*.h",
169*523fa7a6SAndroid Build Coastguard Worker            ]),
170*523fa7a6SAndroid Build Coastguard Worker            labels = get_labels(no_volk),
171*523fa7a6SAndroid Build Coastguard Worker            platforms = get_platforms(no_volk),
172*523fa7a6SAndroid Build Coastguard Worker            visibility = [
173*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/vulkan/...",
174*523fa7a6SAndroid Build Coastguard Worker                "@EXECUTORCH_CLIENTS",
175*523fa7a6SAndroid Build Coastguard Worker            ],
176*523fa7a6SAndroid Build Coastguard Worker            exported_preprocessor_flags = VK_API_PREPROCESSOR_FLAGS,
177*523fa7a6SAndroid Build Coastguard Worker            exported_deps = VK_API_DEPS,
178*523fa7a6SAndroid Build Coastguard Worker        )
179*523fa7a6SAndroid Build Coastguard Worker
180*523fa7a6SAndroid Build Coastguard Worker        runtime.cxx_library(
181*523fa7a6SAndroid Build Coastguard Worker            name = "vulkan_graph_runtime{}".format(suffix),
182*523fa7a6SAndroid Build Coastguard Worker            srcs = native.glob([
183*523fa7a6SAndroid Build Coastguard Worker                "runtime/graph/**/*.cpp",
184*523fa7a6SAndroid Build Coastguard Worker            ]),
185*523fa7a6SAndroid Build Coastguard Worker            compiler_flags = get_vulkan_compiler_flags(),
186*523fa7a6SAndroid Build Coastguard Worker            exported_headers = native.glob([
187*523fa7a6SAndroid Build Coastguard Worker                "runtime/graph/**/*.h",
188*523fa7a6SAndroid Build Coastguard Worker            ]),
189*523fa7a6SAndroid Build Coastguard Worker            labels = get_labels(no_volk),
190*523fa7a6SAndroid Build Coastguard Worker            platforms = get_platforms(no_volk),
191*523fa7a6SAndroid Build Coastguard Worker            visibility = [
192*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/...",
193*523fa7a6SAndroid Build Coastguard Worker                "//executorch/extension/pybindings/...",
194*523fa7a6SAndroid Build Coastguard Worker                "//executorch/test/...",
195*523fa7a6SAndroid Build Coastguard Worker                "@EXECUTORCH_CLIENTS",
196*523fa7a6SAndroid Build Coastguard Worker            ],
197*523fa7a6SAndroid Build Coastguard Worker            exported_deps = [
198*523fa7a6SAndroid Build Coastguard Worker                ":vulkan_graph_runtime_shaderlib{}".format(suffix),
199*523fa7a6SAndroid Build Coastguard Worker            ],
200*523fa7a6SAndroid Build Coastguard Worker            define_static_target = True,
201*523fa7a6SAndroid Build Coastguard Worker            # Static initialization is used to register operators to the global operator registry,
202*523fa7a6SAndroid Build Coastguard Worker            # therefore link_whole must be True to make sure unused symbols are not discarded.
203*523fa7a6SAndroid Build Coastguard Worker            # @lint-ignore BUCKLINT: Avoid `link_whole=True`
204*523fa7a6SAndroid Build Coastguard Worker            link_whole = True,
205*523fa7a6SAndroid Build Coastguard Worker            # Define an soname that can be used for dynamic loading in Java, Python, etc.
206*523fa7a6SAndroid Build Coastguard Worker            soname = "libvulkan_graph_runtime.$(ext)",
207*523fa7a6SAndroid Build Coastguard Worker        )
208*523fa7a6SAndroid Build Coastguard Worker
209*523fa7a6SAndroid Build Coastguard Worker        vulkan_spv_shader_lib(
210*523fa7a6SAndroid Build Coastguard Worker            name = "vulkan_graph_runtime_shaderlib{}".format(suffix),
211*523fa7a6SAndroid Build Coastguard Worker            spv_filegroups = {
212*523fa7a6SAndroid Build Coastguard Worker                ":vulkan_graph_runtime_shaders": "runtime/graph/ops/glsl",
213*523fa7a6SAndroid Build Coastguard Worker            },
214*523fa7a6SAndroid Build Coastguard Worker            is_fbcode = is_fbcode,
215*523fa7a6SAndroid Build Coastguard Worker            no_volk = no_volk,
216*523fa7a6SAndroid Build Coastguard Worker        )
217*523fa7a6SAndroid Build Coastguard Worker
218*523fa7a6SAndroid Build Coastguard Worker        runtime.cxx_library(
219*523fa7a6SAndroid Build Coastguard Worker            name = "vulkan_backend_lib{}".format(suffix),
220*523fa7a6SAndroid Build Coastguard Worker            srcs = native.glob([
221*523fa7a6SAndroid Build Coastguard Worker                "runtime/*.cpp",
222*523fa7a6SAndroid Build Coastguard Worker            ]),
223*523fa7a6SAndroid Build Coastguard Worker            compiler_flags = get_vulkan_compiler_flags(),
224*523fa7a6SAndroid Build Coastguard Worker            headers = native.glob([
225*523fa7a6SAndroid Build Coastguard Worker                "runtime/*.h",
226*523fa7a6SAndroid Build Coastguard Worker            ]),
227*523fa7a6SAndroid Build Coastguard Worker            labels = get_labels(no_volk),
228*523fa7a6SAndroid Build Coastguard Worker            platforms = get_platforms(no_volk),
229*523fa7a6SAndroid Build Coastguard Worker            visibility = [
230*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/...",
231*523fa7a6SAndroid Build Coastguard Worker                "//executorch/extension/pybindings/...",
232*523fa7a6SAndroid Build Coastguard Worker                "//executorch/test/...",
233*523fa7a6SAndroid Build Coastguard Worker                "@EXECUTORCH_CLIENTS",
234*523fa7a6SAndroid Build Coastguard Worker            ],
235*523fa7a6SAndroid Build Coastguard Worker            deps = [
236*523fa7a6SAndroid Build Coastguard Worker                ":vulkan_graph_runtime{}".format(suffix),
237*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/vulkan/serialization:vk_delegate_schema",
238*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/core:event_tracer",
239*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/backend:interface",
240*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/core/exec_aten/util:tensor_util",
241*523fa7a6SAndroid Build Coastguard Worker            ],
242*523fa7a6SAndroid Build Coastguard Worker            define_static_target = True,
243*523fa7a6SAndroid Build Coastguard Worker            # VulkanBackend.cpp needs to compile with executor as whole
244*523fa7a6SAndroid Build Coastguard Worker            # @lint-ignore BUCKLINT: Avoid `link_whole=True` (https://fburl.com/avoid-link-whole)
245*523fa7a6SAndroid Build Coastguard Worker            link_whole = True,
246*523fa7a6SAndroid Build Coastguard Worker        )
247*523fa7a6SAndroid Build Coastguard Worker
248*523fa7a6SAndroid Build Coastguard Worker    ##
249*523fa7a6SAndroid Build Coastguard Worker    ## AOT targets
250*523fa7a6SAndroid Build Coastguard Worker    ##
251*523fa7a6SAndroid Build Coastguard Worker    if is_fbcode:
252*523fa7a6SAndroid Build Coastguard Worker        runtime.python_library(
253*523fa7a6SAndroid Build Coastguard Worker            name = "utils_lib",
254*523fa7a6SAndroid Build Coastguard Worker            srcs = [
255*523fa7a6SAndroid Build Coastguard Worker                "utils.py",
256*523fa7a6SAndroid Build Coastguard Worker            ],
257*523fa7a6SAndroid Build Coastguard Worker            visibility = [
258*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/vulkan/...",
259*523fa7a6SAndroid Build Coastguard Worker            ],
260*523fa7a6SAndroid Build Coastguard Worker            deps = [
261*523fa7a6SAndroid Build Coastguard Worker                "//caffe2:torch",
262*523fa7a6SAndroid Build Coastguard Worker                "//executorch/exir:tensor",
263*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/vulkan/serialization:lib",
264*523fa7a6SAndroid Build Coastguard Worker            ]
265*523fa7a6SAndroid Build Coastguard Worker        )
266*523fa7a6SAndroid Build Coastguard Worker
267*523fa7a6SAndroid Build Coastguard Worker        runtime.python_library(
268*523fa7a6SAndroid Build Coastguard Worker            name = "custom_ops_lib",
269*523fa7a6SAndroid Build Coastguard Worker            srcs = [
270*523fa7a6SAndroid Build Coastguard Worker                "custom_ops_lib.py"
271*523fa7a6SAndroid Build Coastguard Worker            ],
272*523fa7a6SAndroid Build Coastguard Worker            visibility = [
273*523fa7a6SAndroid Build Coastguard Worker                "//executorch/...",
274*523fa7a6SAndroid Build Coastguard Worker                "//executorch/vulkan/...",
275*523fa7a6SAndroid Build Coastguard Worker                "@EXECUTORCH_CLIENTS",
276*523fa7a6SAndroid Build Coastguard Worker            ],
277*523fa7a6SAndroid Build Coastguard Worker            deps = [
278*523fa7a6SAndroid Build Coastguard Worker                "//caffe2:torch",
279*523fa7a6SAndroid Build Coastguard Worker            ]
280*523fa7a6SAndroid Build Coastguard Worker        )
281*523fa7a6SAndroid Build Coastguard Worker
282*523fa7a6SAndroid Build Coastguard Worker        runtime.python_library(
283*523fa7a6SAndroid Build Coastguard Worker            name = "op_registry",
284*523fa7a6SAndroid Build Coastguard Worker            srcs = [
285*523fa7a6SAndroid Build Coastguard Worker                "op_registry.py",
286*523fa7a6SAndroid Build Coastguard Worker            ],
287*523fa7a6SAndroid Build Coastguard Worker            visibility = [
288*523fa7a6SAndroid Build Coastguard Worker                "//executorch/...",
289*523fa7a6SAndroid Build Coastguard Worker                "//executorch/vulkan/...",
290*523fa7a6SAndroid Build Coastguard Worker                "@EXECUTORCH_CLIENTS",
291*523fa7a6SAndroid Build Coastguard Worker            ],
292*523fa7a6SAndroid Build Coastguard Worker            deps = [
293*523fa7a6SAndroid Build Coastguard Worker                ":custom_ops_lib",
294*523fa7a6SAndroid Build Coastguard Worker                ":utils_lib",
295*523fa7a6SAndroid Build Coastguard Worker                "//caffe2:torch",
296*523fa7a6SAndroid Build Coastguard Worker                "//executorch/exir/dialects:lib",
297*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/vulkan/serialization:lib",
298*523fa7a6SAndroid Build Coastguard Worker            ]
299*523fa7a6SAndroid Build Coastguard Worker        )
300*523fa7a6SAndroid Build Coastguard Worker
301*523fa7a6SAndroid Build Coastguard Worker        runtime.python_library(
302*523fa7a6SAndroid Build Coastguard Worker            name = "vulkan_preprocess",
303*523fa7a6SAndroid Build Coastguard Worker            srcs = [
304*523fa7a6SAndroid Build Coastguard Worker                "vulkan_preprocess.py",
305*523fa7a6SAndroid Build Coastguard Worker            ],
306*523fa7a6SAndroid Build Coastguard Worker            visibility = [
307*523fa7a6SAndroid Build Coastguard Worker                "//executorch/...",
308*523fa7a6SAndroid Build Coastguard Worker                "//executorch/vulkan/...",
309*523fa7a6SAndroid Build Coastguard Worker                "@EXECUTORCH_CLIENTS",
310*523fa7a6SAndroid Build Coastguard Worker            ],
311*523fa7a6SAndroid Build Coastguard Worker            deps = [
312*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/transforms:addmm_mm_to_linear",
313*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/transforms:fuse_batch_norm_with_conv",
314*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/transforms:fuse_conv_with_clamp",
315*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/transforms:fuse_dequant_linear",
316*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/transforms:fuse_view_copy",
317*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/transforms:remove_clone_ops",
318*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/vulkan/_passes:vulkan_passes",
319*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/vulkan/serialization:lib",
320*523fa7a6SAndroid Build Coastguard Worker                "//executorch/exir/backend:backend_details",
321*523fa7a6SAndroid Build Coastguard Worker            ],
322*523fa7a6SAndroid Build Coastguard Worker        )
323