From 41184c21dfeff5c879d177fc57f9ea522ba35021 Mon Sep 17 00:00:00 2001 From: Jamie Madill Date: Thu, 29 Sep 2022 10:50:39 -0400 Subject: [PATCH] Add support for building Mesa + Zink. Uses a conditional gclient variable "angle_mesa". You must set this to True in your .gclient to download and configure Mesa. After that you must also set angle_build_mesa=true in your GN args. We call through to meson in order to setup and build. Mesa sources and targets are written into an auto-generated GNI file. We must update this file on the same cadence as Mesa rolls. Because the version of libdrm we use in our sysroot is older than Mesa requires, this CL also includes a custom libdrm build. Also in order to run bison and flex on the old sysroot that Chrome infra runs with, this CL includes a new version of flex and bison that run without newer versions of GLIBC. Bug: angleproject:7689 Change-Id: I1aeeda1e6f3cf1d5f878aeab5209afa7e1fb5324 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3933062 Reviewed-by: Cody Northrop Reviewed-by: Shahbaz Youssefi Commit-Queue: Jamie Madill --- .gitignore | 2 + .vpython3 | 11 + BUILD.gn | 3 + DEPS | 29 + gni/angle.gni | 3 + .../ANGLE_shader_preprocessor.json | 4 +- .../ANGLE_shader_translator.json | 4 +- third_party/mesa/.gitignore | 3 + third_party/mesa/BUILD.gn | 58 + third_party/mesa/angle_cross.ini | 7 + third_party/mesa/mesa_autogen.gni | 1004 +++++++++++++++++ third_party/mesa/mesa_build.py | 327 ++++++ tools/flex-bison/linux/bison.sha1 | 2 +- tools/flex-bison/linux/flex.sha1 | 2 +- 14 files changed, 1453 insertions(+), 6 deletions(-) create mode 100644 third_party/mesa/.gitignore create mode 100644 third_party/mesa/BUILD.gn create mode 100644 third_party/mesa/angle_cross.ini create mode 100644 third_party/mesa/mesa_autogen.gni create mode 100755 third_party/mesa/mesa_build.py diff --git a/.gitignore b/.gitignore index 96fcc96eb..1819e6c63 100644 --- a/.gitignore +++ b/.gitignore @@ -52,10 +52,12 @@ /third_party/jdk/extras/java_8 /third_party/jinja2 /third_party/jsoncpp +/third_party/libdrm /third_party/libjpeg_turbo /third_party/libpng/src /third_party/llvm-build /third_party/markupsafe +/third_party/meson /third_party/nasm /third_party/ninja /third_party/OpenCL-Docs/src diff --git a/.vpython3 b/.vpython3 index 50d00599d..968a173f6 100644 --- a/.vpython3 +++ b/.vpython3 @@ -517,3 +517,14 @@ wheel: < name: "infra/python/wheels/selenium-py3" version: "version:3.14.0" > + +# Used by meson +wheel: < + name: "infra/python/wheels/markupsafe/${vpython_platform}" + version: "version:2.0.1" +> + +wheel: < + name: "infra/python/wheels/mako-py3" + version: "version:1.2.3" +> diff --git a/BUILD.gn b/BUILD.gn index 9a0e62dd6..ba57cab99 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -88,6 +88,9 @@ if (angle_build_all) { if (angle_enable_cl) { deps += [ "$angle_root/src/libOpenCL:angle_cl" ] } + if (angle_build_mesa) { + deps += [ "$angle_root/third_party/mesa" ] + } } } diff --git a/DEPS b/DEPS index 0b9b2c057..aa344cb77 100644 --- a/DEPS +++ b/DEPS @@ -38,6 +38,9 @@ vars = { # build ARC++ support libraries. 'checkout_android_native_support': 'checkout_android or checkout_chromeos', + # Check out Mesa and libdrm in ANGLE's third_party folder. + 'angle_mesa': False, + # Version of Chromium our Chromium-based DEPS are mirrored from. 'chromium_revision': 'c8d10c0b09aba42a2849e283bfea79db014d2ac5', # We never want to checkout chromium, @@ -416,6 +419,12 @@ deps = { 'condition': 'checkout_android and not build_with_chromium', }, + # We use the upstream/main branch. + 'third_party/libdrm': { + 'url': '{chromium_git}/chromiumos/third_party/libdrm@474894ed17a037a464e5bd845a0765a50f647898', + 'condition': 'angle_mesa', + }, + # libjpeg_turbo is used by glmark2. 'third_party/libjpeg_turbo': { 'url': '{chromium_git}/chromium/deps/libjpeg_turbo.git@ed683925e4897a84b3bffc5c1414c85b97a129a3', @@ -464,6 +473,18 @@ deps = { 'condition': 'checkout_android and not build_with_chromium', }, + # We use the upstream/main branch. + 'third_party/mesa/src': { + 'url': '{chromium_git}/external/github.com/Mesa3D/mesa@0a6aa58acae2a5b27ef783c22e976ec9b0d33ddc', + 'condition': 'angle_mesa', + }, + + # We use the upstream/master branch. + 'third_party/meson': { + 'url': '{chromium_git}/external/github.com/mesonbuild/meson@9fd5eb605674067ce6f8876dc27e5e116024e8a6', + 'condition': 'angle_mesa', + }, + 'third_party/nasm': { 'url': '{chromium_git}/chromium/deps/nasm.git@5fd9246276814b5ebb7e56b821cedeecab9b674d', 'condition': 'not build_with_chromium', @@ -4531,6 +4552,14 @@ hooks = [ '-d', 'tools/flex-bison/windows/', ], }, + + # Set up an input file for the Mesa setup step. + { + 'name': 'mesa_input', + 'pattern': '.', + 'condition': 'angle_mesa', + 'action': [ 'python3', 'third_party/mesa/mesa_build.py', 'runhook', ], + } ] recursedeps = [ diff --git a/gni/angle.gni b/gni/angle.gni index d8971a701..7fde30572 100644 --- a/gni/angle.gni +++ b/gni/angle.gni @@ -276,6 +276,9 @@ declare_args() { # Enable overlay by default when debug layers are enabled. This is currently only implemented on # Vulkan. angle_enable_overlay = angle_enable_vulkan && angle_debug_layers_enabled + + # Build Mesa as a third party dependency + angle_build_mesa = false } declare_args() { diff --git a/scripts/code_generation_hashes/ANGLE_shader_preprocessor.json b/scripts/code_generation_hashes/ANGLE_shader_preprocessor.json index 99794eda4..d2be9d142 100644 --- a/scripts/code_generation_hashes/ANGLE_shader_preprocessor.json +++ b/scripts/code_generation_hashes/ANGLE_shader_preprocessor.json @@ -12,9 +12,9 @@ "src/compiler/preprocessor/preprocessor_tab_autogen.cpp": "3f15f3cc604a1ac5668711728ddd8430", "tools/flex-bison/linux/bison.sha1": - "6eba651f1769883db395dd4e485ba838", + "dfc9209e0c76eddd9bed0601c6c189e5", "tools/flex-bison/linux/flex.sha1": - "3e73ddbd801cf3e8ed759c49572c8bf2", + "621fc8947f2114812fb7a2c9df71bdcf", "tools/flex-bison/windows/bison.exe.sha1": "fd6d2461a2c256179faca7f5f142e689", "tools/flex-bison/windows/flex.exe.sha1": diff --git a/scripts/code_generation_hashes/ANGLE_shader_translator.json b/scripts/code_generation_hashes/ANGLE_shader_translator.json index 6de5bbe81..cf55cf681 100644 --- a/scripts/code_generation_hashes/ANGLE_shader_translator.json +++ b/scripts/code_generation_hashes/ANGLE_shader_translator.json @@ -14,9 +14,9 @@ "src/compiler/translator/glslang_tab_autogen.h": "028bdaebf359aefbcdaafae466993ebe", "tools/flex-bison/linux/bison.sha1": - "6eba651f1769883db395dd4e485ba838", + "dfc9209e0c76eddd9bed0601c6c189e5", "tools/flex-bison/linux/flex.sha1": - "3e73ddbd801cf3e8ed759c49572c8bf2", + "621fc8947f2114812fb7a2c9df71bdcf", "tools/flex-bison/windows/bison.exe.sha1": "fd6d2461a2c256179faca7f5f142e689", "tools/flex-bison/windows/flex.exe.sha1": diff --git a/third_party/mesa/.gitignore b/third_party/mesa/.gitignore new file mode 100644 index 000000000..7abb817e0 --- /dev/null +++ b/third_party/mesa/.gitignore @@ -0,0 +1,3 @@ +libdrm.stamp +mesa.stamp +src \ No newline at end of file diff --git a/third_party/mesa/BUILD.gn b/third_party/mesa/BUILD.gn new file mode 100644 index 000000000..d1cf33092 --- /dev/null +++ b/third_party/mesa/BUILD.gn @@ -0,0 +1,58 @@ +# Copyright 2022 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("../../gni/angle.gni") +import("mesa_autogen.gni") + +angle_mesa_build_dir = "$root_build_dir/mesa" +angle_libdrm_build_dir = "$root_build_dir/libdrm" + +action("libdrm_setup") { + script = "mesa_build.py" + args = [ + "setup", + "libdrm", + rebase_path(root_build_dir, root_build_dir), + ] + sources = [ "libdrm.stamp" ] + outputs = [ "$angle_libdrm_build_dir/libdrm.stamp" ] +} + +action("libdrm") { + script = "mesa_build.py" + args = [ + "compile", + rebase_path(angle_libdrm_build_dir, root_build_dir), + ] + sources = rebase_path(angle_libdrm_sources, ".", "../libdrm") + outputs = get_path_info( + rebase_path(angle_libdrm_outputs, ".", angle_libdrm_build_dir), + "abspath") + deps = [ ":libdrm_setup" ] +} + +action("mesa_setup") { + script = "mesa_build.py" + args = [ + "setup", + "mesa", + rebase_path(root_build_dir, root_build_dir), + ] + sources = [ "mesa.stamp" ] + outputs = [ "$angle_mesa_build_dir/mesa.stamp" ] + deps = [ ":libdrm" ] +} + +action("mesa") { + script = "mesa_build.py" + args = [ + "compile", + rebase_path(angle_mesa_build_dir, root_build_dir), + ] + sources = rebase_path(angle_mesa_sources, ".", "src") + outputs = + get_path_info(rebase_path(angle_mesa_outputs, ".", angle_mesa_build_dir), + "abspath") + deps = [ ":mesa_setup" ] +} diff --git a/third_party/mesa/angle_cross.ini b/third_party/mesa/angle_cross.ini new file mode 100644 index 000000000..97906a8cf --- /dev/null +++ b/third_party/mesa/angle_cross.ini @@ -0,0 +1,7 @@ +[constants] +here = '$place/' + +[binaries] +python = 'vpython3' +python3 = 'vpython3' +pkgconfig = 'pkg-config' \ No newline at end of file diff --git a/third_party/mesa/mesa_autogen.gni b/third_party/mesa/mesa_autogen.gni new file mode 100644 index 000000000..83645268a --- /dev/null +++ b/third_party/mesa/mesa_autogen.gni @@ -0,0 +1,1004 @@ +# GENERATED FILE - DO NOT EDIT. +# Generated by mesa_build.py +# +# Copyright 2022 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# +# mesa_autogen.gni: ANGLE build information for Mesa. + +angle_mesa_outputs = [ + "src/egl/libEGL.so.1.0.0", + "src/gallium/targets/dri/libgallium_dri.so", + "src/gbm/libgbm.so.1.0.0", + "src/glx/libGL.so.1.2.0", + "src/mapi/es1api/libGLESv1_CM.so.1.1.0", + "src/mapi/es2api/libGLESv2.so.2.0.0", + "src/mapi/shared-glapi/libglapi.so.0.0.0", +] + +angle_mesa_sources = [ + "src/c11/impl/threads_posix.c", + "src/c11/impl/time.c", + "src/compiler/glsl/ast_array_index.cpp", + "src/compiler/glsl/ast_expr.cpp", + "src/compiler/glsl/ast_function.cpp", + "src/compiler/glsl/ast_to_hir.cpp", + "src/compiler/glsl/ast_type.cpp", + "src/compiler/glsl/builtin_functions.cpp", + "src/compiler/glsl/builtin_types.cpp", + "src/compiler/glsl/builtin_variables.cpp", + "src/compiler/glsl/float64.glsl", + "src/compiler/glsl/generate_ir.cpp", + "src/compiler/glsl/gl_nir_link_atomics.c", + "src/compiler/glsl/gl_nir_link_uniform_blocks.c", + "src/compiler/glsl/gl_nir_link_uniform_initializers.c", + "src/compiler/glsl/gl_nir_link_uniforms.c", + "src/compiler/glsl/gl_nir_link_varyings.c", + "src/compiler/glsl/gl_nir_link_xfb.c", + "src/compiler/glsl/gl_nir_linker.c", + "src/compiler/glsl/gl_nir_lower_atomics.c", + "src/compiler/glsl/gl_nir_lower_buffers.c", + "src/compiler/glsl/gl_nir_lower_images.c", + "src/compiler/glsl/gl_nir_lower_packed_varyings.c", + "src/compiler/glsl/gl_nir_lower_samplers.c", + "src/compiler/glsl/gl_nir_lower_samplers_as_deref.c", + "src/compiler/glsl/gl_nir_lower_xfb_varying.c", + "src/compiler/glsl/gl_nir_opt_dead_builtin_varyings.c", + "src/compiler/glsl/glcpp/glcpp-lex.l", + "src/compiler/glsl/glcpp/glcpp-parse.y", + "src/compiler/glsl/glcpp/glcpp.c", + "src/compiler/glsl/glcpp/pp.c", + "src/compiler/glsl/glcpp/pp_standalone_scaffolding.c", + "src/compiler/glsl/glsl_lexer.ll", + "src/compiler/glsl/glsl_parser.yy", + "src/compiler/glsl/glsl_parser_extras.cpp", + "src/compiler/glsl/glsl_symbol_table.cpp", + "src/compiler/glsl/glsl_to_nir.cpp", + "src/compiler/glsl/hir_field_selection.cpp", + "src/compiler/glsl/ir.cpp", + "src/compiler/glsl/ir_array_refcount.cpp", + "src/compiler/glsl/ir_basic_block.cpp", + "src/compiler/glsl/ir_builder.cpp", + "src/compiler/glsl/ir_builder_print_visitor.cpp", + "src/compiler/glsl/ir_clone.cpp", + "src/compiler/glsl/ir_constant_expression.cpp", + "src/compiler/glsl/ir_equals.cpp", + "src/compiler/glsl/ir_expression_flattening.cpp", + "src/compiler/glsl/ir_expression_operation.py", + "src/compiler/glsl/ir_function.cpp", + "src/compiler/glsl/ir_function_can_inline.cpp", + "src/compiler/glsl/ir_function_detect_recursion.cpp", + "src/compiler/glsl/ir_hierarchical_visitor.cpp", + "src/compiler/glsl/ir_hv_accept.cpp", + "src/compiler/glsl/ir_print_visitor.cpp", + "src/compiler/glsl/ir_reader.cpp", + "src/compiler/glsl/ir_rvalue_visitor.cpp", + "src/compiler/glsl/ir_set_program_inouts.cpp", + "src/compiler/glsl/ir_validate.cpp", + "src/compiler/glsl/ir_variable_refcount.cpp", + "src/compiler/glsl/link_functions.cpp", + "src/compiler/glsl/link_interface_blocks.cpp", + "src/compiler/glsl/link_uniform_block_active_visitor.cpp", + "src/compiler/glsl/link_uniform_blocks.cpp", + "src/compiler/glsl/link_uniforms.cpp", + "src/compiler/glsl/link_varyings.cpp", + "src/compiler/glsl/linker.cpp", + "src/compiler/glsl/linker_util.cpp", + "src/compiler/glsl/lower_blend_equation_advanced.cpp", + "src/compiler/glsl/lower_builtins.cpp", + "src/compiler/glsl/lower_discard.cpp", + "src/compiler/glsl/lower_discard_flow.cpp", + "src/compiler/glsl/lower_distance.cpp", + "src/compiler/glsl/lower_instructions.cpp", + "src/compiler/glsl/lower_int64.cpp", + "src/compiler/glsl/lower_jumps.cpp", + "src/compiler/glsl/lower_mat_op_to_vec.cpp", + "src/compiler/glsl/lower_named_interface_blocks.cpp", + "src/compiler/glsl/lower_output_reads.cpp", + "src/compiler/glsl/lower_packing_builtins.cpp", + "src/compiler/glsl/lower_precision.cpp", + "src/compiler/glsl/lower_subroutine.cpp", + "src/compiler/glsl/lower_tess_level.cpp", + "src/compiler/glsl/lower_vec_index_to_cond_assign.cpp", + "src/compiler/glsl/lower_vec_index_to_swizzle.cpp", + "src/compiler/glsl/lower_vector_derefs.cpp", + "src/compiler/glsl/lower_vector_insert.cpp", + "src/compiler/glsl/main.cpp", + "src/compiler/glsl/opt_algebraic.cpp", + "src/compiler/glsl/opt_array_splitting.cpp", + "src/compiler/glsl/opt_constant_folding.cpp", + "src/compiler/glsl/opt_constant_propagation.cpp", + "src/compiler/glsl/opt_constant_variable.cpp", + "src/compiler/glsl/opt_copy_propagation_elements.cpp", + "src/compiler/glsl/opt_dead_builtin_variables.cpp", + "src/compiler/glsl/opt_dead_code.cpp", + "src/compiler/glsl/opt_dead_code_local.cpp", + "src/compiler/glsl/opt_dead_functions.cpp", + "src/compiler/glsl/opt_flatten_nested_if_blocks.cpp", + "src/compiler/glsl/opt_flip_matrices.cpp", + "src/compiler/glsl/opt_function_inlining.cpp", + "src/compiler/glsl/opt_if_simplification.cpp", + "src/compiler/glsl/opt_minmax.cpp", + "src/compiler/glsl/opt_rebalance_tree.cpp", + "src/compiler/glsl/opt_structure_splitting.cpp", + "src/compiler/glsl/opt_tree_grafting.cpp", + "src/compiler/glsl/propagate_invariance.cpp", + "src/compiler/glsl/s_expression.cpp", + "src/compiler/glsl/serialize.cpp", + "src/compiler/glsl/shader_cache.cpp", + "src/compiler/glsl/standalone.cpp", + "src/compiler/glsl/standalone_scaffolding.cpp", + "src/compiler/glsl/string_to_uint_map.cpp", + "src/compiler/glsl/test.cpp", + "src/compiler/glsl/test_optpass.cpp", + "src/compiler/glsl_types.cpp", + "src/compiler/nir/nir.c", + "src/compiler/nir/nir_builder.c", + "src/compiler/nir/nir_builder_opcodes_h.py", + "src/compiler/nir/nir_builtin_builder.c", + "src/compiler/nir/nir_clone.c", + "src/compiler/nir/nir_constant_expressions.py", + "src/compiler/nir/nir_control_flow.c", + "src/compiler/nir/nir_convert_ycbcr.c", + "src/compiler/nir/nir_deref.c", + "src/compiler/nir/nir_divergence_analysis.c", + "src/compiler/nir/nir_dominance.c", + "src/compiler/nir/nir_from_ssa.c", + "src/compiler/nir/nir_gather_info.c", + "src/compiler/nir/nir_gather_ssa_types.c", + "src/compiler/nir/nir_gather_xfb_info.c", + "src/compiler/nir/nir_group_loads.c", + "src/compiler/nir/nir_gs_count_vertices.c", + "src/compiler/nir/nir_inline_functions.c", + "src/compiler/nir/nir_inline_uniforms.c", + "src/compiler/nir/nir_instr_set.c", + "src/compiler/nir/nir_intrinsics_c.py", + "src/compiler/nir/nir_intrinsics_h.py", + "src/compiler/nir/nir_intrinsics_indices_h.py", + "src/compiler/nir/nir_linking_helpers.c", + "src/compiler/nir/nir_liveness.c", + "src/compiler/nir/nir_loop_analyze.c", + "src/compiler/nir/nir_lower_alpha_test.c", + "src/compiler/nir/nir_lower_alu.c", + "src/compiler/nir/nir_lower_alu_width.c", + "src/compiler/nir/nir_lower_amul.c", + "src/compiler/nir/nir_lower_array_deref_of_vec.c", + "src/compiler/nir/nir_lower_atomics_to_ssbo.c", + "src/compiler/nir/nir_lower_bit_size.c", + "src/compiler/nir/nir_lower_bitmap.c", + "src/compiler/nir/nir_lower_blend.c", + "src/compiler/nir/nir_lower_bool_to_bitsize.c", + "src/compiler/nir/nir_lower_bool_to_float.c", + "src/compiler/nir/nir_lower_bool_to_int32.c", + "src/compiler/nir/nir_lower_cl_images.c", + "src/compiler/nir/nir_lower_clamp_color_outputs.c", + "src/compiler/nir/nir_lower_clip.c", + "src/compiler/nir/nir_lower_clip_cull_distance_arrays.c", + "src/compiler/nir/nir_lower_clip_disable.c", + "src/compiler/nir/nir_lower_clip_halfz.c", + "src/compiler/nir/nir_lower_const_arrays_to_uniforms.c", + "src/compiler/nir/nir_lower_convert_alu_types.c", + "src/compiler/nir/nir_lower_discard_if.c", + "src/compiler/nir/nir_lower_discard_or_demote.c", + "src/compiler/nir/nir_lower_double_ops.c", + "src/compiler/nir/nir_lower_drawpixels.c", + "src/compiler/nir/nir_lower_fb_read.c", + "src/compiler/nir/nir_lower_flatshade.c", + "src/compiler/nir/nir_lower_flrp.c", + "src/compiler/nir/nir_lower_fp16_conv.c", + "src/compiler/nir/nir_lower_fragcolor.c", + "src/compiler/nir/nir_lower_fragcoord_wtrans.c", + "src/compiler/nir/nir_lower_frexp.c", + "src/compiler/nir/nir_lower_global_vars_to_local.c", + "src/compiler/nir/nir_lower_goto_ifs.c", + "src/compiler/nir/nir_lower_gs_intrinsics.c", + "src/compiler/nir/nir_lower_idiv.c", + "src/compiler/nir/nir_lower_image.c", + "src/compiler/nir/nir_lower_indirect_derefs.c", + "src/compiler/nir/nir_lower_input_attachments.c", + "src/compiler/nir/nir_lower_int64.c", + "src/compiler/nir/nir_lower_int_to_float.c", + "src/compiler/nir/nir_lower_interpolation.c", + "src/compiler/nir/nir_lower_io.c", + "src/compiler/nir/nir_lower_io_arrays_to_elements.c", + "src/compiler/nir/nir_lower_io_to_scalar.c", + "src/compiler/nir/nir_lower_io_to_temporaries.c", + "src/compiler/nir/nir_lower_io_to_vector.c", + "src/compiler/nir/nir_lower_is_helper_invocation.c", + "src/compiler/nir/nir_lower_load_const_to_scalar.c", + "src/compiler/nir/nir_lower_locals_to_regs.c", + "src/compiler/nir/nir_lower_mediump.c", + "src/compiler/nir/nir_lower_memcpy.c", + "src/compiler/nir/nir_lower_memory_model.c", + "src/compiler/nir/nir_lower_multiview.c", + "src/compiler/nir/nir_lower_non_uniform_access.c", + "src/compiler/nir/nir_lower_packing.c", + "src/compiler/nir/nir_lower_passthrough_edgeflags.c", + "src/compiler/nir/nir_lower_patch_vertices.c", + "src/compiler/nir/nir_lower_phis_to_scalar.c", + "src/compiler/nir/nir_lower_pntc_ytransform.c", + "src/compiler/nir/nir_lower_point_size.c", + "src/compiler/nir/nir_lower_point_size_mov.c", + "src/compiler/nir/nir_lower_point_smooth.c", + "src/compiler/nir/nir_lower_poly_line_smooth.c", + "src/compiler/nir/nir_lower_printf.c", + "src/compiler/nir/nir_lower_readonly_images_to_tex.c", + "src/compiler/nir/nir_lower_regs_to_ssa.c", + "src/compiler/nir/nir_lower_returns.c", + "src/compiler/nir/nir_lower_samplers.c", + "src/compiler/nir/nir_lower_scratch.c", + "src/compiler/nir/nir_lower_shader_calls.c", + "src/compiler/nir/nir_lower_single_sampled.c", + "src/compiler/nir/nir_lower_ssbo.c", + "src/compiler/nir/nir_lower_subgroups.c", + "src/compiler/nir/nir_lower_system_values.c", + "src/compiler/nir/nir_lower_sysvals_to_varyings.c", + "src/compiler/nir/nir_lower_task_shader.c", + "src/compiler/nir/nir_lower_tex.c", + "src/compiler/nir/nir_lower_tex_shadow.c", + "src/compiler/nir/nir_lower_texcoord_replace.c", + "src/compiler/nir/nir_lower_to_source_mods.c", + "src/compiler/nir/nir_lower_two_sided_color.c", + "src/compiler/nir/nir_lower_ubo_vec4.c", + "src/compiler/nir/nir_lower_undef_to_zero.c", + "src/compiler/nir/nir_lower_uniforms_to_ubo.c", + "src/compiler/nir/nir_lower_var_copies.c", + "src/compiler/nir/nir_lower_variable_initializers.c", + "src/compiler/nir/nir_lower_vars_to_ssa.c", + "src/compiler/nir/nir_lower_vec3_to_vec4.c", + "src/compiler/nir/nir_lower_vec_to_movs.c", + "src/compiler/nir/nir_lower_viewport_transform.c", + "src/compiler/nir/nir_lower_wpos_center.c", + "src/compiler/nir/nir_lower_wpos_ytransform.c", + "src/compiler/nir/nir_lower_wrmasks.c", + "src/compiler/nir/nir_metadata.c", + "src/compiler/nir/nir_move_vec_src_uses_to_dest.c", + "src/compiler/nir/nir_normalize_cubemap_coords.c", + "src/compiler/nir/nir_opcodes_c.py", + "src/compiler/nir/nir_opcodes_h.py", + "src/compiler/nir/nir_opt_access.c", + "src/compiler/nir/nir_opt_algebraic.py", + "src/compiler/nir/nir_opt_barriers.c", + "src/compiler/nir/nir_opt_combine_stores.c", + "src/compiler/nir/nir_opt_comparison_pre.c", + "src/compiler/nir/nir_opt_conditional_discard.c", + "src/compiler/nir/nir_opt_constant_folding.c", + "src/compiler/nir/nir_opt_copy_prop_vars.c", + "src/compiler/nir/nir_opt_copy_propagate.c", + "src/compiler/nir/nir_opt_cse.c", + "src/compiler/nir/nir_opt_dce.c", + "src/compiler/nir/nir_opt_dead_cf.c", + "src/compiler/nir/nir_opt_dead_write_vars.c", + "src/compiler/nir/nir_opt_find_array_copies.c", + "src/compiler/nir/nir_opt_fragdepth.c", + "src/compiler/nir/nir_opt_gcm.c", + "src/compiler/nir/nir_opt_idiv_const.c", + "src/compiler/nir/nir_opt_if.c", + "src/compiler/nir/nir_opt_intrinsics.c", + "src/compiler/nir/nir_opt_large_constants.c", + "src/compiler/nir/nir_opt_load_store_vectorize.c", + "src/compiler/nir/nir_opt_loop_unroll.c", + "src/compiler/nir/nir_opt_memcpy.c", + "src/compiler/nir/nir_opt_move.c", + "src/compiler/nir/nir_opt_move_discards_to_top.c", + "src/compiler/nir/nir_opt_non_uniform_access.c", + "src/compiler/nir/nir_opt_offsets.c", + "src/compiler/nir/nir_opt_peephole_select.c", + "src/compiler/nir/nir_opt_phi_precision.c", + "src/compiler/nir/nir_opt_preamble.c", + "src/compiler/nir/nir_opt_ray_queries.c", + "src/compiler/nir/nir_opt_rematerialize_compares.c", + "src/compiler/nir/nir_opt_remove_phis.c", + "src/compiler/nir/nir_opt_shrink_stores.c", + "src/compiler/nir/nir_opt_shrink_vectors.c", + "src/compiler/nir/nir_opt_sink.c", + "src/compiler/nir/nir_opt_trivial_continues.c", + "src/compiler/nir/nir_opt_undef.c", + "src/compiler/nir/nir_opt_uniform_atomics.c", + "src/compiler/nir/nir_opt_vectorize.c", + "src/compiler/nir/nir_phi_builder.c", + "src/compiler/nir/nir_print.c", + "src/compiler/nir/nir_propagate_invariant.c", + "src/compiler/nir/nir_range_analysis.c", + "src/compiler/nir/nir_remove_dead_variables.c", + "src/compiler/nir/nir_repair_ssa.c", + "src/compiler/nir/nir_scale_fdiv.c", + "src/compiler/nir/nir_schedule.c", + "src/compiler/nir/nir_search.c", + "src/compiler/nir/nir_serialize.c", + "src/compiler/nir/nir_split_64bit_vec3_and_vec4.c", + "src/compiler/nir/nir_split_per_member_structs.c", + "src/compiler/nir/nir_split_var_copies.c", + "src/compiler/nir/nir_split_vars.c", + "src/compiler/nir/nir_sweep.c", + "src/compiler/nir/nir_to_lcssa.c", + "src/compiler/nir/nir_validate.c", + "src/compiler/nir/nir_worklist.c", + "src/compiler/nir_types.cpp", + "src/compiler/shader_enums.c", + "src/compiler/spirv/gl_spirv.c", + "src/compiler/spirv/nir_load_libclc.c", + "src/compiler/spirv/nir_lower_libclc.c", + "src/compiler/spirv/spir-v.xml", + "src/compiler/spirv/spirv.core.grammar.json", + "src/compiler/spirv/spirv2nir.c", + "src/compiler/spirv/spirv_info_c.py", + "src/compiler/spirv/spirv_to_nir.c", + "src/compiler/spirv/vtn_alu.c", + "src/compiler/spirv/vtn_amd.c", + "src/compiler/spirv/vtn_cfg.c", + "src/compiler/spirv/vtn_gather_types_c.py", + "src/compiler/spirv/vtn_generator_ids_h.py", + "src/compiler/spirv/vtn_glsl450.c", + "src/compiler/spirv/vtn_opencl.c", + "src/compiler/spirv/vtn_subgroup.c", + "src/compiler/spirv/vtn_variables.c", + "src/egl/generate/egl.xml", + "src/egl/generate/egl_other.xml", + "src/egl/generate/gen_egl_dispatch.py", + "src/egl/main/egl.def.in", + "src/gallium/auxiliary/cso_cache/cso_cache.c", + "src/gallium/auxiliary/cso_cache/cso_context.c", + "src/gallium/auxiliary/cso_cache/cso_hash.c", + "src/gallium/auxiliary/draw/draw_context.c", + "src/gallium/auxiliary/draw/draw_fs.c", + "src/gallium/auxiliary/draw/draw_gs.c", + "src/gallium/auxiliary/draw/draw_pipe.c", + "src/gallium/auxiliary/draw/draw_pipe_aaline.c", + "src/gallium/auxiliary/draw/draw_pipe_aapoint.c", + "src/gallium/auxiliary/draw/draw_pipe_clip.c", + "src/gallium/auxiliary/draw/draw_pipe_cull.c", + "src/gallium/auxiliary/draw/draw_pipe_flatshade.c", + "src/gallium/auxiliary/draw/draw_pipe_offset.c", + "src/gallium/auxiliary/draw/draw_pipe_pstipple.c", + "src/gallium/auxiliary/draw/draw_pipe_stipple.c", + "src/gallium/auxiliary/draw/draw_pipe_twoside.c", + "src/gallium/auxiliary/draw/draw_pipe_unfilled.c", + "src/gallium/auxiliary/draw/draw_pipe_user_cull.c", + "src/gallium/auxiliary/draw/draw_pipe_util.c", + "src/gallium/auxiliary/draw/draw_pipe_validate.c", + "src/gallium/auxiliary/draw/draw_pipe_vbuf.c", + "src/gallium/auxiliary/draw/draw_pipe_wide_line.c", + "src/gallium/auxiliary/draw/draw_pipe_wide_point.c", + "src/gallium/auxiliary/draw/draw_prim_assembler.c", + "src/gallium/auxiliary/draw/draw_pt.c", + "src/gallium/auxiliary/draw/draw_pt_emit.c", + "src/gallium/auxiliary/draw/draw_pt_fetch.c", + "src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c", + "src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline.c", + "src/gallium/auxiliary/draw/draw_pt_post_vs.c", + "src/gallium/auxiliary/draw/draw_pt_so_emit.c", + "src/gallium/auxiliary/draw/draw_pt_util.c", + "src/gallium/auxiliary/draw/draw_pt_vsplit.c", + "src/gallium/auxiliary/draw/draw_tess.c", + "src/gallium/auxiliary/draw/draw_vertex.c", + "src/gallium/auxiliary/draw/draw_vs.c", + "src/gallium/auxiliary/draw/draw_vs_exec.c", + "src/gallium/auxiliary/draw/draw_vs_variant.c", + "src/gallium/auxiliary/driver_ddebug/dd_context.c", + "src/gallium/auxiliary/driver_ddebug/dd_draw.c", + "src/gallium/auxiliary/driver_ddebug/dd_screen.c", + "src/gallium/auxiliary/driver_noop/noop_pipe.c", + "src/gallium/auxiliary/driver_noop/noop_state.c", + "src/gallium/auxiliary/driver_rbug/rbug_context.c", + "src/gallium/auxiliary/driver_rbug/rbug_core.c", + "src/gallium/auxiliary/driver_rbug/rbug_objects.c", + "src/gallium/auxiliary/driver_rbug/rbug_screen.c", + "src/gallium/auxiliary/driver_trace/tr_context.c", + "src/gallium/auxiliary/driver_trace/tr_dump.c", + "src/gallium/auxiliary/driver_trace/tr_dump_state.c", + "src/gallium/auxiliary/driver_trace/tr_screen.c", + "src/gallium/auxiliary/driver_trace/tr_texture.c", + "src/gallium/auxiliary/hud/font.c", + "src/gallium/auxiliary/hud/hud_context.c", + "src/gallium/auxiliary/hud/hud_cpu.c", + "src/gallium/auxiliary/hud/hud_cpufreq.c", + "src/gallium/auxiliary/hud/hud_diskstat.c", + "src/gallium/auxiliary/hud/hud_driver_query.c", + "src/gallium/auxiliary/hud/hud_fps.c", + "src/gallium/auxiliary/hud/hud_nic.c", + "src/gallium/auxiliary/hud/hud_sensors_temp.c", + "src/gallium/auxiliary/nir/nir_draw_helpers.c", + "src/gallium/auxiliary/nir/nir_helpers.c", + "src/gallium/auxiliary/nir/nir_to_tgsi.c", + "src/gallium/auxiliary/nir/tgsi_to_nir.c", + "src/gallium/auxiliary/os/os_process.c", + "src/gallium/auxiliary/pipe-loader/pipe_loader.c", + "src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c", + "src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c", + "src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c", + "src/gallium/auxiliary/pipebuffer/pb_bufmgr_cache.c", + "src/gallium/auxiliary/pipebuffer/pb_bufmgr_debug.c", + "src/gallium/auxiliary/pipebuffer/pb_bufmgr_mm.c", + "src/gallium/auxiliary/pipebuffer/pb_bufmgr_slab.c", + "src/gallium/auxiliary/pipebuffer/pb_cache.c", + "src/gallium/auxiliary/pipebuffer/pb_slab.c", + "src/gallium/auxiliary/pipebuffer/pb_validate.c", + "src/gallium/auxiliary/postprocess/pp_celshade.c", + "src/gallium/auxiliary/postprocess/pp_colors.c", + "src/gallium/auxiliary/postprocess/pp_init.c", + "src/gallium/auxiliary/postprocess/pp_mlaa.c", + "src/gallium/auxiliary/postprocess/pp_program.c", + "src/gallium/auxiliary/postprocess/pp_run.c", + "src/gallium/auxiliary/rbug/rbug_connection.c", + "src/gallium/auxiliary/rbug/rbug_context.c", + "src/gallium/auxiliary/rbug/rbug_core.c", + "src/gallium/auxiliary/rbug/rbug_demarshal.c", + "src/gallium/auxiliary/rbug/rbug_shader.c", + "src/gallium/auxiliary/rbug/rbug_texture.c", + "src/gallium/auxiliary/renderonly/renderonly.c", + "src/gallium/auxiliary/rtasm/rtasm_execmem.c", + "src/gallium/auxiliary/rtasm/rtasm_x86sse.c", + "src/gallium/auxiliary/tgsi/tgsi_aa_point.c", + "src/gallium/auxiliary/tgsi/tgsi_build.c", + "src/gallium/auxiliary/tgsi/tgsi_dump.c", + "src/gallium/auxiliary/tgsi/tgsi_dynamic_indexing.c", + "src/gallium/auxiliary/tgsi/tgsi_exec.c", + "src/gallium/auxiliary/tgsi/tgsi_from_mesa.c", + "src/gallium/auxiliary/tgsi/tgsi_info.c", + "src/gallium/auxiliary/tgsi/tgsi_iterate.c", + "src/gallium/auxiliary/tgsi/tgsi_lowering.c", + "src/gallium/auxiliary/tgsi/tgsi_parse.c", + "src/gallium/auxiliary/tgsi/tgsi_point_sprite.c", + "src/gallium/auxiliary/tgsi/tgsi_sanity.c", + "src/gallium/auxiliary/tgsi/tgsi_scan.c", + "src/gallium/auxiliary/tgsi/tgsi_strings.c", + "src/gallium/auxiliary/tgsi/tgsi_text.c", + "src/gallium/auxiliary/tgsi/tgsi_transform.c", + "src/gallium/auxiliary/tgsi/tgsi_two_side.c", + "src/gallium/auxiliary/tgsi/tgsi_ureg.c", + "src/gallium/auxiliary/tgsi/tgsi_util.c", + "src/gallium/auxiliary/tgsi/tgsi_vpos.c", + "src/gallium/auxiliary/translate/translate.c", + "src/gallium/auxiliary/translate/translate_cache.c", + "src/gallium/auxiliary/translate/translate_generic.c", + "src/gallium/auxiliary/translate/translate_sse.c", + "src/gallium/auxiliary/util/u_async_debug.c", + "src/gallium/auxiliary/util/u_bitmask.c", + "src/gallium/auxiliary/util/u_blitter.c", + "src/gallium/auxiliary/util/u_cache.c", + "src/gallium/auxiliary/util/u_compute.c", + "src/gallium/auxiliary/util/u_debug_flush.c", + "src/gallium/auxiliary/util/u_debug_image.c", + "src/gallium/auxiliary/util/u_draw.c", + "src/gallium/auxiliary/util/u_draw_quad.c", + "src/gallium/auxiliary/util/u_driconf.c", + "src/gallium/auxiliary/util/u_dump_defines.c", + "src/gallium/auxiliary/util/u_dump_state.c", + "src/gallium/auxiliary/util/u_framebuffer.c", + "src/gallium/auxiliary/util/u_gen_mipmap.c", + "src/gallium/auxiliary/util/u_handle_table.c", + "src/gallium/auxiliary/util/u_helpers.c", + "src/gallium/auxiliary/util/u_index_modify.c", + "src/gallium/auxiliary/util/u_linear.c", + "src/gallium/auxiliary/util/u_live_shader_cache.c", + "src/gallium/auxiliary/util/u_log.c", + "src/gallium/auxiliary/util/u_network.c", + "src/gallium/auxiliary/util/u_prim.c", + "src/gallium/auxiliary/util/u_prim_restart.c", + "src/gallium/auxiliary/util/u_pstipple.c", + "src/gallium/auxiliary/util/u_resource.c", + "src/gallium/auxiliary/util/u_sampler.c", + "src/gallium/auxiliary/util/u_screen.c", + "src/gallium/auxiliary/util/u_simple_shaders.c", + "src/gallium/auxiliary/util/u_split_draw.c", + "src/gallium/auxiliary/util/u_suballoc.c", + "src/gallium/auxiliary/util/u_surface.c", + "src/gallium/auxiliary/util/u_tests.c", + "src/gallium/auxiliary/util/u_texture.c", + "src/gallium/auxiliary/util/u_threaded_context.c", + "src/gallium/auxiliary/util/u_tile.c", + "src/gallium/auxiliary/util/u_trace_gallium.c", + "src/gallium/auxiliary/util/u_tracepoints.py", + "src/gallium/auxiliary/util/u_transfer.c", + "src/gallium/auxiliary/util/u_transfer_helper.c", + "src/gallium/auxiliary/util/u_upload_mgr.c", + "src/gallium/auxiliary/util/u_vbuf.c", + "src/gallium/auxiliary/util/u_vertex_state_cache.c", + "src/gallium/auxiliary/vl/vl_bicubic_filter.c", + "src/gallium/auxiliary/vl/vl_codec.c", + "src/gallium/auxiliary/vl/vl_compositor.c", + "src/gallium/auxiliary/vl/vl_compositor_cs.c", + "src/gallium/auxiliary/vl/vl_compositor_gfx.c", + "src/gallium/auxiliary/vl/vl_csc.c", + "src/gallium/auxiliary/vl/vl_decoder.c", + "src/gallium/auxiliary/vl/vl_deint_filter.c", + "src/gallium/auxiliary/vl/vl_idct.c", + "src/gallium/auxiliary/vl/vl_matrix_filter.c", + "src/gallium/auxiliary/vl/vl_mc.c", + "src/gallium/auxiliary/vl/vl_median_filter.c", + "src/gallium/auxiliary/vl/vl_mpeg12_bitstream.c", + "src/gallium/auxiliary/vl/vl_mpeg12_decoder.c", + "src/gallium/auxiliary/vl/vl_stubs.c", + "src/gallium/auxiliary/vl/vl_vertex_buffers.c", + "src/gallium/auxiliary/vl/vl_video_buffer.c", + "src/gallium/auxiliary/vl/vl_winsys_dri.c", + "src/gallium/auxiliary/vl/vl_winsys_dri3.c", + "src/gallium/auxiliary/vl/vl_winsys_dri_vgem.c", + "src/gallium/auxiliary/vl/vl_winsys_drm.c", + "src/gallium/auxiliary/vl/vl_zscan.c", + "src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c", + "src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c", + "src/gallium/drivers/zink/nir_to_spirv/zink_nir_algebraic.py", + "src/gallium/drivers/zink/zink_batch.c", + "src/gallium/drivers/zink/zink_blit.c", + "src/gallium/drivers/zink/zink_bo.c", + "src/gallium/drivers/zink/zink_clear.c", + "src/gallium/drivers/zink/zink_compiler.c", + "src/gallium/drivers/zink/zink_context.c", + "src/gallium/drivers/zink/zink_descriptors.c", + "src/gallium/drivers/zink/zink_device_info.py", + "src/gallium/drivers/zink/zink_draw.cpp", + "src/gallium/drivers/zink/zink_fence.c", + "src/gallium/drivers/zink/zink_format.c", + "src/gallium/drivers/zink/zink_framebuffer.c", + "src/gallium/drivers/zink/zink_instance.py", + "src/gallium/drivers/zink/zink_kopper.c", + "src/gallium/drivers/zink/zink_lower_cubemap_to_array.c", + "src/gallium/drivers/zink/zink_pipeline.c", + "src/gallium/drivers/zink/zink_program.c", + "src/gallium/drivers/zink/zink_query.c", + "src/gallium/drivers/zink/zink_render_pass.c", + "src/gallium/drivers/zink/zink_resource.c", + "src/gallium/drivers/zink/zink_screen.c", + "src/gallium/drivers/zink/zink_state.c", + "src/gallium/drivers/zink/zink_surface.c", + "src/gallium/frontends/dri/dri2.c", + "src/gallium/frontends/dri/dri_context.c", + "src/gallium/frontends/dri/dri_drawable.c", + "src/gallium/frontends/dri/dri_helpers.c", + "src/gallium/frontends/dri/dri_query_renderer.c", + "src/gallium/frontends/dri/dri_screen.c", + "src/gallium/frontends/dri/dri_util.c", + "src/gallium/frontends/dri/drisw.c", + "src/gallium/frontends/dri/kopper.c", + "src/gallium/include/pipe/p_defines.h", + "src/gallium/winsys/sw/dri/dri_sw_winsys.c", + "src/gallium/winsys/sw/kms-dri/kms_dri_sw_winsys.c", + "src/gallium/winsys/sw/null/null_sw_winsys.c", + "src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c", + "src/glx/apple/apple_cgl.c", + "src/glx/apple/apple_glapi.c", + "src/glx/apple/apple_glx.c", + "src/glx/apple/apple_glx_context.c", + "src/glx/apple/apple_glx_drawable.c", + "src/glx/apple/apple_glx_log.c", + "src/glx/apple/apple_glx_pbuffer.c", + "src/glx/apple/apple_glx_pixmap.c", + "src/glx/apple/apple_glx_surface.c", + "src/glx/apple/apple_visual.c", + "src/glx/apple/apple_xgl_api_read.c", + "src/glx/apple/apple_xgl_api_stereo.c", + "src/glx/apple/apple_xgl_api_viewport.c", + "src/glx/apple/appledri.c", + "src/glx/apple/glx_empty.c", + "src/glx/clientattrib.c", + "src/glx/clientinfo.c", + "src/glx/compsize.c", + "src/glx/create_context.c", + "src/glx/dri2.c", + "src/glx/dri2_glx.c", + "src/glx/dri3_glx.c", + "src/glx/dri_common.c", + "src/glx/dri_common_interop.c", + "src/glx/dri_common_query_renderer.c", + "src/glx/drisw_glx.c", + "src/glx/eval.c", + "src/glx/glx_error.c", + "src/glx/glx_pbuffer.c", + "src/glx/glx_query.c", + "src/glx/glxcmds.c", + "src/glx/glxconfig.c", + "src/glx/glxcurrent.c", + "src/glx/glxext.c", + "src/glx/glxextensions.c", + "src/glx/glxhash.c", + "src/glx/indirect_glx.c", + "src/glx/indirect_texture_compression.c", + "src/glx/indirect_transpose_matrix.c", + "src/glx/indirect_vertex_array.c", + "src/glx/indirect_vertex_program.c", + "src/glx/indirect_window_pos.c", + "src/glx/pixel.c", + "src/glx/pixelstore.c", + "src/glx/query_renderer.c", + "src/glx/render2.c", + "src/glx/renderpix.c", + "src/glx/single2.c", + "src/glx/singlepix.c", + "src/glx/vertarr.c", + "src/glx/xfont.c", + "src/gtest/src/gtest-all.cc", + "src/gtest/src/gtest_main.cc", + "src/loader/loader.c", + "src/loader/loader_dri3_helper.c", + "src/loader/loader_dri_helper.c", + "src/mapi/entry.c", + "src/mapi/es1api/gles1.def.in", + "src/mapi/es2api/gles2.def.in", + "src/mapi/glapi/gen/api_beginend_init_h.py", + "src/mapi/glapi/gen/api_exec_decl_h.py", + "src/mapi/glapi/gen/api_exec_init.py", + "src/mapi/glapi/gen/api_hw_select_init_h.py", + "src/mapi/glapi/gen/api_save_h.py", + "src/mapi/glapi/gen/api_save_init_h.py", + "src/mapi/glapi/gen/glX_proto_send.py", + "src/mapi/glapi/gen/glX_proto_size.py", + "src/mapi/glapi/gen/gl_API.xml", + "src/mapi/glapi/gen/gl_SPARC_asm.py", + "src/mapi/glapi/gen/gl_and_es_API.xml", + "src/mapi/glapi/gen/gl_apitemp.py", + "src/mapi/glapi/gen/gl_enums.py", + "src/mapi/glapi/gen/gl_gentable.py", + "src/mapi/glapi/gen/gl_marshal.py", + "src/mapi/glapi/gen/gl_marshal_h.py", + "src/mapi/glapi/gen/gl_procs.py", + "src/mapi/glapi/gen/gl_table.py", + "src/mapi/glapi/gen/gl_x86-64_asm.py", + "src/mapi/glapi/gen/gl_x86_asm.py", + "src/mapi/glapi/gen/remap_helper.py", + "src/mapi/glapi/registry/gl.xml", + "src/mapi/mapi_abi.py", + "src/mapi/new/gen_gldispatch_mapi.py", + "src/mesa/main/accum.c", + "src/mesa/main/api_arrayelt.c", + "src/mesa/main/arbprogram.c", + "src/mesa/main/arrayobj.c", + "src/mesa/main/atifragshader.c", + "src/mesa/main/attrib.c", + "src/mesa/main/barrier.c", + "src/mesa/main/bbox.c", + "src/mesa/main/blend.c", + "src/mesa/main/blit.c", + "src/mesa/main/bufferobj.c", + "src/mesa/main/buffers.c", + "src/mesa/main/clear.c", + "src/mesa/main/clip.c", + "src/mesa/main/compute.c", + "src/mesa/main/condrender.c", + "src/mesa/main/conservativeraster.c", + "src/mesa/main/context.c", + "src/mesa/main/copyimage.c", + "src/mesa/main/cpuinfo.c", + "src/mesa/main/debug.c", + "src/mesa/main/debug_output.c", + "src/mesa/main/depth.c", + "src/mesa/main/dlist.c", + "src/mesa/main/draw.c", + "src/mesa/main/draw_validate.c", + "src/mesa/main/drawpix.c", + "src/mesa/main/drawtex.c", + "src/mesa/main/enable.c", + "src/mesa/main/errors.c", + "src/mesa/main/es1_conversion.c", + "src/mesa/main/eval.c", + "src/mesa/main/extensions.c", + "src/mesa/main/extensions_table.c", + "src/mesa/main/externalobjects.c", + "src/mesa/main/fbobject.c", + "src/mesa/main/feedback.c", + "src/mesa/main/ff_fragment_shader.cpp", + "src/mesa/main/ffvertex_prog.c", + "src/mesa/main/fog.c", + "src/mesa/main/format_fallback.py", + "src/mesa/main/format_info.py", + "src/mesa/main/format_utils.c", + "src/mesa/main/formatquery.c", + "src/mesa/main/formats.c", + "src/mesa/main/formats.csv", + "src/mesa/main/framebuffer.c", + "src/mesa/main/genmipmap.c", + "src/mesa/main/get.c", + "src/mesa/main/get_hash_generator.py", + "src/mesa/main/getstring.c", + "src/mesa/main/glformats.c", + "src/mesa/main/glspirv.c", + "src/mesa/main/glthread.c", + "src/mesa/main/glthread_bufferobj.c", + "src/mesa/main/glthread_draw.c", + "src/mesa/main/glthread_get.c", + "src/mesa/main/glthread_list.c", + "src/mesa/main/glthread_shaderobj.c", + "src/mesa/main/glthread_varray.c", + "src/mesa/main/hash.c", + "src/mesa/main/hint.c", + "src/mesa/main/image.c", + "src/mesa/main/light.c", + "src/mesa/main/lines.c", + "src/mesa/main/matrix.c", + "src/mesa/main/mipmap.c", + "src/mesa/main/multisample.c", + "src/mesa/main/objectlabel.c", + "src/mesa/main/pack.c", + "src/mesa/main/pbo.c", + "src/mesa/main/performance_monitor.c", + "src/mesa/main/performance_query.c", + "src/mesa/main/pipelineobj.c", + "src/mesa/main/pixel.c", + "src/mesa/main/pixelstore.c", + "src/mesa/main/pixeltransfer.c", + "src/mesa/main/points.c", + "src/mesa/main/polygon.c", + "src/mesa/main/program_binary.c", + "src/mesa/main/program_resource.c", + "src/mesa/main/querymatrix.c", + "src/mesa/main/queryobj.c", + "src/mesa/main/rastpos.c", + "src/mesa/main/readpix.c", + "src/mesa/main/remap.c", + "src/mesa/main/renderbuffer.c", + "src/mesa/main/robustness.c", + "src/mesa/main/samplerobj.c", + "src/mesa/main/scissor.c", + "src/mesa/main/shader_query.cpp", + "src/mesa/main/shaderapi.c", + "src/mesa/main/shaderimage.c", + "src/mesa/main/shaderobj.c", + "src/mesa/main/shared.c", + "src/mesa/main/spirv_extensions.c", + "src/mesa/main/sse_minmax.c", + "src/mesa/main/state.c", + "src/mesa/main/stencil.c", + "src/mesa/main/syncobj.c", + "src/mesa/main/texcompress.c", + "src/mesa/main/texcompress_astc.cpp", + "src/mesa/main/texcompress_bptc.c", + "src/mesa/main/texcompress_cpal.c", + "src/mesa/main/texcompress_etc.c", + "src/mesa/main/texcompress_fxt1.c", + "src/mesa/main/texcompress_rgtc.c", + "src/mesa/main/texcompress_s3tc.c", + "src/mesa/main/texenv.c", + "src/mesa/main/texgen.c", + "src/mesa/main/texgetimage.c", + "src/mesa/main/teximage.c", + "src/mesa/main/texobj.c", + "src/mesa/main/texparam.c", + "src/mesa/main/texstate.c", + "src/mesa/main/texstorage.c", + "src/mesa/main/texstore.c", + "src/mesa/main/texturebindless.c", + "src/mesa/main/textureview.c", + "src/mesa/main/transformfeedback.c", + "src/mesa/main/uniform_query.cpp", + "src/mesa/main/uniforms.c", + "src/mesa/main/varray.c", + "src/mesa/main/vdpau.c", + "src/mesa/main/version.c", + "src/mesa/main/viewport.c", + "src/mesa/math/m_debug_clip.c", + "src/mesa/math/m_debug_norm.c", + "src/mesa/math/m_debug_xform.c", + "src/mesa/math/m_eval.c", + "src/mesa/math/m_matrix.c", + "src/mesa/math/m_vector.c", + "src/mesa/program/arbprogparse.c", + "src/mesa/program/dummy_errors.c", + "src/mesa/program/link_program.cpp", + "src/mesa/program/prog_cache.c", + "src/mesa/program/prog_instruction.c", + "src/mesa/program/prog_parameter.c", + "src/mesa/program/prog_parameter_layout.c", + "src/mesa/program/prog_print.c", + "src/mesa/program/prog_statevars.c", + "src/mesa/program/prog_to_nir.c", + "src/mesa/program/program.c", + "src/mesa/program/program_lexer.l", + "src/mesa/program/program_parse.y", + "src/mesa/program/program_parse_extra.c", + "src/mesa/program/programopt.c", + "src/mesa/program/symbol_table.c", + "src/mesa/state_tracker/st_atifs_to_nir.c", + "src/mesa/state_tracker/st_atom.c", + "src/mesa/state_tracker/st_atom_array.cpp", + "src/mesa/state_tracker/st_atom_atomicbuf.c", + "src/mesa/state_tracker/st_atom_blend.c", + "src/mesa/state_tracker/st_atom_clip.c", + "src/mesa/state_tracker/st_atom_constbuf.c", + "src/mesa/state_tracker/st_atom_depth.c", + "src/mesa/state_tracker/st_atom_framebuffer.c", + "src/mesa/state_tracker/st_atom_image.c", + "src/mesa/state_tracker/st_atom_msaa.c", + "src/mesa/state_tracker/st_atom_pixeltransfer.c", + "src/mesa/state_tracker/st_atom_rasterizer.c", + "src/mesa/state_tracker/st_atom_sampler.c", + "src/mesa/state_tracker/st_atom_scissor.c", + "src/mesa/state_tracker/st_atom_shader.c", + "src/mesa/state_tracker/st_atom_stipple.c", + "src/mesa/state_tracker/st_atom_storagebuf.c", + "src/mesa/state_tracker/st_atom_tess.c", + "src/mesa/state_tracker/st_atom_texture.c", + "src/mesa/state_tracker/st_atom_viewport.c", + "src/mesa/state_tracker/st_cb_bitmap.c", + "src/mesa/state_tracker/st_cb_clear.c", + "src/mesa/state_tracker/st_cb_copyimage.c", + "src/mesa/state_tracker/st_cb_drawpixels.c", + "src/mesa/state_tracker/st_cb_drawtex.c", + "src/mesa/state_tracker/st_cb_eglimage.c", + "src/mesa/state_tracker/st_cb_feedback.c", + "src/mesa/state_tracker/st_cb_flush.c", + "src/mesa/state_tracker/st_cb_rasterpos.c", + "src/mesa/state_tracker/st_cb_readpixels.c", + "src/mesa/state_tracker/st_cb_texture.c", + "src/mesa/state_tracker/st_context.c", + "src/mesa/state_tracker/st_copytex.c", + "src/mesa/state_tracker/st_debug.c", + "src/mesa/state_tracker/st_draw.c", + "src/mesa/state_tracker/st_draw_feedback.c", + "src/mesa/state_tracker/st_draw_hw_select.c", + "src/mesa/state_tracker/st_extensions.c", + "src/mesa/state_tracker/st_format.c", + "src/mesa/state_tracker/st_gen_mipmap.c", + "src/mesa/state_tracker/st_glsl_to_ir.cpp", + "src/mesa/state_tracker/st_glsl_to_nir.cpp", + "src/mesa/state_tracker/st_manager.c", + "src/mesa/state_tracker/st_nir_builtins.c", + "src/mesa/state_tracker/st_nir_lower_builtin.c", + "src/mesa/state_tracker/st_nir_lower_tex_src_plane.c", + "src/mesa/state_tracker/st_pbo.c", + "src/mesa/state_tracker/st_pbo_compute.c", + "src/mesa/state_tracker/st_program.c", + "src/mesa/state_tracker/st_sampler_view.c", + "src/mesa/state_tracker/st_scissor.c", + "src/mesa/state_tracker/st_shader_cache.c", + "src/mesa/state_tracker/st_texture.c", + "src/mesa/state_tracker/st_vdpau.c", + "src/mesa/vbo/vbo_context.c", + "src/mesa/vbo/vbo_exec.c", + "src/mesa/vbo/vbo_exec_api.c", + "src/mesa/vbo/vbo_exec_draw.c", + "src/mesa/vbo/vbo_exec_eval.c", + "src/mesa/vbo/vbo_minmax_index.c", + "src/mesa/vbo/vbo_noop.c", + "src/mesa/vbo/vbo_save.c", + "src/mesa/vbo/vbo_save_api.c", + "src/mesa/vbo/vbo_save_draw.c", + "src/mesa/vbo/vbo_save_loopback.c", + "src/mesa/x86/common_x86.c", + "src/util/00-mesa-defaults.conf", + "src/util/anon_file.c", + "src/util/bitscan.c", + "src/util/blob.c", + "src/util/build_id.c", + "src/util/compress.c", + "src/util/crc32.c", + "src/util/dag.c", + "src/util/debug.c", + "src/util/disk_cache.c", + "src/util/disk_cache_os.c", + "src/util/double.c", + "src/util/driconf_static.py", + "src/util/fast_idiv_by_const.c", + "src/util/format/u_format.c", + "src/util/format/u_format.csv", + "src/util/format/u_format_bptc.c", + "src/util/format/u_format_etc.c", + "src/util/format/u_format_fxt1.c", + "src/util/format/u_format_latc.c", + "src/util/format/u_format_other.c", + "src/util/format/u_format_rgtc.c", + "src/util/format/u_format_s3tc.c", + "src/util/format/u_format_table.py", + "src/util/format/u_format_tests.c", + "src/util/format/u_format_unpack_neon.c", + "src/util/format/u_format_yuv.c", + "src/util/format/u_format_zs.c", + "src/util/format_srgb.py", + "src/util/fossilize_db.c", + "src/util/half_float.c", + "src/util/hash_table.c", + "src/util/indices/u_indices_gen.py", + "src/util/indices/u_primconvert.c", + "src/util/indices/u_unfilled_gen.py", + "src/util/log.c", + "src/util/memstream.c", + "src/util/mesa-sha1.c", + "src/util/mesa_cache_db.c", + "src/util/os_file.c", + "src/util/os_memory_fd.c", + "src/util/os_misc.c", + "src/util/os_socket.c", + "src/util/os_time.c", + "src/util/perf/u_trace.c", + "src/util/ralloc.c", + "src/util/rand_xor.c", + "src/util/rb_tree.c", + "src/util/register_allocate.c", + "src/util/rgtc.c", + "src/util/set.c", + "src/util/sha1/sha1.c", + "src/util/simple_mtx.c", + "src/util/slab.c", + "src/util/softfloat.c", + "src/util/sparse_array.c", + "src/util/streaming-load-memcpy.c", + "src/util/string_buffer.c", + "src/util/strtod.c", + "src/util/u_atomic.c", + "src/util/u_call_once.c", + "src/util/u_cpu_detect.c", + "src/util/u_debug.c", + "src/util/u_debug_describe.c", + "src/util/u_debug_memory.c", + "src/util/u_debug_refcnt.c", + "src/util/u_debug_stack.c", + "src/util/u_debug_symbol.c", + "src/util/u_dl.c", + "src/util/u_hash_table.c", + "src/util/u_idalloc.c", + "src/util/u_math.c", + "src/util/u_mm.c", + "src/util/u_printf.c", + "src/util/u_process.c", + "src/util/u_qsort.cpp", + "src/util/u_queue.c", + "src/util/u_vector.c", + "src/util/u_worklist.c", + "src/util/vma.c", + "src/util/xmlconfig.c", + "src/util/xxd.py", + "src/vulkan/registry/vk.xml", + "src/vulkan/runtime/vk_buffer.c", + "src/vulkan/runtime/vk_cmd_copy.c", + "src/vulkan/runtime/vk_cmd_enqueue.c", + "src/vulkan/runtime/vk_command_buffer.c", + "src/vulkan/runtime/vk_command_pool.c", + "src/vulkan/runtime/vk_debug_report.c", + "src/vulkan/runtime/vk_debug_utils.c", + "src/vulkan/runtime/vk_deferred_operation.c", + "src/vulkan/runtime/vk_descriptor_set_layout.c", + "src/vulkan/runtime/vk_descriptor_update_template.c", + "src/vulkan/runtime/vk_descriptors.c", + "src/vulkan/runtime/vk_device.c", + "src/vulkan/runtime/vk_drm_syncobj.c", + "src/vulkan/runtime/vk_fence.c", + "src/vulkan/runtime/vk_framebuffer.c", + "src/vulkan/runtime/vk_graphics_state.c", + "src/vulkan/runtime/vk_image.c", + "src/vulkan/runtime/vk_instance.c", + "src/vulkan/runtime/vk_log.c", + "src/vulkan/runtime/vk_nir.c", + "src/vulkan/runtime/vk_object.c", + "src/vulkan/runtime/vk_physical_device.c", + "src/vulkan/runtime/vk_physical_device_features.py", + "src/vulkan/runtime/vk_pipeline.c", + "src/vulkan/runtime/vk_pipeline_cache.c", + "src/vulkan/runtime/vk_pipeline_layout.c", + "src/vulkan/runtime/vk_queue.c", + "src/vulkan/runtime/vk_render_pass.c", + "src/vulkan/runtime/vk_sampler.c", + "src/vulkan/runtime/vk_semaphore.c", + "src/vulkan/runtime/vk_shader_module.c", + "src/vulkan/runtime/vk_standard_sample_locations.c", + "src/vulkan/runtime/vk_sync.c", + "src/vulkan/runtime/vk_sync_binary.c", + "src/vulkan/runtime/vk_sync_dummy.c", + "src/vulkan/runtime/vk_sync_timeline.c", + "src/vulkan/runtime/vk_synchronization2.c", + "src/vulkan/util/gen_enum_to_str.py", + "src/vulkan/util/vk_alloc.c", + "src/vulkan/util/vk_cmd_queue_gen.py", + "src/vulkan/util/vk_dispatch_table_gen.py", + "src/vulkan/util/vk_dispatch_trampolines_gen.py", + "src/vulkan/util/vk_entrypoints_gen.py", + "src/vulkan/util/vk_extensions_gen.py", + "src/vulkan/util/vk_format.c", + "src/vulkan/util/vk_util.c", + "src/vulkan/vulkan_api.def.in", + "src/vulkan/wsi/wsi_common.c", + "src/vulkan/wsi/wsi_common_display.c", + "src/vulkan/wsi/wsi_common_drm.c", + "src/vulkan/wsi/wsi_common_x11.c", +] + +angle_libdrm_outputs = [ "libdrm.so.2.4.0" ] + +angle_libdrm_sources = [ + "include/drm/drm_fourcc.h", + "xf86drm.c", + "xf86drmHash.c", + "xf86drmMode.c", + "xf86drmRandom.c", + "xf86drmSL.c", +] diff --git a/third_party/mesa/mesa_build.py b/third_party/mesa/mesa_build.py new file mode 100755 index 000000000..6505c07d6 --- /dev/null +++ b/third_party/mesa/mesa_build.py @@ -0,0 +1,327 @@ +#!/usr/bin/env vpython3 +# +# Copyright 2022 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# +# mesa_build.py: +# Helper script for building Mesa in an ANGLE checkout. + +import argparse +import json +import logging +import os +import shutil +import subprocess +import sys + +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +ANGLE_DIR = os.path.dirname(os.path.dirname(SCRIPT_DIR)) +DEFAULT_LOG_LEVEL = 'info' +EXIT_SUCCESS = 0 +EXIT_FAILURE = 1 +MESON = os.path.join(ANGLE_DIR, 'third_party', 'meson', 'meson.py') +MESA_SOURCE_DIR = os.path.join(ANGLE_DIR, 'third_party', 'mesa', 'src') +LIBDRM_SOURCE_DIR = os.path.join(ANGLE_DIR, 'third_party', 'libdrm') +LIBDRM_BUILD_DIR = os.path.join(ANGLE_DIR, 'out', 'libdrm-build') +MESA_STAMP = 'mesa.stamp' +LIBDRM_STAMP = 'libdrm.stamp' + +MESA_OPTIONS = [ + '-Dzstd=disabled', + '-Dplatforms=x11', + '-Dgallium-drivers=zink', + '-Dvulkan-drivers=', + '-Dvalgrind=disabled', +] +LIBDRM_OPTIONS = [ + '-Dtests=false', '-Dintel=disabled', '-Dnouveau=disabled', '-Damdgpu=disabled', + '-Dradeon=disabled', '-Dvmwgfx=disabled' +] + + +def main(raw_args): + parser = argparse.ArgumentParser() + parser.add_argument( + '-l', + '--log', + '--log-level', + help='Logging level. Default is %s.' % DEFAULT_LOG_LEVEL, + default=DEFAULT_LOG_LEVEL) + + subparser = parser.add_subparsers(dest='command') + + mesa = subparser.add_parser('mesa') + mesa.add_argument('build_dir', help='Target build directory.') + mesa.add_argument('-j', '--jobs', help='Compile jobs.') + + compile_parser = subparser.add_parser('compile') + compile_parser.add_argument('-j', '--jobs', help='Compile jobs.') + compile_parser.add_argument('build_dir', help='Target build directory.') + + gni = subparser.add_parser('gni') + gni.add_argument('output', help='Output location for gni file.') + gni.add_argument('mesa_build_dir', help='Target Mesa build directory.') + gni.add_argument('libdrm_build_dir', help='Target libdrm build directory.') + + libdrm = subparser.add_parser('libdrm') + + runhook_parser = subparser.add_parser('runhook') + runhook_parser.add_argument( + '-o', '--output', help='Output location for stamp sha1 file.', default=MESA_STAMP) + + setup_parser = subparser.add_parser('setup') + setup_parser.add_argument('target', help='Project: mesa or libdrm.') + setup_parser.add_argument('build_dir', help='Target build directory.') + setup_parser.add_argument('-w', '--wipe', help='Wipe output directory.', action='store_true') + + args, extra_args = parser.parse_known_args(raw_args) + + logging.basicConfig(level=args.log.upper()) + + assert os.path.exists(MESON), 'Could not find meson.py: %s' % MESON + + if args.command == 'mesa': + SetupBuild(args.build_dir, MESA_SOURCE_DIR, MESA_OPTIONS) + Compile(args, args.build_dir) + elif args.command == 'compile': + Compile(args, args.build_dir) + elif args.command == 'gni': + GenerateGni(args) + elif args.command == 'libdrm': + SetupBuild(args.build_dir, LIBDRM_SOURCE_DIR, LIBDRM_OPTIONS) + Compile(args, args.build_dir) + elif args.command == 'runhook': + RunHook(args) + elif args.command == 'setup': + LazySetup(args, args.build_dir) + + return EXIT_SUCCESS + + +def SetupBuild(build_dir, source_dir, options, pkg_config_paths=[]): + if not os.path.exists(build_dir): + os.mkdir(build_dir) + + sysroot_dir = os.path.join(ANGLE_DIR, 'build', 'linux', 'debian_bullseye_amd64-sysroot') + + cflags = ' '.join([ + '--sysroot=%s' % sysroot_dir, + '-Wno-constant-conversion', + '-Wno-deprecated-builtins', + '-Wno-deprecated-declarations', + '-Wno-deprecated-non-prototype', + '-Wno-enum-compare-conditional', + '-Wno-enum-conversion', + '-Wno-implicit-const-int-float-conversion', + '-Wno-implicit-function-declaration', + '-Wno-initializer-overrides', + '-Wno-sometimes-uninitialized', + '-Wno-unused-but-set-variable', + '-Wno-unused-function', + ]) + + pkg_config_paths += [ + '%s/usr/share/pkgconfig' % sysroot_dir, + '%s/usr/lib/pkgconfig' % sysroot_dir + ] + + extra_env = { + 'CC': 'clang', + 'CC_LD': 'lld', + 'CXX': 'clang++', + 'CXX_LD': 'lld', + 'CFLAGS': cflags, + 'CXXFLAGS': cflags, + 'PKG_CONFIG_PATH': ':'.join(pkg_config_paths), + } + + args = [source_dir, build_dir, '--cross-file', + os.path.join(SCRIPT_DIR, 'angle_cross.ini')] + options + if os.path.isdir(os.path.join(build_dir, 'meson-info')): + args += ['--wipe'] + + return Meson(build_dir, 'setup', args, extra_env) + + +def Compile(args, build_dir): + return Meson(build_dir, 'compile', ['-C', build_dir]) + + +def MakeEnv(): + clang_dir = os.path.join(ANGLE_DIR, 'third_party', 'llvm-build', 'Release+Asserts', 'bin') + flex_bison_dir = os.path.join(ANGLE_DIR, 'tools', 'flex-bison') + + # TODO: Windows + flex_bison_platform = 'linux' + flex_bison_bin_dir = os.path.join(flex_bison_dir, flex_bison_platform) + + depot_tools_dir = os.path.join(ANGLE_DIR, 'third_party', 'depot_tools') + + env = os.environ.copy() + paths = [clang_dir, flex_bison_bin_dir, depot_tools_dir, env['PATH']] + env['PATH'] = ':'.join(paths) + env['BISON_PKGDATADIR'] = os.path.join(flex_bison_dir, 'third_party') + return env + + +GNI_TEMPLATE = """\ +# GENERATED FILE - DO NOT EDIT. +# Generated by {script_name} +# +# Copyright 2022 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# +# {filename}: ANGLE build information for Mesa. + +angle_mesa_outputs = [ +{angle_mesa_outputs}] + +angle_mesa_sources = [ +{angle_mesa_sources}] + +angle_libdrm_outputs = [ +{angle_libdrm_outputs}] + +angle_libdrm_sources = [ +{angle_libdrm_sources}] +""" + + +def GenerateGni(args): + mesa_sources_filter = lambda target: target['type'] != 'shared library' + mesa_outputs_filter = lambda target: target['type'] == 'shared library' + mesa_sources, mesa_outputs = GetMesonSourcesAndOutputs(args.mesa_build_dir, + mesa_sources_filter, + mesa_outputs_filter) + + libdrm_sources_filter = lambda target: True + libdrm_outputs_filter = lambda target: target['type'] == 'shared library' + libdrm_sources, libdrm_outputs = GetMesonSourcesAndOutputs(args.libdrm_build_dir, + libdrm_sources_filter, + libdrm_outputs_filter) + + fmt_list = lambda l, rp: ''.join( + sorted(list(set([' "%s",\n' % os.path.relpath(li, rp) for li in l])))) + + format_args = { + 'script_name': os.path.basename(__file__), + 'filename': os.path.basename(args.output), + 'angle_mesa_outputs': fmt_list(mesa_outputs, args.mesa_build_dir), + 'angle_mesa_sources': fmt_list(mesa_sources, MESA_SOURCE_DIR), + 'angle_libdrm_outputs': fmt_list(libdrm_outputs, args.libdrm_build_dir), + 'angle_libdrm_sources': fmt_list(libdrm_sources, LIBDRM_SOURCE_DIR), + } + + gni_text = GNI_TEMPLATE.format(**format_args) + + with open(args.output, 'w') as outf: + outf.write(gni_text) + outf.close() + logging.info('Saved GNI data to %s' % args.output) + + +def GetMesonSourcesAndOutputs(build_dir, sources_filter, output_filter): + text_data = Meson(build_dir, 'introspect', [build_dir, '--targets'], stdout=subprocess.PIPE) + json_data = json.loads(text_data) + outputs = [] + all_sources = [] + generated = [] + for target in json_data: + generated += target['filename'] + if output_filter(target): + outputs += target['filename'] + if sources_filter(target): + for target_source in target['target_sources']: + all_sources += target_source['sources'] + + sources = list(filter(lambda s: (s not in generated), all_sources)) + + for source in sources: + assert os.path.exists(source), '%s does not exist' % source + + return sources, outputs + + +def Meson(build_dir, command, args, extra_env={}, stdout=None): + meson_cmd = [MESON, command] + args + env = MakeEnv() + for k, v in extra_env.items(): + env[k] = v + # TODO: Remove when crbug.com/1373441 is fixed. + env['VPYTHON_DEFAULT_SPEC'] = os.path.join(ANGLE_DIR, '.vpython3') + logging.info(' '.join(['%s=%s' % (k, v) for (k, v) in extra_env.items()] + meson_cmd)) + completed = subprocess.run(meson_cmd, env=env, stdout=stdout) + if completed.returncode != EXIT_SUCCESS: + logging.fatal('Got error from meson:') + with open(os.path.join(build_dir, 'meson-logs', 'meson-log.txt')) as logf: + lines = logf.readlines() + for line in lines[-10:]: + logging.fatal(' %s' % line.strip()) + sys.exit(EXIT_FAILURE) + if stdout: + return completed.stdout + + +def RunHook(args): + output = os.path.join(SCRIPT_DIR, args.output) + Stamp(args, MESA_SOURCE_DIR, output) + libdrm_out = os.path.join(SCRIPT_DIR, LIBDRM_STAMP) + Stamp(args, LIBDRM_SOURCE_DIR, libdrm_out) + + +def Stamp(args, source_dir, output): + commit_id = GrabOutput('git rev-parse HEAD', source_dir) + with open(output, 'w') as outf: + outf.write(commit_id) + outf.close() + logging.info('Saved git hash data to %s' % output) + + +def GrabOutput(command, cwd): + return subprocess.Popen( + command, stdout=subprocess.PIPE, shell=True, cwd=cwd).communicate()[0].strip().decode() + + +def LazySetup(args, build_dir): + stamp = args.target + '.stamp' + in_stamp = os.path.join(SCRIPT_DIR, stamp) + out_stamp = os.path.join(build_dir, args.target, stamp) + if not args.wipe and SameStamps(in_stamp, out_stamp): + logging.info('%s setup up-to-date.' % args.target) + sys.exit(EXIT_SUCCESS) + + if args.target == 'mesa': + source_dir = MESA_SOURCE_DIR + options = MESA_OPTIONS + pkg_config_paths = [os.path.join(build_dir, 'libdrm', 'meson-uninstalled')] + else: + assert (args.target == 'libdrm') + source_dir = LIBDRM_SOURCE_DIR + options = LIBDRM_OPTIONS + pkg_config_paths = [] + + SetupBuild(os.path.join(build_dir, args.target), source_dir, options, pkg_config_paths) + shutil.copyfile(in_stamp, out_stamp) + logging.info('Finished setup and updated %s.' % out_stamp) + + +def SameStamps(in_stamp, out_stamp): + assert os.path.exists(in_stamp) + if not os.path.exists(out_stamp): + return False + in_data = ReadFile(in_stamp) + out_data = ReadFile(out_stamp) + return in_data == out_data + + +def ReadFile(path): + with open(path, 'rt') as inf: + all_data = inf.read() + inf.close() + return all_data + + +if __name__ == "__main__": + sys.exit(main(sys.argv[1:])) diff --git a/tools/flex-bison/linux/bison.sha1 b/tools/flex-bison/linux/bison.sha1 index 67000e25f..e3e7ea559 100644 --- a/tools/flex-bison/linux/bison.sha1 +++ b/tools/flex-bison/linux/bison.sha1 @@ -1 +1 @@ -ecf11699b180eb967b8c4d08011b5704a445adeb \ No newline at end of file +36625019a2442ac8efc92c32e1d61bd3f450b7ab \ No newline at end of file diff --git a/tools/flex-bison/linux/flex.sha1 b/tools/flex-bison/linux/flex.sha1 index d340047ca..971734080 100644 --- a/tools/flex-bison/linux/flex.sha1 +++ b/tools/flex-bison/linux/flex.sha1 @@ -1 +1 @@ -e830e6c0508d9685876e77304bbe7c4a122c08e8 \ No newline at end of file +3c9694c62a4ad0d1f95b45bb748855c3688c923e \ No newline at end of file