From 5dd3d0ec3323a70b560ce1adbaf41c3869805456 Mon Sep 17 00:00:00 2001 From: misaka00251 Date: Thu, 7 May 2026 17:37:02 +0800 Subject: [PATCH] SPECS: firefox: Add firefox. Signed-off-by: misaka00251 --- ...l-optimizer-to-build-with-glibc-2.43.patch | 3108 +++++++++++++++++ ...etSystemProxyDirect-to-libproxy-path.patch | 42 + ...Use-long-tail-jump-for-xptcall-stubs.patch | 40 + .../2001-riscv64-enable-gles-rendering.patch | 18 + ...cv64-libyuv-add-RVV-sources-to-build.patch | 40 + SPECS/firefox/distribution.ini.in | 9 + SPECS/firefox/firefox.desktop | 334 ++ SPECS/firefox/firefox.js | 19 + SPECS/firefox/firefox.spec | 584 ++++ SPECS/firefox/firefox.xml | 44 + SPECS/firefox/google-api-key | 1 + SPECS/firefox/run-wayland-compositor.sh | 66 + 12 files changed, 4305 insertions(+) create mode 100644 SPECS/firefox/0001-Patch-glsl-optimizer-to-build-with-glibc-2.43.patch create mode 100644 SPECS/firefox/0002-add-GetSystemProxyDirect-to-libproxy-path.patch create mode 100644 SPECS/firefox/2000-riscv64-Use-long-tail-jump-for-xptcall-stubs.patch create mode 100644 SPECS/firefox/2001-riscv64-enable-gles-rendering.patch create mode 100644 SPECS/firefox/2002-riscv64-libyuv-add-RVV-sources-to-build.patch create mode 100644 SPECS/firefox/distribution.ini.in create mode 100644 SPECS/firefox/firefox.desktop create mode 100644 SPECS/firefox/firefox.js create mode 100644 SPECS/firefox/firefox.spec create mode 100644 SPECS/firefox/firefox.xml create mode 100644 SPECS/firefox/google-api-key create mode 100755 SPECS/firefox/run-wayland-compositor.sh diff --git a/SPECS/firefox/0001-Patch-glsl-optimizer-to-build-with-glibc-2.43.patch b/SPECS/firefox/0001-Patch-glsl-optimizer-to-build-with-glibc-2.43.patch new file mode 100644 index 0000000000..75180983fb --- /dev/null +++ b/SPECS/firefox/0001-Patch-glsl-optimizer-to-build-with-glibc-2.43.patch @@ -0,0 +1,3108 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Thu, 12 Feb 2026 09:31:45 +0100 +Subject: [PATCH] Patch glsl-optimizer to build with glibc 2.43 + +--- + .cargo/config.toml.in | 5 + + Cargo.lock | 3 +- + Cargo.toml | 2 + + supply-chain/audits.toml | 6 + + supply-chain/config.toml | 4 + + third_party/rust/glslopt/.cargo-checksum.json | 2 +- + third_party/rust/glslopt/.cargo_vcs_info.json | 6 - + third_party/rust/glslopt/Cargo.lock | 25 -- + third_party/rust/glslopt/Cargo.toml | 4 +- + third_party/rust/glslopt/Cargo.toml.orig | 12 - + .../rust/glslopt/glsl-optimizer/.cargo-ok | 0 + .../rust/glslopt/glsl-optimizer/.gitignore | 4 - + .../glslopt/glsl-optimizer/generateParsers.sh | 6 +- + .../include/c11/threads_posix.h | 6 + + .../src/compiler/glsl/ast_function.cpp | 2 +- + .../src/compiler/glsl/ast_to_hir.cpp | 24 +- + .../src/compiler/glsl/builtin_functions.cpp | 2 +- + .../src/compiler/glsl/glcpp/glcpp-lex.c | 8 +- + .../src/compiler/glsl/glcpp/glcpp-lex.l | 6 +- + .../glsl-optimizer/src/compiler/glsl/ir.cpp | 4 +- + .../glsl/ir_builder_print_visitor.cpp | 6 +- + .../compiler/glsl/ir_expression_operation.py | 18 +- + .../glsl/ir_expression_operation_constant.h | 248 +++++++++--------- + .../compiler/glsl/ir_print_glsl_visitor.cpp | 6 +- + .../src/compiler/glsl/ir_print_visitor.cpp | 4 +- + .../src/compiler/glsl/linker.cpp | 2 +- + .../src/compiler/glsl/loop_analysis.cpp | 4 +- + .../glsl/lower_blend_equation_advanced.cpp | 2 +- + .../src/compiler/glsl/lower_buffer_access.cpp | 4 +- + .../src/compiler/glsl/lower_distance.cpp | 2 +- + .../src/compiler/glsl/lower_ubo_reference.cpp | 4 +- + .../src/compiler/glsl/opt_algebraic.cpp | 2 +- + .../src/compiler/glsl/opt_minmax.cpp | 2 +- + .../src/compiler/glsl/opt_vectorize.cpp | 2 +- + .../src/compiler/glsl_types.cpp | 16 +- + .../glsl-optimizer/src/compiler/glsl_types.h | 2 +- + .../src/compiler/shader_enums.c | 4 +- + .../glsl-optimizer/src/mesa/main/shaderobj.h | 12 +- + .../glslopt/glsl-optimizer/src/util/macros.h | 22 +- + third_party/rust/glslopt/src/bindings.rs | 46 ++-- + 40 files changed, 263 insertions(+), 276 deletions(-) + delete mode 100644 third_party/rust/glslopt/.cargo_vcs_info.json + delete mode 100644 third_party/rust/glslopt/Cargo.lock + delete mode 100644 third_party/rust/glslopt/Cargo.toml.orig + copy .trackerignore => third_party/rust/glslopt/glsl-optimizer/.cargo-ok (100%) + delete mode 100644 third_party/rust/glslopt/glsl-optimizer/.gitignore + +diff --git a/.cargo/config.toml.in b/.cargo/config.toml.in +index be917029832d..0af8c7b9c51b 100644 +--- a/.cargo/config.toml.in ++++ b/.cargo/config.toml.in +@@ -5,6 +5,11 @@ + [source.crates-io] + replace-with = "vendored-sources" + ++[source."git+https://github.com/Erk-/glslopt-rs?rev=92fa39d0910e9e73de40b0d391906e6e2940080d"] ++git = "https://github.com/Erk-/glslopt-rs" ++rev = "92fa39d0910e9e73de40b0d391906e6e2940080d" ++replace-with = "vendored-sources" ++ + [source."git+https://github.com/FirefoxGraphics/aa-stroke?rev=5776bdfc8ad664a1503db668fab397d818a5f98a"] + git = "https://github.com/FirefoxGraphics/aa-stroke" + rev = "5776bdfc8ad664a1503db668fab397d818a5f98a" +diff --git a/Cargo.lock b/Cargo.lock +index 4c4d30dfbd38..0c71a15468cb 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -2897,8 +2897,7 @@ dependencies = [ + [[package]] + name = "glslopt" + version = "0.1.12" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8ba4741358604ca0848c27ecc069d68e62e11cde81e38aac1da3c54b79ab5adf" ++source = "git+https://github.com/Erk-/glslopt-rs?rev=92fa39d0910e9e73de40b0d391906e6e2940080d#92fa39d0910e9e73de40b0d391906e6e2940080d" + dependencies = [ + "cc", + ] +diff --git a/Cargo.toml b/Cargo.toml +index 2648c32ae57e..a6a6e93e9a73 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -289,6 +289,8 @@ harfbuzz = { git = "https://github.com/hsivonen/rust-harfbuzz", rev = "9d58a23a9 + harfbuzz-traits = { git = "https://github.com/hsivonen/rust-harfbuzz", rev = "9d58a23a98772a197291d04af93f7041b7093d95" } + # Make --enable-rust-simd compatible with Rust 1.95 + encoding_rs = { git = "https://github.com/hsivonen/encoding_rs", rev = "1236d1bc423e6ba35a06485f74a6304db2d703b5" } ++# Make glsl-optimizer compatible with glibc 2.43 ++glslopt = { git = "https://github.com/Erk-/glslopt-rs", rev = "92fa39d0910e9e73de40b0d391906e6e2940080d" } + + # objc 0.2.7 + fa7ca43b862861dd1cd000d7ad01e6e0266cda13 + objc = { git = "https://github.com/glandium/rust-objc", rev = "4de89f5aa9851ceca4d40e7ac1e2759410c04324" } +diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml +index 44cb3a10d208..6814e05851f9 100644 +--- a/supply-chain/audits.toml ++++ b/supply-chain/audits.toml +@@ -2996,6 +2996,12 @@ criteria = "safe-to-deploy" + delta = "0.1.11 -> 0.1.12" + notes = "Only a minor build tweak." + ++[[audits.glslopt]] ++who = "Jan Alexander Steffens (heftig) " ++criteria = "safe-to-deploy" ++delta = "0.1.12 -> 0.1.12@git:92fa39d0910e9e73de40b0d391906e6e2940080d" ++importable = false ++ + [[audits.goblin]] + who = "Jan-Erik Rediger " + criteria = "safe-to-deploy" +diff --git a/supply-chain/config.toml b/supply-chain/config.toml +index 15deefbec057..88848c730671 100644 +--- a/supply-chain/config.toml ++++ b/supply-chain/config.toml +@@ -60,6 +60,10 @@ notes = "Used for testing." + dependency-criteria = { tokio-reactor = [], tokio-threadpool = [] } + notes = "The dependencies on tokio-reactor and tokio-threadpools are just a hack to pin the version used by audioipc-{client,server}. Suppress vetting on those for the same reasons behind the policy entries." + ++[policy.glslopt] ++audit-as-crates-io = true ++notes = "This is upstream plus a build fix for bug 1999625." ++ + [policy.gluesmith] + criteria = "safe-to-run" + notes = "Used for fuzzing." +diff --git a/third_party/rust/glslopt/.cargo-checksum.json b/third_party/rust/glslopt/.cargo-checksum.json +index e3300c718103..975a4c8da7b6 100644 +--- a/third_party/rust/glslopt/.cargo-checksum.json ++++ b/third_party/rust/glslopt/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{".cargo_vcs_info.json":"7075d1c5c5e19288cefb431f16462eaa23229d02791120f4885ab1d20470cb7e",".gitmodules":"ffc0cce90e856d4f4bdb3bd3c950c9e59501a45ebd5022b91cfe8c07c79ef1ac","Cargo.lock":"f7970552595dc803ace9ef19b5f5d7b1fc784aac30cb27b2ebc3002d97122b9d","Cargo.toml":"7c53ee20d848f9913cacbfcb3ab2e89e30deee8d619d173c95130c7c5d065827","Cargo.toml.orig":"c46463ed28492baaaa17c772384cd1654093f96e900cefdb13d578e10561974f","README.md":"4468e08c64c19977707d792bfab0080e35ff927b64990eab77873f8ba056ba1c","build.rs":"92e29699487c21389fc823c50b410cfbfc74cc774265d24958489909ee48a076","glsl-optimizer/.editorconfig":"dca7ff05a95f608849c4dc640af7f83a0f415618e327a2ecb6a0afa0d9d2bacb","glsl-optimizer/.gitignore":"8ba554a4ca510ea7d9684475aa043edbeba7d15a5c9c4a04d8b1379a04ec6270","glsl-optimizer/CMakeLists.txt":"42ce94744e82ffa000da8b64d81fc140e293b9f5da7dd4cf6b49e7404a2448d9","glsl-optimizer/README.md":"b18eef11a92d267d88a937b1154f7670ee433c730b102fdf7e2da0b02722b146","glsl-optimizer/contrib/glslopt/Main.cpp":"14ba213210c62e234b8d9b0052105fed28eedd83d535ebe85acc10bda7322dd4","glsl-optimizer/contrib/glslopt/Readme":"65d2a6f1aa1dc61e903e090cdade027abad33e02e7c9c81e07dc80508acadec4","glsl-optimizer/generateParsers.sh":"878a97db5d3b69eb3b4c3a95780763b373cfcc0c02e0b28894f162dbbd1b8848","glsl-optimizer/include/GL/gl.h":"1989b51365b6d7d0c48ff6e8b181ef75e2cdf71bfb1626b1cc4362e2f54854a3","glsl-optimizer/include/GL/glext.h":"2ac3681045a35a2194a81a960cad395c04bef1c8a20ef46b799fb24af3ec5f70","glsl-optimizer/include/KHR/khrplatform.h":"1448141a0c054d7f46edfb63f4fe6c203acf9591974049481c32442fb03fd6ed","glsl-optimizer/include/c11/.editorconfig":"f96a2354e5f2b90367d643e6d9e980ce76278d4d47afd8b2713b595753aa8b4b","glsl-optimizer/include/c11/threads.h":"56e9e592b28df19f0db432125223cb3eb5c0c1f960c22db96a15692e14776337","glsl-optimizer/include/c11/threads_posix.h":"f8ad2b69fa472e332b50572c1b2dcc1c8a0fa783a1199aad245398d3df421b4b","glsl-optimizer/include/c11/threads_win32.h":"95bf19d7fc14d328a016889afd583e4c49c050a93bcfb114bd2e9130a4532488","glsl-optimizer/include/c11_compat.h":"103fedb48f658d36cb416c9c9e5ea4d70dff181aab551fcb1028107d098ffa3e","glsl-optimizer/include/c99_compat.h":"aafad02f1ea90a7857636913ea21617a0fcd6197256dcfc6dd97bb3410ba892e","glsl-optimizer/include/no_extern_c.h":"40069dbb6dd2843658d442f926e609c7799b9c296046a90b62b570774fd618f5","glsl-optimizer/license.txt":"e26a745226f4a46b3ca00ffbe8be18507362189a2863d04b4f563ba176a9a836","glsl-optimizer/src/compiler/builtin_type_macros.h":"5b4fc4d4da7b07f997b6eb569e37db79fa0735286575ef1fab08d419e76776ff","glsl-optimizer/src/compiler/glsl/README":"e7d408b621c1b605857c4cab63902f615edb06b530142b91ac040808df6e22f7","glsl-optimizer/src/compiler/glsl/TODO":"dd3b7a098e6f9c85ca8c99ce6dea49d65bb75d4cea243b917f29e4ad2c974603","glsl-optimizer/src/compiler/glsl/ast.h":"3e68ff374350c49211a9931f7f55a485d8d89fc4b21caaffbf6655009ad95bf8","glsl-optimizer/src/compiler/glsl/ast_array_index.cpp":"92b4d501f33e0544c00d14e4f8837753afd916c2b42e076ccc95c9e8fc37ba94","glsl-optimizer/src/compiler/glsl/ast_expr.cpp":"afd712a7b1beb2b633888f4a0911b0a8e4ae5eb5ab9c1e3f247d518cdaaa56d6","glsl-optimizer/src/compiler/glsl/ast_function.cpp":"74f4fbd490e366b37f4715168bb3465ecd9334d4130942f75dcc8e80e8e7f027","glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp":"d0f798eb09271d41d068b9e7b18220d37f1ed0083300ab51eba30989698fe23d","glsl-optimizer/src/compiler/glsl/ast_type.cpp":"8eb790b24b26dfb72bdc333744b566c26d8464c5d47d20eae659461f5c4899f7","glsl-optimizer/src/compiler/glsl/builtin_functions.cpp":"454189d643c220fcb49116ee5c8a34f7b349aa67564040deb8607f6a41a15e70","glsl-optimizer/src/compiler/glsl/builtin_functions.h":"a37cad7ed09b522c5b8bec7b80115a36846e7ba6e0874a2a858e32f7f202c665","glsl-optimizer/src/compiler/glsl/builtin_int64.h":"619def6f3aebf180da3944ef08f159ab12a58b24767e41d8b985ac37ded54d62","glsl-optimizer/src/compiler/glsl/builtin_types.cpp":"afec060b62d6f3b00bfbf94e9fa5f96341ce096c128d1eef322791e6ed9cea4d","glsl-optimizer/src/compiler/glsl/builtin_variables.cpp":"6563bfb1345cbca4c77e00eef09ad152f3e1dc271d246a08c5ce9e1f4ce4250a","glsl-optimizer/src/compiler/glsl/float64.glsl":"1072fd888be48c2a7a5117cd2d92a65f034965a66375f598bb856bff5d7be766","glsl-optimizer/src/compiler/glsl/generate_ir.cpp":"e5f0175370a0d07f93c48d3f0f1b8233d12c64a7b02de02dcc753ef7b398ef0f","glsl-optimizer/src/compiler/glsl/glcpp/README":"a0332a1b221d047e9cce5181a64d4ac4056046fd878360ec8ae3a7b1e062bcff","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.c":"2d179879b1ffe84f58875eee5b0c19b6bae9c973b0c48e6bcd99978f2f501c80","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.l":"e4c5744c837200dafd7c15a912d13f650308ea552454d4fa67271bc0a5bde118","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.c":"03494f9ce1cb82260506e2559e73a3eeb622c4bd51b65eaa0a2c3351862bd4c8","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.h":"264d9a18421cde255ce34a0a62b3d8e73465359f0d167e64aa3973062aae5bdd","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.y":"fafb66e3a8f149d19e085f18a4273ba6d4c11af9e9a01d665cc784dddf97b79f","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.c":"37ed294403c2abfd17fd999d1ae8d11b170e5e9c878979fefac74a31195c96b0","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.h":"85ac8b444bcbd0822b66448a1da407b6ae5467b649f5afaf5c58325bd7569468","glsl-optimizer/src/compiler/glsl/glcpp/pp.c":"a52d94f1bcb3fb2747a95709c4a77c25de7eea8354d2b83bb18efd96976a4473","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.c":"d11aeb3acfe966d1b78f1ee49804093f2434214c41391d139ffcb67b69dc9862","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.h":"abbf1f36ec5a92d035bfbb841b9452287d147616e56373cdbee1c0e55af46406","glsl-optimizer/src/compiler/glsl/glsl_lexer.cpp":"272b9fc1383d72b81bfc03fa11fdf82270ed91a294e523f9ce2b4554bd3effa9","glsl-optimizer/src/compiler/glsl/glsl_lexer.ll":"2b57d9f9eb830c3d7961d4533048a158ee6f458c8d05c65bea7b7cfbc36e4458","glsl-optimizer/src/compiler/glsl/glsl_optimizer.cpp":"f8095d20629d0af70be930b0612e169edb274551a1d25a3cd1bf9995a11ce2e8","glsl-optimizer/src/compiler/glsl/glsl_optimizer.h":"22e843b4ec53ba5f6cd85ca5f7bad33922dca8061b19fb512d46f1caca8d4757","glsl-optimizer/src/compiler/glsl/glsl_parser.cpp":"126baf368d525aba301854e3d91ba60b5aee32e1102376af71416f32cb95ec48","glsl-optimizer/src/compiler/glsl/glsl_parser.h":"2ea9a50716098a8f7bef782d2a030d757b68da73afb01b4d4940d3e8381d44e8","glsl-optimizer/src/compiler/glsl/glsl_parser.yy":"6b1fd1576b29fce005dff744a6dbd0219e4c695c361d61864e1f3a8d6fa6b764","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.cpp":"aad64b5b66467da650091430681e8c6a820cf3cadc4db3c160bf2f15875390ae","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.h":"71fd0e92bbdb193dfb067d7bfdb1200d77392be2fbd0cbfc9ca89d1bb4c7e741","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.cpp":"6660fb83c0ddddbbd64581d46ccfdb9c84bfaa99d13348c289e6442ab00df046","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.h":"24682b8304e0ea3f6318ddb8c859686bd1faee23cd0511d1760977ae975d41bf","glsl-optimizer/src/compiler/glsl/hir_field_selection.cpp":"72a039b0fcab4161788def9e4bedac7ac06a20d8e13146529c6d246bd5202afd","glsl-optimizer/src/compiler/glsl/int64.glsl":"303dbe95dde44b91aee3e38b115b92028400d6a92f9268975d607471984e13eb","glsl-optimizer/src/compiler/glsl/ir.cpp":"2b4741cce90b5d4abff5d719c7324e2693c67294d4d99736cb241554adb281bc","glsl-optimizer/src/compiler/glsl/ir.h":"990b1c74447c4eb4835353ccb0ed9aea644f97fc1129ef1739cd935075d85d2e","glsl-optimizer/src/compiler/glsl/ir_array_refcount.cpp":"8cdc1cffe01e42e0566fa2193a75f789628e8025ad1b82f0ee6f204451b7f9f7","glsl-optimizer/src/compiler/glsl/ir_array_refcount.h":"75f06ec81342b379096ca52e1dc0fd5f19a11ff8e9b58203c20628179d644c12","glsl-optimizer/src/compiler/glsl/ir_basic_block.cpp":"1e2920b1c0ecb08424c745c558f84d0d7e44b74585cf2cc2265dc4dfede3fa2f","glsl-optimizer/src/compiler/glsl/ir_basic_block.h":"81be7da0fc0ee547cd13ec60c1fcd7d3ce3d70d7e5e988f01a3b43a827acdf05","glsl-optimizer/src/compiler/glsl/ir_builder.cpp":"daba29c5a1efdd5a9754f420eb3e2ebdf73485273497f40d4863dadeddb23c0d","glsl-optimizer/src/compiler/glsl/ir_builder.h":"2822e74dd3f6e3df8b300af27d5b11ea2dd99d0e5e7ca809b7bbcce9833c483c","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.cpp":"8c6df5abf2fe313363f285f171c19ca6c8ee4f3bc2ed79d33c0c88cc8be45c48","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.h":"799852adc3a0e54d04080655e7cebfa0d3bf5b6ffed5d8414f141380665d4db7","glsl-optimizer/src/compiler/glsl/ir_clone.cpp":"d897a4e1f5bbec4a6a2f15044c1be9a4d13899c73be77335b041049a4589aa5d","glsl-optimizer/src/compiler/glsl/ir_constant_expression.cpp":"78bd87ddb09db67f6c499067728d72aef4f16aa02721a99a4b769d1e0cfa9010","glsl-optimizer/src/compiler/glsl/ir_equals.cpp":"bca28533a6310b0fc152b56d80872368f1510dc62ed6e8ac199b9ffa7fac02e7","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.cpp":"7e918d4e1f237eca01396004015865ce345afe32a876c9dbc6728576a1a7eae4","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.h":"f45b66aa9497520e7e08e612d24b308477c34477fbd963ee9320eac664957f16","glsl-optimizer/src/compiler/glsl/ir_expression_operation.h":"cc9f10727dbd26cac506804f51456302c702650f9eeb59054a7e1575d5cf6687","glsl-optimizer/src/compiler/glsl/ir_expression_operation.py":"7b86c96021b9fbe165957f4ecb0b612fefcde1c2cf3c6d75e3cdb22e369216ba","glsl-optimizer/src/compiler/glsl/ir_expression_operation_constant.h":"9ad3346416392e3efa11e12ecf2feca7453c5253d241eb96c91dfb85d4f2b971","glsl-optimizer/src/compiler/glsl/ir_expression_operation_strings.h":"a6826daf496a8b9e89885bc2a161ac3445d501b23c6e0ac33e2c01b506b273c8","glsl-optimizer/src/compiler/glsl/ir_function.cpp":"7537365fc0fbe4b37a26b9a2146cc64d3e9a774d60eab63b65002ad165ae8fc7","glsl-optimizer/src/compiler/glsl/ir_function_can_inline.cpp":"faddbf112187a048d502716a3fb82570a322299ba2a3abd79388382c82040bfc","glsl-optimizer/src/compiler/glsl/ir_function_detect_recursion.cpp":"9176973eaf5c0a984701f953bb7a80f37dca43d59b5bce50fc69b3f02f2902d7","glsl-optimizer/src/compiler/glsl/ir_function_inlining.h":"9739493f99c489987d650762fccdd3fb3d432f6481d67f6c799176685bd59632","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.cpp":"3725861fbe2b98e0617f52d3b14cf6d3b25fb5ec00f5ef5d308b03642f592767","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.h":"e0560210e966c0c31e4ca843e80ea154e64db5a444b8c2df845b6ba5b3a43fc1","glsl-optimizer/src/compiler/glsl/ir_hv_accept.cpp":"caf7ce2cd9494aadd3c58bcf77f29de58368dc9e347a362bbf37f8bda9509b80","glsl-optimizer/src/compiler/glsl/ir_optimization.h":"8b3dcfc7f9e96b21a8dd47a0040d90be483a9e67a2cdce3a697188fb758d4630","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.cpp":"f8e34a983452be0dcb5a695e9c8e895eead24f9e540992a8afe510ae85da4c4c","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.h":"1ad1bd3efd1ace39051c13f904c05fd80425d329444f9a8d47fd6d948faf46e0","glsl-optimizer/src/compiler/glsl/ir_print_visitor.cpp":"643f5a68aae3fb37267fd793f1216d1cfdeb2c09338c26b1f30e4c6deaef4de5","glsl-optimizer/src/compiler/glsl/ir_print_visitor.h":"4573eb93268a2654c14b505253dd651e2695d43dc745904d824da18305269b95","glsl-optimizer/src/compiler/glsl/ir_reader.cpp":"06bfba802c8354e5a8b2334b6d78d6297de18235bedd3f8fbb382c89870b02f2","glsl-optimizer/src/compiler/glsl/ir_reader.h":"63e3f7f1597936a7011d5b520e171b197bf82bee6c1560d822c3edf5aaa6f9e9","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.cpp":"84b5c5d746555adca85759c2912fe48010232b7c1c0bd2cf03bd04067a85e66f","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.h":"fd8c561b71085d3211fff85ed514fecb299d8ce19a04bc063419a55b6d840525","glsl-optimizer/src/compiler/glsl/ir_set_program_inouts.cpp":"ab9f115ce9e7f312d9c7978340ced0dc4ae6d13a80e08442ba9709d11d50cae5","glsl-optimizer/src/compiler/glsl/ir_uniform.h":"683ae6896b1a08470c090be5f822fc31cd434eab9216e954b9bba24a46975109","glsl-optimizer/src/compiler/glsl/ir_unused_structs.cpp":"9c1620c45f2fc071fe5ed828472040b14c5f42effe06aa0e3b8352c95ef78786","glsl-optimizer/src/compiler/glsl/ir_unused_structs.h":"13387b49c23093575276b25b9dfd31fedd8f131c5c4f3128ab04cf03e15b5295","glsl-optimizer/src/compiler/glsl/ir_validate.cpp":"6b232be5999a86ea278f4f15b2832d76843246509118d924243055a3b9b0299f","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.cpp":"2764a3cad937d53f36db7447c3a5b98b04bf153acf81074d971857fc5bca460d","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.h":"b0668e3eb1501ef65e38fe12830742ecb3d28e6039f30e366c8924efc29b4a39","glsl-optimizer/src/compiler/glsl/ir_visitor.h":"f21b3534c3d66d5fb707d1581fece7e1eb043523afbaedf89918cfb031c6df94","glsl-optimizer/src/compiler/glsl/link_atomics.cpp":"360f0209e11f367ba358223597b0a118bae095bff16337cf03f1fb89c5b80ca6","glsl-optimizer/src/compiler/glsl/link_functions.cpp":"de7895da8aa33a1e3c2c1eb2fdaf267ab5d1fbfdb79ae2e67f95211e946e294c","glsl-optimizer/src/compiler/glsl/link_interface_blocks.cpp":"1926cfa73810704eb19b916c1b2cdb9321155e2f98b2a0a57c7c3c6e960540cd","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.cpp":"1e14e06ca3b2c1089cfba2e8eaf0c1f373d9d6374b6082f320962dd71ae09611","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.h":"fd58c155af645295bb6aec08797889de586f4d919731de2bce57e8dce59bb048","glsl-optimizer/src/compiler/glsl/link_uniform_blocks.cpp":"09589f49776dce32e6c4044937de7e0c839a9754ad31960148f8f9e010658997","glsl-optimizer/src/compiler/glsl/link_uniform_initializers.cpp":"bf98e08c12db466acf9623cbeb8fa8e3b4002512722e7a6521287f558a099f37","glsl-optimizer/src/compiler/glsl/link_uniforms.cpp":"84bad5b1377362cecf259b05124239be5220b03ce1c0c61b59bd9a47e4379af2","glsl-optimizer/src/compiler/glsl/link_varyings.cpp":"a5f1a53e7c80d635515fe808ff223d89fef1767abb0f2b7aa28fa6773dca353f","glsl-optimizer/src/compiler/glsl/link_varyings.h":"b9dbe018f038df69763df2e928742ce81bbc6e3aaba26f50621e30a6d9aa6220","glsl-optimizer/src/compiler/glsl/linker.cpp":"40b1ecd5d4f6c7f13d5a87ce390561a51fdf6f3fcd9b2197b9c88b03a773ba94","glsl-optimizer/src/compiler/glsl/linker.h":"ecf94b4ad75ef461c27c557fda4bd25f34c91930822b8e1d729ec84520d4a049","glsl-optimizer/src/compiler/glsl/linker_util.cpp":"1663ad88e2a369305659aeeffaedb5bd752cf76340a2ba5797fc0bf600633cf9","glsl-optimizer/src/compiler/glsl/linker_util.h":"6db788daf9c8e87ae2764b61a8b37ebe419e69c1b82ddee01986e37c978c6993","glsl-optimizer/src/compiler/glsl/list.h":"b1f46ce0e552fe7c45b2a19408a9d97662e23e4b182ab335491c26f8cf25886f","glsl-optimizer/src/compiler/glsl/loop_analysis.cpp":"57ecd573477c68091c7cc99537faa7139a8f395935e3d4f10144cefdefb5a611","glsl-optimizer/src/compiler/glsl/loop_analysis.h":"a85f045a038ee5b5176063e85d7988865862c44ab0580f771b993a042d0b69cc","glsl-optimizer/src/compiler/glsl/loop_unroll.cpp":"bd4292ea2809f5a669bcb76ceaa1ac365772dcd638c579c3ed10275214901a54","glsl-optimizer/src/compiler/glsl/lower_blend_equation_advanced.cpp":"8cfbef140d9c4b4d2f57bfa05c9c374d31a121d0f87afce94333f049023b654a","glsl-optimizer/src/compiler/glsl/lower_buffer_access.cpp":"1ae221c3c7a95aeb867207e7a742be635f91b406c157747bfd6ddf10274d97fb","glsl-optimizer/src/compiler/glsl/lower_buffer_access.h":"807886953a576a323591798cbca5e2df24295ea893b28affd8ffb5926cebaa04","glsl-optimizer/src/compiler/glsl/lower_builtins.cpp":"4d81afc32cf58e1481fcb5e42888ab93dbe6820310a20ff7a9982b77b2152d9b","glsl-optimizer/src/compiler/glsl/lower_const_arrays_to_uniforms.cpp":"608403f0eeeedf21cfcd3014116e0f44e28cbdf6c4c32aac7e613e64e30205e1","glsl-optimizer/src/compiler/glsl/lower_cs_derived.cpp":"179905cd47a294122adeb5b0abfed6f2f67782dcde21b544d1ee2c1985154e66","glsl-optimizer/src/compiler/glsl/lower_discard.cpp":"3b361b2db0004d544d64611cb50d5a6e364cf6c5f2e60c449085d7d753dd7fb0","glsl-optimizer/src/compiler/glsl/lower_discard_flow.cpp":"f5c29b6a27690bb5c91f196d1a1cf9f6be4f1025292311fe2dac561ce6774dee","glsl-optimizer/src/compiler/glsl/lower_distance.cpp":"a118c85493d5d22b2c059a930c51a5854896d4b1dade76598eaa985e5a3dff8c","glsl-optimizer/src/compiler/glsl/lower_if_to_cond_assign.cpp":"469e617757fd1728709cce021aac5c8da05ee503bf5366977bdc4ef7a6d83950","glsl-optimizer/src/compiler/glsl/lower_instructions.cpp":"6ff5c396abe40d8a2145d571e99e2bbe9143393e15aafc28adc2803a01d821b6","glsl-optimizer/src/compiler/glsl/lower_int64.cpp":"d1ed41196880dd53c7b13e2782f9423f8442bf1d46186e8be92b1b66218a83ee","glsl-optimizer/src/compiler/glsl/lower_jumps.cpp":"34de7b493f281589fb0c2c0f6e885d0a0fabbe7a4e97a73de374dd714777a58c","glsl-optimizer/src/compiler/glsl/lower_mat_op_to_vec.cpp":"dff7a308edc4846c348ed4225c6699a9c75abac68d88f41f85954276552779f4","glsl-optimizer/src/compiler/glsl/lower_named_interface_blocks.cpp":"16063ac127bff75a68272070ab11c21c25101edbff62b4c68f4983b4cd941af0","glsl-optimizer/src/compiler/glsl/lower_offset_array.cpp":"3b00773399135aea85746a5a68b96ef000bc6841be1a2c8e6f25c516628b0949","glsl-optimizer/src/compiler/glsl/lower_output_reads.cpp":"a0fc9975d5aa1617e21fc6c353659a9802da9e83779a3eef4ec584f74b4dadc5","glsl-optimizer/src/compiler/glsl/lower_packed_varyings.cpp":"7550099d4ae123d71541c2fc88bc04fbfe9271ec75d7e210987d1c8cac3cf3ea","glsl-optimizer/src/compiler/glsl/lower_packing_builtins.cpp":"79a13d161fe505a410ab948d92769395708693ec888153630fa240e5b97e356f","glsl-optimizer/src/compiler/glsl/lower_precision.cpp":"f82a185b879872b977a1787d8061b9a80bc4cf8db1b970db6efba2ad9cc20fa2","glsl-optimizer/src/compiler/glsl/lower_shared_reference.cpp":"ea2dccf50a83bc19391bf6b7ab6aa53c0005f427af4066d25140340af9a4beef","glsl-optimizer/src/compiler/glsl/lower_subroutine.cpp":"f69fa53650eeb6f2944fce4d36a6e0a423e6705f3a3bd3389c7fadb83cfc8802","glsl-optimizer/src/compiler/glsl/lower_tess_level.cpp":"b196c9d424c0569f3e85d75c2d125af21566cb113d69036db87c0990703e0fa7","glsl-optimizer/src/compiler/glsl/lower_texture_projection.cpp":"4d247f244272adc8250fd888d8d932a140dd5de4d1efc7a58492c3c2b8291527","glsl-optimizer/src/compiler/glsl/lower_ubo_reference.cpp":"89bdbc6c1669230c644c0857db1ce2781ec61d349ecd08c7914146e1f4750a4a","glsl-optimizer/src/compiler/glsl/lower_variable_index_to_cond_assign.cpp":"fce930f29ac9405b297d1f749d68f59506b89c70b4ee1b1ab8cf49a34cc71ecf","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_cond_assign.cpp":"3c67d851a11a55fad1c49a550f3a0cfe50892d33a3f238ce266cd829eba510a8","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_swizzle.cpp":"f5ec666b73e1415cbab32519a53605ed385f3b03e889560373dbce69dda5000e","glsl-optimizer/src/compiler/glsl/lower_vector.cpp":"f7c13f5572ebe09b6a71553133b2cf003cd4b77b9657600672ee3b21bf890725","glsl-optimizer/src/compiler/glsl/lower_vector_derefs.cpp":"b05793da6dd620a531b43df5af8b2ecbc37b9db0c88910f5724ea10bcd057e19","glsl-optimizer/src/compiler/glsl/lower_vector_insert.cpp":"fee772ec17eea5e86a529bf9c5fa2ee0d29a5982bb75ebc6d68ed36cd19aa299","glsl-optimizer/src/compiler/glsl/lower_vertex_id.cpp":"690e8715182e03fead5cc5a35251fb4f41b357e4c71a1dfbc4bd7be19862b56d","glsl-optimizer/src/compiler/glsl/lower_xfb_varying.cpp":"58c0e8b270e4bbde54250be03cdb2f36966bcafb785372ad2e2b786835df7f9f","glsl-optimizer/src/compiler/glsl/main.cpp":"ae5e88abbbc8a12f769e1296bad938b9d7398cc6da0d3d0caeceeeb876536850","glsl-optimizer/src/compiler/glsl/opt_add_neg_to_sub.h":"f5054944bfd068810629080d0ea11df78b3f57a8f86df75e13ca50157ad1964d","glsl-optimizer/src/compiler/glsl/opt_algebraic.cpp":"25f45b20e1972ee8c789177a1aeda6e4286c25db2eae3a43ff83029ae64969c0","glsl-optimizer/src/compiler/glsl/opt_array_splitting.cpp":"19d3ce0e815438f4df9ab2890e767b03a4f3f191b53bb30c0217cf2ae6a95430","glsl-optimizer/src/compiler/glsl/opt_conditional_discard.cpp":"0e44e0e126711a3725c1f3a2aa65ff03c381fed08680ffc30101aae60f716c4e","glsl-optimizer/src/compiler/glsl/opt_constant_folding.cpp":"a088d04d9b45f9e55e235835648f614c89b7803c03a6d4f6a6d1a6bc1f0228bd","glsl-optimizer/src/compiler/glsl/opt_constant_propagation.cpp":"8a9440d77ecd6dcf13e683cbb99943aab6311c8fd4b5f6a9189a8d4f270746f4","glsl-optimizer/src/compiler/glsl/opt_constant_variable.cpp":"63d3ccd4dd09f19c9cf1a2f51592111bed41284504f29f3c0de4cadebc439a37","glsl-optimizer/src/compiler/glsl/opt_copy_propagation_elements.cpp":"ffa0f50863995e0d2e31f55a52e82319edc71e520987bebd7f7e561ea331c64b","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_variables.cpp":"84e8747b948232f01dd56b428b9315f96f9511f605f240119fc446fae28981a9","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_varyings.cpp":"761523e88f5b3ba785170f4d7205e94fa99acb7e74d29efbe40e1c010e1dbdb3","glsl-optimizer/src/compiler/glsl/opt_dead_code.cpp":"fd1ba2da7337d4e5dad17f5c2d73d9cc8880305f423e85d64cf94553588fa401","glsl-optimizer/src/compiler/glsl/opt_dead_code_local.cpp":"969a598b4df322baf222258a66cd64a326ea20e5b3125be9d8d1771f522c69e0","glsl-optimizer/src/compiler/glsl/opt_dead_functions.cpp":"774cae6536d02edf26e996a2a895e1f62d5098f16dc96b44798b4fc731a9a95f","glsl-optimizer/src/compiler/glsl/opt_flatten_nested_if_blocks.cpp":"3696a5c55f02e20056e085bc2714f73ac992f221b6f3387d655068e86b512046","glsl-optimizer/src/compiler/glsl/opt_flip_matrices.cpp":"44f0fe05b49329667671f88c96dc86ab3fe1459ff7b87f2b2d88de2d49829f9f","glsl-optimizer/src/compiler/glsl/opt_function_inlining.cpp":"fb56a33c90419a01676b57cbd91d0674a54cca40e6defaacc88dd33facebc131","glsl-optimizer/src/compiler/glsl/opt_if_simplification.cpp":"ac406eb35e379c357641d6c5749f50c65961455924d3dc884e2b90046fa92c5c","glsl-optimizer/src/compiler/glsl/opt_minmax.cpp":"8abd59d3b14ef60ff14a9c69660e6945f5cf10b97edb4afebe56be3f81d96316","glsl-optimizer/src/compiler/glsl/opt_rebalance_tree.cpp":"8bb6329dc0f299042368fc81934c2df019b45ab9f7aa0415d4e57b8d1ff98c9f","glsl-optimizer/src/compiler/glsl/opt_redundant_jumps.cpp":"222c73e2ac7a938ebb6428cc6c780c908ff6156d8ff935b04fed93a48fc10496","glsl-optimizer/src/compiler/glsl/opt_structure_splitting.cpp":"2edc79cc13f3177934e0443ad62f5976a1991f01f86ea303a803434849b13a47","glsl-optimizer/src/compiler/glsl/opt_swizzle.cpp":"015d0abddfe507f67c4b96c82988d861d018ededf7bf055e2bcbe9ea92da694e","glsl-optimizer/src/compiler/glsl/opt_tree_grafting.cpp":"46d28ac983ea244a4315bdc0e8892979ec4d1f9b9a96ac8a8a08006d9bc5e878","glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp":"d80ee43bb97d9f016fb9c5e1e06f5b2afa569811f368ba067be794ec11d085fb","glsl-optimizer/src/compiler/glsl/program.h":"2982447e2abd35371e273ad87951722782a8b21c08294f67c39d987da1e1c55f","glsl-optimizer/src/compiler/glsl/propagate_invariance.cpp":"080943e21baa32494723a2eefb185915d2daae1f46d6df420145c5ad6857e119","glsl-optimizer/src/compiler/glsl/s_expression.cpp":"1ced972bc6ecc8eab4116ea71fb0212ab9ae5bcc0be3b47aa5d9d903566b3af1","glsl-optimizer/src/compiler/glsl/s_expression.h":"65b847e30e22a809b57d0bc70243049c99d9c6318803c5b8d0826aba55dc217e","glsl-optimizer/src/compiler/glsl/serialize.cpp":"be0eb4251348a9d921acb839a5c48c6023a2e9d116d602bb0432787ab623655d","glsl-optimizer/src/compiler/glsl/serialize.h":"57425732eba1233d928e5f07f88b623ce65af46b3bb034bf147f0a4b7f94f9a1","glsl-optimizer/src/compiler/glsl/shader_cache.cpp":"e0c5c433f2df3fccdf1d61281bfcb0ee5633433339b97c697d64db99611cbaaf","glsl-optimizer/src/compiler/glsl/shader_cache.h":"9217164d8d7f54aca0fe5922c7187095a6ae0cb703b196b79805aeef07a7e697","glsl-optimizer/src/compiler/glsl/standalone.cpp":"8e6c416a14d631261917a5fe4cc91880c287b22b2dfd70eb22028289a8fa5364","glsl-optimizer/src/compiler/glsl/standalone.h":"a7c397d1dfdd1e7fb2cfe99db35cd9df93251e642059208533202b7f20497f83","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.cpp":"970d14b7a9d58e5270321f97bf5d57795558b1c570a56678e04a65b26c60bf4f","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.h":"d921a617ea82b9e49413314492a645c44356de503581b1be3f1b57de236e480d","glsl-optimizer/src/compiler/glsl/string_to_uint_map.cpp":"d824bf5b839bd39498dc9e457103cdbe3e5289ddf7564107c27b1505948dd31f","glsl-optimizer/src/compiler/glsl/string_to_uint_map.h":"e2f18e66359c9d620e085de7f4a334a47df9c66e65a5bfe8b734c627bec04104","glsl-optimizer/src/compiler/glsl/test_optpass.h":"b27b8f35f5387e7ce4982bb51c7b63ccf14f91757f3108a5d02ed006925bb8a0","glsl-optimizer/src/compiler/glsl/xxd.py":"376484142f27f45090ea8203ae2621abf73f06175cb0ee8d96f44a3b9327f4bd","glsl-optimizer/src/compiler/glsl_types.cpp":"044bb6754f45419a3151e7a25c39202a82009ae3c6bc54ff7f0bb4258a5deefe","glsl-optimizer/src/compiler/glsl_types.h":"fd899a42f34ddeb8601bc3cd6c5e3aed82fc8aef4042dde1b39b3c01e1dcc219","glsl-optimizer/src/compiler/shader_enums.c":"436bff5216b11b0980bdfada5885fc6ac9afa2037a3027fcd6eea2a8635597ac","glsl-optimizer/src/compiler/shader_enums.h":"13220442a5c02e83540cf2c0ad4f8417b2fbda5f2586dec4e92082544c937cdd","glsl-optimizer/src/compiler/shader_info.h":"4c5453e81197ca83593ee4f365074b23530f2ab21c78e1733b63dec6f344c12a","glsl-optimizer/src/gallium/auxiliary/util/u_half.h":"3c2b37bda3ccb64387e44b723d29cf9046decab1a893bf42d842e9603398bdee","glsl-optimizer/src/gallium/include/pipe/p_compiler.h":"c75620096ce8523dae90599e50aa2ef6468d3b0e368a77795edeb20dd1abfc0c","glsl-optimizer/src/gallium/include/pipe/p_config.h":"a27692fc35f9e55df3224b7529e66b3001e911e94e6bc5f8f569e493e1ee3fb7","glsl-optimizer/src/gallium/include/pipe/p_defines.h":"be26d68c0acc67c5e44788c6299716a9eee415fd81d7d747e3738a829e3b6b38","glsl-optimizer/src/gallium/include/pipe/p_format.h":"5674215fc41d27496f037cf837717daefbf23ebb38d40ace7c0c414bc08182b0","glsl-optimizer/src/gallium/include/pipe/p_state.h":"d600593aba5f5a17072a6c38f6baa81e01c7994b0174250f7e433bb41684b702","glsl-optimizer/src/mapi/glapi/glapi.h":"73632a625c0ddabc401205e8b5a81eb8af8506868efe4b170d7979ec3619e9c5","glsl-optimizer/src/mesa/main/config.h":"5800259373099e5405de2eb52619f9de242552a479902a3a642a333c8cb3c1e7","glsl-optimizer/src/mesa/main/context.c":"2f3208473d99c94f734b1137ba91889d4a1babb9e7534bf1dc85d851ee98274e","glsl-optimizer/src/mesa/main/context.h":"cc7e4194797db9d007f01884e23d786c453b3860821f7f2ddcdf0f1bf3f8ffb1","glsl-optimizer/src/mesa/main/dd.h":"6a964acd06b6c2d88700e69fb75fe3c6b3b3d45bbc41db24f3f897a29695fe0c","glsl-optimizer/src/mesa/main/debug_output.h":"7312422e90b8c0e34028ac27280e438139b5cba525c99deb3ac883cd3d87e452","glsl-optimizer/src/mesa/main/draw.h":"7eaef3a9e27a60ea6f7937109bf3a6190b831162fde0479abb12077ce27c353d","glsl-optimizer/src/mesa/main/enums.h":"87d562a6764f51c014a2274fa7c3aca17c04441537ddd56b2554f13c6fffea92","glsl-optimizer/src/mesa/main/errors.h":"c79444b5df289c90fbb22a33b2d0c23917d9fc4510960088f0b79e53bb56b1b2","glsl-optimizer/src/mesa/main/extensions.h":"a38b2f87cc93c513994281350d69e06c84ff8eded5313ec0a1be33f375e0ebbd","glsl-optimizer/src/mesa/main/extensions_table.c":"17642d1a8c9a0bf2bd61060052d33ff14a005d2b962e6cf91465797a50851e85","glsl-optimizer/src/mesa/main/extensions_table.h":"2c879571c238d2e14461031ac740372fd0f9ac3a34c0d5541bb9b7ed4c0376c8","glsl-optimizer/src/mesa/main/formats.h":"02e2f7ec3e39286cf9f27e2641043e6df8ecb1dfde9e643313210e214af2a929","glsl-optimizer/src/mesa/main/glheader.h":"58217b33eead6aa6b23cd4a291cefeaa6cb84e465f4960daffca97c44d6d1c35","glsl-optimizer/src/mesa/main/glthread.h":"51fb2711f77e7eafcfc52d29d5b844978832b24c930d88accd48d143a6eb9c6f","glsl-optimizer/src/mesa/main/hash.h":"7e7f782034c16a8e693de48e00c31d4a90b0129f4029fd074033d7d16ccbe718","glsl-optimizer/src/mesa/main/macros.h":"73d15ddfd64f2b57b9b2ffeeb993b9c2c0899a80563e9d6ff337b11ccbe6eee5","glsl-optimizer/src/mesa/main/menums.h":"5dfac0e2279d60b0cd0c7b9fc2a5021620d0f6282ed2e738c420214e3af152d3","glsl-optimizer/src/mesa/main/mesa_private.h":"edda678b93438944279a551f663b8858ad84814a9fc88ba9672ef195599c24ae","glsl-optimizer/src/mesa/main/mtypes.h":"6efddefa099e4d2e3fdd97f0055644f47aba21711385edfeabc2d9b0676f2eec","glsl-optimizer/src/mesa/main/shaderobj.h":"9f0dfe96d0c2154201adef942bd36053533ac7b2492fb3786acda5bea514c75e","glsl-optimizer/src/mesa/main/uniforms.h":"4e331e6ad6e9cbded978b4082dbe0a57c1f8f01327446bb6892bfc179976c38b","glsl-optimizer/src/mesa/main/version.h":"9d0a13a758099302dc55cf7d045791834a89b0f9d4cf17b2692259b369a8a9a1","glsl-optimizer/src/mesa/math/m_matrix.h":"a37b19f182e070db3df93b0ede43c22fb8be8c2906504133ee6dbd7db1185d8b","glsl-optimizer/src/mesa/program/dummy_errors.c":"1820e305515b4c5e041f5e1623266a48ec8f076a155310be7d60637101f593e4","glsl-optimizer/src/mesa/program/ir_to_mesa.h":"b47f58d22e3ca2ae42d52501ea769d15c4476834944fa97eeccd3a3439211d00","glsl-optimizer/src/mesa/program/prog_instruction.h":"ab3832152a7e144b59e5a2264b2c29db56d93be31e76bbd958527a56771b40eb","glsl-optimizer/src/mesa/program/prog_parameter.h":"ba18c743284eadbc837c2c364c73e5d372321a7637a76e589d8d39fe8b5de225","glsl-optimizer/src/mesa/program/prog_statevars.h":"fc413698f84bc52d45fdeae0471934ee9904bfb7eac1a2b5f70446e54bcbbdca","glsl-optimizer/src/mesa/program/program.h":"1f01026a4eff440a3f122fd9b519d03546fe7f7d8be60dca834e95a2f8fbbfd2","glsl-optimizer/src/mesa/program/symbol_table.c":"6611cb9f078035bf5ff8c9112093a6c7d99f8af99a3931d0c07f227cc72283ea","glsl-optimizer/src/mesa/program/symbol_table.h":"631dc35ac48d5e87962d45507461920f6575610960ffcc42a08cefeb43300cda","glsl-optimizer/src/mesa/vbo/vbo.h":"6eb1dcd9a08c92f276c5fe08da184ff9d455d1be421913b8ad732a7b65e858fb","glsl-optimizer/src/util/bitscan.h":"9e49e694e6b34fe035bc685f32588827eb8cbe7d82878963c7ab52843e1c16aa","glsl-optimizer/src/util/bitset.h":"c40f78515c6230fed18345c6751ce33833a49da7a27901c7e6d7340cbdcbc5e7","glsl-optimizer/src/util/blob.c":"8f729846f66efc9c15485cc5fc24c6ec861fc1fecb2f652573f2a237d481b791","glsl-optimizer/src/util/blob.h":"93e1eaac866b9a7cd6fc03b533c18fb2edf0e97f03395eff4f3a605c4fc14d0c","glsl-optimizer/src/util/compiler.h":"79e3bf40a5bab704e6c949f23a1352759607bb57d80e5d8df2ef159755f10b68","glsl-optimizer/src/util/crc32.c":"2f3467a046b3a76784ecb9aa55d527698c8607fd0b12c622f6691aaa77b58505","glsl-optimizer/src/util/crc32.h":"59bd81865e51042b73a86f8fb117c312418df095fed2d828c5c1d1c8b6fc6cd4","glsl-optimizer/src/util/debug.c":"c3d68e9752ccc19e66c669562cd113cf1d0ac83cbb30174789e7fb8d1df58f9c","glsl-optimizer/src/util/debug.h":"50068d745c4199ccbd33d68dd4c8a36d2b5179c7869a21e75906ddd0718ca456","glsl-optimizer/src/util/detect_os.h":"343a8790d17a3710c6dd015ee367f84e3902ff3f2e36faca2bf93f9d725d3574","glsl-optimizer/src/util/disk_cache.c":"f533937e5a4fffe76e2739ef4b6b1e1da097d96d63eb808e68ebbc7027641c23","glsl-optimizer/src/util/disk_cache.h":"e83314fb14134a8e079b15e470a6376ba5a8253701f048c890a62b7e55d64bc8","glsl-optimizer/src/util/fast_urem_by_const.h":"e108fce804616c47d071dfe4a04163eec1126e448ed1aa89abb6b3a6d772bd5b","glsl-optimizer/src/util/fnv1a.h":"ab2596f19c6adf431ae27618f62c5743e24ad23ef83bb359a4c4c218245ab459","glsl-optimizer/src/util/format/u_format.h":"4cdfc0c59cbc99a092e5ec5a396910f2d93b9643e5d8141050b011e66f11e45b","glsl-optimizer/src/util/futex.h":"26f7c9d86e9ffef4c0fa2761f1aaa1918337302e20bd6ca10e61dc3c47356deb","glsl-optimizer/src/util/half_float.c":"11bc2584493d5d9d46e8c8a619a0307cf150bf5ab5d0f96bb764b061dc37a00e","glsl-optimizer/src/util/half_float.h":"7f7c380f126da1400a91758cc0392f24bf967bce1672890b62be26fe9fbd922b","glsl-optimizer/src/util/hash_table.c":"0ca40352e35dedab0a84c64c903f1b16d47e950bb5f43b4d22bb57d499bfea6e","glsl-optimizer/src/util/hash_table.h":"217191bb360592e2232f187473c10287d2cda8ae6fa5c53d0ef74c8c206118b4","glsl-optimizer/src/util/list.h":"9fab03c6a78186bb5f173269f825f6ce976b409d931852e3d93bac632e07989a","glsl-optimizer/src/util/macros.h":"63faf65b51058c483b17f1f77da51d1c53c8beab52678cb6bd01f1228a63b6b0","glsl-optimizer/src/util/mesa-sha1.c":"00c692ec353ebc02c06c57c5a71de0ab7a119f86a4146f452e65ec87e4944417","glsl-optimizer/src/util/mesa-sha1.h":"bff4c29f4bf7cdbcefb30fa0c996a7604a380eba8976467c2a60e7cd328f7e26","glsl-optimizer/src/util/mesa-sha1_test.c":"25da89a59d51469f77b4c468ca23ffdce0a7a1166a70b6cc23026a6800b0143c","glsl-optimizer/src/util/os_memory.h":"64555faf1760ae6954f42c83727c38dfc4c278e9152115779ffaad58b42adacf","glsl-optimizer/src/util/os_memory_aligned.h":"12d86fa94be38c13f7eeebdf313795e1267dd5a7187d2f0072e0e896f41702f6","glsl-optimizer/src/util/os_memory_stdc.h":"07360363b88c927065e10df71bebf6c8a0cc3b9167c9dfce55f2d65f11e6f787","glsl-optimizer/src/util/os_misc.c":"a9936e613ec84803abd59ad47c192c8e3939993c950ac91973fdc4cec1801bb8","glsl-optimizer/src/util/os_misc.h":"cc68eb12e05b5e749c54298cb4a6f4cd20cc5af7db3403e70b3c27b56090c740","glsl-optimizer/src/util/os_time.h":"73e775f7335244ff5964c678c27eedf1aea6abea44c4169d327ea8c7ce4a3a88","glsl-optimizer/src/util/ralloc.c":"4b51189595ef67bcef52c40cbf654d969041dbd15e15d4a893ad494ac060aeca","glsl-optimizer/src/util/ralloc.h":"e573c45875ff1530f0dbee9a93ae55535fdac8d5cc88a79ebc327c688824bde5","glsl-optimizer/src/util/rounding.h":"0450722353caf83de07e67f335949dbe95fe53b534052d4ee9d28d2781387614","glsl-optimizer/src/util/set.c":"86f8c9a830bead5a5a79bc970b0ff97809312af07b3beb39ef9d90af04d40a1b","glsl-optimizer/src/util/set.h":"3e39ca161e7ed4ec7c436cc9c7919ed9a55ed1b71edbf2caf6f9bcfd9bc578ed","glsl-optimizer/src/util/sha1/README":"00af7419af05247081858acb2902efd99fcda2ce16e331079f701645bb3729c0","glsl-optimizer/src/util/sha1/sha1.c":"1403bbe0aad42ba3e6be7e09f7cad87a6a8c4ad5b63962f7b92b9f37d8133b04","glsl-optimizer/src/util/sha1/sha1.h":"68d9f240eab2918026ecdf22be36811abbd4f1389f6c36e31258041aeaedd247","glsl-optimizer/src/util/simple_mtx.h":"12c6c3c4b7db9168bc656d5b3c65912075084d2b388c415d5c3d3f5953a9d6c7","glsl-optimizer/src/util/softfloat.c":"a97e51a96fe5e6a052c02aa6bbec683fe73fb88a8c087d9c930503e2120d8a2e","glsl-optimizer/src/util/softfloat.h":"66664b0250e83bf5dd4cc743acd119d076efcea624a0eab3d6b60718e6ee8811","glsl-optimizer/src/util/string_buffer.c":"63a1d1b1e34926c88ea00159cafbcd56568b805c4f64d1e8c97169fe313921fc","glsl-optimizer/src/util/string_buffer.h":"7b88d1b1d9c6cfb8e93331813535c127289437c75f822029e9a3bca8ea6b52ee","glsl-optimizer/src/util/strndup.h":"0273c4fdb7482cd7746881a63d3998648c6d63415ba85af1d1860f0e0dc504c6","glsl-optimizer/src/util/strtod.c":"5cf610d8a37373cf37cfb7aae903525d943b2674b1f32594c70b0eb19a8c9697","glsl-optimizer/src/util/strtod.h":"237396def4e264d35ed4bedea00ef9a4ceab6d7a11a18c770d9747d22c69ed2d","glsl-optimizer/src/util/u_atomic.h":"c02e809526c6c09ba8fe51f50b2490d1b6c8e5c7f3c4031ae958250d098fc3bb","glsl-optimizer/src/util/u_debug.c":"8c060e379b816618f3dd22c9ea523c68b9425c76c36a7dfe5d6d375b337f5f4a","glsl-optimizer/src/util/u_debug.h":"e11e26edd9b9e4e6f8e6a435e69f4d9edda27e9a379f68f4c82ea2525aaaea68","glsl-optimizer/src/util/u_dynarray.h":"853d0fa6ff2261614488be624deb8a2b01e57c2c8eabc28578cbeed4ccc95694","glsl-optimizer/src/util/u_endian.h":"3ccea7e529740318d8a4b05c00db3adc9d1e292a52bdc56a05c9fae99209720f","glsl-optimizer/src/util/u_math.c":"c868a8c0886dc78f1b06b13404ba8b253090449045774dd56893ac9d75795184","glsl-optimizer/src/util/u_math.h":"a04e32e126db016413f9de0a2028a3e71737137463b1289eae576f884b06fcf1","glsl-optimizer/src/util/u_memory.h":"c5db17c724c70283ddbe04165722f6988d4e0eb9aa3602ae472feff016649af9","glsl-optimizer/src/util/u_queue.h":"92930ce236c0528a98b695f5cea8c5c6aa9683beaf71a2227bdc5d33d1b21506","glsl-optimizer/src/util/u_string.h":"c5a2f4ef576d1547bda12c4ea219179fefa54414977743ac094abcaf696ef6ca","glsl-optimizer/src/util/u_thread.h":"00b708459b27f9910d18db92c18cc65cfc618ac2b3cd144e45f8640057b10d58","glsl-optimizer/src/util/xxhash.h":"2f2aff2fc6c0c929f52cf6ae7314122124c5be026d41ad1c357608383c4a37ad","src/bindings.rs":"79993db2058bde39f99ef483d02560d33b1cb882f6a552319e8b86eb6f9021e1","src/lib.rs":"04be1554cd829eb40864b06d80b491dd48117a4e3a601c7d482117f7a0391e67","wrapper.hpp":"f3ea34cc496f7d90b9bfcada3250b37b314c3524dac693b2ece9517bc7d274ac"},"package":"8ba4741358604ca0848c27ecc069d68e62e11cde81e38aac1da3c54b79ab5adf"} +\ No newline at end of file ++{"files":{".gitmodules":"ffc0cce90e856d4f4bdb3bd3c950c9e59501a45ebd5022b91cfe8c07c79ef1ac","Cargo.toml":"cd1efadd7a6d266acd8c412df59df8c8beec33e393567d4a5b236a3315f35d93","README.md":"4468e08c64c19977707d792bfab0080e35ff927b64990eab77873f8ba056ba1c","build.rs":"92e29699487c21389fc823c50b410cfbfc74cc774265d24958489909ee48a076","glsl-optimizer/.cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","glsl-optimizer/.editorconfig":"dca7ff05a95f608849c4dc640af7f83a0f415618e327a2ecb6a0afa0d9d2bacb","glsl-optimizer/CMakeLists.txt":"42ce94744e82ffa000da8b64d81fc140e293b9f5da7dd4cf6b49e7404a2448d9","glsl-optimizer/README.md":"b18eef11a92d267d88a937b1154f7670ee433c730b102fdf7e2da0b02722b146","glsl-optimizer/contrib/glslopt/Main.cpp":"14ba213210c62e234b8d9b0052105fed28eedd83d535ebe85acc10bda7322dd4","glsl-optimizer/contrib/glslopt/Readme":"65d2a6f1aa1dc61e903e090cdade027abad33e02e7c9c81e07dc80508acadec4","glsl-optimizer/generateParsers.sh":"e8f7af58b34d4e46b475e848a0af1d9926bd1d9aa52727b4a80cbf13d1c2ca47","glsl-optimizer/include/GL/gl.h":"1989b51365b6d7d0c48ff6e8b181ef75e2cdf71bfb1626b1cc4362e2f54854a3","glsl-optimizer/include/GL/glext.h":"2ac3681045a35a2194a81a960cad395c04bef1c8a20ef46b799fb24af3ec5f70","glsl-optimizer/include/KHR/khrplatform.h":"1448141a0c054d7f46edfb63f4fe6c203acf9591974049481c32442fb03fd6ed","glsl-optimizer/include/c11/.editorconfig":"f96a2354e5f2b90367d643e6d9e980ce76278d4d47afd8b2713b595753aa8b4b","glsl-optimizer/include/c11/threads.h":"56e9e592b28df19f0db432125223cb3eb5c0c1f960c22db96a15692e14776337","glsl-optimizer/include/c11/threads_posix.h":"5fa592653213459e2cce70b430715246d53fd1a10c1866acf427874530a69f92","glsl-optimizer/include/c11/threads_win32.h":"95bf19d7fc14d328a016889afd583e4c49c050a93bcfb114bd2e9130a4532488","glsl-optimizer/include/c11_compat.h":"103fedb48f658d36cb416c9c9e5ea4d70dff181aab551fcb1028107d098ffa3e","glsl-optimizer/include/c99_compat.h":"aafad02f1ea90a7857636913ea21617a0fcd6197256dcfc6dd97bb3410ba892e","glsl-optimizer/include/no_extern_c.h":"40069dbb6dd2843658d442f926e609c7799b9c296046a90b62b570774fd618f5","glsl-optimizer/license.txt":"e26a745226f4a46b3ca00ffbe8be18507362189a2863d04b4f563ba176a9a836","glsl-optimizer/src/compiler/builtin_type_macros.h":"5b4fc4d4da7b07f997b6eb569e37db79fa0735286575ef1fab08d419e76776ff","glsl-optimizer/src/compiler/glsl/README":"e7d408b621c1b605857c4cab63902f615edb06b530142b91ac040808df6e22f7","glsl-optimizer/src/compiler/glsl/TODO":"dd3b7a098e6f9c85ca8c99ce6dea49d65bb75d4cea243b917f29e4ad2c974603","glsl-optimizer/src/compiler/glsl/ast.h":"3e68ff374350c49211a9931f7f55a485d8d89fc4b21caaffbf6655009ad95bf8","glsl-optimizer/src/compiler/glsl/ast_array_index.cpp":"92b4d501f33e0544c00d14e4f8837753afd916c2b42e076ccc95c9e8fc37ba94","glsl-optimizer/src/compiler/glsl/ast_expr.cpp":"afd712a7b1beb2b633888f4a0911b0a8e4ae5eb5ab9c1e3f247d518cdaaa56d6","glsl-optimizer/src/compiler/glsl/ast_function.cpp":"7cccd240c080f5ab2ed73f5f1a6e1ce9ae9583a209338c026db8f76272a352f2","glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp":"256de69fbedf79fd0711b0e0edc2dc061e6bdf0b04996b05f9237036a8e375d9","glsl-optimizer/src/compiler/glsl/ast_type.cpp":"8eb790b24b26dfb72bdc333744b566c26d8464c5d47d20eae659461f5c4899f7","glsl-optimizer/src/compiler/glsl/builtin_functions.cpp":"09731e48472b42038aeb8b8f06fecc2d919d2333a088b52b06a9711d8afb9732","glsl-optimizer/src/compiler/glsl/builtin_functions.h":"a37cad7ed09b522c5b8bec7b80115a36846e7ba6e0874a2a858e32f7f202c665","glsl-optimizer/src/compiler/glsl/builtin_int64.h":"619def6f3aebf180da3944ef08f159ab12a58b24767e41d8b985ac37ded54d62","glsl-optimizer/src/compiler/glsl/builtin_types.cpp":"afec060b62d6f3b00bfbf94e9fa5f96341ce096c128d1eef322791e6ed9cea4d","glsl-optimizer/src/compiler/glsl/builtin_variables.cpp":"6563bfb1345cbca4c77e00eef09ad152f3e1dc271d246a08c5ce9e1f4ce4250a","glsl-optimizer/src/compiler/glsl/float64.glsl":"1072fd888be48c2a7a5117cd2d92a65f034965a66375f598bb856bff5d7be766","glsl-optimizer/src/compiler/glsl/generate_ir.cpp":"e5f0175370a0d07f93c48d3f0f1b8233d12c64a7b02de02dcc753ef7b398ef0f","glsl-optimizer/src/compiler/glsl/glcpp/README":"a0332a1b221d047e9cce5181a64d4ac4056046fd878360ec8ae3a7b1e062bcff","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.c":"6ed9a66b752877aec847bf9e39e2126860552a5d5f225e8c2523d6155b51eea8","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.l":"15fa8afa3011865ff181a54bbd5e4ddccb4c9ec5a862c98366cd84b295dcf446","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.c":"03494f9ce1cb82260506e2559e73a3eeb622c4bd51b65eaa0a2c3351862bd4c8","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.h":"264d9a18421cde255ce34a0a62b3d8e73465359f0d167e64aa3973062aae5bdd","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.y":"fafb66e3a8f149d19e085f18a4273ba6d4c11af9e9a01d665cc784dddf97b79f","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.c":"37ed294403c2abfd17fd999d1ae8d11b170e5e9c878979fefac74a31195c96b0","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.h":"85ac8b444bcbd0822b66448a1da407b6ae5467b649f5afaf5c58325bd7569468","glsl-optimizer/src/compiler/glsl/glcpp/pp.c":"a52d94f1bcb3fb2747a95709c4a77c25de7eea8354d2b83bb18efd96976a4473","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.c":"d11aeb3acfe966d1b78f1ee49804093f2434214c41391d139ffcb67b69dc9862","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.h":"abbf1f36ec5a92d035bfbb841b9452287d147616e56373cdbee1c0e55af46406","glsl-optimizer/src/compiler/glsl/glsl_lexer.cpp":"272b9fc1383d72b81bfc03fa11fdf82270ed91a294e523f9ce2b4554bd3effa9","glsl-optimizer/src/compiler/glsl/glsl_lexer.ll":"2b57d9f9eb830c3d7961d4533048a158ee6f458c8d05c65bea7b7cfbc36e4458","glsl-optimizer/src/compiler/glsl/glsl_optimizer.cpp":"f8095d20629d0af70be930b0612e169edb274551a1d25a3cd1bf9995a11ce2e8","glsl-optimizer/src/compiler/glsl/glsl_optimizer.h":"22e843b4ec53ba5f6cd85ca5f7bad33922dca8061b19fb512d46f1caca8d4757","glsl-optimizer/src/compiler/glsl/glsl_parser.cpp":"126baf368d525aba301854e3d91ba60b5aee32e1102376af71416f32cb95ec48","glsl-optimizer/src/compiler/glsl/glsl_parser.h":"2ea9a50716098a8f7bef782d2a030d757b68da73afb01b4d4940d3e8381d44e8","glsl-optimizer/src/compiler/glsl/glsl_parser.yy":"6b1fd1576b29fce005dff744a6dbd0219e4c695c361d61864e1f3a8d6fa6b764","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.cpp":"aad64b5b66467da650091430681e8c6a820cf3cadc4db3c160bf2f15875390ae","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.h":"71fd0e92bbdb193dfb067d7bfdb1200d77392be2fbd0cbfc9ca89d1bb4c7e741","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.cpp":"6660fb83c0ddddbbd64581d46ccfdb9c84bfaa99d13348c289e6442ab00df046","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.h":"24682b8304e0ea3f6318ddb8c859686bd1faee23cd0511d1760977ae975d41bf","glsl-optimizer/src/compiler/glsl/hir_field_selection.cpp":"72a039b0fcab4161788def9e4bedac7ac06a20d8e13146529c6d246bd5202afd","glsl-optimizer/src/compiler/glsl/int64.glsl":"303dbe95dde44b91aee3e38b115b92028400d6a92f9268975d607471984e13eb","glsl-optimizer/src/compiler/glsl/ir.cpp":"ddeb4ced00afa00fc0e2b19c6120f0a37b8b05b4f8473fbb627ea9d7d13efe58","glsl-optimizer/src/compiler/glsl/ir.h":"990b1c74447c4eb4835353ccb0ed9aea644f97fc1129ef1739cd935075d85d2e","glsl-optimizer/src/compiler/glsl/ir_array_refcount.cpp":"8cdc1cffe01e42e0566fa2193a75f789628e8025ad1b82f0ee6f204451b7f9f7","glsl-optimizer/src/compiler/glsl/ir_array_refcount.h":"75f06ec81342b379096ca52e1dc0fd5f19a11ff8e9b58203c20628179d644c12","glsl-optimizer/src/compiler/glsl/ir_basic_block.cpp":"1e2920b1c0ecb08424c745c558f84d0d7e44b74585cf2cc2265dc4dfede3fa2f","glsl-optimizer/src/compiler/glsl/ir_basic_block.h":"81be7da0fc0ee547cd13ec60c1fcd7d3ce3d70d7e5e988f01a3b43a827acdf05","glsl-optimizer/src/compiler/glsl/ir_builder.cpp":"daba29c5a1efdd5a9754f420eb3e2ebdf73485273497f40d4863dadeddb23c0d","glsl-optimizer/src/compiler/glsl/ir_builder.h":"2822e74dd3f6e3df8b300af27d5b11ea2dd99d0e5e7ca809b7bbcce9833c483c","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.cpp":"0fd7f92be11fb1482255541597018b56d7619925346504414404e46a60f4797b","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.h":"799852adc3a0e54d04080655e7cebfa0d3bf5b6ffed5d8414f141380665d4db7","glsl-optimizer/src/compiler/glsl/ir_clone.cpp":"d897a4e1f5bbec4a6a2f15044c1be9a4d13899c73be77335b041049a4589aa5d","glsl-optimizer/src/compiler/glsl/ir_constant_expression.cpp":"78bd87ddb09db67f6c499067728d72aef4f16aa02721a99a4b769d1e0cfa9010","glsl-optimizer/src/compiler/glsl/ir_equals.cpp":"bca28533a6310b0fc152b56d80872368f1510dc62ed6e8ac199b9ffa7fac02e7","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.cpp":"7e918d4e1f237eca01396004015865ce345afe32a876c9dbc6728576a1a7eae4","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.h":"f45b66aa9497520e7e08e612d24b308477c34477fbd963ee9320eac664957f16","glsl-optimizer/src/compiler/glsl/ir_expression_operation.h":"cc9f10727dbd26cac506804f51456302c702650f9eeb59054a7e1575d5cf6687","glsl-optimizer/src/compiler/glsl/ir_expression_operation.py":"85011f325e5d4a3068e4e41b7ea62adbc1deddc9d225b7c69eea0f3b63fe727e","glsl-optimizer/src/compiler/glsl/ir_expression_operation_constant.h":"cf575663c4922de6dbee3d8bc7ab80d4a65fcc7ff2e994eb296961e76b761a79","glsl-optimizer/src/compiler/glsl/ir_expression_operation_strings.h":"a6826daf496a8b9e89885bc2a161ac3445d501b23c6e0ac33e2c01b506b273c8","glsl-optimizer/src/compiler/glsl/ir_function.cpp":"7537365fc0fbe4b37a26b9a2146cc64d3e9a774d60eab63b65002ad165ae8fc7","glsl-optimizer/src/compiler/glsl/ir_function_can_inline.cpp":"faddbf112187a048d502716a3fb82570a322299ba2a3abd79388382c82040bfc","glsl-optimizer/src/compiler/glsl/ir_function_detect_recursion.cpp":"9176973eaf5c0a984701f953bb7a80f37dca43d59b5bce50fc69b3f02f2902d7","glsl-optimizer/src/compiler/glsl/ir_function_inlining.h":"9739493f99c489987d650762fccdd3fb3d432f6481d67f6c799176685bd59632","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.cpp":"3725861fbe2b98e0617f52d3b14cf6d3b25fb5ec00f5ef5d308b03642f592767","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.h":"e0560210e966c0c31e4ca843e80ea154e64db5a444b8c2df845b6ba5b3a43fc1","glsl-optimizer/src/compiler/glsl/ir_hv_accept.cpp":"caf7ce2cd9494aadd3c58bcf77f29de58368dc9e347a362bbf37f8bda9509b80","glsl-optimizer/src/compiler/glsl/ir_optimization.h":"8b3dcfc7f9e96b21a8dd47a0040d90be483a9e67a2cdce3a697188fb758d4630","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.cpp":"a8b89b9bd15575e2ea5af3a6822214295686f18c202f2562eee666891033e726","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.h":"1ad1bd3efd1ace39051c13f904c05fd80425d329444f9a8d47fd6d948faf46e0","glsl-optimizer/src/compiler/glsl/ir_print_visitor.cpp":"98e0ca92087edbc3a3c8b8bfacdc730751a767ea96bfa90b19e68cdc429b7a89","glsl-optimizer/src/compiler/glsl/ir_print_visitor.h":"4573eb93268a2654c14b505253dd651e2695d43dc745904d824da18305269b95","glsl-optimizer/src/compiler/glsl/ir_reader.cpp":"06bfba802c8354e5a8b2334b6d78d6297de18235bedd3f8fbb382c89870b02f2","glsl-optimizer/src/compiler/glsl/ir_reader.h":"63e3f7f1597936a7011d5b520e171b197bf82bee6c1560d822c3edf5aaa6f9e9","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.cpp":"84b5c5d746555adca85759c2912fe48010232b7c1c0bd2cf03bd04067a85e66f","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.h":"fd8c561b71085d3211fff85ed514fecb299d8ce19a04bc063419a55b6d840525","glsl-optimizer/src/compiler/glsl/ir_set_program_inouts.cpp":"ab9f115ce9e7f312d9c7978340ced0dc4ae6d13a80e08442ba9709d11d50cae5","glsl-optimizer/src/compiler/glsl/ir_uniform.h":"683ae6896b1a08470c090be5f822fc31cd434eab9216e954b9bba24a46975109","glsl-optimizer/src/compiler/glsl/ir_unused_structs.cpp":"9c1620c45f2fc071fe5ed828472040b14c5f42effe06aa0e3b8352c95ef78786","glsl-optimizer/src/compiler/glsl/ir_unused_structs.h":"13387b49c23093575276b25b9dfd31fedd8f131c5c4f3128ab04cf03e15b5295","glsl-optimizer/src/compiler/glsl/ir_validate.cpp":"6b232be5999a86ea278f4f15b2832d76843246509118d924243055a3b9b0299f","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.cpp":"2764a3cad937d53f36db7447c3a5b98b04bf153acf81074d971857fc5bca460d","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.h":"b0668e3eb1501ef65e38fe12830742ecb3d28e6039f30e366c8924efc29b4a39","glsl-optimizer/src/compiler/glsl/ir_visitor.h":"f21b3534c3d66d5fb707d1581fece7e1eb043523afbaedf89918cfb031c6df94","glsl-optimizer/src/compiler/glsl/link_atomics.cpp":"360f0209e11f367ba358223597b0a118bae095bff16337cf03f1fb89c5b80ca6","glsl-optimizer/src/compiler/glsl/link_functions.cpp":"de7895da8aa33a1e3c2c1eb2fdaf267ab5d1fbfdb79ae2e67f95211e946e294c","glsl-optimizer/src/compiler/glsl/link_interface_blocks.cpp":"1926cfa73810704eb19b916c1b2cdb9321155e2f98b2a0a57c7c3c6e960540cd","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.cpp":"1e14e06ca3b2c1089cfba2e8eaf0c1f373d9d6374b6082f320962dd71ae09611","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.h":"fd58c155af645295bb6aec08797889de586f4d919731de2bce57e8dce59bb048","glsl-optimizer/src/compiler/glsl/link_uniform_blocks.cpp":"09589f49776dce32e6c4044937de7e0c839a9754ad31960148f8f9e010658997","glsl-optimizer/src/compiler/glsl/link_uniform_initializers.cpp":"bf98e08c12db466acf9623cbeb8fa8e3b4002512722e7a6521287f558a099f37","glsl-optimizer/src/compiler/glsl/link_uniforms.cpp":"84bad5b1377362cecf259b05124239be5220b03ce1c0c61b59bd9a47e4379af2","glsl-optimizer/src/compiler/glsl/link_varyings.cpp":"a5f1a53e7c80d635515fe808ff223d89fef1767abb0f2b7aa28fa6773dca353f","glsl-optimizer/src/compiler/glsl/link_varyings.h":"b9dbe018f038df69763df2e928742ce81bbc6e3aaba26f50621e30a6d9aa6220","glsl-optimizer/src/compiler/glsl/linker.cpp":"cfcbc7ed03b2de6e43505bd6eba42564cc415b0f293e9f73791a6fa7b9a59b4a","glsl-optimizer/src/compiler/glsl/linker.h":"ecf94b4ad75ef461c27c557fda4bd25f34c91930822b8e1d729ec84520d4a049","glsl-optimizer/src/compiler/glsl/linker_util.cpp":"1663ad88e2a369305659aeeffaedb5bd752cf76340a2ba5797fc0bf600633cf9","glsl-optimizer/src/compiler/glsl/linker_util.h":"6db788daf9c8e87ae2764b61a8b37ebe419e69c1b82ddee01986e37c978c6993","glsl-optimizer/src/compiler/glsl/list.h":"b1f46ce0e552fe7c45b2a19408a9d97662e23e4b182ab335491c26f8cf25886f","glsl-optimizer/src/compiler/glsl/loop_analysis.cpp":"d3025c34e8010d49cd5abb86d30278263c40a2697b7724c20e804a2398660540","glsl-optimizer/src/compiler/glsl/loop_analysis.h":"a85f045a038ee5b5176063e85d7988865862c44ab0580f771b993a042d0b69cc","glsl-optimizer/src/compiler/glsl/loop_unroll.cpp":"bd4292ea2809f5a669bcb76ceaa1ac365772dcd638c579c3ed10275214901a54","glsl-optimizer/src/compiler/glsl/lower_blend_equation_advanced.cpp":"172ade61a513c00be842070615e1afa78ccc6136adaada06f00b988a62996254","glsl-optimizer/src/compiler/glsl/lower_buffer_access.cpp":"af451edfaa3efde30b3a648c4cf3411672cadcef33d69966dce6f92333a8b763","glsl-optimizer/src/compiler/glsl/lower_buffer_access.h":"807886953a576a323591798cbca5e2df24295ea893b28affd8ffb5926cebaa04","glsl-optimizer/src/compiler/glsl/lower_builtins.cpp":"4d81afc32cf58e1481fcb5e42888ab93dbe6820310a20ff7a9982b77b2152d9b","glsl-optimizer/src/compiler/glsl/lower_const_arrays_to_uniforms.cpp":"608403f0eeeedf21cfcd3014116e0f44e28cbdf6c4c32aac7e613e64e30205e1","glsl-optimizer/src/compiler/glsl/lower_cs_derived.cpp":"179905cd47a294122adeb5b0abfed6f2f67782dcde21b544d1ee2c1985154e66","glsl-optimizer/src/compiler/glsl/lower_discard.cpp":"3b361b2db0004d544d64611cb50d5a6e364cf6c5f2e60c449085d7d753dd7fb0","glsl-optimizer/src/compiler/glsl/lower_discard_flow.cpp":"f5c29b6a27690bb5c91f196d1a1cf9f6be4f1025292311fe2dac561ce6774dee","glsl-optimizer/src/compiler/glsl/lower_distance.cpp":"7531858637a3149431162637de0e6ced99a15ccf7ee15f07ea9d6c88e3330cc2","glsl-optimizer/src/compiler/glsl/lower_if_to_cond_assign.cpp":"469e617757fd1728709cce021aac5c8da05ee503bf5366977bdc4ef7a6d83950","glsl-optimizer/src/compiler/glsl/lower_instructions.cpp":"6ff5c396abe40d8a2145d571e99e2bbe9143393e15aafc28adc2803a01d821b6","glsl-optimizer/src/compiler/glsl/lower_int64.cpp":"d1ed41196880dd53c7b13e2782f9423f8442bf1d46186e8be92b1b66218a83ee","glsl-optimizer/src/compiler/glsl/lower_jumps.cpp":"34de7b493f281589fb0c2c0f6e885d0a0fabbe7a4e97a73de374dd714777a58c","glsl-optimizer/src/compiler/glsl/lower_mat_op_to_vec.cpp":"dff7a308edc4846c348ed4225c6699a9c75abac68d88f41f85954276552779f4","glsl-optimizer/src/compiler/glsl/lower_named_interface_blocks.cpp":"16063ac127bff75a68272070ab11c21c25101edbff62b4c68f4983b4cd941af0","glsl-optimizer/src/compiler/glsl/lower_offset_array.cpp":"3b00773399135aea85746a5a68b96ef000bc6841be1a2c8e6f25c516628b0949","glsl-optimizer/src/compiler/glsl/lower_output_reads.cpp":"a0fc9975d5aa1617e21fc6c353659a9802da9e83779a3eef4ec584f74b4dadc5","glsl-optimizer/src/compiler/glsl/lower_packed_varyings.cpp":"7550099d4ae123d71541c2fc88bc04fbfe9271ec75d7e210987d1c8cac3cf3ea","glsl-optimizer/src/compiler/glsl/lower_packing_builtins.cpp":"79a13d161fe505a410ab948d92769395708693ec888153630fa240e5b97e356f","glsl-optimizer/src/compiler/glsl/lower_precision.cpp":"f82a185b879872b977a1787d8061b9a80bc4cf8db1b970db6efba2ad9cc20fa2","glsl-optimizer/src/compiler/glsl/lower_shared_reference.cpp":"ea2dccf50a83bc19391bf6b7ab6aa53c0005f427af4066d25140340af9a4beef","glsl-optimizer/src/compiler/glsl/lower_subroutine.cpp":"f69fa53650eeb6f2944fce4d36a6e0a423e6705f3a3bd3389c7fadb83cfc8802","glsl-optimizer/src/compiler/glsl/lower_tess_level.cpp":"b196c9d424c0569f3e85d75c2d125af21566cb113d69036db87c0990703e0fa7","glsl-optimizer/src/compiler/glsl/lower_texture_projection.cpp":"4d247f244272adc8250fd888d8d932a140dd5de4d1efc7a58492c3c2b8291527","glsl-optimizer/src/compiler/glsl/lower_ubo_reference.cpp":"e670dbbc1817f146ff7d53750569cf020364a2b49555de41d6944f161aef6276","glsl-optimizer/src/compiler/glsl/lower_variable_index_to_cond_assign.cpp":"fce930f29ac9405b297d1f749d68f59506b89c70b4ee1b1ab8cf49a34cc71ecf","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_cond_assign.cpp":"3c67d851a11a55fad1c49a550f3a0cfe50892d33a3f238ce266cd829eba510a8","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_swizzle.cpp":"f5ec666b73e1415cbab32519a53605ed385f3b03e889560373dbce69dda5000e","glsl-optimizer/src/compiler/glsl/lower_vector.cpp":"f7c13f5572ebe09b6a71553133b2cf003cd4b77b9657600672ee3b21bf890725","glsl-optimizer/src/compiler/glsl/lower_vector_derefs.cpp":"b05793da6dd620a531b43df5af8b2ecbc37b9db0c88910f5724ea10bcd057e19","glsl-optimizer/src/compiler/glsl/lower_vector_insert.cpp":"fee772ec17eea5e86a529bf9c5fa2ee0d29a5982bb75ebc6d68ed36cd19aa299","glsl-optimizer/src/compiler/glsl/lower_vertex_id.cpp":"690e8715182e03fead5cc5a35251fb4f41b357e4c71a1dfbc4bd7be19862b56d","glsl-optimizer/src/compiler/glsl/lower_xfb_varying.cpp":"58c0e8b270e4bbde54250be03cdb2f36966bcafb785372ad2e2b786835df7f9f","glsl-optimizer/src/compiler/glsl/main.cpp":"ae5e88abbbc8a12f769e1296bad938b9d7398cc6da0d3d0caeceeeb876536850","glsl-optimizer/src/compiler/glsl/opt_add_neg_to_sub.h":"f5054944bfd068810629080d0ea11df78b3f57a8f86df75e13ca50157ad1964d","glsl-optimizer/src/compiler/glsl/opt_algebraic.cpp":"538058c7be50e50e58f997dec4b1e0add25a8dc44abf2648366b90612bf95e41","glsl-optimizer/src/compiler/glsl/opt_array_splitting.cpp":"19d3ce0e815438f4df9ab2890e767b03a4f3f191b53bb30c0217cf2ae6a95430","glsl-optimizer/src/compiler/glsl/opt_conditional_discard.cpp":"0e44e0e126711a3725c1f3a2aa65ff03c381fed08680ffc30101aae60f716c4e","glsl-optimizer/src/compiler/glsl/opt_constant_folding.cpp":"a088d04d9b45f9e55e235835648f614c89b7803c03a6d4f6a6d1a6bc1f0228bd","glsl-optimizer/src/compiler/glsl/opt_constant_propagation.cpp":"8a9440d77ecd6dcf13e683cbb99943aab6311c8fd4b5f6a9189a8d4f270746f4","glsl-optimizer/src/compiler/glsl/opt_constant_variable.cpp":"63d3ccd4dd09f19c9cf1a2f51592111bed41284504f29f3c0de4cadebc439a37","glsl-optimizer/src/compiler/glsl/opt_copy_propagation_elements.cpp":"ffa0f50863995e0d2e31f55a52e82319edc71e520987bebd7f7e561ea331c64b","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_variables.cpp":"84e8747b948232f01dd56b428b9315f96f9511f605f240119fc446fae28981a9","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_varyings.cpp":"761523e88f5b3ba785170f4d7205e94fa99acb7e74d29efbe40e1c010e1dbdb3","glsl-optimizer/src/compiler/glsl/opt_dead_code.cpp":"fd1ba2da7337d4e5dad17f5c2d73d9cc8880305f423e85d64cf94553588fa401","glsl-optimizer/src/compiler/glsl/opt_dead_code_local.cpp":"969a598b4df322baf222258a66cd64a326ea20e5b3125be9d8d1771f522c69e0","glsl-optimizer/src/compiler/glsl/opt_dead_functions.cpp":"774cae6536d02edf26e996a2a895e1f62d5098f16dc96b44798b4fc731a9a95f","glsl-optimizer/src/compiler/glsl/opt_flatten_nested_if_blocks.cpp":"3696a5c55f02e20056e085bc2714f73ac992f221b6f3387d655068e86b512046","glsl-optimizer/src/compiler/glsl/opt_flip_matrices.cpp":"44f0fe05b49329667671f88c96dc86ab3fe1459ff7b87f2b2d88de2d49829f9f","glsl-optimizer/src/compiler/glsl/opt_function_inlining.cpp":"fb56a33c90419a01676b57cbd91d0674a54cca40e6defaacc88dd33facebc131","glsl-optimizer/src/compiler/glsl/opt_if_simplification.cpp":"ac406eb35e379c357641d6c5749f50c65961455924d3dc884e2b90046fa92c5c","glsl-optimizer/src/compiler/glsl/opt_minmax.cpp":"0014e6b044f05e58d91add005d05cbdf8206f67ea1e593deea0cde947c26b8a2","glsl-optimizer/src/compiler/glsl/opt_rebalance_tree.cpp":"8bb6329dc0f299042368fc81934c2df019b45ab9f7aa0415d4e57b8d1ff98c9f","glsl-optimizer/src/compiler/glsl/opt_redundant_jumps.cpp":"222c73e2ac7a938ebb6428cc6c780c908ff6156d8ff935b04fed93a48fc10496","glsl-optimizer/src/compiler/glsl/opt_structure_splitting.cpp":"2edc79cc13f3177934e0443ad62f5976a1991f01f86ea303a803434849b13a47","glsl-optimizer/src/compiler/glsl/opt_swizzle.cpp":"015d0abddfe507f67c4b96c82988d861d018ededf7bf055e2bcbe9ea92da694e","glsl-optimizer/src/compiler/glsl/opt_tree_grafting.cpp":"46d28ac983ea244a4315bdc0e8892979ec4d1f9b9a96ac8a8a08006d9bc5e878","glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp":"4e3ae189d32a09cabef66ec46c2f1563ddcc634a85b9c4b77a8d39590a5aa8a4","glsl-optimizer/src/compiler/glsl/program.h":"2982447e2abd35371e273ad87951722782a8b21c08294f67c39d987da1e1c55f","glsl-optimizer/src/compiler/glsl/propagate_invariance.cpp":"080943e21baa32494723a2eefb185915d2daae1f46d6df420145c5ad6857e119","glsl-optimizer/src/compiler/glsl/s_expression.cpp":"1ced972bc6ecc8eab4116ea71fb0212ab9ae5bcc0be3b47aa5d9d903566b3af1","glsl-optimizer/src/compiler/glsl/s_expression.h":"65b847e30e22a809b57d0bc70243049c99d9c6318803c5b8d0826aba55dc217e","glsl-optimizer/src/compiler/glsl/serialize.cpp":"be0eb4251348a9d921acb839a5c48c6023a2e9d116d602bb0432787ab623655d","glsl-optimizer/src/compiler/glsl/serialize.h":"57425732eba1233d928e5f07f88b623ce65af46b3bb034bf147f0a4b7f94f9a1","glsl-optimizer/src/compiler/glsl/shader_cache.cpp":"e0c5c433f2df3fccdf1d61281bfcb0ee5633433339b97c697d64db99611cbaaf","glsl-optimizer/src/compiler/glsl/shader_cache.h":"9217164d8d7f54aca0fe5922c7187095a6ae0cb703b196b79805aeef07a7e697","glsl-optimizer/src/compiler/glsl/standalone.cpp":"8e6c416a14d631261917a5fe4cc91880c287b22b2dfd70eb22028289a8fa5364","glsl-optimizer/src/compiler/glsl/standalone.h":"a7c397d1dfdd1e7fb2cfe99db35cd9df93251e642059208533202b7f20497f83","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.cpp":"970d14b7a9d58e5270321f97bf5d57795558b1c570a56678e04a65b26c60bf4f","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.h":"d921a617ea82b9e49413314492a645c44356de503581b1be3f1b57de236e480d","glsl-optimizer/src/compiler/glsl/string_to_uint_map.cpp":"d824bf5b839bd39498dc9e457103cdbe3e5289ddf7564107c27b1505948dd31f","glsl-optimizer/src/compiler/glsl/string_to_uint_map.h":"e2f18e66359c9d620e085de7f4a334a47df9c66e65a5bfe8b734c627bec04104","glsl-optimizer/src/compiler/glsl/test_optpass.h":"b27b8f35f5387e7ce4982bb51c7b63ccf14f91757f3108a5d02ed006925bb8a0","glsl-optimizer/src/compiler/glsl/xxd.py":"376484142f27f45090ea8203ae2621abf73f06175cb0ee8d96f44a3b9327f4bd","glsl-optimizer/src/compiler/glsl_types.cpp":"e909cab91eccfbb31d13f544e561dd41799a92bf5a853f5afca66927d4ac3706","glsl-optimizer/src/compiler/glsl_types.h":"caeabddb68f47390ca3414b642813bc384715b1363f453c0b449098d423c4b23","glsl-optimizer/src/compiler/shader_enums.c":"282bab5b7c04d4af9a06ef4aec6be10a865865d5aab6f74c3d2c9add77c08a74","glsl-optimizer/src/compiler/shader_enums.h":"13220442a5c02e83540cf2c0ad4f8417b2fbda5f2586dec4e92082544c937cdd","glsl-optimizer/src/compiler/shader_info.h":"4c5453e81197ca83593ee4f365074b23530f2ab21c78e1733b63dec6f344c12a","glsl-optimizer/src/gallium/auxiliary/util/u_half.h":"3c2b37bda3ccb64387e44b723d29cf9046decab1a893bf42d842e9603398bdee","glsl-optimizer/src/gallium/include/pipe/p_compiler.h":"c75620096ce8523dae90599e50aa2ef6468d3b0e368a77795edeb20dd1abfc0c","glsl-optimizer/src/gallium/include/pipe/p_config.h":"a27692fc35f9e55df3224b7529e66b3001e911e94e6bc5f8f569e493e1ee3fb7","glsl-optimizer/src/gallium/include/pipe/p_defines.h":"be26d68c0acc67c5e44788c6299716a9eee415fd81d7d747e3738a829e3b6b38","glsl-optimizer/src/gallium/include/pipe/p_format.h":"5674215fc41d27496f037cf837717daefbf23ebb38d40ace7c0c414bc08182b0","glsl-optimizer/src/gallium/include/pipe/p_state.h":"d600593aba5f5a17072a6c38f6baa81e01c7994b0174250f7e433bb41684b702","glsl-optimizer/src/mapi/glapi/glapi.h":"73632a625c0ddabc401205e8b5a81eb8af8506868efe4b170d7979ec3619e9c5","glsl-optimizer/src/mesa/main/config.h":"5800259373099e5405de2eb52619f9de242552a479902a3a642a333c8cb3c1e7","glsl-optimizer/src/mesa/main/context.c":"2f3208473d99c94f734b1137ba91889d4a1babb9e7534bf1dc85d851ee98274e","glsl-optimizer/src/mesa/main/context.h":"cc7e4194797db9d007f01884e23d786c453b3860821f7f2ddcdf0f1bf3f8ffb1","glsl-optimizer/src/mesa/main/dd.h":"6a964acd06b6c2d88700e69fb75fe3c6b3b3d45bbc41db24f3f897a29695fe0c","glsl-optimizer/src/mesa/main/debug_output.h":"7312422e90b8c0e34028ac27280e438139b5cba525c99deb3ac883cd3d87e452","glsl-optimizer/src/mesa/main/draw.h":"7eaef3a9e27a60ea6f7937109bf3a6190b831162fde0479abb12077ce27c353d","glsl-optimizer/src/mesa/main/enums.h":"87d562a6764f51c014a2274fa7c3aca17c04441537ddd56b2554f13c6fffea92","glsl-optimizer/src/mesa/main/errors.h":"c79444b5df289c90fbb22a33b2d0c23917d9fc4510960088f0b79e53bb56b1b2","glsl-optimizer/src/mesa/main/extensions.h":"a38b2f87cc93c513994281350d69e06c84ff8eded5313ec0a1be33f375e0ebbd","glsl-optimizer/src/mesa/main/extensions_table.c":"17642d1a8c9a0bf2bd61060052d33ff14a005d2b962e6cf91465797a50851e85","glsl-optimizer/src/mesa/main/extensions_table.h":"2c879571c238d2e14461031ac740372fd0f9ac3a34c0d5541bb9b7ed4c0376c8","glsl-optimizer/src/mesa/main/formats.h":"02e2f7ec3e39286cf9f27e2641043e6df8ecb1dfde9e643313210e214af2a929","glsl-optimizer/src/mesa/main/glheader.h":"58217b33eead6aa6b23cd4a291cefeaa6cb84e465f4960daffca97c44d6d1c35","glsl-optimizer/src/mesa/main/glthread.h":"51fb2711f77e7eafcfc52d29d5b844978832b24c930d88accd48d143a6eb9c6f","glsl-optimizer/src/mesa/main/hash.h":"7e7f782034c16a8e693de48e00c31d4a90b0129f4029fd074033d7d16ccbe718","glsl-optimizer/src/mesa/main/macros.h":"73d15ddfd64f2b57b9b2ffeeb993b9c2c0899a80563e9d6ff337b11ccbe6eee5","glsl-optimizer/src/mesa/main/menums.h":"5dfac0e2279d60b0cd0c7b9fc2a5021620d0f6282ed2e738c420214e3af152d3","glsl-optimizer/src/mesa/main/mesa_private.h":"edda678b93438944279a551f663b8858ad84814a9fc88ba9672ef195599c24ae","glsl-optimizer/src/mesa/main/mtypes.h":"6efddefa099e4d2e3fdd97f0055644f47aba21711385edfeabc2d9b0676f2eec","glsl-optimizer/src/mesa/main/shaderobj.h":"3597defbc142e4bd3b54f5f3c454f5c71ceae771f2fefed0f86d49f926335dbe","glsl-optimizer/src/mesa/main/uniforms.h":"4e331e6ad6e9cbded978b4082dbe0a57c1f8f01327446bb6892bfc179976c38b","glsl-optimizer/src/mesa/main/version.h":"9d0a13a758099302dc55cf7d045791834a89b0f9d4cf17b2692259b369a8a9a1","glsl-optimizer/src/mesa/math/m_matrix.h":"a37b19f182e070db3df93b0ede43c22fb8be8c2906504133ee6dbd7db1185d8b","glsl-optimizer/src/mesa/program/dummy_errors.c":"1820e305515b4c5e041f5e1623266a48ec8f076a155310be7d60637101f593e4","glsl-optimizer/src/mesa/program/ir_to_mesa.h":"b47f58d22e3ca2ae42d52501ea769d15c4476834944fa97eeccd3a3439211d00","glsl-optimizer/src/mesa/program/prog_instruction.h":"ab3832152a7e144b59e5a2264b2c29db56d93be31e76bbd958527a56771b40eb","glsl-optimizer/src/mesa/program/prog_parameter.h":"ba18c743284eadbc837c2c364c73e5d372321a7637a76e589d8d39fe8b5de225","glsl-optimizer/src/mesa/program/prog_statevars.h":"fc413698f84bc52d45fdeae0471934ee9904bfb7eac1a2b5f70446e54bcbbdca","glsl-optimizer/src/mesa/program/program.h":"1f01026a4eff440a3f122fd9b519d03546fe7f7d8be60dca834e95a2f8fbbfd2","glsl-optimizer/src/mesa/program/symbol_table.c":"6611cb9f078035bf5ff8c9112093a6c7d99f8af99a3931d0c07f227cc72283ea","glsl-optimizer/src/mesa/program/symbol_table.h":"631dc35ac48d5e87962d45507461920f6575610960ffcc42a08cefeb43300cda","glsl-optimizer/src/mesa/vbo/vbo.h":"6eb1dcd9a08c92f276c5fe08da184ff9d455d1be421913b8ad732a7b65e858fb","glsl-optimizer/src/util/bitscan.h":"9e49e694e6b34fe035bc685f32588827eb8cbe7d82878963c7ab52843e1c16aa","glsl-optimizer/src/util/bitset.h":"c40f78515c6230fed18345c6751ce33833a49da7a27901c7e6d7340cbdcbc5e7","glsl-optimizer/src/util/blob.c":"8f729846f66efc9c15485cc5fc24c6ec861fc1fecb2f652573f2a237d481b791","glsl-optimizer/src/util/blob.h":"93e1eaac866b9a7cd6fc03b533c18fb2edf0e97f03395eff4f3a605c4fc14d0c","glsl-optimizer/src/util/compiler.h":"79e3bf40a5bab704e6c949f23a1352759607bb57d80e5d8df2ef159755f10b68","glsl-optimizer/src/util/crc32.c":"2f3467a046b3a76784ecb9aa55d527698c8607fd0b12c622f6691aaa77b58505","glsl-optimizer/src/util/crc32.h":"59bd81865e51042b73a86f8fb117c312418df095fed2d828c5c1d1c8b6fc6cd4","glsl-optimizer/src/util/debug.c":"c3d68e9752ccc19e66c669562cd113cf1d0ac83cbb30174789e7fb8d1df58f9c","glsl-optimizer/src/util/debug.h":"50068d745c4199ccbd33d68dd4c8a36d2b5179c7869a21e75906ddd0718ca456","glsl-optimizer/src/util/detect_os.h":"343a8790d17a3710c6dd015ee367f84e3902ff3f2e36faca2bf93f9d725d3574","glsl-optimizer/src/util/disk_cache.c":"f533937e5a4fffe76e2739ef4b6b1e1da097d96d63eb808e68ebbc7027641c23","glsl-optimizer/src/util/disk_cache.h":"e83314fb14134a8e079b15e470a6376ba5a8253701f048c890a62b7e55d64bc8","glsl-optimizer/src/util/fast_urem_by_const.h":"e108fce804616c47d071dfe4a04163eec1126e448ed1aa89abb6b3a6d772bd5b","glsl-optimizer/src/util/fnv1a.h":"ab2596f19c6adf431ae27618f62c5743e24ad23ef83bb359a4c4c218245ab459","glsl-optimizer/src/util/format/u_format.h":"4cdfc0c59cbc99a092e5ec5a396910f2d93b9643e5d8141050b011e66f11e45b","glsl-optimizer/src/util/futex.h":"26f7c9d86e9ffef4c0fa2761f1aaa1918337302e20bd6ca10e61dc3c47356deb","glsl-optimizer/src/util/half_float.c":"11bc2584493d5d9d46e8c8a619a0307cf150bf5ab5d0f96bb764b061dc37a00e","glsl-optimizer/src/util/half_float.h":"7f7c380f126da1400a91758cc0392f24bf967bce1672890b62be26fe9fbd922b","glsl-optimizer/src/util/hash_table.c":"0ca40352e35dedab0a84c64c903f1b16d47e950bb5f43b4d22bb57d499bfea6e","glsl-optimizer/src/util/hash_table.h":"217191bb360592e2232f187473c10287d2cda8ae6fa5c53d0ef74c8c206118b4","glsl-optimizer/src/util/list.h":"9fab03c6a78186bb5f173269f825f6ce976b409d931852e3d93bac632e07989a","glsl-optimizer/src/util/macros.h":"be115a17e3c18844a30813e3c3f9029b908e7f3fc1f47431345761098bbd88be","glsl-optimizer/src/util/mesa-sha1.c":"00c692ec353ebc02c06c57c5a71de0ab7a119f86a4146f452e65ec87e4944417","glsl-optimizer/src/util/mesa-sha1.h":"bff4c29f4bf7cdbcefb30fa0c996a7604a380eba8976467c2a60e7cd328f7e26","glsl-optimizer/src/util/mesa-sha1_test.c":"25da89a59d51469f77b4c468ca23ffdce0a7a1166a70b6cc23026a6800b0143c","glsl-optimizer/src/util/os_memory.h":"64555faf1760ae6954f42c83727c38dfc4c278e9152115779ffaad58b42adacf","glsl-optimizer/src/util/os_memory_aligned.h":"12d86fa94be38c13f7eeebdf313795e1267dd5a7187d2f0072e0e896f41702f6","glsl-optimizer/src/util/os_memory_stdc.h":"07360363b88c927065e10df71bebf6c8a0cc3b9167c9dfce55f2d65f11e6f787","glsl-optimizer/src/util/os_misc.c":"a9936e613ec84803abd59ad47c192c8e3939993c950ac91973fdc4cec1801bb8","glsl-optimizer/src/util/os_misc.h":"cc68eb12e05b5e749c54298cb4a6f4cd20cc5af7db3403e70b3c27b56090c740","glsl-optimizer/src/util/os_time.h":"73e775f7335244ff5964c678c27eedf1aea6abea44c4169d327ea8c7ce4a3a88","glsl-optimizer/src/util/ralloc.c":"4b51189595ef67bcef52c40cbf654d969041dbd15e15d4a893ad494ac060aeca","glsl-optimizer/src/util/ralloc.h":"e573c45875ff1530f0dbee9a93ae55535fdac8d5cc88a79ebc327c688824bde5","glsl-optimizer/src/util/rounding.h":"0450722353caf83de07e67f335949dbe95fe53b534052d4ee9d28d2781387614","glsl-optimizer/src/util/set.c":"86f8c9a830bead5a5a79bc970b0ff97809312af07b3beb39ef9d90af04d40a1b","glsl-optimizer/src/util/set.h":"3e39ca161e7ed4ec7c436cc9c7919ed9a55ed1b71edbf2caf6f9bcfd9bc578ed","glsl-optimizer/src/util/sha1/README":"00af7419af05247081858acb2902efd99fcda2ce16e331079f701645bb3729c0","glsl-optimizer/src/util/sha1/sha1.c":"1403bbe0aad42ba3e6be7e09f7cad87a6a8c4ad5b63962f7b92b9f37d8133b04","glsl-optimizer/src/util/sha1/sha1.h":"68d9f240eab2918026ecdf22be36811abbd4f1389f6c36e31258041aeaedd247","glsl-optimizer/src/util/simple_mtx.h":"12c6c3c4b7db9168bc656d5b3c65912075084d2b388c415d5c3d3f5953a9d6c7","glsl-optimizer/src/util/softfloat.c":"a97e51a96fe5e6a052c02aa6bbec683fe73fb88a8c087d9c930503e2120d8a2e","glsl-optimizer/src/util/softfloat.h":"66664b0250e83bf5dd4cc743acd119d076efcea624a0eab3d6b60718e6ee8811","glsl-optimizer/src/util/string_buffer.c":"63a1d1b1e34926c88ea00159cafbcd56568b805c4f64d1e8c97169fe313921fc","glsl-optimizer/src/util/string_buffer.h":"7b88d1b1d9c6cfb8e93331813535c127289437c75f822029e9a3bca8ea6b52ee","glsl-optimizer/src/util/strndup.h":"0273c4fdb7482cd7746881a63d3998648c6d63415ba85af1d1860f0e0dc504c6","glsl-optimizer/src/util/strtod.c":"5cf610d8a37373cf37cfb7aae903525d943b2674b1f32594c70b0eb19a8c9697","glsl-optimizer/src/util/strtod.h":"237396def4e264d35ed4bedea00ef9a4ceab6d7a11a18c770d9747d22c69ed2d","glsl-optimizer/src/util/u_atomic.h":"c02e809526c6c09ba8fe51f50b2490d1b6c8e5c7f3c4031ae958250d098fc3bb","glsl-optimizer/src/util/u_debug.c":"8c060e379b816618f3dd22c9ea523c68b9425c76c36a7dfe5d6d375b337f5f4a","glsl-optimizer/src/util/u_debug.h":"e11e26edd9b9e4e6f8e6a435e69f4d9edda27e9a379f68f4c82ea2525aaaea68","glsl-optimizer/src/util/u_dynarray.h":"853d0fa6ff2261614488be624deb8a2b01e57c2c8eabc28578cbeed4ccc95694","glsl-optimizer/src/util/u_endian.h":"3ccea7e529740318d8a4b05c00db3adc9d1e292a52bdc56a05c9fae99209720f","glsl-optimizer/src/util/u_math.c":"c868a8c0886dc78f1b06b13404ba8b253090449045774dd56893ac9d75795184","glsl-optimizer/src/util/u_math.h":"a04e32e126db016413f9de0a2028a3e71737137463b1289eae576f884b06fcf1","glsl-optimizer/src/util/u_memory.h":"c5db17c724c70283ddbe04165722f6988d4e0eb9aa3602ae472feff016649af9","glsl-optimizer/src/util/u_queue.h":"92930ce236c0528a98b695f5cea8c5c6aa9683beaf71a2227bdc5d33d1b21506","glsl-optimizer/src/util/u_string.h":"c5a2f4ef576d1547bda12c4ea219179fefa54414977743ac094abcaf696ef6ca","glsl-optimizer/src/util/u_thread.h":"00b708459b27f9910d18db92c18cc65cfc618ac2b3cd144e45f8640057b10d58","glsl-optimizer/src/util/xxhash.h":"2f2aff2fc6c0c929f52cf6ae7314122124c5be026d41ad1c357608383c4a37ad","src/bindings.rs":"11b403241b456fbe3482951ec70d274bd3ebd54bf39c11b3e81d3b9721b1bdaf","src/lib.rs":"04be1554cd829eb40864b06d80b491dd48117a4e3a601c7d482117f7a0391e67","wrapper.hpp":"f3ea34cc496f7d90b9bfcada3250b37b314c3524dac693b2ece9517bc7d274ac"},"package":null} +\ No newline at end of file +diff --git a/third_party/rust/glslopt/.cargo_vcs_info.json b/third_party/rust/glslopt/.cargo_vcs_info.json +deleted file mode 100644 +index 3edfbe5942a8..000000000000 +--- a/third_party/rust/glslopt/.cargo_vcs_info.json ++++ /dev/null +@@ -1,6 +0,0 @@ +-{ +- "git": { +- "sha1": "e1a7fe3ac8ccca62a31682a98d78cedf470aaf5e" +- }, +- "path_in_vcs": "" +-} +\ No newline at end of file +diff --git a/third_party/rust/glslopt/Cargo.lock b/third_party/rust/glslopt/Cargo.lock +deleted file mode 100644 +index 2034b562ee8d..000000000000 +--- a/third_party/rust/glslopt/Cargo.lock ++++ /dev/null +@@ -1,25 +0,0 @@ +-# This file is automatically @generated by Cargo. +-# It is not intended for manual editing. +-version = 4 +- +-[[package]] +-name = "cc" +-version = "1.1.15" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" +-dependencies = [ +- "shlex", +-] +- +-[[package]] +-name = "glslopt" +-version = "0.1.12" +-dependencies = [ +- "cc", +-] +- +-[[package]] +-name = "shlex" +-version = "1.3.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +diff --git a/third_party/rust/glslopt/Cargo.toml b/third_party/rust/glslopt/Cargo.toml +index a5a4b997ac1e..acd34d69d52f 100644 +--- a/third_party/rust/glslopt/Cargo.toml ++++ b/third_party/rust/glslopt/Cargo.toml +@@ -36,5 +36,5 @@ repository = "https://github.com/jamienicol/glslopt-rs" + name = "glslopt" + path = "src/lib.rs" + +-[build-dependencies.cc] +-version = "1.0" ++[build-dependencies] ++cc = "1.0" +diff --git a/third_party/rust/glslopt/Cargo.toml.orig b/third_party/rust/glslopt/Cargo.toml.orig +deleted file mode 100644 +index 452381f9941a..000000000000 +--- a/third_party/rust/glslopt/Cargo.toml.orig ++++ /dev/null +@@ -1,12 +0,0 @@ +-[package] +-name = "glslopt" +-version = "0.1.12" +-authors = ["Jamie Nicol "] +-edition = "2018" +-license = "MIT" +-description = "Optimizes GLSL shader code" +-keywords = ["opengl", "gl", "gles", "glsl", "shader"] +-repository = "https://github.com/jamienicol/glslopt-rs" +- +-[build-dependencies] +-cc = "1.0" +diff --git a/.trackerignore b/third_party/rust/glslopt/glsl-optimizer/.cargo-ok +similarity index 100% +copy from .trackerignore +copy to third_party/rust/glslopt/glsl-optimizer/.cargo-ok +diff --git a/third_party/rust/glslopt/glsl-optimizer/.gitignore b/third_party/rust/glslopt/glsl-optimizer/.gitignore +deleted file mode 100644 +index 825ad5fd1656..000000000000 +--- a/third_party/rust/glslopt/glsl-optimizer/.gitignore ++++ /dev/null +@@ -1,4 +0,0 @@ +-*.pyc +-*.pyo +-*.out +-build +diff --git a/third_party/rust/glslopt/glsl-optimizer/generateParsers.sh b/third_party/rust/glslopt/glsl-optimizer/generateParsers.sh +index 1b4e63513609..8ecffa6d212c 100755 +--- a/third_party/rust/glslopt/glsl-optimizer/generateParsers.sh ++++ b/third_party/rust/glslopt/glsl-optimizer/generateParsers.sh +@@ -4,6 +4,6 @@ flex --nounistd -osrc/compiler/glsl/glsl_lexer.cpp src/compiler/glsl/glsl_lexer. + bison -v -o "src/compiler/glsl/glcpp/glcpp-parse.c" -p "glcpp_parser_" --defines=src/compiler/glsl/glcpp/glcpp-parse.h src/compiler/glsl/glcpp/glcpp-parse.y + bison -v -o "src/compiler/glsl/glsl_parser.cpp" -p "_mesa_glsl_" --defines=src/compiler/glsl/glsl_parser.h src/compiler/glsl/glsl_parser.yy + +-python "src/compiler/glsl/ir_expression_operation.py" "enum" >src/compiler/glsl/ir_expression_operation.h +-python "src/compiler/glsl/ir_expression_operation.py" "strings" >src/compiler/glsl/ir_expression_operation_strings.h +-python "src/compiler/glsl/ir_expression_operation.py" "constant" >src/compiler/glsl/ir_expression_operation_constant.h ++python3 "src/compiler/glsl/ir_expression_operation.py" "enum" >src/compiler/glsl/ir_expression_operation.h ++python3 "src/compiler/glsl/ir_expression_operation.py" "strings" >src/compiler/glsl/ir_expression_operation_strings.h ++python3 "src/compiler/glsl/ir_expression_operation.py" "constant" >src/compiler/glsl/ir_expression_operation_constant.h +diff --git a/third_party/rust/glslopt/glsl-optimizer/include/c11/threads_posix.h b/third_party/rust/glslopt/glsl-optimizer/include/c11/threads_posix.h +index 45cb6075e6e0..5f22aca6f1e7 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/include/c11/threads_posix.h ++++ b/third_party/rust/glslopt/glsl-optimizer/include/c11/threads_posix.h +@@ -51,50 +51,56 @@ Configuration macro: + #include + + /*---------------------------- macros ----------------------------*/ ++#ifndef __once_flag_defined + #define ONCE_FLAG_INIT PTHREAD_ONCE_INIT ++#endif + #ifdef INIT_ONCE_STATIC_INIT + #define TSS_DTOR_ITERATIONS PTHREAD_DESTRUCTOR_ITERATIONS + #else + #define TSS_DTOR_ITERATIONS 1 // assume TSS dtor MAY be called at least once. + #endif + + // FIXME: temporary non-standard hack to ease transition + #define _MTX_INITIALIZER_NP PTHREAD_MUTEX_INITIALIZER + + /*---------------------------- types ----------------------------*/ + typedef pthread_cond_t cnd_t; + typedef pthread_t thrd_t; + typedef pthread_key_t tss_t; + typedef pthread_mutex_t mtx_t; ++#ifndef __once_flag_defined + typedef pthread_once_t once_flag; ++#endif + + + /* + Implementation limits: + - Conditionally emulation for "mutex with timeout" + (see EMULATED_THREADS_USE_NATIVE_TIMEDLOCK macro) + */ + struct impl_thrd_param { + thrd_start_t func; + void *arg; + }; + + static inline void * + impl_thrd_routine(void *p) + { + struct impl_thrd_param pack = *((struct impl_thrd_param *)p); + free(p); + return (void*)(intptr_t)pack.func(pack.arg); + } + + + /*--------------- 7.25.2 Initialization functions ---------------*/ + // 7.25.2.1 ++#ifndef __once_flag_defined + static inline void + call_once(once_flag *flag, void (*func)(void)) + { + pthread_once(flag, func); + } ++#endif + + + /*------------- 7.25.3 Condition variable functions -------------*/ +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_function.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_function.cpp +index b6b81bf1e142..0924d5b57f6e 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_function.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_function.cpp +@@ -2464,7 +2464,7 @@ ast_function_expression::hir(exec_list *instructions, + return value; + } + +- unreachable("not reached"); ++ UNREACHABLE("not reached"); + } + + bool +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp +index c00298a16051..6bb0ebd9ea22 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp +@@ -1413,7 +1413,7 @@ ast_expression::do_hir(exec_list *instructions, + + switch (this->oper) { + case ast_aggregate: +- unreachable("ast_aggregate: Should never get here."); ++ UNREACHABLE("ast_aggregate: Should never get here."); + + case ast_assign: { + this->subexpressions[0]->set_is_lhs(true); +@@ -2004,13 +2004,13 @@ ast_expression::do_hir(exec_list *instructions, + } + + case ast_unsized_array_dim: +- unreachable("ast_unsized_array_dim: Should never get here."); ++ UNREACHABLE("ast_unsized_array_dim: Should never get here."); + + case ast_function_call: + /* Should *NEVER* get here. ast_function_call should always be handled + * by ast_function_expression::hir. + */ +- unreachable("ast_function_call: handled elsewhere "); ++ UNREACHABLE("ast_function_call: handled elsewhere "); + + case ast_identifier: { + /* ast_identifier can appear several places in a full abstract syntax +@@ -2225,10 +2225,10 @@ ast_expression::has_sequence_subexpression() const + return false; + + case ast_function_call: +- unreachable("should be handled by ast_function_expression::hir"); ++ UNREACHABLE("should be handled by ast_function_expression::hir"); + + case ast_unsized_array_dim: +- unreachable("ast_unsized_array_dim: Should never get here."); ++ UNREACHABLE("ast_unsized_array_dim: Should never get here."); + } + + return false; +@@ -2529,7 +2529,7 @@ get_type_name_for_precision_qualifier(const glsl_type *type) + return names[type_idx]; + } + default: +- unreachable("Unsupported sampler/image dimensionality"); ++ UNREACHABLE("Unsupported sampler/image dimensionality"); + } /* sampler/image float dimensionality */ + break; + case GLSL_TYPE_INT: +@@ -2584,7 +2584,7 @@ get_type_name_for_precision_qualifier(const glsl_type *type) + return names[offset + type_idx]; + } + default: +- unreachable("Unsupported isampler/iimage dimensionality"); ++ UNREACHABLE("Unsupported isampler/iimage dimensionality"); + } /* sampler/image int dimensionality */ + break; + case GLSL_TYPE_UINT: +@@ -2639,17 +2639,17 @@ get_type_name_for_precision_qualifier(const glsl_type *type) + return names[offset + type_idx]; + } + default: +- unreachable("Unsupported usampler/uimage dimensionality"); ++ UNREACHABLE("Unsupported usampler/uimage dimensionality"); + } /* sampler/image uint dimensionality */ + break; + default: +- unreachable("Unsupported sampler/image type"); ++ UNREACHABLE("Unsupported sampler/image type"); + } /* sampler/image type */ + break; + } /* GLSL_TYPE_SAMPLER/GLSL_TYPE_IMAGE */ + break; + default: +- unreachable("Unsupported type"); ++ UNREACHABLE("Unsupported type"); + } /* base type */ + } + +@@ -5013,28 +5013,28 @@ ast_declarator_list::hir(exec_list *instructions, + this->type->qualifier.image_format = PIPE_FORMAT_R32G32B32A32_FLOAT; + break; + default: +- unreachable("Unknown image format"); ++ UNREACHABLE("Unknown image format"); + } + this->type->qualifier.image_base_type = GLSL_TYPE_FLOAT; + } else if (strncmp(this->type->specifier->type_name, "uimage", strlen("uimage")) == 0) { + switch (this->type->qualifier.image_format) { + case PIPE_FORMAT_R8_SINT: + this->type->qualifier.image_format = PIPE_FORMAT_R8_UINT; + break; + case PIPE_FORMAT_R16_SINT: + this->type->qualifier.image_format = PIPE_FORMAT_R16_UINT; + break; + case PIPE_FORMAT_R32_SINT: + this->type->qualifier.image_format = PIPE_FORMAT_R32_UINT; + break; + case PIPE_FORMAT_R32G32_SINT: + this->type->qualifier.image_format = PIPE_FORMAT_R32G32_UINT; + break; + case PIPE_FORMAT_R32G32B32A32_SINT: + this->type->qualifier.image_format = PIPE_FORMAT_R32G32B32A32_UINT; + break; + default: +- unreachable("Unknown image format"); ++ UNREACHABLE("Unknown image format"); + } + this->type->qualifier.image_base_type = GLSL_TYPE_UINT; + } else if (strncmp(this->type->specifier->type_name, "iimage", strlen("iimage")) == 0) { +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/builtin_functions.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/builtin_functions.cpp +index 3dafcf0c77e8..603c7f645820 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/builtin_functions.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/builtin_functions.cpp +@@ -5414,7 +5414,7 @@ builtin_builder::_isinf(builtin_available_predicate avail, const glsl_type *type + infinities.d[i] = INFINITY; + break; + default: +- unreachable("unknown type"); ++ UNREACHABLE("unknown type"); + } + } + +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.c b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.c +index 973d1140783b..6081b8aee8fc 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.c ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.c +@@ -1032,7 +1032,7 @@ characters that appear in any other expressions. */ + #define DONE 3 + #define HASH 4 + #define NEWLINE_CATCHUP 5 +-#define UNREACHABLE 6 ++#define NOT_REACHABLE 6 + + #define YY_EXTRA_TYPE glcpp_parser_t * + +@@ -1953,25 +1953,25 @@ YY_RULE_SETUP + { + glcpp_error(yylloc, yyextra, "Internal compiler error: Unexpected character: %s", yytext); + +- /* We don't actually use the UNREACHABLE start condition. We ++ /* We don't actually use the NOT_REACHABLE start condition. We + only have this block here so that we can pretend to call some + generated functions, (to avoid "defined but not used" + warnings. */ +- if (YY_START == UNREACHABLE) { ++ if (YY_START == NOT_REACHABLE) { + unput('.'); + yy_top_state(yyextra); + } + } + YY_BREAK + case 54: + YY_RULE_SETUP + #line 616 "src/compiler/glsl/glcpp/glcpp-lex.l" + YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK + #line 1971 "src/compiler/glsl/glcpp/glcpp-lex.c" + case YY_STATE_EOF(DONE): + case YY_STATE_EOF(NEWLINE_CATCHUP): +-case YY_STATE_EOF(UNREACHABLE): ++case YY_STATE_EOF(NOT_REACHABLE): + yyterminate(); + + case YY_END_OF_BUFFER: +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.l b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.l +index e07739b657c3..f831b58c8aa9 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.l ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.l +@@ -178,7 +178,7 @@ glcpp_lex_update_state_per_token (glcpp_parser_t *parser, int token) + * update the "Internal compiler error" catch-all rule near the end of + * this file. */ + +-%x COMMENT DEFINE DONE HASH NEWLINE_CATCHUP UNREACHABLE ++%x COMMENT DEFINE DONE HASH NEWLINE_CATCHUP NOT_REACHABLE + + SPACE [[:space:]] + NONSPACE [^[:space:]] +@@ -602,11 +602,11 @@ PATH ["][]^./ _A-Za-z0-9+*%[(){}|&~=!:;,?-]*["] + <*>. { + glcpp_error(yylloc, yyextra, "Internal compiler error: Unexpected character: %s", yytext); + +- /* We don't actually use the UNREACHABLE start condition. We ++ /* We don't actually use the NOT_REACHABLE start condition. We + only have this block here so that we can pretend to call some + generated functions, (to avoid "defined but not used" + warnings. */ +- if (YY_START == UNREACHABLE) { ++ if (YY_START == NOT_REACHABLE) { + unput('.'); + yy_top_state(yyextra); + } +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir.cpp +index 9ea8e00d310a..75b43d77537d 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir.cpp +@@ -550,7 +550,7 @@ ir_expression::ir_expression(int op, ir_rvalue *op0, ir_rvalue *op1) + base = GLSL_TYPE_UINT64; + break; + default: +- unreachable(!"Invalid base type."); ++ UNREACHABLE("Invalid base type."); + } + + this->type = glsl_type::get_instance(base, op0->type->vector_elements, 1); +@@ -623,7 +623,7 @@ ir_expression::get_num_operands(ir_expression_operation op) + if (op <= ir_last_quadop) + return 4; + +- unreachable("Could not calculate number of operands"); ++ UNREACHABLE("Could not calculate number of operands"); + } + + #include "ir_expression_operation_strings.h" +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.cpp +index 5ab50a58415f..edd2107745fb 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.cpp +@@ -196,33 +196,33 @@ ir_builder_print_visitor::print_without_declaration(const ir_rvalue *ir) + print_without_declaration((ir_expression *) ir); + break; + default: +- unreachable("Invalid IR type."); ++ UNREACHABLE("Invalid IR type."); + } + } + + ir_visitor_status + ir_builder_print_visitor::visit(ir_variable *ir) + { + const unsigned my_index = next_ir_index++; + + _mesa_hash_table_insert(index_map, ir, (void *)(uintptr_t) my_index); + + const char *mode_str; + switch (ir->data.mode) { + case ir_var_auto: mode_str = "ir_var_auto"; break; + case ir_var_uniform: mode_str = "ir_var_uniform"; break; + case ir_var_shader_storage: mode_str = "ir_var_shader_storage"; break; + case ir_var_shader_shared: mode_str = "ir_var_shader_shared"; break; + case ir_var_shader_in: mode_str = "ir_var_shader_in"; break; + case ir_var_shader_out: mode_str = "ir_var_shader_out"; break; + case ir_var_function_in: mode_str = "ir_var_function_in"; break; + case ir_var_function_out: mode_str = "ir_var_function_out"; break; + case ir_var_function_inout: mode_str = "ir_var_function_inout"; break; + case ir_var_const_in: mode_str = "ir_var_const_in"; break; + case ir_var_system_value: mode_str = "ir_var_system_value"; break; + case ir_var_temporary: mode_str = "ir_var_temporary"; break; + default: +- unreachable("Invalid variable mode"); ++ UNREACHABLE("Invalid variable mode"); + } + + if (ir->data.mode == ir_var_temporary) { +@@ -420,7 +420,7 @@ ir_builder_print_visitor::visit(ir_constant *ir) + print_with_indent("r%04X_data.u[%u] = 1;\n", my_index, i); + break; + default: +- unreachable("Invalid constant type"); ++ UNREACHABLE("Invalid constant type"); + } + } + +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_expression_operation.py b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_expression_operation.py +index 160626e6ef6f..58c9b44a0d4e 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_expression_operation.py ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_expression_operation.py +@@ -106,7 +106,7 @@ constant_template_common = mako.template.Template("""\ + break; + % endfor + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break;""") +@@ -137,30 +137,30 @@ constant_template_vector_scalar = mako.template.Template("""\ + break; + % endfor + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break;""") + + # This template is for multiplication. It is unique because it has to support + # matrix * vector and matrix * matrix operations, and those are just different. + constant_template_mul = mako.template.Template("""\ + case ${op.get_enum_name()}: + /* Check for equal types, or unequal types involving scalars */ + if ((op[0]->type == op[1]->type && !op[0]->type->is_matrix()) + || op0_scalar || op1_scalar) { + for (unsigned c = 0, c0 = 0, c1 = 0; + c < components; + c0 += c0_inc, c1 += c1_inc, c++) { + + switch (op[0]->type->base_type) { + % for dst_type, src_types in op.signatures(): + case ${src_types[0].glsl_type}: + data.${dst_type.union_field}[c] = ${op.get_c_expression(src_types, ("c0", "c1", "c2"))}; + break; + % endfor + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + } else { +@@ -218,99 +218,99 @@ constant_template_horizontal = mako.template.Template("""\ + break; + % endfor + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + break;""") + + # This template is for ir_binop_vector_extract. + constant_template_vector_extract = mako.template.Template("""\ + case ${op.get_enum_name()}: { + const int c = CLAMP(op[1]->value.i[0], 0, + (int) op[0]->type->vector_elements - 1); + + switch (op[0]->type->base_type) { + % for dst_type, src_types in op.signatures(): + case ${src_types[0].glsl_type}: + data.${dst_type.union_field}[0] = op[0]->value.${src_types[0].union_field}[c]; + break; + % endfor + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + break; + }""") + + # This template is for ir_triop_vector_insert. + constant_template_vector_insert = mako.template.Template("""\ + case ${op.get_enum_name()}: { + const unsigned idx = op[2]->value.u[0]; + + memcpy(&data, &op[0]->value, sizeof(data)); + + switch (this->type->base_type) { + % for dst_type, src_types in op.signatures(): + case ${src_types[0].glsl_type}: + data.${dst_type.union_field}[idx] = op[1]->value.${src_types[0].union_field}[0]; + break; + % endfor + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + break; + }""") + + # This template is for ir_quadop_vector. + constant_template_vector = mako.template.Template("""\ + case ${op.get_enum_name()}: + for (unsigned c = 0; c < this->type->vector_elements; c++) { + switch (this->type->base_type) { + % for dst_type, src_types in op.signatures(): + case ${src_types[0].glsl_type}: + data.${dst_type.union_field}[c] = op[c]->value.${src_types[0].union_field}[0]; + break; + % endfor + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break;""") + + # This template is for ir_triop_lrp. + constant_template_lrp = mako.template.Template("""\ + case ${op.get_enum_name()}: { + assert(op[0]->type->is_float() || op[0]->type->is_double()); + assert(op[1]->type->is_float() || op[1]->type->is_double()); + assert(op[2]->type->is_float() || op[2]->type->is_double()); + + unsigned c2_inc = op[2]->type->is_scalar() ? 0 : 1; + for (unsigned c = 0, c2 = 0; c < components; c2 += c2_inc, c++) { + switch (this->type->base_type) { + % for dst_type, src_types in op.signatures(): + case ${src_types[0].glsl_type}: + data.${dst_type.union_field}[c] = ${op.get_c_expression(src_types, ("c", "c", "c2"))}; + break; + % endfor + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + }""") + + # This template is for ir_triop_csel. This expression is really unique + # because not all of the operands are the same type, and the second operand + # determines the type of the expression (instead of the first). + constant_template_csel = mako.template.Template("""\ + case ${op.get_enum_name()}: + for (unsigned c = 0; c < components; c++) { + switch (this->type->base_type) { + % for dst_type, src_types in op.signatures(): + case ${src_types[1].glsl_type}: + data.${dst_type.union_field}[c] = ${op.get_c_expression(src_types)}; + break; + % endfor + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break;""") +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_expression_operation_constant.h b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_expression_operation_constant.h +index ef5c4e792772..76cd18f03398 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_expression_operation_constant.h ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_expression_operation_constant.h +@@ -15,1018 +15,1018 @@ + data.i64[c] = ~ op[0]->value.i64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_logic_not: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_BOOL: + data.b[c] = !op[0]->value.b[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_neg: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[c] = -((int) op[0]->value.u[c]); + break; + case GLSL_TYPE_INT: + data.i[c] = -op[0]->value.i[c]; + break; + case GLSL_TYPE_FLOAT: + data.f[c] = -op[0]->value.f[c]; + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = -op[0]->value.d[c]; + break; + case GLSL_TYPE_UINT64: + data.u64[c] = -((int64_t) op[0]->value.u64[c]); + break; + case GLSL_TYPE_INT64: + data.i64[c] = -op[0]->value.i64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_abs: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT: + data.i[c] = op[0]->value.i[c] < 0 ? -op[0]->value.i[c] : op[0]->value.i[c]; + break; + case GLSL_TYPE_FLOAT: + data.f[c] = fabsf(op[0]->value.f[c]); + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = fabs(op[0]->value.d[c]); + break; + case GLSL_TYPE_INT64: + data.i64[c] = op[0]->value.i64[c] < 0 ? -op[0]->value.i64[c] : op[0]->value.i64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_sign: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT: + data.i[c] = (op[0]->value.i[c] > 0) - (op[0]->value.i[c] < 0); + break; + case GLSL_TYPE_FLOAT: + data.f[c] = float((op[0]->value.f[c] > 0.0F) - (op[0]->value.f[c] < 0.0F)); + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = double((op[0]->value.d[c] > 0.0) - (op[0]->value.d[c] < 0.0)); + break; + case GLSL_TYPE_INT64: + data.i64[c] = (op[0]->value.i64[c] > 0) - (op[0]->value.i64[c] < 0); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_rcp: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = 1.0F / op[0]->value.f[c]; + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = 1.0 / op[0]->value.d[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_rsq: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = 1.0F / sqrtf(op[0]->value.f[c]); + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = 1.0 / sqrt(op[0]->value.d[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_sqrt: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = sqrtf(op[0]->value.f[c]); + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = sqrt(op[0]->value.d[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_exp: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = expf(op[0]->value.f[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_log: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = logf(op[0]->value.f[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_exp2: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = exp2f(op[0]->value.f[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_log2: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = log2f(op[0]->value.f[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_f2i: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.i[c] = (int) op[0]->value.f[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_f2u: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.u[c] = (unsigned) op[0]->value.f[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i2f: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT: + data.f[c] = (float) op[0]->value.i[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_f2b: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.b[c] = op[0]->value.f[c] != 0.0F ? true : false; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_b2f: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_BOOL: + data.f[c] = op[0]->value.b[c] ? 1.0F : 0.0F; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_b2f16: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_BOOL: + data.f[c] = op[0]->value.b[c] ? 1.0F : 0.0F; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i2b: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.b[c] = op[0]->value.u[c] ? true : false; + break; + case GLSL_TYPE_INT: + data.b[c] = op[0]->value.i[c] ? true : false; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_b2i: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_BOOL: + data.i[c] = op[0]->value.b[c] ? 1 : 0; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_u2f: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.f[c] = (float) op[0]->value.u[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i2u: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT: + data.u[c] = op[0]->value.i[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_u2i: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.i[c] = op[0]->value.u[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_d2f: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_DOUBLE: + data.f[c] = op[0]->value.d[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_f2d: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.d[c] = op[0]->value.f[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_f2f16: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = op[0]->value.f[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_f2fmp: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = op[0]->value.f[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_f162f: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = op[0]->value.f[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_d2i: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_DOUBLE: + data.i[c] = op[0]->value.d[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i2d: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT: + data.d[c] = op[0]->value.i[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_d2u: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_DOUBLE: + data.u[c] = op[0]->value.d[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_u2d: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.d[c] = op[0]->value.u[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_d2b: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_DOUBLE: + data.b[c] = op[0]->value.d[c] != 0.0; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_f162b: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.b[c] = op[0]->value.f[c] != 0.0; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_bitcast_i2f: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT: + data.f[c] = bitcast_u2f(op[0]->value.i[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_bitcast_f2i: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.i[c] = bitcast_f2u(op[0]->value.f[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_bitcast_u2f: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.f[c] = bitcast_u2f(op[0]->value.u[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_bitcast_f2u: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.u[c] = bitcast_f2u(op[0]->value.f[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_bitcast_u642d: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT64: + data.d[c] = bitcast_u642d(op[0]->value.u64[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_bitcast_i642d: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT64: + data.d[c] = bitcast_i642d(op[0]->value.i64[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_bitcast_d2u64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_DOUBLE: + data.u64[c] = bitcast_d2u64(op[0]->value.d[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_bitcast_d2i64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_DOUBLE: + data.i64[c] = bitcast_d2i64(op[0]->value.d[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i642i: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT64: + data.i[c] = op[0]->value.i64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_u642i: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT64: + data.i[c] = op[0]->value.u64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i642u: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT64: + data.u[c] = op[0]->value.i64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_u642u: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT64: + data.u[c] = op[0]->value.u64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i642b: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT64: + data.b[c] = op[0]->value.i64[c] != 0; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i642f: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT64: + data.f[c] = op[0]->value.i64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_u642f: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT64: + data.f[c] = op[0]->value.u64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i642d: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT64: + data.d[c] = op[0]->value.i64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_u642d: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT64: + data.d[c] = op[0]->value.u64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i2i64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT: + data.i64[c] = op[0]->value.i[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_u2i64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.i64[c] = op[0]->value.u[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_b2i64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_BOOL: + data.i64[c] = op[0]->value.b[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_f2i64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.i64[c] = op[0]->value.f[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_d2i64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_DOUBLE: + data.i64[c] = op[0]->value.d[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i2u64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT: + data.u64[c] = op[0]->value.i[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_u2u64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u64[c] = op[0]->value.u[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_f2u64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.u64[c] = op[0]->value.f[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_d2u64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_DOUBLE: + data.u64[c] = op[0]->value.d[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_u642i64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT64: + data.i64[c] = op[0]->value.u64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_i642u64: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_INT64: + data.u64[c] = op[0]->value.i64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_trunc: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = truncf(op[0]->value.f[c]); + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = trunc(op[0]->value.d[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_ceil: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = ceilf(op[0]->value.f[c]); + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = ceil(op[0]->value.d[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_floor: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = floorf(op[0]->value.f[c]); + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = floor(op[0]->value.d[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_fract: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = op[0]->value.f[c] - floorf(op[0]->value.f[c]); + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = op[0]->value.d[c] - floor(op[0]->value.d[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_round_even: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = _mesa_roundevenf(op[0]->value.f[c]); + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = _mesa_roundeven(op[0]->value.d[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_sin: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = sinf(op[0]->value.f[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_cos: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = cosf(op[0]->value.f[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_atan: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = atan(op[0]->value.f[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_dFdx: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = 0.0f; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_dFdx_coarse: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = 0.0f; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_dFdx_fine: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = 0.0f; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_dFdy: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = 0.0f; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_dFdy_coarse: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = 0.0f; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_dFdy_fine: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = 0.0f; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_pack_snorm_2x16: + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.u[0] = pack_2x16(pack_snorm_1x16, op[0]->value.f[0], op[0]->value.f[1]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + break; + + case ir_unop_pack_snorm_4x8: + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.u[0] = pack_4x8(pack_snorm_1x8, op[0]->value.f[0], op[0]->value.f[1], op[0]->value.f[2], op[0]->value.f[3]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + break; + + case ir_unop_pack_unorm_2x16: + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.u[0] = pack_2x16(pack_unorm_1x16, op[0]->value.f[0], op[0]->value.f[1]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + break; + + case ir_unop_pack_unorm_4x8: + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.u[0] = pack_4x8(pack_unorm_1x8, op[0]->value.f[0], op[0]->value.f[1], op[0]->value.f[2], op[0]->value.f[3]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + break; + + case ir_unop_pack_half_2x16: + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.u[0] = pack_2x16(pack_half_1x16, op[0]->value.f[0], op[0]->value.f[1]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + break; + +@@ -1060,76 +1060,76 @@ + data.i[c] = bitfield_reverse(op[0]->value.i[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_bit_count: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.i[c] = util_bitcount(op[0]->value.u[c]); + break; + case GLSL_TYPE_INT: + data.i[c] = util_bitcount(op[0]->value.i[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_find_msb: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.i[c] = find_msb_uint(op[0]->value.u[c]); + break; + case GLSL_TYPE_INT: + data.i[c] = find_msb_int(op[0]->value.i[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_find_lsb: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.i[c] = find_msb_uint(op[0]->value.u[c] & -op[0]->value.u[c]); + break; + case GLSL_TYPE_INT: + data.i[c] = find_msb_uint(op[0]->value.i[c] & -op[0]->value.i[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_clz: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[c] = (unsigned)(31 - find_msb_uint(op[0]->value.u[c])); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_unop_saturate: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = CLAMP(op[0]->value.f[c], 0.0f, 1.0f); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1200,7 +1200,7 @@ + data.i64[c] = op[0]->value.i64[c0] + op[1]->value.i64[c1]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1231,112 +1231,112 @@ + data.i64[c] = op[0]->value.i64[c0] - op[1]->value.i64[c1]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_add_sat: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[c] = (op[0]->value.u[c] + op[1]->value.u[c]) < op[0]->value.u[c] ? UINT32_MAX : (op[0]->value.u[c] + op[1]->value.u[c]); + break; + case GLSL_TYPE_INT: + data.i[c] = iadd_saturate(op[0]->value.i[c], op[1]->value.i[c]); + break; + case GLSL_TYPE_UINT64: + data.u64[c] = (op[0]->value.u64[c] + op[1]->value.u64[c]) < op[0]->value.u64[c] ? UINT64_MAX : (op[0]->value.u64[c] + op[1]->value.u64[c]); + break; + case GLSL_TYPE_INT64: + data.i64[c] = iadd64_saturate(op[0]->value.i64[c], op[1]->value.i64[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_sub_sat: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[c] = (op[1]->value.u[c] > op[0]->value.u[c]) ? 0 : op[0]->value.u[c] - op[1]->value.u[c]; + break; + case GLSL_TYPE_INT: + data.i[c] = isub_saturate(op[0]->value.i[c], op[1]->value.i[c]); + break; + case GLSL_TYPE_UINT64: + data.u64[c] = (op[1]->value.u64[c] > op[0]->value.u64[c]) ? 0 : op[0]->value.u64[c] - op[1]->value.u64[c]; + break; + case GLSL_TYPE_INT64: + data.i64[c] = isub64_saturate(op[0]->value.i64[c], op[1]->value.i64[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_abs_sub: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[c] = (op[1]->value.u[c] > op[0]->value.u[c]) ? op[1]->value.u[c] - op[0]->value.u[c] : op[0]->value.u[c] - op[1]->value.u[c]; + break; + case GLSL_TYPE_INT: + data.i[c] = (op[1]->value.i[c] > op[0]->value.i[c]) ? (unsigned)op[1]->value.i[c] - (unsigned)op[0]->value.i[c] : (unsigned)op[0]->value.i[c] - (unsigned)op[1]->value.i[c]; + break; + case GLSL_TYPE_UINT64: + data.u64[c] = (op[1]->value.u64[c] > op[0]->value.u64[c]) ? op[1]->value.u64[c] - op[0]->value.u64[c] : op[0]->value.u64[c] - op[1]->value.u64[c]; + break; + case GLSL_TYPE_INT64: + data.i64[c] = (op[1]->value.i64[c] > op[0]->value.i64[c]) ? (uint64_t)op[1]->value.i64[c] - (uint64_t)op[0]->value.i64[c] : (uint64_t)op[0]->value.i64[c] - (uint64_t)op[1]->value.i64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_avg: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[c] = (op[0]->value.u[c] >> 1) + (op[1]->value.u[c] >> 1) + ((op[0]->value.u[c] & op[1]->value.u[c]) & 1); + break; + case GLSL_TYPE_INT: + data.i[c] = (op[0]->value.i[c] >> 1) + (op[1]->value.i[c] >> 1) + ((op[0]->value.i[c] & op[1]->value.i[c]) & 1); + break; + case GLSL_TYPE_UINT64: + data.u64[c] = (op[0]->value.u64[c] >> 1) + (op[1]->value.u64[c] >> 1) + ((op[0]->value.u64[c] & op[1]->value.u64[c]) & 1); + break; + case GLSL_TYPE_INT64: + data.i64[c] = (op[0]->value.i64[c] >> 1) + (op[1]->value.i64[c] >> 1) + ((op[0]->value.i64[c] & op[1]->value.i64[c]) & 1); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_avg_round: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[c] = (op[0]->value.u[c] >> 1) + (op[1]->value.u[c] >> 1) + ((op[0]->value.u[c] | op[1]->value.u[c]) & 1); + break; + case GLSL_TYPE_INT: + data.i[c] = (op[0]->value.i[c] >> 1) + (op[1]->value.i[c] >> 1) + ((op[0]->value.i[c] | op[1]->value.i[c]) & 1); + break; + case GLSL_TYPE_UINT64: + data.u64[c] = (op[0]->value.u64[c] >> 1) + (op[1]->value.u64[c] >> 1) + ((op[0]->value.u64[c] | op[1]->value.u64[c]) & 1); + break; + case GLSL_TYPE_INT64: + data.i64[c] = (op[0]->value.i64[c] >> 1) + (op[1]->value.i64[c] >> 1) + ((op[0]->value.i64[c] | op[1]->value.i64[c]) & 1); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1369,7 +1369,7 @@ + data.i64[c] = op[0]->value.i64[c0] * op[1]->value.i64[c1]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + } else { +@@ -1411,7 +1411,7 @@ + data.i[c] = op[0]->value.i[c] * (int16_t)op[0]->value.i[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1442,7 +1442,7 @@ + data.i64[c] = op[1]->value.i64[c1] == 0 ? 0 : op[0]->value.i64[c0] / op[1]->value.i64[c1]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1473,61 +1473,61 @@ + data.i64[c] = op[1]->value.i64[c1] == 0 ? 0 : op[0]->value.i64[c0] % op[1]->value.i64[c1]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_less: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.b[c] = op[0]->value.u[c] < op[1]->value.u[c]; + break; + case GLSL_TYPE_INT: + data.b[c] = op[0]->value.i[c] < op[1]->value.i[c]; + break; + case GLSL_TYPE_FLOAT: + data.b[c] = op[0]->value.f[c] < op[1]->value.f[c]; + break; + case GLSL_TYPE_DOUBLE: + data.b[c] = op[0]->value.d[c] < op[1]->value.d[c]; + break; + case GLSL_TYPE_UINT64: + data.b[c] = op[0]->value.u64[c] < op[1]->value.u64[c]; + break; + case GLSL_TYPE_INT64: + data.b[c] = op[0]->value.i64[c] < op[1]->value.i64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_gequal: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.b[c] = op[0]->value.u[c] >= op[1]->value.u[c]; + break; + case GLSL_TYPE_INT: + data.b[c] = op[0]->value.i[c] >= op[1]->value.i[c]; + break; + case GLSL_TYPE_FLOAT: + data.b[c] = op[0]->value.f[c] >= op[1]->value.f[c]; + break; + case GLSL_TYPE_DOUBLE: + data.b[c] = op[0]->value.d[c] >= op[1]->value.d[c]; + break; + case GLSL_TYPE_UINT64: + data.b[c] = op[0]->value.u64[c] >= op[1]->value.u64[c]; + break; + case GLSL_TYPE_INT64: + data.b[c] = op[0]->value.i64[c] >= op[1]->value.i64[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1557,7 +1557,7 @@ + data.b[c] = op[0]->value.b[c] == op[1]->value.b[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1587,7 +1587,7 @@ + data.b[c] = op[0]->value.b[c] != op[1]->value.b[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1627,7 +1627,7 @@ + data.i64[c] = op[0]->value.i64[c0] << op[1]->value.i64[c1]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1659,132 +1659,132 @@ + data.i64[c] = op[0]->value.i64[c0] >> op[1]->value.i64[c1]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_bit_and: + assert(op[0]->type == op[1]->type || op0_scalar || op1_scalar); + for (unsigned c = 0, c0 = 0, c1 = 0; + c < components; + c0 += c0_inc, c1 += c1_inc, c++) { + + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[c] = op[0]->value.u[c0] & op[1]->value.u[c1]; + break; + case GLSL_TYPE_INT: + data.i[c] = op[0]->value.i[c0] & op[1]->value.i[c1]; + break; + case GLSL_TYPE_UINT64: + data.u64[c] = op[0]->value.u64[c0] & op[1]->value.u64[c1]; + break; + case GLSL_TYPE_INT64: + data.i64[c] = op[0]->value.i64[c0] & op[1]->value.i64[c1]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_bit_xor: + assert(op[0]->type == op[1]->type || op0_scalar || op1_scalar); + for (unsigned c = 0, c0 = 0, c1 = 0; + c < components; + c0 += c0_inc, c1 += c1_inc, c++) { + + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[c] = op[0]->value.u[c0] ^ op[1]->value.u[c1]; + break; + case GLSL_TYPE_INT: + data.i[c] = op[0]->value.i[c0] ^ op[1]->value.i[c1]; + break; + case GLSL_TYPE_UINT64: + data.u64[c] = op[0]->value.u64[c0] ^ op[1]->value.u64[c1]; + break; + case GLSL_TYPE_INT64: + data.i64[c] = op[0]->value.i64[c0] ^ op[1]->value.i64[c1]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_bit_or: + assert(op[0]->type == op[1]->type || op0_scalar || op1_scalar); + for (unsigned c = 0, c0 = 0, c1 = 0; + c < components; + c0 += c0_inc, c1 += c1_inc, c++) { + + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[c] = op[0]->value.u[c0] | op[1]->value.u[c1]; + break; + case GLSL_TYPE_INT: + data.i[c] = op[0]->value.i[c0] | op[1]->value.i[c1]; + break; + case GLSL_TYPE_UINT64: + data.u64[c] = op[0]->value.u64[c0] | op[1]->value.u64[c1]; + break; + case GLSL_TYPE_INT64: + data.i64[c] = op[0]->value.i64[c0] | op[1]->value.i64[c1]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_logic_and: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_BOOL: + data.b[c] = op[0]->value.b[c] && op[1]->value.b[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_logic_xor: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_BOOL: + data.b[c] = op[0]->value.b[c] != op[1]->value.b[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_logic_or: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_BOOL: + data.b[c] = op[0]->value.b[c] || op[1]->value.b[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_dot: + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[0] = dot_f(op[0], op[1]); + break; + case GLSL_TYPE_DOUBLE: + data.d[0] = dot_d(op[0], op[1]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + break; + +@@ -1814,7 +1814,7 @@ + data.i64[c] = MIN2(op[0]->value.i64[c0], op[1]->value.i64[c1]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1845,34 +1845,34 @@ + data.i64[c] = MAX2(op[0]->value.i64[c0], op[1]->value.i64[c1]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_pow: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = powf(op[0]->value.f[c], op[1]->value.f[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_binop_ldexp: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = ldexpf_flush_subnormal(op[0]->value.f[c], op[1]->value.i[c]); + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = ldexp_flush_subnormal(op[0]->value.d[c], op[1]->value.i[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1904,54 +1904,54 @@ + data.b[0] = op[0]->value.b[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + break; + } + + case ir_binop_atan2: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = atan2(op[0]->value.f[c], op[1]->value.f[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_triop_fma: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = op[0]->value.f[c] * op[1]->value.f[c] + op[2]->value.f[c]; + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = op[0]->value.d[c] * op[1]->value.d[c] + op[2]->value.d[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_triop_lrp: { + assert(op[0]->type->is_float() || op[0]->type->is_double()); + assert(op[1]->type->is_float() || op[1]->type->is_double()); + assert(op[2]->type->is_float() || op[2]->type->is_double()); + + unsigned c2_inc = op[2]->type->is_scalar() ? 0 : 1; + for (unsigned c = 0, c2 = 0; c < components; c2 += c2_inc, c++) { + switch (this->type->base_type) { + case GLSL_TYPE_FLOAT: + data.f[c] = op[0]->value.f[c] * (1.0f - op[2]->value.f[c2]) + (op[1]->value.f[c] * op[2]->value.f[c2]); + break; + case GLSL_TYPE_DOUBLE: + data.d[c] = op[0]->value.d[c] * (1.0 - op[2]->value.d[c2]) + (op[1]->value.d[c] * op[2]->value.d[c2]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -1982,22 +1982,22 @@ + data.b[c] = op[0]->value.b[c] ? op[1]->value.b[c] : op[2]->value.b[c]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; + + case ir_triop_bitfield_extract: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.i[c] = bitfield_extract_uint(op[0]->value.u[c], op[1]->value.i[c], op[2]->value.i[c]); + break; + case GLSL_TYPE_INT: + data.i[c] = bitfield_extract_int(op[0]->value.i[c], op[1]->value.i[c], op[2]->value.i[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -2030,22 +2030,22 @@ + data.b[idx] = op[1]->value.b[0]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + break; + } + + case ir_quadop_bitfield_insert: + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[c] = bitfield_insert(op[0]->value.u[c], op[1]->value.u[c], op[2]->value.i[c], op[3]->value.i[c]); + break; + case GLSL_TYPE_INT: + data.i[c] = bitfield_insert(op[0]->value.i[c], op[1]->value.i[c], op[2]->value.i[c], op[3]->value.i[c]); + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +@@ -2075,7 +2075,7 @@ + data.b[c] = op[c]->value.b[0]; + break; + default: +- unreachable("invalid type"); ++ UNREACHABLE("invalid type"); + } + } + break; +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.cpp +index d15bfd0e5640..b7618753c2c3 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.cpp +@@ -835,7 +835,7 @@ static const char* operator_glsl_str(ir_expression_operation op, const glsl_type + case ir_triop_lrp: + return "mix"; + default: +- unreachable("Unexpected operator in operator_glsl_str"); ++ UNREACHABLE("Unexpected operator in operator_glsl_str"); + return "UNIMPLEMENTED"; + } + } +@@ -1891,21 +1891,21 @@ interface_packing_string(enum glsl_interface_packing packing) + case GLSL_INTERFACE_PACKING_STD430: + return "std430"; + default: +- unreachable("Unexpected interface packing"); ++ UNREACHABLE("Unexpected interface packing"); + return "UNKNOWN"; + } + } + + static const char* + interface_variable_mode_string(enum ir_variable_mode mode) + { + switch (mode) { + case ir_var_uniform: + return "uniform"; + case ir_var_shader_storage: + return "buffer"; + default: +- unreachable("Unexpected interface variable mode"); ++ UNREACHABLE("Unexpected interface variable mode"); + return "UNKOWN"; + } + } +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_print_visitor.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_print_visitor.cpp +index d621c2670032..964177fd11b7 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_print_visitor.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir_print_visitor.cpp +@@ -381,7 +381,7 @@ void ir_print_visitor::visit(ir_texture *ir) + ir->lod_info.component->accept(this); + break; + case ir_samples_identical: +- unreachable("ir_samples_identical was already handled"); ++ UNREACHABLE("ir_samples_identical was already handled"); + }; + fprintf(f, ")"); + } +@@ -522,7 +522,7 @@ void ir_print_visitor::visit(ir_constant *ir) + fprintf(f, "%f", ir->value.d[i]); + break; + default: +- unreachable("Invalid constant type"); ++ UNREACHABLE("Invalid constant type"); + } + } + } +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/linker.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/linker.cpp +index 212abf084b2e..112076d40733 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/linker.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/linker.cpp +@@ -3988,7 +3988,7 @@ add_packed_varyings(const struct gl_context *ctx, + iface = GL_PROGRAM_OUTPUT; + break; + default: +- unreachable("unexpected type"); ++ UNREACHABLE("unexpected type"); + } + + if (type == iface) { +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/loop_analysis.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/loop_analysis.cpp +index 9429e69c2a7f..445bfd06c01b 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/loop_analysis.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/loop_analysis.cpp +@@ -171,7 +171,7 @@ calculate_iterations(ir_rvalue *from, ir_rvalue *to, ir_rvalue *increment, + iter = new(mem_ctx) ir_constant(double(iter_value + bias[i])); + break; + default: +- unreachable("Unsupported type for loop iterator."); ++ UNREACHABLE("Unsupported type for loop iterator."); + } + + ir_expression *const mul = +@@ -238,7 +238,7 @@ incremented_before_terminator(ir_loop *loop, ir_variable *var, + } + } + +- unreachable("Unable to find induction variable"); ++ UNREACHABLE("Unable to find induction variable"); + } + + /** +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_blend_equation_advanced.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_blend_equation_advanced.cpp +index c85b39bcaa34..1a7b8d4e8d6a 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_blend_equation_advanced.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_blend_equation_advanced.cpp +@@ -386,7 +386,7 @@ calc_blend_result(ir_factory f, + break; + case BLEND_NONE: + case BLEND_ALL: +- unreachable("not real cases"); ++ UNREACHABLE("not real cases"); + } + + if (val) +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_buffer_access.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_buffer_access.cpp +index a6e2f741ebe6..c97f497c384d 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_buffer_access.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_buffer_access.cpp +@@ -244,19 +244,19 @@ lower_buffer_access::is_dereferenced_thing_row_major(const ir_rvalue *deref) + return matrix || deref->type->without_array()->is_struct(); + } + +- unreachable("invalid matrix layout"); ++ UNREACHABLE("invalid matrix layout"); + break; + } + + default: + return false; + } + } + + /* The tree must have ended with a dereference that wasn't an + * ir_dereference_variable. That is invalid, and it should be impossible. + */ +- unreachable("invalid dereference tree"); ++ UNREACHABLE("invalid dereference tree"); + return false; + } + +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_distance.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_distance.cpp +index b4e730c64fbd..749bfc509748 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_distance.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_distance.cpp +@@ -155,7 +155,7 @@ lower_distance_visitor::visit(ir_variable *ir) + old_var = &old_distance_in_var; + new_var = &new_distance_in_var; + } else { +- unreachable("not reached"); ++ UNREACHABLE("not reached"); + } + + this->progress = true; +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_ubo_reference.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_ubo_reference.cpp +index 08d4f72efa0a..3a44c60c7abe 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_ubo_reference.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/lower_ubo_reference.cpp +@@ -549,7 +549,7 @@ lower_ubo_reference_visitor::insert_buffer_access(void *mem_ctx, + } + break; + default: +- unreachable("invalid buffer_access_type in insert_buffer_access"); ++ UNREACHABLE("invalid buffer_access_type in insert_buffer_access"); + } + } + +@@ -730,7 +730,7 @@ lower_ubo_reference_visitor::calculate_unsized_array_stride(ir_dereference *dere + break; + } + default: +- unreachable("Unsupported dereference type"); ++ UNREACHABLE("Unsupported dereference type"); + } + return array_stride; + } +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_algebraic.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_algebraic.cpp +index 7cef4fc6ef93..ecb592d5c13d 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_algebraic.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_algebraic.cpp +@@ -995,7 +995,7 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) + break; + default: + one = NULL; +- unreachable("unexpected type"); ++ UNREACHABLE("unexpected type"); + } + + return mul(ir->operands[0], add(one, neg(ir->operands[2]))); +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_minmax.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_minmax.cpp +index 36fe0a9f05b6..a56ef38b81b1 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_minmax.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_minmax.cpp +@@ -154,7 +154,7 @@ compare_components(ir_constant *a, ir_constant *b) + foundequal = true; + break; + default: +- unreachable("not reached"); ++ UNREACHABLE("not reached"); + } + } + +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp +index 88318cd8a6eb..9475467629c9 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp +@@ -228,7 +228,7 @@ write_mask_to_swizzle(unsigned write_mask) + case WRITEMASK_Z: return SWIZZLE_Z; + case WRITEMASK_W: return SWIZZLE_W; + } +- unreachable("not reached"); ++ UNREACHABLE("not reached"); + } + + /** +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.cpp +index 445659599c22..77ea8b11ff87 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.cpp ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.cpp +@@ -459,7 +459,7 @@ const glsl_type *glsl_type::get_bare_type() const + return this; + } + +- unreachable("Invalid base type"); ++ UNREACHABLE("Invalid base type"); + } + + const glsl_type *glsl_type::get_float16_type() const +@@ -899,7 +899,7 @@ glsl_type::get_sampler_instance(enum glsl_sampler_dim dim, + return error_type; + } + +- unreachable("switch statement above should be complete"); ++ UNREACHABLE("switch statement above should be complete"); + } + + const glsl_type * +@@ -998,7 +998,7 @@ glsl_type::get_image_instance(enum glsl_sampler_dim dim, + return error_type; + } + +- unreachable("switch statement above should be complete"); ++ UNREACHABLE("switch statement above should be complete"); + } + + const glsl_type * +@@ -2015,7 +2015,7 @@ glsl_type::get_explicit_std140_type(bool row_major) const + delete[] fields; + return type; + } else { +- unreachable("Invalid type for UBO or SSBO"); ++ UNREACHABLE("Invalid type for UBO or SSBO"); + } + } + +@@ -2373,7 +2373,7 @@ glsl_type::get_explicit_std430_type(bool row_major) const + delete[] fields; + return type; + } else { +- unreachable("Invalid type for SSBO"); ++ UNREACHABLE("Invalid type for SSBO"); + } + } + +@@ -2447,7 +2447,7 @@ glsl_type::get_explicit_type_for_size_align(glsl_type_size_align_func type_info, + return glsl_type::get_instance(this->base_type, this->vector_elements, + this->matrix_columns, stride, false); + } else { +- unreachable("Unhandled type."); ++ UNREACHABLE("Unhandled type."); + } + } + +@@ -2583,7 +2583,7 @@ glsl_type::count_dword_slots(bool is_bindless) const + case GLSL_TYPE_ERROR: + case GLSL_TYPE_FUNCTION: + default: +- unreachable("invalid type in st_glsl_type_dword_size()"); ++ UNREACHABLE("invalid type in st_glsl_type_dword_size()"); + } + + return 0; +@@ -2947,7 +2947,7 @@ glsl_get_sampler_dim_coordinate_components(enum glsl_sampler_dim dim) + case GLSL_SAMPLER_DIM_CUBE: + return 3; + default: +- unreachable("Unknown sampler dim"); ++ UNREACHABLE("Unknown sampler dim"); + } + } + +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.h b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.h +index f709bdd702e2..45d608ce47e3 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.h ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.h +@@ -187,7 +187,7 @@ glsl_base_type_get_bit_size(const enum glsl_base_type base_type) + return 64; + + default: +- unreachable("unknown base type"); ++ UNREACHABLE("unknown base type"); + } + + return 0; +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/shader_enums.c b/third_party/rust/glslopt/glsl-optimizer/src/compiler/shader_enums.c +index a2a5eb82a61f..6df48d39abc0 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/shader_enums.c ++++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/shader_enums.c +@@ -66,27 +66,27 @@ _mesa_shader_stage_to_string(unsigned stage) + case MESA_SHADER_TESS_EVAL: return "tessellation evaluation"; + } + +- unreachable("Unknown shader stage."); ++ UNREACHABLE("Unknown shader stage."); + } + + /** + * Translate a gl_shader_stage to a shader stage abbreviation (VS, GS, FS) + * for debug printouts and error messages. + */ + const char * + _mesa_shader_stage_to_abbrev(unsigned stage) + { + switch (stage) { + case MESA_SHADER_VERTEX: return "VS"; + case MESA_SHADER_FRAGMENT: return "FS"; + case MESA_SHADER_GEOMETRY: return "GS"; + case MESA_SHADER_COMPUTE: return "CS"; + case MESA_SHADER_KERNEL: return "CL"; + case MESA_SHADER_TESS_CTRL: return "TCS"; + case MESA_SHADER_TESS_EVAL: return "TES"; + } + +- unreachable("Unknown shader stage."); ++ UNREACHABLE("Unknown shader stage."); + } + + const char * +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/mesa/main/shaderobj.h b/third_party/rust/glslopt/glsl-optimizer/src/mesa/main/shaderobj.h +index 0d512550de47..3f105d64d21b 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/mesa/main/shaderobj.h ++++ b/third_party/rust/glslopt/glsl-optimizer/src/mesa/main/shaderobj.h +@@ -140,7 +140,7 @@ _mesa_shader_enum_to_shader_stage(GLenum v) + case GL_COMPUTE_SHADER: + return MESA_SHADER_COMPUTE; + default: +- unreachable("bad value in _mesa_shader_enum_to_shader_stage()"); ++ UNREACHABLE("bad value in _mesa_shader_enum_to_shader_stage()"); + } + } + +@@ -184,75 +184,75 @@ _mesa_shader_stage_from_subroutine_uniform(GLenum subuniform) + case GL_TESS_EVALUATION_SUBROUTINE_UNIFORM: + return MESA_SHADER_TESS_EVAL; + } +- unreachable("not reached"); ++ UNREACHABLE("not reached"); + } + + static inline gl_shader_stage + _mesa_shader_stage_from_subroutine(GLenum subroutine) + { + switch (subroutine) { + case GL_VERTEX_SUBROUTINE: + return MESA_SHADER_VERTEX; + case GL_GEOMETRY_SUBROUTINE: + return MESA_SHADER_GEOMETRY; + case GL_FRAGMENT_SUBROUTINE: + return MESA_SHADER_FRAGMENT; + case GL_COMPUTE_SUBROUTINE: + return MESA_SHADER_COMPUTE; + case GL_TESS_CONTROL_SUBROUTINE: + return MESA_SHADER_TESS_CTRL; + case GL_TESS_EVALUATION_SUBROUTINE: + return MESA_SHADER_TESS_EVAL; + } +- unreachable("not reached"); ++ UNREACHABLE("not reached"); + } + + static inline GLenum + _mesa_shader_stage_to_subroutine(gl_shader_stage stage) + { + switch (stage) { + case MESA_SHADER_VERTEX: + return GL_VERTEX_SUBROUTINE; + case MESA_SHADER_GEOMETRY: + return GL_GEOMETRY_SUBROUTINE; + case MESA_SHADER_FRAGMENT: + return GL_FRAGMENT_SUBROUTINE; + case MESA_SHADER_COMPUTE: + return GL_COMPUTE_SUBROUTINE; + case MESA_SHADER_TESS_CTRL: + return GL_TESS_CONTROL_SUBROUTINE; + case MESA_SHADER_TESS_EVAL: + return GL_TESS_EVALUATION_SUBROUTINE; + case MESA_SHADER_NONE: + break; + case MESA_SHADER_KERNEL: +- unreachable("not reached"); ++ UNREACHABLE("not reached"); + break; + } +- unreachable("not reached"); ++ UNREACHABLE("not reached"); + } + + static inline GLenum + _mesa_shader_stage_to_subroutine_uniform(gl_shader_stage stage) + { + switch (stage) { + case MESA_SHADER_VERTEX: + return GL_VERTEX_SUBROUTINE_UNIFORM; + case MESA_SHADER_GEOMETRY: + return GL_GEOMETRY_SUBROUTINE_UNIFORM; + case MESA_SHADER_FRAGMENT: + return GL_FRAGMENT_SUBROUTINE_UNIFORM; + case MESA_SHADER_COMPUTE: + return GL_COMPUTE_SUBROUTINE_UNIFORM; + case MESA_SHADER_TESS_CTRL: + return GL_TESS_CONTROL_SUBROUTINE_UNIFORM; + case MESA_SHADER_TESS_EVAL: + return GL_TESS_EVALUATION_SUBROUTINE_UNIFORM; + case MESA_SHADER_NONE: + case MESA_SHADER_KERNEL: + break; + } +- unreachable("not reached"); ++ UNREACHABLE("not reached"); + } + + extern bool +diff --git a/third_party/rust/glslopt/glsl-optimizer/src/util/macros.h b/third_party/rust/glslopt/glsl-optimizer/src/util/macros.h +index fcace4e351d6..e4dfd67c8cc2 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/src/util/macros.h ++++ b/third_party/rust/glslopt/glsl-optimizer/src/util/macros.h +@@ -68,24 +68,34 @@ + } while (0) + + ++/** ++ * Unreachable macro. Useful for suppressing "control reaches end of non-void ++ * function" warnings. ++ */ + /** + * Unreachable macro. Useful for suppressing "control reaches end of non-void + * function" warnings. + */ + #if defined(HAVE___BUILTIN_UNREACHABLE) || __has_builtin(__builtin_unreachable) +-#define unreachable(str) \ ++#define UNREACHABLE(str) \ + do { \ ++ (void)"" str; /* str must be a string literal */ \ + assert(!str); \ + __builtin_unreachable(); \ + } while (0) + #elif defined (_MSC_VER) +-#define unreachable(str) \ ++#define UNREACHABLE(str) \ + do { \ ++ (void)"" str; /* str must be a string literal */ \ + assert(!str); \ + __assume(0); \ + } while (0) + #else +-#define unreachable(str) assert(!str) ++#define UNREACHABLE(str) \ ++do { \ ++ (void)"" str; /* str must be a string literal */ \ ++ assert(!str); \ ++} while (0) + #endif + + /** +@@ -190,8 +200,10 @@ do { \ + * performs no action and all member variables and base classes are + * trivially destructible themselves. + */ +-# if (defined(__clang__) && defined(__has_feature)) +-# if __has_feature(has_trivial_destructor) ++# if defined(__clang__) ++# if __has_builtin(__is_trivially_destructible) ++# define HAS_TRIVIAL_DESTRUCTOR(T) __is_trivially_destructible(T) ++# elif (defined(__has_feature) && __has_feature(has_trivial_destructor)) + # define HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T) + # endif + # elif defined(__GNUC__) +diff --git a/third_party/rust/glslopt/src/bindings.rs b/third_party/rust/glslopt/src/bindings.rs +index f4e5bebd08ba..5c1ca487d5e9 100644 +--- a/third_party/rust/glslopt/src/bindings.rs ++++ b/third_party/rust/glslopt/src/bindings.rs +@@ -1,131 +1,131 @@ +-/* automatically generated by rust-bindgen */ ++/* automatically generated by rust-bindgen 0.72.1 */ + + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct glslopt_shader { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct glslopt_ctx { + _unused: [u8; 0], + } + pub const glslopt_shader_type_kGlslOptShaderVertex: glslopt_shader_type = 0; + pub const glslopt_shader_type_kGlslOptShaderFragment: glslopt_shader_type = 1; +-pub type glslopt_shader_type = u32; ++pub type glslopt_shader_type = ::std::os::raw::c_uint; + pub const glslopt_options_kGlslOptionSkipPreprocessor: glslopt_options = 1; + pub const glslopt_options_kGlslOptionNotFullShader: glslopt_options = 2; +-pub type glslopt_options = u32; ++pub type glslopt_options = ::std::os::raw::c_uint; + pub const glslopt_target_kGlslTargetOpenGL: glslopt_target = 0; + pub const glslopt_target_kGlslTargetOpenGLES20: glslopt_target = 1; + pub const glslopt_target_kGlslTargetOpenGLES30: glslopt_target = 2; + pub const glslopt_target_kGlslTargetMetal: glslopt_target = 3; +-pub type glslopt_target = u32; ++pub type glslopt_target = ::std::os::raw::c_uint; + pub const glslopt_basic_type_kGlslTypeFloat: glslopt_basic_type = 0; + pub const glslopt_basic_type_kGlslTypeInt: glslopt_basic_type = 1; + pub const glslopt_basic_type_kGlslTypeBool: glslopt_basic_type = 2; + pub const glslopt_basic_type_kGlslTypeTex2D: glslopt_basic_type = 3; + pub const glslopt_basic_type_kGlslTypeTex3D: glslopt_basic_type = 4; + pub const glslopt_basic_type_kGlslTypeTexCube: glslopt_basic_type = 5; + pub const glslopt_basic_type_kGlslTypeTex2DShadow: glslopt_basic_type = 6; + pub const glslopt_basic_type_kGlslTypeTex2DArray: glslopt_basic_type = 7; + pub const glslopt_basic_type_kGlslTypeOther: glslopt_basic_type = 8; + pub const glslopt_basic_type_kGlslTypeCount: glslopt_basic_type = 9; +-pub type glslopt_basic_type = u32; ++pub type glslopt_basic_type = ::std::os::raw::c_uint; + pub const glslopt_precision_kGlslPrecHigh: glslopt_precision = 0; + pub const glslopt_precision_kGlslPrecMedium: glslopt_precision = 1; + pub const glslopt_precision_kGlslPrecLow: glslopt_precision = 2; + pub const glslopt_precision_kGlslPrecCount: glslopt_precision = 3; +-pub type glslopt_precision = u32; +-extern "C" { ++pub type glslopt_precision = ::std::os::raw::c_uint; ++unsafe extern "C" { + pub fn glslopt_initialize(target: glslopt_target) -> *mut glslopt_ctx; + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_cleanup(ctx: *mut glslopt_ctx); + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_set_max_unroll_iterations( + ctx: *mut glslopt_ctx, + iterations: ::std::os::raw::c_uint, + ); + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_optimize( + ctx: *mut glslopt_ctx, + type_: glslopt_shader_type, + shaderSource: *const ::std::os::raw::c_char, + options: ::std::os::raw::c_uint, + ) -> *mut glslopt_shader; + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_get_status(shader: *mut glslopt_shader) -> bool; + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_get_output(shader: *mut glslopt_shader) -> *const ::std::os::raw::c_char; + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_get_raw_output(shader: *mut glslopt_shader) -> *const ::std::os::raw::c_char; + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_get_log(shader: *mut glslopt_shader) -> *const ::std::os::raw::c_char; + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_shader_delete(shader: *mut glslopt_shader); + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_shader_get_input_count(shader: *mut glslopt_shader) -> ::std::os::raw::c_int; + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_shader_get_input_desc( + shader: *mut glslopt_shader, + index: ::std::os::raw::c_int, + outName: *mut *const ::std::os::raw::c_char, + outType: *mut glslopt_basic_type, + outPrec: *mut glslopt_precision, + outVecSize: *mut ::std::os::raw::c_int, + outMatSize: *mut ::std::os::raw::c_int, + outArraySize: *mut ::std::os::raw::c_int, + outLocation: *mut ::std::os::raw::c_int, + ); + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_shader_get_uniform_count(shader: *mut glslopt_shader) -> ::std::os::raw::c_int; + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_shader_get_uniform_total_size( + shader: *mut glslopt_shader, + ) -> ::std::os::raw::c_int; + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_shader_get_uniform_desc( + shader: *mut glslopt_shader, + index: ::std::os::raw::c_int, + outName: *mut *const ::std::os::raw::c_char, + outType: *mut glslopt_basic_type, + outPrec: *mut glslopt_precision, + outVecSize: *mut ::std::os::raw::c_int, + outMatSize: *mut ::std::os::raw::c_int, + outArraySize: *mut ::std::os::raw::c_int, + outLocation: *mut ::std::os::raw::c_int, + ); + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_shader_get_texture_count(shader: *mut glslopt_shader) -> ::std::os::raw::c_int; + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_shader_get_texture_desc( + shader: *mut glslopt_shader, + index: ::std::os::raw::c_int, + outName: *mut *const ::std::os::raw::c_char, + outType: *mut glslopt_basic_type, + outPrec: *mut glslopt_precision, + outVecSize: *mut ::std::os::raw::c_int, + outMatSize: *mut ::std::os::raw::c_int, + outArraySize: *mut ::std::os::raw::c_int, + outLocation: *mut ::std::os::raw::c_int, + ); + } +-extern "C" { ++unsafe extern "C" { + pub fn glslopt_shader_get_stats( + shader: *mut glslopt_shader, + approxMath: *mut ::std::os::raw::c_int, diff --git a/SPECS/firefox/0002-add-GetSystemProxyDirect-to-libproxy-path.patch b/SPECS/firefox/0002-add-GetSystemProxyDirect-to-libproxy-path.patch new file mode 100644 index 0000000000..5090f16d42 --- /dev/null +++ b/SPECS/firefox/0002-add-GetSystemProxyDirect-to-libproxy-path.patch @@ -0,0 +1,42 @@ +From c4548a6d9281709b79d053cfae49b70d92eb41e2 Mon Sep 17 00:00:00 2001 +From: Christoph Moench-Tegeder +Date: Mon, 18 May 2026 08:01:32 +0000 +Subject: [PATCH] Bug 2040125 - add GetSystemProxyDirect() to libproxy path + r=valentin,necko-reviewers + +In bmo #2028356 a "fast-path to skip proxy resolution[...]" was added, +but the required method GetSystemProxyDirect() was not added for +libproxy-enabled builds (all other cases - general Unix without +libproxy, OSX, Windows - got that function). + +This makes a "--enable-libproxy" build (MOZ_ENABLE_LIBPROXY) fail at +startup, as the symbol for nsUnixSystemProxySettings::GetSystemProxyDirect() +does not resolve. + +This adds GetSystemProxyDirect() to the MOZ_ENABLE_LIBPROXY case - it's +trivial, as we cannot know what libproxy will return for a specific URL, +thus the fast-path does not apply and we can just return "false". + +Differential Revision: https://phabricator.services.mozilla.com/D300937 +--- + toolkit/system/unixproxy/nsLibProxySettings.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/toolkit/system/unixproxy/nsLibProxySettings.cpp b/toolkit/system/unixproxy/nsLibProxySettings.cpp +index 3de1b7ce9b8fc..8b063d446c1e3 100644 +--- a/toolkit/system/unixproxy/nsLibProxySettings.cpp ++++ b/toolkit/system/unixproxy/nsLibProxySettings.cpp +@@ -111,6 +111,13 @@ nsUnixSystemProxySettings::GetSystemWPADSetting(bool* aSystemWPADSetting) { + return NS_OK; + } + ++// we do not know if libproxy would return DIRECT or PROXY ++NS_IMETHODIMP ++nsUnixSystemProxySettings::GetSystemProxyDirect(bool* aResult) { ++ *aResult = false; ++ return NS_OK; ++} ++ + NS_IMPL_COMPONENT_FACTORY(nsUnixSystemProxySettings) { + return do_AddRef(new nsUnixSystemProxySettings()).downcast(); + } diff --git a/SPECS/firefox/2000-riscv64-Use-long-tail-jump-for-xptcall-stubs.patch b/SPECS/firefox/2000-riscv64-Use-long-tail-jump-for-xptcall-stubs.patch new file mode 100644 index 0000000000..ccd70d3fc2 --- /dev/null +++ b/SPECS/firefox/2000-riscv64-Use-long-tail-jump-for-xptcall-stubs.patch @@ -0,0 +1,40 @@ +From 1444cc51c0249652a4998b8ee4ea084983b4bfb6 Mon Sep 17 00:00:00 2001 +From: misaka00251 +Date: Sun, 17 May 2026 11:32:17 +0800 +Subject: [PATCH] riscv64: Use long tail jump for xptcall stubs + +The riscv64 xptcall stubs currently jump to SharedStub with a plain +`j SharedStub`. This emits an R_RISCV_JAL relocation, whose range is +limited to +/- 1 MiB. + +When linking large optimized libxul builds, especially with LTO enabled, +the generated StubN functions may be placed too far away from SharedStub. +This causes lld to fail with relocation errors such as: + + relocation R_RISCV_JAL out of range: ... references SharedStub + +Use `tail SharedStub` instead. This preserves the tail-call semantics of +the original jump while allowing the assembler/linker to generate a +relaxable long branch sequence when needed. + +Signed-off-by: misaka00251 +--- + xpcom/reflect/xptcall/md/unix/xptcstubs_riscv64.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xpcom/reflect/xptcall/md/unix/xptcstubs_riscv64.cpp b/xpcom/reflect/xptcall/md/unix/xptcstubs_riscv64.cpp +index 17c0789eff..3330b34e8d 100644 +--- a/xpcom/reflect/xptcall/md/unix/xptcstubs_riscv64.cpp ++++ b/xpcom/reflect/xptcall/md/unix/xptcstubs_riscv64.cpp +@@ -139,7 +139,7 @@ extern "C" nsresult ATTRIBUTE_USED PrepareAndDispatch(nsXPTCStubBase* self, + ".err \"stub number "#n" >= 1000 not yet supported\"\n" \ + ".endif \n\t" \ + "li t0, "#n" \n\t" \ +- "j SharedStub \n" \ ++ "tail SharedStub \n" \ + ".if "#n" < 10\n\t" \ + ".size _ZN14nsXPTCStubBase5Stub"#n"Ev,.-_ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \ + ".elseif "#n" < 100\n\t" \ +-- +2.54.0 + diff --git a/SPECS/firefox/2001-riscv64-enable-gles-rendering.patch b/SPECS/firefox/2001-riscv64-enable-gles-rendering.patch new file mode 100644 index 0000000000..aea8e9c29e --- /dev/null +++ b/SPECS/firefox/2001-riscv64-enable-gles-rendering.patch @@ -0,0 +1,18 @@ +Description: allow-riscv64-usegles +Author: Han Gao + +Last-Update: 2024-06-20 + +Index: firefox-140.0.4/toolkit/xre/glxtest/glxtest.cpp +=================================================================== +--- firefox-140.0.4.orig/toolkit/xre/glxtest/glxtest.cpp ++++ firefox-140.0.4/toolkit/xre/glxtest/glxtest.cpp +@@ -438,7 +438,7 @@ static bool get_egl_gl_status(EGLDisplay + PFNGLGETSTRING glGetString = + cast(eglGetProcAddress("glGetString")); + +-#if defined(__arm__) || defined(__aarch64__) ++#if defined(__arm__) || defined(__aarch64__) || (defined(__riscv) && __riscv_xlen == 64) + bool useGles = true; + #else + bool useGles = false; diff --git a/SPECS/firefox/2002-riscv64-libyuv-add-RVV-sources-to-build.patch b/SPECS/firefox/2002-riscv64-libyuv-add-RVV-sources-to-build.patch new file mode 100644 index 0000000000..d8a3685e8b --- /dev/null +++ b/SPECS/firefox/2002-riscv64-libyuv-add-RVV-sources-to-build.patch @@ -0,0 +1,40 @@ +From: Sun Yuechi +Date: Wed, 21 May 2026 00:00:00 +0800 +Subject: [PATCH] riscv64: libyuv: add row_rvv.cc / scale_rvv.cc to gypi + +Without these, linking libxul on riscv64 with -march including the V +extension fails with undefined references to *Row_RVV symbols, e.g. + + ld.lld: error: undefined hidden symbol: J400ToARGBRow_RVV + >>> referenced by yuv_convert.cpp:333 + +Both files are self-guarded with __riscv_vector, so listing them +unconditionally alongside the LoongArch lsx/lasx entries is safe for +other architectures. + +Signed-off-by: Sun Yuechi +--- + media/libyuv/libyuv/libyuv.gypi | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/media/libyuv/libyuv/libyuv.gypi b/media/libyuv/libyuv/libyuv.gypi +--- a/media/libyuv/libyuv/libyuv.gypi ++++ b/media/libyuv/libyuv/libyuv.gypi +@@ -86,6 +86,7 @@ + 'source/row_gcc.cc', + 'source/row_lasx.cc', + 'source/row_lsx.cc', ++ 'source/row_rvv.cc', + 'source/row_win.cc', + 'source/scale.cc', + 'source/scale_any.cc', +@@ -94,6 +95,7 @@ + 'source/scale_gcc.cc', + 'source/scale_lsx.cc', + 'source/scale_rgb.cc', ++ 'source/scale_rvv.cc', + 'source/scale_uv.cc', + 'source/scale_win.cc', + 'source/video_common.cc', +-- +2.47.0 diff --git a/SPECS/firefox/distribution.ini.in b/SPECS/firefox/distribution.ini.in new file mode 100644 index 0000000000..e29298fb18 --- /dev/null +++ b/SPECS/firefox/distribution.ini.in @@ -0,0 +1,9 @@ +[Global] +id=__ID__ +version=1.0 +about=Mozilla Firefox for __NAME__ + +[Preferences] +app.distributor=__ID__ +app.distributor.channel=__ID__ +app.partner.openruyi=__ID__ diff --git a/SPECS/firefox/firefox.desktop b/SPECS/firefox/firefox.desktop new file mode 100644 index 0000000000..7958f580c2 --- /dev/null +++ b/SPECS/firefox/firefox.desktop @@ -0,0 +1,334 @@ +[Desktop Entry] +Version=1.0 +Name=Firefox +GenericName=Web Browser +GenericName[af]=Webrondblaaier +GenericName[ar]=متصفّح وِب +GenericName[be]=Вэб-браўзер +GenericName[bg]=Уеб четец +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[da]=Webbrowser +GenericName[de]=Web-Browser +GenericName[el]=Περιηγητής ιστοσελίδων +GenericName[eo]=Retumilo +GenericName[es]=Navegador web +GenericName[et]=Veebisirvik +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=Verkkoselain +GenericName[fr]=Navigateur Web +GenericName[ga]=Brabhsálaí Gréasáin +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[id]=Peramban Web +GenericName[it]=Navigatore web +GenericName[ja]=Web ブラウザ +GenericName[ka]=ბრაუზერი +GenericName[kab]=Sekker iminig n web +GenericName[km]=កម្មវិធី​រុករក​បណ្ដាញ​ +GenericName[ko]=웹 브라우저 +GenericName[lt]=Žiniatinklio naršyklė +GenericName[mr]=वेब ब्राऊझर +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pa]=ਵੈੱਬ ਬਰਾਊਜ਼ਰ +GenericName[pl]=Przeglądarka internetowa +GenericName[pt]=Navegador de internet +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator de web +GenericName[ru]=Веб-браузер +GenericName[sk]=Webový prehliadač +GenericName[sv]=Webbläsare +GenericName[th]=เว็บเบราว์เซอร์ +GenericName[tr]=Web Tarayıcı +GenericName[uk]=Навігатор Тенет +GenericName[wa]=Betchteu waibe +GenericName[xh]=Isikhangeli Sothungelwano +GenericName[zh_CN]=网页浏览器 +GenericName[zh_TW]=網頁瀏覽器 +Comment=Browse the Web +Comment[ca]=Navegueu per la xarxa +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Gå på nettet +Comment[de]=Im Internet surfen +Comment[eo]=Retumi +Comment[es]=Navegue por la web +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Navigue sur Internet +Comment[ga]=Brabhsáil ar an Idirlíon +Comment[gl]=Navegue pola web +Comment[he]=גלישה ברשת +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=Web を閲覧します +Comment[ka]=იმუშავეთ ინტერნეტში +Comment[kab]=Inig deg Internet +Comment[ko]=웹을 돌아 다닙니다 +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ru]=Просмотр веб-страниц +Comment[sk]=Prehľadávanie webu +Comment[sv]=Surfa på webben +Comment[th]=ท่องเว็บ +Comment[tr]=Web'de gezinin +Comment[uk]=Перегляд веб-сторінок +Exec=firefox %u +Icon=firefox +Terminal=false +Type=Application +MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; +StartupNotify=true +Categories=Network;WebBrowser; +Keywords=web;browser;internet; +Actions=new-window;new-private-window;profile-manager-window; + +[Desktop Action new-window] +Name=Open a New Window +Name[ach]=Dirica manyen +Name[af]=Nuwe venster +Name[an]=Nueva finestra +Name[ar]=نافذة جديدة +Name[as]=নতুন উইন্ডো +Name[ast]=Ventana nueva +Name[az]=Yeni Pəncərə +Name[be]=Новае акно +Name[bg]=Нов прозорец +Name[bn_BD]=নতুন উইন্ডো (N) +Name[bn_IN]=নতুন উইন্ডো +Name[br]=Prenestr nevez +Name[brx]=गोदान उइन्ड'(N) +Name[bs]=Novi prozor +Name[ca]=Finestra nova +Name[cak]=K'ak'a' tzuwäch +Name[cs]=Nové okno +Name[cy]=Ffenestr Newydd +Name[da]=Nyt vindue +Name[de]=Neues Fenster +Name[dsb]=Nowe wokno +Name[el]=Νέο παράθυρο +Name[en_GB]=New Window +Name[en_US]=New Window +Name[en_ZA]=New Window +Name[eo]=Nova fenestro +Name[es_AR]=Nueva ventana +Name[es_CL]=Nueva ventana +Name[es_ES]=Nueva ventana +Name[es_MX]=Nueva ventana +Name[et]=Uus aken +Name[eu]=Leiho berria +Name[fa]=پنجره جدید‌ +Name[ff]=Henorde Hesere +Name[fi]=Uusi ikkuna +Name[fr]=Nouvelle fenêtre +Name[fy_NL]=Nij finster +Name[ga_IE]=Fuinneog Nua +Name[gd]=Uinneag ùr +Name[gl]=Nova xanela +Name[gn]=Ovetã pyahu +Name[gu_IN]=નવી વિન્ડો +Name[he]=חלון חדש +Name[hi_IN]=नया विंडो +Name[hr]=Novi prozor +Name[hsb]=Nowe wokno +Name[hu]=Új ablak +Name[hy_AM]=Նոր Պատուհան +Name[id]=Jendela Baru +Name[is]=Nýr gluggi +Name[it]=Nuova finestra +Name[ja]=新しいウィンドウ +Name[ja_JP-mac]=新規ウインドウ +Name[ka]=ახალი ფანჯარა +Name[kk]=Жаңа терезе +Name[km]=បង្អួច​​​ថ្មី +Name[kn]=ಹೊಸ ಕಿಟಕಿ +Name[ko]=새 창 +Name[kok]=नवें जनेल +Name[ks]=نئئ وِنڈو +Name[lij]=Neuvo barcon +Name[lo]=ຫນ້າຕ່າງໃຫມ່ +Name[lt]=Naujas langas +Name[ltg]=Jauns lūgs +Name[lv]=Jauns logs +Name[mai]=नव विंडो +Name[mk]=Нов прозорец +Name[ml]=പുതിയ ജാലകം +Name[mr]=नवीन पटल +Name[ms]=Tetingkap Baru +Name[my]=ဝင်းဒိုးအသစ် +Name[nb_NO]=Nytt vindu +Name[ne_NP]=नयाँ सञ्झ्याल +Name[nl]=Nieuw venster +Name[nn_NO]=Nytt vindauge +Name[or]=ନୂତନ ୱିଣ୍ଡୋ +Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ +Name[pl]=Nowe okno +Name[pt_BR]=Nova janela +Name[pt_PT]=Nova janela +Name[rm]=Nova fanestra +Name[ro]=Fereastră nouă +Name[ru]=Новое окно +Name[sat]=नावा विंडो (N) +Name[si]=නව කවුළුවක් +Name[sk]=Nové okno +Name[sl]=Novo okno +Name[son]=Zanfun taaga +Name[sq]=Dritare e Re +Name[sr]=Нови прозор +Name[sv_SE]=Nytt fönster +Name[ta]=புதிய சாளரம் +Name[te]=కొత్త విండో +Name[th]=หน้าต่างใหม่ +Name[tr]=Yeni pencere +Name[tsz]=Eraatarakua jimpani +Name[uk]=Нове вікно +Name[ur]=نیا دریچہ +Name[uz]=Yangi oyna +Name[vi]=Cửa sổ mới +Name[wo]=Palanteer bu bees +Name[xh]=Ifestile entsha +Name[zh_CN]=新建窗口 +Name[zh_TW]=開新視窗 +Exec=firefox --new-window %u + +[Desktop Action new-private-window] +Name=Open a New Private Window +Name[ach]=Dirica manyen me mung +Name[af]=Nuwe privaatvenster +Name[an]=Nueva finestra privada +Name[ar]=نافذة خاصة جديدة +Name[as]=নতুন ব্যক্তিগত উইন্ডো +Name[ast]=Ventana privada nueva +Name[az]=Yeni Məxfi Pəncərə +Name[be]=Новае акно адасаблення +Name[bg]=Нов прозорец за поверително сърфиране +Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো +Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো +Name[br]=Prenestr merdeiñ prevez nevez +Name[brx]=गोदान प्राइभेट उइन्ड' +Name[bs]=Novi privatni prozor +Name[ca]=Finestra privada nova +Name[cak]=K'ak'a' ichinan tzuwäch +Name[cs]=Nové anonymní okno +Name[cy]=Ffenestr Breifat Newydd +Name[da]=Nyt privat vindue +Name[de]=Neues privates Fenster +Name[dsb]=Nowe priwatne wokno +Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης +Name[en_GB]=New Private Window +Name[en_US]=New Private Window +Name[en_ZA]=New Private Window +Name[eo]=Nova privata fenestro +Name[es_AR]=Nueva ventana privada +Name[es_CL]=Nueva ventana privada +Name[es_ES]=Nueva ventana privada +Name[es_MX]=Nueva ventana privada +Name[et]=Uus privaatne aken +Name[eu]=Leiho pribatu berria +Name[fa]=پنجره ناشناس جدید +Name[ff]=Henorde Suturo Hesere +Name[fi]=Uusi yksityinen ikkuna +Name[fr]=Nouvelle fenêtre de navigation privée +Name[fy_NL]=Nij priveefinster +Name[ga_IE]=Fuinneog Nua Phríobháideach +Name[gd]=Uinneag phrìobhaideach ùr +Name[gl]=Nova xanela privada +Name[gn]=Ovetã ñemi pyahu +Name[gu_IN]=નવી ખાનગી વિન્ડો +Name[he]=חלון פרטי חדש +Name[hi_IN]=नयी निजी विंडो +Name[hr]=Novi privatni prozor +Name[hsb]=Nowe priwatne wokno +Name[hu]=Új privát ablak +Name[hy_AM]=Սկսել Գաղտնի դիտարկում +Name[id]=Jendela Mode Pribadi Baru +Name[is]=Nýr huliðsgluggi +Name[it]=Nuova finestra anonima +Name[ja]=新しいプライベートウィンドウ +Name[ja_JP-mac]=新規プライベートウインドウ +Name[ka]=ახალი პირადი ფანჯარა +Name[kk]=Жаңа жекелік терезе +Name[km]=បង្អួច​ឯកជន​ថ្មី +Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ +Name[ko]=새 사생활 보호 모드 +Name[kok]=नवो खाजगी विंडो +Name[ks]=نْو پرایوٹ وینڈو& +Name[lij]=Neuvo barcon privou +Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່ +Name[lt]=Naujas privataus naršymo langas +Name[ltg]=Jauns privatais lūgs +Name[lv]=Jauns privātais logs +Name[mai]=नया निज विंडो (W) +Name[mk]=Нов приватен прозорец +Name[ml]=പുതിയ സ്വകാര്യ ജാലകം +Name[mr]=नवीन वैयक्तिक पटल +Name[ms]=Tetingkap Persendirian Baharu +Name[my]=New Private Window +Name[nb_NO]=Nytt privat vindu +Name[ne_NP]=नयाँ निजी सञ्झ्याल +Name[nl]=Nieuw privévenster +Name[nn_NO]=Nytt privat vindauge +Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ +Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ +Name[pl]=Nowe okno prywatne +Name[pt_BR]=Nova janela privativa +Name[pt_PT]=Nova janela privada +Name[rm]=Nova fanestra privata +Name[ro]=Fereastră privată nouă +Name[ru]=Новое приватное окно +Name[sat]=नावा निजेराक् विंडो (W ) +Name[si]=නව පුද්ගලික කවුළුව (W) +Name[sk]=Nové okno v režime Súkromné prehliadanie +Name[sl]=Novo zasebno okno +Name[son]=Sutura zanfun taaga +Name[sq]=Dritare e Re Private +Name[sr]=Нови приватан прозор +Name[sv_SE]=Nytt privat fönster +Name[ta]=புதிய தனிப்பட்ட சாளரம் +Name[te]=కొత్త ఆంతరంగిక విండో +Name[th]=หน้าต่างส่วนตัวใหม่ +Name[tr]=Yeni gizli pencere +Name[tsz]=Juchiiti eraatarakua jimpani +Name[uk]=Приватне вікно +Name[ur]=نیا نجی دریچہ +Name[uz]=Yangi maxfiy oyna +Name[vi]=Cửa sổ riêng tư mới +Name[wo]=Panlanteeru biir bu bees +Name[xh]=Ifestile yangasese entsha +Name[zh_CN]=新建隐私浏览窗口 +Name[zh_TW]=新增隱私視窗 +Exec=firefox --private-window %u + +[Desktop Action profile-manager-window] +Name=Profile Manager +Name[ca]=Gestor de perfils +Name[cs]=Správa profilů +Name[da]=Håndtering af profiler +Name[de]=Profilmanager +Name[eo]=Profila Mastrumilo +Name[es]=Gestor de perfiles +Name[fr]=Gestionnaire de profil +Name[ga]=Bainisteoir Cuntas +Name[gl]=Xestor de perfís +Name[he]=ניהול פרופילים +Name[ja]=プロファイルマネージャ +Name[ka]=პროფილების მმართველი +Name[kab]=Amsefrak n umaɣnu +Name[nb]=Profilbehandler +Name[pt_BR]=Gerenciador de Perfil +Name[ru]=Менеджер профилей +Name[sk]=Správca profilov +Name[sv]=Profilhanterare +Name[th]=ที่จัดการโปรไฟล์ +Name[tr]=Profil Yöneticisi +Name[uk]=Менеджер профілів +Exec=firefox --ProfileManager diff --git a/SPECS/firefox/firefox.js b/SPECS/firefox/firefox.js new file mode 100644 index 0000000000..489bd66090 --- /dev/null +++ b/SPECS/firefox/firefox.js @@ -0,0 +1,19 @@ +pref("app.update.auto", false); +pref("app.update.enabled", false); +pref("app.update.autoInstallEnabled", false); +pref("browser.policies.perUserDir", true); + +// Use LANG environment variable to choose locale +pref("intl.locale.requested", ""); + +// Disable DoH by default +pref("network.trr.mode", 5); + +// Enable GNOME Shell search provider +pref("browser.gnome-search-provider.enabled", true); + +// Use system-provided dictionaries +pref("spellchecker.dictionary_path", "/usr/share/hunspell"); + +// Branding +pref("browser.startup.homepage", "data:text/plain,browser.startup.homepage=https://openruyi.cn/"); diff --git a/SPECS/firefox/firefox.spec b/SPECS/firefox/firefox.spec new file mode 100644 index 0000000000..44baf01d1e --- /dev/null +++ b/SPECS/firefox/firefox.spec @@ -0,0 +1,584 @@ +# SPDX-FileCopyrightText: (C) 2026 Institute of Software, Chinese Academy of Sciences (ISCAS) +# SPDX-FileCopyrightText: (C) 2026 openRuyi Project Contributors +# SPDX-FileContributor: misaka00251 +# +# SPDX-License-Identifier: MulanPSL-2.0 + +%bcond fdk_aac 0 + +# TODO: Official branding is tricky +# https://www.mozilla.org/en-US/foundation/trademarks/policy/ +%bcond official_branding 0 + +Name: firefox +Version: 151.0.1 +Release: %autorelease +Summary: Free web browser backed by Mozilla +License: MPL-2.0 +URL: https://www.firefox.com +# https://bugzilla.mozilla.org/show_bug.cgi?id=1863519 +VCS: git:https://github.com/mozilla-firefox/firefox +#!RemoteAsset: sha256:a80ae34238cbf83a507274bc25d215ccac00934ddf26190b02a34fdce60584c0 +Source0: https://ftp.mozilla.org/pub/firefox/releases/%{version}/source/%{name}-%{version}.source.tar.xz +# We need the language packs +#!RemoteAsset: sha256:66973f1bf9ca95b172de1546fbff10d41dd7e61b37143474f29565bd35716371 +Source1: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ach.xpi +#!RemoteAsset: sha256:1ff9a8a7adb0e5f41ebe96bc0d770aad4045fdd6be8ff47beb42b916e0097254 +Source2: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/af.xpi +#!RemoteAsset: sha256:0f58d76567446ab4873aa4d1a7c22c48d4c731ffb4147abfcb5f6997fa93dcf4 +Source3: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/an.xpi +#!RemoteAsset: sha256:2df5cb2ca504148216eb6374a9c115e5005c5c1dbb01e09794f73cf122562f9a +Source4: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ar.xpi +#!RemoteAsset: sha256:11fe6559b99b8033babde9b923467e9188ee8c7be11a4ab666eb35e822a8bc80 +Source5: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ast.xpi +#!RemoteAsset: sha256:1d8090f4a415365e8da14da102ee1ee1c53841ffa45eb79b5523f59ec18234fc +Source6: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/az.xpi +#!RemoteAsset: sha256:f8971202e653f9be33d8c17bad6bb9f34f88bf4d3eff666ccc25267e46619a54 +Source7: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/be.xpi +#!RemoteAsset: sha256:ee712030f97759436eca7e60861758246ed1bc1f0a15183c189ec3086b78db65 +Source8: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/bg.xpi +#!RemoteAsset: sha256:6d5be91493bbfaaee978996acbd6de9b872f0fb96942b935bf8d02182863d6e3 +Source9: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/bn.xpi +#!RemoteAsset: sha256:9d991064374708b51bd18eb39e3d76562efbdd095f4b39c6450903cf9a0ad350 +Source10: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/br.xpi +#!RemoteAsset: sha256:788f3986d55f21f774a07761c15d99dcf942b3d5ac2bf034dea6d8342080bef2 +Source11: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/bs.xpi +#!RemoteAsset: sha256:c5a938a6335c81154d251ea922a06b7bd41d64727305ef76a7a800b100495183 +Source12: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ca-valencia.xpi +#!RemoteAsset: sha256:dfe102323dd7df3db10e70945c1ee6efcd12bb0b539cfcda076163fb169b37c2 +Source13: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ca.xpi +#!RemoteAsset: sha256:25aef56bf5aad7078a987472bdbc185ed356a60bcabbf1af274dc03baed98982 +Source14: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/cak.xpi +#!RemoteAsset: sha256:d5e9ce629381dccf343bd7d9c8f0eb147eab236ccbabef9b8a1d99298ec84e3c +Source15: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/cs.xpi +#!RemoteAsset: sha256:460dfb45c439319cfd981a9cf50d55cf9769c31ee16d3adc9954e541148d7736 +Source16: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/cy.xpi +#!RemoteAsset: sha256:fbaf6632826ba62b05297460f01c2e82920763c14d6c282c6bdfb7c32dcb113c +Source17: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/da.xpi +#!RemoteAsset: sha256:79b922a528fd874d60d83ecec37dff00a1e1081fb3fa7e5e489e70bd86745567 +Source18: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/de.xpi +#!RemoteAsset: sha256:6efda4d8ce01c955aa61253c5d6c6a87cfab689b6286cceaf2a6de03562bbb7e +Source19: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/dsb.xpi +#!RemoteAsset: sha256:1d863e82a8878e5196bbc13866abaa8586cb6b8036ed3161fece9768a4552647 +Source20: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/el.xpi +#!RemoteAsset: sha256:caccc98302ca6ff6bbdc26efe5e65297c13572869dfb7b1c5a69a41f8c8d9d2d +Source21: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/en-CA.xpi +#!RemoteAsset: sha256:4dec3e12c14e5b988816cb67a6d7b3dde306a5cce7d12ce20ebc60a154edfd1e +Source22: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/en-GB.xpi +#!RemoteAsset: sha256:6497590bfde1618e349ee4e93d219ab3e03c3669075b204cb30c6b8df8c62be3 +Source23: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/en-US.xpi +#!RemoteAsset: sha256:eae0e9c330d56b95c27f597e686b49240177fd77563a3bd8a3198b3460be88fc +Source24: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/eo.xpi +#!RemoteAsset: sha256:830e57aa812f573a3a45b4772dcaf839479b41c8fb2c5fdbd884db3a4682114a +Source25: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/es-AR.xpi +#!RemoteAsset: sha256:e39077f5d57d7053878790e4236fe220d8101743d9f00a603bfab6513afb8149 +Source26: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/es-CL.xpi +#!RemoteAsset: sha256:ed36e9ea33d8765b753f47fef9588d711e842fb5ff840531c3a66d5bfbfc1b02 +Source27: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/es-ES.xpi +#!RemoteAsset: sha256:a1a7802d46dbd3ba42f14fa4bda657f24675cda7ad4f0f975391cbfc69bf8069 +Source28: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/es-MX.xpi +#!RemoteAsset: sha256:6c533ced3685f8bc46ca286386b9032f7dc894d74f191646437e7326eb67f697 +Source29: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/et.xpi +#!RemoteAsset: sha256:4dca40ba448cf1dc4f2e75e277848cdcc26e6305fda444cedf77428d15cdc2a8 +Source30: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/eu.xpi +#!RemoteAsset: sha256:6a38979a7e54260888ee291d0d55ee9fe85a2b3992074942008932b099dd6281 +Source31: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/fa.xpi +#!RemoteAsset: sha256:95ebbc560af7d3d91c768a27df763a010d18261404b52c5727e18e371faeac3a +Source32: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ff.xpi +#!RemoteAsset: sha256:0e1b0ce1e51ec1d4df6cb09e66cc882bb98da1005b2f5bbf0a02105325323bf6 +Source33: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/fi.xpi +#!RemoteAsset: sha256:3252258e080cdfccf248187850dc520988cdbb5c5af6d08c7b7590cb77f15c67 +Source34: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/fr.xpi +#!RemoteAsset: sha256:e7128a0258c1007a16e9d0333d444fa5b4aff2069b50bff3e99404b93152e473 +Source35: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/fur.xpi +#!RemoteAsset: sha256:7e8a7ad4c4edd57bb5a21f469fa20564445ce8e547b56d1ea42a6e6a5e8f0db9 +Source36: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/fy-NL.xpi +#!RemoteAsset: sha256:ec236b4b759f243d01b17b1596c31f9a2cd44cf537e4d1a84211b032f3c4d9d6 +Source37: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ga-IE.xpi +#!RemoteAsset: sha256:ea1063c8bf067cc39d53ccb250f4865325f597abf8c48125cf463df0ec8b9459 +Source38: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/gd.xpi +#!RemoteAsset: sha256:c7d1366613cb3255e72202ca0592631d6ff2df11eac5b744a4211a5fe9bf6d36 +Source39: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/gl.xpi +#!RemoteAsset: sha256:ca34edae1f8ee76d729d240a00b1690433823d117a504ff2253bc2f4e5317c9d +Source40: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/gn.xpi +#!RemoteAsset: sha256:0c7b92ba1a2a4efdd76a7726977d5bb37acd0c60eeb5d367fd6a5bd4ac16a874 +Source41: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/gu-IN.xpi +#!RemoteAsset: sha256:03c5dc7938eaff5d277b7870cd26f25b8329ba001612e0a4fc2ff8456f1fd79d +Source42: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/he.xpi +#!RemoteAsset: sha256:15922e4400b7574156269cf3866c120818e29e12bb2346506485ebde9cd53167 +Source43: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/hi-IN.xpi +#!RemoteAsset: sha256:7ec003fff509f89424b03fc3f70776cf8082bc6ac5cec92eb888ee66a6397c29 +Source44: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/hr.xpi +#!RemoteAsset: sha256:e36f845e4efe024da8db9399fbed777c506bbe96a10d8affad499aa0cb5f7b4d +Source45: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/hsb.xpi +#!RemoteAsset: sha256:794b77676b2c43ea0c36d8dce1095d8ac37266441ed8815e4a4bfbf91c02de38 +Source46: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/hu.xpi +#!RemoteAsset: sha256:4e35b4e45abda9cabf364971496ac30c3eeb17c76851d8f8e6c7dbda27cacadf +Source47: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/hy-AM.xpi +#!RemoteAsset: sha256:5a3316047b9d438c4b5fb0650d2cc9ee118f855474e988eea0cee86144fb2b11 +Source48: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ia.xpi +#!RemoteAsset: sha256:89dee4e368224f2a943c680f03b9cc413be75f596a0d7a676c63e01f6ce62704 +Source49: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/id.xpi +#!RemoteAsset: sha256:c2408d11c109de20453a22e6603202b6df4aa54e7ea4f58ebffae60968edfa93 +Source50: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/is.xpi +#!RemoteAsset: sha256:cacb268bac41c7116f57a695612d6f5edb1906cc4394f68888db64ff1a727e5d +Source51: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/it.xpi +#!RemoteAsset: sha256:847f5857e6e7e72d352dfda02853ccec82fd252ebfd0529659859d9bbb6ced23 +Source52: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ja.xpi +#!RemoteAsset: sha256:cb3d509a6386112a71ca8ba6a5748a4c9a4e3d6aca284b39f483889648774385 +Source53: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ka.xpi +#!RemoteAsset: sha256:9b51de2b015da5af4adceff01490dc83a158e64626d219a9a527d1741d1373e6 +Source54: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/kab.xpi +#!RemoteAsset: sha256:532675c7abc5833a7e0f4a1f08fdaa191a357b37bf5694c20879ea017750646d +Source55: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/kk.xpi +#!RemoteAsset: sha256:ce9f3200102ee6d4a567999af65f34767d11d6de20a2f63633f1ec9069893132 +Source56: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/km.xpi +#!RemoteAsset: sha256:0d96562fbe4a7033387f3819e77713c82e7e00296a09d6d971b4cd88ec76a0a8 +Source57: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/kn.xpi +#!RemoteAsset: sha256:376a75fa4992b0fbd222af1f0d4379551bdf099a56ff7df54681bc15c1146873 +Source58: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ko.xpi +#!RemoteAsset: sha256:9d64e8244b5acf43248429881793ed50f6b666765a73099b8635e5eefecae087 +Source59: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/lij.xpi +#!RemoteAsset: sha256:759d1809a88920b0203e5d3f0000235b0f63c5758946e1737d6e49be6122998e +Source60: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/lt.xpi +#!RemoteAsset: sha256:4dce8ce5f1f708788ccd23f75220ba631ef013edb6ff5ec15fa2ea3a5db0ccb6 +Source61: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/lv.xpi +#!RemoteAsset: sha256:3d1bba718bf77169dd2ed7faf68183f69f8b1d96df3e60d7d3d9a4e8b15cd773 +Source62: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/mk.xpi +#!RemoteAsset: sha256:585ed52f67094db1263848472207af0075b9d03a3f4ad74878d953c1efd6b954 +Source63: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/mr.xpi +#!RemoteAsset: sha256:8ee068794dc9156f1c749ff1ca5120efc187ecb51e80799baf9f0b717cb89ffa +Source64: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ms.xpi +#!RemoteAsset: sha256:20ec6cdf18d8a58d0132f21e53434c7cd003f6cf5f38b383a6434df8c030bfd0 +Source65: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/my.xpi +#!RemoteAsset: sha256:0a7a5e43679cf6fae2924cf5e7527428752c872c8dbee80bccd724d4b94f37c0 +Source66: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/nb-NO.xpi +#!RemoteAsset: sha256:db9543180fa5a38296196eb812cc951e1c1f83cc82f2a478c6f2c6bbe30f2e64 +Source67: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ne-NP.xpi +#!RemoteAsset: sha256:1e7882e62f5827c5879d70d473ec57798289f4f30adea96025ae1cf867a361a9 +Source68: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/nl.xpi +#!RemoteAsset: sha256:5492d0413dbe7fd74e61ff8ca47fe0f6359f7cbddb34ec6a4663fae9a9069adf +Source69: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/nn-NO.xpi +#!RemoteAsset: sha256:2fde08dde07fdd472ede2d0efd580c4d4274ff05dc127f8aa874286635bff9d8 +Source70: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/oc.xpi +#!RemoteAsset: sha256:8b2c6b8ec1b0065415b1786473a5e798de4143d978db0126a97e8943a8b5ddd4 +Source71: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/pa-IN.xpi +#!RemoteAsset: sha256:2d81d3784c86935767b54f8bc3dbc4add054721292ea5870982ed5921b0e1abb +Source72: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/pl.xpi +#!RemoteAsset: sha256:ec279478a88a060023b03a88155ecdf2dbeffce43cfb82f4b9f59489311838e7 +Source73: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/pt-BR.xpi +#!RemoteAsset: sha256:074d224d1c24d31371ca52b9c3900c5820b26787eef7692471e3beb9dcb9dfc4 +Source74: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/pt-PT.xpi +#!RemoteAsset: sha256:c6903e92f412512eac5c13963c5ca695890b03009080e0676a2b6e11a77a7edb +Source75: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/rm.xpi +#!RemoteAsset: sha256:4f4490c55a7be31a52a9e8eb0b730d94e46a35a9359daf13b41f0e38c3c49c0e +Source76: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ro.xpi +#!RemoteAsset: sha256:7eec734a0bd1c9a633f9f9d7006595523c8e4fac17afb3d3094a1409c2b8dc36 +Source77: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ru.xpi +#!RemoteAsset: sha256:71fe4c0b80e0726623a7e4ee5c4b9bc4145aa7043005c7bc2cfe8c4116488363 +Source78: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/sat.xpi +#!RemoteAsset: sha256:79a4b93e16d9272512474c1f426cd72a683e5c412059cd0eb49751959c7ecc59 +Source79: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/sc.xpi +#!RemoteAsset: sha256:e660e3cea92459ecbcd686bf15cc480779ee43c983ddc22005d2aa229bed598a +Source80: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/sco.xpi +#!RemoteAsset: sha256:5dcc6c83b3477e5ccf68f95d9c5ab9076d44c1daa59077a00f1a36f652e9713b +Source81: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/si.xpi +#!RemoteAsset: sha256:a9db783043ac0f89ffb8d7d69494f4ccc70dde3a19944929a105d49130c043b3 +Source82: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/sk.xpi +#!RemoteAsset: sha256:2bce9eea801a5cf4f748961d466c92c0fe2f71d77f163118d0d1cdd3d8eb7fce +Source83: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/skr.xpi +#!RemoteAsset: sha256:61f41cc390fb8c08a40ae2ebc6cc6125996420c409b2e290ab0dc0a7875c3028 +Source84: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/sl.xpi +#!RemoteAsset: sha256:b508b7ca86de2b252ff2e5650f3e4e78d82437727a7d34c1c8cdea26ebf72187 +Source85: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/son.xpi +#!RemoteAsset: sha256:26d824c8b76bd4441bde9a1beb7b86cd2380731875829f1a539d17170b25a1ee +Source86: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/sq.xpi +#!RemoteAsset: sha256:e9f3c96df0553d802c464f2f5c840e198ff75cc7288442c70c2eab5ef438956a +Source87: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/sr.xpi +#!RemoteAsset: sha256:4460eb1c35a81dbd613b52a82b22c4a0715b9eefa7fccb2174b72b914f6b48d9 +Source88: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/sv-SE.xpi +#!RemoteAsset: sha256:002ed365ccdb053a2c901d99ae461729410aab19cca0d0512aa4a7350c638a15 +Source89: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/szl.xpi +#!RemoteAsset: sha256:c6712813501bc6f2d25c93bad408480a37e2c1eb1fa4023812865a62b7871a31 +Source90: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ta.xpi +#!RemoteAsset: sha256:56ed4ffedecc85ef1bc9792eec8f580fb109ed25cd27639cf4343d23dbf433d4 +Source91: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/te.xpi +#!RemoteAsset: sha256:00c509c78b9007afce2cdf5b3b1cabb60bd8ec216c13e35859759aba8a3f16ab +Source92: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/tg.xpi +#!RemoteAsset: sha256:f43a530566f1450751d8c59e88982c1f0c71ba6d10f3ab08ab8307af28f0e7c0 +Source93: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/th.xpi +#!RemoteAsset: sha256:87f27ac261b43ad4034dbbeb7f1813fcddd9fdbd967a89c65152be9b7577e590 +Source94: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/tl.xpi +#!RemoteAsset: sha256:fa331a884a4212581cfb6ac602e727a301cb2ea3a458ba4990c724c8ba6adc91 +Source95: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/tr.xpi +#!RemoteAsset: sha256:b621bfe4c0c21b3d21a9e7d9f0e40b206ec46954ac38a24d9cdf27e5b79f541f +Source96: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/trs.xpi +#!RemoteAsset: sha256:957128700f33de5a3de7732c40bbe26a9e2e7048625a2f718e36e77ed9a5c896 +Source97: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/uk.xpi +#!RemoteAsset: sha256:1c388b70c39210370c0fdf5dc2c35f4b283b503220d47e7ec31584d2e1c54d38 +Source98: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/ur.xpi +#!RemoteAsset: sha256:b6e30fbb7b1349318e818db7efa4a2d80cfe3b61f019a134eacb4e01cf2e6a4f +Source99: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/uz.xpi +#!RemoteAsset: sha256:4d60ddfcb24da8c38def88d0d20b2bb9f6bd0cd495e5d9fac3a8f0bef01aab88 +Source100: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/vi.xpi +#!RemoteAsset: sha256:1c80e01ba239f427c997965ecc00fdc1c2c601b43d42d2df4f1fdb164f8ecd31 +Source101: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/xh.xpi +#!RemoteAsset: sha256:c5183935ca04d54f981d60e40453e686ab30f893b603e424875606ebc63d38d1 +Source102: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/zh-CN.xpi +#!RemoteAsset: sha256:71b5989134f3d1ddc936def6c842aff400fedf4fbb02a4fc0b7453046f22b16a +Source103: https://ftp.mozilla.org/pub/firefox/releases/%{version}/linux-x86_64/xpi/zh-TW.xpi +# What if firefox add another language? We should start at 200 - 251 +# https://www.chromium.org/developers/how-tos/api-keys/ +# Note: This key is for openRuyi use ONLY. +# For your own distribution, please get your own set of keys. +Source200: google-api-key +Source201: firefox.desktop +Source202: firefox.js +Source203: distribution.ini.in +Source204: firefox.xml +Source205: run-wayland-compositor.sh + +BuildRequires: appstream-glib +BuildRequires: autoconf +BuildRequires: cargo +BuildRequires: cbindgen +BuildRequires: clang +BuildRequires: clang-libs +BuildRequires: clang-devel +BuildRequires: cmake(LLVM) +BuildRequires: compiler-rt +BuildRequires: lld +BuildRequires: llvm +BuildRequires: llvm-devel +BuildRequires: make +BuildRequires: nasm +BuildRequires: nodejs +BuildRequires: pciutils +BuildRequires: perl-devel +BuildRequires: pkgconfig(alsa) +BuildRequires: pkgconfig(aom) +BuildRequires: pkgconfig(bzip2) +BuildRequires: pkgconfig(dbus-glib-1) +BuildRequires: pkgconfig(dri) +BuildRequires: pkgconfig(freetype2) +BuildRequires: pkgconfig(gbm) +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(krb5) +BuildRequires: pkgconfig(libcurl) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libevent) +BuildRequires: pkgconfig(libffi) +BuildRequires: pkgconfig(libjpeg) +BuildRequires: pkgconfig(libnotify) +BuildRequires: pkgconfig(libpipewire-0.3) +BuildRequires: pkgconfig(libproxy-1.0) +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(libwebp) +BuildRequires: pkgconfig(nspr) +BuildRequires: pkgconfig(nss) +BuildRequires: pkgconfig(pango) +BuildRequires: pkgconfig(pixman-1) +BuildRequires: pkgconfig(vpx) +# We can't remove this because of desktop_capture_gn: +# modules/desktop_capture/linux/x11/screen_capturer_x11.h +# This header will include +BuildRequires: pkgconfig(xdamage) +BuildRequires: pkgconfig(xrender) +BuildRequires: pkgconfig(xt) +BuildRequires: pkgconfig(zlib) +BuildRequires: rust +BuildRequires: unzip +BuildRequires: zip +# For PGO desktop +#BuildRequires: kscreenlocker +BuildRequires: kf6-kconfig +BuildRequires: kf6-kwallet +BuildRequires: kwin +BuildRequires: desktop-file-utils + +Requires: ffmpeg + +%patchlist +# https://github.com/jamienicol/glslopt-rs/commit/eef3dada10f2cba865d35354c060ab9e37f045fb +0001-Patch-glsl-optimizer-to-build-with-glibc-2.43.patch +0002-add-GetSystemProxyDirect-to-libproxy-path.patch +2000-riscv64-Use-long-tail-jump-for-xptcall-stubs.patch +# https://bugzilla.mozilla.org/show_bug.cgi?id=1865601 +2001-riscv64-enable-gles-rendering.patch +# https://phabricator.services.mozilla.com/D301784 +2002-riscv64-libyuv-add-RVV-sources-to-build.patch + +%description +Mozilla Firefox is a free, open-source web browser developed by +the Mozilla Foundation, focused on user privacy, speed, and +customization. + +%prep +%autosetup -p1 -n %{name}-%{version} + +%conf +# Configure build file for openRuyi (Globally) +cat > .mozconfig <> .mozconfig +%endif + +%if %{with official_branding} +echo "ac_add_options --enable-official-branding" >> .mozconfig +%endif + +# Firefox crash reporter +%ifarch riscv64 +# TODO: Porting needed, somebody save us :( +echo "ac_add_options --disable-crashreporter" >> .mozconfig +%else +echo "ac_add_options --enable-crashreporter" >> .mozconfig +%endif + +# Some libraries we don't have but i think we should? - 251 +%if %{with fdk_aac} +echo "ac_add_options --with-system-fdk-aac" >> .mozconfig +%endif + +%build +%ifarch riscv64 +FF_OPTFLAGS="%{optflags}" +# Otherwise will segmentation fault w/ V extension +# https://github.com/llvm/llvm-project/issues/198699 +FF_OPTFLAGS="${FF_OPTFLAGS//-fstack-clash-protection/}" +echo "export CFLAGS=\"$FF_OPTFLAGS\"" >> .mozconfig +echo "export CXXFLAGS=\"$FF_OPTFLAGS\"" >> .mozconfig +%else +echo "export CFLAGS=\"%{optflags}\"" >> .mozconfig +echo "export CXXFLAGS=\"%{optflags}\"" >> .mozconfig +%endif +echo "export LDFLAGS=\"%{build_ldflags}\"" >> .mozconfig +echo "export LLVM_PROFDATA=\"llvm-profdata\"" >> .mozconfig +echo "export AR=\"llvm-ar\"" >> .mozconfig +echo "export NM=\"llvm-nm\"" >> .mozconfig +echo "export RANLIB=\"llvm-ranlib\"" >> .mozconfig +# Fix: Could not find libclang to generate rust bindings for C/C++ +echo "ac_add_options --with-libclang-path=`llvm-config --libdir`" >> .mozconfig + +# https://firefox-source-docs.mozilla.org/build/buildsystem/pgo.html +%ifarch x86_64 +echo "ac_add_options MOZ_PGO=1" >> .mozconfig + +cp %{SOURCE205} . +. ./run-wayland-compositor.sh +%endif + +./mach build -v + +%install +DESTDIR=%{buildroot} make -C obj install + +install -Dm0644 %{SOURCE201} %{buildroot}%{_datadir}/applications/firefox.desktop + +# Install icons +for s in 16 22 24 32 48 256; do + mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps + cp -p browser/branding/official/default${s}.png \ + %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/firefox.png +done + +# We use %lang() for langpacks +echo > %{name}.lang +mkdir -p %{buildroot}%{_libdir}/firefox/langpacks +for langpack in %{_sourcedir}/*.xpi; do + language="$(basename "$langpack" .xpi)" + extensionID="langpack-$language@firefox.mozilla.org" + + rm -rf "$extensionID" "${extensionID}.xpi" + mkdir -p "$extensionID" + unzip -qq "$langpack" -d "$extensionID" + find "$extensionID" -type f | xargs chmod 644 + + cd "$extensionID" + zip -qq -r9mX "../${extensionID}.xpi" . + cd - + + install -m 644 "${extensionID}.xpi" %{buildroot}%{_libdir}/firefox/langpacks + language="$(echo "$language" | sed -e 's/-/_/g')" + echo "%%lang($language) %{_libdir}/firefox/langpacks/${extensionID}.xpi" >> %{name}.lang +done + +# Install langpack workaround +function create_default_langpack() { + language_long=$1 + language_short=$2 + cd %{buildroot}%{_libdir}/firefox/langpacks + ln -s langpack-$language_long@firefox.mozilla.org.xpi langpack-$language_short@firefox.mozilla.org.xpi + cd - + echo "%%lang($language_short) %{_libdir}/firefox/langpacks/langpack-$language_short@firefox.mozilla.org.xpi" >> %{name}.lang +} + +# Table of fallbacks for each language +create_default_langpack "es-AR" "es" +create_default_langpack "fy-NL" "fy" +create_default_langpack "ga-IE" "ga" +create_default_langpack "gu-IN" "gu" +create_default_langpack "hi-IN" "hi" +create_default_langpack "hy-AM" "hy" +create_default_langpack "nb-NO" "nb" +create_default_langpack "nn-NO" "nn" +create_default_langpack "pa-IN" "pa" +create_default_langpack "pt-PT" "pt" +create_default_langpack "sv-SE" "sv" +create_default_langpack "zh-TW" "zh" + +# Default config +mkdir -p %{buildroot}%{_libdir}/firefox/browser/defaults/preferences +cp %{SOURCE202} %{buildroot}%{_libdir}/firefox/browser/defaults/preferences + +# Add distribution.ini +mkdir -p %{buildroot}%{_libdir}/firefox/distribution +sed -e "s/__NAME__/%(source /etc/os-release; echo ${NAME})/" \ + -e "s/__ID__/%(source /etc/os-release; echo ${ID})/" \ + %{SOURCE203} > %{buildroot}%{_libdir}/firefox/distribution/distribution.ini + +# Install appdata +# https://bugzilla.mozilla.org/show_bug.cgi?id=1071061 +# We modify the upstream one here +mkdir -p %{buildroot}%{_datadir}/metainfo +sed -e "s/__VERSION__/%{version}/" \ + -e "s/__DATE__/$(date '+%F')/" \ + %{SOURCE204} > %{buildroot}%{_datadir}/metainfo/firefox.appdata.xml + +# Install license file +install -Dpm0644 LICENSE %{buildroot}%{_libdir}/firefox + +# Directory for system extensions +mkdir -p %{buildroot}%{_datadir}/mozilla/extensions/\{ec8030f7-c20a-464f-9b0e-13a3a9e97384\} +mkdir -p %{buildroot}%{_libdir}/mozilla/extensions/\{ec8030f7-c20a-464f-9b0e-13a3a9e97384\} + +# Use the system hunspell dictionaries +rm -rf %{buildroot}%{_libdir}/firefox/dictionaries +ln -s %{_datadir}/hunspell %{buildroot}%{_libdir}/firefox/dictionaries + +# Delete unwanted files +rm -f %{buildroot}%{_libdir}/firefox/update-settings.ini +rm -f %{buildroot}%{_libdir}/firefox/removed-files + +# There's no reason for any check, we already using PGO. +%check + +%preun +# is it a final removal? +if [ $1 -eq 0 ]; then + rm -rf %{_libdir}/firefox/components + rm -rf %{_libdir}/firefox/extensions + rm -rf %{_libdir}/firefox/plugins + rm -rf %{_libdir}/firefox/langpacks +fi + +%files -f %{name}.lang +%license %{_libdir}/firefox/LICENSE +%dir %{_datadir}/mozilla/extensions/* +%dir %{_libdir}/mozilla/extensions/* +%dir %{_libdir}/firefox/langpacks +%{_bindir}/firefox +%{_libdir}/firefox/application.ini +%{_libdir}/firefox/browser +%ifnarch riscv64 +%{_libdir}/firefox/crashreporter +%{_libdir}/firefox/crashhelper +%endif +%{_libdir}/firefox/defaults/pref/channel-prefs.js +%{_libdir}/firefox/dependentlibs.list +%{_libdir}/firefox/dictionaries +%{_libdir}/firefox/distribution +%{_libdir}/firefox/firefox +%{_libdir}/firefox/firefox-bin +%{_libdir}/firefox/fonts/TwemojiMozilla.ttf +%{_libdir}/firefox/glxtest +%{_libdir}/firefox/gmp-clearkey +%{_libdir}/firefox/omni.ja +%{_libdir}/firefox/pingsender +%{_libdir}/firefox/platform.ini +%ifarch riscv64 +%{_libdir}/firefox/v4l2test +%endif +%{_libdir}/firefox/vaapitest +%{_libdir}/firefox/*.so +%{_datadir}/applications/firefox.desktop +%{_datadir}/icons/hicolor/16x16/apps/firefox.png +%{_datadir}/icons/hicolor/22x22/apps/firefox.png +%{_datadir}/icons/hicolor/24x24/apps/firefox.png +%{_datadir}/icons/hicolor/256x256/apps/firefox.png +%{_datadir}/icons/hicolor/32x32/apps/firefox.png +%{_datadir}/icons/hicolor/48x48/apps/firefox.png +%{_datadir}/metainfo/firefox.appdata.xml + +%changelog +%autochangelog diff --git a/SPECS/firefox/firefox.xml b/SPECS/firefox/firefox.xml new file mode 100644 index 0000000000..5719343a6c --- /dev/null +++ b/SPECS/firefox/firefox.xml @@ -0,0 +1,44 @@ + + + org.mozilla.firefox + firefox.desktop + Firefox + Mozilla + Fast, Private & Safe Web Browser + CC0-1.0 + MPL-2.0 + +

When it comes to your life online, you have a choice: accept the factory settings or put your privacy first. When you choose Firefox as your default browser, you’re choosing to protect your data while supporting an independent tech company. Firefox is also the only major browser backed by a non-profit fighting to give you more openness, transparency and control of your life online. Join hundreds of millions of people who choose to protect what's important by choosing Firefox - a web browser designed to be fast, easy to use, customizable and private.

+
+ + + + + mozilla + internet + web + + + https://www.mozilla.org/firefox/ + https://donate.mozilla.org/ + https://bugzilla.mozilla.org/ + https://support.mozilla.org/ + https://wiki.mozilla.org/L10n:Starting_a_localization + + + https://raw.githubusercontent.com/mozilla-releng/scriptworker-scripts/master/pushflatpakscript/media/screenshots/image1.png + The “New Tab” page + + + https://raw.githubusercontent.com/mozilla-releng/scriptworker-scripts/master/pushflatpakscript/media/screenshots/image2.png + A Wikipedia article displayed in Firefox + + + https://raw.githubusercontent.com/mozilla-releng/scriptworker-scripts/master/pushflatpakscript/media/screenshots/image3.png + The “Welcome to Firefox” page: “Open up an amazing internet” + + + + https://hg.mozilla.org/mozilla-central/file/tip/browser/installer/linux/app/flatpak + +
diff --git a/SPECS/firefox/google-api-key b/SPECS/firefox/google-api-key new file mode 100644 index 0000000000..73634f1175 --- /dev/null +++ b/SPECS/firefox/google-api-key @@ -0,0 +1 @@ +AIzaSyCDhVX2-W7S_ZY6EwTI7EGposJvw_LRrwU diff --git a/SPECS/firefox/run-wayland-compositor.sh b/SPECS/firefox/run-wayland-compositor.sh new file mode 100755 index 0000000000..26d15e0138 --- /dev/null +++ b/SPECS/firefox/run-wayland-compositor.sh @@ -0,0 +1,66 @@ +#!/usr/bin/bash +# Run wayland compositor (KWin) and set WAYLAND_DISPLAY env variable + +set -x + +cat > $HOME/.xsessionrc <<'EOF' +export DESKTOP_SESSION=plasmawayland +export XDG_CURRENT_DESKTOP=KDE +export XDG_SESSION_TYPE=wayland +EOF + +#kwriteconfig6 --file kscreenlockerrc --group Daemon --key Autolock false +#kwriteconfig6 --file kscreenlockerrc --group Daemon --key LockOnResume false +#kwriteconfig6 --file kscreenlockerrc --group Daemon --key Timeout 3600 + +if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then + eval `dbus-launch --sh-syntax` +fi + +kwriteconfig6 --file kwalletrc --group "org.freedesktop.secrets" --key "apiEnabled" 2 +kwriteconfig6 --file kwalletrc --group Wallet --key "Default Wallet" "kdewallet" +kwriteconfig6 --file kwalletrc --group Wallet --key "Enabled" true +kwalletd6 & +export KWALLETD_PID=$! +sleep 1 + +if [ -z "$XDG_RUNTIME_DIR" ]; then + export XDG_RUNTIME_DIR=$HOME +fi + +export WAYLAND_DISPLAY=firefox-pgo-wayland-0 +if [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then + rm -f $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY + rm -f $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY.lock +fi + +echo "Launch kwin_wayland for $WAYLAND_DISPLAY" +kwin_wayland \ + --virtual \ + --width 1920 --height 1080 \ + --no-lockscreen \ + --socket=$WAYLAND_DISPLAY \ + & KWIN_PID=$! +export KWIN_PID +echo "KWin PID $KWIN_PID" + +echo "Waiting for kwin_wayland to start..." +sleep 5 +retry_count=0 +max_retries=5 +until [ $retry_count -gt $max_retries ]; do + if [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then + retry_count=$(($max_retries + 1)) + else + retry_count=$(($retry_count + 1)) + echo "Waiting for KWin, retry: $retry_count" + sleep 2 + fi +done + +if [ ! -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then + echo "KWin failed to start!" + exit 1 +fi + +echo "KWin is running, $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY is here."