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