@@ -8,6 +8,212 @@ env_glslang = env_modules.Clone()
88# Thirdparty source files
99
1010thirdparty_obj = []
11+ enable_shader_optimization = False
12+
13+ if env ["builtin_spirv_tools" ]:
14+ enable_shader_optimization = True
15+
16+ thirdparty_dir = "#thirdparty/spirv-tools/"
17+ thirdparty_sources = [
18+ "source/assembly_grammar.cpp" ,
19+ "source/binary.cpp" ,
20+ "source/diagnostic.cpp" ,
21+ "source/disassemble.cpp" ,
22+ "source/enum_string_mapping.cpp" ,
23+ "source/extensions.cpp" ,
24+ "source/ext_inst.cpp" ,
25+ "source/libspirv.cpp" ,
26+ "source/name_mapper.cpp" ,
27+ "source/opcode.cpp" ,
28+ "source/operand.cpp" ,
29+ "source/parsed_operand.cpp" ,
30+ "source/pch_source.cpp" ,
31+ "source/print.cpp" ,
32+ "source/software_version.cpp" ,
33+ "source/spirv_endian.cpp" ,
34+ "source/spirv_fuzzer_options.cpp" ,
35+ "source/spirv_optimizer_options.cpp" ,
36+ "source/spirv_reducer_options.cpp" ,
37+ "source/spirv_target_env.cpp" ,
38+ "source/spirv_validator_options.cpp" ,
39+ "source/table.cpp" ,
40+ "source/text.cpp" ,
41+ "source/text_handler.cpp" ,
42+ "source/opt/aggressive_dead_code_elim_pass.cpp" ,
43+ "source/opt/amd_ext_to_khr.cpp" ,
44+ "source/opt/analyze_live_input_pass.cpp" ,
45+ "source/opt/basic_block.cpp" ,
46+ "source/opt/block_merge_pass.cpp" ,
47+ "source/opt/block_merge_util.cpp" ,
48+ "source/opt/build_module.cpp" ,
49+ "source/opt/ccp_pass.cpp" ,
50+ "source/opt/cfg.cpp" ,
51+ "source/opt/cfg_cleanup_pass.cpp" ,
52+ "source/opt/code_sink.cpp" ,
53+ "source/opt/combine_access_chains.cpp" ,
54+ "source/opt/compact_ids_pass.cpp" ,
55+ "source/opt/composite.cpp" ,
56+ "source/opt/constants.cpp" ,
57+ "source/opt/const_folding_rules.cpp" ,
58+ "source/opt/control_dependence.cpp" ,
59+ "source/opt/convert_to_half_pass.cpp" ,
60+ "source/opt/convert_to_sampled_image_pass.cpp" ,
61+ "source/opt/copy_prop_arrays.cpp" ,
62+ "source/opt/dataflow.cpp" ,
63+ "source/opt/dead_branch_elim_pass.cpp" ,
64+ "source/opt/dead_insert_elim_pass.cpp" ,
65+ "source/opt/dead_variable_elimination.cpp" ,
66+ "source/opt/debug_info_manager.cpp" ,
67+ "source/opt/decoration_manager.cpp" ,
68+ "source/opt/def_use_manager.cpp" ,
69+ "source/opt/desc_sroa.cpp" ,
70+ "source/opt/desc_sroa_util.cpp" ,
71+ "source/opt/dominator_analysis.cpp" ,
72+ "source/opt/dominator_tree.cpp" ,
73+ "source/opt/eliminate_dead_constant_pass.cpp" ,
74+ "source/opt/eliminate_dead_functions_pass.cpp" ,
75+ "source/opt/eliminate_dead_functions_util.cpp" ,
76+ "source/opt/eliminate_dead_io_components_pass.cpp" ,
77+ "source/opt/eliminate_dead_members_pass.cpp" ,
78+ "source/opt/eliminate_dead_output_stores_pass.cpp" ,
79+ "source/opt/feature_manager.cpp" ,
80+ "source/opt/fix_func_call_arguments.cpp" ,
81+ "source/opt/fix_storage_class.cpp" ,
82+ "source/opt/flatten_decoration_pass.cpp" ,
83+ "source/opt/fold.cpp" ,
84+ "source/opt/folding_rules.cpp" ,
85+ "source/opt/fold_spec_constant_op_and_composite_pass.cpp" ,
86+ "source/opt/freeze_spec_constant_value_pass.cpp" ,
87+ "source/opt/function.cpp" ,
88+ "source/opt/graphics_robust_access_pass.cpp" ,
89+ "source/opt/if_conversion.cpp" ,
90+ "source/opt/inline_exhaustive_pass.cpp" ,
91+ "source/opt/inline_opaque_pass.cpp" ,
92+ "source/opt/inline_pass.cpp" ,
93+ "source/opt/instruction.cpp" ,
94+ "source/opt/instruction_list.cpp" ,
95+ "source/opt/instrument_pass.cpp" ,
96+ "source/opt/inst_bindless_check_pass.cpp" ,
97+ "source/opt/inst_buff_addr_check_pass.cpp" ,
98+ "source/opt/inst_debug_printf_pass.cpp" ,
99+ "source/opt/interface_var_sroa.cpp" ,
100+ "source/opt/interp_fixup_pass.cpp" ,
101+ "source/opt/ir_context.cpp" ,
102+ "source/opt/ir_loader.cpp" ,
103+ "source/opt/licm_pass.cpp" ,
104+ "source/opt/liveness.cpp" ,
105+ "source/opt/local_access_chain_convert_pass.cpp" ,
106+ "source/opt/local_redundancy_elimination.cpp" ,
107+ "source/opt/local_single_block_elim_pass.cpp" ,
108+ "source/opt/local_single_store_elim_pass.cpp" ,
109+ "source/opt/loop_dependence.cpp" ,
110+ "source/opt/loop_dependence_helpers.cpp" ,
111+ "source/opt/loop_descriptor.cpp" ,
112+ "source/opt/loop_fission.cpp" ,
113+ "source/opt/loop_fusion.cpp" ,
114+ "source/opt/loop_fusion_pass.cpp" ,
115+ "source/opt/loop_peeling.cpp" ,
116+ "source/opt/loop_unroller.cpp" ,
117+ "source/opt/loop_unswitch_pass.cpp" ,
118+ "source/opt/loop_utils.cpp" ,
119+ "source/opt/mem_pass.cpp" ,
120+ "source/opt/merge_return_pass.cpp" ,
121+ "source/opt/module.cpp" ,
122+ "source/opt/optimizer.cpp" ,
123+ "source/opt/pass.cpp" ,
124+ "source/opt/pass_manager.cpp" ,
125+ "source/opt/pch_source_opt.cpp" ,
126+ "source/opt/private_to_local_pass.cpp" ,
127+ "source/opt/propagator.cpp" ,
128+ "source/opt/reduce_load_size.cpp" ,
129+ "source/opt/redundancy_elimination.cpp" ,
130+ "source/opt/register_pressure.cpp" ,
131+ "source/opt/relax_float_ops_pass.cpp" ,
132+ "source/opt/remove_dontinline_pass.cpp" ,
133+ "source/opt/remove_duplicates_pass.cpp" ,
134+ "source/opt/remove_unused_interface_variables_pass.cpp" ,
135+ "source/opt/replace_desc_array_access_using_var_index.cpp" ,
136+ "source/opt/replace_invalid_opc.cpp" ,
137+ "source/opt/scalar_analysis.cpp" ,
138+ "source/opt/scalar_analysis_simplification.cpp" ,
139+ "source/opt/scalar_replacement_pass.cpp" ,
140+ "source/opt/set_spec_constant_default_value_pass.cpp" ,
141+ "source/opt/simplification_pass.cpp" ,
142+ "source/opt/spread_volatile_semantics.cpp" ,
143+ "source/opt/ssa_rewrite_pass.cpp" ,
144+ "source/opt/strength_reduction_pass.cpp" ,
145+ "source/opt/strip_debug_info_pass.cpp" ,
146+ "source/opt/strip_nonsemantic_info_pass.cpp" ,
147+ "source/opt/struct_cfg_analysis.cpp" ,
148+ "source/opt/types.cpp" ,
149+ "source/opt/type_manager.cpp" ,
150+ "source/opt/unify_const_pass.cpp" ,
151+ "source/opt/upgrade_memory_model.cpp" ,
152+ "source/opt/value_number_table.cpp" ,
153+ "source/opt/vector_dce.cpp" ,
154+ "source/opt/workaround1209.cpp" ,
155+ "source/opt/wrap_opkill.cpp" ,
156+ "source/util/bit_vector.cpp" ,
157+ "source/util/parse_number.cpp" ,
158+ "source/util/string_utils.cpp" ,
159+ "source/val/basic_block.cpp" ,
160+ "source/val/construct.cpp" ,
161+ "source/val/function.cpp" ,
162+ "source/val/instruction.cpp" ,
163+ "source/val/validate.cpp" ,
164+ "source/val/validate_adjacency.cpp" ,
165+ "source/val/validate_annotation.cpp" ,
166+ "source/val/validate_arithmetics.cpp" ,
167+ "source/val/validate_atomics.cpp" ,
168+ "source/val/validate_barriers.cpp" ,
169+ "source/val/validate_bitwise.cpp" ,
170+ "source/val/validate_builtins.cpp" ,
171+ "source/val/validate_capability.cpp" ,
172+ "source/val/validate_cfg.cpp" ,
173+ "source/val/validate_composites.cpp" ,
174+ "source/val/validate_constants.cpp" ,
175+ "source/val/validate_conversion.cpp" ,
176+ "source/val/validate_debug.cpp" ,
177+ "source/val/validate_decorations.cpp" ,
178+ "source/val/validate_derivatives.cpp" ,
179+ "source/val/validate_execution_limitations.cpp" ,
180+ "source/val/validate_extensions.cpp" ,
181+ "source/val/validate_function.cpp" ,
182+ "source/val/validate_id.cpp" ,
183+ "source/val/validate_image.cpp" ,
184+ "source/val/validate_instruction.cpp" ,
185+ "source/val/validate_interfaces.cpp" ,
186+ "source/val/validate_layout.cpp" ,
187+ "source/val/validate_literals.cpp" ,
188+ "source/val/validate_logicals.cpp" ,
189+ "source/val/validate_memory.cpp" ,
190+ "source/val/validate_memory_semantics.cpp" ,
191+ "source/val/validate_mesh_shading.cpp" ,
192+ "source/val/validate_misc.cpp" ,
193+ "source/val/validate_mode_setting.cpp" ,
194+ "source/val/validate_non_uniform.cpp" ,
195+ "source/val/validate_primitives.cpp" ,
196+ "source/val/validate_ray_query.cpp" ,
197+ "source/val/validate_ray_tracing.cpp" ,
198+ "source/val/validate_ray_tracing_reorder.cpp" ,
199+ "source/val/validate_scopes.cpp" ,
200+ "source/val/validate_small_type_uses.cpp" ,
201+ "source/val/validate_type.cpp" ,
202+ "source/val/validation_state.cpp" ,
203+ ]
204+
205+ thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources ]
206+
207+ env_glslang .Prepend (CPPPATH = [thirdparty_dir ])
208+ env_glslang .Prepend (CPPPATH = [thirdparty_dir + "include" ])
209+
210+ env_thirdparty = env_glslang .Clone ()
211+ env_thirdparty .Prepend (CPPPATH = [thirdparty_dir + "include/generated" ])
212+ env_thirdparty .Prepend (CPPPATH = ["#thirdparty/spirv-headers/include" ])
213+ env_thirdparty .Prepend (CPPPATH = ["#thirdparty/spirv-headers/include/spirv/unified1" ])
214+ env_thirdparty .disable_warnings ()
215+ env_thirdparty .add_source_files (thirdparty_obj , thirdparty_sources )
216+ env .modules_sources += thirdparty_obj
11217
12218if env ["builtin_glslang" ]:
13219 thirdparty_dir = "#thirdparty/glslang/"
@@ -70,14 +276,16 @@ if env["builtin_glslang"]:
70276 else :
71277 env_glslang .Prepend (CPPPATH = [thirdparty_dir , "#thirdparty" ])
72278
73- env_glslang .Append (CPPDEFINES = ["ENABLE_OPT=0" ])
279+ if enable_shader_optimization :
280+ env_glslang .Append (CPPDEFINES = ["ENABLE_OPT=1" ])
281+ else :
282+ env_glslang .Append (CPPDEFINES = ["ENABLE_OPT=0" ])
74283
75284 env_thirdparty = env_glslang .Clone ()
76285 env_thirdparty .disable_warnings ()
77286 env_thirdparty .add_source_files (thirdparty_obj , thirdparty_sources )
78287 env .modules_sources += thirdparty_obj
79288
80-
81289# Godot source files
82290
83291module_obj = []
0 commit comments