i965: fix double-precision vertex inputs measurement
authorJuan A. Suarez Romero <jasuarez@igalia.com>
Fri, 20 May 2016 14:35:52 +0000 (16:35 +0200)
committerJuan A. Suarez Romero <jasuarez@igalia.com>
Tue, 24 May 2016 08:06:29 +0000 (10:06 +0200)
commite79aa19d88b4d6dbd26c23287292e6bf9f41ce33
treec78d45530c059c55cd9e7cd259965aaeb76ef599
parentccd58015a2a9b067a6ece7a83bf5aa42dbb9acba
i965: fix double-precision vertex inputs measurement

For double-precision vertex inputs we need to measure them in dvec4
terms, and for single-precision vertex inputs we need to measure them in
vec4 terms.

For the later case, we use type_size_vec4() function. For the former
case, we had a wrong implementation based on type_size_vec4().

This commit introduces a proper type_size_dvec4() function, that we use
to measure vertex inputs.

Measuring double-precision vertex inputs as dvec4 is required because
ARB_vertex_attrib_64bit states that these uses the same number of
locations than the single-precision version. That is, two consecutives
dvec4 would be located in location "x" and location "x+1", not "x+2".

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_shader.h
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp