mesa/src
Caio Marcelo de Oliveira Filho e4f32dec23 glsl: change opt_copy_propagation_elements data structures
Instead of keeping multiple acp_entries in lists, have a single
acp_entry per variable. With this, the implementation of clone is more
convenient and now fully implemented. In the previous code, clone was
only partial.

Before this patch, each acp_entry struct represented a write to a
variable including LHS, RHS and a mask of what channels were written
to. There were two main hash tables, the first (lhs_ht) stored a list
of acp_entries per LHS variable, with the values available to copy for
that variable; the second (rhs_ht) was a "reverse index" for the first
hash table, so stored acp_entries per RHS variable.

After the patch, there's a single acp_entry struct per LHS variable,
it contains an array with references to the RHS variables per
channel. There now is a single hash table, from LHS variable to the
corresponding entry. The "reverse index" is stored in the ACP entry,
in the form of a set of variables that copy from the LHS. To make the
clone operation cheaper, the ACP entries are created on demand.

This should not change the result of copy propagation, a later patch
will take advantage of the clone operation.

v2: Add note clarifying how the hashtable is destroyed.

v3: (all from Eric Anholt)
    Add remove_unused_var_from_dsts() function for reuse.
    Remove from dsts as we go instead of clearing at the end.
    Add clarifying comment to erase().

Reviewed-by: Eric Anholt <eric@anholt.net>
2018-07-19 10:00:30 -07:00
..
amd radv: Fix incorrect assumption about ternary operator precedence 2018-07-19 10:04:27 +02:00
broadcom v3d: Disable shader-db cycle estimates until we sort out TMU estimates. 2018-07-16 14:39:59 -07:00
compiler glsl: change opt_copy_propagation_elements data structures 2018-07-19 10:00:30 -07:00
egl egl: Use the canonical drm-uapi fourcc header to avoid local defines. 2018-07-18 10:37:54 -07:00
gallium winsys/amdgpu: remove RADEON_SURF_FMASK leftover 2018-07-19 00:58:51 -04:00
gbm meson: Remove various completed todos 2018-06-13 10:07:03 -07:00
getopt
glx glx: Don't allow glXMakeContextCurrent() with only one valid drawable 2018-07-09 12:03:18 -04:00
gtest autotools: include meson build files in tarball 2018-01-19 16:30:51 -08:00
hgl meson: Add Haiku platform support v4 2018-02-16 16:56:34 -06:00
intel intel: tools: dump: trace memory writes 2018-07-19 16:48:42 +01:00
loader dri3: Stricter SBC wraparound handling 2018-05-22 17:59:53 +02:00
mapi Allow AMD_perfmon on GLES contexts 2018-07-18 10:39:21 -07:00
mesa mesa: fix make check for AMD_performance_monitor 2018-07-19 01:17:01 -04:00
util util/string_buffer: fix warning in tests 2018-07-18 08:29:51 -07:00
vulkan anv,radv: Add support for VK_KHR_get_display_properties2 2018-07-09 17:09:41 -07:00
git_sha1.h.in
Makefile.am egl: rewire the build systems to use libwayland-egl 2018-06-06 12:11:57 -07:00
meson.build meson: only build mesa_st tests when build-tests is true 2018-04-24 14:08:15 -07:00
SConscript