101e04c3fSmrg# Copyright © 2017-2019 Intel Corporation 201e04c3fSmrg 301e04c3fSmrg# Permission is hereby granted, free of charge, to any person obtaining a copy 401e04c3fSmrg# of this software and associated documentation files (the "Software"), to deal 501e04c3fSmrg# in the Software without restriction, including without limitation the rights 601e04c3fSmrg# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 701e04c3fSmrg# copies of the Software, and to permit persons to whom the Software is 801e04c3fSmrg# furnished to do so, subject to the following conditions: 901e04c3fSmrg 1001e04c3fSmrg# The above copyright notice and this permission notice shall be included in 1101e04c3fSmrg# all copies or substantial portions of the Software. 1201e04c3fSmrg 1301e04c3fSmrg# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1401e04c3fSmrg# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1501e04c3fSmrg# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1601e04c3fSmrg# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1701e04c3fSmrg# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1801e04c3fSmrg# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1901e04c3fSmrg# SOFTWARE. 2001e04c3fSmrg 2101e04c3fSmrganv_entrypoints = custom_target( 227ec681f3Smrg 'anv_entrypoints', 237ec681f3Smrg input : [vk_entrypoints_gen, vk_api_xml], 2401e04c3fSmrg output : ['anv_entrypoints.h', 'anv_entrypoints.c'], 2501e04c3fSmrg command : [ 267ec681f3Smrg prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak', 277ec681f3Smrg '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'anv', 287ec681f3Smrg '--device-prefix', 'gfx7', '--device-prefix', 'gfx75', 297ec681f3Smrg '--device-prefix', 'gfx8', '--device-prefix', 'gfx9', 307ec681f3Smrg '--device-prefix', 'gfx11', '--device-prefix', 'gfx12', 317ec681f3Smrg '--device-prefix', 'gfx125', 3201e04c3fSmrg ], 337ec681f3Smrg depend_files : vk_entrypoints_gen_depend_files, 3401e04c3fSmrg) 3501e04c3fSmrg 3601e04c3fSmrgintel_icd = custom_target( 3701e04c3fSmrg 'intel_icd', 387ec681f3Smrg input : [vk_icd_gen, vk_api_xml], 3901e04c3fSmrg output : 'intel_icd.@0@.json'.format(host_machine.cpu()), 4001e04c3fSmrg command : [ 417ec681f3Smrg prog_python, '@INPUT0@', 427ec681f3Smrg '--api-version', '1.2', '--xml', '@INPUT1@', 437ec681f3Smrg '--lib-path', join_paths(get_option('prefix'), get_option('libdir'), 447ec681f3Smrg 'libvulkan_intel.so'), 4501e04c3fSmrg '--out', '@OUTPUT@', 4601e04c3fSmrg ], 4701e04c3fSmrg build_by_default : true, 4801e04c3fSmrg install_dir : with_vulkan_icd_dir, 4901e04c3fSmrg install : true, 5001e04c3fSmrg) 5101e04c3fSmrg 527ec681f3Smrglibanv_per_hw_ver_libs = [] 537ec681f3Smrganv_per_hw_ver_files = files( 5401e04c3fSmrg 'genX_blorp_exec.c', 5501e04c3fSmrg 'genX_cmd_buffer.c', 5601e04c3fSmrg 'genX_gpu_memcpy.c', 5701e04c3fSmrg 'genX_pipeline.c', 5801e04c3fSmrg 'genX_query.c', 5901e04c3fSmrg 'genX_state.c', 6001e04c3fSmrg) 617ec681f3Smrgforeach g : [['70', ['gfx7_cmd_buffer.c']], ['75', ['gfx7_cmd_buffer.c']], 627ec681f3Smrg ['80', ['gfx8_cmd_buffer.c']], ['90', ['gfx8_cmd_buffer.c']], 637ec681f3Smrg ['110', ['gfx8_cmd_buffer.c']], ['120', ['gfx8_cmd_buffer.c']], 647ec681f3Smrg ['125', ['gfx8_cmd_buffer.c']]] 657ec681f3Smrg _gfx_ver = g[0] 667ec681f3Smrg libanv_per_hw_ver_libs += static_library( 677ec681f3Smrg 'anv_per_hw_ver@0@'.format(_gfx_ver), 687ec681f3Smrg [anv_per_hw_ver_files, g[1], anv_entrypoints[0]], 6901e04c3fSmrg include_directories : [ 707ec681f3Smrg inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_compiler, inc_intel, 7101e04c3fSmrg ], 7201e04c3fSmrg c_args : [ 737ec681f3Smrg no_override_init_args, c_sse2_args, 747ec681f3Smrg '-DGFX_VERx10=@0@'.format(_gfx_ver), 7501e04c3fSmrg ], 767ec681f3Smrg gnu_symbol_visibility : 'hidden', 779f464c52Smaya dependencies : [ 787ec681f3Smrg dep_libdrm, dep_valgrind, idep_nir_headers, idep_genxml, 797ec681f3Smrg idep_vulkan_util_headers, idep_vulkan_wsi_headers, 809f464c52Smaya ], 8101e04c3fSmrg ) 8201e04c3fSmrgendforeach 8301e04c3fSmrg 8401e04c3fSmrglibanv_files = files( 857ec681f3Smrg 'anv_acceleration_structure.c', 8601e04c3fSmrg 'anv_allocator.c', 879f464c52Smaya 'anv_android.h', 8801e04c3fSmrg 'anv_batch_chain.c', 8901e04c3fSmrg 'anv_blorp.c', 9001e04c3fSmrg 'anv_cmd_buffer.c', 9101e04c3fSmrg 'anv_descriptor_set.c', 9201e04c3fSmrg 'anv_device.c', 9301e04c3fSmrg 'anv_formats.c', 9401e04c3fSmrg 'anv_genX.h', 9501e04c3fSmrg 'anv_image.c', 967ec681f3Smrg 'anv_measure.c', 977ec681f3Smrg 'anv_measure.h', 9801e04c3fSmrg 'anv_nir.h', 9901e04c3fSmrg 'anv_nir_add_base_work_group_id.c', 10001e04c3fSmrg 'anv_nir_apply_pipeline_layout.c', 1017ec681f3Smrg 'anv_nir_compute_push_layout.c', 10201e04c3fSmrg 'anv_nir_lower_multiview.c', 1037ec681f3Smrg 'anv_nir_lower_ubo_loads.c', 10401e04c3fSmrg 'anv_nir_lower_ycbcr_textures.c', 10501e04c3fSmrg 'anv_pass.c', 1067ec681f3Smrg 'anv_perf.c', 10701e04c3fSmrg 'anv_pipeline.c', 10801e04c3fSmrg 'anv_pipeline_cache.c', 10901e04c3fSmrg 'anv_private.h', 11001e04c3fSmrg 'anv_queue.c', 11101e04c3fSmrg 'anv_util.c', 11201e04c3fSmrg 'anv_wsi.c', 11301e04c3fSmrg) 11401e04c3fSmrg 11501e04c3fSmrganv_deps = [ 11601e04c3fSmrg dep_libdrm, 11701e04c3fSmrg dep_valgrind, 1187ec681f3Smrg idep_genxml, 11901e04c3fSmrg idep_nir_headers, 1209f464c52Smaya idep_vulkan_util_headers, 1217ec681f3Smrg idep_vulkan_wsi_headers, 12201e04c3fSmrg] 12301e04c3fSmrganv_flags = [ 12401e04c3fSmrg no_override_init_args, 12501e04c3fSmrg c_sse2_args, 12601e04c3fSmrg] 12701e04c3fSmrg 12801e04c3fSmrgif with_platform_x11 12901e04c3fSmrg anv_deps += dep_xcb_dri3 13001e04c3fSmrgendif 13101e04c3fSmrg 13201e04c3fSmrgif with_platform_wayland 13301e04c3fSmrg anv_deps += dep_wayland_client 13401e04c3fSmrgendif 13501e04c3fSmrg 1367ec681f3Smrgif system_has_kms_drm and not with_platform_android 13701e04c3fSmrg libanv_files += files('anv_wsi_display.c') 13801e04c3fSmrgendif 13901e04c3fSmrg 14001e04c3fSmrgif with_xlib_lease 1417ec681f3Smrg anv_deps += [dep_xlib_xrandr] 14201e04c3fSmrgendif 14301e04c3fSmrg 1449f464c52Smayaif with_platform_android 1459f464c52Smaya libanv_files += files('anv_android.c') 1469f464c52Smayaelse 1479f464c52Smaya libanv_files += files('anv_android_stubs.c') 1489f464c52Smayaendif 1499f464c52Smaya 15001e04c3fSmrglibanv_common = static_library( 15101e04c3fSmrg 'anv_common', 15201e04c3fSmrg [ 1537ec681f3Smrg libanv_files, anv_entrypoints, sha1_h, 15401e04c3fSmrg gen_xml_pack, 15501e04c3fSmrg ], 15601e04c3fSmrg include_directories : [ 1577ec681f3Smrg inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_intel, inc_compiler, 1587ec681f3Smrg inc_util, 15901e04c3fSmrg ], 16001e04c3fSmrg c_args : anv_flags, 1617ec681f3Smrg gnu_symbol_visibility : 'hidden', 16201e04c3fSmrg dependencies : anv_deps, 16301e04c3fSmrg) 16401e04c3fSmrg 16501e04c3fSmrglibvulkan_intel = shared_library( 16601e04c3fSmrg 'vulkan_intel', 1677ec681f3Smrg [files('anv_gem.c'), anv_entrypoints[0]], 16801e04c3fSmrg include_directories : [ 1697ec681f3Smrg inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_intel, inc_compiler, 17001e04c3fSmrg ], 1717ec681f3Smrg link_whole : [libanv_common, libanv_per_hw_ver_libs], 17201e04c3fSmrg link_with : [ 1737ec681f3Smrg libintel_compiler, libintel_dev, libisl, libblorp, libintel_perf, 17401e04c3fSmrg ], 17501e04c3fSmrg dependencies : [ 1767ec681f3Smrg dep_thread, dep_dl, dep_m, anv_deps, idep_libintel_common, 1777ec681f3Smrg idep_nir, idep_genxml, idep_vulkan_util, idep_vulkan_wsi, 1787ec681f3Smrg idep_mesautil, idep_xmlconfig, 17901e04c3fSmrg ], 18001e04c3fSmrg c_args : anv_flags, 1817ec681f3Smrg gnu_symbol_visibility : 'hidden', 1827ec681f3Smrg link_args : [ld_args_build_id, ld_args_bsymbolic, ld_args_gc_sections], 18301e04c3fSmrg install : true, 18401e04c3fSmrg) 18501e04c3fSmrg 1867ec681f3Smrgif with_symbols_check 1877ec681f3Smrg test( 1887ec681f3Smrg 'anv symbols check', 1897ec681f3Smrg symbols_check, 1907ec681f3Smrg args : [ 1917ec681f3Smrg '--lib', libvulkan_intel, 1927ec681f3Smrg '--symbols-file', vulkan_icd_symbols, 1937ec681f3Smrg symbols_check_args, 1947ec681f3Smrg ], 1957ec681f3Smrg suite : ['intel'], 1967ec681f3Smrg ) 1977ec681f3Smrgendif 1987ec681f3Smrg 19901e04c3fSmrgif with_tests 20001e04c3fSmrg libvulkan_intel_test = static_library( 20101e04c3fSmrg 'vulkan_intel_test', 2027ec681f3Smrg [files('anv_gem_stubs.c'), anv_entrypoints[0]], 20301e04c3fSmrg include_directories : [ 2047ec681f3Smrg inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_intel, inc_compiler, 20501e04c3fSmrg ], 20601e04c3fSmrg link_whole : libanv_common, 20701e04c3fSmrg link_with : [ 2087ec681f3Smrg libanv_per_hw_ver_libs, libintel_compiler, libintel_common, libintel_dev, 2097ec681f3Smrg libisl, libblorp, libintel_perf, 21001e04c3fSmrg ], 21101e04c3fSmrg dependencies : [ 2127ec681f3Smrg dep_thread, dep_dl, dep_m, anv_deps, 2137ec681f3Smrg idep_nir, idep_vulkan_util, idep_vulkan_wsi, idep_mesautil, 21401e04c3fSmrg ], 21501e04c3fSmrg c_args : anv_flags, 2167ec681f3Smrg gnu_symbol_visibility : 'hidden', 21701e04c3fSmrg ) 21801e04c3fSmrg 2199f464c52Smaya foreach t : ['block_pool_no_free', 'block_pool_grow_first', 2209f464c52Smaya 'state_pool_no_free', 'state_pool_free_list_only', 2219f464c52Smaya 'state_pool', 'state_pool_padding'] 22201e04c3fSmrg test( 22301e04c3fSmrg 'anv_@0@'.format(t), 22401e04c3fSmrg executable( 22501e04c3fSmrg t, 2267ec681f3Smrg ['tests/@0@.c'.format(t), anv_entrypoints[0]], 2279f464c52Smaya c_args : [ c_sse2_args ], 22801e04c3fSmrg link_with : libvulkan_intel_test, 2297ec681f3Smrg dependencies : [ 2307ec681f3Smrg dep_libdrm, dep_thread, dep_m, dep_valgrind, 2317ec681f3Smrg idep_vulkan_util, idep_vulkan_wsi_headers, 2327ec681f3Smrg ], 23301e04c3fSmrg include_directories : [ 2347ec681f3Smrg inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_intel, inc_compiler, 23501e04c3fSmrg ], 2369f464c52Smaya ), 2379f464c52Smaya suite : ['intel'], 23801e04c3fSmrg ) 23901e04c3fSmrg endforeach 24001e04c3fSmrgendif 241