101e04c3fSmrg# Copyright © 2017 Rob Clark 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 2101e04c3fSmrgfiles_libfreedreno = files( 227ec681f3Smrg 'freedreno_autotune.c', 237ec681f3Smrg 'freedreno_autotune.h', 2401e04c3fSmrg 'freedreno_batch.c', 2501e04c3fSmrg 'freedreno_batch.h', 2601e04c3fSmrg 'freedreno_batch_cache.c', 2701e04c3fSmrg 'freedreno_batch_cache.h', 2801e04c3fSmrg 'freedreno_blitter.c', 2901e04c3fSmrg 'freedreno_blitter.h', 3001e04c3fSmrg 'freedreno_context.c', 3101e04c3fSmrg 'freedreno_context.h', 3201e04c3fSmrg 'freedreno_draw.c', 3301e04c3fSmrg 'freedreno_draw.h', 3401e04c3fSmrg 'freedreno_fence.c', 3501e04c3fSmrg 'freedreno_fence.h', 3601e04c3fSmrg 'freedreno_gmem.c', 3701e04c3fSmrg 'freedreno_gmem.h', 3801e04c3fSmrg 'freedreno_program.c', 3901e04c3fSmrg 'freedreno_program.h', 4001e04c3fSmrg 'freedreno_query.c', 4101e04c3fSmrg 'freedreno_query.h', 4201e04c3fSmrg 'freedreno_query_acc.c', 4301e04c3fSmrg 'freedreno_query_acc.h', 4401e04c3fSmrg 'freedreno_query_hw.c', 4501e04c3fSmrg 'freedreno_query_hw.h', 4601e04c3fSmrg 'freedreno_query_sw.c', 4701e04c3fSmrg 'freedreno_query_sw.h', 4801e04c3fSmrg 'freedreno_resource.c', 4901e04c3fSmrg 'freedreno_resource.h', 5001e04c3fSmrg 'freedreno_screen.c', 5101e04c3fSmrg 'freedreno_screen.h', 5201e04c3fSmrg 'freedreno_state.c', 5301e04c3fSmrg 'freedreno_state.h', 5401e04c3fSmrg 'freedreno_surface.c', 5501e04c3fSmrg 'freedreno_surface.h', 5601e04c3fSmrg 'freedreno_texture.c', 5701e04c3fSmrg 'freedreno_texture.h', 5801e04c3fSmrg 'freedreno_util.c', 5901e04c3fSmrg 'freedreno_util.h', 6001e04c3fSmrg 'a2xx/fd2_blend.c', 6101e04c3fSmrg 'a2xx/fd2_blend.h', 6201e04c3fSmrg 'a2xx/fd2_context.c', 6301e04c3fSmrg 'a2xx/fd2_context.h', 6401e04c3fSmrg 'a2xx/fd2_draw.c', 6501e04c3fSmrg 'a2xx/fd2_draw.h', 6601e04c3fSmrg 'a2xx/fd2_emit.c', 6701e04c3fSmrg 'a2xx/fd2_emit.h', 6801e04c3fSmrg 'a2xx/fd2_gmem.c', 6901e04c3fSmrg 'a2xx/fd2_gmem.h', 7001e04c3fSmrg 'a2xx/fd2_program.c', 7101e04c3fSmrg 'a2xx/fd2_program.h', 729f464c52Smaya 'a2xx/fd2_query.c', 739f464c52Smaya 'a2xx/fd2_query.h', 7401e04c3fSmrg 'a2xx/fd2_rasterizer.c', 7501e04c3fSmrg 'a2xx/fd2_rasterizer.h', 769f464c52Smaya 'a2xx/fd2_resource.c', 779f464c52Smaya 'a2xx/fd2_resource.h', 7801e04c3fSmrg 'a2xx/fd2_screen.c', 7901e04c3fSmrg 'a2xx/fd2_screen.h', 8001e04c3fSmrg 'a2xx/fd2_texture.c', 8101e04c3fSmrg 'a2xx/fd2_texture.h', 8201e04c3fSmrg 'a2xx/fd2_util.c', 8301e04c3fSmrg 'a2xx/fd2_util.h', 8401e04c3fSmrg 'a2xx/fd2_zsa.c', 8501e04c3fSmrg 'a2xx/fd2_zsa.h', 869f464c52Smaya 'a2xx/ir2.c', 879f464c52Smaya 'a2xx/ir2.h', 889f464c52Smaya 'a2xx/ir2_assemble.c', 899f464c52Smaya 'a2xx/ir2_cp.c', 909f464c52Smaya 'a2xx/ir2_nir.c', 919f464c52Smaya 'a2xx/ir2_private.h', 929f464c52Smaya 'a2xx/ir2_ra.c', 9301e04c3fSmrg 'a3xx/fd3_blend.c', 9401e04c3fSmrg 'a3xx/fd3_blend.h', 9501e04c3fSmrg 'a3xx/fd3_context.c', 9601e04c3fSmrg 'a3xx/fd3_context.h', 9701e04c3fSmrg 'a3xx/fd3_draw.c', 9801e04c3fSmrg 'a3xx/fd3_draw.h', 9901e04c3fSmrg 'a3xx/fd3_emit.c', 10001e04c3fSmrg 'a3xx/fd3_emit.h', 10101e04c3fSmrg 'a3xx/fd3_format.c', 10201e04c3fSmrg 'a3xx/fd3_format.h', 10301e04c3fSmrg 'a3xx/fd3_gmem.c', 10401e04c3fSmrg 'a3xx/fd3_gmem.h', 10501e04c3fSmrg 'a3xx/fd3_program.c', 10601e04c3fSmrg 'a3xx/fd3_program.h', 10701e04c3fSmrg 'a3xx/fd3_query.c', 10801e04c3fSmrg 'a3xx/fd3_query.h', 10901e04c3fSmrg 'a3xx/fd3_rasterizer.c', 11001e04c3fSmrg 'a3xx/fd3_rasterizer.h', 1117ec681f3Smrg 'a3xx/fd3_resource.c', 1127ec681f3Smrg 'a3xx/fd3_resource.h', 11301e04c3fSmrg 'a3xx/fd3_screen.c', 11401e04c3fSmrg 'a3xx/fd3_screen.h', 11501e04c3fSmrg 'a3xx/fd3_texture.c', 11601e04c3fSmrg 'a3xx/fd3_texture.h', 11701e04c3fSmrg 'a3xx/fd3_zsa.c', 11801e04c3fSmrg 'a3xx/fd3_zsa.h', 11901e04c3fSmrg 'a4xx/fd4_blend.c', 12001e04c3fSmrg 'a4xx/fd4_blend.h', 12101e04c3fSmrg 'a4xx/fd4_context.c', 12201e04c3fSmrg 'a4xx/fd4_context.h', 12301e04c3fSmrg 'a4xx/fd4_draw.c', 12401e04c3fSmrg 'a4xx/fd4_draw.h', 12501e04c3fSmrg 'a4xx/fd4_emit.c', 12601e04c3fSmrg 'a4xx/fd4_emit.h', 12701e04c3fSmrg 'a4xx/fd4_format.c', 12801e04c3fSmrg 'a4xx/fd4_format.h', 12901e04c3fSmrg 'a4xx/fd4_gmem.c', 13001e04c3fSmrg 'a4xx/fd4_gmem.h', 13101e04c3fSmrg 'a4xx/fd4_program.c', 13201e04c3fSmrg 'a4xx/fd4_program.h', 13301e04c3fSmrg 'a4xx/fd4_query.c', 13401e04c3fSmrg 'a4xx/fd4_query.h', 13501e04c3fSmrg 'a4xx/fd4_rasterizer.c', 13601e04c3fSmrg 'a4xx/fd4_rasterizer.h', 1377ec681f3Smrg 'a4xx/fd4_resource.c', 1387ec681f3Smrg 'a4xx/fd4_resource.h', 13901e04c3fSmrg 'a4xx/fd4_screen.c', 14001e04c3fSmrg 'a4xx/fd4_screen.h', 14101e04c3fSmrg 'a4xx/fd4_texture.c', 14201e04c3fSmrg 'a4xx/fd4_texture.h', 14301e04c3fSmrg 'a4xx/fd4_zsa.c', 14401e04c3fSmrg 'a4xx/fd4_zsa.h', 14501e04c3fSmrg 'a5xx/fd5_blend.c', 14601e04c3fSmrg 'a5xx/fd5_blend.h', 14701e04c3fSmrg 'a5xx/fd5_blitter.c', 14801e04c3fSmrg 'a5xx/fd5_blitter.h', 14901e04c3fSmrg 'a5xx/fd5_compute.c', 15001e04c3fSmrg 'a5xx/fd5_compute.h', 15101e04c3fSmrg 'a5xx/fd5_context.c', 15201e04c3fSmrg 'a5xx/fd5_context.h', 15301e04c3fSmrg 'a5xx/fd5_draw.c', 15401e04c3fSmrg 'a5xx/fd5_draw.h', 15501e04c3fSmrg 'a5xx/fd5_emit.c', 15601e04c3fSmrg 'a5xx/fd5_emit.h', 15701e04c3fSmrg 'a5xx/fd5_format.c', 15801e04c3fSmrg 'a5xx/fd5_format.h', 15901e04c3fSmrg 'a5xx/fd5_gmem.c', 16001e04c3fSmrg 'a5xx/fd5_gmem.h', 16101e04c3fSmrg 'a5xx/fd5_image.c', 16201e04c3fSmrg 'a5xx/fd5_image.h', 16301e04c3fSmrg 'a5xx/fd5_program.c', 16401e04c3fSmrg 'a5xx/fd5_program.h', 16501e04c3fSmrg 'a5xx/fd5_query.c', 16601e04c3fSmrg 'a5xx/fd5_query.h', 16701e04c3fSmrg 'a5xx/fd5_rasterizer.c', 16801e04c3fSmrg 'a5xx/fd5_rasterizer.h', 16901e04c3fSmrg 'a5xx/fd5_resource.c', 17001e04c3fSmrg 'a5xx/fd5_resource.h', 17101e04c3fSmrg 'a5xx/fd5_screen.c', 17201e04c3fSmrg 'a5xx/fd5_screen.h', 17301e04c3fSmrg 'a5xx/fd5_texture.c', 17401e04c3fSmrg 'a5xx/fd5_texture.h', 17501e04c3fSmrg 'a5xx/fd5_zsa.c', 17601e04c3fSmrg 'a5xx/fd5_zsa.h', 17701e04c3fSmrg 'a6xx/fd6_blend.c', 17801e04c3fSmrg 'a6xx/fd6_blend.h', 17901e04c3fSmrg 'a6xx/fd6_blitter.c', 18001e04c3fSmrg 'a6xx/fd6_blitter.h', 1819f464c52Smaya 'a6xx/fd6_compute.c', 1829f464c52Smaya 'a6xx/fd6_compute.h', 1837ec681f3Smrg 'a6xx/fd6_const.c', 1847ec681f3Smrg 'a6xx/fd6_const.h', 18501e04c3fSmrg 'a6xx/fd6_context.c', 18601e04c3fSmrg 'a6xx/fd6_context.h', 18701e04c3fSmrg 'a6xx/fd6_draw.c', 18801e04c3fSmrg 'a6xx/fd6_draw.h', 18901e04c3fSmrg 'a6xx/fd6_emit.c', 19001e04c3fSmrg 'a6xx/fd6_emit.h', 19101e04c3fSmrg 'a6xx/fd6_format.c', 19201e04c3fSmrg 'a6xx/fd6_format.h', 19301e04c3fSmrg 'a6xx/fd6_gmem.c', 19401e04c3fSmrg 'a6xx/fd6_gmem.h', 19501e04c3fSmrg 'a6xx/fd6_image.c', 19601e04c3fSmrg 'a6xx/fd6_image.h', 19701e04c3fSmrg 'a6xx/fd6_program.c', 19801e04c3fSmrg 'a6xx/fd6_program.h', 19901e04c3fSmrg 'a6xx/fd6_query.c', 20001e04c3fSmrg 'a6xx/fd6_query.h', 20101e04c3fSmrg 'a6xx/fd6_rasterizer.c', 20201e04c3fSmrg 'a6xx/fd6_rasterizer.h', 20301e04c3fSmrg 'a6xx/fd6_resource.c', 20401e04c3fSmrg 'a6xx/fd6_resource.h', 20501e04c3fSmrg 'a6xx/fd6_screen.c', 20601e04c3fSmrg 'a6xx/fd6_screen.h', 20701e04c3fSmrg 'a6xx/fd6_texture.c', 20801e04c3fSmrg 'a6xx/fd6_texture.h', 2097ec681f3Smrg 'a6xx/fd6_vsc.c', 2107ec681f3Smrg 'a6xx/fd6_vsc.h', 21101e04c3fSmrg 'a6xx/fd6_zsa.c', 21201e04c3fSmrg 'a6xx/fd6_zsa.h', 21301e04c3fSmrg 'ir3/ir3_cache.c', 21401e04c3fSmrg 'ir3/ir3_cache.h', 2157ec681f3Smrg 'ir3/ir3_const.h', 2169f464c52Smaya 'ir3/ir3_gallium.c', 2179f464c52Smaya 'ir3/ir3_gallium.h', 21801e04c3fSmrg) 21901e04c3fSmrg 2207ec681f3Smrgfreedreno_tracepoints = custom_target( 2217ec681f3Smrg 'freedreno_tracepoints.[ch]', 2227ec681f3Smrg input: 'freedreno_tracepoints.py', 2237ec681f3Smrg output: ['freedreno_tracepoints.c', 'freedreno_tracepoints.h'], 2247ec681f3Smrg command: [ 2257ec681f3Smrg prog_python, '@INPUT@', 2267ec681f3Smrg '-p', join_paths(meson.source_root(), 'src/util/perf/'), 2277ec681f3Smrg '-C', '@OUTPUT0@', 2287ec681f3Smrg '-H', '@OUTPUT1@', 2297ec681f3Smrg ], 2307ec681f3Smrg depend_files: u_trace_py, 2317ec681f3Smrg) 2327ec681f3Smrg 2337ec681f3Smrgfiles_libfreedreno += freedreno_tracepoints 2347ec681f3Smrg 23501e04c3fSmrgfreedreno_includes = [ 2369f464c52Smaya inc_mesa, inc_mapi, 23701e04c3fSmrg inc_src, inc_include, inc_gallium, inc_gallium_aux, 2389f464c52Smaya inc_freedreno, include_directories('ir3'), 23901e04c3fSmrg] 24001e04c3fSmrg 2417ec681f3Smrgfreedreno_c_args = [no_override_init_args] 24201e04c3fSmrgif cc.has_argument('-Wpacked-bitfield-compat') 24301e04c3fSmrg freedreno_c_args += '-Wno-packed-bitfield-compat' 24401e04c3fSmrgendif 24501e04c3fSmrg 24601e04c3fSmrgfreedreno_cpp_args = [] 24701e04c3fSmrgif cpp.has_argument('-Wpacked-bitfield-compat') 24801e04c3fSmrg freedreno_cpp_args += '-Wno-packed-bitfield-compat' 24901e04c3fSmrgendif 25001e04c3fSmrg 2517ec681f3Smrglibfreedreno_dependencies = [ 2527ec681f3Smrg dep_libdrm, 2537ec681f3Smrg idep_mesautil, 2547ec681f3Smrg idep_nir_headers, 2557ec681f3Smrg idep_libfreedreno_common, 2567ec681f3Smrg idep_u_tracepoints, 2577ec681f3Smrg] 2587ec681f3Smrg 2597ec681f3Smrgif with_perfetto 2607ec681f3Smrg libfreedreno_dependencies += dep_perfetto 2617ec681f3Smrg files_libfreedreno += 'freedreno_perfetto.cc' 2627ec681f3Smrgendif 2637ec681f3Smrg 2647ec681f3Smrg# The header file ends up part of the build (but just a stub) 2657ec681f3Smrg# in either case: 2667ec681f3Smrgfiles_libfreedreno += 'freedreno_perfetto.h' 2677ec681f3Smrg 26801e04c3fSmrglibfreedreno = static_library( 26901e04c3fSmrg 'freedreno', 2707ec681f3Smrg [files_libfreedreno, freedreno_xml_header_files], 27101e04c3fSmrg include_directories : freedreno_includes, 2727ec681f3Smrg c_args : [freedreno_c_args], 2737ec681f3Smrg cpp_args : [freedreno_cpp_args], 2747ec681f3Smrg gnu_symbol_visibility : 'hidden', 2757ec681f3Smrg dependencies : libfreedreno_dependencies, 2767ec681f3Smrg override_options : ['cpp_std=c++17'], 27701e04c3fSmrg) 27801e04c3fSmrg 27901e04c3fSmrgdriver_freedreno = declare_dependency( 28001e04c3fSmrg compile_args : '-DGALLIUM_FREEDRENO', 2819f464c52Smaya link_with : [ 2829f464c52Smaya libfreedrenowinsys, 2839f464c52Smaya libfreedreno, 2849f464c52Smaya libfreedreno_drm, 2857ec681f3Smrg libfreedreno_ir2, 2869f464c52Smaya libfreedreno_ir3, 2877ec681f3Smrg libfreedreno_layout, 2887ec681f3Smrg libfreedreno_perfcntrs 2897ec681f3Smrg ], 2907ec681f3Smrg dependencies : [ 2917ec681f3Smrg idep_nir, 2927ec681f3Smrg idep_xmlconfig, 2939f464c52Smaya ], 29401e04c3fSmrg) 29501e04c3fSmrg 29601e04c3fSmrgir3_compiler = executable( 29701e04c3fSmrg 'ir3_compiler', 29801e04c3fSmrg 'ir3/ir3_cmdline.c', 29901e04c3fSmrg include_directories : freedreno_includes, 30001e04c3fSmrg dependencies : [ 30101e04c3fSmrg idep_nir, 3027ec681f3Smrg idep_mesautil, 3037ec681f3Smrg ], 3047ec681f3Smrg link_with : [ 3057ec681f3Smrg libfreedreno, 3067ec681f3Smrg libfreedreno_drm, 3077ec681f3Smrg libfreedreno_ir3, 3087ec681f3Smrg libfreedreno_layout, 3097ec681f3Smrg libgallium, 3107ec681f3Smrg libglsl_standalone, 3117ec681f3Smrg ], 3127ec681f3Smrg build_by_default : with_tools.contains('freedreno'), 3137ec681f3Smrg install : false, 3147ec681f3Smrg) 3157ec681f3Smrg 3167ec681f3Smrggmemtool = executable( 3177ec681f3Smrg 'gmemtool', 3187ec681f3Smrg [ 3197ec681f3Smrg 'gmemtool.c', 3207ec681f3Smrg freedreno_tracepoints[1] 3217ec681f3Smrg ], 3227ec681f3Smrg include_directories : freedreno_includes, 3237ec681f3Smrg dependencies : [ 3247ec681f3Smrg idep_nir, 3257ec681f3Smrg idep_mesautil, 3267ec681f3Smrg idep_u_tracepoints, 3277ec681f3Smrg idep_xmlconfig, 32801e04c3fSmrg ], 32901e04c3fSmrg link_with : [ 33001e04c3fSmrg libfreedreno, 3319f464c52Smaya libfreedreno_drm, 3327ec681f3Smrg libfreedreno_ir2, 3339f464c52Smaya libfreedreno_ir3, 3347ec681f3Smrg libfreedreno_layout, 33501e04c3fSmrg libgallium, 33601e04c3fSmrg libglsl_standalone, 3377ec681f3Smrg libfreedreno_perfcntrs, 33801e04c3fSmrg ], 33901e04c3fSmrg build_by_default : with_tools.contains('freedreno'), 3407ec681f3Smrg install : false, 34101e04c3fSmrg) 342