1*61046927SAndroid Build Coastguard Worker# Copyright © 2020 Google, Inc 2*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT 3*61046927SAndroid Build Coastguard Worker 4*61046927SAndroid Build Coastguard Workerif with_tests 5*61046927SAndroid Build Coastguard Worker diff = find_program('diff') 6*61046927SAndroid Build Coastguard Workerendif 7*61046927SAndroid Build Coastguard Worker 8*61046927SAndroid Build Coastguard Worker# Shared cmdstream decoding: 9*61046927SAndroid Build Coastguard Workerlibfreedreno_cffdec = static_library( 10*61046927SAndroid Build Coastguard Worker 'freedreno_cffdec', 11*61046927SAndroid Build Coastguard Worker [ 12*61046927SAndroid Build Coastguard Worker 'buffers.c', 13*61046927SAndroid Build Coastguard Worker 'buffers.h', 14*61046927SAndroid Build Coastguard Worker 'cffdec.c', 15*61046927SAndroid Build Coastguard Worker 'cffdec.h', 16*61046927SAndroid Build Coastguard Worker 'pager.c', 17*61046927SAndroid Build Coastguard Worker 'pager.h', 18*61046927SAndroid Build Coastguard Worker 'rnnutil.c', 19*61046927SAndroid Build Coastguard Worker 'rnnutil.h', 20*61046927SAndroid Build Coastguard Worker 'util.h', 21*61046927SAndroid Build Coastguard Worker ], 22*61046927SAndroid Build Coastguard Worker include_directories: [ 23*61046927SAndroid Build Coastguard Worker inc_freedreno, 24*61046927SAndroid Build Coastguard Worker inc_freedreno_rnn, 25*61046927SAndroid Build Coastguard Worker inc_include, 26*61046927SAndroid Build Coastguard Worker inc_src, 27*61046927SAndroid Build Coastguard Worker ], 28*61046927SAndroid Build Coastguard Worker c_args : [ no_override_init_args ], 29*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 30*61046927SAndroid Build Coastguard Worker dependencies: [], 31*61046927SAndroid Build Coastguard Worker link_with: [ 32*61046927SAndroid Build Coastguard Worker libfreedreno_rnn, 33*61046927SAndroid Build Coastguard Worker libfreedreno_ir2, # for disasm_a2xx 34*61046927SAndroid Build Coastguard Worker libfreedreno_ir3, # for disasm_a3xx 35*61046927SAndroid Build Coastguard Worker _libmesa_util, 36*61046927SAndroid Build Coastguard Worker ], 37*61046927SAndroid Build Coastguard Worker build_by_default: false, 38*61046927SAndroid Build Coastguard Worker) 39*61046927SAndroid Build Coastguard Worker 40*61046927SAndroid Build Coastguard Workerif dep_libarchive.found() 41*61046927SAndroid Build Coastguard Worker libfreedreno_io = static_library( 42*61046927SAndroid Build Coastguard Worker 'freedreno_io', 43*61046927SAndroid Build Coastguard Worker [ 44*61046927SAndroid Build Coastguard Worker 'io.c', 45*61046927SAndroid Build Coastguard Worker 'io.h', 46*61046927SAndroid Build Coastguard Worker ], 47*61046927SAndroid Build Coastguard Worker include_directories: [], 48*61046927SAndroid Build Coastguard Worker c_args : [no_override_init_args], 49*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 50*61046927SAndroid Build Coastguard Worker dependencies: [ 51*61046927SAndroid Build Coastguard Worker dep_libarchive, 52*61046927SAndroid Build Coastguard Worker ], 53*61046927SAndroid Build Coastguard Worker build_by_default: false, 54*61046927SAndroid Build Coastguard Worker ) 55*61046927SAndroid Build Coastguard Worker 56*61046927SAndroid Build Coastguard Worker foreach kmd : freedreno_kmds 57*61046927SAndroid Build Coastguard Worker if not (kmd in ['kgsl', 'msm', 'wsl']) 58*61046927SAndroid Build Coastguard Worker warning('replay not supported for ' + kmd + ' KMD') 59*61046927SAndroid Build Coastguard Worker continue 60*61046927SAndroid Build Coastguard Worker endif 61*61046927SAndroid Build Coastguard Worker 62*61046927SAndroid Build Coastguard Worker # Only append the KMD name if there are multiple KMDs 63*61046927SAndroid Build Coastguard Worker if freedreno_kmds.length() == 1 64*61046927SAndroid Build Coastguard Worker replay_name = 'replay' 65*61046927SAndroid Build Coastguard Worker else 66*61046927SAndroid Build Coastguard Worker replay_name = 'replay-' + kmd 67*61046927SAndroid Build Coastguard Worker endif 68*61046927SAndroid Build Coastguard Worker 69*61046927SAndroid Build Coastguard Worker replay_flags = [] 70*61046927SAndroid Build Coastguard Worker replay_deps = [] 71*61046927SAndroid Build Coastguard Worker if kmd == 'kgsl' 72*61046927SAndroid Build Coastguard Worker replay_flags += '-DFD_REPLAY_KGSL' 73*61046927SAndroid Build Coastguard Worker elif kmd == 'msm' 74*61046927SAndroid Build Coastguard Worker replay_flags += '-DFD_REPLAY_MSM' 75*61046927SAndroid Build Coastguard Worker replay_deps += dep_libdrm 76*61046927SAndroid Build Coastguard Worker elif kmd == 'wsl' 77*61046927SAndroid Build Coastguard Worker replay_flags += '-DFD_REPLAY_WSL' 78*61046927SAndroid Build Coastguard Worker endif 79*61046927SAndroid Build Coastguard Worker 80*61046927SAndroid Build Coastguard Worker replay = executable( 81*61046927SAndroid Build Coastguard Worker replay_name, 82*61046927SAndroid Build Coastguard Worker [ 83*61046927SAndroid Build Coastguard Worker 'replay.c' 84*61046927SAndroid Build Coastguard Worker ], 85*61046927SAndroid Build Coastguard Worker include_directories: [ 86*61046927SAndroid Build Coastguard Worker inc_freedreno, 87*61046927SAndroid Build Coastguard Worker inc_include, 88*61046927SAndroid Build Coastguard Worker inc_src, 89*61046927SAndroid Build Coastguard Worker ], 90*61046927SAndroid Build Coastguard Worker c_args : [no_override_init_args, replay_flags], 91*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 92*61046927SAndroid Build Coastguard Worker dependencies: replay_deps, 93*61046927SAndroid Build Coastguard Worker link_with: [ 94*61046927SAndroid Build Coastguard Worker libfreedreno_cffdec, 95*61046927SAndroid Build Coastguard Worker libfreedreno_io, 96*61046927SAndroid Build Coastguard Worker ], 97*61046927SAndroid Build Coastguard Worker build_by_default: with_tools.contains('freedreno'), 98*61046927SAndroid Build Coastguard Worker install: install_fd_decode_tools, 99*61046927SAndroid Build Coastguard Worker ) 100*61046927SAndroid Build Coastguard Worker endforeach 101*61046927SAndroid Build Coastguard Worker 102*61046927SAndroid Build Coastguard Worker rddecompiler = executable( 103*61046927SAndroid Build Coastguard Worker 'rddecompiler', 104*61046927SAndroid Build Coastguard Worker [ 105*61046927SAndroid Build Coastguard Worker 'rddecompiler.c', 106*61046927SAndroid Build Coastguard Worker freedreno_xml_header_files, 107*61046927SAndroid Build Coastguard Worker ], 108*61046927SAndroid Build Coastguard Worker include_directories: [ 109*61046927SAndroid Build Coastguard Worker inc_freedreno, 110*61046927SAndroid Build Coastguard Worker inc_freedreno_rnn, 111*61046927SAndroid Build Coastguard Worker inc_include, 112*61046927SAndroid Build Coastguard Worker inc_src, 113*61046927SAndroid Build Coastguard Worker ], 114*61046927SAndroid Build Coastguard Worker c_args : [no_override_init_args], 115*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 116*61046927SAndroid Build Coastguard Worker dependencies: [ 117*61046927SAndroid Build Coastguard Worker dep_libdrm, 118*61046927SAndroid Build Coastguard Worker ], 119*61046927SAndroid Build Coastguard Worker link_with: [ 120*61046927SAndroid Build Coastguard Worker libfreedreno_cffdec, 121*61046927SAndroid Build Coastguard Worker libfreedreno_io, 122*61046927SAndroid Build Coastguard Worker ], 123*61046927SAndroid Build Coastguard Worker build_by_default: with_tools.contains('freedreno'), 124*61046927SAndroid Build Coastguard Worker install: install_fd_decode_tools, 125*61046927SAndroid Build Coastguard Worker ) 126*61046927SAndroid Build Coastguard Worker 127*61046927SAndroid Build Coastguard Worker generate_rd = executable( 128*61046927SAndroid Build Coastguard Worker 'generate_rd', 129*61046927SAndroid Build Coastguard Worker [ 130*61046927SAndroid Build Coastguard Worker 'generate-rd.cc' 131*61046927SAndroid Build Coastguard Worker ], 132*61046927SAndroid Build Coastguard Worker include_directories: [ 133*61046927SAndroid Build Coastguard Worker inc_freedreno, 134*61046927SAndroid Build Coastguard Worker inc_freedreno_rnn, 135*61046927SAndroid Build Coastguard Worker inc_include, 136*61046927SAndroid Build Coastguard Worker inc_src, 137*61046927SAndroid Build Coastguard Worker ], 138*61046927SAndroid Build Coastguard Worker link_with: [ 139*61046927SAndroid Build Coastguard Worker libfreedreno_cffdec, 140*61046927SAndroid Build Coastguard Worker ], 141*61046927SAndroid Build Coastguard Worker dependencies : [ 142*61046927SAndroid Build Coastguard Worker idep_nir, 143*61046927SAndroid Build Coastguard Worker ], 144*61046927SAndroid Build Coastguard Worker install: install_fd_decode_tools, 145*61046927SAndroid Build Coastguard Worker ) 146*61046927SAndroid Build Coastguard Workerelse 147*61046927SAndroid Build Coastguard Worker warning('libarchive not found, not building replay or rddecompiler') 148*61046927SAndroid Build Coastguard Workerendif 149*61046927SAndroid Build Coastguard Worker 150*61046927SAndroid Build Coastguard Workerif dep_lua.found() and dep_libarchive.found() 151*61046927SAndroid Build Coastguard Worker cffdump = executable( 152*61046927SAndroid Build Coastguard Worker 'cffdump', 153*61046927SAndroid Build Coastguard Worker [ 154*61046927SAndroid Build Coastguard Worker 'cffdump.c', 155*61046927SAndroid Build Coastguard Worker 'script.c', 156*61046927SAndroid Build Coastguard Worker 'script.h' 157*61046927SAndroid Build Coastguard Worker ], 158*61046927SAndroid Build Coastguard Worker include_directories: [ 159*61046927SAndroid Build Coastguard Worker inc_freedreno, 160*61046927SAndroid Build Coastguard Worker inc_freedreno_rnn, 161*61046927SAndroid Build Coastguard Worker inc_include, 162*61046927SAndroid Build Coastguard Worker inc_src, 163*61046927SAndroid Build Coastguard Worker ], 164*61046927SAndroid Build Coastguard Worker c_args : [no_override_init_args], 165*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 166*61046927SAndroid Build Coastguard Worker dependencies: [ 167*61046927SAndroid Build Coastguard Worker dep_lua, 168*61046927SAndroid Build Coastguard Worker ], 169*61046927SAndroid Build Coastguard Worker link_with: [ 170*61046927SAndroid Build Coastguard Worker libfreedreno_cffdec, 171*61046927SAndroid Build Coastguard Worker libfreedreno_io, 172*61046927SAndroid Build Coastguard Worker ], 173*61046927SAndroid Build Coastguard Worker build_by_default: with_tools.contains('freedreno'), 174*61046927SAndroid Build Coastguard Worker install: install_fd_decode_tools, 175*61046927SAndroid Build Coastguard Worker ) 176*61046927SAndroid Build Coastguard Worker 177*61046927SAndroid Build Coastguard Worker if with_tests 178*61046927SAndroid Build Coastguard Worker # dump only a single frame, and single tile pass, to keep the 179*61046927SAndroid Build Coastguard Worker # reference output size managable 180*61046927SAndroid Build Coastguard Worker cffdump_tests = [ 181*61046927SAndroid Build Coastguard Worker ['fd-clouds', ['--frame', '0', '--once']], 182*61046927SAndroid Build Coastguard Worker ['es2gears-a320', ['--frame', '0', '--once']], 183*61046927SAndroid Build Coastguard Worker ['glxgears-a420', ['--frame', '1', '--once']], 184*61046927SAndroid Build Coastguard Worker ['compute-a540', ['--once']], 185*61046927SAndroid Build Coastguard Worker ['dEQP-GLES2.functional.texture.specification.basic_teximage2d.rgba16f_2d', ['--once']], 186*61046927SAndroid Build Coastguard Worker ['dEQP-VK.draw.indirect_draw.indexed.indirect_draw_count.triangle_list', ['--frame', '0', '--once']], 187*61046927SAndroid Build Coastguard Worker # Test a lua script to ensure we don't break scripting API 188*61046927SAndroid Build Coastguard Worker ['shadow', ['--script', files('scripts/parse-submits.lua')]], 189*61046927SAndroid Build Coastguard Worker ] 190*61046927SAndroid Build Coastguard Worker foreach cffdump_test: cffdump_tests 191*61046927SAndroid Build Coastguard Worker name = cffdump_test[0] 192*61046927SAndroid Build Coastguard Worker args = cffdump_test[1] 193*61046927SAndroid Build Coastguard Worker 194*61046927SAndroid Build Coastguard Worker log = custom_target(name + '.log', 195*61046927SAndroid Build Coastguard Worker output: name + '.log', 196*61046927SAndroid Build Coastguard Worker command: [cffdump, '--unit-test', args, files('../.gitlab-ci/traces/' + name + '.rd.gz')], 197*61046927SAndroid Build Coastguard Worker capture: true, 198*61046927SAndroid Build Coastguard Worker ) 199*61046927SAndroid Build Coastguard Worker test('cffdump-' + name, 200*61046927SAndroid Build Coastguard Worker diff, 201*61046927SAndroid Build Coastguard Worker args: ['-u', files('../.gitlab-ci/reference/' + name + '.log'), log], 202*61046927SAndroid Build Coastguard Worker suite: 'freedreno', 203*61046927SAndroid Build Coastguard Worker workdir: dir_source_root 204*61046927SAndroid Build Coastguard Worker ) 205*61046927SAndroid Build Coastguard Worker 206*61046927SAndroid Build Coastguard Worker endforeach 207*61046927SAndroid Build Coastguard Worker endif 208*61046927SAndroid Build Coastguard Workerelse 209*61046927SAndroid Build Coastguard Worker warning('lua or libarchive not found, not building cffdump') 210*61046927SAndroid Build Coastguard Workerendif 211*61046927SAndroid Build Coastguard Worker 212*61046927SAndroid Build Coastguard Workercrashdec = executable( 213*61046927SAndroid Build Coastguard Worker 'crashdec', 214*61046927SAndroid Build Coastguard Worker [ 215*61046927SAndroid Build Coastguard Worker 'crashdec.c', 216*61046927SAndroid Build Coastguard Worker 'crashdec.h', 217*61046927SAndroid Build Coastguard Worker 'crashdec-hfi.c', 218*61046927SAndroid Build Coastguard Worker 'crashdec-mempool.c', 219*61046927SAndroid Build Coastguard Worker 'crashdec-prefetch.c', 220*61046927SAndroid Build Coastguard Worker ], 221*61046927SAndroid Build Coastguard Worker include_directories: [ 222*61046927SAndroid Build Coastguard Worker inc_freedreno, 223*61046927SAndroid Build Coastguard Worker inc_freedreno_rnn, 224*61046927SAndroid Build Coastguard Worker inc_include, 225*61046927SAndroid Build Coastguard Worker inc_src, 226*61046927SAndroid Build Coastguard Worker ], 227*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 228*61046927SAndroid Build Coastguard Worker dependencies: [], 229*61046927SAndroid Build Coastguard Worker link_with: [ 230*61046927SAndroid Build Coastguard Worker libfreedreno_cffdec, 231*61046927SAndroid Build Coastguard Worker ], 232*61046927SAndroid Build Coastguard Worker build_by_default: with_tools.contains('freedreno'), 233*61046927SAndroid Build Coastguard Worker install: install_fd_decode_tools, 234*61046927SAndroid Build Coastguard Worker) 235*61046927SAndroid Build Coastguard Worker 236*61046927SAndroid Build Coastguard Workerif with_tests 237*61046927SAndroid Build Coastguard Worker crashdec_tests = [ 238*61046927SAndroid Build Coastguard Worker ['crash', ['-sf']], 239*61046927SAndroid Build Coastguard Worker ['crash_prefetch', ['-sf']], 240*61046927SAndroid Build Coastguard Worker ['prefetch-test', ['-sf']], 241*61046927SAndroid Build Coastguard Worker ] 242*61046927SAndroid Build Coastguard Worker foreach crashdec_test: crashdec_tests 243*61046927SAndroid Build Coastguard Worker name = crashdec_test[0] 244*61046927SAndroid Build Coastguard Worker args = crashdec_test[1] 245*61046927SAndroid Build Coastguard Worker 246*61046927SAndroid Build Coastguard Worker log = custom_target(name + '.log', 247*61046927SAndroid Build Coastguard Worker output: name + '.log', 248*61046927SAndroid Build Coastguard Worker command: [crashdec, args, files('../.gitlab-ci/traces/' + name + '.devcore')], 249*61046927SAndroid Build Coastguard Worker capture: true, 250*61046927SAndroid Build Coastguard Worker env: {'GALLIUM_DUMP_CPU': 'false'}, 251*61046927SAndroid Build Coastguard Worker ) 252*61046927SAndroid Build Coastguard Worker 253*61046927SAndroid Build Coastguard Worker test('crashdec-' + name, 254*61046927SAndroid Build Coastguard Worker diff, 255*61046927SAndroid Build Coastguard Worker args: ['-u', files('../.gitlab-ci/reference/' + name + '.log'), log], 256*61046927SAndroid Build Coastguard Worker suite: 'freedreno', 257*61046927SAndroid Build Coastguard Worker workdir: dir_source_root 258*61046927SAndroid Build Coastguard Worker ) 259*61046927SAndroid Build Coastguard Worker 260*61046927SAndroid Build Coastguard Worker endforeach 261*61046927SAndroid Build Coastguard Workerendif 262*61046927SAndroid Build Coastguard Worker 263*61046927SAndroid Build Coastguard Workerif dep_libarchive.found() 264*61046927SAndroid Build Coastguard Worker pgmdump = executable( 265*61046927SAndroid Build Coastguard Worker 'pgmdump', 266*61046927SAndroid Build Coastguard Worker 'pgmdump.c', 267*61046927SAndroid Build Coastguard Worker include_directories: [ 268*61046927SAndroid Build Coastguard Worker inc_freedreno, 269*61046927SAndroid Build Coastguard Worker inc_include, 270*61046927SAndroid Build Coastguard Worker inc_src, 271*61046927SAndroid Build Coastguard Worker ], 272*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 273*61046927SAndroid Build Coastguard Worker dependencies: [], 274*61046927SAndroid Build Coastguard Worker link_with: [ 275*61046927SAndroid Build Coastguard Worker libfreedreno_cffdec, 276*61046927SAndroid Build Coastguard Worker libfreedreno_io, 277*61046927SAndroid Build Coastguard Worker libfreedreno_ir2, # for disasm_a2xx 278*61046927SAndroid Build Coastguard Worker libfreedreno_ir3, # for disasm_a3xx 279*61046927SAndroid Build Coastguard Worker ], 280*61046927SAndroid Build Coastguard Worker build_by_default: with_tools.contains('freedreno'), 281*61046927SAndroid Build Coastguard Worker install: false, 282*61046927SAndroid Build Coastguard Worker ) 283*61046927SAndroid Build Coastguard Worker pgmdump2 = executable( 284*61046927SAndroid Build Coastguard Worker 'pgmdump2', 285*61046927SAndroid Build Coastguard Worker 'pgmdump2.c', 286*61046927SAndroid Build Coastguard Worker include_directories: [ 287*61046927SAndroid Build Coastguard Worker inc_freedreno, 288*61046927SAndroid Build Coastguard Worker inc_include, 289*61046927SAndroid Build Coastguard Worker inc_src, 290*61046927SAndroid Build Coastguard Worker ], 291*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 292*61046927SAndroid Build Coastguard Worker dependencies: [], 293*61046927SAndroid Build Coastguard Worker link_with: [ 294*61046927SAndroid Build Coastguard Worker libfreedreno_cffdec, 295*61046927SAndroid Build Coastguard Worker libfreedreno_io, 296*61046927SAndroid Build Coastguard Worker libfreedreno_ir2, # for disasm_a2xx 297*61046927SAndroid Build Coastguard Worker libfreedreno_ir3, # for disasm_a3xx 298*61046927SAndroid Build Coastguard Worker ], 299*61046927SAndroid Build Coastguard Worker build_by_default: with_tools.contains('freedreno'), 300*61046927SAndroid Build Coastguard Worker install: false, 301*61046927SAndroid Build Coastguard Worker ) 302*61046927SAndroid Build Coastguard Workerelse 303*61046927SAndroid Build Coastguard Worker warning('libarchive not found, not building pgmdump') 304*61046927SAndroid Build Coastguard Workerendif 305