i965/vec4: load dvec3/4 uniforms first in the push constant buffer
authorSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Wed, 19 Apr 2017 09:18:35 +0000 (11:18 +0200)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Thu, 18 May 2017 04:49:54 +0000 (06:49 +0200)
commite69e5c7006da80af62c9ef08dec215b3b4b30946
treecd6cb45ee9385dc7e83d86e19e2cb9c9720dbd43
parent8aa6ada8384a961b37dfefec7f9e40e5a4e27ce7
i965/vec4: load dvec3/4 uniforms first in the push constant buffer

Reorder the uniforms to load first the dvec4-aligned variables in the
push constant buffer and then push the vec4-aligned ones. It takes
into account that the relocated uniforms should be aligned to their
channel size.

This fixes a bug were the dvec3/4 might be loaded one part on a GRF and
the rest in next GRF, so the region parameters to read that could break
the HW rules.

v2:
- Fix broken logic.
- Add a comment to explain what should be needed to optimise the usage
  of the push constant buffer slots, as this patch does not pack the
  uniforms.

v3:
- Implemented the push constant buffer usage optimization.

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Cc: "17.1" <mesa-stable@lists.freedesktop.org>
Acked-by: Francisco Jerez <currojerez@riseup.net>
src/intel/compiler/brw_vec4.cpp