i965/vec4/tes: fix setup_payload() for 64bit data types
authorIago Toral Quiroga <itoral@igalia.com>
Fri, 1 Jul 2016 07:22:34 +0000 (09:22 +0200)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Tue, 3 Jan 2017 10:26:51 +0000 (11:26 +0100)
commit49d4d0268bc03fbf2a0688563c5d89a7c9eb1e8e
tree8f5b3fe8de60c6f7f55920491cd74f5ae6ffbfa3
parent183cd8ab944c1a6667656bed54a43ad5f91a6006
i965/vec4/tes: fix setup_payload() for 64bit data types

Use a width of 2 with 64-bit attributes.

Also, if we have a dvec3/4 attribute that gets split across two registers
such that components XY are stored in the second half of a register and
components ZW are stored in the first half of the next, we need to fix
regioning for any instruction that reads components Z/W of the attribute.
Notice this also means that we can't support sources that read cross-dvec2
swizzles (like XZ for example).

v2: don't assert that we have a single channel swizzle in the case that we
    have to fix up Z/W access on the first half of the next register. We
    can handle any swizzle that does not cross dvec2 boundaries, which
    the double scalarization pass should have prevented anyway.

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_vec4_tes.cpp