xref: /aosp_15_r20/external/mesa3d/src/gallium/drivers/zink/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker# Copyright © 2018 Collabora Ltd
2*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
3*61046927SAndroid Build Coastguard Worker
4*61046927SAndroid Build Coastguard Workerfiles_libzink = files(
5*61046927SAndroid Build Coastguard Worker  'zink_lower_cubemap_to_array.c',
6*61046927SAndroid Build Coastguard Worker  'nir_to_spirv/nir_to_spirv.c',
7*61046927SAndroid Build Coastguard Worker  'nir_to_spirv/spirv_builder.c',
8*61046927SAndroid Build Coastguard Worker  'zink_batch.c',
9*61046927SAndroid Build Coastguard Worker  'zink_blit.c',
10*61046927SAndroid Build Coastguard Worker  'zink_bo.c',
11*61046927SAndroid Build Coastguard Worker  'zink_clear.c',
12*61046927SAndroid Build Coastguard Worker  'zink_compiler.c',
13*61046927SAndroid Build Coastguard Worker  'zink_context.c',
14*61046927SAndroid Build Coastguard Worker  'zink_kopper.c',
15*61046927SAndroid Build Coastguard Worker  'zink_descriptors.c',
16*61046927SAndroid Build Coastguard Worker  'zink_draw.cpp',
17*61046927SAndroid Build Coastguard Worker  'zink_fence.c',
18*61046927SAndroid Build Coastguard Worker  'zink_format.c',
19*61046927SAndroid Build Coastguard Worker  'zink_framebuffer.c',
20*61046927SAndroid Build Coastguard Worker  'zink_pipeline.c',
21*61046927SAndroid Build Coastguard Worker  'zink_program.c',
22*61046927SAndroid Build Coastguard Worker  'zink_query.c',
23*61046927SAndroid Build Coastguard Worker  'zink_render_pass.c',
24*61046927SAndroid Build Coastguard Worker  'zink_resource.c',
25*61046927SAndroid Build Coastguard Worker  'zink_screen.c',
26*61046927SAndroid Build Coastguard Worker  'zink_state.c',
27*61046927SAndroid Build Coastguard Worker  'zink_surface.c',
28*61046927SAndroid Build Coastguard Worker  'zink_synchronization.cpp',
29*61046927SAndroid Build Coastguard Worker)
30*61046927SAndroid Build Coastguard Worker
31*61046927SAndroid Build Coastguard Workerzink_device_info = custom_target(
32*61046927SAndroid Build Coastguard Worker  'zink_device_info.c',
33*61046927SAndroid Build Coastguard Worker  input : ['zink_device_info.py'],
34*61046927SAndroid Build Coastguard Worker  output : ['zink_device_info.h', 'zink_device_info.c'],
35*61046927SAndroid Build Coastguard Worker  command : [
36*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT@', '@OUTPUT@', vk_api_xml
37*61046927SAndroid Build Coastguard Worker  ]
38*61046927SAndroid Build Coastguard Worker)
39*61046927SAndroid Build Coastguard Worker
40*61046927SAndroid Build Coastguard Workerzink_instance = custom_target(
41*61046927SAndroid Build Coastguard Worker  'zink_instance.c',
42*61046927SAndroid Build Coastguard Worker  input : ['zink_instance.py'],
43*61046927SAndroid Build Coastguard Worker  output : ['zink_instance.h', 'zink_instance.c'],
44*61046927SAndroid Build Coastguard Worker  command : [
45*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT@', '@OUTPUT@', vk_api_xml
46*61046927SAndroid Build Coastguard Worker  ]
47*61046927SAndroid Build Coastguard Worker)
48*61046927SAndroid Build Coastguard Worker
49*61046927SAndroid Build Coastguard Workerzink_nir_algebraic_c = custom_target(
50*61046927SAndroid Build Coastguard Worker  'zink_nir_algebraic.c',
51*61046927SAndroid Build Coastguard Worker  input : 'nir_to_spirv/zink_nir_algebraic.py',
52*61046927SAndroid Build Coastguard Worker  output : 'zink_nir_algebraic.c',
53*61046927SAndroid Build Coastguard Worker  command : [
54*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT@', '-p', dir_compiler_nir,
55*61046927SAndroid Build Coastguard Worker  ],
56*61046927SAndroid Build Coastguard Worker  capture : true,
57*61046927SAndroid Build Coastguard Worker  depend_files : nir_algebraic_depends,
58*61046927SAndroid Build Coastguard Worker)
59*61046927SAndroid Build Coastguard Worker
60*61046927SAndroid Build Coastguard Workerzink_c_args = []
61*61046927SAndroid Build Coastguard Workerinc_zink_vk = []
62*61046927SAndroid Build Coastguard Worker
63*61046927SAndroid Build Coastguard Workerif host_machine.system() == 'darwin'
64*61046927SAndroid Build Coastguard Worker
65*61046927SAndroid Build Coastguard Worker  # MoltenVK options
66*61046927SAndroid Build Coastguard Worker  if with_moltenvk_dir != ''
67*61046927SAndroid Build Coastguard Worker    fs = import('fs')
68*61046927SAndroid Build Coastguard Worker    # Vulkan SDK 1.3.250 to 1.3.268 support
69*61046927SAndroid Build Coastguard Worker    moltenvk_includes = join_paths(with_moltenvk_dir, 'MoltenVK', 'include')
70*61046927SAndroid Build Coastguard Worker    if not fs.is_dir(moltenvk_includes)
71*61046927SAndroid Build Coastguard Worker      # Vulkan SDK 1.3.275 onwards support
72*61046927SAndroid Build Coastguard Worker      moltenvk_includes = join_paths(with_moltenvk_dir, 'macos', 'include')
73*61046927SAndroid Build Coastguard Worker      if not fs.is_dir(moltenvk_includes)
74*61046927SAndroid Build Coastguard Worker        # MoltenVK from brew support
75*61046927SAndroid Build Coastguard Worker        moltenvk_includes = join_paths(with_moltenvk_dir, 'include')
76*61046927SAndroid Build Coastguard Worker        if not fs.is_dir(moltenvk_includes)
77*61046927SAndroid Build Coastguard Worker          error(f'moltenvk includes cannot be found in moltenvk-dir="@with_moltenvk_dir@"')
78*61046927SAndroid Build Coastguard Worker        endif
79*61046927SAndroid Build Coastguard Worker      endif
80*61046927SAndroid Build Coastguard Worker    endif
81*61046927SAndroid Build Coastguard Worker    inc_zink_vk += include_directories(moltenvk_includes)
82*61046927SAndroid Build Coastguard Worker  else
83*61046927SAndroid Build Coastguard Worker    error('moltenvk-dir is required but not set.')
84*61046927SAndroid Build Coastguard Worker  endif
85*61046927SAndroid Build Coastguard Worker
86*61046927SAndroid Build Coastguard Worker  zink_c_args += ['-x','objective-c'] # Put compiler into objective-C mode to allow for MacOS types, like IOSurface and CAMetalLayer
87*61046927SAndroid Build Coastguard Worker  zink_c_args += ['-iframework' , 'Foundation']
88*61046927SAndroid Build Coastguard Worker
89*61046927SAndroid Build Coastguard Workerendif
90*61046927SAndroid Build Coastguard Worker
91*61046927SAndroid Build Coastguard Workerlibzink = static_library(
92*61046927SAndroid Build Coastguard Worker  'zink',
93*61046927SAndroid Build Coastguard Worker  [files_libzink, zink_device_info, zink_instance, zink_nir_algebraic_c, vk_dispatch_table],
94*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
95*61046927SAndroid Build Coastguard Worker  include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_vulkan_util, inc_zink_vk],
96*61046927SAndroid Build Coastguard Worker  link_args : [ld_args_build_id],
97*61046927SAndroid Build Coastguard Worker  dependencies: [
98*61046927SAndroid Build Coastguard Worker    idep_nir_headers, idep_mesautil, idep_vulkan_util_headers,
99*61046927SAndroid Build Coastguard Worker    idep_vulkan_wsi_defines, idep_vulkan_util, dep_libdrm, vulkan_wsi_deps
100*61046927SAndroid Build Coastguard Worker  ],
101*61046927SAndroid Build Coastguard Worker  c_args: zink_c_args,
102*61046927SAndroid Build Coastguard Worker)
103*61046927SAndroid Build Coastguard Worker
104*61046927SAndroid Build Coastguard Workerdriver_zink = declare_dependency(
105*61046927SAndroid Build Coastguard Worker  compile_args : '-DGALLIUM_ZINK',
106*61046927SAndroid Build Coastguard Worker  link_with : [libzink],
107*61046927SAndroid Build Coastguard Worker)
108*61046927SAndroid Build Coastguard Worker
109*61046927SAndroid Build Coastguard Workerif with_tests
110*61046927SAndroid Build Coastguard Worker  test(
111*61046927SAndroid Build Coastguard Worker    'zink_format_test',
112*61046927SAndroid Build Coastguard Worker    executable(
113*61046927SAndroid Build Coastguard Worker      'zink_format_test',
114*61046927SAndroid Build Coastguard Worker      ['zink_format_test.c', 'zink_format.c'],
115*61046927SAndroid Build Coastguard Worker      dependencies : [idep_mesautil, idep_vulkan_util],
116*61046927SAndroid Build Coastguard Worker      include_directories : [inc_gallium, inc_gallium_aux, inc_include, inc_src],
117*61046927SAndroid Build Coastguard Worker    ),
118*61046927SAndroid Build Coastguard Worker    suite : ['zink'],
119*61046927SAndroid Build Coastguard Worker  )
120*61046927SAndroid Build Coastguard Workerendif
121