1b8e80941Smrg# Copyright © 2017-2019 Intel Corporation 2b8e80941Smrg 3b8e80941Smrg# Permission is hereby granted, free of charge, to any person obtaining a copy 4b8e80941Smrg# of this software and associated documentation files (the "Software"), to deal 5b8e80941Smrg# in the Software without restriction, including without limitation the rights 6b8e80941Smrg# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7b8e80941Smrg# copies of the Software, and to permit persons to whom the Software is 8b8e80941Smrg# furnished to do so, subject to the following conditions: 9b8e80941Smrg 10b8e80941Smrg# The above copyright notice and this permission notice shall be included in 11b8e80941Smrg# all copies or substantial portions of the Software. 12b8e80941Smrg 13b8e80941Smrg# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14b8e80941Smrg# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15b8e80941Smrg# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16b8e80941Smrg# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17b8e80941Smrg# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18b8e80941Smrg# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19b8e80941Smrg# SOFTWARE. 20b8e80941Smrg 21b8e80941Smrganv_extensions_py = files('anv_extensions.py') 22b8e80941Smrg 23b8e80941Smrganv_entrypoints = custom_target( 24b8e80941Smrg 'anv_entrypoints.[ch]', 25b8e80941Smrg input : ['anv_entrypoints_gen.py', vk_api_xml], 26b8e80941Smrg output : ['anv_entrypoints.h', 'anv_entrypoints.c'], 27b8e80941Smrg command : [ 28b8e80941Smrg prog_python, '@INPUT0@', '--xml', '@INPUT1@', 29b8e80941Smrg '--outdir', meson.current_build_dir(), 30b8e80941Smrg ], 31b8e80941Smrg depend_files : anv_extensions_py, 32b8e80941Smrg) 33b8e80941Smrg 34b8e80941Smrganv_extensions_c = custom_target( 35b8e80941Smrg 'anv_extensions.c', 36b8e80941Smrg input : ['anv_extensions_gen.py', vk_api_xml], 37b8e80941Smrg output : 'anv_extensions.c', 38b8e80941Smrg command : [ 39b8e80941Smrg prog_python, '@INPUT0@', '--xml', '@INPUT1@', 40b8e80941Smrg '--out-c', '@OUTPUT@', 41b8e80941Smrg ], 42b8e80941Smrg depend_files : anv_extensions_py, 43b8e80941Smrg) 44b8e80941Smrg 45b8e80941Smrganv_extensions_h = custom_target( 46b8e80941Smrg 'anv_extensions.h', 47b8e80941Smrg input : ['anv_extensions_gen.py', vk_api_xml], 48b8e80941Smrg output : 'anv_extensions.h', 49b8e80941Smrg command : [ 50b8e80941Smrg prog_python, '@INPUT0@', '--xml', '@INPUT1@', 51b8e80941Smrg '--out-h', '@OUTPUT@', 52b8e80941Smrg ], 53b8e80941Smrg depend_files : anv_extensions_py, 54b8e80941Smrg) 55b8e80941Smrg 56b8e80941Smrgintel_icd = custom_target( 57b8e80941Smrg 'intel_icd', 58b8e80941Smrg input : 'anv_icd.py', 59b8e80941Smrg output : 'intel_icd.@0@.json'.format(host_machine.cpu()), 60b8e80941Smrg command : [ 61b8e80941Smrg prog_python, '@INPUT@', 62b8e80941Smrg '--lib-path', join_paths(get_option('prefix'), get_option('libdir')), 63b8e80941Smrg '--out', '@OUTPUT@', 64b8e80941Smrg ], 65b8e80941Smrg depend_files : anv_extensions_py, 66b8e80941Smrg build_by_default : true, 67b8e80941Smrg install_dir : with_vulkan_icd_dir, 68b8e80941Smrg install : true, 69b8e80941Smrg) 70b8e80941Smrg 71b8e80941Smrgdev_icd = custom_target( 72b8e80941Smrg 'dev_icd', 73b8e80941Smrg input : 'anv_icd.py', 74b8e80941Smrg output : 'dev_icd.@0@.json'.format(host_machine.cpu()), 75b8e80941Smrg command : [ 76b8e80941Smrg prog_python, '@INPUT@', '--lib-path', meson.current_build_dir(), 77b8e80941Smrg '--out', '@OUTPUT@' 78b8e80941Smrg ], 79b8e80941Smrg depend_files : files('anv_extensions.py'), 80b8e80941Smrg build_by_default : true, 81b8e80941Smrg install : false, 82b8e80941Smrg) 83b8e80941Smrg 84b8e80941Smrglibanv_gen_libs = [] 85b8e80941Smrganv_gen_files = files( 86b8e80941Smrg 'genX_blorp_exec.c', 87b8e80941Smrg 'genX_cmd_buffer.c', 88b8e80941Smrg 'genX_gpu_memcpy.c', 89b8e80941Smrg 'genX_pipeline.c', 90b8e80941Smrg 'genX_query.c', 91b8e80941Smrg 'genX_state.c', 92b8e80941Smrg) 93b8e80941Smrgforeach g : [['70', ['gen7_cmd_buffer.c']], ['75', ['gen7_cmd_buffer.c']], 94b8e80941Smrg ['80', ['gen8_cmd_buffer.c']], ['90', ['gen8_cmd_buffer.c']], 95b8e80941Smrg ['100', ['gen8_cmd_buffer.c']], ['110', ['gen8_cmd_buffer.c']]] 96b8e80941Smrg _gen = g[0] 97b8e80941Smrg libanv_gen_libs += static_library( 98b8e80941Smrg 'anv_gen@0@'.format(_gen), 99b8e80941Smrg [anv_gen_files, g[1], anv_entrypoints[0], anv_extensions_h], 100b8e80941Smrg include_directories : [ 101b8e80941Smrg inc_common, inc_compiler, inc_include, inc_intel, inc_vulkan_wsi, 102b8e80941Smrg ], 103b8e80941Smrg c_args : [ 104b8e80941Smrg c_vis_args, no_override_init_args, c_sse2_args, 105b8e80941Smrg '-DGEN_VERSIONx10=@0@'.format(_gen), 106b8e80941Smrg ], 107b8e80941Smrg dependencies : [ 108b8e80941Smrg dep_libdrm, dep_valgrind, idep_nir_headers, idep_genxml, idep_vulkan_util_headers, 109b8e80941Smrg ], 110b8e80941Smrg ) 111b8e80941Smrgendforeach 112b8e80941Smrg 113b8e80941Smrglibanv_files = files( 114b8e80941Smrg 'anv_allocator.c', 115b8e80941Smrg 'anv_android.h', 116b8e80941Smrg 'anv_batch_chain.c', 117b8e80941Smrg 'anv_blorp.c', 118b8e80941Smrg 'anv_cmd_buffer.c', 119b8e80941Smrg 'anv_descriptor_set.c', 120b8e80941Smrg 'anv_device.c', 121b8e80941Smrg 'anv_dump.c', 122b8e80941Smrg 'anv_formats.c', 123b8e80941Smrg 'anv_genX.h', 124b8e80941Smrg 'anv_image.c', 125b8e80941Smrg 'anv_intel.c', 126b8e80941Smrg 'anv_nir.h', 127b8e80941Smrg 'anv_nir_add_base_work_group_id.c', 128b8e80941Smrg 'anv_nir_apply_pipeline_layout.c', 129b8e80941Smrg 'anv_nir_lower_input_attachments.c', 130b8e80941Smrg 'anv_nir_lower_multiview.c', 131b8e80941Smrg 'anv_nir_lower_push_constants.c', 132b8e80941Smrg 'anv_nir_lower_ycbcr_textures.c', 133b8e80941Smrg 'anv_pass.c', 134b8e80941Smrg 'anv_pipeline.c', 135b8e80941Smrg 'anv_pipeline_cache.c', 136b8e80941Smrg 'anv_private.h', 137b8e80941Smrg 'anv_queue.c', 138b8e80941Smrg 'anv_util.c', 139b8e80941Smrg 'anv_wsi.c', 140b8e80941Smrg 'vk_format_info.h', 141b8e80941Smrg) 142b8e80941Smrg 143b8e80941Smrganv_deps = [ 144b8e80941Smrg dep_libdrm, 145b8e80941Smrg dep_valgrind, 146b8e80941Smrg idep_nir_headers, 147b8e80941Smrg idep_vulkan_util_headers, 148b8e80941Smrg] 149b8e80941Smrganv_flags = [ 150b8e80941Smrg c_vis_args, 151b8e80941Smrg no_override_init_args, 152b8e80941Smrg c_sse2_args, 153b8e80941Smrg] 154b8e80941Smrg 155b8e80941Smrgif with_platform_x11 156b8e80941Smrg anv_deps += dep_xcb_dri3 157b8e80941Smrg anv_flags += [ 158b8e80941Smrg '-DVK_USE_PLATFORM_XCB_KHR', 159b8e80941Smrg '-DVK_USE_PLATFORM_XLIB_KHR', 160b8e80941Smrg ] 161b8e80941Smrg libanv_files += files('anv_wsi_x11.c') 162b8e80941Smrgendif 163b8e80941Smrg 164b8e80941Smrgif with_platform_wayland 165b8e80941Smrg anv_deps += dep_wayland_client 166b8e80941Smrg anv_flags += '-DVK_USE_PLATFORM_WAYLAND_KHR' 167b8e80941Smrg libanv_files += files('anv_wsi_wayland.c') 168b8e80941Smrgendif 169b8e80941Smrg 170b8e80941Smrgif with_platform_drm 171b8e80941Smrg anv_flags += '-DVK_USE_PLATFORM_DISPLAY_KHR' 172b8e80941Smrg libanv_files += files('anv_wsi_display.c') 173b8e80941Smrgendif 174b8e80941Smrg 175b8e80941Smrgif with_xlib_lease 176b8e80941Smrg anv_deps += [dep_xcb_xrandr, dep_xlib_xrandr] 177b8e80941Smrg anv_flags += '-DVK_USE_PLATFORM_XLIB_XRANDR_EXT' 178b8e80941Smrgendif 179b8e80941Smrg 180b8e80941Smrgif with_platform_android 181b8e80941Smrg anv_deps += dep_android 182b8e80941Smrg anv_flags += '-DVK_USE_PLATFORM_ANDROID_KHR' 183b8e80941Smrg libanv_files += files('anv_android.c') 184b8e80941Smrgelse 185b8e80941Smrg libanv_files += files('anv_android_stubs.c') 186b8e80941Smrgendif 187b8e80941Smrg 188b8e80941Smrglibanv_common = static_library( 189b8e80941Smrg 'anv_common', 190b8e80941Smrg [ 191b8e80941Smrg libanv_files, anv_entrypoints, anv_extensions_c, anv_extensions_h, sha1_h, 192b8e80941Smrg gen_xml_pack, 193b8e80941Smrg ], 194b8e80941Smrg include_directories : [ 195b8e80941Smrg inc_common, inc_intel, inc_compiler, inc_include, 196b8e80941Smrg inc_vulkan_wsi, inc_util, 197b8e80941Smrg ], 198b8e80941Smrg c_args : anv_flags, 199b8e80941Smrg dependencies : anv_deps, 200b8e80941Smrg) 201b8e80941Smrg 202b8e80941Smrglibvulkan_intel = shared_library( 203b8e80941Smrg 'vulkan_intel', 204b8e80941Smrg [files('anv_gem.c'), anv_entrypoints[0], anv_extensions_h], 205b8e80941Smrg include_directories : [ 206b8e80941Smrg inc_common, inc_intel, inc_compiler, inc_include, inc_vulkan_wsi, 207b8e80941Smrg ], 208b8e80941Smrg link_whole : [libanv_common, libanv_gen_libs], 209b8e80941Smrg link_with : [ 210b8e80941Smrg libintel_compiler, libintel_common, libintel_dev, libisl, libblorp, 211b8e80941Smrg libvulkan_wsi, libmesa_util, 212b8e80941Smrg ], 213b8e80941Smrg dependencies : [ 214b8e80941Smrg dep_thread, dep_dl, dep_m, anv_deps, idep_nir, idep_genxml, idep_vulkan_util 215b8e80941Smrg ], 216b8e80941Smrg c_args : anv_flags, 217b8e80941Smrg link_args : ['-Wl,--build-id=sha1', ld_args_bsymbolic, ld_args_gc_sections], 218b8e80941Smrg install : true, 219b8e80941Smrg) 220b8e80941Smrg 221b8e80941Smrgif with_tests 222b8e80941Smrg libvulkan_intel_test = static_library( 223b8e80941Smrg 'vulkan_intel_test', 224b8e80941Smrg [files('anv_gem_stubs.c'), anv_entrypoints[0], anv_extensions_h], 225b8e80941Smrg include_directories : [ 226b8e80941Smrg inc_common, inc_intel, inc_compiler, inc_include, inc_vulkan_wsi, 227b8e80941Smrg ], 228b8e80941Smrg link_whole : libanv_common, 229b8e80941Smrg link_with : [ 230b8e80941Smrg libanv_gen_libs, libintel_compiler, libintel_common, libintel_dev, 231b8e80941Smrg libisl, libblorp, libvulkan_wsi, libmesa_util, 232b8e80941Smrg ], 233b8e80941Smrg dependencies : [ 234b8e80941Smrg dep_thread, dep_dl, dep_m, anv_deps, idep_nir, idep_vulkan_util 235b8e80941Smrg ], 236b8e80941Smrg c_args : anv_flags, 237b8e80941Smrg ) 238b8e80941Smrg 239b8e80941Smrg foreach t : ['block_pool_no_free', 'block_pool_grow_first', 240b8e80941Smrg 'state_pool_no_free', 'state_pool_free_list_only', 241b8e80941Smrg 'state_pool', 'state_pool_padding'] 242b8e80941Smrg test( 243b8e80941Smrg 'anv_@0@'.format(t), 244b8e80941Smrg executable( 245b8e80941Smrg t, 246b8e80941Smrg ['tests/@0@.c'.format(t), anv_entrypoints[0], anv_extensions_h], 247b8e80941Smrg c_args : [ c_sse2_args ], 248b8e80941Smrg link_with : libvulkan_intel_test, 249b8e80941Smrg dependencies : [dep_libdrm, dep_thread, dep_m, dep_valgrind, idep_vulkan_util, ], 250b8e80941Smrg include_directories : [ 251b8e80941Smrg inc_common, inc_intel, inc_compiler, inc_vulkan_wsi, 252b8e80941Smrg ], 253b8e80941Smrg ), 254b8e80941Smrg suite : ['intel'], 255b8e80941Smrg ) 256b8e80941Smrg endforeach 257b8e80941Smrgendif 258