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 21libpanvk_files = files( 22 'panvk_buffer.c', 23 'panvk_cmd_pool.c', 24 'panvk_device_memory.c', 25 'panvk_image.c', 26 'panvk_instance.c', 27 'panvk_mempool.c', 28 'panvk_physical_device.c', 29 'panvk_priv_bo.c', 30 'panvk_query.c', 31 'panvk_wsi.c', 32) 33libpanvk_files += [sha1_h] 34 35panvk_deps = [] 36panvk_flags = [] 37panvk_per_arch_libs = [] 38 39bifrost_archs = [6, 7] 40bifrost_inc_dir = ['bifrost'] 41bifrost_files = [ 42 'bifrost/panvk_vX_meta_desc_copy.c', 43] 44 45valhall_archs = [9, 10] 46valhall_inc_dir = ['valhall'] 47valhall_files = [] 48 49jm_archs = [6, 7] 50jm_inc_dir = ['jm'] 51jm_files = [ 52 'jm/panvk_vX_cmd_buffer.c', 53 'jm/panvk_vX_cmd_dispatch.c', 54 'jm/panvk_vX_cmd_draw.c', 55 'jm/panvk_vX_cmd_event.c', 56 'jm/panvk_vX_event.c', 57 'jm/panvk_vX_queue.c', 58] 59 60csf_archs = [10] 61csf_inc_dir = ['csf'] 62csf_files = [ 63 'csf/panvk_vX_cmd_buffer.c', 64 'csf/panvk_vX_cmd_dispatch.c', 65 'csf/panvk_vX_cmd_draw.c', 66 'csf/panvk_vX_cmd_event.c', 67 'csf/panvk_vX_event.c', 68 'csf/panvk_vX_queue.c', 69] 70 71common_per_arch_files = [ 72 panvk_entrypoints[0], 73 'panvk_vX_blend.c', 74 'panvk_vX_buffer_view.c', 75 'panvk_vX_cmd_desc_state.c', 76 'panvk_vX_cmd_meta.c', 77 'panvk_vX_cmd_push_constant.c', 78 'panvk_vX_descriptor_set.c', 79 'panvk_vX_descriptor_set_layout.c', 80 'panvk_vX_device.c', 81 'panvk_vX_image_view.c', 82 'panvk_vX_nir_lower_descriptors.c', 83 'panvk_vX_sampler.c', 84 'panvk_vX_shader.c', 85] 86 87foreach arch : [6, 7, 10] 88 per_arch_files = common_per_arch_files 89 inc_panvk_per_arch = [] 90 91 if arch in bifrost_archs 92 inc_panvk_per_arch += bifrost_inc_dir 93 per_arch_files += bifrost_files 94 elif arch in valhall_archs 95 inc_panvk_per_arch += valhall_inc_dir 96 per_arch_files += valhall_files 97 endif 98 99 if arch in jm_archs 100 inc_panvk_per_arch += jm_inc_dir 101 per_arch_files += jm_files 102 elif arch in csf_archs 103 inc_panvk_per_arch += csf_inc_dir 104 per_arch_files += csf_files 105 endif 106 107 panvk_per_arch_libs += static_library( 108 'panvk_v@0@'.format(arch), 109 per_arch_files, 110 include_directories : [ 111 inc_include, 112 inc_src, 113 inc_panfrost, 114 inc_panvk_per_arch, 115 ], 116 dependencies : [ 117 idep_nir_headers, 118 idep_pan_packers, 119 idep_vulkan_util_headers, 120 idep_vulkan_runtime_headers, 121 idep_vulkan_wsi_headers, 122 idep_mesautil, 123 dep_libdrm, 124 dep_valgrind, 125 ], 126 c_args : [no_override_init_args, panvk_flags, '-DPAN_ARCH=@0@'.format(arch)], 127 ) 128endforeach 129 130if with_platform_wayland 131 panvk_deps += dep_wayland_client 132 libpanvk_files += [wayland_drm_client_protocol_h, wayland_drm_protocol_c] 133endif 134 135if with_platform_android 136 panvk_deps += [dep_android] 137 panvk_flags += '-DVK_USE_PLATFORM_ANDROID_KHR' 138 libpanvk_files += files('panvk_android.c') 139endif 140 141libvulkan_panfrost = shared_library( 142 'vulkan_panfrost', 143 [libpanvk_files, panvk_entrypoints], 144 include_directories : [ 145 inc_include, 146 inc_src, 147 inc_panfrost, 148 ], 149 link_whole : [panvk_per_arch_libs], 150 link_with : [ 151 libpanfrost_shared, 152 libpanfrost_midgard, 153 libpanfrost_bifrost, 154 libpanfrost_decode, 155 libpanfrost_lib, 156 libpanfrost_util, 157 ], 158 dependencies : [ 159 dep_dl, 160 dep_elf, 161 dep_libdrm, 162 dep_m, 163 dep_thread, 164 dep_valgrind, 165 idep_nir, 166 idep_pan_packers, 167 panvk_deps, 168 idep_vulkan_util, 169 idep_vulkan_runtime, 170 idep_vulkan_wsi, 171 idep_mesautil, 172 ], 173 c_args : [no_override_init_args, panvk_flags], 174 link_args : [ld_args_bsymbolic, ld_args_gc_sections], 175 install : true, 176) 177 178panfrost_icd = custom_target( 179 'panfrost_icd', 180 input : [vk_icd_gen, vk_api_xml], 181 output : 'panfrost_icd.@[email protected]'.format(host_machine.cpu()), 182 command : [ 183 prog_python, '@INPUT0@', 184 '--api-version', '1.0', '--xml', '@INPUT1@', 185 '--lib-path', join_paths(get_option('prefix'), get_option('libdir'), 186 'libvulkan_panfrost.so'), 187 '--out', '@OUTPUT@', 188 ], 189 build_by_default : true, 190 install_dir : with_vulkan_icd_dir, 191 install_tag : 'runtime', 192 install : true, 193) 194 195_dev_icdname = 'panfrost_devenv_icd.@[email protected]'.format(host_machine.cpu()) 196_dev_icd = custom_target( 197 'panfrost_devenv_icd', 198 input : [vk_icd_gen, vk_api_xml], 199 output : _dev_icdname, 200 command : [ 201 prog_python, '@INPUT0@', 202 '--api-version', '1.0', '--xml', '@INPUT1@', 203 '--lib-path', meson.current_build_dir() / 'libvulkan_panfrost.so', 204 '--out', '@OUTPUT@', 205 ], 206 build_by_default : true, 207) 208 209devenv.append('VK_DRIVER_FILES', _dev_icd.full_path()) 210# Deprecated: replaced by VK_DRIVER_FILES above 211devenv.append('VK_ICD_FILENAMES', _dev_icd.full_path()) 212