1# Copyright © 2021 Collabora Ltd. 2# 3# Derived from the freedreno driver which is: 4# Copyright © 2017 Intel Corporation 5# SPDX-License-Identifier: MIT 6 7panvk_entrypoints = custom_target( 8 'panvk_entrypoints.[ch]', 9 input : [vk_entrypoints_gen, vk_api_xml], 10 output : ['panvk_entrypoints.h', 'panvk_entrypoints.c'], 11 command : [ 12 prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak', 13 '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'panvk', 14 '--device-prefix', 'panvk_v6', '--device-prefix', 'panvk_v7', 15 '--device-prefix', 'panvk_v9', '--device-prefix', 'panvk_v10', 16 '--beta', with_vulkan_beta.to_string() 17 ], 18 depend_files : vk_entrypoints_gen_depend_files, 19) 20 21panvk_tracepoints = custom_target( 22 'panvk_tracepoints.[ch]', 23 input: 'panvk_tracepoints.py', 24 output: ['panvk_tracepoints.h', 25 'panvk_tracepoints_perfetto.h', 26 'panvk_tracepoints.c'], 27 command: [ 28 prog_python, '@INPUT@', 29 '--import-path', join_paths(dir_source_root, 'src/util/perf/'), 30 '--utrace-hdr', '@OUTPUT0@', 31 '--perfetto-hdr', '@OUTPUT1@', 32 '--utrace-src', '@OUTPUT2@', 33 ], 34 depend_files: u_trace_py, 35) 36 37libpanvk_files = files( 38 'panvk_buffer.c', 39 'panvk_cmd_pool.c', 40 'panvk_device_memory.c', 41 'panvk_image.c', 42 'panvk_instance.c', 43 'panvk_mempool.c', 44 'panvk_physical_device.c', 45 'panvk_priv_bo.c', 46 'panvk_utrace.c', 47 'panvk_wsi.c', 48) 49libpanvk_files += [sha1_h] 50 51panvk_deps = [] 52panvk_flags = [] 53panvk_per_arch_libs = [] 54 55bifrost_archs = [6, 7] 56bifrost_inc_dir = ['bifrost'] 57bifrost_files = [ 58 'bifrost/panvk_vX_meta_desc_copy.c', 59] 60 61valhall_archs = [9, 10] 62valhall_inc_dir = ['valhall'] 63valhall_files = [] 64 65jm_archs = [6, 7] 66jm_inc_dir = ['jm'] 67jm_files = [ 68 'jm/panvk_vX_cmd_buffer.c', 69 'jm/panvk_vX_cmd_dispatch.c', 70 'jm/panvk_vX_cmd_draw.c', 71 'jm/panvk_vX_cmd_event.c', 72 'jm/panvk_vX_cmd_query.c', 73 'jm/panvk_vX_event.c', 74 'jm/panvk_vX_queue.c', 75] 76 77csf_archs = [10] 78csf_inc_dir = ['csf'] 79csf_files = [ 80 'csf/panvk_vX_cmd_buffer.c', 81 'csf/panvk_vX_cmd_dispatch.c', 82 'csf/panvk_vX_cmd_draw.c', 83 'csf/panvk_vX_cmd_event.c', 84 'csf/panvk_vX_cmd_query.c', 85 'csf/panvk_vX_device.c', 86 'csf/panvk_vX_event.c', 87 'csf/panvk_vX_exception_handler.c', 88 'csf/panvk_vX_queue.c', 89 'csf/panvk_vX_utrace.c', 90] 91 92common_per_arch_files = [ 93 panvk_entrypoints[0], 94 panvk_tracepoints[0], 95 'panvk_vX_blend.c', 96 'panvk_vX_buffer_view.c', 97 'panvk_vX_cmd_fb_preload.c', 98 'panvk_vX_cmd_desc_state.c', 99 'panvk_vX_cmd_dispatch.c', 100 'panvk_vX_cmd_draw.c', 101 'panvk_vX_cmd_meta.c', 102 'panvk_vX_cmd_push_constant.c', 103 'panvk_vX_descriptor_set.c', 104 'panvk_vX_descriptor_set_layout.c', 105 'panvk_vX_device.c', 106 'panvk_vX_query_pool.c', 107 'panvk_vX_image_view.c', 108 'panvk_vX_nir_lower_descriptors.c', 109 'panvk_vX_sampler.c', 110 'panvk_vX_shader.c', 111] 112 113foreach arch : [6, 7, 10] 114 per_arch_files = common_per_arch_files 115 inc_panvk_per_arch = [] 116 117 if arch in bifrost_archs 118 inc_panvk_per_arch += bifrost_inc_dir 119 per_arch_files += bifrost_files 120 elif arch in valhall_archs 121 inc_panvk_per_arch += valhall_inc_dir 122 per_arch_files += valhall_files 123 endif 124 125 if arch in jm_archs 126 inc_panvk_per_arch += jm_inc_dir 127 per_arch_files += jm_files 128 elif arch in csf_archs 129 inc_panvk_per_arch += csf_inc_dir 130 per_arch_files += csf_files 131 endif 132 133 panvk_per_arch_libs += static_library( 134 'panvk_v@0@'.format(arch), 135 per_arch_files, 136 include_directories : [ 137 inc_include, 138 inc_src, 139 inc_panfrost, 140 inc_panvk_per_arch, 141 ], 142 dependencies : [ 143 idep_nir_headers, 144 idep_pan_packers, 145 idep_vulkan_util_headers, 146 idep_vulkan_runtime_headers, 147 idep_vulkan_wsi_headers, 148 idep_mesautil, 149 dep_libdrm, 150 dep_valgrind, 151 ], 152 c_args : [no_override_init_args, panvk_flags, '-DPAN_ARCH=@0@'.format(arch)], 153 ) 154endforeach 155 156if with_perfetto 157 panvk_deps += dep_perfetto 158 libpanvk_files += ['panvk_utrace_perfetto.cc'] 159endif 160 161if with_platform_wayland 162 panvk_deps += dep_wayland_client 163 libpanvk_files += [wayland_drm_client_protocol_h, wayland_drm_protocol_c] 164endif 165 166if with_platform_android 167 panvk_deps += [dep_android] 168 panvk_flags += '-DVK_USE_PLATFORM_ANDROID_KHR' 169 libpanvk_files += files('panvk_android.c') 170endif 171 172libvulkan_panfrost = shared_library( 173 'vulkan_panfrost', 174 [libpanvk_files, panvk_entrypoints, panvk_tracepoints], 175 include_directories : [ 176 inc_include, 177 inc_src, 178 inc_panfrost, 179 ], 180 link_whole : [panvk_per_arch_libs], 181 link_with : [ 182 libpanfrost_shared, 183 libpanfrost_midgard, 184 libpanfrost_bifrost, 185 libpanfrost_decode, 186 libpanfrost_lib, 187 libpanfrost_util, 188 ], 189 dependencies : [ 190 dep_dl, 191 dep_elf, 192 dep_libdrm, 193 dep_m, 194 dep_thread, 195 dep_valgrind, 196 idep_nir, 197 idep_pan_packers, 198 panvk_deps, 199 idep_vulkan_util, 200 idep_vulkan_runtime, 201 idep_vulkan_wsi, 202 idep_mesautil, 203 ], 204 c_args : [no_override_init_args, panvk_flags], 205 link_args : [ld_args_bsymbolic, ld_args_gc_sections, ld_args_build_id], 206 install : true, 207) 208 209panfrost_icd = custom_target( 210 'panfrost_icd', 211 input : [vk_icd_gen, vk_api_xml], 212 output : 'panfrost_icd.@0@.json'.format(host_machine.cpu()), 213 command : [ 214 prog_python, '@INPUT0@', 215 '--api-version', '1.4', '--xml', '@INPUT1@', 216 '--lib-path', join_paths(get_option('prefix'), get_option('libdir'), 217 'libvulkan_panfrost.so'), 218 '--out', '@OUTPUT@', 219 ], 220 build_by_default : true, 221 install_dir : with_vulkan_icd_dir, 222 install_tag : 'runtime', 223 install : true, 224) 225 226_dev_icdname = 'panfrost_devenv_icd.@0@.json'.format(host_machine.cpu()) 227_dev_icd = custom_target( 228 'panfrost_devenv_icd', 229 input : [vk_icd_gen, vk_api_xml], 230 output : _dev_icdname, 231 command : [ 232 prog_python, '@INPUT0@', 233 '--api-version', '1.4', '--xml', '@INPUT1@', 234 '--lib-path', meson.current_build_dir() / 'libvulkan_panfrost.so', 235 '--out', '@OUTPUT@', 236 ], 237 build_by_default : true, 238) 239 240devenv.append('VK_DRIVER_FILES', _dev_icd.full_path()) 241# Deprecated: replaced by VK_DRIVER_FILES above 242devenv.append('VK_ICD_FILENAMES', _dev_icd.full_path()) 243