Hi; This series change ir_variable to include a data container for bitfields and other variables. This helps in variable cloning and serialization, it makes serialization easier but also much more maintainable.
I divided the moving of variables as multiple patches to not exceed maximum patch size limitation and make it more readable. I've verified individual patches by running make and make check between patches. I tested that gallium builds ok. I'm not able to run full Piglit suite now (getting file IO errors from Python ..) but all the tests I run manually show no regressions. Will try to get full Piglit run working. Here is a tree with patches on top: http://cgit.freedesktop.org/~tpalli/mesa/log/?h=ir_changes This branch includes 'automatic shader program cache' implementation that benefits from having the structure in ir_variable serialization code which is more compact and robus than previously: http://cgit.freedesktop.org/~tpalli/mesa/log/?h=automatic_cache3 (note, contains also many of the fixes Paul Berry proposed for the caching) My plan is to change some of the other structures too before actual cache implementation and this is the starting point. Tapani Pälli (5): glsl: introduce data section to ir_variable glsl: move variables in to ir_variable::data, part I glsl: move variables in to ir_variable::data, part II glsl: move variables in to ir_variable::data, part III glsl: modify ir_clone to use memcpy src/glsl/ast_array_index.cpp | 8 +- src/glsl/ast_function.cpp | 16 +- src/glsl/ast_to_hir.cpp | 208 ++++++------- src/glsl/builtin_variables.cpp | 24 +- src/glsl/ir.cpp | 52 ++-- src/glsl/ir.h | 340 +++++++++++---------- src/glsl/ir_clone.cpp | 26 +- src/glsl/ir_constant_expression.cpp | 2 +- src/glsl/ir_function.cpp | 2 +- src/glsl/ir_print_visitor.cpp | 6 +- src/glsl/ir_reader.cpp | 28 +- src/glsl/ir_set_program_inouts.cpp | 28 +- src/glsl/ir_validate.cpp | 10 +- src/glsl/link_atomics.cpp | 20 +- src/glsl/link_functions.cpp | 8 +- src/glsl/link_interface_blocks.cpp | 12 +- src/glsl/link_uniform_initializers.cpp | 6 +- src/glsl/link_uniforms.cpp | 20 +- src/glsl/link_varyings.cpp | 84 ++--- src/glsl/linker.cpp | 124 ++++---- src/glsl/lower_clip_distance.cpp | 18 +- src/glsl/lower_named_interface_blocks.cpp | 20 +- src/glsl/lower_output_reads.cpp | 2 +- src/glsl/lower_packed_varyings.cpp | 20 +- src/glsl/lower_ubo_reference.cpp | 2 +- src/glsl/lower_variable_index_to_cond_assign.cpp | 2 +- src/glsl/opt_array_splitting.cpp | 4 +- src/glsl/opt_constant_folding.cpp | 4 +- src/glsl/opt_constant_propagation.cpp | 4 +- src/glsl/opt_constant_variable.cpp | 4 +- src/glsl/opt_copy_propagation.cpp | 4 +- src/glsl/opt_copy_propagation_elements.cpp | 4 +- src/glsl/opt_cse.cpp | 2 +- src/glsl/opt_dead_builtin_varyings.cpp | 22 +- src/glsl/opt_dead_code.cpp | 10 +- src/glsl/opt_dead_code_local.cpp | 2 +- src/glsl/opt_flip_matrices.cpp | 4 +- src/glsl/opt_function_inlining.cpp | 14 +- src/glsl/opt_structure_splitting.cpp | 4 +- src/glsl/opt_tree_grafting.cpp | 10 +- src/glsl/tests/builtin_variable_test.cpp | 98 +++--- src/glsl/tests/invalidate_locations_test.cpp | 96 +++--- src/mesa/drivers/dri/i965/brw_fs.cpp | 14 +- src/mesa/drivers/dri/i965/brw_fs_fp.cpp | 6 +- .../drivers/dri/i965/brw_fs_vector_splitting.cpp | 2 +- src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 36 +-- src/mesa/drivers/dri/i965/brw_shader.cpp | 2 +- src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp | 2 +- src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 20 +- src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp | 2 +- src/mesa/main/ff_fragment_shader.cpp | 8 +- src/mesa/main/shader_query.cpp | 36 +-- src/mesa/program/ir_to_mesa.cpp | 24 +- src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 30 +- 54 files changed, 775 insertions(+), 781 deletions(-) -- 1.8.3.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev