xref: /aosp_15_r20/external/mesa3d/src/panfrost/vulkan/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker# Copyright © 2021 Collabora Ltd.
2*61046927SAndroid Build Coastguard Worker#
3*61046927SAndroid Build Coastguard Worker# Derived from the freedreno driver which is:
4*61046927SAndroid Build Coastguard Worker# Copyright © 2017 Intel Corporation
5*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
6*61046927SAndroid Build Coastguard Worker
7*61046927SAndroid Build Coastguard Workerpanvk_entrypoints = custom_target(
8*61046927SAndroid Build Coastguard Worker  'panvk_entrypoints.[ch]',
9*61046927SAndroid Build Coastguard Worker  input : [vk_entrypoints_gen, vk_api_xml],
10*61046927SAndroid Build Coastguard Worker  output : ['panvk_entrypoints.h', 'panvk_entrypoints.c'],
11*61046927SAndroid Build Coastguard Worker  command : [
12*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak',
13*61046927SAndroid Build Coastguard Worker    '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'panvk',
14*61046927SAndroid Build Coastguard Worker    '--device-prefix', 'panvk_v6', '--device-prefix', 'panvk_v7',
15*61046927SAndroid Build Coastguard Worker    '--device-prefix', 'panvk_v9', '--device-prefix', 'panvk_v10',
16*61046927SAndroid Build Coastguard Worker    '--beta', with_vulkan_beta.to_string()
17*61046927SAndroid Build Coastguard Worker  ],
18*61046927SAndroid Build Coastguard Worker  depend_files : vk_entrypoints_gen_depend_files,
19*61046927SAndroid Build Coastguard Worker)
20*61046927SAndroid Build Coastguard Worker
21*61046927SAndroid Build Coastguard Workerlibpanvk_files = files(
22*61046927SAndroid Build Coastguard Worker  'panvk_buffer.c',
23*61046927SAndroid Build Coastguard Worker  'panvk_cmd_pool.c',
24*61046927SAndroid Build Coastguard Worker  'panvk_device_memory.c',
25*61046927SAndroid Build Coastguard Worker  'panvk_image.c',
26*61046927SAndroid Build Coastguard Worker  'panvk_instance.c',
27*61046927SAndroid Build Coastguard Worker  'panvk_mempool.c',
28*61046927SAndroid Build Coastguard Worker  'panvk_physical_device.c',
29*61046927SAndroid Build Coastguard Worker  'panvk_priv_bo.c',
30*61046927SAndroid Build Coastguard Worker  'panvk_query.c',
31*61046927SAndroid Build Coastguard Worker  'panvk_wsi.c',
32*61046927SAndroid Build Coastguard Worker)
33*61046927SAndroid Build Coastguard Workerlibpanvk_files += [sha1_h]
34*61046927SAndroid Build Coastguard Worker
35*61046927SAndroid Build Coastguard Workerpanvk_deps = []
36*61046927SAndroid Build Coastguard Workerpanvk_flags = []
37*61046927SAndroid Build Coastguard Workerpanvk_per_arch_libs = []
38*61046927SAndroid Build Coastguard Worker
39*61046927SAndroid Build Coastguard Workerbifrost_archs = [6, 7]
40*61046927SAndroid Build Coastguard Workerbifrost_inc_dir = ['bifrost']
41*61046927SAndroid Build Coastguard Workerbifrost_files = [
42*61046927SAndroid Build Coastguard Worker  'bifrost/panvk_vX_meta_desc_copy.c',
43*61046927SAndroid Build Coastguard Worker]
44*61046927SAndroid Build Coastguard Worker
45*61046927SAndroid Build Coastguard Workervalhall_archs = [9, 10]
46*61046927SAndroid Build Coastguard Workervalhall_inc_dir = ['valhall']
47*61046927SAndroid Build Coastguard Workervalhall_files = []
48*61046927SAndroid Build Coastguard Worker
49*61046927SAndroid Build Coastguard Workerjm_archs = [6, 7]
50*61046927SAndroid Build Coastguard Workerjm_inc_dir = ['jm']
51*61046927SAndroid Build Coastguard Workerjm_files = [
52*61046927SAndroid Build Coastguard Worker  'jm/panvk_vX_cmd_buffer.c',
53*61046927SAndroid Build Coastguard Worker  'jm/panvk_vX_cmd_dispatch.c',
54*61046927SAndroid Build Coastguard Worker  'jm/panvk_vX_cmd_draw.c',
55*61046927SAndroid Build Coastguard Worker  'jm/panvk_vX_cmd_event.c',
56*61046927SAndroid Build Coastguard Worker  'jm/panvk_vX_event.c',
57*61046927SAndroid Build Coastguard Worker  'jm/panvk_vX_queue.c',
58*61046927SAndroid Build Coastguard Worker]
59*61046927SAndroid Build Coastguard Worker
60*61046927SAndroid Build Coastguard Workercsf_archs = [10]
61*61046927SAndroid Build Coastguard Workercsf_inc_dir = ['csf']
62*61046927SAndroid Build Coastguard Workercsf_files = [
63*61046927SAndroid Build Coastguard Worker  'csf/panvk_vX_cmd_buffer.c',
64*61046927SAndroid Build Coastguard Worker  'csf/panvk_vX_cmd_dispatch.c',
65*61046927SAndroid Build Coastguard Worker  'csf/panvk_vX_cmd_draw.c',
66*61046927SAndroid Build Coastguard Worker  'csf/panvk_vX_cmd_event.c',
67*61046927SAndroid Build Coastguard Worker  'csf/panvk_vX_event.c',
68*61046927SAndroid Build Coastguard Worker  'csf/panvk_vX_queue.c',
69*61046927SAndroid Build Coastguard Worker]
70*61046927SAndroid Build Coastguard Worker
71*61046927SAndroid Build Coastguard Workercommon_per_arch_files = [
72*61046927SAndroid Build Coastguard Worker  panvk_entrypoints[0],
73*61046927SAndroid Build Coastguard Worker  'panvk_vX_blend.c',
74*61046927SAndroid Build Coastguard Worker  'panvk_vX_buffer_view.c',
75*61046927SAndroid Build Coastguard Worker  'panvk_vX_cmd_desc_state.c',
76*61046927SAndroid Build Coastguard Worker  'panvk_vX_cmd_meta.c',
77*61046927SAndroid Build Coastguard Worker  'panvk_vX_cmd_push_constant.c',
78*61046927SAndroid Build Coastguard Worker  'panvk_vX_descriptor_set.c',
79*61046927SAndroid Build Coastguard Worker  'panvk_vX_descriptor_set_layout.c',
80*61046927SAndroid Build Coastguard Worker  'panvk_vX_device.c',
81*61046927SAndroid Build Coastguard Worker  'panvk_vX_image_view.c',
82*61046927SAndroid Build Coastguard Worker  'panvk_vX_nir_lower_descriptors.c',
83*61046927SAndroid Build Coastguard Worker  'panvk_vX_sampler.c',
84*61046927SAndroid Build Coastguard Worker  'panvk_vX_shader.c',
85*61046927SAndroid Build Coastguard Worker]
86*61046927SAndroid Build Coastguard Worker
87*61046927SAndroid Build Coastguard Workerforeach arch : [6, 7, 10]
88*61046927SAndroid Build Coastguard Worker  per_arch_files = common_per_arch_files
89*61046927SAndroid Build Coastguard Worker  inc_panvk_per_arch = []
90*61046927SAndroid Build Coastguard Worker
91*61046927SAndroid Build Coastguard Worker  if arch in bifrost_archs
92*61046927SAndroid Build Coastguard Worker    inc_panvk_per_arch += bifrost_inc_dir
93*61046927SAndroid Build Coastguard Worker    per_arch_files += bifrost_files
94*61046927SAndroid Build Coastguard Worker  elif arch in valhall_archs
95*61046927SAndroid Build Coastguard Worker    inc_panvk_per_arch += valhall_inc_dir
96*61046927SAndroid Build Coastguard Worker    per_arch_files += valhall_files
97*61046927SAndroid Build Coastguard Worker  endif
98*61046927SAndroid Build Coastguard Worker
99*61046927SAndroid Build Coastguard Worker  if arch in jm_archs
100*61046927SAndroid Build Coastguard Worker    inc_panvk_per_arch += jm_inc_dir
101*61046927SAndroid Build Coastguard Worker    per_arch_files += jm_files
102*61046927SAndroid Build Coastguard Worker  elif arch in csf_archs
103*61046927SAndroid Build Coastguard Worker    inc_panvk_per_arch += csf_inc_dir
104*61046927SAndroid Build Coastguard Worker    per_arch_files += csf_files
105*61046927SAndroid Build Coastguard Worker  endif
106*61046927SAndroid Build Coastguard Worker
107*61046927SAndroid Build Coastguard Worker  panvk_per_arch_libs += static_library(
108*61046927SAndroid Build Coastguard Worker    'panvk_v@0@'.format(arch),
109*61046927SAndroid Build Coastguard Worker    per_arch_files,
110*61046927SAndroid Build Coastguard Worker    include_directories : [
111*61046927SAndroid Build Coastguard Worker      inc_include,
112*61046927SAndroid Build Coastguard Worker      inc_src,
113*61046927SAndroid Build Coastguard Worker      inc_panfrost,
114*61046927SAndroid Build Coastguard Worker      inc_panvk_per_arch,
115*61046927SAndroid Build Coastguard Worker    ],
116*61046927SAndroid Build Coastguard Worker    dependencies : [
117*61046927SAndroid Build Coastguard Worker      idep_nir_headers,
118*61046927SAndroid Build Coastguard Worker      idep_pan_packers,
119*61046927SAndroid Build Coastguard Worker      idep_vulkan_util_headers,
120*61046927SAndroid Build Coastguard Worker      idep_vulkan_runtime_headers,
121*61046927SAndroid Build Coastguard Worker      idep_vulkan_wsi_headers,
122*61046927SAndroid Build Coastguard Worker      idep_mesautil,
123*61046927SAndroid Build Coastguard Worker      dep_libdrm,
124*61046927SAndroid Build Coastguard Worker      dep_valgrind,
125*61046927SAndroid Build Coastguard Worker    ],
126*61046927SAndroid Build Coastguard Worker    c_args : [no_override_init_args, panvk_flags, '-DPAN_ARCH=@0@'.format(arch)],
127*61046927SAndroid Build Coastguard Worker  )
128*61046927SAndroid Build Coastguard Workerendforeach
129*61046927SAndroid Build Coastguard Worker
130*61046927SAndroid Build Coastguard Workerif with_platform_wayland
131*61046927SAndroid Build Coastguard Worker  panvk_deps += dep_wayland_client
132*61046927SAndroid Build Coastguard Worker  libpanvk_files += [wayland_drm_client_protocol_h, wayland_drm_protocol_c]
133*61046927SAndroid Build Coastguard Workerendif
134*61046927SAndroid Build Coastguard Worker
135*61046927SAndroid Build Coastguard Workerif with_platform_android
136*61046927SAndroid Build Coastguard Worker  panvk_deps += [dep_android]
137*61046927SAndroid Build Coastguard Worker  panvk_flags += '-DVK_USE_PLATFORM_ANDROID_KHR'
138*61046927SAndroid Build Coastguard Worker  libpanvk_files += files('panvk_android.c')
139*61046927SAndroid Build Coastguard Workerendif
140*61046927SAndroid Build Coastguard Worker
141*61046927SAndroid Build Coastguard Workerlibvulkan_panfrost = shared_library(
142*61046927SAndroid Build Coastguard Worker  'vulkan_panfrost',
143*61046927SAndroid Build Coastguard Worker  [libpanvk_files, panvk_entrypoints],
144*61046927SAndroid Build Coastguard Worker  include_directories : [
145*61046927SAndroid Build Coastguard Worker    inc_include,
146*61046927SAndroid Build Coastguard Worker    inc_src,
147*61046927SAndroid Build Coastguard Worker    inc_panfrost,
148*61046927SAndroid Build Coastguard Worker  ],
149*61046927SAndroid Build Coastguard Worker  link_whole : [panvk_per_arch_libs],
150*61046927SAndroid Build Coastguard Worker  link_with : [
151*61046927SAndroid Build Coastguard Worker    libpanfrost_shared,
152*61046927SAndroid Build Coastguard Worker    libpanfrost_midgard,
153*61046927SAndroid Build Coastguard Worker    libpanfrost_bifrost,
154*61046927SAndroid Build Coastguard Worker    libpanfrost_decode,
155*61046927SAndroid Build Coastguard Worker    libpanfrost_lib,
156*61046927SAndroid Build Coastguard Worker    libpanfrost_util,
157*61046927SAndroid Build Coastguard Worker  ],
158*61046927SAndroid Build Coastguard Worker  dependencies : [
159*61046927SAndroid Build Coastguard Worker    dep_dl,
160*61046927SAndroid Build Coastguard Worker    dep_elf,
161*61046927SAndroid Build Coastguard Worker    dep_libdrm,
162*61046927SAndroid Build Coastguard Worker    dep_m,
163*61046927SAndroid Build Coastguard Worker    dep_thread,
164*61046927SAndroid Build Coastguard Worker    dep_valgrind,
165*61046927SAndroid Build Coastguard Worker    idep_nir,
166*61046927SAndroid Build Coastguard Worker    idep_pan_packers,
167*61046927SAndroid Build Coastguard Worker    panvk_deps,
168*61046927SAndroid Build Coastguard Worker    idep_vulkan_util,
169*61046927SAndroid Build Coastguard Worker    idep_vulkan_runtime,
170*61046927SAndroid Build Coastguard Worker    idep_vulkan_wsi,
171*61046927SAndroid Build Coastguard Worker    idep_mesautil,
172*61046927SAndroid Build Coastguard Worker  ],
173*61046927SAndroid Build Coastguard Worker  c_args : [no_override_init_args, panvk_flags],
174*61046927SAndroid Build Coastguard Worker  link_args : [ld_args_bsymbolic, ld_args_gc_sections],
175*61046927SAndroid Build Coastguard Worker  install : true,
176*61046927SAndroid Build Coastguard Worker)
177*61046927SAndroid Build Coastguard Worker
178*61046927SAndroid Build Coastguard Workerpanfrost_icd = custom_target(
179*61046927SAndroid Build Coastguard Worker  'panfrost_icd',
180*61046927SAndroid Build Coastguard Worker  input : [vk_icd_gen, vk_api_xml],
181*61046927SAndroid Build Coastguard Worker  output : 'panfrost_icd.@[email protected]'.format(host_machine.cpu()),
182*61046927SAndroid Build Coastguard Worker  command : [
183*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT0@',
184*61046927SAndroid Build Coastguard Worker    '--api-version', '1.0', '--xml', '@INPUT1@',
185*61046927SAndroid Build Coastguard Worker    '--lib-path', join_paths(get_option('prefix'), get_option('libdir'),
186*61046927SAndroid Build Coastguard Worker                             'libvulkan_panfrost.so'),
187*61046927SAndroid Build Coastguard Worker    '--out', '@OUTPUT@',
188*61046927SAndroid Build Coastguard Worker  ],
189*61046927SAndroid Build Coastguard Worker  build_by_default : true,
190*61046927SAndroid Build Coastguard Worker  install_dir : with_vulkan_icd_dir,
191*61046927SAndroid Build Coastguard Worker  install_tag : 'runtime',
192*61046927SAndroid Build Coastguard Worker  install : true,
193*61046927SAndroid Build Coastguard Worker)
194*61046927SAndroid Build Coastguard Worker
195*61046927SAndroid Build Coastguard Worker_dev_icdname = 'panfrost_devenv_icd.@[email protected]'.format(host_machine.cpu())
196*61046927SAndroid Build Coastguard Worker_dev_icd = custom_target(
197*61046927SAndroid Build Coastguard Worker  'panfrost_devenv_icd',
198*61046927SAndroid Build Coastguard Worker  input : [vk_icd_gen, vk_api_xml],
199*61046927SAndroid Build Coastguard Worker  output : _dev_icdname,
200*61046927SAndroid Build Coastguard Worker  command : [
201*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT0@',
202*61046927SAndroid Build Coastguard Worker    '--api-version', '1.0', '--xml', '@INPUT1@',
203*61046927SAndroid Build Coastguard Worker    '--lib-path', meson.current_build_dir() / 'libvulkan_panfrost.so',
204*61046927SAndroid Build Coastguard Worker    '--out', '@OUTPUT@',
205*61046927SAndroid Build Coastguard Worker  ],
206*61046927SAndroid Build Coastguard Worker  build_by_default : true,
207*61046927SAndroid Build Coastguard Worker)
208*61046927SAndroid Build Coastguard Worker
209*61046927SAndroid Build Coastguard Workerdevenv.append('VK_DRIVER_FILES', _dev_icd.full_path())
210*61046927SAndroid Build Coastguard Worker# Deprecated: replaced by VK_DRIVER_FILES above
211*61046927SAndroid Build Coastguard Workerdevenv.append('VK_ICD_FILENAMES', _dev_icd.full_path())
212