xref: /aosp_15_r20/external/mesa3d/src/intel/vulkan/grl/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker# Copyright © 2021 Intel Corporation
2*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
3*61046927SAndroid Build Coastguard Worker
4*61046927SAndroid Build Coastguard Workerfs = import('fs')
5*61046927SAndroid Build Coastguard Worker
6*61046927SAndroid Build Coastguard Workergrl_lib_files = [
7*61046927SAndroid Build Coastguard Worker  'gpu/libs/libraries.grl',
8*61046927SAndroid Build Coastguard Worker]
9*61046927SAndroid Build Coastguard Worker
10*61046927SAndroid Build Coastguard Workergrl_grl_files = [
11*61046927SAndroid Build Coastguard Worker  'gpu/build_leaf.grl',
12*61046927SAndroid Build Coastguard Worker  'gpu/build_primref.grl',
13*61046927SAndroid Build Coastguard Worker#  'gpu/build_refit.grl',
14*61046927SAndroid Build Coastguard Worker  'gpu/copy.grl',
15*61046927SAndroid Build Coastguard Worker#  'gpu/grl_api_interface_verify.grl',
16*61046927SAndroid Build Coastguard Worker  'gpu/misc.grl',
17*61046927SAndroid Build Coastguard Worker#  'gpu/morton_builder.grl',
18*61046927SAndroid Build Coastguard Worker#  'gpu/msb_radix_bitonic_sort.grl',
19*61046927SAndroid Build Coastguard Worker  'gpu/new_sah_builder.grl',
20*61046927SAndroid Build Coastguard Worker  'gpu/postbuild_info.grl',
21*61046927SAndroid Build Coastguard Worker#  'gpu/presplit.grl',
22*61046927SAndroid Build Coastguard Worker#  'gpu/radix_sort.grl',
23*61046927SAndroid Build Coastguard Worker#  'gpu/rebraid.grl',
24*61046927SAndroid Build Coastguard Worker#  'gpu/traversal_shader.grl',
25*61046927SAndroid Build Coastguard Worker]
26*61046927SAndroid Build Coastguard Worker
27*61046927SAndroid Build Coastguard Workergrl_lib_args = []
28*61046927SAndroid Build Coastguard Workerforeach libfile : grl_lib_files
29*61046927SAndroid Build Coastguard Worker  grl_lib_args += '--library'
30*61046927SAndroid Build Coastguard Worker  grl_lib_args += files(libfile)
31*61046927SAndroid Build Coastguard Workerendforeach
32*61046927SAndroid Build Coastguard Worker
33*61046927SAndroid Build Coastguard Workergrl_genX_files = [
34*61046927SAndroid Build Coastguard Worker  'genX_grl_dispatch.c',
35*61046927SAndroid Build Coastguard Worker  'genX_grl_uuid.cpp',
36*61046927SAndroid Build Coastguard Worker]
37*61046927SAndroid Build Coastguard Worker
38*61046927SAndroid Build Coastguard Workergrl_lib_args = []
39*61046927SAndroid Build Coastguard Workerforeach libfile : grl_lib_files
40*61046927SAndroid Build Coastguard Worker  grl_lib_args += '--library'
41*61046927SAndroid Build Coastguard Worker  grl_lib_args += files(libfile)
42*61046927SAndroid Build Coastguard Workerendforeach
43*61046927SAndroid Build Coastguard Worker
44*61046927SAndroid Build Coastguard Workergrl_cl_kernel_h = custom_target(
45*61046927SAndroid Build Coastguard Worker  'grl_cl_kernel.h',
46*61046927SAndroid Build Coastguard Worker  input : ['grl_cl_kernel_gen.py', grl_grl_files, grl_lib_files],
47*61046927SAndroid Build Coastguard Worker  output : 'grl_cl_kernel.h',
48*61046927SAndroid Build Coastguard Worker  command : [
49*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT0@', '--out-h', '@OUTPUT@',
50*61046927SAndroid Build Coastguard Worker    grl_lib_args, files(grl_grl_files),
51*61046927SAndroid Build Coastguard Worker  ],
52*61046927SAndroid Build Coastguard Worker)
53*61046927SAndroid Build Coastguard Worker
54*61046927SAndroid Build Coastguard Workerhas_ply = run_command(
55*61046927SAndroid Build Coastguard Worker  prog_python, '-c',
56*61046927SAndroid Build Coastguard Worker  '''
57*61046927SAndroid Build Coastguard Workerimport ply
58*61046927SAndroid Build Coastguard Worker  ''', check : false)
59*61046927SAndroid Build Coastguard Workerif has_ply.returncode() != 0
60*61046927SAndroid Build Coastguard Worker  error('Python (3.x) ply module required to build GRL kernels.')
61*61046927SAndroid Build Coastguard Workerendif
62*61046927SAndroid Build Coastguard Worker
63*61046927SAndroid Build Coastguard Workerr = run_command(prog_python, 'grl_cl_kernel_gen.py',
64*61046927SAndroid Build Coastguard Worker                grl_lib_args, '--ls-kernels', grl_grl_files, check : false)
65*61046927SAndroid Build Coastguard Workerassert(r.returncode() == 0, 'Failed to fetch GRL CL kernels')
66*61046927SAndroid Build Coastguard Workergrl_kernels = r.stdout().strip().split()
67*61046927SAndroid Build Coastguard Worker
68*61046927SAndroid Build Coastguard Workergrl_metakernel_c = []
69*61046927SAndroid Build Coastguard Workergrl_metakernel_h = []
70*61046927SAndroid Build Coastguard Workerforeach grl_file : grl_grl_files
71*61046927SAndroid Build Coastguard Worker  base_outfile = 'grl_metakernel_' + fs.replace_suffix(fs.name(grl_file), '')
72*61046927SAndroid Build Coastguard Worker  outfiles = custom_target(
73*61046927SAndroid Build Coastguard Worker    base_outfile,
74*61046927SAndroid Build Coastguard Worker    input : ['grl_metakernel_gen.py', grl_file, grl_lib_files],
75*61046927SAndroid Build Coastguard Worker    output : [base_outfile + '.h', base_outfile + '.c'],
76*61046927SAndroid Build Coastguard Worker    command : [
77*61046927SAndroid Build Coastguard Worker      prog_python, '@INPUT0@', '--out-h', '@OUTPUT0@',
78*61046927SAndroid Build Coastguard Worker      '--out-c', '@OUTPUT1@', grl_lib_args, '@INPUT1@',
79*61046927SAndroid Build Coastguard Worker    ],
80*61046927SAndroid Build Coastguard Worker  )
81*61046927SAndroid Build Coastguard Worker  grl_metakernel_h += outfiles[0]
82*61046927SAndroid Build Coastguard Worker  grl_metakernel_c += outfiles[1]
83*61046927SAndroid Build Coastguard Workerendforeach
84*61046927SAndroid Build Coastguard Worker
85*61046927SAndroid Build Coastguard Workergrl_genX_libs = []
86*61046927SAndroid Build Coastguard Workerforeach t : [['125', 'gfx125', 'dg2'], ['200', 'gfx20', 'lnl'], ]
87*61046927SAndroid Build Coastguard Worker  verX10 = t[0]
88*61046927SAndroid Build Coastguard Worker  genX_prefix = t[1]
89*61046927SAndroid Build Coastguard Worker  platform = t[2]
90*61046927SAndroid Build Coastguard Worker
91*61046927SAndroid Build Coastguard Worker  grl_compiled_cl_kernels = []
92*61046927SAndroid Build Coastguard Worker  foreach k : grl_kernels
93*61046927SAndroid Build Coastguard Worker    # get_cl_files dumps out filename:entrypoint:libfile1,libfile2,libfile3
94*61046927SAndroid Build Coastguard Worker    cl_file = k.split(':')[0]
95*61046927SAndroid Build Coastguard Worker    entrypoint = k.split(':')[1]
96*61046927SAndroid Build Coastguard Worker    library_files = k.split(':')[2]
97*61046927SAndroid Build Coastguard Worker    kernel_prefix = '_'.join([
98*61046927SAndroid Build Coastguard Worker      genX_prefix,
99*61046927SAndroid Build Coastguard Worker      fs.replace_suffix(cl_file, '').replace('gpu/', '').replace('/', '_'),
100*61046927SAndroid Build Coastguard Worker      entrypoint
101*61046927SAndroid Build Coastguard Worker    ])
102*61046927SAndroid Build Coastguard Worker    input_args = [ files(cl_file), ]
103*61046927SAndroid Build Coastguard Worker    if library_files != ''
104*61046927SAndroid Build Coastguard Worker      foreach lib_file : library_files.split(',')
105*61046927SAndroid Build Coastguard Worker        input_args += [ lib_file ]
106*61046927SAndroid Build Coastguard Worker      endforeach
107*61046927SAndroid Build Coastguard Worker    endif
108*61046927SAndroid Build Coastguard Worker    prepended_input_args = []
109*61046927SAndroid Build Coastguard Worker    foreach input_arg : input_args
110*61046927SAndroid Build Coastguard Worker      prepended_input_args += ['--in', input_arg]
111*61046927SAndroid Build Coastguard Worker    endforeach
112*61046927SAndroid Build Coastguard Worker    outfile = kernel_prefix + '.h'
113*61046927SAndroid Build Coastguard Worker    grl_compiled_cl_kernels += custom_target(
114*61046927SAndroid Build Coastguard Worker      outfile,
115*61046927SAndroid Build Coastguard Worker      input : cl_file,
116*61046927SAndroid Build Coastguard Worker      output : outfile,
117*61046927SAndroid Build Coastguard Worker      command : [
118*61046927SAndroid Build Coastguard Worker        prog_intel_clc, '-p', platform, '--prefix', kernel_prefix,
119*61046927SAndroid Build Coastguard Worker        '-e', entrypoint, prepended_input_args, '-o', '@OUTPUT@', '--',
120*61046927SAndroid Build Coastguard Worker        '-cl-std=cl2.0', '-D__OPENCL_VERSION__=200',
121*61046927SAndroid Build Coastguard Worker        '-DMAX_HW_SIMD_WIDTH=16', '-DMAX_WORKGROUP_SIZE=16',
122*61046927SAndroid Build Coastguard Worker        '-I' + join_paths(meson.current_source_dir(), 'gpu'),
123*61046927SAndroid Build Coastguard Worker        '-I' + join_paths(meson.current_source_dir(), 'include'),
124*61046927SAndroid Build Coastguard Worker      ],
125*61046927SAndroid Build Coastguard Worker      env: ['MESA_SHADER_CACHE_DISABLE=true',
126*61046927SAndroid Build Coastguard Worker            'MESA_SPIRV_LOG_LEVEL=error'],
127*61046927SAndroid Build Coastguard Worker      depends : dep_prog_intel_clc
128*61046927SAndroid Build Coastguard Worker    )
129*61046927SAndroid Build Coastguard Worker  endforeach
130*61046927SAndroid Build Coastguard Worker
131*61046927SAndroid Build Coastguard Worker  grl_cl_kernel_c = custom_target(
132*61046927SAndroid Build Coastguard Worker    'grl_@0@_cl_kernel.c'.format(genX_prefix),
133*61046927SAndroid Build Coastguard Worker    input : ['grl_cl_kernel_gen.py', grl_grl_files, grl_lib_files],
134*61046927SAndroid Build Coastguard Worker    output : 'grl_@0@_cl_kernel.c'.format(genX_prefix),
135*61046927SAndroid Build Coastguard Worker    command : [
136*61046927SAndroid Build Coastguard Worker      prog_python, '@INPUT0@', '--out-c', '@OUTPUT@',
137*61046927SAndroid Build Coastguard Worker      grl_lib_args, '--prefix', genX_prefix, files(grl_grl_files),
138*61046927SAndroid Build Coastguard Worker    ],
139*61046927SAndroid Build Coastguard Worker  )
140*61046927SAndroid Build Coastguard Worker
141*61046927SAndroid Build Coastguard Worker  grl_genX_libs += static_library(
142*61046927SAndroid Build Coastguard Worker    'grl_@0@'.format(genX_prefix),
143*61046927SAndroid Build Coastguard Worker    [grl_cl_kernel_h, grl_compiled_cl_kernels, grl_cl_kernel_c,
144*61046927SAndroid Build Coastguard Worker     grl_genX_files, grl_metakernel_c, grl_metakernel_h],
145*61046927SAndroid Build Coastguard Worker    include_directories : [
146*61046927SAndroid Build Coastguard Worker      inc_include, inc_src,
147*61046927SAndroid Build Coastguard Worker      inc_intel,
148*61046927SAndroid Build Coastguard Worker    ],
149*61046927SAndroid Build Coastguard Worker    c_args : [
150*61046927SAndroid Build Coastguard Worker      no_override_init_args, sse2_args,
151*61046927SAndroid Build Coastguard Worker      '-DGFX_VERx10=@0@'.format(verX10),
152*61046927SAndroid Build Coastguard Worker    ],
153*61046927SAndroid Build Coastguard Worker    cpp_args : [
154*61046927SAndroid Build Coastguard Worker      sse2_args,
155*61046927SAndroid Build Coastguard Worker      '-DGFX_VERx10=@0@'.format(verX10),
156*61046927SAndroid Build Coastguard Worker    ],
157*61046927SAndroid Build Coastguard Worker    dependencies : [
158*61046927SAndroid Build Coastguard Worker      dep_valgrind, idep_nir_headers, idep_vulkan_util_headers, idep_vulkan_wsi_headers,
159*61046927SAndroid Build Coastguard Worker      idep_vulkan_runtime_headers, idep_anv_headers, idep_genxml,
160*61046927SAndroid Build Coastguard Worker    ],
161*61046927SAndroid Build Coastguard Worker    gnu_symbol_visibility : 'hidden',
162*61046927SAndroid Build Coastguard Worker  )
163*61046927SAndroid Build Coastguard Workerendforeach
164*61046927SAndroid Build Coastguard Worker
165*61046927SAndroid Build Coastguard Workerlibgrl_deps = [
166*61046927SAndroid Build Coastguard Worker  dep_valgrind,
167*61046927SAndroid Build Coastguard Worker  idep_nir_headers,
168*61046927SAndroid Build Coastguard Worker  idep_vulkan_util_headers,
169*61046927SAndroid Build Coastguard Worker  idep_vulkan_wsi_headers,
170*61046927SAndroid Build Coastguard Worker]
171*61046927SAndroid Build Coastguard Worker
172*61046927SAndroid Build Coastguard Workerlibgrl = static_library(
173*61046927SAndroid Build Coastguard Worker  'grl',
174*61046927SAndroid Build Coastguard Worker  [grl_cl_kernel_h],
175*61046927SAndroid Build Coastguard Worker  include_directories : [
176*61046927SAndroid Build Coastguard Worker    inc_include, inc_src, inc_intel,
177*61046927SAndroid Build Coastguard Worker  ],
178*61046927SAndroid Build Coastguard Worker  link_whole : [grl_genX_libs],
179*61046927SAndroid Build Coastguard Worker  dependencies : [libgrl_deps, idep_anv_headers],
180*61046927SAndroid Build Coastguard Worker)
181*61046927SAndroid Build Coastguard Workeridep_grl = declare_dependency(
182*61046927SAndroid Build Coastguard Worker  link_with : libgrl,
183*61046927SAndroid Build Coastguard Worker  dependencies : libgrl_deps,
184*61046927SAndroid Build Coastguard Worker  sources : [grl_metakernel_h, grl_cl_kernel_h],
185*61046927SAndroid Build Coastguard Worker  include_directories : include_directories('include', 'gpu'),
186*61046927SAndroid Build Coastguard Worker)
187