i965: Configure how to store *64*PASSTHRU vertex components
authorAntia Puentes <apuentes@igalia.com>
Fri, 15 Apr 2016 09:32:46 +0000 (11:32 +0200)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Tue, 17 May 2016 05:34:40 +0000 (07:34 +0200)
commit8b0a334b5ef0fb324c61f5757989d715f4b531f6
tree1b94226b33c04f9861a64bf92cbbd8a24b53f3bb
parent71150b73c81a58dc06057ced561d10332aecc803
i965: Configure how to store *64*PASSTHRU vertex components

From the Broadwell specification, structure VERTEX_ELEMENT_STATE
description:

   "When SourceElementFormat is set to one of the *64*_PASSTHRU
    formats,  64-bit components are stored in the URB without any
    conversion. In this case, vertex elements must be written as 128
    or 256 bits, with VFCOMP_STORE_0 being used to pad the output
    as required. E.g., if R64_PASSTHRU is used to copy a 64-bit Red component into
    the URB, Component 1 must be specified as VFCOMP_STORE_0 (with
    Components 2,3 set to VFCOMP_NOSTORE) in order to output a 128-bit
    vertex element, or Components 1-3 must be specified as VFCOMP_STORE_0
    in order to output a 256-bit vertex element. Likewise, use of
    R64G64B64_PASSTHRU requires Component 3 to be specified as VFCOMP_STORE_0
    in order to output a 256-bit vertex element."

Uses 128-bits to write double and dvec2 vertex elements, and 256-bits for
dvec3 and dvec4 vertex elements.

Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Signed-off-by: Antia Puentes <apuentes@igalia.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/gen8_draw_upload.c