glsl: Fix array indexing when constant folding built-in functions.

Mesa constant-folds built-in functions by using a miniature GLSL
interpreter (see
ir_function_signature::constant_expression_evaluate_expression_list()).
This interpreter had a bug in its handling of array indexing, which
caused expressions like "m[i][j]" (where m is a matrix) to be handled
incorrectly.  Specifically, it incorrectly treated j as indexing into
the whole matrix (rather than indexing just into the vector m[i]); as
a result the offset computed for m[i] was lost and m[i][j] was treated
as m[j][0].

Fixes piglit tests inverse-mat[234].{vert,frag}.

NOTE: This is a candidate for the 9.1 branch.
i965: Reduce code duplication in handling of depth, stencil, and HiZ.

This patch consolidates duplicate code in the brw_depthbuffer and
gen7_depthbuffer state atoms.  Previously, these state atoms contained
5 chunks of code for emitting the _3DSTATE_DEPTH_BUFFER packet (3 for
Gen4-6 and 2 for Gen7).  Also a lot of logic for determining the
appropriate buffer setup was duplicated between the Gen4-6 and Gen7
functions.

This refactor splits the code into three separate functions:
brw_emit_depthbuffer(), which determines the appropriate buffer setup
in a mostly generation-independent way, brw_emit_depth_stencil_hiz(),
which emits the appropriate state packets for Gen4-6, and
gen7_emit_depth_stencil_hiz(), which emits the appropriate state
packets for Gen7.

Tested using Piglit on Gen5-7 (no regressions).

v2: Re-word some comments.  Fix an assertion that incorrectly
prohibited packed depth/stencil formats on Gen6 (these are allowed
provided that HiZ is disabled).
!UPSTREAM: Hacky fix for Gen5 depthstencil-render-miplevels stencil-only test.  TODO: think through, test thoroughly, and document.
De-virtualize brw_blorp_params class
i965/blorp: Convert brw_blorp_mip_info into a C struct
i965/blorp: Convert brw_blorp_surface_info into a C struct
i965/blorp: Convert brw_blorp_coord_transform_params into a C struct
i965/blorp: Convert brw_blorp_wm_push_constants into a C struct
i965/blorp: Convert more stuff to C
Convert more stuff to C
Convert brw_blorp_params into C
Convert more stuff to C
Convert brw_hiz_op_params to C
Convert brw_blorp_blit_params to C
Convert the rest of brw_blorp.h to C
!UPSTREAM: i965/blorp: Merge into brw_wm_prog.

TODO: disentangle prep work.
i965/blorp: Use gen7_push_constant_alloc
Convert to C: clean up init
Convert to C: clean up init
Convert to C: clean up init