17ec681f3Smrg# Copyright © 2020 Google, Inc 27ec681f3Smrg 37ec681f3Smrg# Permission is hereby granted, free of charge, to any person obtaining a copy 47ec681f3Smrg# of this software and associated documentation files (the "Software"), to deal 57ec681f3Smrg# in the Software without restriction, including without limitation the rights 67ec681f3Smrg# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 77ec681f3Smrg# copies of the Software, and to permit persons to whom the Software is 87ec681f3Smrg# furnished to do so, subject to the following conditions: 97ec681f3Smrg 107ec681f3Smrg# The above copyright notice and this permission notice shall be included in 117ec681f3Smrg# all copies or substantial portions of the Software. 127ec681f3Smrg 137ec681f3Smrg# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 147ec681f3Smrg# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 157ec681f3Smrg# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 167ec681f3Smrg# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 177ec681f3Smrg# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 187ec681f3Smrg# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 197ec681f3Smrg# SOFTWARE. 207ec681f3Smrg 217ec681f3Smrgif with_tests 227ec681f3Smrg diff = find_program('diff') 237ec681f3Smrgendif 247ec681f3Smrg 257ec681f3Smrg# Shared cmdstream decoding: 267ec681f3Smrglibfreedreno_cffdec = static_library( 277ec681f3Smrg 'freedreno_cffdec', 287ec681f3Smrg [ 297ec681f3Smrg 'buffers.c', 307ec681f3Smrg 'buffers.h', 317ec681f3Smrg 'cffdec.c', 327ec681f3Smrg 'cffdec.h', 337ec681f3Smrg 'pager.c', 347ec681f3Smrg 'pager.h', 357ec681f3Smrg 'rnnutil.c', 367ec681f3Smrg 'rnnutil.h', 377ec681f3Smrg 'util.h', 387ec681f3Smrg ], 397ec681f3Smrg include_directories: [ 407ec681f3Smrg inc_freedreno, 417ec681f3Smrg inc_freedreno_rnn, 427ec681f3Smrg inc_include, 437ec681f3Smrg inc_src, 447ec681f3Smrg ], 457ec681f3Smrg c_args : [ no_override_init_args ], 467ec681f3Smrg gnu_symbol_visibility: 'hidden', 477ec681f3Smrg dependencies: [], 487ec681f3Smrg link_with: [ 497ec681f3Smrg libfreedreno_rnn, 507ec681f3Smrg libfreedreno_ir2, # for disasm_a2xx 517ec681f3Smrg libfreedreno_ir3, # for disasm_a3xx 527ec681f3Smrg _libmesa_util, 537ec681f3Smrg ], 547ec681f3Smrg build_by_default: false, 557ec681f3Smrg) 567ec681f3Smrg 577ec681f3Smrgif dep_libarchive.found() 587ec681f3Smrg libfreedreno_io = static_library( 597ec681f3Smrg 'libfreedreno_io', 607ec681f3Smrg [ 617ec681f3Smrg 'io.c', 627ec681f3Smrg 'io.h', 637ec681f3Smrg ], 647ec681f3Smrg include_directories: [], 657ec681f3Smrg c_args : [no_override_init_args], 667ec681f3Smrg gnu_symbol_visibility: 'hidden', 677ec681f3Smrg dependencies: [ 687ec681f3Smrg dep_libarchive, 697ec681f3Smrg ], 707ec681f3Smrg build_by_default: false, 717ec681f3Smrg ) 727ec681f3Smrgendif 737ec681f3Smrg 747ec681f3Smrgif dep_lua.found() and dep_libarchive.found() 757ec681f3Smrg cffdump = executable( 767ec681f3Smrg 'cffdump', 777ec681f3Smrg [ 787ec681f3Smrg 'cffdump.c', 797ec681f3Smrg 'script.c', 807ec681f3Smrg 'script.h' 817ec681f3Smrg ], 827ec681f3Smrg include_directories: [ 837ec681f3Smrg inc_freedreno, 847ec681f3Smrg inc_freedreno_rnn, 857ec681f3Smrg inc_include, 867ec681f3Smrg inc_src, 877ec681f3Smrg ], 887ec681f3Smrg c_args : [no_override_init_args], 897ec681f3Smrg gnu_symbol_visibility: 'hidden', 907ec681f3Smrg dependencies: [ 917ec681f3Smrg dep_lua, 927ec681f3Smrg ], 937ec681f3Smrg link_with: [ 947ec681f3Smrg libfreedreno_cffdec, 957ec681f3Smrg libfreedreno_io, 967ec681f3Smrg ], 977ec681f3Smrg build_by_default: with_tools.contains('freedreno'), 987ec681f3Smrg install: install_fd_decode_tools, 997ec681f3Smrg ) 1007ec681f3Smrg 1017ec681f3Smrg if with_tests 1027ec681f3Smrg # dump only a single frame, and single tile pass, to keep the 1037ec681f3Smrg # reference output size managable 1047ec681f3Smrg cffdump_tests = [ 1057ec681f3Smrg ['fd-clouds', ['--frame', '0', '--once']], 1067ec681f3Smrg ['es2gears-a320', ['--frame', '0', '--once']], 1077ec681f3Smrg ['glxgears-a420', ['--frame', '1', '--once']], 1087ec681f3Smrg ['dEQP-GLES2.functional.texture.specification.basic_teximage2d.rgba16f_2d', ['--once']], 1097ec681f3Smrg ['dEQP-VK.draw.indirect_draw.indexed.indirect_draw_count.triangle_list', ['--frame', '0', '--once']], 1107ec681f3Smrg # Test a lua script to ensure we don't break scripting API 1117ec681f3Smrg ['shadow', ['--script', files(join_paths(meson.current_source_dir(), 'scripts', 'parse-submits.lua'))]], 1127ec681f3Smrg ] 1137ec681f3Smrg foreach cffdump_test: cffdump_tests 1147ec681f3Smrg name = cffdump_test[0] 1157ec681f3Smrg args = cffdump_test[1] 1167ec681f3Smrg 1177ec681f3Smrg log = custom_target(name + '.log', 1187ec681f3Smrg output: name + '.log', 1197ec681f3Smrg command: [cffdump, '--unit-test', args, files('../.gitlab-ci/traces/' + name + '.rd.gz')], 1207ec681f3Smrg capture: true, 1217ec681f3Smrg ) 1227ec681f3Smrg test('cffdump-' + name, 1237ec681f3Smrg diff, 1247ec681f3Smrg args: ['-u', files('../.gitlab-ci/reference/' + name + '.log'), log], 1257ec681f3Smrg suite: 'freedreno', 1267ec681f3Smrg workdir: meson.source_root() 1277ec681f3Smrg ) 1287ec681f3Smrg 1297ec681f3Smrg endforeach 1307ec681f3Smrg endif 1317ec681f3Smrgendif 1327ec681f3Smrg 1337ec681f3Smrgcrashdec = executable( 1347ec681f3Smrg 'crashdec', 1357ec681f3Smrg 'crashdec.c', 1367ec681f3Smrg include_directories: [ 1377ec681f3Smrg inc_freedreno, 1387ec681f3Smrg inc_freedreno_rnn, 1397ec681f3Smrg inc_include, 1407ec681f3Smrg inc_src, 1417ec681f3Smrg ], 1427ec681f3Smrg gnu_symbol_visibility: 'hidden', 1437ec681f3Smrg dependencies: [], 1447ec681f3Smrg link_with: [ 1457ec681f3Smrg libfreedreno_cffdec, 1467ec681f3Smrg ], 1477ec681f3Smrg build_by_default: with_tools.contains('freedreno'), 1487ec681f3Smrg install: install_fd_decode_tools, 1497ec681f3Smrg) 1507ec681f3Smrg 1517ec681f3Smrgif with_tests 1527ec681f3Smrg crashdec_output = custom_target('crashdec.txt', 1537ec681f3Smrg output: 'crashdec.txt', 1547ec681f3Smrg command: [crashdec, '-sf', files('../.gitlab-ci/traces/crash.devcore')], 1557ec681f3Smrg capture: true 1567ec681f3Smrg ) 1577ec681f3Smrg test('crashdec', 1587ec681f3Smrg diff, 1597ec681f3Smrg args: ['-u', files('../.gitlab-ci/reference/crash.log'), crashdec_output], 1607ec681f3Smrg suite: 'freedreno', 1617ec681f3Smrg workdir: meson.source_root() 1627ec681f3Smrg ) 1637ec681f3Smrgendif 1647ec681f3Smrg 1657ec681f3Smrgif dep_libarchive.found() 1667ec681f3Smrg pgmdump = executable( 1677ec681f3Smrg 'pgmdump', 1687ec681f3Smrg 'pgmdump.c', 1697ec681f3Smrg include_directories: [ 1707ec681f3Smrg inc_freedreno, 1717ec681f3Smrg inc_include, 1727ec681f3Smrg inc_src, 1737ec681f3Smrg ], 1747ec681f3Smrg gnu_symbol_visibility: 'hidden', 1757ec681f3Smrg dependencies: [], 1767ec681f3Smrg link_with: [ 1777ec681f3Smrg libfreedreno_cffdec, 1787ec681f3Smrg libfreedreno_io, 1797ec681f3Smrg libfreedreno_ir2, # for disasm_a2xx 1807ec681f3Smrg libfreedreno_ir3, # for disasm_a3xx 1817ec681f3Smrg ], 1827ec681f3Smrg build_by_default: with_tools.contains('freedreno'), 1837ec681f3Smrg install: false, 1847ec681f3Smrg ) 1857ec681f3Smrg pgmdump2 = executable( 1867ec681f3Smrg 'pgmdump2', 1877ec681f3Smrg 'pgmdump2.c', 1887ec681f3Smrg include_directories: [ 1897ec681f3Smrg inc_freedreno, 1907ec681f3Smrg inc_include, 1917ec681f3Smrg inc_src, 1927ec681f3Smrg ], 1937ec681f3Smrg gnu_symbol_visibility: 'hidden', 1947ec681f3Smrg dependencies: [], 1957ec681f3Smrg link_with: [ 1967ec681f3Smrg libfreedreno_cffdec, 1977ec681f3Smrg libfreedreno_io, 1987ec681f3Smrg libfreedreno_ir2, # for disasm_a2xx 1997ec681f3Smrg libfreedreno_ir3, # for disasm_a3xx 2007ec681f3Smrg ], 2017ec681f3Smrg build_by_default: with_tools.contains('freedreno'), 2027ec681f3Smrg install: false, 2037ec681f3Smrg ) 2047ec681f3Smrgendif 205