head	1.2;
access;
symbols
	netbsd-8-3-RELEASE:1.1.1.1
	netbsd-8-2-RELEASE:1.1.1.1
	netbsd-8-1-RELEASE:1.1.1.1
	netbsd-8-1-RC1:1.1.1.1
	netbsd-7-2-RELEASE:1.1.1.1.2.2
	netbsd-8-0-RELEASE:1.1.1.1
	netbsd-8-0-RC2:1.1.1.1
	netbsd-8-0-RC1:1.1.1.1
	netbsd-7-1-2-RELEASE:1.1.1.1.2.2
	netbsd-7-1-1-RELEASE:1.1.1.1.2.2
	netbsd-8:1.1.1.1.0.4
	netbsd-8-base:1.1.1.1
	netbsd-7-1:1.1.1.1.2.2.0.4
	netbsd-7-1-RELEASE:1.1.1.1.2.2
	netbsd-7-1-RC2:1.1.1.1.2.2
	netbsd-7-1-RC1:1.1.1.1.2.2
	netbsd-7-0-2-RELEASE:1.1.1.1.2.2
	netbsd-7-0-1-RELEASE:1.1.1.1.2.2
	netbsd-7-0:1.1.1.1.2.2.0.2
	netbsd-7-0-RELEASE:1.1.1.1.2.2
	netbsd-7-0-RC3:1.1.1.1.2.2
	netbsd-7-0-RC2:1.1.1.1.2.2
	netbsd-7-0-RC1:1.1.1.1.2.2
	netbsd-7:1.1.1.1.0.2
	MesaLib-10-3-5:1.1.1.1
	xorg:1.1.1;
locks; strict;
comment	@// @;


1.2
date	2019.03.10.04.15.46;	author mrg;	state dead;
branches;
next	1.1;
commitid	1CZNVjkFuXGmWLeB;

1.1
date	2014.12.18.06.02.07;	author mrg;	state Exp;
branches
	1.1.1.1;
next	;
commitid	tzEjkwzaREfP8u2y;

1.1.1.1
date	2014.12.18.06.02.07;	author mrg;	state Exp;
branches
	1.1.1.1.2.1;
next	;
commitid	tzEjkwzaREfP8u2y;

1.1.1.1.2.1
date	2014.12.18.06.02.07;	author martin;	state dead;
branches;
next	1.1.1.1.2.2;
commitid	1yEFPaBBlEWKuS4y;

1.1.1.1.2.2
date	2015.01.05.20.59.01;	author martin;	state Exp;
branches;
next	;
commitid	1yEFPaBBlEWKuS4y;


desc
@@


1.2
log
@merge Mesa 18.3.4.

this work is mostly from maya@@ with a little help from myself
via these github commits:


commit 57df9d9b59df14fd6ac8e30832ce4f29572a33c0
Author: coypu <coypu@@sdf.org>
Date:   Mon Mar 4 12:24:37 2019 +0200

    Make GCC happier about prototype, include right header for __HAVE_ATOMIC64_OPS

commit 93c2f416aa316cc3d0665661c9f927f6949cdd37
Author: coypu <coypu@@sdf.org>
Date:   Mon Mar 4 12:16:56 2019 +0200

    Make the u_atomic.c fallback locked 64bit atomics more suited

    for the netbsd case: we are using __GNUC__ compilers, but without
    libatomic. so we are emitting the __GNUC__ names.

    Use __HAVE_ATOMIC64_OPS which is the netbsd name for this condition
    (we don't run configure)

commit 84c2bf2f622f8a78f68ad1ca35b90bb991bdaab0
Author: coypu <coypu@@sdf.org>
Date:   Sun Mar 3 20:02:38 2019 +0200

    Remove unused padding to struct.

    The extra space is in the flexible array member at the end of
    struct drm_i915_query_topology_info.

    Clang dislikes having an extra member to the struct after the flexible
    array member.

commit 00f432b0edf95a6e292e8259ad3096a07966b53c
Author: Maya Rashish <maya@@NetBSD.org>
Date:   Sun Feb 24 23:36:09 2019 +0200

    Avoid left-shifting a negative, for clang

commit 84881d47e674b93b79f405326b3ae43af53fe611
Author: Maya Rashish <maya@@NetBSD.org>
Date:   Sun Feb 24 21:30:43 2019 +0200

    avoid conflict with netbsd bswap32

commit d9bd43728cb5cf161d8501be6d53dee50f094df0
Author: Maya Rashish <maya@@NetBSD.org>
Date:   Sun Feb 24 21:30:30 2019 +0200

    cast enum to appease clang

commit a84ec26c89d08028800e74313ccbbf0a1a0753ed
Author: Maya Rashish <maya@@NetBSD.org>
Date:   Wed Feb 6 13:07:55 2019 +0200

    Apply patches from pkgsrc mesa to avoid atexit on a library.

    This isn't safe to do on netbsd and results in segfaults on
    program exit.

commit 335ea9c725374db31fe809a7d7f33ad8a83edd3e
Author: Maya Rashish <maya@@NetBSD.org>
Date:   Sat Jan 19 16:32:28 2019 +0200

    Avoid left-shifting a negative (UB), appeases clang

commit 452e5dc79ee89292fe771cf0e1066d1fad55adfa
Author: Maya Rashish <maya@@NetBSD.org>
Date:   Sat Jan 12 17:02:04 2019 +0200

    radeon picture_type is h264 and the enums match, cast to avoid

    clang warning (we use -Werror)

commit 61b4bc2f7ca8d78bd4092df76daeb27621d2ea7d
Author: Maya Rashish <maya@@NetBSD.org>
Date:   Fri Jan 11 19:57:34 2019 +0200

    Avoid redefinition, for clang.

commit c73fac417444cd79ee5a7a89b4a0fdf931e5122d
Author: Maya Rashish <maya@@NetBSD.org>
Date:   Sun Jan 6 19:52:12 2019 +0200

    Fix some printf specifiers.

    XXX more upstreaming
    radeon_dma.c: https://gitlab.freedesktop.org/mesa/mesa/merge_requests/68

commit 09341f929e9d3b03a3caacaa630521bc76680344
Author: Maya Rashish <maya@@NetBSD.org>
Date:   Sat Feb 23 11:51:50 2019 +0200
@
text
@/*
 * Copyright © 2013 Intel Corporation
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice (including the next
 * paragraph) shall be included in all copies or substantial portions of the
 * Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 */

/**
 * \file builtin_functions.cpp
 *
 * Support for GLSL built-in functions.
 *
 * This file is split into several main components:
 *
 * 1. Availability predicates
 *
 *    A series of small functions that check whether the current shader
 *    supports the version/extensions required to expose a built-in.
 *
 * 2. Core builtin_builder class functionality
 *
 * 3. Lists of built-in functions
 *
 *    The builtin_builder::create_builtins() function contains lists of all
 *    built-in function signatures, where they're available, what types they
 *    take, and so on.
 *
 * 4. Implementations of built-in function signatures
 *
 *    A series of functions which create ir_function_signatures and emit IR
 *    via ir_builder to implement them.
 *
 * 5. External API
 *
 *    A few functions the rest of the compiler can use to interact with the
 *    built-in function module.  For example, searching for a built-in by
 *    name and parameters.
 */

#include <stdarg.h>
#include <stdio.h>
#include "main/core.h" /* for struct gl_shader */
#include "main/shaderobj.h"
#include "ir_builder.h"
#include "glsl_parser_extras.h"
#include "program/prog_instruction.h"
#include <limits>

#define M_PIf   ((float) M_PI)
#define M_PI_2f ((float) M_PI_2)
#define M_PI_4f ((float) M_PI_4)

using namespace ir_builder;

/**
 * Availability predicates:
 *  @@{
 */
static bool
always_available(const _mesa_glsl_parse_state *)
{
   return true;
}

static bool
compatibility_vs_only(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_VERTEX &&
          state->language_version <= 130 &&
          !state->es_shader;
}

static bool
fs_only(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT;
}

static bool
gs_only(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_GEOMETRY;
}

static bool
v110(const _mesa_glsl_parse_state *state)
{
   return !state->es_shader;
}

static bool
v110_fs_only(const _mesa_glsl_parse_state *state)
{
   return !state->es_shader && state->stage == MESA_SHADER_FRAGMENT;
}

static bool
v120(const _mesa_glsl_parse_state *state)
{
   return state->is_version(120, 300);
}

static bool
v130(const _mesa_glsl_parse_state *state)
{
   return state->is_version(130, 300);
}

static bool
v130_fs_only(const _mesa_glsl_parse_state *state)
{
   return state->is_version(130, 300) &&
          state->stage == MESA_SHADER_FRAGMENT;
}

static bool
v140(const _mesa_glsl_parse_state *state)
{
   return state->is_version(140, 0);
}

static bool
texture_rectangle(const _mesa_glsl_parse_state *state)
{
   return state->ARB_texture_rectangle_enable;
}

static bool
texture_external(const _mesa_glsl_parse_state *state)
{
   return state->OES_EGL_image_external_enable;
}

/** True if texturing functions with explicit LOD are allowed. */
static bool
lod_exists_in_stage(const _mesa_glsl_parse_state *state)
{
   /* Texturing functions with "Lod" in their name exist:
    * - In the vertex shader stage (for all languages)
    * - In any stage for GLSL 1.30+ or GLSL ES 3.00
    * - In any stage for desktop GLSL with ARB_shader_texture_lod enabled.
    *
    * Since ARB_shader_texture_lod can only be enabled on desktop GLSL, we
    * don't need to explicitly check state->es_shader.
    */
   return state->stage == MESA_SHADER_VERTEX ||
          state->is_version(130, 300) ||
          state->ARB_shader_texture_lod_enable;
}

static bool
v110_lod(const _mesa_glsl_parse_state *state)
{
   return !state->es_shader && lod_exists_in_stage(state);
}

static bool
shader_texture_lod(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shader_texture_lod_enable;
}

static bool
shader_texture_lod_and_rect(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shader_texture_lod_enable &&
          state->ARB_texture_rectangle_enable;
}

static bool
shader_bit_encoding(const _mesa_glsl_parse_state *state)
{
   return state->is_version(330, 300) ||
          state->ARB_shader_bit_encoding_enable ||
          state->ARB_gpu_shader5_enable;
}

static bool
shader_integer_mix(const _mesa_glsl_parse_state *state)
{
   return v130(state) && state->EXT_shader_integer_mix_enable;
}

static bool
shader_packing_or_es3(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shading_language_packing_enable ||
          state->is_version(400, 300);
}

static bool
shader_packing_or_es3_or_gpu_shader5(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shading_language_packing_enable ||
          state->ARB_gpu_shader5_enable ||
          state->is_version(400, 300);
}

static bool
gpu_shader5(const _mesa_glsl_parse_state *state)
{
   return state->is_version(400, 0) || state->ARB_gpu_shader5_enable;
}

static bool
shader_packing_or_gpu_shader5(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shading_language_packing_enable ||
          gpu_shader5(state);
}

static bool
fs_gpu_shader5(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          (state->is_version(400, 0) || state->ARB_gpu_shader5_enable);
}


static bool
texture_array_lod(const _mesa_glsl_parse_state *state)
{
   return lod_exists_in_stage(state) &&
          state->EXT_texture_array_enable;
}

static bool
fs_texture_array(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          state->EXT_texture_array_enable;
}

static bool
texture_array(const _mesa_glsl_parse_state *state)
{
   return state->EXT_texture_array_enable;
}

static bool
texture_multisample(const _mesa_glsl_parse_state *state)
{
   return state->is_version(150, 0) ||
          state->ARB_texture_multisample_enable;
}

static bool
fs_texture_cube_map_array(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          (state->is_version(400, 0) ||
           state->ARB_texture_cube_map_array_enable);
}

static bool
texture_cube_map_array(const _mesa_glsl_parse_state *state)
{
   return state->is_version(400, 0) ||
          state->ARB_texture_cube_map_array_enable;
}

static bool
texture_query_levels(const _mesa_glsl_parse_state *state)
{
   return state->is_version(430, 0) ||
          state->ARB_texture_query_levels_enable;
}

static bool
texture_query_lod(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          state->ARB_texture_query_lod_enable;
}

static bool
texture_gather(const _mesa_glsl_parse_state *state)
{
   return state->is_version(400, 0) ||
          state->ARB_texture_gather_enable ||
          state->ARB_gpu_shader5_enable;
}

/* Only ARB_texture_gather but not GLSL 4.0 or ARB_gpu_shader5.
 * used for relaxation of const offset requirements.
 */
static bool
texture_gather_only(const _mesa_glsl_parse_state *state)
{
   return !state->is_version(400, 0) &&
          !state->ARB_gpu_shader5_enable &&
          state->ARB_texture_gather_enable;
}

/* Desktop GL or OES_standard_derivatives + fragment shader only */
static bool
fs_oes_derivatives(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          (state->is_version(110, 300) ||
           state->OES_standard_derivatives_enable);
}

static bool
fs_derivative_control(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          (state->is_version(450, 0) ||
           state->ARB_derivative_control_enable);
}

static bool
tex1d_lod(const _mesa_glsl_parse_state *state)
{
   return !state->es_shader && lod_exists_in_stage(state);
}

/** True if sampler3D exists */
static bool
tex3d(const _mesa_glsl_parse_state *state)
{
   /* sampler3D exists in all desktop GLSL versions, GLSL ES 1.00 with the
    * OES_texture_3D extension, and in GLSL ES 3.00.
    */
   return !state->es_shader ||
          state->OES_texture_3D_enable ||
          state->language_version >= 300;
}

static bool
fs_tex3d(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          (!state->es_shader || state->OES_texture_3D_enable);
}

static bool
tex3d_lod(const _mesa_glsl_parse_state *state)
{
   return tex3d(state) && lod_exists_in_stage(state);
}

static bool
shader_atomic_counters(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shader_atomic_counters_enable;
}

static bool
shader_trinary_minmax(const _mesa_glsl_parse_state *state)
{
   return state->AMD_shader_trinary_minmax_enable;
}

static bool
shader_image_load_store(const _mesa_glsl_parse_state *state)
{
   return (state->is_version(420, 0) ||
           state->ARB_shader_image_load_store_enable);
}

static bool
gs_streams(const _mesa_glsl_parse_state *state)
{
   return gpu_shader5(state) && gs_only(state);
}

/** @@} */

/******************************************************************************/

namespace {

/**
 * builtin_builder: A singleton object representing the core of the built-in
 * function module.
 *
 * It generates IR for every built-in function signature, and organizes them
 * into functions.
 */
class builtin_builder {
public:
   builtin_builder();
   ~builtin_builder();

   void initialize();
   void release();
   ir_function_signature *find(_mesa_glsl_parse_state *state,
                               const char *name, exec_list *actual_parameters);

   /**
    * A shader to hold all the built-in signatures; created by this module.
    *
    * This includes signatures for every built-in, regardless of version or
    * enabled extensions.  The availability predicate associated with each
    * signature allows matching_signature() to filter out the irrelevant ones.
    */
   gl_shader *shader;

private:
   void *mem_ctx;

   /** Global variables used by built-in functions. */
   ir_variable *gl_ModelViewProjectionMatrix;
   ir_variable *gl_Vertex;

   void create_shader();
   void create_intrinsics();
   void create_builtins();

   /**
    * IR builder helpers:
    *
    * These convenience functions assist in emitting IR, but don't necessarily
    * fit in ir_builder itself.  Many of them rely on having a mem_ctx class
    * member available.
    */
   ir_variable *in_var(const glsl_type *type, const char *name);
   ir_variable *out_var(const glsl_type *type, const char *name);
   ir_constant *imm(float f, unsigned vector_elements=1);
   ir_constant *imm(int i, unsigned vector_elements=1);
   ir_constant *imm(unsigned u, unsigned vector_elements=1);
   ir_constant *imm(const glsl_type *type, const ir_constant_data &);
   ir_dereference_variable *var_ref(ir_variable *var);
   ir_dereference_array *array_ref(ir_variable *var, int i);
   ir_swizzle *matrix_elt(ir_variable *var, int col, int row);

   ir_expression *asin_expr(ir_variable *x);

   /**
    * Call function \param f with parameters specified as the linked
    * list \param params of \c ir_variable objects.  \param ret should
    * point to the ir_variable that will hold the function return
    * value, or be \c NULL if the function has void return type.
    */
   ir_call *call(ir_function *f, ir_variable *ret, exec_list params);

   /** Create a new function and add the given signatures. */
   void add_function(const char *name, ...);

   enum image_function_flags {
      IMAGE_FUNCTION_EMIT_STUB = (1 << 0),
      IMAGE_FUNCTION_RETURNS_VOID = (1 << 1),
      IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE = (1 << 2),
      IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE = (1 << 3),
      IMAGE_FUNCTION_READ_ONLY = (1 << 4),
      IMAGE_FUNCTION_WRITE_ONLY = (1 << 5)
   };

   /**
    * Create a new image built-in function for all known image types.
    * \p flags is a bitfield of \c image_function_flags flags.
    */
   void add_image_function(const char *name,
                           const char *intrinsic_name,
                           unsigned num_arguments,
                           unsigned flags);

   /**
    * Create new functions for all known image built-ins and types.
    * If \p glsl is \c true, use the GLSL built-in names and emit code
    * to call into the actual compiler intrinsic.  If \p glsl is
    * false, emit a function prototype with no body for each image
    * intrinsic name.
    */
   void add_image_functions(bool glsl);

   ir_function_signature *new_sig(const glsl_type *return_type,
                                  builtin_available_predicate avail,
                                  int num_params, ...);

   /**
    * Function signature generators:
    *  @@{
    */
   ir_function_signature *unop(builtin_available_predicate avail,
                               ir_expression_operation opcode,
                               const glsl_type *return_type,
                               const glsl_type *param_type);
   ir_function_signature *binop(ir_expression_operation opcode,
                                builtin_available_predicate avail,
                                const glsl_type *return_type,
                                const glsl_type *param0_type,
                                const glsl_type *param1_type);

#define B0(X) ir_function_signature *_##X();
#define B1(X) ir_function_signature *_##X(const glsl_type *);
#define B2(X) ir_function_signature *_##X(const glsl_type *, const glsl_type *);
#define B3(X) ir_function_signature *_##X(const glsl_type *, const glsl_type *, const glsl_type *);
#define BA1(X) ir_function_signature *_##X(builtin_available_predicate, const glsl_type *);
#define BA2(X) ir_function_signature *_##X(builtin_available_predicate, const glsl_type *, const glsl_type *);
   B1(radians)
   B1(degrees)
   B1(sin)
   B1(cos)
   B1(tan)
   B1(asin)
   B1(acos)
   B1(atan2)
   B1(atan)
   B1(sinh)
   B1(cosh)
   B1(tanh)
   B1(asinh)
   B1(acosh)
   B1(atanh)
   B1(pow)
   B1(exp)
   B1(log)
   B1(exp2)
   B1(log2)
   B1(sqrt)
   B1(inversesqrt)
   B1(abs)
   B1(sign)
   B1(floor)
   B1(trunc)
   B1(round)
   B1(roundEven)
   B1(ceil)
   B1(fract)
   B2(mod)
   B1(modf)
   BA2(min)
   BA2(max)
   BA2(clamp)
   B2(mix_lrp)
   ir_function_signature *_mix_sel(builtin_available_predicate avail,
                                   const glsl_type *val_type,
                                   const glsl_type *blend_type);
   B2(step)
   B2(smoothstep)
   B1(isnan)
   B1(isinf)
   B1(floatBitsToInt)
   B1(floatBitsToUint)
   B1(intBitsToFloat)
   B1(uintBitsToFloat)
   ir_function_signature *_packUnorm2x16(builtin_available_predicate avail);
   ir_function_signature *_packSnorm2x16(builtin_available_predicate avail);
   ir_function_signature *_packUnorm4x8(builtin_available_predicate avail);
   ir_function_signature *_packSnorm4x8(builtin_available_predicate avail);
   ir_function_signature *_unpackUnorm2x16(builtin_available_predicate avail);
   ir_function_signature *_unpackSnorm2x16(builtin_available_predicate avail);
   ir_function_signature *_unpackUnorm4x8(builtin_available_predicate avail);
   ir_function_signature *_unpackSnorm4x8(builtin_available_predicate avail);
   ir_function_signature *_packHalf2x16(builtin_available_predicate avail);
   ir_function_signature *_unpackHalf2x16(builtin_available_predicate avail);
   B1(length)
   B1(distance);
   B1(dot);
   B1(cross);
   B1(normalize);
   B0(ftransform);
   B1(faceforward);
   B1(reflect);
   B1(refract);
   B1(matrixCompMult);
   B1(outerProduct);
   B0(determinant_mat2);
   B0(determinant_mat3);
   B0(determinant_mat4);
   B0(inverse_mat2);
   B0(inverse_mat3);
   B0(inverse_mat4);
   B1(transpose);
   BA1(lessThan);
   BA1(lessThanEqual);
   BA1(greaterThan);
   BA1(greaterThanEqual);
   BA1(equal);
   BA1(notEqual);
   B1(any);
   B1(all);
   B1(not);
   B2(textureSize);
   ir_function_signature *_textureSize(builtin_available_predicate avail,
                                       const glsl_type *return_type,
                                       const glsl_type *sampler_type);

/** Flags to _texture() */
#define TEX_PROJECT 1
#define TEX_OFFSET  2
#define TEX_COMPONENT 4
#define TEX_OFFSET_NONCONST 8
#define TEX_OFFSET_ARRAY 16

   ir_function_signature *_texture(ir_texture_opcode opcode,
                                   builtin_available_predicate avail,
                                   const glsl_type *return_type,
                                   const glsl_type *sampler_type,
                                   const glsl_type *coord_type,
                                   int flags = 0);
   B0(textureCubeArrayShadow);
   ir_function_signature *_texelFetch(builtin_available_predicate avail,
                                      const glsl_type *return_type,
                                      const glsl_type *sampler_type,
                                      const glsl_type *coord_type,
                                      const glsl_type *offset_type = NULL);

   B0(EmitVertex)
   B0(EndPrimitive)
   ir_function_signature *_EmitStreamVertex(builtin_available_predicate avail,
                                            const glsl_type *stream_type);
   ir_function_signature *_EndStreamPrimitive(builtin_available_predicate avail,
                                              const glsl_type *stream_type);

   B2(textureQueryLod);
   B1(textureQueryLevels);
   B1(dFdx);
   B1(dFdy);
   B1(fwidth);
   B1(dFdxCoarse);
   B1(dFdyCoarse);
   B1(fwidthCoarse);
   B1(dFdxFine);
   B1(dFdyFine);
   B1(fwidthFine);
   B1(noise1);
   B1(noise2);
   B1(noise3);
   B1(noise4);

   B1(bitfieldExtract)
   B1(bitfieldInsert)
   B1(bitfieldReverse)
   B1(bitCount)
   B1(findLSB)
   B1(findMSB)
   B1(fma)
   B2(ldexp)
   B2(frexp)
   B1(uaddCarry)
   B1(usubBorrow)
   B1(mulExtended)
   B1(interpolateAtCentroid)
   B1(interpolateAtOffset)
   B1(interpolateAtSample)

   ir_function_signature *_atomic_intrinsic(builtin_available_predicate avail);
   ir_function_signature *_atomic_op(const char *intrinsic,
                                     builtin_available_predicate avail);

   B1(min3)
   B1(max3)
   B1(mid3)

   ir_function_signature *_image_prototype(const glsl_type *image_type,
                                           const char *intrinsic_name,
                                           unsigned num_arguments,
                                           unsigned flags);
   ir_function_signature *_image(const glsl_type *image_type,
                                 const char *intrinsic_name,
                                 unsigned num_arguments,
                                 unsigned flags);

   ir_function_signature *_memory_barrier_intrinsic(
      builtin_available_predicate avail);
   ir_function_signature *_memory_barrier(
      builtin_available_predicate avail);

#undef B0
#undef B1
#undef B2
#undef B3
#undef BA1
#undef BA2
   /** @@} */
};

} /* anonymous namespace */

/**
 * Core builtin_builder functionality:
 *  @@{
 */
builtin_builder::builtin_builder()
   : shader(NULL),
     gl_ModelViewProjectionMatrix(NULL),
     gl_Vertex(NULL)
{
   mem_ctx = NULL;
}

builtin_builder::~builtin_builder()
{
   ralloc_free(mem_ctx);
}

ir_function_signature *
builtin_builder::find(_mesa_glsl_parse_state *state,
                      const char *name, exec_list *actual_parameters)
{
   /* The shader currently being compiled requested a built-in function;
    * it needs to link against builtin_builder::shader in order to get them.
    *
    * Even if we don't find a matching signature, we still need to do this so
    * that the "no matching signature" error will list potential candidates
    * from the available built-ins.
    */
   state->uses_builtin_functions = true;

   ir_function *f = shader->symbols->get_function(name);
   if (f == NULL)
      return NULL;

   ir_function_signature *sig =
      f->matching_signature(state, actual_parameters, true);
   if (sig == NULL)
      return NULL;

   return sig;
}

void
builtin_builder::initialize()
{
   /* If already initialized, don't do it again. */
   if (mem_ctx != NULL)
      return;

   mem_ctx = ralloc_context(NULL);
   create_shader();
   create_intrinsics();
   create_builtins();
}

void
builtin_builder::release()
{
   ralloc_free(mem_ctx);
   mem_ctx = NULL;

   ralloc_free(shader);
   shader = NULL;
}

void
builtin_builder::create_shader()
{
   /* The target doesn't actually matter.  There's no target for generic
    * GLSL utility code that could be linked against any stage, so just
    * arbitrarily pick GL_VERTEX_SHADER.
    */
   shader = _mesa_new_shader(NULL, 0, GL_VERTEX_SHADER);
   shader->symbols = new(mem_ctx) glsl_symbol_table;

   gl_ModelViewProjectionMatrix =
      new(mem_ctx) ir_variable(glsl_type::mat4_type,
                               "gl_ModelViewProjectionMatrix",
                               ir_var_uniform);

   shader->symbols->add_variable(gl_ModelViewProjectionMatrix);

   gl_Vertex = in_var(glsl_type::vec4_type, "gl_Vertex");
   shader->symbols->add_variable(gl_Vertex);
}

/** @@} */

/**
 * Create ir_function and ir_function_signature objects for each
 * intrinsic.
 */
void
builtin_builder::create_intrinsics()
{
   add_function("__intrinsic_atomic_read",
                _atomic_intrinsic(shader_atomic_counters),
                NULL);
   add_function("__intrinsic_atomic_increment",
                _atomic_intrinsic(shader_atomic_counters),
                NULL);
   add_function("__intrinsic_atomic_predecrement",
                _atomic_intrinsic(shader_atomic_counters),
                NULL);

   add_image_functions(false);

   add_function("__intrinsic_memory_barrier",
                _memory_barrier_intrinsic(shader_image_load_store),
                NULL);
}

/**
 * Create ir_function and ir_function_signature objects for each built-in.
 *
 * Contains a list of every available built-in.
 */
void
builtin_builder::create_builtins()
{
#define F(NAME)                                 \
   add_function(#NAME,                          \
                _##NAME(glsl_type::float_type), \
                _##NAME(glsl_type::vec2_type),  \
                _##NAME(glsl_type::vec3_type),  \
                _##NAME(glsl_type::vec4_type),  \
                NULL);

#define FI(NAME)                                \
   add_function(#NAME,                          \
                _##NAME(glsl_type::float_type), \
                _##NAME(glsl_type::vec2_type),  \
                _##NAME(glsl_type::vec3_type),  \
                _##NAME(glsl_type::vec4_type),  \
                _##NAME(glsl_type::int_type),   \
                _##NAME(glsl_type::ivec2_type), \
                _##NAME(glsl_type::ivec3_type), \
                _##NAME(glsl_type::ivec4_type), \
                NULL);

#define FIU(NAME)                                                 \
   add_function(#NAME,                                            \
                _##NAME(always_available, glsl_type::float_type), \
                _##NAME(always_available, glsl_type::vec2_type),  \
                _##NAME(always_available, glsl_type::vec3_type),  \
                _##NAME(always_available, glsl_type::vec4_type),  \
                                                                  \
                _##NAME(always_available, glsl_type::int_type),   \
                _##NAME(always_available, glsl_type::ivec2_type), \
                _##NAME(always_available, glsl_type::ivec3_type), \
                _##NAME(always_available, glsl_type::ivec4_type), \
                                                                  \
                _##NAME(v130, glsl_type::uint_type),              \
                _##NAME(v130, glsl_type::uvec2_type),             \
                _##NAME(v130, glsl_type::uvec3_type),             \
                _##NAME(v130, glsl_type::uvec4_type),             \
                NULL);

#define IU(NAME)                                \
   add_function(#NAME,                          \
                _##NAME(glsl_type::int_type),   \
                _##NAME(glsl_type::ivec2_type), \
                _##NAME(glsl_type::ivec3_type), \
                _##NAME(glsl_type::ivec4_type), \
                                                \
                _##NAME(glsl_type::uint_type),  \
                _##NAME(glsl_type::uvec2_type), \
                _##NAME(glsl_type::uvec3_type), \
                _##NAME(glsl_type::uvec4_type), \
                NULL);

#define FIUB(NAME)                                                \
   add_function(#NAME,                                            \
                _##NAME(always_available, glsl_type::float_type), \
                _##NAME(always_available, glsl_type::vec2_type),  \
                _##NAME(always_available, glsl_type::vec3_type),  \
                _##NAME(always_available, glsl_type::vec4_type),  \
                                                                  \
                _##NAME(always_available, glsl_type::int_type),   \
                _##NAME(always_available, glsl_type::ivec2_type), \
                _##NAME(always_available, glsl_type::ivec3_type), \
                _##NAME(always_available, glsl_type::ivec4_type), \
                                                                  \
                _##NAME(v130, glsl_type::uint_type),              \
                _##NAME(v130, glsl_type::uvec2_type),             \
                _##NAME(v130, glsl_type::uvec3_type),             \
                _##NAME(v130, glsl_type::uvec4_type),             \
                                                                  \
                _##NAME(always_available, glsl_type::bool_type),  \
                _##NAME(always_available, glsl_type::bvec2_type), \
                _##NAME(always_available, glsl_type::bvec3_type), \
                _##NAME(always_available, glsl_type::bvec4_type), \
                NULL);

#define FIU2_MIXED(NAME)                                                                 \
   add_function(#NAME,                                                                   \
                _##NAME(always_available, glsl_type::float_type, glsl_type::float_type), \
                _##NAME(always_available, glsl_type::vec2_type,  glsl_type::float_type), \
                _##NAME(always_available, glsl_type::vec3_type,  glsl_type::float_type), \
                _##NAME(always_available, glsl_type::vec4_type,  glsl_type::float_type), \
                                                                                         \
                _##NAME(always_available, glsl_type::vec2_type,  glsl_type::vec2_type),  \
                _##NAME(always_available, glsl_type::vec3_type,  glsl_type::vec3_type),  \
                _##NAME(always_available, glsl_type::vec4_type,  glsl_type::vec4_type),  \
                                                                                         \
                _##NAME(always_available, glsl_type::int_type,   glsl_type::int_type),   \
                _##NAME(always_available, glsl_type::ivec2_type, glsl_type::int_type),   \
                _##NAME(always_available, glsl_type::ivec3_type, glsl_type::int_type),   \
                _##NAME(always_available, glsl_type::ivec4_type, glsl_type::int_type),   \
                                                                                         \
                _##NAME(always_available, glsl_type::ivec2_type, glsl_type::ivec2_type), \
                _##NAME(always_available, glsl_type::ivec3_type, glsl_type::ivec3_type), \
                _##NAME(always_available, glsl_type::ivec4_type, glsl_type::ivec4_type), \
                                                                                         \
                _##NAME(v130, glsl_type::uint_type,  glsl_type::uint_type),              \
                _##NAME(v130, glsl_type::uvec2_type, glsl_type::uint_type),              \
                _##NAME(v130, glsl_type::uvec3_type, glsl_type::uint_type),              \
                _##NAME(v130, glsl_type::uvec4_type, glsl_type::uint_type),              \
                                                                                         \
                _##NAME(v130, glsl_type::uvec2_type, glsl_type::uvec2_type),             \
                _##NAME(v130, glsl_type::uvec3_type, glsl_type::uvec3_type),             \
                _##NAME(v130, glsl_type::uvec4_type, glsl_type::uvec4_type),             \
                NULL);

   F(radians)
   F(degrees)
   F(sin)
   F(cos)
   F(tan)
   F(asin)
   F(acos)

   add_function("atan",
                _atan(glsl_type::float_type),
                _atan(glsl_type::vec2_type),
                _atan(glsl_type::vec3_type),
                _atan(glsl_type::vec4_type),
                _atan2(glsl_type::float_type),
                _atan2(glsl_type::vec2_type),
                _atan2(glsl_type::vec3_type),
                _atan2(glsl_type::vec4_type),
                NULL);

   F(sinh)
   F(cosh)
   F(tanh)
   F(asinh)
   F(acosh)
   F(atanh)
   F(pow)
   F(exp)
   F(log)
   F(exp2)
   F(log2)
   F(sqrt)
   F(inversesqrt)
   FI(abs)
   FI(sign)
   F(floor)
   F(trunc)
   F(round)
   F(roundEven)
   F(ceil)
   F(fract)

   add_function("mod",
                _mod(glsl_type::float_type, glsl_type::float_type),
                _mod(glsl_type::vec2_type,  glsl_type::float_type),
                _mod(glsl_type::vec3_type,  glsl_type::float_type),
                _mod(glsl_type::vec4_type,  glsl_type::float_type),

                _mod(glsl_type::vec2_type,  glsl_type::vec2_type),
                _mod(glsl_type::vec3_type,  glsl_type::vec3_type),
                _mod(glsl_type::vec4_type,  glsl_type::vec4_type),
                NULL);

   F(modf)

   FIU2_MIXED(min)
   FIU2_MIXED(max)
   FIU2_MIXED(clamp)

   add_function("mix",
                _mix_lrp(glsl_type::float_type, glsl_type::float_type),
                _mix_lrp(glsl_type::vec2_type,  glsl_type::float_type),
                _mix_lrp(glsl_type::vec3_type,  glsl_type::float_type),
                _mix_lrp(glsl_type::vec4_type,  glsl_type::float_type),

                _mix_lrp(glsl_type::vec2_type,  glsl_type::vec2_type),
                _mix_lrp(glsl_type::vec3_type,  glsl_type::vec3_type),
                _mix_lrp(glsl_type::vec4_type,  glsl_type::vec4_type),

                _mix_sel(v130, glsl_type::float_type, glsl_type::bool_type),
                _mix_sel(v130, glsl_type::vec2_type,  glsl_type::bvec2_type),
                _mix_sel(v130, glsl_type::vec3_type,  glsl_type::bvec3_type),
                _mix_sel(v130, glsl_type::vec4_type,  glsl_type::bvec4_type),

                _mix_sel(shader_integer_mix, glsl_type::int_type,   glsl_type::bool_type),
                _mix_sel(shader_integer_mix, glsl_type::ivec2_type, glsl_type::bvec2_type),
                _mix_sel(shader_integer_mix, glsl_type::ivec3_type, glsl_type::bvec3_type),
                _mix_sel(shader_integer_mix, glsl_type::ivec4_type, glsl_type::bvec4_type),

                _mix_sel(shader_integer_mix, glsl_type::uint_type,  glsl_type::bool_type),
                _mix_sel(shader_integer_mix, glsl_type::uvec2_type, glsl_type::bvec2_type),
                _mix_sel(shader_integer_mix, glsl_type::uvec3_type, glsl_type::bvec3_type),
                _mix_sel(shader_integer_mix, glsl_type::uvec4_type, glsl_type::bvec4_type),

                _mix_sel(shader_integer_mix, glsl_type::bool_type,  glsl_type::bool_type),
                _mix_sel(shader_integer_mix, glsl_type::bvec2_type, glsl_type::bvec2_type),
                _mix_sel(shader_integer_mix, glsl_type::bvec3_type, glsl_type::bvec3_type),
                _mix_sel(shader_integer_mix, glsl_type::bvec4_type, glsl_type::bvec4_type),
                NULL);

   add_function("step",
                _step(glsl_type::float_type, glsl_type::float_type),
                _step(glsl_type::float_type, glsl_type::vec2_type),
                _step(glsl_type::float_type, glsl_type::vec3_type),
                _step(glsl_type::float_type, glsl_type::vec4_type),

                _step(glsl_type::vec2_type,  glsl_type::vec2_type),
                _step(glsl_type::vec3_type,  glsl_type::vec3_type),
                _step(glsl_type::vec4_type,  glsl_type::vec4_type),
                NULL);

   add_function("smoothstep",
                _smoothstep(glsl_type::float_type, glsl_type::float_type),
                _smoothstep(glsl_type::float_type, glsl_type::vec2_type),
                _smoothstep(glsl_type::float_type, glsl_type::vec3_type),
                _smoothstep(glsl_type::float_type, glsl_type::vec4_type),

                _smoothstep(glsl_type::vec2_type,  glsl_type::vec2_type),
                _smoothstep(glsl_type::vec3_type,  glsl_type::vec3_type),
                _smoothstep(glsl_type::vec4_type,  glsl_type::vec4_type),
                NULL);
 
   F(isnan)
   F(isinf)

   F(floatBitsToInt)
   F(floatBitsToUint)
   add_function("intBitsToFloat",
                _intBitsToFloat(glsl_type::int_type),
                _intBitsToFloat(glsl_type::ivec2_type),
                _intBitsToFloat(glsl_type::ivec3_type),
                _intBitsToFloat(glsl_type::ivec4_type),
                NULL);
   add_function("uintBitsToFloat",
                _uintBitsToFloat(glsl_type::uint_type),
                _uintBitsToFloat(glsl_type::uvec2_type),
                _uintBitsToFloat(glsl_type::uvec3_type),
                _uintBitsToFloat(glsl_type::uvec4_type),
                NULL);

   add_function("packUnorm2x16",   _packUnorm2x16(shader_packing_or_es3_or_gpu_shader5),   NULL);
   add_function("packSnorm2x16",   _packSnorm2x16(shader_packing_or_es3),                  NULL);
   add_function("packUnorm4x8",    _packUnorm4x8(shader_packing_or_gpu_shader5),           NULL);
   add_function("packSnorm4x8",    _packSnorm4x8(shader_packing_or_gpu_shader5),           NULL);
   add_function("unpackUnorm2x16", _unpackUnorm2x16(shader_packing_or_es3_or_gpu_shader5), NULL);
   add_function("unpackSnorm2x16", _unpackSnorm2x16(shader_packing_or_es3),                NULL);
   add_function("unpackUnorm4x8",  _unpackUnorm4x8(shader_packing_or_gpu_shader5),         NULL);
   add_function("unpackSnorm4x8",  _unpackSnorm4x8(shader_packing_or_gpu_shader5),         NULL);
   add_function("packHalf2x16",    _packHalf2x16(shader_packing_or_es3),                   NULL);
   add_function("unpackHalf2x16",  _unpackHalf2x16(shader_packing_or_es3),                 NULL);

   F(length)
   F(distance)
   F(dot)

   add_function("cross", _cross(glsl_type::vec3_type), NULL);

   F(normalize)
   add_function("ftransform", _ftransform(), NULL);
   F(faceforward)
   F(reflect)
   F(refract)
   // ...
   add_function("matrixCompMult",
                _matrixCompMult(glsl_type::mat2_type),
                _matrixCompMult(glsl_type::mat3_type),
                _matrixCompMult(glsl_type::mat4_type),
                _matrixCompMult(glsl_type::mat2x3_type),
                _matrixCompMult(glsl_type::mat2x4_type),
                _matrixCompMult(glsl_type::mat3x2_type),
                _matrixCompMult(glsl_type::mat3x4_type),
                _matrixCompMult(glsl_type::mat4x2_type),
                _matrixCompMult(glsl_type::mat4x3_type),
                NULL);
   add_function("outerProduct",
                _outerProduct(glsl_type::mat2_type),
                _outerProduct(glsl_type::mat3_type),
                _outerProduct(glsl_type::mat4_type),
                _outerProduct(glsl_type::mat2x3_type),
                _outerProduct(glsl_type::mat2x4_type),
                _outerProduct(glsl_type::mat3x2_type),
                _outerProduct(glsl_type::mat3x4_type),
                _outerProduct(glsl_type::mat4x2_type),
                _outerProduct(glsl_type::mat4x3_type),
                NULL);
   add_function("determinant",
                _determinant_mat2(),
                _determinant_mat3(),
                _determinant_mat4(),
                NULL);
   add_function("inverse",
                _inverse_mat2(),
                _inverse_mat3(),
                _inverse_mat4(),
                NULL);
   add_function("transpose",
                _transpose(glsl_type::mat2_type),
                _transpose(glsl_type::mat3_type),
                _transpose(glsl_type::mat4_type),
                _transpose(glsl_type::mat2x3_type),
                _transpose(glsl_type::mat2x4_type),
                _transpose(glsl_type::mat3x2_type),
                _transpose(glsl_type::mat3x4_type),
                _transpose(glsl_type::mat4x2_type),
                _transpose(glsl_type::mat4x3_type),
                NULL);
   FIU(lessThan)
   FIU(lessThanEqual)
   FIU(greaterThan)
   FIU(greaterThanEqual)
   FIUB(notEqual)
   FIUB(equal)

   add_function("any",
                _any(glsl_type::bvec2_type),
                _any(glsl_type::bvec3_type),
                _any(glsl_type::bvec4_type),
                NULL);

   add_function("all",
                _all(glsl_type::bvec2_type),
                _all(glsl_type::bvec3_type),
                _all(glsl_type::bvec4_type),
                NULL);

   add_function("not",
                _not(glsl_type::bvec2_type),
                _not(glsl_type::bvec3_type),
                _not(glsl_type::bvec4_type),
                NULL);

   add_function("textureSize",
                _textureSize(v130, glsl_type::int_type,   glsl_type::sampler1D_type),
                _textureSize(v130, glsl_type::int_type,   glsl_type::isampler1D_type),
                _textureSize(v130, glsl_type::int_type,   glsl_type::usampler1D_type),

                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler2D_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::isampler2D_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::usampler2D_type),

                _textureSize(v130, glsl_type::ivec3_type, glsl_type::sampler3D_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::isampler3D_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::usampler3D_type),

                _textureSize(v130, glsl_type::ivec2_type, glsl_type::samplerCube_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::isamplerCube_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::usamplerCube_type),

                _textureSize(v130, glsl_type::int_type,   glsl_type::sampler1DShadow_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler2DShadow_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::samplerCubeShadow_type),

                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler1DArray_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::isampler1DArray_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::usampler1DArray_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::sampler2DArray_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::isampler2DArray_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::usampler2DArray_type),

                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler1DArrayShadow_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::sampler2DArrayShadow_type),

                _textureSize(texture_cube_map_array, glsl_type::ivec3_type, glsl_type::samplerCubeArray_type),
                _textureSize(texture_cube_map_array, glsl_type::ivec3_type, glsl_type::isamplerCubeArray_type),
                _textureSize(texture_cube_map_array, glsl_type::ivec3_type, glsl_type::usamplerCubeArray_type),
                _textureSize(texture_cube_map_array, glsl_type::ivec3_type, glsl_type::samplerCubeArrayShadow_type),

                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler2DRect_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::isampler2DRect_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::usampler2DRect_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler2DRectShadow_type),

                _textureSize(v140, glsl_type::int_type,   glsl_type::samplerBuffer_type),
                _textureSize(v140, glsl_type::int_type,   glsl_type::isamplerBuffer_type),
                _textureSize(v140, glsl_type::int_type,   glsl_type::usamplerBuffer_type),
                _textureSize(texture_multisample, glsl_type::ivec2_type, glsl_type::sampler2DMS_type),
                _textureSize(texture_multisample, glsl_type::ivec2_type, glsl_type::isampler2DMS_type),
                _textureSize(texture_multisample, glsl_type::ivec2_type, glsl_type::usampler2DMS_type),

                _textureSize(texture_multisample, glsl_type::ivec3_type, glsl_type::sampler2DMSArray_type),
                _textureSize(texture_multisample, glsl_type::ivec3_type, glsl_type::isampler2DMSArray_type),
                _textureSize(texture_multisample, glsl_type::ivec3_type, glsl_type::usampler2DMSArray_type),
                NULL);

   add_function("texture",
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::samplerCube_type,  glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type,   glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type,   glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::samplerCubeShadow_type, glsl_type::vec4_type),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type),

                _texture(ir_tex, texture_cube_map_array, glsl_type::vec4_type,  glsl_type::samplerCubeArray_type,  glsl_type::vec4_type),
                _texture(ir_tex, texture_cube_map_array, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_tex, texture_cube_map_array, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec4_type),
                /* samplerCubeArrayShadow is special; it has an extra parameter
                 * for the shadow comparitor since there is no vec5 type.
                 */
                _textureCubeArrayShadow(),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::samplerCube_type,  glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler1DShadow_type,   glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler2DShadow_type,   glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::samplerCubeShadow_type, glsl_type::vec4_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type),

                _texture(ir_txb, fs_texture_cube_map_array, glsl_type::vec4_type,  glsl_type::samplerCubeArray_type,  glsl_type::vec4_type),
                _texture(ir_txb, fs_texture_cube_map_array, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_txb, fs_texture_cube_map_array, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),

                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("textureLod",
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::samplerCube_type,  glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec3_type),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type),

                _texture(ir_txl, texture_cube_map_array, glsl_type::vec4_type,  glsl_type::samplerCubeArray_type,  glsl_type::vec4_type),
                _texture(ir_txl, texture_cube_map_array, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_txl, texture_cube_map_array, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("textureOffset",
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                NULL);

   add_function("textureProj",
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txb, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texelFetch",
                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::int_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::int_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::int_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::ivec2_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::ivec3_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::ivec2_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::ivec2_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::ivec3_type),

                _texelFetch(v140, glsl_type::vec4_type,  glsl_type::samplerBuffer_type,  glsl_type::int_type),
                _texelFetch(v140, glsl_type::ivec4_type, glsl_type::isamplerBuffer_type, glsl_type::int_type),
                _texelFetch(v140, glsl_type::uvec4_type, glsl_type::usamplerBuffer_type, glsl_type::int_type),

                _texelFetch(texture_multisample, glsl_type::vec4_type,  glsl_type::sampler2DMS_type,  glsl_type::ivec2_type),
                _texelFetch(texture_multisample, glsl_type::ivec4_type, glsl_type::isampler2DMS_type, glsl_type::ivec2_type),
                _texelFetch(texture_multisample, glsl_type::uvec4_type, glsl_type::usampler2DMS_type, glsl_type::ivec2_type),

                _texelFetch(texture_multisample, glsl_type::vec4_type,  glsl_type::sampler2DMSArray_type,  glsl_type::ivec3_type),
                _texelFetch(texture_multisample, glsl_type::ivec4_type, glsl_type::isampler2DMSArray_type, glsl_type::ivec3_type),
                _texelFetch(texture_multisample, glsl_type::uvec4_type, glsl_type::usampler2DMSArray_type, glsl_type::ivec3_type),
                NULL);

   add_function("texelFetchOffset",
                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::int_type, glsl_type::int_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::int_type, glsl_type::int_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::int_type, glsl_type::int_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::ivec2_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::ivec2_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::ivec2_type, glsl_type::ivec2_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::ivec3_type, glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::ivec3_type, glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::ivec3_type, glsl_type::ivec3_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::ivec2_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::ivec2_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::ivec2_type, glsl_type::ivec2_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::ivec2_type, glsl_type::int_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::ivec2_type, glsl_type::int_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::ivec2_type, glsl_type::int_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::ivec3_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::ivec3_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::ivec3_type, glsl_type::ivec2_type),

                NULL);

   add_function("textureProjOffset",
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txb, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                NULL);

   add_function("textureLodOffset",
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                NULL);

   add_function("textureProjLod",
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("textureProjLodOffset",
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                NULL);

   add_function("textureGrad",
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::samplerCube_type,  glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type,   glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type,   glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::samplerCubeShadow_type, glsl_type::vec4_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type),

                _texture(ir_txd, texture_cube_map_array, glsl_type::vec4_type,  glsl_type::samplerCubeArray_type,  glsl_type::vec4_type),
                _texture(ir_txd, texture_cube_map_array, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_txd, texture_cube_map_array, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec4_type),
                NULL);

   add_function("textureGradOffset",
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec4_type, TEX_OFFSET),
                NULL);

   add_function("textureProjGrad",
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("textureProjGradOffset",
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                NULL);

   add_function("EmitVertex",   _EmitVertex(),   NULL);
   add_function("EndPrimitive", _EndPrimitive(), NULL);
   add_function("EmitStreamVertex",
                _EmitStreamVertex(gs_streams, glsl_type::uint_type),
                _EmitStreamVertex(gs_streams, glsl_type::int_type),
                NULL);
   add_function("EndStreamPrimitive",
                _EndStreamPrimitive(gs_streams, glsl_type::uint_type),
                _EndStreamPrimitive(gs_streams, glsl_type::int_type),
                NULL);

   add_function("textureQueryLOD",
                _textureQueryLod(glsl_type::sampler1D_type,  glsl_type::float_type),
                _textureQueryLod(glsl_type::isampler1D_type, glsl_type::float_type),
                _textureQueryLod(glsl_type::usampler1D_type, glsl_type::float_type),

                _textureQueryLod(glsl_type::sampler2D_type,  glsl_type::vec2_type),
                _textureQueryLod(glsl_type::isampler2D_type, glsl_type::vec2_type),
                _textureQueryLod(glsl_type::usampler2D_type, glsl_type::vec2_type),

                _textureQueryLod(glsl_type::sampler3D_type,  glsl_type::vec3_type),
                _textureQueryLod(glsl_type::isampler3D_type, glsl_type::vec3_type),
                _textureQueryLod(glsl_type::usampler3D_type, glsl_type::vec3_type),

                _textureQueryLod(glsl_type::samplerCube_type,  glsl_type::vec3_type),
                _textureQueryLod(glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _textureQueryLod(glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _textureQueryLod(glsl_type::sampler1DArray_type,  glsl_type::float_type),
                _textureQueryLod(glsl_type::isampler1DArray_type, glsl_type::float_type),
                _textureQueryLod(glsl_type::usampler1DArray_type, glsl_type::float_type),

                _textureQueryLod(glsl_type::sampler2DArray_type,  glsl_type::vec2_type),
                _textureQueryLod(glsl_type::isampler2DArray_type, glsl_type::vec2_type),
                _textureQueryLod(glsl_type::usampler2DArray_type, glsl_type::vec2_type),

                _textureQueryLod(glsl_type::samplerCubeArray_type,  glsl_type::vec3_type),
                _textureQueryLod(glsl_type::isamplerCubeArray_type, glsl_type::vec3_type),
                _textureQueryLod(glsl_type::usamplerCubeArray_type, glsl_type::vec3_type),

                _textureQueryLod(glsl_type::sampler1DShadow_type, glsl_type::float_type),
                _textureQueryLod(glsl_type::sampler2DShadow_type, glsl_type::vec2_type),
                _textureQueryLod(glsl_type::samplerCubeShadow_type, glsl_type::vec3_type),
                _textureQueryLod(glsl_type::sampler1DArrayShadow_type, glsl_type::float_type),
                _textureQueryLod(glsl_type::sampler2DArrayShadow_type, glsl_type::vec2_type),
                _textureQueryLod(glsl_type::samplerCubeArrayShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("textureQueryLevels",
                _textureQueryLevels(glsl_type::sampler1D_type),
                _textureQueryLevels(glsl_type::sampler2D_type),
                _textureQueryLevels(glsl_type::sampler3D_type),
                _textureQueryLevels(glsl_type::samplerCube_type),
                _textureQueryLevels(glsl_type::sampler1DArray_type),
                _textureQueryLevels(glsl_type::sampler2DArray_type),
                _textureQueryLevels(glsl_type::samplerCubeArray_type),
                _textureQueryLevels(glsl_type::sampler1DShadow_type),
                _textureQueryLevels(glsl_type::sampler2DShadow_type),
                _textureQueryLevels(glsl_type::samplerCubeShadow_type),
                _textureQueryLevels(glsl_type::sampler1DArrayShadow_type),
                _textureQueryLevels(glsl_type::sampler2DArrayShadow_type),
                _textureQueryLevels(glsl_type::samplerCubeArrayShadow_type),

                _textureQueryLevels(glsl_type::isampler1D_type),
                _textureQueryLevels(glsl_type::isampler2D_type),
                _textureQueryLevels(glsl_type::isampler3D_type),
                _textureQueryLevels(glsl_type::isamplerCube_type),
                _textureQueryLevels(glsl_type::isampler1DArray_type),
                _textureQueryLevels(glsl_type::isampler2DArray_type),
                _textureQueryLevels(glsl_type::isamplerCubeArray_type),

                _textureQueryLevels(glsl_type::usampler1D_type),
                _textureQueryLevels(glsl_type::usampler2D_type),
                _textureQueryLevels(glsl_type::usampler3D_type),
                _textureQueryLevels(glsl_type::usamplerCube_type),
                _textureQueryLevels(glsl_type::usampler1DArray_type),
                _textureQueryLevels(glsl_type::usampler2DArray_type),
                _textureQueryLevels(glsl_type::usamplerCubeArray_type),

                NULL);

   add_function("texture1D",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::float_type),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::float_type),
                NULL);

   add_function("texture1DArray",
                _texture(ir_tex, texture_array,    glsl_type::vec4_type, glsl_type::sampler1DArray_type, glsl_type::vec2_type),
                _texture(ir_txb, fs_texture_array, glsl_type::vec4_type, glsl_type::sampler1DArray_type, glsl_type::vec2_type),
                NULL);

   add_function("texture1DProj",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture1DLod",
                _texture(ir_txl, tex1d_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::float_type),
                NULL);

   add_function("texture1DArrayLod",
                _texture(ir_txl, texture_array_lod, glsl_type::vec4_type, glsl_type::sampler1DArray_type, glsl_type::vec2_type),
                NULL);

   add_function("texture1DProjLod",
                _texture(ir_txl, tex1d_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txl, tex1d_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture2D",
                _texture(ir_tex, always_available, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec2_type),
                _texture(ir_txb, fs_only,          glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec2_type),
                _texture(ir_tex, texture_external, glsl_type::vec4_type,  glsl_type::samplerExternalOES_type, glsl_type::vec2_type),
                NULL);

   add_function("texture2DArray",
                _texture(ir_tex, texture_array,    glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_txb, fs_texture_array, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type),
                NULL);

   add_function("texture2DProj",
                _texture(ir_tex, always_available, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, always_available, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, fs_only,          glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txb, fs_only,          glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, texture_external, glsl_type::vec4_type,  glsl_type::samplerExternalOES_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, texture_external, glsl_type::vec4_type,  glsl_type::samplerExternalOES_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture2DLod",
                _texture(ir_txl, lod_exists_in_stage, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec2_type),
                NULL);

   add_function("texture2DArrayLod",
                _texture(ir_txl, texture_array_lod, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type),
                NULL);

   add_function("texture2DProjLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture3D",
                _texture(ir_tex, tex3d,    glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec3_type),
                _texture(ir_txb, fs_tex3d, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec3_type),
                NULL);

   add_function("texture3DProj",
                _texture(ir_tex, tex3d,    glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, fs_tex3d, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture3DLod",
                _texture(ir_txl, tex3d_lod, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec3_type),
                NULL);

   add_function("texture3DProjLod",
                _texture(ir_txl, tex3d_lod, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("textureCube",
                _texture(ir_tex, always_available, glsl_type::vec4_type,  glsl_type::samplerCube_type, glsl_type::vec3_type),
                _texture(ir_txb, fs_only,          glsl_type::vec4_type,  glsl_type::samplerCube_type, glsl_type::vec3_type),
                NULL);

   add_function("textureCubeLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::samplerCube_type, glsl_type::vec3_type),
                NULL);

   add_function("texture2DRect",
                _texture(ir_tex, texture_rectangle, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec2_type),
                NULL);

   add_function("texture2DRectProj",
                _texture(ir_tex, texture_rectangle, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, texture_rectangle, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow1D",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec3_type),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow1DArray",
                _texture(ir_tex, texture_array,    glsl_type::vec4_type,  glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                _texture(ir_txb, fs_texture_array, glsl_type::vec4_type,  glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2D",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec3_type),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2DArray",
                _texture(ir_tex, texture_array,    glsl_type::vec4_type,  glsl_type::sampler2DArrayShadow_type, glsl_type::vec4_type),
                _texture(ir_txb, fs_texture_array, glsl_type::vec4_type,  glsl_type::sampler2DArrayShadow_type, glsl_type::vec4_type),
                NULL);

   add_function("shadow1DProj",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow2DProj",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow1DLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2DLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow1DArrayLod",
                _texture(ir_txl, texture_array_lod, glsl_type::vec4_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow1DProjLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow2DProjLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow2DRect",
                _texture(ir_tex, texture_rectangle, glsl_type::vec4_type,  glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2DRectProj",
                _texture(ir_tex, texture_rectangle, glsl_type::vec4_type,  glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture1DGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::float_type),
                NULL);

   add_function("texture1DProjGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture2DGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec2_type),
                NULL);

   add_function("texture2DProjGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture3DGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec3_type),
                NULL);

   add_function("texture3DProjGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("textureCubeGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::samplerCube_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow1DGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow1DProjGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow2DGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2DProjGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture2DRectGradARB",
                _texture(ir_txd, shader_texture_lod_and_rect, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec2_type),
                NULL);

   add_function("texture2DRectProjGradARB",
                _texture(ir_txd, shader_texture_lod_and_rect, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, shader_texture_lod_and_rect, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow2DRectGradARB",
                _texture(ir_txd, shader_texture_lod_and_rect, glsl_type::vec4_type,  glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2DRectProjGradARB",
                _texture(ir_txd, shader_texture_lod_and_rect, glsl_type::vec4_type,  glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("textureGather",
                _texture(ir_tg4, texture_gather, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type),
                _texture(ir_tg4, texture_gather, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type),
                _texture(ir_tg4, texture_gather, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type),

                _texture(ir_tg4, texture_gather, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_tg4, texture_gather, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_tg4, texture_gather, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type),

                _texture(ir_tg4, texture_gather, glsl_type::vec4_type, glsl_type::samplerCube_type, glsl_type::vec3_type),
                _texture(ir_tg4, texture_gather, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _texture(ir_tg4, texture_gather, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _texture(ir_tg4, texture_gather, glsl_type::vec4_type, glsl_type::samplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_tg4, texture_gather, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_tg4, texture_gather, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::samplerCube_type, glsl_type::vec3_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type, TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::samplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DShadow_type, glsl_type::vec2_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::samplerCubeShadow_type, glsl_type::vec3_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::samplerCubeArrayShadow_type, glsl_type::vec4_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec2_type),
                NULL);

   add_function("textureGatherOffset",
                _texture(ir_tg4, texture_gather_only, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tg4, texture_gather_only, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tg4, texture_gather_only, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_tg4, texture_gather_only, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tg4, texture_gather_only, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tg4, texture_gather_only, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DShadow_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                NULL);

   add_function("textureGatherOffsets",
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DShadow_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                NULL);

   F(dFdx)
   F(dFdy)
   F(fwidth)
   F(dFdxCoarse)
   F(dFdyCoarse)
   F(fwidthCoarse)
   F(dFdxFine)
   F(dFdyFine)
   F(fwidthFine)
   F(noise1)
   F(noise2)
   F(noise3)
   F(noise4)

   IU(bitfieldExtract)
   IU(bitfieldInsert)
   IU(bitfieldReverse)
   IU(bitCount)
   IU(findLSB)
   IU(findMSB)
   F(fma)

   add_function("ldexp",
                _ldexp(glsl_type::float_type, glsl_type::int_type),
                _ldexp(glsl_type::vec2_type,  glsl_type::ivec2_type),
                _ldexp(glsl_type::vec3_type,  glsl_type::ivec3_type),
                _ldexp(glsl_type::vec4_type,  glsl_type::ivec4_type),
                NULL);

   add_function("frexp",
                _frexp(glsl_type::float_type, glsl_type::int_type),
                _frexp(glsl_type::vec2_type,  glsl_type::ivec2_type),
                _frexp(glsl_type::vec3_type,  glsl_type::ivec3_type),
                _frexp(glsl_type::vec4_type,  glsl_type::ivec4_type),
                NULL);
   add_function("uaddCarry",
                _uaddCarry(glsl_type::uint_type),
                _uaddCarry(glsl_type::uvec2_type),
                _uaddCarry(glsl_type::uvec3_type),
                _uaddCarry(glsl_type::uvec4_type),
                NULL);
   add_function("usubBorrow",
                _usubBorrow(glsl_type::uint_type),
                _usubBorrow(glsl_type::uvec2_type),
                _usubBorrow(glsl_type::uvec3_type),
                _usubBorrow(glsl_type::uvec4_type),
                NULL);
   add_function("imulExtended",
                _mulExtended(glsl_type::int_type),
                _mulExtended(glsl_type::ivec2_type),
                _mulExtended(glsl_type::ivec3_type),
                _mulExtended(glsl_type::ivec4_type),
                NULL);
   add_function("umulExtended",
                _mulExtended(glsl_type::uint_type),
                _mulExtended(glsl_type::uvec2_type),
                _mulExtended(glsl_type::uvec3_type),
                _mulExtended(glsl_type::uvec4_type),
                NULL);
   add_function("interpolateAtCentroid",
                _interpolateAtCentroid(glsl_type::float_type),
                _interpolateAtCentroid(glsl_type::vec2_type),
                _interpolateAtCentroid(glsl_type::vec3_type),
                _interpolateAtCentroid(glsl_type::vec4_type),
                NULL);
   add_function("interpolateAtOffset",
                _interpolateAtOffset(glsl_type::float_type),
                _interpolateAtOffset(glsl_type::vec2_type),
                _interpolateAtOffset(glsl_type::vec3_type),
                _interpolateAtOffset(glsl_type::vec4_type),
                NULL);
   add_function("interpolateAtSample",
                _interpolateAtSample(glsl_type::float_type),
                _interpolateAtSample(glsl_type::vec2_type),
                _interpolateAtSample(glsl_type::vec3_type),
                _interpolateAtSample(glsl_type::vec4_type),
                NULL);

   add_function("atomicCounter",
                _atomic_op("__intrinsic_atomic_read",
                           shader_atomic_counters),
                NULL);
   add_function("atomicCounterIncrement",
                _atomic_op("__intrinsic_atomic_increment",
                           shader_atomic_counters),
                NULL);
   add_function("atomicCounterDecrement",
                _atomic_op("__intrinsic_atomic_predecrement",
                           shader_atomic_counters),
                NULL);

   add_function("min3",
                _min3(glsl_type::float_type),
                _min3(glsl_type::vec2_type),
                _min3(glsl_type::vec3_type),
                _min3(glsl_type::vec4_type),

                _min3(glsl_type::int_type),
                _min3(glsl_type::ivec2_type),
                _min3(glsl_type::ivec3_type),
                _min3(glsl_type::ivec4_type),

                _min3(glsl_type::uint_type),
                _min3(glsl_type::uvec2_type),
                _min3(glsl_type::uvec3_type),
                _min3(glsl_type::uvec4_type),
                NULL);

   add_function("max3",
                _max3(glsl_type::float_type),
                _max3(glsl_type::vec2_type),
                _max3(glsl_type::vec3_type),
                _max3(glsl_type::vec4_type),

                _max3(glsl_type::int_type),
                _max3(glsl_type::ivec2_type),
                _max3(glsl_type::ivec3_type),
                _max3(glsl_type::ivec4_type),

                _max3(glsl_type::uint_type),
                _max3(glsl_type::uvec2_type),
                _max3(glsl_type::uvec3_type),
                _max3(glsl_type::uvec4_type),
                NULL);

   add_function("mid3",
                _mid3(glsl_type::float_type),
                _mid3(glsl_type::vec2_type),
                _mid3(glsl_type::vec3_type),
                _mid3(glsl_type::vec4_type),

                _mid3(glsl_type::int_type),
                _mid3(glsl_type::ivec2_type),
                _mid3(glsl_type::ivec3_type),
                _mid3(glsl_type::ivec4_type),

                _mid3(glsl_type::uint_type),
                _mid3(glsl_type::uvec2_type),
                _mid3(glsl_type::uvec3_type),
                _mid3(glsl_type::uvec4_type),
                NULL);

   add_image_functions(true);

   add_function("memoryBarrier",
                _memory_barrier(shader_image_load_store),
                NULL);

#undef F
#undef FI
#undef FIU
#undef FIUB
#undef FIU2_MIXED
}

void
builtin_builder::add_function(const char *name, ...)
{
   va_list ap;

   ir_function *f = new(mem_ctx) ir_function(name);

   va_start(ap, name);
   while (true) {
      ir_function_signature *sig = va_arg(ap, ir_function_signature *);
      if (sig == NULL)
         break;

      if (false) {
         exec_list stuff;
         stuff.push_tail(sig);
         validate_ir_tree(&stuff);
      }

      f->add_signature(sig);
   }
   va_end(ap);

   shader->symbols->add_function(f);
}

void
builtin_builder::add_image_function(const char *name,
                                    const char *intrinsic_name,
                                    unsigned num_arguments,
                                    unsigned flags)
{
   static const glsl_type *const types[] = {
      glsl_type::image1D_type,
      glsl_type::image2D_type,
      glsl_type::image3D_type,
      glsl_type::image2DRect_type,
      glsl_type::imageCube_type,
      glsl_type::imageBuffer_type,
      glsl_type::image1DArray_type,
      glsl_type::image2DArray_type,
      glsl_type::imageCubeArray_type,
      glsl_type::image2DMS_type,
      glsl_type::image2DMSArray_type,
      glsl_type::iimage1D_type,
      glsl_type::iimage2D_type,
      glsl_type::iimage3D_type,
      glsl_type::iimage2DRect_type,
      glsl_type::iimageCube_type,
      glsl_type::iimageBuffer_type,
      glsl_type::iimage1DArray_type,
      glsl_type::iimage2DArray_type,
      glsl_type::iimageCubeArray_type,
      glsl_type::iimage2DMS_type,
      glsl_type::iimage2DMSArray_type,
      glsl_type::uimage1D_type,
      glsl_type::uimage2D_type,
      glsl_type::uimage3D_type,
      glsl_type::uimage2DRect_type,
      glsl_type::uimageCube_type,
      glsl_type::uimageBuffer_type,
      glsl_type::uimage1DArray_type,
      glsl_type::uimage2DArray_type,
      glsl_type::uimageCubeArray_type,
      glsl_type::uimage2DMS_type,
      glsl_type::uimage2DMSArray_type
   };
   ir_function *f = new(mem_ctx) ir_function(name);

   for (unsigned i = 0; i < Elements(types); ++i) {
      if (types[i]->sampler_type != GLSL_TYPE_FLOAT ||
          (flags & IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE))
         f->add_signature(_image(types[i], intrinsic_name,
                                 num_arguments, flags));
   }

   shader->symbols->add_function(f);
}

void
builtin_builder::add_image_functions(bool glsl)
{
   const unsigned flags = (glsl ? IMAGE_FUNCTION_EMIT_STUB : 0);

   add_image_function(glsl ? "imageLoad" : "__intrinsic_image_load",
                      "__intrinsic_image_load", 0,
                      (flags | IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE |
                       IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE |
                       IMAGE_FUNCTION_READ_ONLY));

   add_image_function(glsl ? "imageStore" : "__intrinsic_image_store",
                      "__intrinsic_image_store", 1,
                      (flags | IMAGE_FUNCTION_RETURNS_VOID |
                       IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE |
                       IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE |
                       IMAGE_FUNCTION_WRITE_ONLY));

   add_image_function(glsl ? "imageAtomicAdd" : "__intrinsic_image_atomic_add",
                      "__intrinsic_image_atomic_add", 1, flags);

   add_image_function(glsl ? "imageAtomicMin" : "__intrinsic_image_atomic_min",
                      "__intrinsic_image_atomic_min", 1, flags);

   add_image_function(glsl ? "imageAtomicMax" : "__intrinsic_image_atomic_max",
                      "__intrinsic_image_atomic_max", 1, flags);

   add_image_function(glsl ? "imageAtomicAnd" : "__intrinsic_image_atomic_and",
                      "__intrinsic_image_atomic_and", 1, flags);

   add_image_function(glsl ? "imageAtomicOr" : "__intrinsic_image_atomic_or",
                      "__intrinsic_image_atomic_or", 1, flags);

   add_image_function(glsl ? "imageAtomicXor" : "__intrinsic_image_atomic_xor",
                      "__intrinsic_image_atomic_xor", 1, flags);

   add_image_function((glsl ? "imageAtomicExchange" :
                       "__intrinsic_image_atomic_exchange"),
                      "__intrinsic_image_atomic_exchange", 1, flags);

   add_image_function((glsl ? "imageAtomicCompSwap" :
                       "__intrinsic_image_atomic_comp_swap"),
                      "__intrinsic_image_atomic_comp_swap", 2, flags);
}

ir_variable *
builtin_builder::in_var(const glsl_type *type, const char *name)
{
   return new(mem_ctx) ir_variable(type, name, ir_var_function_in);
}

ir_variable *
builtin_builder::out_var(const glsl_type *type, const char *name)
{
   return new(mem_ctx) ir_variable(type, name, ir_var_function_out);
}

ir_constant *
builtin_builder::imm(float f, unsigned vector_elements)
{
   return new(mem_ctx) ir_constant(f, vector_elements);
}

ir_constant *
builtin_builder::imm(int i, unsigned vector_elements)
{
   return new(mem_ctx) ir_constant(i, vector_elements);
}

ir_constant *
builtin_builder::imm(unsigned u, unsigned vector_elements)
{
   return new(mem_ctx) ir_constant(u, vector_elements);
}

ir_constant *
builtin_builder::imm(const glsl_type *type, const ir_constant_data &data)
{
   return new(mem_ctx) ir_constant(type, &data);
}

ir_dereference_variable *
builtin_builder::var_ref(ir_variable *var)
{
   return new(mem_ctx) ir_dereference_variable(var);
}

ir_dereference_array *
builtin_builder::array_ref(ir_variable *var, int idx)
{
   return new(mem_ctx) ir_dereference_array(var, imm(idx));
}

/** Return an element of a matrix */
ir_swizzle *
builtin_builder::matrix_elt(ir_variable *var, int column, int row)
{
   return swizzle(array_ref(var, column), row, 1);
}

/**
 * Implementations of built-in functions:
 *  @@{
 */
ir_function_signature *
builtin_builder::new_sig(const glsl_type *return_type,
                         builtin_available_predicate avail,
                         int num_params,
                         ...)
{
   va_list ap;

   ir_function_signature *sig =
      new(mem_ctx) ir_function_signature(return_type, avail);

   exec_list plist;
   va_start(ap, num_params);
   for (int i = 0; i < num_params; i++) {
      plist.push_tail(va_arg(ap, ir_variable *));
   }
   va_end(ap);

   sig->replace_parameters(&plist);
   return sig;
}

#define MAKE_SIG(return_type, avail, ...)  \
   ir_function_signature *sig =               \
      new_sig(return_type, avail, __VA_ARGS__);      \
   ir_factory body(&sig->body, mem_ctx);             \
   sig->is_defined = true;

#define MAKE_INTRINSIC(return_type, avail, ...)      \
   ir_function_signature *sig =                      \
      new_sig(return_type, avail, __VA_ARGS__);      \
   sig->is_intrinsic = true;

ir_function_signature *
builtin_builder::unop(builtin_available_predicate avail,
                      ir_expression_operation opcode,
                      const glsl_type *return_type,
                      const glsl_type *param_type)
{
   ir_variable *x = in_var(param_type, "x");
   MAKE_SIG(return_type, avail, 1, x);
   body.emit(ret(expr(opcode, x)));
   return sig;
}

#define UNOP(NAME, OPCODE, AVAIL)               \
ir_function_signature *                         \
builtin_builder::_##NAME(const glsl_type *type) \
{                                               \
   return unop(&AVAIL, OPCODE, type, type);     \
}

ir_function_signature *
builtin_builder::binop(ir_expression_operation opcode,
                       builtin_available_predicate avail,
                       const glsl_type *return_type,
                       const glsl_type *param0_type,
                       const glsl_type *param1_type)
{
   ir_variable *x = in_var(param0_type, "x");
   ir_variable *y = in_var(param1_type, "y");
   MAKE_SIG(return_type, avail, 2, x, y);
   body.emit(ret(expr(opcode, x, y)));
   return sig;
}

#define BINOP(NAME, OPCODE, AVAIL)                                      \
ir_function_signature *                                                 \
builtin_builder::_##NAME(const glsl_type *return_type,                  \
                         const glsl_type *param0_type,                  \
                         const glsl_type *param1_type)                  \
{                                                                       \
   return binop(&AVAIL, OPCODE, return_type, param0_type, param1_type); \
}

/**
 * Angle and Trigonometry Functions @@{
 */

ir_function_signature *
builtin_builder::_radians(const glsl_type *type)
{
   ir_variable *degrees = in_var(type, "degrees");
   MAKE_SIG(type, always_available, 1, degrees);
   body.emit(ret(mul(degrees, imm(0.0174532925f))));
   return sig;
}

ir_function_signature *
builtin_builder::_degrees(const glsl_type *type)
{
   ir_variable *radians = in_var(type, "radians");
   MAKE_SIG(type, always_available, 1, radians);
   body.emit(ret(mul(radians, imm(57.29578f))));
   return sig;
}

UNOP(sin, ir_unop_sin, always_available)
UNOP(cos, ir_unop_cos, always_available)

ir_function_signature *
builtin_builder::_tan(const glsl_type *type)
{
   ir_variable *theta = in_var(type, "theta");
   MAKE_SIG(type, always_available, 1, theta);
   body.emit(ret(div(sin(theta), cos(theta))));
   return sig;
}

ir_expression *
builtin_builder::asin_expr(ir_variable *x)
{
   return mul(sign(x),
              sub(imm(M_PI_2f),
                  mul(sqrt(sub(imm(1.0f), abs(x))),
                      add(imm(M_PI_2f),
                          mul(abs(x),
                              add(imm(M_PI_4f - 1.0f),
                                  mul(abs(x),
                                      add(imm(0.086566724f),
                                          mul(abs(x), imm(-0.03102955f))))))))));
}

ir_call *
builtin_builder::call(ir_function *f, ir_variable *ret, exec_list params)
{
   exec_list actual_params;

   foreach_in_list(ir_variable, var, &params) {
      actual_params.push_tail(var_ref(var));
   }

   ir_function_signature *sig =
      f->exact_matching_signature(NULL, &actual_params);
   if (!sig)
      return NULL;

   ir_dereference_variable *deref =
      (sig->return_type->is_void() ? NULL : var_ref(ret));

   return new(mem_ctx) ir_call(sig, deref, &actual_params);
}

ir_function_signature *
builtin_builder::_asin(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, always_available, 1, x);

   body.emit(ret(asin_expr(x)));

   return sig;
}

ir_function_signature *
builtin_builder::_acos(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, always_available, 1, x);

   body.emit(ret(sub(imm(M_PI_2f), asin_expr(x))));

   return sig;
}

ir_function_signature *
builtin_builder::_atan2(const glsl_type *type)
{
   ir_variable *vec_y = in_var(type, "vec_y");
   ir_variable *vec_x = in_var(type, "vec_x");
   MAKE_SIG(type, always_available, 2, vec_y, vec_x);

   ir_variable *vec_result = body.make_temp(type, "vec_result");
   ir_variable *r = body.make_temp(glsl_type::float_type, "r");
   for (int i = 0; i < type->vector_elements; i++) {
      ir_variable *y = body.make_temp(glsl_type::float_type, "y");
      ir_variable *x = body.make_temp(glsl_type::float_type, "x");
      body.emit(assign(y, swizzle(vec_y, i, 1)));
      body.emit(assign(x, swizzle(vec_x, i, 1)));

      /* If |x| >= 1.0e-8 * |y|: */
      ir_if *outer_if =
         new(mem_ctx) ir_if(greater(abs(x), mul(imm(1.0e-8f), abs(y))));

      ir_factory outer_then(&outer_if->then_instructions, mem_ctx);

      /* Then...call atan(y/x) */
      ir_variable *y_over_x = outer_then.make_temp(glsl_type::float_type, "y_over_x");
      outer_then.emit(assign(y_over_x, div(y, x)));
      outer_then.emit(assign(r, mul(y_over_x, rsq(add(mul(y_over_x, y_over_x),
                                                      imm(1.0f))))));
      outer_then.emit(assign(r, asin_expr(r)));

      /*     ...and fix it up: */
      ir_if *inner_if = new(mem_ctx) ir_if(less(x, imm(0.0f)));
      inner_if->then_instructions.push_tail(
         if_tree(gequal(y, imm(0.0f)),
                 assign(r, add(r, imm(M_PIf))),
                 assign(r, sub(r, imm(M_PIf)))));
      outer_then.emit(inner_if);

      /* Else... */
      outer_if->else_instructions.push_tail(
         assign(r, mul(sign(y), imm(M_PI_2f))));

      body.emit(outer_if);

      body.emit(assign(vec_result, r, 1 << i));
   }
   body.emit(ret(vec_result));

   return sig;
}

ir_function_signature *
builtin_builder::_atan(const glsl_type *type)
{
   ir_variable *y_over_x = in_var(type, "y_over_x");
   MAKE_SIG(type, always_available, 1, y_over_x);

   ir_variable *t = body.make_temp(type, "t");
   body.emit(assign(t, mul(y_over_x, rsq(add(mul(y_over_x, y_over_x),
                                             imm(1.0f))))));

   body.emit(ret(asin_expr(t)));

   return sig;
}

ir_function_signature *
builtin_builder::_sinh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   /* 0.5 * (e^x - e^(-x)) */
   body.emit(ret(mul(imm(0.5f), sub(exp(x), exp(neg(x))))));

   return sig;
}

ir_function_signature *
builtin_builder::_cosh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   /* 0.5 * (e^x + e^(-x)) */
   body.emit(ret(mul(imm(0.5f), add(exp(x), exp(neg(x))))));

   return sig;
}

ir_function_signature *
builtin_builder::_tanh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   /* (e^x - e^(-x)) / (e^x + e^(-x)) */
   body.emit(ret(div(sub(exp(x), exp(neg(x))),
                     add(exp(x), exp(neg(x))))));

   return sig;
}

ir_function_signature *
builtin_builder::_asinh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   body.emit(ret(mul(sign(x), log(add(abs(x), sqrt(add(mul(x, x),
                                                       imm(1.0f))))))));
   return sig;
}

ir_function_signature *
builtin_builder::_acosh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   body.emit(ret(log(add(x, sqrt(sub(mul(x, x), imm(1.0f)))))));
   return sig;
}

ir_function_signature *
builtin_builder::_atanh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   body.emit(ret(mul(imm(0.5f), log(div(add(imm(1.0f), x),
                                        sub(imm(1.0f), x))))));
   return sig;
}
/** @@} */

/**
 * Exponential Functions @@{
 */

ir_function_signature *
builtin_builder::_pow(const glsl_type *type)
{
   return binop(ir_binop_pow, always_available, type, type, type);
}

UNOP(exp,         ir_unop_exp,  always_available)
UNOP(log,         ir_unop_log,  always_available)
UNOP(exp2,        ir_unop_exp2, always_available)
UNOP(log2,        ir_unop_log2, always_available)
UNOP(sqrt,        ir_unop_sqrt, always_available)
UNOP(inversesqrt, ir_unop_rsq,  always_available)

/** @@} */

UNOP(abs,       ir_unop_abs,        always_available)
UNOP(sign,      ir_unop_sign,       always_available)
UNOP(floor,     ir_unop_floor,      always_available)
UNOP(trunc,     ir_unop_trunc,      v130)
UNOP(round,     ir_unop_round_even, always_available)
UNOP(roundEven, ir_unop_round_even, always_available)
UNOP(ceil,      ir_unop_ceil,       always_available)
UNOP(fract,     ir_unop_fract,      always_available)

ir_function_signature *
builtin_builder::_mod(const glsl_type *x_type, const glsl_type *y_type)
{
   return binop(ir_binop_mod, always_available, x_type, x_type, y_type);
}

ir_function_signature *
builtin_builder::_modf(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *i = out_var(type, "i");
   MAKE_SIG(type, v130, 2, x, i);

   ir_variable *t = body.make_temp(type, "t");
   body.emit(assign(t, expr(ir_unop_trunc, x)));
   body.emit(assign(i, t));
   body.emit(ret(sub(x, t)));

   return sig;
}

ir_function_signature *
builtin_builder::_min(builtin_available_predicate avail,
                      const glsl_type *x_type, const glsl_type *y_type)
{
   return binop(ir_binop_min, avail, x_type, x_type, y_type);
}

ir_function_signature *
builtin_builder::_max(builtin_available_predicate avail,
                      const glsl_type *x_type, const glsl_type *y_type)
{
   return binop(ir_binop_max, avail, x_type, x_type, y_type);
}

ir_function_signature *
builtin_builder::_clamp(builtin_available_predicate avail,
                        const glsl_type *val_type, const glsl_type *bound_type)
{
   ir_variable *x = in_var(val_type, "x");
   ir_variable *minVal = in_var(bound_type, "minVal");
   ir_variable *maxVal = in_var(bound_type, "maxVal");
   MAKE_SIG(val_type, avail, 3, x, minVal, maxVal);

   body.emit(ret(clamp(x, minVal, maxVal)));

   return sig;
}

ir_function_signature *
builtin_builder::_mix_lrp(const glsl_type *val_type, const glsl_type *blend_type)
{
   ir_variable *x = in_var(val_type, "x");
   ir_variable *y = in_var(val_type, "y");
   ir_variable *a = in_var(blend_type, "a");
   MAKE_SIG(val_type, always_available, 3, x, y, a);

   body.emit(ret(lrp(x, y, a)));

   return sig;
}

ir_function_signature *
builtin_builder::_mix_sel(builtin_available_predicate avail,
                          const glsl_type *val_type,
                          const glsl_type *blend_type)
{
   ir_variable *x = in_var(val_type, "x");
   ir_variable *y = in_var(val_type, "y");
   ir_variable *a = in_var(blend_type, "a");
   MAKE_SIG(val_type, avail, 3, x, y, a);

   /* csel matches the ternary operator in that a selector of true choses the
    * first argument. This differs from mix(x, y, false) which choses the
    * second argument (to remain consistent with the interpolating version of
    * mix() which takes a blend factor from 0.0 to 1.0 where 0.0 is only x.
    *
    * To handle the behavior mismatch, reverse the x and y arguments.
    */
   body.emit(ret(csel(a, y, x)));

   return sig;
}

ir_function_signature *
builtin_builder::_step(const glsl_type *edge_type, const glsl_type *x_type)
{
   ir_variable *edge = in_var(edge_type, "edge");
   ir_variable *x = in_var(x_type, "x");
   MAKE_SIG(x_type, always_available, 2, edge, x);

   ir_variable *t = body.make_temp(x_type, "t");
   if (x_type->vector_elements == 1) {
      /* Both are floats */
      body.emit(assign(t, b2f(gequal(x, edge))));
   } else if (edge_type->vector_elements == 1) {
      /* x is a vector but edge is a float */
      for (int i = 0; i < x_type->vector_elements; i++) {
         body.emit(assign(t, b2f(gequal(swizzle(x, i, 1), edge)), 1 << i));
      }
   } else {
      /* Both are vectors */
      for (int i = 0; i < x_type->vector_elements; i++) {
         body.emit(assign(t, b2f(gequal(swizzle(x, i, 1), swizzle(edge, i, 1))),
                          1 << i));
      }
   }
   body.emit(ret(t));

   return sig;
}

ir_function_signature *
builtin_builder::_smoothstep(const glsl_type *edge_type, const glsl_type *x_type)
{
   ir_variable *edge0 = in_var(edge_type, "edge0");
   ir_variable *edge1 = in_var(edge_type, "edge1");
   ir_variable *x = in_var(x_type, "x");
   MAKE_SIG(x_type, always_available, 3, edge0, edge1, x);

   /* From the GLSL 1.10 specification:
    *
    *    genType t;
    *    t = clamp((x - edge0) / (edge1 - edge0), 0, 1);
    *    return t * t * (3 - 2 * t);
    */

   ir_variable *t = body.make_temp(x_type, "t");
   body.emit(assign(t, clamp(div(sub(x, edge0), sub(edge1, edge0)),
                             imm(0.0f), imm(1.0f))));

   body.emit(ret(mul(t, mul(t, sub(imm(3.0f), mul(imm(2.0f), t))))));

   return sig;
}

ir_function_signature *
builtin_builder::_isnan(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::bvec(type->vector_elements), v130, 1, x);

   body.emit(ret(nequal(x, x)));

   return sig;
}

ir_function_signature *
builtin_builder::_isinf(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::bvec(type->vector_elements), v130, 1, x);

   ir_constant_data infinities;
   for (int i = 0; i < type->vector_elements; i++) {
      infinities.f[i] = std::numeric_limits<float>::infinity();
   }

   body.emit(ret(equal(abs(x), imm(type, infinities))));

   return sig;
}

ir_function_signature *
builtin_builder::_floatBitsToInt(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::ivec(type->vector_elements), shader_bit_encoding, 1, x);
   body.emit(ret(bitcast_f2i(x)));
   return sig;
}

ir_function_signature *
builtin_builder::_floatBitsToUint(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::uvec(type->vector_elements), shader_bit_encoding, 1, x);
   body.emit(ret(bitcast_f2u(x)));
   return sig;
}

ir_function_signature *
builtin_builder::_intBitsToFloat(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::vec(type->vector_elements), shader_bit_encoding, 1, x);
   body.emit(ret(bitcast_i2f(x)));
   return sig;
}

ir_function_signature *
builtin_builder::_uintBitsToFloat(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::vec(type->vector_elements), shader_bit_encoding, 1, x);
   body.emit(ret(bitcast_u2f(x)));
   return sig;
}

ir_function_signature *
builtin_builder::_packUnorm2x16(builtin_available_predicate avail)
{
   ir_variable *v = in_var(glsl_type::vec2_type, "v");
   MAKE_SIG(glsl_type::uint_type, avail, 1, v);
   body.emit(ret(expr(ir_unop_pack_unorm_2x16, v)));
   return sig;
}

ir_function_signature *
builtin_builder::_packSnorm2x16(builtin_available_predicate avail)
{
   ir_variable *v = in_var(glsl_type::vec2_type, "v");
   MAKE_SIG(glsl_type::uint_type, avail, 1, v);
   body.emit(ret(expr(ir_unop_pack_snorm_2x16, v)));
   return sig;
}

ir_function_signature *
builtin_builder::_packUnorm4x8(builtin_available_predicate avail)
{
   ir_variable *v = in_var(glsl_type::vec4_type, "v");
   MAKE_SIG(glsl_type::uint_type, avail, 1, v);
   body.emit(ret(expr(ir_unop_pack_unorm_4x8, v)));
   return sig;
}

ir_function_signature *
builtin_builder::_packSnorm4x8(builtin_available_predicate avail)
{
   ir_variable *v = in_var(glsl_type::vec4_type, "v");
   MAKE_SIG(glsl_type::uint_type, avail, 1, v);
   body.emit(ret(expr(ir_unop_pack_snorm_4x8, v)));
   return sig;
}

ir_function_signature *
builtin_builder::_unpackUnorm2x16(builtin_available_predicate avail)
{
   ir_variable *p = in_var(glsl_type::uint_type, "p");
   MAKE_SIG(glsl_type::vec2_type, avail, 1, p);
   body.emit(ret(expr(ir_unop_unpack_unorm_2x16, p)));
   return sig;
}

ir_function_signature *
builtin_builder::_unpackSnorm2x16(builtin_available_predicate avail)
{
   ir_variable *p = in_var(glsl_type::uint_type, "p");
   MAKE_SIG(glsl_type::vec2_type, avail, 1, p);
   body.emit(ret(expr(ir_unop_unpack_snorm_2x16, p)));
   return sig;
}


ir_function_signature *
builtin_builder::_unpackUnorm4x8(builtin_available_predicate avail)
{
   ir_variable *p = in_var(glsl_type::uint_type, "p");
   MAKE_SIG(glsl_type::vec4_type, avail, 1, p);
   body.emit(ret(expr(ir_unop_unpack_unorm_4x8, p)));
   return sig;
}

ir_function_signature *
builtin_builder::_unpackSnorm4x8(builtin_available_predicate avail)
{
   ir_variable *p = in_var(glsl_type::uint_type, "p");
   MAKE_SIG(glsl_type::vec4_type, avail, 1, p);
   body.emit(ret(expr(ir_unop_unpack_snorm_4x8, p)));
   return sig;
}

ir_function_signature *
builtin_builder::_packHalf2x16(builtin_available_predicate avail)
{
   ir_variable *v = in_var(glsl_type::vec2_type, "v");
   MAKE_SIG(glsl_type::uint_type, avail, 1, v);
   body.emit(ret(expr(ir_unop_pack_half_2x16, v)));
   return sig;
}

ir_function_signature *
builtin_builder::_unpackHalf2x16(builtin_available_predicate avail)
{
   ir_variable *p = in_var(glsl_type::uint_type, "p");
   MAKE_SIG(glsl_type::vec2_type, avail, 1, p);
   body.emit(ret(expr(ir_unop_unpack_half_2x16, p)));
   return sig;
}

ir_function_signature *
builtin_builder::_length(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::float_type, always_available, 1, x);

   body.emit(ret(sqrt(dot(x, x))));

   return sig;
}

ir_function_signature *
builtin_builder::_distance(const glsl_type *type)
{
   ir_variable *p0 = in_var(type, "p0");
   ir_variable *p1 = in_var(type, "p1");
   MAKE_SIG(glsl_type::float_type, always_available, 2, p0, p1);

   if (type->vector_elements == 1) {
      body.emit(ret(abs(sub(p0, p1))));
   } else {
      ir_variable *p = body.make_temp(type, "p");
      body.emit(assign(p, sub(p0, p1)));
      body.emit(ret(sqrt(dot(p, p))));
   }

   return sig;
}

ir_function_signature *
builtin_builder::_dot(const glsl_type *type)
{
   if (type->vector_elements == 1)
      return binop(ir_binop_mul, always_available, type, type, type);

   return binop(ir_binop_dot, always_available,
                glsl_type::float_type, type, type);
}

ir_function_signature *
builtin_builder::_cross(const glsl_type *type)
{
   ir_variable *a = in_var(type, "a");
   ir_variable *b = in_var(type, "b");
   MAKE_SIG(type, always_available, 2, a, b);

   int yzx = MAKE_SWIZZLE4(SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X, 0);
   int zxy = MAKE_SWIZZLE4(SWIZZLE_Z, SWIZZLE_X, SWIZZLE_Y, 0);

   body.emit(ret(sub(mul(swizzle(a, yzx, 3), swizzle(b, zxy, 3)),
                     mul(swizzle(a, zxy, 3), swizzle(b, yzx, 3)))));

   return sig;
}

ir_function_signature *
builtin_builder::_normalize(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, always_available, 1, x);

   if (type->vector_elements == 1) {
      body.emit(ret(sign(x)));
   } else {
      body.emit(ret(mul(x, rsq(dot(x, x)))));
   }

   return sig;
}

ir_function_signature *
builtin_builder::_ftransform()
{
   MAKE_SIG(glsl_type::vec4_type, compatibility_vs_only, 0);

   body.emit(ret(new(mem_ctx) ir_expression(ir_binop_mul,
      glsl_type::vec4_type,
      var_ref(gl_ModelViewProjectionMatrix),
      var_ref(gl_Vertex))));

   /* FINISHME: Once the ir_expression() constructor handles type inference
    *           for matrix operations, we can simplify this to:
    *
    *    body.emit(ret(mul(gl_ModelViewProjectionMatrix, gl_Vertex)));
    */
   return sig;
}

ir_function_signature *
builtin_builder::_faceforward(const glsl_type *type)
{
   ir_variable *N = in_var(type, "N");
   ir_variable *I = in_var(type, "I");
   ir_variable *Nref = in_var(type, "Nref");
   MAKE_SIG(type, always_available, 3, N, I, Nref);

   body.emit(if_tree(less(dot(Nref, I), imm(0.0f)),
                     ret(N), ret(neg(N))));

   return sig;
}

ir_function_signature *
builtin_builder::_reflect(const glsl_type *type)
{
   ir_variable *I = in_var(type, "I");
   ir_variable *N = in_var(type, "N");
   MAKE_SIG(type, always_available, 2, I, N);

   /* I - 2 * dot(N, I) * N */
   body.emit(ret(sub(I, mul(imm(2.0f), mul(dot(N, I), N)))));

   return sig;
}

ir_function_signature *
builtin_builder::_refract(const glsl_type *type)
{
   ir_variable *I = in_var(type, "I");
   ir_variable *N = in_var(type, "N");
   ir_variable *eta = in_var(glsl_type::float_type, "eta");
   MAKE_SIG(type, always_available, 3, I, N, eta);

   ir_variable *n_dot_i = body.make_temp(glsl_type::float_type, "n_dot_i");
   body.emit(assign(n_dot_i, dot(N, I)));

   /* From the GLSL 1.10 specification:
    * k = 1.0 - eta * eta * (1.0 - dot(N, I) * dot(N, I))
    * if (k < 0.0)
    *    return genType(0.0)
    * else
    *    return eta * I - (eta * dot(N, I) + sqrt(k)) * N
    */
   ir_variable *k = body.make_temp(glsl_type::float_type, "k");
   body.emit(assign(k, sub(imm(1.0f),
                           mul(eta, mul(eta, sub(imm(1.0f),
                                                 mul(n_dot_i, n_dot_i)))))));
   body.emit(if_tree(less(k, imm(0.0f)),
                     ret(ir_constant::zero(mem_ctx, type)),
                     ret(sub(mul(eta, I),
                             mul(add(mul(eta, n_dot_i), sqrt(k)), N)))));

   return sig;
}

ir_function_signature *
builtin_builder::_matrixCompMult(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   MAKE_SIG(type, always_available, 2, x, y);

   ir_variable *z = body.make_temp(type, "z");
   for (int i = 0; i < type->matrix_columns; i++) {
      body.emit(assign(array_ref(z, i), mul(array_ref(x, i), array_ref(y, i))));
   }
   body.emit(ret(z));

   return sig;
}

ir_function_signature *
builtin_builder::_outerProduct(const glsl_type *type)
{
   ir_variable *c = in_var(glsl_type::vec(type->vector_elements), "c");
   ir_variable *r = in_var(glsl_type::vec(type->matrix_columns), "r");
   MAKE_SIG(type, v120, 2, c, r);

   ir_variable *m = body.make_temp(type, "m");
   for (int i = 0; i < type->matrix_columns; i++) {
      body.emit(assign(array_ref(m, i), mul(c, swizzle(r, i, 1))));
   }
   body.emit(ret(m));

   return sig;
}

ir_function_signature *
builtin_builder::_transpose(const glsl_type *orig_type)
{
   const glsl_type *transpose_type =
      glsl_type::get_instance(GLSL_TYPE_FLOAT,
                              orig_type->matrix_columns,
                              orig_type->vector_elements);

   ir_variable *m = in_var(orig_type, "m");
   MAKE_SIG(transpose_type, v120, 1, m);

   ir_variable *t = body.make_temp(transpose_type, "t");
   for (int i = 0; i < orig_type->matrix_columns; i++) {
      for (int j = 0; j < orig_type->vector_elements; j++) {
         body.emit(assign(array_ref(t, j),
                          matrix_elt(m, i, j),
                          1 << i));
      }
   }
   body.emit(ret(t));

   return sig;
}

ir_function_signature *
builtin_builder::_determinant_mat2()
{
   ir_variable *m = in_var(glsl_type::mat2_type, "m");
   MAKE_SIG(glsl_type::float_type, v120, 1, m);

   body.emit(ret(sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 1, 1)),
                     mul(matrix_elt(m, 1, 0), matrix_elt(m, 0, 1)))));

   return sig;
}

ir_function_signature *
builtin_builder::_determinant_mat3()
{
   ir_variable *m = in_var(glsl_type::mat3_type, "m");
   MAKE_SIG(glsl_type::float_type, v120, 1, m);

   ir_expression *f1 =
      sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 2)),
          mul(matrix_elt(m, 1, 2), matrix_elt(m, 2, 1)));

   ir_expression *f2 =
      sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 2)),
          mul(matrix_elt(m, 1, 2), matrix_elt(m, 2, 0)));

   ir_expression *f3 =
      sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 1)),
          mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 0)));

   body.emit(ret(add(sub(mul(matrix_elt(m, 0, 0), f1),
                         mul(matrix_elt(m, 0, 1), f2)),
                     mul(matrix_elt(m, 0, 2), f3))));

   return sig;
}

ir_function_signature *
builtin_builder::_determinant_mat4()
{
   ir_variable *m = in_var(glsl_type::mat4_type, "m");
   MAKE_SIG(glsl_type::float_type, v120, 1, m);

   ir_variable *SubFactor00 = body.make_temp(glsl_type::float_type, "SubFactor00");
   ir_variable *SubFactor01 = body.make_temp(glsl_type::float_type, "SubFactor01");
   ir_variable *SubFactor02 = body.make_temp(glsl_type::float_type, "SubFactor02");
   ir_variable *SubFactor03 = body.make_temp(glsl_type::float_type, "SubFactor03");
   ir_variable *SubFactor04 = body.make_temp(glsl_type::float_type, "SubFactor04");
   ir_variable *SubFactor05 = body.make_temp(glsl_type::float_type, "SubFactor05");
   ir_variable *SubFactor06 = body.make_temp(glsl_type::float_type, "SubFactor06");
   ir_variable *SubFactor07 = body.make_temp(glsl_type::float_type, "SubFactor07");
   ir_variable *SubFactor08 = body.make_temp(glsl_type::float_type, "SubFactor08");
   ir_variable *SubFactor09 = body.make_temp(glsl_type::float_type, "SubFactor09");
   ir_variable *SubFactor10 = body.make_temp(glsl_type::float_type, "SubFactor10");
   ir_variable *SubFactor11 = body.make_temp(glsl_type::float_type, "SubFactor11");
   ir_variable *SubFactor12 = body.make_temp(glsl_type::float_type, "SubFactor12");
   ir_variable *SubFactor13 = body.make_temp(glsl_type::float_type, "SubFactor13");
   ir_variable *SubFactor14 = body.make_temp(glsl_type::float_type, "SubFactor14");
   ir_variable *SubFactor15 = body.make_temp(glsl_type::float_type, "SubFactor15");
   ir_variable *SubFactor16 = body.make_temp(glsl_type::float_type, "SubFactor16");
   ir_variable *SubFactor17 = body.make_temp(glsl_type::float_type, "SubFactor17");
   ir_variable *SubFactor18 = body.make_temp(glsl_type::float_type, "SubFactor18");

   body.emit(assign(SubFactor00, sub(mul(matrix_elt(m, 2, 2), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 2), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor01, sub(mul(matrix_elt(m, 2, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor02, sub(mul(matrix_elt(m, 2, 1), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 2, 2)))));
   body.emit(assign(SubFactor03, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor04, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 2)))));
   body.emit(assign(SubFactor05, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 1)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 1)))));
   body.emit(assign(SubFactor06, sub(mul(matrix_elt(m, 1, 2), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 2), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor07, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor08, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor09, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor10, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor11, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor12, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 1)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 1)))));
   body.emit(assign(SubFactor13, sub(mul(matrix_elt(m, 1, 2), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 2), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor14, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor15, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 2)), mul(matrix_elt(m, 2, 1), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor16, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor17, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 2)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor18, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 1)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 1)))));

   ir_variable *adj_0 = body.make_temp(glsl_type::vec4_type, "adj_0");

   body.emit(assign(adj_0,
                    add(sub(mul(matrix_elt(m, 1, 1), SubFactor00),
                            mul(matrix_elt(m, 1, 2), SubFactor01)),
                        mul(matrix_elt(m, 1, 3), SubFactor02)),
                    WRITEMASK_X));
   body.emit(assign(adj_0, neg(
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor00),
                            mul(matrix_elt(m, 1, 2), SubFactor03)),
                        mul(matrix_elt(m, 1, 3), SubFactor04))),
                    WRITEMASK_Y));
   body.emit(assign(adj_0,
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor01),
                            mul(matrix_elt(m, 1, 1), SubFactor03)),
                        mul(matrix_elt(m, 1, 3), SubFactor05)),
                    WRITEMASK_Z));
   body.emit(assign(adj_0, neg(
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor02),
                            mul(matrix_elt(m, 1, 1), SubFactor04)),
                        mul(matrix_elt(m, 1, 2), SubFactor05))),
                    WRITEMASK_W));

   body.emit(ret(dot(array_ref(m, 0), adj_0)));

   return sig;
}

ir_function_signature *
builtin_builder::_inverse_mat2()
{
   ir_variable *m = in_var(glsl_type::mat2_type, "m");
   MAKE_SIG(glsl_type::mat2_type, v120, 1, m);

   ir_variable *adj = body.make_temp(glsl_type::mat2_type, "adj");
   body.emit(assign(array_ref(adj, 0), matrix_elt(m, 1, 1), 1 << 0));
   body.emit(assign(array_ref(adj, 0), neg(matrix_elt(m, 0, 1)), 1 << 1));
   body.emit(assign(array_ref(adj, 1), neg(matrix_elt(m, 1, 0)), 1 << 0));
   body.emit(assign(array_ref(adj, 1), matrix_elt(m, 0, 0), 1 << 1));

   ir_expression *det =
      sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 1, 1)),
          mul(matrix_elt(m, 1, 0), matrix_elt(m, 0, 1)));

   body.emit(ret(div(adj, det)));
   return sig;
}

ir_function_signature *
builtin_builder::_inverse_mat3()
{
   ir_variable *m = in_var(glsl_type::mat3_type, "m");
   MAKE_SIG(glsl_type::mat3_type, v120, 1, m);

   ir_variable *f11_22_21_12 = body.make_temp(glsl_type::float_type, "f11_22_21_12");
   ir_variable *f10_22_20_12 = body.make_temp(glsl_type::float_type, "f10_22_20_12");
   ir_variable *f10_21_20_11 = body.make_temp(glsl_type::float_type, "f10_21_20_11");

   body.emit(assign(f11_22_21_12,
                    sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 2)),
                        mul(matrix_elt(m, 2, 1), matrix_elt(m, 1, 2)))));
   body.emit(assign(f10_22_20_12,
                    sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 2)),
                        mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 2)))));
   body.emit(assign(f10_21_20_11,
                    sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 1)),
                        mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 1)))));

   ir_variable *adj = body.make_temp(glsl_type::mat3_type, "adj");
   body.emit(assign(array_ref(adj, 0), f11_22_21_12, WRITEMASK_X));
   body.emit(assign(array_ref(adj, 1), neg(f10_22_20_12), WRITEMASK_X));
   body.emit(assign(array_ref(adj, 2), f10_21_20_11, WRITEMASK_X));

   body.emit(assign(array_ref(adj, 0), neg(
                    sub(mul(matrix_elt(m, 0, 1), matrix_elt(m, 2, 2)),
                        mul(matrix_elt(m, 2, 1), matrix_elt(m, 0, 2)))),
                    WRITEMASK_Y));
   body.emit(assign(array_ref(adj, 1),
                    sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 2, 2)),
                        mul(matrix_elt(m, 2, 0), matrix_elt(m, 0, 2))),
                    WRITEMASK_Y));
   body.emit(assign(array_ref(adj, 2), neg(
                    sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 2, 1)),
                        mul(matrix_elt(m, 2, 0), matrix_elt(m, 0, 1)))),
                    WRITEMASK_Y));

   body.emit(assign(array_ref(adj, 0),
                    sub(mul(matrix_elt(m, 0, 1), matrix_elt(m, 1, 2)),
                        mul(matrix_elt(m, 1, 1), matrix_elt(m, 0, 2))),
                    WRITEMASK_Z));
   body.emit(assign(array_ref(adj, 1), neg(
                    sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 1, 2)),
                        mul(matrix_elt(m, 1, 0), matrix_elt(m, 0, 2)))),
                    WRITEMASK_Z));
   body.emit(assign(array_ref(adj, 2),
                    sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 1, 1)),
                        mul(matrix_elt(m, 1, 0), matrix_elt(m, 0, 1))),
                    WRITEMASK_Z));

   ir_expression *det =
      add(sub(mul(matrix_elt(m, 0, 0), f11_22_21_12),
              mul(matrix_elt(m, 0, 1), f10_22_20_12)),
          mul(matrix_elt(m, 0, 2), f10_21_20_11));

   body.emit(ret(div(adj, det)));

   return sig;
}

ir_function_signature *
builtin_builder::_inverse_mat4()
{
   ir_variable *m = in_var(glsl_type::mat4_type, "m");
   MAKE_SIG(glsl_type::mat4_type, v120, 1, m);

   ir_variable *SubFactor00 = body.make_temp(glsl_type::float_type, "SubFactor00");
   ir_variable *SubFactor01 = body.make_temp(glsl_type::float_type, "SubFactor01");
   ir_variable *SubFactor02 = body.make_temp(glsl_type::float_type, "SubFactor02");
   ir_variable *SubFactor03 = body.make_temp(glsl_type::float_type, "SubFactor03");
   ir_variable *SubFactor04 = body.make_temp(glsl_type::float_type, "SubFactor04");
   ir_variable *SubFactor05 = body.make_temp(glsl_type::float_type, "SubFactor05");
   ir_variable *SubFactor06 = body.make_temp(glsl_type::float_type, "SubFactor06");
   ir_variable *SubFactor07 = body.make_temp(glsl_type::float_type, "SubFactor07");
   ir_variable *SubFactor08 = body.make_temp(glsl_type::float_type, "SubFactor08");
   ir_variable *SubFactor09 = body.make_temp(glsl_type::float_type, "SubFactor09");
   ir_variable *SubFactor10 = body.make_temp(glsl_type::float_type, "SubFactor10");
   ir_variable *SubFactor11 = body.make_temp(glsl_type::float_type, "SubFactor11");
   ir_variable *SubFactor12 = body.make_temp(glsl_type::float_type, "SubFactor12");
   ir_variable *SubFactor13 = body.make_temp(glsl_type::float_type, "SubFactor13");
   ir_variable *SubFactor14 = body.make_temp(glsl_type::float_type, "SubFactor14");
   ir_variable *SubFactor15 = body.make_temp(glsl_type::float_type, "SubFactor15");
   ir_variable *SubFactor16 = body.make_temp(glsl_type::float_type, "SubFactor16");
   ir_variable *SubFactor17 = body.make_temp(glsl_type::float_type, "SubFactor17");
   ir_variable *SubFactor18 = body.make_temp(glsl_type::float_type, "SubFactor18");

   body.emit(assign(SubFactor00, sub(mul(matrix_elt(m, 2, 2), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 2), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor01, sub(mul(matrix_elt(m, 2, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor02, sub(mul(matrix_elt(m, 2, 1), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 2, 2)))));
   body.emit(assign(SubFactor03, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor04, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 2)))));
   body.emit(assign(SubFactor05, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 1)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 1)))));
   body.emit(assign(SubFactor06, sub(mul(matrix_elt(m, 1, 2), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 2), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor07, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor08, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor09, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor10, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor11, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor12, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 1)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 1)))));
   body.emit(assign(SubFactor13, sub(mul(matrix_elt(m, 1, 2), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 2), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor14, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor15, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 2)), mul(matrix_elt(m, 2, 1), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor16, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor17, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 2)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor18, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 1)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 1)))));

   ir_variable *adj = body.make_temp(glsl_type::mat4_type, "adj");
   body.emit(assign(array_ref(adj, 0),
                    add(sub(mul(matrix_elt(m, 1, 1), SubFactor00),
                            mul(matrix_elt(m, 1, 2), SubFactor01)),
                        mul(matrix_elt(m, 1, 3), SubFactor02)),
                    WRITEMASK_X));
   body.emit(assign(array_ref(adj, 1), neg(
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor00),
                            mul(matrix_elt(m, 1, 2), SubFactor03)),
                        mul(matrix_elt(m, 1, 3), SubFactor04))),
                    WRITEMASK_X));
   body.emit(assign(array_ref(adj, 2),
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor01),
                            mul(matrix_elt(m, 1, 1), SubFactor03)),
                        mul(matrix_elt(m, 1, 3), SubFactor05)),
                    WRITEMASK_X));
   body.emit(assign(array_ref(adj, 3), neg(
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor02),
                            mul(matrix_elt(m, 1, 1), SubFactor04)),
                        mul(matrix_elt(m, 1, 2), SubFactor05))),
                    WRITEMASK_X));

   body.emit(assign(array_ref(adj, 0), neg(
                    add(sub(mul(matrix_elt(m, 0, 1), SubFactor00),
                            mul(matrix_elt(m, 0, 2), SubFactor01)),
                        mul(matrix_elt(m, 0, 3), SubFactor02))),
                    WRITEMASK_Y));
   body.emit(assign(array_ref(adj, 1),
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor00),
                            mul(matrix_elt(m, 0, 2), SubFactor03)),
                        mul(matrix_elt(m, 0, 3), SubFactor04)),
                    WRITEMASK_Y));
   body.emit(assign(array_ref(adj, 2), neg(
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor01),
                            mul(matrix_elt(m, 0, 1), SubFactor03)),
                        mul(matrix_elt(m, 0, 3), SubFactor05))),
                    WRITEMASK_Y));
   body.emit(assign(array_ref(adj, 3),
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor02),
                            mul(matrix_elt(m, 0, 1), SubFactor04)),
                        mul(matrix_elt(m, 0, 2), SubFactor05)),
                    WRITEMASK_Y));

   body.emit(assign(array_ref(adj, 0),
                    add(sub(mul(matrix_elt(m, 0, 1), SubFactor06),
                            mul(matrix_elt(m, 0, 2), SubFactor07)),
                        mul(matrix_elt(m, 0, 3), SubFactor08)),
                    WRITEMASK_Z));
   body.emit(assign(array_ref(adj, 1), neg(
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor06),
                            mul(matrix_elt(m, 0, 2), SubFactor09)),
                        mul(matrix_elt(m, 0, 3), SubFactor10))),
                    WRITEMASK_Z));
   body.emit(assign(array_ref(adj, 2),
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor11),
                            mul(matrix_elt(m, 0, 1), SubFactor09)),
                        mul(matrix_elt(m, 0, 3), SubFactor12)),
                    WRITEMASK_Z));
   body.emit(assign(array_ref(adj, 3), neg(
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor08),
                            mul(matrix_elt(m, 0, 1), SubFactor10)),
                        mul(matrix_elt(m, 0, 2), SubFactor12))),
                    WRITEMASK_Z));

   body.emit(assign(array_ref(adj, 0), neg(
                    add(sub(mul(matrix_elt(m, 0, 1), SubFactor13),
                            mul(matrix_elt(m, 0, 2), SubFactor14)),
                        mul(matrix_elt(m, 0, 3), SubFactor15))),
                    WRITEMASK_W));
   body.emit(assign(array_ref(adj, 1),
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor13),
                            mul(matrix_elt(m, 0, 2), SubFactor16)),
                        mul(matrix_elt(m, 0, 3), SubFactor17)),
                    WRITEMASK_W));
   body.emit(assign(array_ref(adj, 2), neg(
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor14),
                            mul(matrix_elt(m, 0, 1), SubFactor16)),
                        mul(matrix_elt(m, 0, 3), SubFactor18))),
                    WRITEMASK_W));
   body.emit(assign(array_ref(adj, 3),
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor15),
                            mul(matrix_elt(m, 0, 1), SubFactor17)),
                        mul(matrix_elt(m, 0, 2), SubFactor18)),
                    WRITEMASK_W));

   ir_expression *det =
      add(mul(matrix_elt(m, 0, 0), matrix_elt(adj, 0, 0)),
          add(mul(matrix_elt(m, 0, 1), matrix_elt(adj, 1, 0)),
              add(mul(matrix_elt(m, 0, 2), matrix_elt(adj, 2, 0)),
                  mul(matrix_elt(m, 0, 3), matrix_elt(adj, 3, 0)))));

   body.emit(ret(div(adj, det)));

   return sig;
}


ir_function_signature *
builtin_builder::_lessThan(builtin_available_predicate avail,
                           const glsl_type *type)
{
   return binop(ir_binop_less, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_lessThanEqual(builtin_available_predicate avail,
                                const glsl_type *type)
{
   return binop(ir_binop_lequal, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_greaterThan(builtin_available_predicate avail,
                              const glsl_type *type)
{
   return binop(ir_binop_greater, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_greaterThanEqual(builtin_available_predicate avail,
                                   const glsl_type *type)
{
   return binop(ir_binop_gequal, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_equal(builtin_available_predicate avail,
                        const glsl_type *type)
{
   return binop(ir_binop_equal, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_notEqual(builtin_available_predicate avail,
                           const glsl_type *type)
{
   return binop(ir_binop_nequal, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_any(const glsl_type *type)
{
   return unop(always_available, ir_unop_any, glsl_type::bool_type, type);
}

ir_function_signature *
builtin_builder::_all(const glsl_type *type)
{
   ir_variable *v = in_var(type, "v");
   MAKE_SIG(glsl_type::bool_type, always_available, 1, v);

   switch (type->vector_elements) {
   case 2:
      body.emit(ret(logic_and(swizzle_x(v), swizzle_y(v))));
      break;
   case 3:
      body.emit(ret(logic_and(logic_and(swizzle_x(v), swizzle_y(v)),
                              swizzle_z(v))));
      break;
   case 4:
      body.emit(ret(logic_and(logic_and(logic_and(swizzle_x(v), swizzle_y(v)),
                                        swizzle_z(v)),
                              swizzle_w(v))));
      break;
   }

   return sig;
}

UNOP(not, ir_unop_logic_not, always_available)

static bool
has_lod(const glsl_type *sampler_type)
{
   assert(sampler_type->is_sampler());

   switch (sampler_type->sampler_dimensionality) {
   case GLSL_SAMPLER_DIM_RECT:
   case GLSL_SAMPLER_DIM_BUF:
   case GLSL_SAMPLER_DIM_MS:
      return false;
   default:
      return true;
   }
}

ir_function_signature *
builtin_builder::_textureSize(builtin_available_predicate avail,
                              const glsl_type *return_type,
                              const glsl_type *sampler_type)
{
   ir_variable *s = in_var(sampler_type, "sampler");
   /* The sampler always exists; add optional lod later. */
   MAKE_SIG(return_type, avail, 1, s);

   ir_texture *tex = new(mem_ctx) ir_texture(ir_txs);
   tex->set_sampler(new(mem_ctx) ir_dereference_variable(s), return_type);

   if (has_lod(sampler_type)) {
      ir_variable *lod = in_var(glsl_type::int_type, "lod");
      sig->parameters.push_tail(lod);
      tex->lod_info.lod = var_ref(lod);
   } else {
      tex->lod_info.lod = imm(0u);
   }

   body.emit(ret(tex));

   return sig;
}

ir_function_signature *
builtin_builder::_texture(ir_texture_opcode opcode,
                          builtin_available_predicate avail,
                          const glsl_type *return_type,
                          const glsl_type *sampler_type,
                          const glsl_type *coord_type,
                          int flags)
{
   ir_variable *s = in_var(sampler_type, "sampler");
   ir_variable *P = in_var(coord_type, "P");
   /* The sampler and coordinate always exist; add optional parameters later. */
   MAKE_SIG(return_type, avail, 2, s, P);

   ir_texture *tex = new(mem_ctx) ir_texture(opcode);
   tex->set_sampler(var_ref(s), return_type);

   const int coord_size = sampler_type->coordinate_components();

   if (coord_size == coord_type->vector_elements) {
      tex->coordinate = var_ref(P);
   } else {
      /* The incoming coordinate also has the projector or shadow comparitor,
       * so we need to swizzle those away.
       */
      tex->coordinate = swizzle_for_size(P, coord_size);
   }

   /* The projector is always in the last component. */
   if (flags & TEX_PROJECT)
      tex->projector = swizzle(P, coord_type->vector_elements - 1, 1);

   if (sampler_type->sampler_shadow) {
      if (opcode == ir_tg4) {
         /* gather has refz as a separate parameter, immediately after the
          * coordinate
          */
         ir_variable *refz = in_var(glsl_type::float_type, "refz");
         sig->parameters.push_tail(refz);
         tex->shadow_comparitor = var_ref(refz);
      } else {
         /* The shadow comparitor is normally in the Z component, but a few types
          * have sufficiently large coordinates that it's in W.
          */
         tex->shadow_comparitor = swizzle(P, MAX2(coord_size, SWIZZLE_Z), 1);
      }
   }

   if (opcode == ir_txl) {
      ir_variable *lod = in_var(glsl_type::float_type, "lod");
      sig->parameters.push_tail(lod);
      tex->lod_info.lod = var_ref(lod);
   } else if (opcode == ir_txd) {
      int grad_size = coord_size - (sampler_type->sampler_array ? 1 : 0);
      ir_variable *dPdx = in_var(glsl_type::vec(grad_size), "dPdx");
      ir_variable *dPdy = in_var(glsl_type::vec(grad_size), "dPdy");
      sig->parameters.push_tail(dPdx);
      sig->parameters.push_tail(dPdy);
      tex->lod_info.grad.dPdx = var_ref(dPdx);
      tex->lod_info.grad.dPdy = var_ref(dPdy);
   }

   if (flags & (TEX_OFFSET | TEX_OFFSET_NONCONST)) {
      int offset_size = coord_size - (sampler_type->sampler_array ? 1 : 0);
      ir_variable *offset =
         new(mem_ctx) ir_variable(glsl_type::ivec(offset_size), "offset",
                                  (flags & TEX_OFFSET) ? ir_var_const_in : ir_var_function_in);
      sig->parameters.push_tail(offset);
      tex->offset = var_ref(offset);
   }

   if (flags & TEX_OFFSET_ARRAY) {
      ir_variable *offsets =
         new(mem_ctx) ir_variable(glsl_type::get_array_instance(glsl_type::ivec2_type, 4),
                                  "offsets", ir_var_const_in);
      sig->parameters.push_tail(offsets);
      tex->offset = var_ref(offsets);
   }

   if (opcode == ir_tg4) {
      if (flags & TEX_COMPONENT) {
         ir_variable *component =
            new(mem_ctx) ir_variable(glsl_type::int_type, "comp", ir_var_const_in);
         sig->parameters.push_tail(component);
         tex->lod_info.component = var_ref(component);
      }
      else {
         tex->lod_info.component = imm(0);
      }
   }

   /* The "bias" parameter comes /after/ the "offset" parameter, which is
    * inconsistent with both textureLodOffset and textureGradOffset.
    */
   if (opcode == ir_txb) {
      ir_variable *bias = in_var(glsl_type::float_type, "bias");
      sig->parameters.push_tail(bias);
      tex->lod_info.bias = var_ref(bias);
   }

   body.emit(ret(tex));

   return sig;
}

ir_function_signature *
builtin_builder::_textureCubeArrayShadow()
{
   ir_variable *s = in_var(glsl_type::samplerCubeArrayShadow_type, "sampler");
   ir_variable *P = in_var(glsl_type::vec4_type, "P");
   ir_variable *compare = in_var(glsl_type::float_type, "compare");
   MAKE_SIG(glsl_type::float_type, texture_cube_map_array, 3, s, P, compare);

   ir_texture *tex = new(mem_ctx) ir_texture(ir_tex);
   tex->set_sampler(var_ref(s), glsl_type::float_type);

   tex->coordinate = var_ref(P);
   tex->shadow_comparitor = var_ref(compare);

   body.emit(ret(tex));

   return sig;
}

ir_function_signature *
builtin_builder::_texelFetch(builtin_available_predicate avail,
                             const glsl_type *return_type,
                             const glsl_type *sampler_type,
                             const glsl_type *coord_type,
                             const glsl_type *offset_type)
{
   ir_variable *s = in_var(sampler_type, "sampler");
   ir_variable *P = in_var(coord_type, "P");
   /* The sampler and coordinate always exist; add optional parameters later. */
   MAKE_SIG(return_type, avail, 2, s, P);

   ir_texture *tex = new(mem_ctx) ir_texture(ir_txf);
   tex->coordinate = var_ref(P);
   tex->set_sampler(var_ref(s), return_type);

   if (sampler_type->sampler_dimensionality == GLSL_SAMPLER_DIM_MS) {
      ir_variable *sample = in_var(glsl_type::int_type, "sample");
      sig->parameters.push_tail(sample);
      tex->lod_info.sample_index = var_ref(sample);
      tex->op = ir_txf_ms;
   } else if (has_lod(sampler_type)) {
      ir_variable *lod = in_var(glsl_type::int_type, "lod");
      sig->parameters.push_tail(lod);
      tex->lod_info.lod = var_ref(lod);
   } else {
      tex->lod_info.lod = imm(0u);
   }

   if (offset_type != NULL) {
      ir_variable *offset =
         new(mem_ctx) ir_variable(offset_type, "offset", ir_var_const_in);
      sig->parameters.push_tail(offset);
      tex->offset = var_ref(offset);
   }

   body.emit(ret(tex));

   return sig;
}

ir_function_signature *
builtin_builder::_EmitVertex()
{
   MAKE_SIG(glsl_type::void_type, gs_only, 0);

   ir_rvalue *stream = new(mem_ctx) ir_constant(0, 1);
   body.emit(new(mem_ctx) ir_emit_vertex(stream));

   return sig;
}

ir_function_signature *
builtin_builder::_EmitStreamVertex(builtin_available_predicate avail,
                                   const glsl_type *stream_type)
{
   /* Section 8.12 (Geometry Shader Functions) of the GLSL 4.0 spec says:
    *
    *     "Emit the current values of output variables to the current output
    *     primitive on stream stream. The argument to stream must be a constant
    *     integral expression."
    */
   ir_variable *stream =
      new(mem_ctx) ir_variable(stream_type, "stream", ir_var_const_in);

   MAKE_SIG(glsl_type::void_type, avail, 1, stream);

   body.emit(new(mem_ctx) ir_emit_vertex(var_ref(stream)));

   return sig;
}

ir_function_signature *
builtin_builder::_EndPrimitive()
{
   MAKE_SIG(glsl_type::void_type, gs_only, 0);

   ir_rvalue *stream = new(mem_ctx) ir_constant(0, 1);
   body.emit(new(mem_ctx) ir_end_primitive(stream));

   return sig;
}

ir_function_signature *
builtin_builder::_EndStreamPrimitive(builtin_available_predicate avail,
                                     const glsl_type *stream_type)
{
   /* Section 8.12 (Geometry Shader Functions) of the GLSL 4.0 spec says:
    *
    *     "Completes the current output primitive on stream stream and starts
    *     a new one. The argument to stream must be a constant integral
    *     expression."
    */
   ir_variable *stream =
      new(mem_ctx) ir_variable(stream_type, "stream", ir_var_const_in);

   MAKE_SIG(glsl_type::void_type, avail, 1, stream);

   body.emit(new(mem_ctx) ir_end_primitive(var_ref(stream)));

   return sig;
}

ir_function_signature *
builtin_builder::_textureQueryLod(const glsl_type *sampler_type,
                                  const glsl_type *coord_type)
{
   ir_variable *s = in_var(sampler_type, "sampler");
   ir_variable *coord = in_var(coord_type, "coord");
   /* The sampler and coordinate always exist; add optional parameters later. */
   MAKE_SIG(glsl_type::vec2_type, texture_query_lod, 2, s, coord);

   ir_texture *tex = new(mem_ctx) ir_texture(ir_lod);
   tex->coordinate = var_ref(coord);
   tex->set_sampler(var_ref(s), glsl_type::vec2_type);

   body.emit(ret(tex));

   return sig;
}

ir_function_signature *
builtin_builder::_textureQueryLevels(const glsl_type *sampler_type)
{
   ir_variable *s = in_var(sampler_type, "sampler");
   const glsl_type *return_type = glsl_type::int_type;
   MAKE_SIG(return_type, texture_query_levels, 1, s);

   ir_texture *tex = new(mem_ctx) ir_texture(ir_query_levels);
   tex->set_sampler(var_ref(s), return_type);

   body.emit(ret(tex));

   return sig;
}

UNOP(dFdx, ir_unop_dFdx, fs_oes_derivatives)
UNOP(dFdxCoarse, ir_unop_dFdx_coarse, fs_derivative_control)
UNOP(dFdxFine, ir_unop_dFdx_fine, fs_derivative_control)
UNOP(dFdy, ir_unop_dFdy, fs_oes_derivatives)
UNOP(dFdyCoarse, ir_unop_dFdy_coarse, fs_derivative_control)
UNOP(dFdyFine, ir_unop_dFdy_fine, fs_derivative_control)

ir_function_signature *
builtin_builder::_fwidth(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(type, fs_oes_derivatives, 1, p);

   body.emit(ret(add(abs(expr(ir_unop_dFdx, p)), abs(expr(ir_unop_dFdy, p)))));

   return sig;
}

ir_function_signature *
builtin_builder::_fwidthCoarse(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(type, fs_derivative_control, 1, p);

   body.emit(ret(add(abs(expr(ir_unop_dFdx_coarse, p)),
                     abs(expr(ir_unop_dFdy_coarse, p)))));

   return sig;
}

ir_function_signature *
builtin_builder::_fwidthFine(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(type, fs_derivative_control, 1, p);

   body.emit(ret(add(abs(expr(ir_unop_dFdx_fine, p)),
                     abs(expr(ir_unop_dFdy_fine, p)))));

   return sig;
}

ir_function_signature *
builtin_builder::_noise1(const glsl_type *type)
{
   return unop(v110, ir_unop_noise, glsl_type::float_type, type);
}

ir_function_signature *
builtin_builder::_noise2(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(glsl_type::vec2_type, v110, 1, p);

   ir_constant_data b_offset;
   b_offset.f[0] = 601.0f;
   b_offset.f[1] = 313.0f;
   b_offset.f[2] = 29.0f;
   b_offset.f[3] = 277.0f;

   ir_variable *a = body.make_temp(glsl_type::float_type, "a");
   ir_variable *b = body.make_temp(glsl_type::float_type, "b");
   ir_variable *t = body.make_temp(glsl_type::vec2_type,  "t");
   body.emit(assign(a, expr(ir_unop_noise, p)));
   body.emit(assign(b, expr(ir_unop_noise, add(p, imm(type, b_offset)))));
   body.emit(assign(t, a, WRITEMASK_X));
   body.emit(assign(t, b, WRITEMASK_Y));
   body.emit(ret(t));

   return sig;
}

ir_function_signature *
builtin_builder::_noise3(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(glsl_type::vec3_type, v110, 1, p);

   ir_constant_data b_offset;
   b_offset.f[0] = 601.0f;
   b_offset.f[1] = 313.0f;
   b_offset.f[2] = 29.0f;
   b_offset.f[3] = 277.0f;

   ir_constant_data c_offset;
   c_offset.f[0] = 1559.0f;
   c_offset.f[1] = 113.0f;
   c_offset.f[2] = 1861.0f;
   c_offset.f[3] = 797.0f;

   ir_variable *a = body.make_temp(glsl_type::float_type, "a");
   ir_variable *b = body.make_temp(glsl_type::float_type, "b");
   ir_variable *c = body.make_temp(glsl_type::float_type, "c");
   ir_variable *t = body.make_temp(glsl_type::vec3_type,  "t");
   body.emit(assign(a, expr(ir_unop_noise, p)));
   body.emit(assign(b, expr(ir_unop_noise, add(p, imm(type, b_offset)))));
   body.emit(assign(c, expr(ir_unop_noise, add(p, imm(type, c_offset)))));
   body.emit(assign(t, a, WRITEMASK_X));
   body.emit(assign(t, b, WRITEMASK_Y));
   body.emit(assign(t, c, WRITEMASK_Z));
   body.emit(ret(t));

   return sig;
}

ir_function_signature *
builtin_builder::_noise4(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(glsl_type::vec4_type, v110, 1, p);

   ir_variable *_p = body.make_temp(type, "_p");

   ir_constant_data p_offset;
   p_offset.f[0] = 1559.0f;
   p_offset.f[1] = 113.0f;
   p_offset.f[2] = 1861.0f;
   p_offset.f[3] = 797.0f;

   body.emit(assign(_p, add(p, imm(type, p_offset))));

   ir_constant_data offset;
   offset.f[0] = 601.0f;
   offset.f[1] = 313.0f;
   offset.f[2] = 29.0f;
   offset.f[3] = 277.0f;

   ir_variable *a = body.make_temp(glsl_type::float_type, "a");
   ir_variable *b = body.make_temp(glsl_type::float_type, "b");
   ir_variable *c = body.make_temp(glsl_type::float_type, "c");
   ir_variable *d = body.make_temp(glsl_type::float_type, "d");
   ir_variable *t = body.make_temp(glsl_type::vec4_type,  "t");
   body.emit(assign(a, expr(ir_unop_noise, p)));
   body.emit(assign(b, expr(ir_unop_noise, add(p, imm(type, offset)))));
   body.emit(assign(c, expr(ir_unop_noise, _p)));
   body.emit(assign(d, expr(ir_unop_noise, add(_p, imm(type, offset)))));
   body.emit(assign(t, a, WRITEMASK_X));
   body.emit(assign(t, b, WRITEMASK_Y));
   body.emit(assign(t, c, WRITEMASK_Z));
   body.emit(assign(t, d, WRITEMASK_W));
   body.emit(ret(t));

   return sig;
}

ir_function_signature *
builtin_builder::_bitfieldExtract(const glsl_type *type)
{
   ir_variable *value  = in_var(type, "value");
   ir_variable *offset = in_var(glsl_type::int_type, "offset");
   ir_variable *bits   = in_var(glsl_type::int_type, "bits");
   MAKE_SIG(type, gpu_shader5, 3, value, offset, bits);

   body.emit(ret(expr(ir_triop_bitfield_extract, value, offset, bits)));

   return sig;
}

ir_function_signature *
builtin_builder::_bitfieldInsert(const glsl_type *type)
{
   ir_variable *base   = in_var(type, "base");
   ir_variable *insert = in_var(type, "insert");
   ir_variable *offset = in_var(glsl_type::int_type, "offset");
   ir_variable *bits   = in_var(glsl_type::int_type, "bits");
   MAKE_SIG(type, gpu_shader5, 4, base, insert, offset, bits);

   body.emit(ret(bitfield_insert(base, insert, offset, bits)));

   return sig;
}

UNOP(bitfieldReverse, ir_unop_bitfield_reverse, gpu_shader5)

ir_function_signature *
builtin_builder::_bitCount(const glsl_type *type)
{
   return unop(gpu_shader5, ir_unop_bit_count,
               glsl_type::ivec(type->vector_elements), type);
}

ir_function_signature *
builtin_builder::_findLSB(const glsl_type *type)
{
   return unop(gpu_shader5, ir_unop_find_lsb,
               glsl_type::ivec(type->vector_elements), type);
}

ir_function_signature *
builtin_builder::_findMSB(const glsl_type *type)
{
   return unop(gpu_shader5, ir_unop_find_msb,
               glsl_type::ivec(type->vector_elements), type);
}

ir_function_signature *
builtin_builder::_fma(const glsl_type *type)
{
   ir_variable *a = in_var(type, "a");
   ir_variable *b = in_var(type, "b");
   ir_variable *c = in_var(type, "c");
   MAKE_SIG(type, gpu_shader5, 3, a, b, c);

   body.emit(ret(ir_builder::fma(a, b, c)));

   return sig;
}

ir_function_signature *
builtin_builder::_ldexp(const glsl_type *x_type, const glsl_type *exp_type)
{
   return binop(ir_binop_ldexp, gpu_shader5, x_type, x_type, exp_type);
}

ir_function_signature *
builtin_builder::_frexp(const glsl_type *x_type, const glsl_type *exp_type)
{
   ir_variable *x = in_var(x_type, "x");
   ir_variable *exponent = out_var(exp_type, "exp");
   MAKE_SIG(x_type, gpu_shader5, 2, x, exponent);

   const unsigned vec_elem = x_type->vector_elements;
   const glsl_type *bvec = glsl_type::get_instance(GLSL_TYPE_BOOL, vec_elem, 1);
   const glsl_type *uvec = glsl_type::get_instance(GLSL_TYPE_UINT, vec_elem, 1);

   /* Single-precision floating-point values are stored as
    *   1 sign bit;
    *   8 exponent bits;
    *   23 mantissa bits.
    *
    * An exponent shift of 23 will shift the mantissa out, leaving only the
    * exponent and sign bit (which itself may be zero, if the absolute value
    * was taken before the bitcast and shift.
    */
   ir_constant *exponent_shift = imm(23);
   ir_constant *exponent_bias = imm(-126, vec_elem);

   ir_constant *sign_mantissa_mask = imm(0x807fffffu, vec_elem);

   /* Exponent of floating-point values in the range [0.5, 1.0). */
   ir_constant *exponent_value = imm(0x3f000000u, vec_elem);

   ir_variable *is_not_zero = body.make_temp(bvec, "is_not_zero");
   body.emit(assign(is_not_zero, nequal(abs(x), imm(0.0f, vec_elem))));

   /* Since abs(x) ensures that the sign bit is zero, we don't need to bitcast
    * to unsigned integers to ensure that 1 bits aren't shifted in.
    */
   body.emit(assign(exponent, rshift(bitcast_f2i(abs(x)), exponent_shift)));
   body.emit(assign(exponent, add(exponent, csel(is_not_zero, exponent_bias,
                                                     imm(0, vec_elem)))));

   ir_variable *bits = body.make_temp(uvec, "bits");
   body.emit(assign(bits, bitcast_f2u(x)));
   body.emit(assign(bits, bit_and(bits, sign_mantissa_mask)));
   body.emit(assign(bits, bit_or(bits, csel(is_not_zero, exponent_value,
                                                imm(0u, vec_elem)))));
   body.emit(ret(bitcast_u2f(bits)));

   return sig;
}

ir_function_signature *
builtin_builder::_uaddCarry(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *carry = out_var(type, "carry");
   MAKE_SIG(type, gpu_shader5, 3, x, y, carry);

   body.emit(assign(carry, ir_builder::carry(x, y)));
   body.emit(ret(add(x, y)));

   return sig;
}

ir_function_signature *
builtin_builder::_usubBorrow(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *borrow = out_var(type, "borrow");
   MAKE_SIG(type, gpu_shader5, 3, x, y, borrow);

   body.emit(assign(borrow, ir_builder::borrow(x, y)));
   body.emit(ret(sub(x, y)));

   return sig;
}

/**
 * For both imulExtended() and umulExtended() built-ins.
 */
ir_function_signature *
builtin_builder::_mulExtended(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *msb = out_var(type, "msb");
   ir_variable *lsb = out_var(type, "lsb");
   MAKE_SIG(glsl_type::void_type, gpu_shader5, 4, x, y, msb, lsb);

   body.emit(assign(msb, imul_high(x, y)));
   body.emit(assign(lsb, mul(x, y)));

   return sig;
}

ir_function_signature *
builtin_builder::_interpolateAtCentroid(const glsl_type *type)
{
   ir_variable *interpolant = in_var(type, "interpolant");
   interpolant->data.must_be_shader_input = 1;
   MAKE_SIG(type, fs_gpu_shader5, 1, interpolant);

   body.emit(ret(interpolate_at_centroid(interpolant)));

   return sig;
}

ir_function_signature *
builtin_builder::_interpolateAtOffset(const glsl_type *type)
{
   ir_variable *interpolant = in_var(type, "interpolant");
   interpolant->data.must_be_shader_input = 1;
   ir_variable *offset = in_var(glsl_type::vec2_type, "offset");
   MAKE_SIG(type, fs_gpu_shader5, 2, interpolant, offset);

   body.emit(ret(interpolate_at_offset(interpolant, offset)));

   return sig;
}

ir_function_signature *
builtin_builder::_interpolateAtSample(const glsl_type *type)
{
   ir_variable *interpolant = in_var(type, "interpolant");
   interpolant->data.must_be_shader_input = 1;
   ir_variable *sample_num = in_var(glsl_type::int_type, "sample_num");
   MAKE_SIG(type, fs_gpu_shader5, 2, interpolant, sample_num);

   body.emit(ret(interpolate_at_sample(interpolant, sample_num)));

   return sig;
}

ir_function_signature *
builtin_builder::_atomic_intrinsic(builtin_available_predicate avail)
{
   ir_variable *counter = in_var(glsl_type::atomic_uint_type, "counter");
   MAKE_INTRINSIC(glsl_type::uint_type, avail, 1, counter);
   return sig;
}

ir_function_signature *
builtin_builder::_atomic_op(const char *intrinsic,
                            builtin_available_predicate avail)
{
   ir_variable *counter = in_var(glsl_type::atomic_uint_type, "atomic_counter");
   MAKE_SIG(glsl_type::uint_type, avail, 1, counter);

   ir_variable *retval = body.make_temp(glsl_type::uint_type, "atomic_retval");
   body.emit(call(shader->symbols->get_function(intrinsic), retval,
                  sig->parameters));
   body.emit(ret(retval));
   return sig;
}

ir_function_signature *
builtin_builder::_min3(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *z = in_var(type, "z");
   MAKE_SIG(type, shader_trinary_minmax, 3, x, y, z);

   ir_expression *min3 = min2(x, min2(y,z));
   body.emit(ret(min3));

   return sig;
}

ir_function_signature *
builtin_builder::_max3(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *z = in_var(type, "z");
   MAKE_SIG(type, shader_trinary_minmax, 3, x, y, z);

   ir_expression *max3 = max2(x, max2(y,z));
   body.emit(ret(max3));

   return sig;
}

ir_function_signature *
builtin_builder::_mid3(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *z = in_var(type, "z");
   MAKE_SIG(type, shader_trinary_minmax, 3, x, y, z);

   ir_expression *mid3 = max2(min2(x, y), max2(min2(x, z), min2(y, z)));
   body.emit(ret(mid3));

   return sig;
}

ir_function_signature *
builtin_builder::_image_prototype(const glsl_type *image_type,
                                  const char *intrinsic_name,
                                  unsigned num_arguments,
                                  unsigned flags)
{
   const glsl_type *data_type = glsl_type::get_instance(
      image_type->sampler_type,
      (flags & IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE ? 4 : 1),
      1);
   const glsl_type *ret_type = (flags & IMAGE_FUNCTION_RETURNS_VOID ?
                                glsl_type::void_type : data_type);

   /* Addressing arguments that are always present. */
   ir_variable *image = in_var(image_type, "image");
   ir_variable *coord = in_var(
      glsl_type::ivec(image_type->coordinate_components()), "coord");

   ir_function_signature *sig = new_sig(
      ret_type, shader_image_load_store, 2, image, coord);

   /* Sample index for multisample images. */
   if (image_type->sampler_dimensionality == GLSL_SAMPLER_DIM_MS)
      sig->parameters.push_tail(in_var(glsl_type::int_type, "sample"));

   /* Data arguments. */
   for (unsigned i = 0; i < num_arguments; ++i)
      sig->parameters.push_tail(in_var(data_type,
                                       ralloc_asprintf(NULL, "arg%d", i)));

   /* Set the maximal set of qualifiers allowed for this image
    * built-in.  Function calls with arguments having fewer
    * qualifiers than present in the prototype are allowed by the
    * spec, but not with more, i.e. this will make the compiler
    * accept everything that needs to be accepted, and reject cases
    * like loads from write-only or stores to read-only images.
    */
   image->data.image.read_only = flags & IMAGE_FUNCTION_READ_ONLY;
   image->data.image.write_only = flags & IMAGE_FUNCTION_WRITE_ONLY;
   image->data.image.coherent = true;
   image->data.image._volatile = true;
   image->data.image.restrict_flag = true;

   return sig;
}

ir_function_signature *
builtin_builder::_image(const glsl_type *image_type,
                        const char *intrinsic_name,
                        unsigned num_arguments,
                        unsigned flags)
{
   ir_function_signature *sig = _image_prototype(image_type, intrinsic_name,
                                                 num_arguments, flags);

   if (flags & IMAGE_FUNCTION_EMIT_STUB) {
      ir_factory body(&sig->body, mem_ctx);
      ir_function *f = shader->symbols->get_function(intrinsic_name);

      if (flags & IMAGE_FUNCTION_RETURNS_VOID) {
         body.emit(call(f, NULL, sig->parameters));
      } else {
         ir_variable *ret_val =
            body.make_temp(sig->return_type, "_ret_val");
         body.emit(call(f, ret_val, sig->parameters));
         body.emit(ret(ret_val));
      }

      sig->is_defined = true;

   } else {
      sig->is_intrinsic = true;
   }

   return sig;
}

ir_function_signature *
builtin_builder::_memory_barrier_intrinsic(builtin_available_predicate avail)
{
   MAKE_INTRINSIC(glsl_type::void_type, avail, 0);
   return sig;
}

ir_function_signature *
builtin_builder::_memory_barrier(builtin_available_predicate avail)
{
   MAKE_SIG(glsl_type::void_type, avail, 0);
   body.emit(call(shader->symbols->get_function("__intrinsic_memory_barrier"),
                  NULL, sig->parameters));
   return sig;
}

/** @@} */

/******************************************************************************/

/* The singleton instance of builtin_builder. */
static builtin_builder builtins;
static mtx_t builtins_lock = _MTX_INITIALIZER_NP;

/**
 * External API (exposing the built-in module to the rest of the compiler):
 *  @@{
 */
void
_mesa_glsl_initialize_builtin_functions()
{
   mtx_lock(&builtins_lock);
   builtins.initialize();
   mtx_unlock(&builtins_lock);
}

void
_mesa_glsl_release_builtin_functions()
{
   mtx_lock(&builtins_lock);
   builtins.release();
   mtx_unlock(&builtins_lock);
}

ir_function_signature *
_mesa_glsl_find_builtin_function(_mesa_glsl_parse_state *state,
                                 const char *name, exec_list *actual_parameters)
{
   ir_function_signature * s;
   mtx_lock(&builtins_lock);
   s = builtins.find(state, name, actual_parameters);
   mtx_unlock(&builtins_lock);
   return s;
}

gl_shader *
_mesa_glsl_get_builtin_function_shader()
{
   return builtins.shader;
}

/** @@} */
@


1.1
log
@Initial revision
@
text
@@


1.1.1.1
log
@initial import of MesaLib-10.3.5
@
text
@@


1.1.1.1.2.1
log
@file builtin_functions.cpp was added on branch netbsd-7 on 2015-01-05 20:59:01 +0000
@
text
@d1 4580
@


1.1.1.1.2.2
log
@Pull up the following revisions, requested by mrg in #381:

external/mit/MesaLib/dist/bin/config.guess      upto 1.1.1.3
external/mit/MesaLib/dist/bin/config.sub        upto 1.1.1.3
external/mit/MesaLib/dist/bin/missing           1.1.1.1
external/mit/MesaLib/dist/bin/test-driver       1.1.1.1
external/mit/MesaLib/dist/bin/get-pick-list.sh  1.1.1.1
external/mit/MesaLib/dist/bin/install-sh        upto 1.1.1.2
external/mit/MesaLib/dist/bin/ar-lib            1.1.1.1
external/mit/MesaLib/dist/bin/bugzilla_mesa.sh  1.1.1.1
external/mit/MesaLib/dist/bin/compile           1.1.1.1
external/mit/MesaLib/dist/bin/depcomp           1.1.1.1
external/mit/MesaLib/dist/bin/ltmain.sh         1.1.1.1
external/mit/MesaLib/dist/bin/perf-annotate-jit 1.1.1.1
external/mit/MesaLib/dist/bin/shortlog_mesa.sh  1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.0.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.0.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.0.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.0.4.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.0.5.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.0.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.1.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.1.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.1.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.1.4.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.1.5.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.1.6.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.2.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.2.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.2.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.2.4.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.2.5.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.2.6.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.3.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.3.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/3.1     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.3.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.3.4.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.3.5.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/10.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/3.2     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/3.2.1   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/3.3     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/3.4     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/3.4.1   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/3.4.2   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/3.5     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/4.0     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/4.0.1   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/4.0.2   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/4.0.3   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/4.1     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/5.0     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/5.0.1   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/5.0.2   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/5.1     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.0     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.0.1   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.1     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.2     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.2.1   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.3     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.3.1   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.3.2   1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.4     1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.4.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.4.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.4.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.5.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.5.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.5.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/6.5.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.0.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.0.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.0.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.0.4.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.0.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.10.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.10.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.10.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.10.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.11.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.11.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.11.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.4.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.4.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.4.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.4.4.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.4.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.5.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.5.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.5.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.6.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.6.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.7.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.7.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.8.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.8.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.8.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.8.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.9.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.9.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/7.9.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/8.0.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/8.0.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/8.0.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/8.0.4.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/8.0.5.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/8.0.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.0.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.0.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.0.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.0.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.1.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.1.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.1.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.1.4.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.1.5.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.1.6.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.1.7.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.2.1.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.2.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.2.3.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.2.4.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.2.5.html 1.1.1.1
external/mit/MesaLib/dist/docs/relnotes/9.2.html 1.1.1.1
external/mit/MesaLib/dist/docs/README.UVD       1.1.1.1
external/mit/MesaLib/dist/docs/README.VCE       1.1.1.1
external/mit/MesaLib/dist/docs/VERSIONS         1.1.1.1
external/mit/MesaLib/dist/docs/application-issues.html 1.1.1.1
external/mit/MesaLib/dist/docs/gears.png        1.1.1.1
external/mit/MesaLib/dist/docs/libGL.txt        1.1.1.1
external/mit/MesaLib/dist/docs/mesa.css         1.1.1.1
external/mit/MesaLib/dist/docs/patents.txt      1.1.1.1
external/mit/MesaLib/dist/docs/postprocess.html 1.1.1.1
external/mit/MesaLib/dist/docs/viewperf.html    1.1.1.1
external/mit/MesaLib/dist/docs/vmware-guest.html 1.1.1.1
external/mit/MesaLib/dist/docs/specs/OLD/MESA_packed_depth_stencil.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/OLD/MESA_program_debug.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/OLD/MESA_resize_buffers.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/OLD/MESA_sprite_point.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/OLD/MESA_trace.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/EXT_shader_integer_mix.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_agp_offset.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_configless_context.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_copy_sub_buffer.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_drm_image.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_multithread_makecurrent.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_pack_invert.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_pixmap_colormap.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_query_renderer.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_release_buffers.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_set_3dfx_mode.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_shader_debug.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_swap_control.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_swap_frame_usage.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_texture_array.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_texture_signed_rgba.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_window_pos.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/MESA_ycbcr_texture.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/WL_bind_wayland_display.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/WL_create_wayland_buffer_from_image.spec 1.1.1.1
external/mit/MesaLib/dist/docs/specs/enums.txt  1.1.1.1
external/mit/MesaLib/dist/docs/README.WIN32     upto 1.1.1.5
external/mit/MesaLib/dist/docs/autoconf.html    upto 1.1.1.2
external/mit/MesaLib/dist/docs/bugs.html        upto 1.1.1.3
external/mit/MesaLib/dist/docs/conform.html     upto 1.1.1.2
external/mit/MesaLib/dist/docs/contents.html    upto 1.1.1.6
external/mit/MesaLib/dist/docs/debugging.html   upto 1.1.1.2
external/mit/MesaLib/dist/docs/developers.html  upto 1.1.1.3
external/mit/MesaLib/dist/docs/devinfo.html     upto 1.1.1.5
external/mit/MesaLib/dist/docs/dispatch.html    upto 1.1.1.4
external/mit/MesaLib/dist/docs/download.html    upto 1.1.1.6
external/mit/MesaLib/dist/docs/egl.html         upto 1.1.1.3
external/mit/MesaLib/dist/docs/envvars.html     upto 1.1.1.6
external/mit/MesaLib/dist/docs/extensions.html  upto 1.1.1.3
external/mit/MesaLib/dist/docs/faq.html         upto 1.1.1.4
external/mit/MesaLib/dist/docs/helpwanted.html  upto 1.1.1.3
external/mit/MesaLib/dist/docs/precompiled.html upto 1.1.1.3
external/mit/MesaLib/dist/docs/index.html       upto 1.1.1.2
external/mit/MesaLib/dist/docs/install.html     upto 1.1.1.6
external/mit/MesaLib/dist/docs/intro.html       upto 1.1.1.4
external/mit/MesaLib/dist/docs/license.html     upto 1.1.1.2
external/mit/MesaLib/dist/docs/lists.html       upto 1.1.1.5
external/mit/MesaLib/dist/docs/mangling.html    upto 1.1.1.2
external/mit/MesaLib/dist/docs/opengles.html    upto 1.1.1.3
external/mit/MesaLib/dist/docs/openvg.html      upto 1.1.1.4
external/mit/MesaLib/dist/docs/osmesa.html      upto 1.1.1.3
external/mit/MesaLib/dist/docs/perf.html        upto 1.1.1.2
external/mit/MesaLib/dist/docs/relnotes.html    upto 1.1.1.7
external/mit/MesaLib/dist/docs/repository.html  upto 1.1.1.6
external/mit/MesaLib/dist/docs/shading.html     upto 1.1.1.6
external/mit/MesaLib/dist/docs/sourcedocs.html  upto 1.1.1.2
external/mit/MesaLib/dist/docs/sourcetree.html  upto 1.1.1.3
external/mit/MesaLib/dist/docs/systems.html     upto 1.1.1.3
external/mit/MesaLib/dist/docs/thanks.html      upto 1.1.1.2
external/mit/MesaLib/dist/docs/utilities.html   upto 1.1.1.2
external/mit/MesaLib/dist/docs/versions.html    upto 1.1.1.2
external/mit/MesaLib/dist/docs/webmaster.html   upto 1.1.1.3
external/mit/MesaLib/dist/docs/xlibdriver.html  upto 1.1.1.4
external/mit/MesaLib/dist/docs/GL3.txt          1.1.1.1
external/mit/MesaLib/dist/docs/llvmpipe.html    upto 1.1.1.2
external/mit/MesaLib/dist/docs/ARB_color_buffer_float.txt 1.1.1.1
external/mit/MesaLib/dist/include/EGL/eglext.h  upto 1.1.1.4
external/mit/MesaLib/dist/include/EGL/eglplatform.h upto 1.1.1.4
external/mit/MesaLib/dist/include/EGL/eglextchromium.h 1.1.1.1
external/mit/MesaLib/dist/include/EGL/eglmesaext.h 1.1.1.1
external/mit/MesaLib/dist/include/GL/internal/dri_interface.h upto 1.1.1.6
external/mit/MesaLib/dist/include/GL/internal/sarea.h upto 1.1.1.3
external/mit/MesaLib/dist/include/GL/gl_mangle.h upto 1.1.1.6
external/mit/MesaLib/dist/include/GL/gl.h       upto 1.1.1.6
external/mit/MesaLib/dist/include/GL/glext.h    upto 1.1.1.6
external/mit/MesaLib/dist/include/GL/glx_mangle.h upto 1.1.1.3
external/mit/MesaLib/dist/include/GL/glx.h      upto 1.1.1.5
external/mit/MesaLib/dist/include/GL/glcorearb.h 1.1.1.1
external/mit/MesaLib/dist/include/GL/glxext.h   upto 1.1.1.6
external/mit/MesaLib/dist/include/GL/osmesa.h   upto 1.1.1.2
external/mit/MesaLib/dist/include/GL/wglext.h   upto 1.1.1.3
external/mit/MesaLib/dist/include/GL/wmesa.h    upto 1.1.1.3
external/mit/MesaLib/dist/include/GLES/glext.h  upto 1.1.1.3
external/mit/MesaLib/dist/include/GLES2/gl2ext.h upto 1.1.1.3
external/mit/MesaLib/dist/include/GLES2/gl2.h   upto 1.1.1.3
external/mit/MesaLib/dist/include/c99/stdbool.h upto 1.1.1.2
external/mit/MesaLib/dist/include/pci_ids/i915_pci_ids.h upto 1.1.1.2
external/mit/MesaLib/dist/include/pci_ids/i965_pci_ids.h upto 1.1.1.2
external/mit/MesaLib/dist/include/pci_ids/radeonsi_pci_ids.h 1.1.1.1
external/mit/MesaLib/dist/include/pci_ids/r200_pci_ids.h upto 1.1.1.2
external/mit/MesaLib/dist/include/pci_ids/r300_pci_ids.h upto 1.1.1.2
external/mit/MesaLib/dist/include/pci_ids/r600_pci_ids.h upto 1.1.1.2
external/mit/MesaLib/dist/include/pci_ids/vmwgfx_pci_ids.h 1.1.1.1
external/mit/MesaLib/dist/include/CL/cl_d3d10.h 1.1.1.1
external/mit/MesaLib/dist/include/CL/cl.h       1.1.1.1
external/mit/MesaLib/dist/include/CL/cl.hpp     1.1.1.1
external/mit/MesaLib/dist/include/CL/cl_d3d11.h 1.1.1.1
external/mit/MesaLib/dist/include/CL/cl_dx9_media_sharing.h 1.1.1.1
external/mit/MesaLib/dist/include/CL/cl_egl.h   1.1.1.1
external/mit/MesaLib/dist/include/CL/cl_ext.h   1.1.1.1
external/mit/MesaLib/dist/include/CL/cl_gl.h    1.1.1.1
external/mit/MesaLib/dist/include/CL/cl_gl_ext.h 1.1.1.1
external/mit/MesaLib/dist/include/CL/cl_platform.h 1.1.1.1
external/mit/MesaLib/dist/include/CL/opencl.h   1.1.1.1
external/mit/MesaLib/dist/include/c11/threads.h 1.1.1.1
external/mit/MesaLib/dist/include/c11/threads_posix.h 1.1.1.1
external/mit/MesaLib/dist/include/c11/threads_win32.h 1.1.1.1
external/mit/MesaLib/dist/include/c99_compat.h  1.1.1.1
external/mit/MesaLib/dist/include/GLES3/gl3ext.h 1.1.1.1
external/mit/MesaLib/dist/include/GLES3/gl3.h   1.1.1.1
external/mit/MesaLib/dist/include/GLES3/gl31.h  1.1.1.1
external/mit/MesaLib/dist/include/GLES3/gl3platform.h 1.1.1.1
external/mit/MesaLib/dist/include/HaikuGL/GLRenderer.h 1.1.1.1
external/mit/MesaLib/dist/include/HaikuGL/GLView.h 1.1.1.1
external/mit/MesaLib/dist/include/HaikuGL/OpenGLKit.h 1.1.1.1
external/mit/MesaLib/dist/include/HaikuGL/README 1.1.1.1
external/mit/MesaLib/dist/VERSION               1.1.1.1
external/mit/MesaLib/dist/src/egl/drivers/dri2/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/egl/drivers/dri2/egl_dri2.c upto 1.1.1.3
external/mit/MesaLib/dist/src/egl/drivers/dri2/egl_dri2.h upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/drivers/dri2/platform_drm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/drivers/dri2/platform_wayland.c upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/drivers/dri2/platform_x11.c upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/drivers/dri2/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/egl/drivers/dri2/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/egl/drivers/dri2/egl_dri2_fallbacks.h 1.1.1.1
external/mit/MesaLib/dist/src/egl/drivers/dri2/platform_android.c 1.1.1.1
external/mit/MesaLib/dist/src/egl/main/eglcompiler.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/egl/main/eglapi.c upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglapi.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglconfig.c upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglconfig.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglsurface.c upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglfallbacks.c upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/main/eglcontext.c upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglcontext.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglcurrent.c upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglcurrent.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/egldefines.h upto 1.1.1.3
external/mit/MesaLib/dist/src/egl/main/egldisplay.c upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/egldisplay.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/egldriver.c upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/egldriver.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglglobals.c upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglglobals.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglimage.c upto 1.1.1.3
external/mit/MesaLib/dist/src/egl/main/eglimage.h upto 1.1.1.3
external/mit/MesaLib/dist/src/egl/main/egllog.c upto 1.1.1.3
external/mit/MesaLib/dist/src/egl/main/egllog.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglmisc.c upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglmisc.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglmode.c upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglmode.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglmutex.h upto 1.1.1.3
external/mit/MesaLib/dist/src/egl/main/eglscreen.c upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglscreen.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/eglstring.c upto 1.1.1.3
external/mit/MesaLib/dist/src/egl/main/eglstring.h upto 1.1.1.3
external/mit/MesaLib/dist/src/egl/main/eglsync.c upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/main/eglsurface.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/egltypedefs.h upto 1.1.1.4
external/mit/MesaLib/dist/src/egl/main/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/main/egl.pc.in upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/main/eglsync.h upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/main/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/egl/main/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/egl/main/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/egl/main/README.txt 1.1.1.1
external/mit/MesaLib/dist/src/egl/wayland/wayland-drm/wayland-drm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/wayland/wayland-drm/wayland-drm.h upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/wayland/wayland-drm/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/egl/wayland/wayland-drm/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/egl/wayland/wayland-drm/wayland-drm.xml 1.1.1.1
external/mit/MesaLib/dist/src/egl/wayland/wayland-egl/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/egl/wayland/wayland-egl/wayland-egl-priv.h upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/wayland/wayland-egl/wayland-egl.c upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/wayland/wayland-egl/wayland-egl.pc.in upto 1.1.1.2
external/mit/MesaLib/dist/src/egl/wayland/wayland-egl/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/egl/wayland/wayland-egl/wayland-egl-symbols-check 1.1.1.1
external/mit/MesaLib/dist/src/egl/wayland/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/egl/wayland/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/egl/docs/EGL_MESA_screen_surface 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/cso_cache/cso_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/cso_cache/cso_cache.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/cso_cache/cso_cache.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/cso_cache/cso_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/cso_cache/cso_hash.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/cso_cache/cso_hash.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_aaline.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_gs.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_gs.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_flatshade.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_aapoint.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_clip.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_cull.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_pstipple.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_offset.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_unfilled.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_stipple.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_twoside.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_util.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_validate.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_vbuf.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_wide_line.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pipe_wide_point.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_private.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_decompose.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_emit.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_fetch.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_fetch_emit.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_post_vs.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_util.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_vsplit.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_so_emit_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_split_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_vs_variant.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_vbuf.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_vertex.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_vertex.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_vs.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_vs.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_vs_exec.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_vs_llvm.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_cliptest_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_decompose_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_gs_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_llvm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_llvm.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_llvm_sample.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_prim_assembler.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_pt_so_emit.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_prim_assembler.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/draw/draw_prim_assembler_tmp.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_assert.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_arit.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_arit.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_gather.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/f.cpp upto 1.
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_format_yuv.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_gather.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_const.c upto 1.
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_const.h upto 1.
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_conv.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_conv.h 1.1.1.3-1.
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_init.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_debug.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_flow.c upto 1.
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_misc.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_flow.h upto 1.
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_format.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_printf.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_format_soa.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_init.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_printf.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_quad.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_intr.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_intr.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_logic.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_logic.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_pack.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_pack.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_sample.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_sample.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_struct.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_struct.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_swizzle.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_swizzle.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_type.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_type.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_assert.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_bitarit.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_bitarit.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_quad.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_arit_overflow.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_arit_overflow.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_format_aos_array.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_format_float.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_format_srgb.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/indices/u_indices_gen.py upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/indices/u_indices.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/indices/u_indices.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/indices/u_unfilled_indices.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/indices/u_indices_priv.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/indices/u_unfilled_gen.py upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/indices/u_primconvert.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/indices/u_primconvert.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/os/os_memory.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/os/os_memory_debug.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/os/os_mman.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/os/os_misc.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/os/os_misc.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/os/os_thread.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/os/os_time.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/os/os_time.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/os/os_process.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/os/os_process.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_buffer.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_bufmgr_ondemand.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_buffer_malloc.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_bufmgr.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_bufmgr_alt.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_bufmgr_cache.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_bufmgr_debug.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_bufmgr_mm.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_bufmgr_pool.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_bufmgr_slab.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_validate.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/pipebuffer/pb_validate.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug_context.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/README 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug_connection.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug_connection.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug_context.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug_core.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug_core.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug_internal.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug_shader.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug_shader.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug_texture.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/rbug/rbug_texture.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/rtasm/rtasm_execmem.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/rtasm/rtasm_cpu.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/rtasm/rtasm_cpu.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/rtasm/rtasm_execmem.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/rtasm/rtasm_x86sse.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/rtasm/rtasm_x86sse.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_build.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_build.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_dump.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_dump.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_exec.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_exec.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_info.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_info.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_iterate.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_iterate.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_transform.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_parse.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_parse.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_sanity.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_sanity.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_scan.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_scan.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_text.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_text.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_strings.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_transform.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_ureg.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_ureg.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_util.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_util.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/tgsi/tgsi_strings.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/translate/translate_cache.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/translate/translate.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/translate/translate.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/translate/translate_cache.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/translate/translate_generic.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/translate/translate_sse.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_cpu_detect.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_atomic.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_blit.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_blit.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_blitter.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_blitter.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_cache.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_clear.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug_memory.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_cpu_detect.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug_symbol.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug_stack.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug_stack.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_double_list.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_dump_defines.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_draw_quad.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_draw_quad.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_dump.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_dump_state.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format.csv upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_latc.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_yuv.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_pack.py upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_parse.py upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_table.py upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_gen_mipmap.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_gen_mipmap.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_handle_table.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_handle_table.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_hash_table.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_hash_table.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_inlines.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_keymap.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_keymap.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_math.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_math.h upto 1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_memory.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_network.c upto 1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_network.h upto 1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_pack_color.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_pointer.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_prim.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_vbuf.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_rect.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_simple_list.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_slab.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_suballoc.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_snprintf.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_simple_shaders.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_simple_shaders.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_sse.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_string.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_surface.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_surface.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_texture.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_texture.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_tile.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_tile.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_time.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_transfer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_transfer.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_upload_mgr.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_upload_mgr.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_caps.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_caps.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug_describe.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug_describe.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug_refcnt.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug_refcnt.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_draw.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_draw.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format.c 1.4
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_other.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_r11g11b10f.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_rgtc.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_s3tc.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_helpers.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_helpers.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_tests.c upto 1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_yuv.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_zs.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_zs.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_framebuffer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_framebuffer.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_half.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_range.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_index_modify.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_index_modify.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_linkage.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_linkage.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_pstipple.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_pstipple.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_resource.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_sampler.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_slab.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_staging.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_surfaces.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_surfaces.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_video.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug_flush.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_debug_flush.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_dual_blend.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_bptc.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_bptc.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_etc.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_format_etc.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_resource.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_suballoc.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/util/u_vbuf.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/hud/hud_cpu.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/hud/font.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/hud/font.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/hud/hud_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/hud/hud_context.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/hud/hud_driver_query.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/hud/hud_fps.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/hud/hud_private.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_compositor.c 1.1-1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_compositor.h 1.1-1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_csc.c 1.1-1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_csc.h 1.1-1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_decoder.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_decoder.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_defines.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_deint_filter.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_deint_filter.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_idct.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_idct.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_matrix_filter.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_matrix_filter.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_mc.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_mc.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_median_filter.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_median_filter.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_mpeg12_bitstream.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_rbsp.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_mpeg12_bitstream.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_types.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_vertex_buffers.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_vertex_buffers.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_video_buffer.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_video_buffer.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_vlc.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_winsys.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_winsys_dri.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_zscan.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/vl/vl_zscan.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/SConscript upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/auxiliary/target-helpers/inline_debug_helper.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/target-helpers/inline_sw_helper.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/auxiliary/target-helpers/inline_drm_helper.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/pipe-loader/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/pipe-loader/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/pipe-loader/pipe_loader.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/pipe-loader/pipe_loader.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/pipe-loader/pipe_loader_priv.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/filters.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/ADDING 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/postprocess.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_celshade.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_celshade.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_colors.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_colors.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_filters.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_init.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_mlaa.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_mlaa.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_mlaa_areamap.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_private.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_program.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/auxiliary/postprocess/pp_run.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/cso/blend.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/cso/dsa.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/cso/rasterizer.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/cso/sampler.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/cso/shader.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/cso/velems.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/conf.py upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/docs/source/context.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/cso.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/debugging.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/distro.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/format.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/glossary.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/index.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/intro.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/pipeline.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/resources.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/screen.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/source/tgsi.rst 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/d3d11ddi.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/llvm-todo.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/docs/make.bat 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_batch.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/TODO 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/i915/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_blit.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_blit.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_fpc_translate.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_clear.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_debug.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_debug.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_debug_fp.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_flush.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_fpc.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_fpc_emit.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_state_derived.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_prim_emit.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_prim_vbuf.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_reg.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_screen.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_screen.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_state.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_state.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_debug_private.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_state_dynamic.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_state_emit.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_state_immediate.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_state_inlines.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_state_sampler.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_surface.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_winsys.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/i915/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/i915/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/i915/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_batchbuffer.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_query.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_resource.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_resource.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_resource_buffer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_resource_texture.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_state_static.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_surface.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/i915/i915_fpc_optimize.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/identity/id_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/identity/SConscript upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/identity/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/identity/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/identity/id_objects.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/identity/id_objects.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/identity/id_screen.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/identity/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/SConscript upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_clear.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_clear.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_draw_arrays.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_so.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_debug.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_rast_priv.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_flush.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_flush.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_jit.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_jit.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_perf.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_query.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_query.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_rast.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_rast.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_rast_tri.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_scene.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_scene.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_limits.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_memory.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_screen.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_screen.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_setup.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_setup.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_setup_context.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_setup_line.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_setup_point.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_setup_tri.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_blend.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_clip.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_derived.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_fs.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_sampler.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_surface.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_vertex.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_vs.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_surface.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_surface.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_test.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_test_blend.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_test_conv.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_test_format.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_test_main.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_tex_sample.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_texture.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_texture.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_bld_alpha.c 1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_bld_alpha.h 1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_bld_blend.h 1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_bld_blend_aos.c 1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_test_arit.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_bld_depth.c 1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_bld_depth.h 1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_bld_interp.c 1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_bld_interp.h 1.4
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_memory.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_rast_debug.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_fs.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_gs.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_setup.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_state_setup.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_test_printf.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_tex_sample.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/llvmpipe/lp_bld_blend.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/lib/Makefile 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/lib/gf100.asm 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/lib/gf100.asm.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/lib/gk104.asm 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/lib/gk104.asm.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/lib/gk110.asm 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/lib/gk110.asm.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/lib/gm107.asm 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/lib/gm107.asm.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nv50.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_graph.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_graph.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_inlines.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_gm107.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_gm107.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nv50.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_print.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_ssa.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_target.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_target_gm107.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_target_gm107.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nv50.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nv50.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_util.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/codegen/nv50_ir_util.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_fence.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_context.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_screen.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_screen.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv_m2mf.xml.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv_object.xml.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_winsys.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_compiler.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_buffer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_buffer.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_mm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_mm.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_statebuf.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_debug.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_heap.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_heap.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_video.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_video.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_vp3_video.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_vp3_video.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_vp3_video_bsp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nouveau_vp3_video_vp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv17_mpeg.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv31_mpeg.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv01_2d.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30-40_3d.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_clear.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_context.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_draw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_format.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_format.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_fragprog.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_fragtex.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_miptree.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_push.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_query.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_resource.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_resource.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_screen.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_screen.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_state.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_state.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_state_validate.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_texture.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_transfer.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_transfer.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_vbo.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_vertprog.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_vertprog.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv30_winsys.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv40_vertprog.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nv40_verttex.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nvfx_fragprog.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nvfx_shader.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv30/nvfx_vertprog.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_2d.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_3d.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_3ddefs.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_blit.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_context.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_defs.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_draw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_formats.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_miptree.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_program.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_program.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_push.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_query.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_resource.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_resource.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_screen.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_screen.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_state.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_state_validate.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_stateobj.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_stateobj_tex.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_surface.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_tex.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_texture.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_transfer.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_transfer.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_vbo.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv50_winsys.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv84_video.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv84_video.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv84_video_bsp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv84_video_vp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv98_video.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv98_video.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv98_video_bsp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv98_video_ppp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nv50/nv98_video_vp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/mme/Makefile 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/mme/com9097.mme 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/mme/com9097.mme.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_2d.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_3d.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_3ddefs.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_compute.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_compute.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_context.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_draw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_formats.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_m2mf.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_miptree.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_program.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_program.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_push.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_query.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_resource.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_resource.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_screen.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_shader_state.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_state.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_surface.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_transfer.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_vbo_translate.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_video.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_video.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_video_bsp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_video_ppp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_video_vp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nvc0_winsys.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nve4_compute.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nve4_compute.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nve4_compute.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/nouveau/nvc0/nve4_p2mf.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/disasm-a2xx.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_blend.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_blend.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_compiler.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_compiler.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_context.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_draw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_draw.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_emit.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_emit.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_gmem.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_gmem.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_program.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_program.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_rasterizer.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_rasterizer.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_screen.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_screen.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_texture.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_texture.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_util.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_util.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_zsa.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/fd2_zsa.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/instr-a2xx.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/ir-a2xx.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a2xx/ir-a2xx.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/adreno_common.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/adreno_pm4.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/disasm.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_context.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_draw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_draw.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_fence.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_fence.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_gmem.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_gmem.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_lowering.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_lowering.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_program.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_program.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_query.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_query.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_query_hw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_query_hw.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_query_sw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_query_sw.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_resource.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_resource.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_screen.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_screen.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_state.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_state.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_surface.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_surface.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_texture.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/disasm-a3xx.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/instr-a3xx.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_compiler.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_compiler.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_compiler_old.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_cp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_depth.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_dump.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_flatten.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_ra.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_sched.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_shader.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_shader.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/ir3/ir3_visitor.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_texture.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_util.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/freedreno_util.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_blend.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_blend.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_context.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_draw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_draw.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_emit.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_emit.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_gmem.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_gmem.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_program.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_program.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_query.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_query.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_rasterizer.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_rasterizer.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_screen.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_screen.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_texture.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_texture.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_util.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_util.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_zsa.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/freedreno/a3xx/fd3_zsa.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/genhw/gen_blitter.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/genhw/gen_eu_isa.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/genhw/gen_eu_message.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/genhw/gen_mi.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/genhw/gen_regs.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/genhw/gen_render_3d.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/genhw/gen_render_dynamic.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/genhw/gen_render_surface.xml.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/genhw/genhw.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_3d.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_3d.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_3d_pipeline.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_3d_pipeline.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_3d_pipeline_dump.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_blit.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_blit.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_blitter.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_blitter.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_cp.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_blitter_blt.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_blitter_pipe.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_blitter_rectlist.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_common.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_context.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_cp.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_format.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_format.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_gpe.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_gpe_gen6.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_gpe_gen6.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_gpe_gen7.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_gpe_gen7.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_gpgpu.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_gpgpu.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_layout.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_layout.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_public.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_query.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_query.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/include/brw_defines.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/include/brw_structs.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_resource.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_resource.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_screen.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_screen.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_shader.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_shader.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_state.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_state.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_transfer.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_transfer.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_video.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/ilo_video.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/ilo_shader_cs.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/ilo_shader_fs.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/ilo_shader_gs.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/ilo_shader_internal.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/ilo_shader_vs.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_compiler.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_compiler.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_compiler_asm.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_compiler_reg.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_helpers.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_legalize.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_legalize.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_legalize_ra.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_optimize.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_optimize.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_tgsi.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/ilo/shader/toy_tgsi.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_chipset.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/tests/omod_two_writers.test 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/tests/r300_compiler_tests.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/tests/r300_compiler_tests.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/tests/radeon_compiler_optimize_tests.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/tests/radeon_compiler_regalloc_tests.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/tests/radeon_compiler_util_tests.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/tests/rc_test_helpers.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/tests/rc_test_helpers.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/tests/regalloc_tex_1d_swizzle.test 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/tests/unit_test.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/tests/unit_test.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/memory_pool.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/memory_pool.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/r300_fragprog.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/r300_fragprog.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/r300_fragprog_emit.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/r300_fragprog_swizzle.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/r300_fragprog_swizzle.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/r3xx_fragprog.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/r3xx_vertprog.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/r3xx_vertprog_dump.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/r500_fragprog.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/r500_fragprog.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/r500_fragprog_emit.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_code.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_code.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_compiler.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_list.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_compiler.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_compiler_util.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_compiler_util.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_dataflow.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_dataflow.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_dataflow_deadcode.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_dataflow_swizzles.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_emulate_branches.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_emulate_branches.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_emulate_loops.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_emulate_loops.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_inline_literals.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_list.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_opcodes.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_opcodes.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_optimize.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_pair_dead_sources.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_pair_regalloc.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_pair_schedule.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_pair_translate.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_program.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_program.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_program_alu.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_program_alu.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_program_constants.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_program_pair.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_program_pair.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_program_print.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_program_tex.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_program_tex.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_regalloc.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_remove_constants.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_remove_constants.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_rename_regs.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_rename_regs.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_swizzle.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_variable.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_variable.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/compiler/radeon_vert_fc.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_blit.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_cb.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_shader_semantics.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_chipset.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_cs.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_debug.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_emit.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_emit.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_flush.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_fs.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_fs.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_query.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_resource.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_reg.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_render.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_screen.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_screen.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_state_derived.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_state.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_texture_desc.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_texture_desc.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_transfer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_texture.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_texture.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_tgsi_to_rc.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_vs.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_vs.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/r300/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_defines.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_render_translate.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_screen_buffer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_screen_buffer.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_transfer.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r300/r300_vs_draw.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r300/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r300/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/SConscript upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_clear.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_clear.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_draw_arrays.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_fs_exec.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_flush.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_flush.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_fs.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_prim_vbuf.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_quad_depth_test.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_prim_vbuf.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_quad.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_quad_blend.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_quad_fs.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_quad_depth_test_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_quad_pipe.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_quad_pipe.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_state_blend.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_query.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_query.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_screen.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_screen.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_setup.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_setup.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_state.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_state_derived.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_state_clip.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_state_rasterizer.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_tex_tile_cache.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_state_sampler.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_state_surface.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_state_vertex.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_surface.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_surface.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_tex_sample.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_tex_sample.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_state_shader.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_tex_tile_cache.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_texture.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_texture.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_tile_cache.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_tile_cache.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_limits.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/softpipe/sp_state_so.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga3d_shaderdefs.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga3d_caps.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga3d_reg.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga_escape.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga_overlay.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga_reg.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga_types.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/README 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/includeCheck.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga3d_cmd.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga3d_devcaps.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga3d_limits.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga3d_surfacedefs.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/svga3d_types.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/vmware_pack_begin.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/include/vmware_pack_end.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/svgadump/svga_dump.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/SConscript upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_cmd.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_cmd.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_draw_arrays.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_draw.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_draw.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_depthstencil.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_draw_elements.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_draw_private.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_blit.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_clear.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_constants.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_rasterizer.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_draw.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_flush.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_fs.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_misc.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_query.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_sampler.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_vertex.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_pipe_vs.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_screen.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_screen.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_state_framebuffer.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_surface.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_screen_cache.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_screen_cache.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_tgsi.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_format.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_surface.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_state.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_state.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_state_constants.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_state_need_swtnl.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_state_fs.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_swtnl_backend.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_state_rss.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_state_tss.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_state_vdecl.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_state_vs.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_swtnl_private.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_swtnl_draw.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_swtnl_state.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_tgsi.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_tgsi_decl_sm30.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_tgsi_emit.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_tgsi_insn.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_winsys.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_resource.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_resource.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_resource_buffer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_resource_buffer.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_resource_buffer_upload.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_resource_texture.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_resource_texture.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_sampler_view.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_format.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_shader.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/svga/svga_shader.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/trace/tr_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/trace/SConscript upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/trace/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/trace/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/trace/tr_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/trace/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/trace/tr_dump.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/trace/tr_dump.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/trace/tr_dump_state.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/trace/tr_dump_state.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/trace/README 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/trace/tr_screen.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/trace/tr_screen.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/trace/tr_dump_defines.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/trace/tr_texture.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/drivers/trace/tr_texture.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/drivers/trace/trace.xsl 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/galahad/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/galahad/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/galahad/glhd_context.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/galahad/glhd_context.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/galahad/glhd_objects.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/galahad/glhd_screen.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/galahad/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/galahad/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/noop/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/noop/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/noop/noop_pipe.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/noop/noop_state.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/noop/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/noop/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/notes.markdown 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_bc.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_bc_builder.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_bc_decoder.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_bc_dump.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_bc_finalize.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_bc_fmt_def.inc 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_bc_parser.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_context.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_core.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_dce_cleanup.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_def_use.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_dump.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_expr.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_expr.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_gcm.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_gvn.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_if_conversion.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_ir.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_ir.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_liveness.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_pass.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_pass.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_peephole.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_psi_ops.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_public.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_ra_checker.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_ra_init.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_sched.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_sched.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_shader.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_shader.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_ssa_builder.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/sb_valtable.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/eg_asm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/eg_sq.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/evergreen_compute.c 1.1-1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/evergreen_state.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/evergreend.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_hw_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_asm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_asm.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_blit.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_isa.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_formats.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_opcodes.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_pipe.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_pipe.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_public.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_uvd.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_llvm.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_shader.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_shader.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_sq.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_state.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_state_common.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600d.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r700_asm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/r700_sq.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/r600/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/compute_memory_pool.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/compute_memory_pool.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/evergreen_compute.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/evergreen_compute_internal.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/evergreen_hw_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_isa.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/r600/r600_llvm.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/rbug/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/rbug/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/rbug/rbug_context.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/rbug/rbug_context.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/rbug/rbug_core.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/rbug/rbug_objects.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/rbug/rbug_screen.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/drivers/rbug/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/rbug/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/rbug/README 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/LLVM_REVISION.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/cayman_msaa.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/r600_buffer_common.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/r600_cs.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/r600_pipe_common.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/r600_pipe_common.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/r600_query.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/r600_streamout.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/r600_texture.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/r600d_common.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_elf_util.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_elf_util.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_llvm.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_uvd.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_llvm_emit.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_llvm_emit.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_llvm_util.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_llvm_util.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_uvd.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_vce.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_vce.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_vce_40_2_2.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_video.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeon/radeon_video.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_blit.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_commands.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_compute.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_descriptors.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_dma.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_hw_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_pipe.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_pipe.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_pm4.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_pm4.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_public.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_shader.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_shader.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_state.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_state.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_state_draw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/si_uvd.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/radeonsi/sid.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_bufmgr.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_bufmgr.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_cl.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_cl.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_context.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_draw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_drm.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_emit.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_opt_algebraic.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_opt_copy_propagation.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_opt_dead_code.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_packet.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_program.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_qir.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_qir.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_qpu.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_qpu.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_qpu_defines.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_qpu_disasm.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_qpu_emit.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_qpu_validate.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_resource.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_resource.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_screen.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_screen.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_simulator.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_simulator_validate.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_simulator_validate.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_simulator_validate_shaders.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/drivers/vc4/vc4_state.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/include/pipe/p_shader_tokens.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/include/pipe/p_compiler.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/include/pipe/p_config.h upto 1.2
external/mit/MesaLib/dist/src/gallium/include/pipe/p_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/include/pipe/p_defines.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/include/pipe/p_format.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/include/pipe/p_screen.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/include/pipe/p_state.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/include/pipe/p_video_codec.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/include/pipe/p_video_enums.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/include/pipe/p_video_state.h 1.1-1.3
external/mit/MesaLib/dist/src/gallium/include/state_tracker/drisw_api.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/include/state_tracker/drm_driver.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/include/state_tracker/st_api.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/include/state_tracker/sw_winsys.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/include/state_tracker/xlibsw_api.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/include/state_tracker/vdpau_interop.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/SConscript upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/dri2.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/dri2_buffer.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/dri_context.c 1.1-1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/dri_context.h 1.1-1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/dri_drawable.c 1.1-1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/dri_drawable.h 1.1-1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/dri_query_renderer.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/dri_query_renderer.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/dri_screen.c 1.1-1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/dri_screen.h 1.1-1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/dri/drisw.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/egl_g3d_image.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/egl_g3d.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/egl_g3d.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/native_modeset.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/egl_g3d_image.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/native.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/native_buffer.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/native_wayland_bufmgr.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/egl_g3d_api.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/egl_g3d_api.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/egl_g3d_loader.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/egl_g3d_st.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/egl_g3d_st.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/egl_g3d_sync.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/egl_g3d_sync.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/native_helper.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/native_helper.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/x11/native_dri2.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/x11/glxinit.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/x11/native_x11.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/x11/native_x11.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/x11/native_ximage.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/x11/x11_screen.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/x11/x11_screen.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/drm/modeset.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/drm/native_drm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/drm/native_drm.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/fbdev/native_fbdev.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/gdi/native_gdi.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/wayland/native_drm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/wayland/native_shm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/wayland/native_wayland.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/wayland/native_wayland.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/android/native_android.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/egl/null/native_null.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/glx_getproc.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/SConscript upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/glx_api.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/glx_usefont.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/xm_api.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/xm_api.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/xm_public.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/xm_st.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/xm_st.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/glx/xlib/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/README 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/matrix.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/api_context.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/api_filters.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/api_images.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/api_masks.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/api_misc.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/image.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/mask.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/paint.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/path.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/shaders_cache.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/polygon.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/renderer.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/shader.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/text.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/stroker.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/vg_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/vg_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/vg_translate.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/api.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/api.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/handle.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/vg_api.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/vg_manager.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/vg_manager.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/vega/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/SConscript upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_context.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_device.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_device.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_ext_extensionsstring.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_ext_pixelformat.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_ext_swapinterval.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_framebuffer.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_framebuffer.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_getprocaddress.c upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_icd.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_pixelformat.c upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_pixelformat.h upto 1.1.1.3
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_tls.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_tls.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_wgl.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_wgl.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_winsys.h upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_ext_pbuffer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_st.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_st.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/opengl32.def 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/opengl32.mingw.def 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/wgl/stw_ext_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/gbm/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/gbm/gbm_drm.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/gbm/gbm_gallium_drmint.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/state_trackers/gbm/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/gbm/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/context.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/device.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/dispatch.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/dispatch.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/event.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/kernel.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/memory.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/platform.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/program.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/queue.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/sampler.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/transfer.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/api/util.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/Doxyfile 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/llvm/invocation.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/tgsi/compiler.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/util/adaptor.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/util/algebra.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/util/algorithm.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/util/compat.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/util/compat.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/util/factor.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/util/functional.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/util/lazy.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/util/pointer.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/util/range.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/clover/util/tuple.hpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/omx/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/omx/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/omx/entrypoint.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/omx/entrypoint.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/omx/vid_dec.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/omx/vid_dec.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/omx/vid_dec_h264.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/omx/vid_dec_mpeg12.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/omx/vid_enc.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/omx/vid_enc.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/osmesa/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/osmesa/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/osmesa/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/osmesa/osmesa.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/bitmap.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/decode.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/device.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/ftab.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/htab.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/mixer.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/output.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/preemption.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/presentation.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/query.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/surface.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/vdpau/vdpau_private.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/README 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/xa-indent 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/xa_composite.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/xa_composite.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/xa_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/xa_context.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/xa_priv.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/xa_renderer.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/xa_tgsi.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/xa_tracker.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/xa_tracker.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xa/xa_yuv.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/tests/test_blocks.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/tests/test_context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/tests/test_rendering.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/tests/test_subpicture.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/tests/test_surface.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/tests/testlib.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/tests/testlib.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/tests/xvmc_bench.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/attributes.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/block.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/context.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/subpicture.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/surface.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/state_trackers/xvmc/xvmc_private.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/freedreno/drm/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/freedreno/drm/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/freedreno/drm/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/freedreno/drm/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/freedreno/drm/freedreno_drm_public.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/freedreno/drm/freedreno_drm_winsys.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/intel/drm/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/intel/drm/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/intel/drm/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/intel/drm/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/intel/drm/intel_drm_winsys.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/intel/intel_winsys.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/vc4/drm/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/vc4/drm/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/vc4/drm/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/vc4/drm/vc4_drm_public.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/vc4/drm/vc4_drm_winsys.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/i915/drm/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/i915/drm/i915_drm_buffer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/i915/drm/i915_drm_winsys.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/i915/drm/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/i915/drm/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/i915/drm/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/i915/sw/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/i915/sw/i915_sw_batchbuffer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/i915/sw/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/nouveau/drm/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/nouveau/drm/nouveau_drm_winsys.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/nouveau/drm/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/nouveau/drm/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/nouveau/drm/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/radeon_drm_bo.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/radeon_drm_bo.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/radeon_drm_cs.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/radeon_drm_cs.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/radeon_drm_public.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/radeon_winsys.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/radeon/drm/radeon_drm_cs_dump.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/radeon/tools/radeon_ctx.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_buffer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_buffer.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_context.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_context.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_fence.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_fence.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_screen.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_screen.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_screen_dri.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_screen_pools.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_screen_svga.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_surface.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_surface.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmwgfx_drm.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/pb_buffer_simple_fenced.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_shader.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/svga/drm/vmw_shader.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/dri/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/dri/dri_sw_winsys.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/dri/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/gdi/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/gdi/gdi_sw_winsys.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/android/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/android/android_sw_winsys.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/android/android_sw_winsys.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/fbdev/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/fbdev/fbdev_sw_winsys.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/fbdev/fbdev_sw_winsys.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/fbdev/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/null/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/null/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/null/null_sw_winsys.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/null/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/wayland/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/wayland/wayland_sw_winsys.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/wayland/wayland_sw_winsys.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/wayland/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/wrapper/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/wrapper/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/xlib_sw_winsys.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/hgl/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/hgl/bitmap_wrapper.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/hgl/bitmap_wrapper.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/hgl/hgl_sw_winsys.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/hgl/hgl_sw_winsys.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/kms-dri/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/kms-dri/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/kms-dri/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/kms-dri/kms_dri_sw_winsys.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/winsys/sw/kms-dri/kms_dri_sw_winsys.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/dri/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/dri/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/dri/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/dri/dri.sym 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/dri/target.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/omx/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/omx/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/omx/omx.sym 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/omx/target.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/dri-vdpau.dyn 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/haiku-softpipe/GalliumContext.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/haiku-softpipe/GalliumContext.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/haiku-softpipe/GalliumFramebuffer.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/haiku-softpipe/GalliumFramebuffer.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/haiku-softpipe/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/haiku-softpipe/SoftwareRenderer.cpp 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/haiku-softpipe/SoftwareRenderer.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/haiku-softpipe/SoftwareRenderer.rdef 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/opencl/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/opencl/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/opencl/mesa.icd 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/opencl/opencl.sym 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/egl-static/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/egl-static/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/egl-static/egl.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/egl-static/egl_pipe.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/egl-static/egl_pipe.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/egl-static/egl_st.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/egl-static/egl_st.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/egl-static/st_GL.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/egl-static/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/egl-static/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/egl-static/egl.sym 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/gbm/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/gbm/gbm.sym 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/gbm/target.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/gbm/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/gbm/gallium-gbm-symbols-check 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/graw-gdi/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/graw-null/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/graw-null/graw_util.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/graw-xlib/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/graw-xlib/graw_xlib.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/libgl-gdi/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/libgl-gdi/libgl_gdi.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/libgl-xlib/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/libgl-xlib/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/libgl-xlib/xlib.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/targets/libgl-xlib/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/libgl-xlib/libgl-xlib.sym 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/osmesa/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/osmesa/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/osmesa/osmesa.pc.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/osmesa/osmesa.sym 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/osmesa/target.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/pipe-loader/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/pipe-loader/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/pipe-loader/pipe.sym 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/pipe-loader/pipe_i915.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/pipe-loader/pipe_msm.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/pipe-loader/pipe_nouveau.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/pipe-loader/pipe_r300.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/pipe-loader/pipe_r600.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/pipe-loader/pipe_radeonsi.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/pipe-loader/pipe_swrast.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/pipe-loader/pipe_vmwgfx.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/vdpau/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/vdpau/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/vdpau/target.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/vdpau/vdpau.sym 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/xa/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/xa/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/xa/target.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/xa/xa.sym 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/xa/xatracker.pc.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/xvmc/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/xvmc/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/xvmc/target.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/targets/xvmc/xvmc.sym 1.1.1.1
external/mit/MesaLib/dist/src/gallium/SConscript upto 1.1.1.4
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-abs.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-add.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-cb-1d.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-cb-2d.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-dp3.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-dp4.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-dst.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-ex2.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-face.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-flr.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-frc.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-kil.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-lg2.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-lit.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-lrp.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-mad-immx.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-mad.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-max.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-min.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-mov.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-mul.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-rcp.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-rsq.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-sge.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-slt.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-srcmod-abs.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-srcmod-absneg.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-srcmod-neg.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-srcmod-swz.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-sub.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-tempx.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-ucmp.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fragment-shader/frag-xpd.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/graw/clear.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/graw/fs-test.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/graw/gs-test.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/graw/quad-sample.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/graw/quad-tex.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/graw/shader-leak.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/graw/tri-gs.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/graw/tri-instanced.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/graw/tri.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/graw/vs-test.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/graw/disasm.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fs-fragcoord.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fs-frontface.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/fs-write-z.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/graw_util.h 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/occlusion-query.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/tex-srgb.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/tex-swizzle.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/tgsi_dump.gdb 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/tri-large.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/geometry-shader/add-mix.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/geometry-shader/add.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/geometry-shader/line.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/geometry-shader/mov-cb-2d.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/geometry-shader/mov.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/geometry-shader/multi-line.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-abs.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-add.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-arl.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-arr.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-cb-1d.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-cb-2d.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-dp3.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-dp4.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-dst.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-ex2.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-flr.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-frc.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-imul_hi.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-lg2.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-lit.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-lrp.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-mad.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-max.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-min.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-mov.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-mul.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-rcp.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-rsq.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-sge.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-slt.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-srcmod-abs.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-srcmod-absneg.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-srcmod-neg.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-srcmod-swz.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-sub.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-uadd.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-umul_hi.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/graw/vertex-shader/vert-xpd.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/trivial/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/trivial/quad-tex.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/trivial/tri.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/trivial/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/trivial/compute.c 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/unit/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/unit/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/unit/pipe_barrier_test.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/unit/translate_test.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/unit/u_format_compatible_test.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/unit/u_format_test.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/unit/u_half_test.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tests/unit/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tests/python/tests/regress/fragment-shader/frag-cmp.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tools/trace/dump.py upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tools/trace/format.py upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tools/trace/model.py upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tools/trace/parse.py upto 1.1.1.2
external/mit/MesaLib/dist/src/gallium/tools/trace/README.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tools/trace/TODO.txt 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tools/trace/diff_state.py 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tools/trace/dump_state.py 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tools/trace/tracediff.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/tools/addr2line.sh 1.1.1.1
external/mit/MesaLib/dist/src/gallium/Android.common.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/gallium/Automake.inc 1.1.1.1
external/mit/MesaLib/dist/src/gallium/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gallium/README.portability 1.1.1.1
external/mit/MesaLib/dist/src/glsl/TODO         1.1.1.1
external/mit/MesaLib/dist/src/glsl/Makefile.am  1.1.1.1
external/mit/MesaLib/dist/src/glsl/builtin_functions.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/SConscript   upto 1.1.1.3
external/mit/MesaLib/dist/src/glsl/README       upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ast.h        upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ast_function.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ast_to_hir.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ast_type.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/builtin_type_macros.h 1.1.1.1
external/mit/MesaLib/dist/src/glsl/ir_builder.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/ir_builder.h 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glsl_lexer.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glsl_lexer.ll upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glsl_parser.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glsl_parser.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glsl_parser.yy upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glsl_parser_extras.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glsl_parser_extras.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glsl_symbol_table.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glsl_symbol_table.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glsl_types.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glsl_types.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/hir_field_selection.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir.cpp       upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir.h         1.3
external/mit/MesaLib/dist/src/glsl/ir_basic_block.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_clone.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_constant_expression.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_expression_flattening.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_function.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_function_can_inline.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_function_detect_recursion.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_hierarchical_visitor.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_hierarchical_visitor.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_hv_accept.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_import_prototypes.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_optimization.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_print_visitor.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_print_visitor.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_reader.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_rvalue_visitor.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_rvalue_visitor.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_set_program_inouts.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_validate.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/link_varyings.h 1.1.1.1
external/mit/MesaLib/dist/src/glsl/ir_visitor.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_variable_refcount.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/ir_variable_refcount.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/link_functions.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/linker.cpp   upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/linker.h     upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/list.h       upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/loop_analysis.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/loop_analysis.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/loop_controls.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/loop_unroll.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/lower_discard.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/lower_if_to_cond_assign.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/lower_instructions.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/lower_jumps.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/lower_mat_op_to_vec.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/lower_texture_projection.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/lower_vec_index_to_swizzle.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/lower_variable_index_to_cond_assign.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/lower_vec_index_to_cond_assign.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/lower_vector.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/main.cpp     upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_algebraic.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_constant_folding.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_constant_propagation.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_constant_variable.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_copy_propagation.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_copy_propagation_elements.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_dead_code.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_dead_code_local.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_dead_functions.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_flip_matrices.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/program.h    upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_function_inlining.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_if_simplification.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_noop_swizzle.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_redundant_jumps.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_structure_splitting.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_swizzle_swizzle.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/opt_tree_grafting.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/standalone_scaffolding.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/s_expression.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/strtod.c     upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/strtod.h     upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glcpp/glcpp-lex.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glcpp/README upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glcpp/tests/000-content-with-spaces.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/000-content-with-spaces.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/001-define.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/001-define.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/002-define-chain.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/002-define-chain.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/003-define-chain-reverse.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/003-define-chain-reverse.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/004-define-recursive.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/004-define-recursive.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/005-define-composite-chain.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/005-define-composite-chain.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/006-define-composite-chain-reverse.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/006-define-composite-chain-reverse.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/007-define-composite-recursive.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/007-define-composite-recursive.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/008-define-empty.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/008-define-empty.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/009-undef.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/009-undef.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/010-undef-re-define.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/010-undef-re-define.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/011-define-func-empty.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/011-define-func-empty.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/012-define-func-no-args.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/012-define-func-no-args.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/013-define-func-1-arg-unused.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/013-define-func-1-arg-unused.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/014-define-func-2-arg-unused.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/014-define-func-2-arg-unused.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/015-define-object-with-parens.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/015-define-object-with-parens.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/016-define-func-1-arg.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/016-define-func-1-arg.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/017-define-func-2-args.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/017-define-func-2-args.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/019-define-func-1-arg-multi.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/018-define-func-macro-as-parameter.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/018-define-func-macro-as-parameter.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/019-define-func-1-arg-multi.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/020-define-func-2-arg-multi.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/020-define-func-2-arg-multi.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/021-define-func-compose.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/021-define-func-compose.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/022-define-func-arg-with-parens.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/022-define-func-arg-with-parens.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/023-define-extra-whitespace.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/023-define-extra-whitespace.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/024-define-chain-to-self-recursion.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/024-define-chain-to-self-recursion.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/025-func-macro-as-non-macro.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/025-func-macro-as-non-macro.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/026-define-func-extra-newlines.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/026-define-func-extra-newlines.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/027-define-chain-obj-to-func.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/027-define-chain-obj-to-func.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/028-define-chain-obj-to-non-func.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/028-define-chain-obj-to-non-func.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/032-define-func-self-recurse.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/029-define-chain-obj-to-func-with-args.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/029-define-chain-obj-to-func-with-args.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/030-define-chain-obj-to-func-compose.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/030-define-chain-obj-to-func-compose.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/031-define-chain-func-to-func-compose.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/031-define-chain-func-to-func-compose.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/032-define-func-self-recurse.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/033-define-func-self-compose.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/033-define-func-self-compose.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/034-define-func-self-compose-non-func.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/034-define-func-self-compose-non-func.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/035-define-func-self-compose-non-func-multi-token-argument.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/035-define-func-self-compose-non-func-multi-token-argument.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/036-define-func-non-macro-multi-token-argument.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/036-define-func-non-macro-multi-token-argument.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/037-finalize-unexpanded-macro.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/037-finalize-unexpanded-macro.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/038-func-arg-with-commas.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/038-func-arg-with-commas.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/039-func-arg-obj-macro-with-comma.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/039-func-arg-obj-macro-with-comma.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/040-token-pasting.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/040-token-pasting.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/041-if-0.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/041-if-0.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/042-if-1.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/042-if-1.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/043-if-0-else.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/043-if-0-else.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/044-if-1-else.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/044-if-1-else.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/045-if-0-elif.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/045-if-0-elif.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/046-if-1-elsif.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/046-if-1-elsif.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/047-if-elif-else.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/047-if-elif-else.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/048-if-nested.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/048-if-nested.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/049-if-expression-precedence.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/049-if-expression-precedence.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/050-if-defined.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/050-if-defined.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/051-if-relational.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/051-if-relational.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/052-if-bitwise.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/052-if-bitwise.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/053-if-divide-and-shift.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/053-if-divide-and-shift.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/063-comments.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/054-if-with-macros.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/054-if-with-macros.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/055-define-chain-obj-to-func-parens-in-text.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/055-define-chain-obj-to-func-parens-in-text.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/056-macro-argument-with-comma.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/056-macro-argument-with-comma.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/057-empty-arguments.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/057-empty-arguments.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/058-token-pasting-empty-arguments.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/058-token-pasting-empty-arguments.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/059-token-pasting-integer.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/glcpp-test 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/059-token-pasting-integer.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/060-left-paren-in-macro-right-paren-in-text.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/060-left-paren-in-macro-right-paren-in-text.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/061-define-chain-obj-to-func-multi.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/061-define-chain-obj-to-func-multi.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/062-if-0-skips-garbage.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/062-if-0-skips-garbage.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/063-comments.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/064-version.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/064-version.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/065-if-defined-parens.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/066-if-nospace-expression.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/065-if-defined-parens.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/066-if-nospace-expression.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/067-nested-ifdef-ifndef.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/067-nested-ifdef-ifndef.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/068-accidental-pasting.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/068-accidental-pasting.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/069-repeated-argument.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/069-repeated-argument.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/070-undefined-macro-in-expression.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/070-undefined-macro-in-expression.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/071-punctuator.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/071-punctuator.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/072-token-pasting-same-line.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/072-token-pasting-same-line.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/073-if-in-ifdef.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/073-if-in-ifdef.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/074-elif-undef.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/074-elif-undef.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/075-elif-elif-undef.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/075-elif-elif-undef.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/076-elif-undef-nested.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/076-elif-undef-nested.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/077-else-without-if.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/077-else-without-if.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/078-elif-without-if.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/078-elif-without-if.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/079-endif-without-if.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/079-endif-without-if.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/080-if-without-expression.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/080-if-without-expression.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/081-elif-without-expression.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/081-elif-without-expression.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/082-invalid-paste.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/082-invalid-paste.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/083-unterminated-if.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/083-unterminated-if.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/084-unbalanced-parentheses.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/084-unbalanced-parentheses.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/085-incorrect-argument-count.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/085-incorrect-argument-count.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/086-reserved-macro-names.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/086-reserved-macro-names.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/087-if-comments.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/087-if-comments.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/088-redefine-macro-legitimate.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/088-redefine-macro-legitimate.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/089-redefine-macro-error.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/089-redefine-macro-error.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/090-hash-error.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/090-hash-error.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/091-hash-line.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/091-hash-line.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/092-redefine-macro-error-2.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/092-redefine-macro-error-2.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/093-divide-by-zero.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/093-divide-by-zero.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/095-recursive-define.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/095-recursive-define.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/096-paste-twice.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/096-paste-twice.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/097-paste-with-non-function-macro.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/097-paste-with-non-function-macro.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/098-elif-undefined.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/098-elif-undefined.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/099-c99-example.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/099-c99-example.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/100-macro-with-colon.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/100-macro-with-colon.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/101-macros-used-twice.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/101-macros-used-twice.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/102-garbage-after-endif.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/102-garbage-after-endif.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/103-garbage-after-else-0.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/103-garbage-after-else-0.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/104-hash-line-followed-by-code.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/104-hash-line-followed-by-code.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/105-multiline-hash-line.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/105-multiline-hash-line.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/106-multiline-hash-if.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/106-multiline-hash-if.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/107-multiline-hash-elif.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/107-multiline-hash-elif.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/108-no-space-after-hash-version.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/108-no-space-after-hash-version.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/109-no-space-after-hash-line.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/109-no-space-after-hash-line.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/113-line-and-file-macros.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/110-no-space-digits-after-hash-elif.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/110-no-space-digits-after-hash-elif.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/111-no-space-operator-after-hash-if.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/111-no-space-operator-after-hash-if.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/112-no-space-operator-after-hash-elif.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/112-no-space-operator-after-hash-elif.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/113-line-and-file-macros.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/114-paste-integer-tokens.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/114-paste-integer-tokens.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/115-line-continuations.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/118-comment-becomes-space.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/115-line-continuations.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/116-disable-line-continuations.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/116-disable-line-continuations.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/117-line-continuation-and-non-continuation-backslash.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/117-line-continuation-and-non-continuation-backslash.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/118-comment-becomes-space.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/119-elif-after-else.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/119-elif-after-else.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/120-undef-builtin.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/120-undef-builtin.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/121-comment-bug-72686.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/121-comment-bug-72686.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/122-redefine-whitespace.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/122-redefine-whitespace.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/123-garbage-after-else-1.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/123-garbage-after-else-1.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/124-preprocessing-numbers.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/124-preprocessing-numbers.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/125-es-short-circuit-undefined.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/125-es-short-circuit-undefined.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/126-garbage-after-directive.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/126-garbage-after-directive.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/127-pragma-empty.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/127-pragma-empty.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/128-space-before-hash.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/128-space-before-hash.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/129-define-non-identifier.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/129-define-non-identifier.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/130-define-comment.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/130-define-comment.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/131-eof-without-newline.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/131-eof-without-newline.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/132-eof-without-newline-define.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/132-eof-without-newline-define.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/133-eof-without-newline-comment.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/133-eof-without-newline-comment.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/134-hash-comment-directive.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/134-hash-comment-directive.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/135-duplicate-parameter.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/135-duplicate-parameter.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/136-plus-plus-and-minus-minus.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/136-plus-plus-and-minus-minus.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/137-expand-macro-after-period.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/137-expand-macro-after-period.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/138-multi-line-comment-in-if-0.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/138-multi-line-comment-in-if-0.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/139-define-without-macro-name.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/139-define-without-macro-name.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/140-null-directive.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/140-null-directive.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/141-pragma-and-__LINE__.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/141-pragma-and-__LINE__.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/142-defined-within-macro.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/142-defined-within-macro.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/143-multiple-else.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/143-multiple-else.c.expected 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/tests/glcpp-test-cr-lf 1.1.1.1
external/mit/MesaLib/dist/src/glsl/glcpp/glcpp-lex.l upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glcpp/glcpp-parse.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glcpp/glcpp-parse.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glcpp/glcpp-parse.y upto 1.2
external/mit/MesaLib/dist/src/glsl/glcpp/glcpp.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glcpp/glcpp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/glcpp/pp.c   upto 1.1.1.2
external/mit/MesaLib/dist/src/glsl/Android.gen.mk 1.1.1.1
external/mit/MesaLib/dist/src/glsl/Android.mk   1.1.1.1
external/mit/MesaLib/dist/src/glsl/Makefile.in  1.1.1.1
external/mit/MesaLib/dist/src/glsl/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/glsl/ast_array_index.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/builtin_types.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/builtin_variables.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/ir_equals.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/ir_uniform.h 1.1.1.1
external/mit/MesaLib/dist/src/glsl/link_atomics.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/link_interface_blocks.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/link_uniform_block_active_visitor.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/link_uniform_block_active_visitor.h 1.1.1.1
external/mit/MesaLib/dist/src/glsl/link_uniform_blocks.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/link_uniform_initializers.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/link_uniforms.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/link_varyings.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/lower_clip_distance.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/lower_discard_flow.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/lower_named_interface_blocks.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/lower_offset_array.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/lower_output_reads.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/lower_packed_varyings.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/lower_packing_builtins.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/lower_ubo_reference.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/lower_vector_insert.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/lower_vertex_id.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/opt_array_splitting.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/opt_cse.cpp  1.1.1.1
external/mit/MesaLib/dist/src/glsl/opt_dead_builtin_varyings.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/opt_flatten_nested_if_blocks.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/opt_rebalance_tree.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/opt_vectorize.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/standalone_scaffolding.h 1.1.1.1
external/mit/MesaLib/dist/src/glsl/test.cpp     1.1.1.1
external/mit/MesaLib/dist/src/glsl/test_optpass.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/test_optpass.h 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/lower_jumps/create_test_cases.py 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/builtin_variable_test.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/common.c 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/compare_ir 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/copy_constant_to_storage_tests.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/general_ir_test.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/invalidate_locations_test.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/optimization-test 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/sampler_types_test.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/set_uniform_initializer_tests.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/sexps.py 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/uniform_initializer_utils.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/uniform_initializer_utils.h 1.1.1.1
external/mit/MesaLib/dist/src/glsl/tests/varyings_test.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glx/clientattrib.c upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/tests/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/glx/tests/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/glx/tests/clientinfo_unittest.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glx/tests/create_context_unittest.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glx/tests/enum_sizes.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glx/tests/fake_glx_screen.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glx/tests/fake_glx_screen.h 1.1.1.1
external/mit/MesaLib/dist/src/glx/tests/indirect_api.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glx/tests/mock_xdisplay.h 1.1.1.1
external/mit/MesaLib/dist/src/glx/tests/query_renderer_implementation_unittest.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glx/tests/query_renderer_unittest.cpp 1.1.1.1
external/mit/MesaLib/dist/src/glx/XF86dri.c     1.4
external/mit/MesaLib/dist/src/glx/dri_common.c  upto 1.2
external/mit/MesaLib/dist/src/glx/compsize.c    upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/dri2.c        upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/dri2.h        upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/dri2_glx.c    upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/apple/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/glx/apple/apple_glapi.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/apple/apple_glx.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/apple/apple_glx.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/apple/apple_glx_context.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/apple/apple_glx_drawable.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/apple/apple_glx_surface.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/apple/apple_visual.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/apple/apple_xgl_api.h upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/apple/apple_xgl_api_read.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/apple/apple_xgl_api_stereo.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/apple/apple_xgl_api_viewport.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/apple/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/glx/apple/RELEASE_NOTES 1.1.1.1
external/mit/MesaLib/dist/src/glx/apple/TODO    1.1.1.1
external/mit/MesaLib/dist/src/glx/apple/apple_glx_log.c 1.1.1.1
external/mit/MesaLib/dist/src/glx/apple/apple_glx_log.h 1.1.1.1
external/mit/MesaLib/dist/src/glx/glx_error.h   1.1.1.1
external/mit/MesaLib/dist/src/glx/dri_common.h  upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/dri_glx.c     upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/drisw_glx.c   upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/indirect_transpose_matrix.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/glxconfig.c   upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/glx_pbuffer.c upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/glx_query.c   upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/glxclient.h   upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/glxcmds.c     upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/glxcurrent.c  upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/glxext.c      upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/glxextensions.c upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/glxextensions.h upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/query_renderer.c 1.1.1.1
external/mit/MesaLib/dist/src/glx/indirect_texture_compression.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/indirect_vertex_array.c upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/indirect_vertex_program.c upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/indirect_window_pos.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/xf86dristr.h  upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/render2.c     upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/renderpix.c   upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/single2.c     upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/singlepix.c   upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/vertarr.c     upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/xf86dri.h     upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/xfont.c       upto 1.1.1.3
external/mit/MesaLib/dist/src/glx/applegl_glx.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/indirect_glx.c upto 1.1.1.2
external/mit/MesaLib/dist/src/glx/Makefile.am   1.1.1.1
external/mit/MesaLib/dist/src/glx/Makefile.in   1.1.1.1
external/mit/MesaLib/dist/src/glx/SConscript    1.1.1.1
external/mit/MesaLib/dist/src/glx/clientinfo.c  1.1.1.1
external/mit/MesaLib/dist/src/glx/create_context.c 1.1.1.1
external/mit/MesaLib/dist/src/glx/dri2_priv.h   1.1.1.1
external/mit/MesaLib/dist/src/glx/dri2_query_renderer.c 1.1.1.1
external/mit/MesaLib/dist/src/glx/dri3_glx.c    1.1.1.1
external/mit/MesaLib/dist/src/glx/dri3_priv.h   1.1.1.1
external/mit/MesaLib/dist/src/glx/drisw_priv.h  1.1.1.1
external/mit/MesaLib/dist/src/glx/glx_error.c   1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/common/driverfuncs.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/common/meta_blit.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/common/driverfuncs.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/common/meta.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/common/meta.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/common/meta_copy_image.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/common/meta_generate_mipmap.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool/de.po upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool/es.po upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool/fr.po upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool/nl.po upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool/sv.po upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool/t_options.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool/ca.po 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/drirc 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/dri_test.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/dri_util.c upto 1.1.1.7
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/dri_util.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/megadriver_stub.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/utils.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/utils.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlconfig.c 1.6-1.7
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlconfig.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/xmlpool.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/common/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i830_context.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i830_context.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i830_reg.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i830_state.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i830_texblend.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i830_texstate.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i830_vtbl.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_context.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_context.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_blit.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_debug.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_debug_fp.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_fragprog.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_program.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_program.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_reg.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_state.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_texstate.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_tex_layout.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/i915_vtbl.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_render.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_syncobj.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_tris.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_tris.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_batchbuffer.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_blit.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_buffer_objects.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_buffers.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_clear.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_context.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_fbo.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_extensions.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_mipmap_tree.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_fbo.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_mipmap_tree.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_pixel.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_pixel_bitmap.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_regions.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_pixel_copy.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_pixel_draw.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_pixel_read.c 1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_screen.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_tex.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_state.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_tex.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_tex_copy.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_tex_layout.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_tex_image.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_tex_layout.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_tex_subimage.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_tex_validate.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_batchbuffer.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_buffer_objects.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_buffers.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_chipset.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_clear.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_context.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_extensions.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_pixel.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_reg.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_regions.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_screen.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i915/intel_tex_obj.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_clip_line.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_cc.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_clip.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_clip.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_clip_point.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_clip_state.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_clip_tri.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_clip_unfilled.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_clip_util.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_context.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_context.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_curbe.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_defines.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_disasm.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_draw.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_draw.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_draw_upload.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_eu.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_eu.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_misc_state.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_eu_emit.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_eu_util.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_gs.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_gs.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_gs_emit.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_gs_state.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_state_batch.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_program.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_queryobj.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_sf.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_sf.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_sf_emit.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_sf_state.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_state.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vs_surface_state.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_state_cache.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_state_dump.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_inst.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_state_upload.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_structs.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_tex.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_tex_layout.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_urb.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_util.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_util.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vs.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vs.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_wm_iz.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_blorp.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vs_state.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_blorp.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_queryobj.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_wm.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_wm.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_depth_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_multisample_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_cse.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_sol.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_blorp.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_surface_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_wm_surface_state.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_wm_state.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_clip_state.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_cc.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_sampler_state.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_depthstencil.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_gs_state.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_gs_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_scissor_state.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_sf_state.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_urb.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_viewport_state.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_vs_state.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen6_wm_state.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_syncobj.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_depth_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_fp.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_vector_splitting.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_program.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_shader.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_shader.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_sol_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_disable.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_misc_state.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_blend_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_sf_state.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_urb.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_viewport_state.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_vs_state.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_wm_state.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_batchbuffer.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_blit.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_buffer_objects.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_buffers.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_copy_image.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_fbo.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_image.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_extensions.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_mipmap_tree.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_fbo.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_mipmap_tree.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_pixel.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_pixel_bitmap.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_pixel_copy.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_pixel_draw.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_pixel_read.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_resolve_map.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_screen.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_tex.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_state.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_tex.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_tex_copy.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_tex_obj.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_tex_image.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_upload.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_tex_subimage.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_tex_validate.c 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_binding_tables.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_blorp.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_blorp.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_cfg.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_cfg.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_clear.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_dead_control_flow.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_device_info.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_device_info.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_eu_compact.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_generator.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_live_variables.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_peephole_predicated_break.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_gs_surface_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_interpolation_map.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_lower_texture_gradients.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_lower_unnormalized_offset.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_meta_updownsample.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_meta_util.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_meta_util.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_multisample_state.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_object_purgeable.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_performance_monitor.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_primitive_restart.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_reg.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_reset.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_sampler_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_surface_formats.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_cse.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_gs.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_gs.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_live_variables.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen7_blorp.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_disable.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_draw_upload.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_gs_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_misc_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_multisample_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_ps_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_sf_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_sol_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_surface_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_viewport_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_vs_state.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/gen8_wm_depth_stencil.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_asm_annotation.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_asm_annotation.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_batchbuffer.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_blit.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_buffer_objects.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_buffers.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_chipset.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_debug.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_debug.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_pixel.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_reg.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_resolve_map.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/intel_screen.h 1.1-1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/test_eu_compact.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/test_vec4_copy_propagation.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/test_vec4_register_coalesce.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_local.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c 1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_context.c 1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_context.h 1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_driver.c 1.5-1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_driver.h 1.5-1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_fbo.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_render_t.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_screen.c 1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_screen.h 1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_span.c 1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_state.c 1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_surface.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_surface.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_texture.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_texture.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_util.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv04_context.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv04_context.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv04_render.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv04_state_fb.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv04_state_frag.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv04_state_raster.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv04_state_tex.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv04_surface.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv10_context.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv10_render.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv10_state_fb.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv10_state_frag.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv10_state_raster.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv10_state_tex.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv20_context.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv20_render.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv20_state_fb.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv20_state_frag.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv20_state_raster.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv20_state_tex.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_array.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_array.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nouveau_scratch.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/nv_object.xml.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/nouveau/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_cmdbuf.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_blit.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_blit.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_fragshader.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_context.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_context.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_maos_arrays.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_ioctl.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_ioctl.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_maos.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_state_init.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_sanity.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_state.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_state.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_swtcl.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_swtcl.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_tcl.c 1.8
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_tcl.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_tex.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_tex.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_texstate.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/r200_vertprog.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/r200/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/server/radeon_reg.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_blit.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_blit.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_fog.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_fog.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_maos_arrays.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_chipset.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_cmdbuf.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_common.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_common.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_common_context.c upto 1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_common_context.h upto 1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_context.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_context.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_debug.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_dma.c upto 1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_dma.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_fbo.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_ioctl.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_ioctl.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_maos.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c 1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_maos_vbtmp.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_maos_verts.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_queryobj.c 1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_queryobj.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_sanity.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_screen.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_screen.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_span.c 1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_span.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_state.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_state.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_state_init.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_swtcl.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_swtcl.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_tcl.c 1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_tcl.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_tex.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_tex.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_tex_copy.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_texstate.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_texture.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_texture.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_pixel_read.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_tile.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/radeon_tile.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/radeon/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/swrast/swrast_priv.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/dri/swrast/swrast.c upto 1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/swrast/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/swrast/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/swrast/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/dri.pc.in upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/dri/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/dri/gen-symbol-redefs.py 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/osmesa/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/osmesa/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/osmesa/osmesa.pc.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/osmesa/osmesa.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/osmesa/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/windows/gdi/mesa.def upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/windows/gdi/wgl.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/windows/gdi/wmesa.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/windows/gdi/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/x11/fakeglx.c upto 1.1.1.7
external/mit/MesaLib/dist/src/mesa/drivers/x11/glxapi.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/x11/glxapi.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/x11/glxheader.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/x11/xfonts.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/x11/xfonts.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_api.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_buffer.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_dd.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_line.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_tri.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/drivers/x11/xmesa.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/drivers/x11/xmesaP.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/drivers/x11/xmesa_x.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/drivers/x11/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/x11/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/x11/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/haiku/swrast/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/haiku/swrast/SoftwareRast.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/haiku/swrast/SoftwareRast.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/drivers/haiku/swrast/SoftwareRast.rdef 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/api_arrayelt.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/accum.c 1.5-1.6
external/mit/MesaLib/dist/src/mesa/main/accum.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/condrender.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/api_arrayelt.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/compute.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/api_exec.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/api_loopback.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/api_loopback.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/blit.c  1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/blit.h  1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/api_validate.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/api_validate.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/arrayobj.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/arrayobj.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/attrib.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/attrib.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/bitset.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/blend.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/blend.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/bufferobj.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/bufferobj.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/buffers.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/buffers.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/clear.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/clear.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/clip.c  upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/clip.h  upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/colormac.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/colortab.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/colortab.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/compiler.h 1.3-1.4
external/mit/MesaLib/dist/src/mesa/main/texcompress_fxt1.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/condrender.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/config.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/context.c 1.3-1.4
external/mit/MesaLib/dist/src/mesa/main/context.h upto 1.1.1.7
external/mit/MesaLib/dist/src/mesa/main/convolve.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/convolve.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/cpuinfo.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/cpuinfo.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/dd.h    upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/debug.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/debug.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/depth.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/depth.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/tests/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/tests/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/tests/dispatch_sanity.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/tests/enum_strings.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/tests/program_state_string.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/tests/stubs.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/errors.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/errors.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/dlist.c upto 1.3
external/mit/MesaLib/dist/src/mesa/main/dlist.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/format_utils.c 1.1-1.2
external/mit/MesaLib/dist/src/mesa/main/dlopen.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/drawpix.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/drawpix.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/enable.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/enable.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/format_utils.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/enums.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/eval.c  upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/eval.h  upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/execmem.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/extensions.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/extensions.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/fbobject.c upto 1.1.1.7
external/mit/MesaLib/dist/src/mesa/main/fbobject.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/feedback.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/feedback.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/ffvertex_prog.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/ffvertex_prog.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/fog.c   upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/fog.h   upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/formats.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/formats.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/framebuffer.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/framebuffer.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/get.c   upto 1.1.1.7
external/mit/MesaLib/dist/src/mesa/main/get.h   upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/getstring.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/glheader.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/hash.c  upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/hash.h  upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/hint.c  upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/hint.h  upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/histogram.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/histogram.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/image.c upto 1.1.1.7
external/mit/MesaLib/dist/src/mesa/main/image.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/imports.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/imports.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/light.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/light.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/lines.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/lines.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/macros.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/matrix.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/matrix.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/pack_tmp.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/mipmap.c 1.3
external/mit/MesaLib/dist/src/mesa/main/mipmap.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/mm.c    upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/mtypes.h upto 1.1.1.7
external/mit/MesaLib/dist/src/mesa/main/multisample.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/multisample.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/pixel.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/pixel.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/pixelstore.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/pixelstore.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/points.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/points.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/polygon.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/polygon.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/queryobj.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/queryobj.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/rastpos.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/rastpos.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/format_info.py 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/samplerobj.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/readpix.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/readpix.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/remap.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/remap.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/set.c   1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/renderbuffer.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/renderbuffer.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/scissor.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/scissor.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/texcompress_rgtc.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/shared.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/shared.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/simple_list.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/state.c upto 1.1.1.7
external/mit/MesaLib/dist/src/mesa/main/state.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/stencil.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/stencil.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/syncobj.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/syncobj.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/texcompress.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/texcompress.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/drawtex.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/core.h  upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/texcompress_fxt1.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/texcompress_s3tc.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/texcompress_s3tc.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/texenv.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/texenv.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/texstorage.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/texenvprogram.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/texstorage.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/textureview.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/vdpau.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/texformat.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/texformat.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/texgen.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/texgen.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/texgetimage.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/texgetimage.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/teximage.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/teximage.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/texobj.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/texobj.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/texparam.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/texparam.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/texturebarrier.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/texstate.c 1.7
external/mit/MesaLib/dist/src/mesa/main/texstate.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/texstore.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/texstore.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/varray.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/main/varray.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/main/version.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/version.h upto 1.1.1.7
external/mit/MesaLib/dist/src/mesa/main/viewport.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/viewport.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/main/vtxfmt.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/vtxfmt.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/main/compute.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/copyimage.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/copyimage.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/es1_conversion.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/es1_conversion.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/format_pack.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/set.h   1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/arbprogram.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/arbprogram.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/atifragshader.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/atifragshader.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/samplerobj.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/drawtex.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/format_pack.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/ff_fragment_shader.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/objectlabel.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/vdpau.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/pack.c  upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/pack.h  upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/pbo.c   upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/pbo.h   upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/pixeltransfer.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/pixeltransfer.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/querymatrix.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/shaderapi.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/shaderapi.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/shaderobj.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/shaderobj.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/texcompress_rgtc.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/texcompress_rgtc_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/transformfeedback.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/transformfeedback.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/uniforms.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/uniforms.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/main/format_parser.py 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/format_unpack.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/format_unpack.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/formatquery.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/formatquery.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/formats.csv 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/genmipmap.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/genmipmap.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/get_hash_generator.py 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/get_hash_params.py 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/glformats.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/glformats.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/objectlabel.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/performance_monitor.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/performance_monitor.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/pipelineobj.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/pipelineobj.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/querymatrix.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/shader_query.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/shaderimage.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/shaderimage.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/streaming-load-memcpy.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/streaming-load-memcpy.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/texcompress_bptc.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/texcompress_bptc.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/texcompress_cpal.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/texcompress_cpal.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/texcompress_etc.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/texcompress_etc.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/texcompress_etc_tmp.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/textureview.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/main/uniform_query.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/math/m_clip_tmp.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/math/m_xform_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/math/m_copy_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/math/m_debug.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/math/m_debug_clip.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/math/m_debug_norm.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/math/m_debug_util.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/math/m_debug_xform.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/math/m_dotprod_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/math/m_eval.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/math/m_eval.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/math/m_matrix.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/math/m_matrix.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/math/m_norm_tmp.h 1.3-1.4
external/mit/MesaLib/dist/src/mesa/math/m_trans_tmp.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/math/m_translate.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/math/m_translate.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/math/m_vector.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/math/m_vector.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/math/m_xform.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/math/m_xform.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/sparc/sparc.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/sparc/sparc.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/sparc/sparc_clip.S 1.1.1.1
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_blend.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_constbuf.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_clip.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_framebuffer.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_constbuf.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_depth.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_bufferobjects.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_pixeltransfer.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_rasterizer.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_sampler.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_scissor.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_shader.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_shader.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_stipple.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_texture.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_viewport.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cache.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_msaa.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_bitmap.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_bitmap.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_blit.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_blit.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_msaa.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_bufferobjects.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_clear.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_clear.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_condrender.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_drawpixels.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_drawpixels.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_fbo.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_fbo.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_feedback.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_debug.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_feedback.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_flush.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_flush.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_program.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_program.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_queryobj.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_queryobj.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_rasterpos.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_rasterpos.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_readpixels.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_readpixels.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_strings.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_strings.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_texture.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_texture.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_context.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_debug.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_draw.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_draw.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_draw_feedback.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_extensions.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_extensions.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_format.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_format.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_gen_mipmap.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_gen_mipmap.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_manager.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_mesa_to_tgsi.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_mesa_to_tgsi.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_program.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_program.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_vdpau.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/state_tracker/st_texture.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_texture.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_msaa.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_drawtex.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_drawtex.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_eglimage.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_syncobj.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_eglimage.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_texturebarrier.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_viewport.c 1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_viewport.h 1.4
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_xformfb.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_cb_xformfb.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_manager.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/state_tracker/st_atom_array.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/state_tracker/st_glsl_to_tgsi.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/state_tracker/st_vdpau.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/swrast/s_aalinetemp.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_aaline.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_aaline.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/s_atifragshader.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_aatriangle.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_aatriangle.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/s_aatritemp.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_chan.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/swrast/s_texture.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/swrast/s_alpha.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_alpha.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/NOTES 1.1.1.1
external/mit/MesaLib/dist/src/mesa/swrast/s_atifragshader.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/swrast/s_bitmap.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_blend.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_blend.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/s_blit.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_clear.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/s_context.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_context.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_copypix.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_depth.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_depth.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_drawpix.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_feedback.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_feedback.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/s_fog.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_fog.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_fragprog.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_fragprog.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/swrast/s_lines.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_lines.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/s_linetemp.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_logic.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_logic.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_masking.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_masking.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_points.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_points.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/s_span.c 1.3
external/mit/MesaLib/dist/src/mesa/swrast/s_span.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_texfetch.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/swrast/s_stencil.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_stencil.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/s_texcombine.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_texcombine.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/s_texfilter.c upto 1.1.1.7
external/mit/MesaLib/dist/src/mesa/swrast/s_texfilter.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/s_triangle.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_triangle.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast/s_tritemp.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_zoom.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/s_zoom.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast/swrast.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast/s_texrender.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/swrast/s_renderbuffer.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/swrast/s_renderbuffer.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/swrast/s_texfetch.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/swrast/s_texfetch_tmp.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/swrast_setup/ss_context.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/swrast_setup/ss_context.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast_setup/ss_triangle.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast_setup/ss_triangle.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast_setup/ss_tritmp.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/swrast_setup/ss_vb.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/swrast_setup/swrast_setup.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/swrast_setup/NOTES 1.1.1.1
external/mit/MesaLib/dist/src/mesa/tnl/t_pipeline.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl/t_context.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl/t_context.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl/t_draw.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_rendertmp.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/tnl/t_pipeline.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/tnl/t_rasterpos.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_cliptmp.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_fog.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_light.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_lighttmp.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_normals.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_points.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_program.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_render.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/tnl/t_vertex_generic.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_texgen.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_texmat.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl/t_vb_vertex.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl/t_vertex.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl/t_vertex.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/tnl/NOTES    1.1.1.1
external/mit/MesaLib/dist/src/mesa/tnl/t_vertex_sse.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl/t_vp_build.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl/t_vp_build.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl/tnl.h    upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl_dd/t_dd_dmatmp.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/tnl_dd/t_dd_dmatmp2.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/tnl_dd/t_dd_tritmp.h upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl_dd/t_dd_unfilled.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/tnl_dd/t_dd_vb.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/tnl_dd/t_dd_vertex.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/vbo/vbo_attrib.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/vbo/vbo.h    upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/vbo/vbo_noop.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/vbo/vbo_attrib_tmp.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/vbo/vbo_context.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/vbo/vbo_context.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/vbo/vbo_exec.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/vbo/vbo_exec.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/vbo/vbo_exec_api.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/vbo/vbo_exec_array.c upto 1.1.1.7
external/mit/MesaLib/dist/src/mesa/vbo/vbo_exec_draw.c 1.7
external/mit/MesaLib/dist/src/mesa/vbo/vbo_exec_eval.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/vbo/vbo_rebase.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/vbo/vbo_save.c upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/vbo/vbo_save.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/vbo/vbo_save_api.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/vbo/vbo_save_draw.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/vbo/vbo_save_loopback.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/vbo/vbo_split.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/vbo/vbo_split.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/vbo/vbo_split_copy.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/vbo/vbo_split_inplace.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/vbo/vbo_noop.h 1.1.1.1
external/mit/MesaLib/dist/src/mesa/vbo/vbo_primitive_restart.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/x86-64/calling_convention.txt 1.1.1.1
external/mit/MesaLib/dist/src/mesa/x86-64/x86-64.c upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/x86-64/x86-64.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86-64/xform4.S upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/x86/3dnow_normal.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/3dnow.c  upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/x86/3dnow.h  upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/x86/common_x86_asm.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/3dnow_xform1.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/3dnow_xform2.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/3dnow_xform3.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/3dnow_xform4.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/assyntax.h upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/x86/clip_args.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/common_x86.c upto 1.2
external/mit/MesaLib/dist/src/mesa/x86/common_x86_features.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/common_x86_asm.h upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/x86/read_rgba_span_x86.S upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/x86/gen_matypes.c upto 1.1.1.6
external/mit/MesaLib/dist/src/mesa/x86/mmx.h    upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/norm_args.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/sse_normal.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/sse.c    upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/x86/sse.h    upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/x86/sse_xform1.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/sse_xform2.S upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/x86/sse_xform3.S upto 1.1.1.4
external/mit/MesaLib/dist/src/mesa/x86/sse_xform4.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/x86_cliptest.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/x86_xform.c upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/x86_xform.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/x86/x86_xform2.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/x86_xform3.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/x86_xform4.S upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/x86/xform_args.h upto 1.1.1.3
external/mit/MesaLib/dist/src/mesa/Makefile.am  1.1.1.1
external/mit/MesaLib/dist/src/mesa/program/arbprogparse.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/arbprogparse.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_hash_table.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/program/hash_table.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/ir_to_mesa.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/ir_to_mesa.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_opt_constant_fold.c 1.1.1.1
external/mit/MesaLib/dist/src/mesa/program/string_to_uint_map.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mesa/program/prog_cache.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_cache.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_execute.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_execute.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_instruction.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_instruction.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/program.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_noise.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_noise.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_optimize.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_optimize.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_parameter.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_parameter.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_parameter_layout.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_print.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_print.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_statevars.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/prog_statevars.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/program.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/program_lexer.l upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/program_parse.y upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/sampler.cpp upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/program_parse_extra.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/program_parser.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/programopt.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/programopt.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/register_allocate.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/register_allocate.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/sampler.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/symbol_table.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/symbol_table.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/program/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/mesa/gl.pc.in     upto 1.1.1.5
external/mit/MesaLib/dist/src/mesa/Android.gen.mk 1.1.1.1
external/mit/MesaLib/dist/src/mesa/Android.libmesa_dricore.mk 1.1.1.1
external/mit/MesaLib/dist/src/mesa/SConscript   upto 1.1.1.2
external/mit/MesaLib/dist/src/mesa/Android.mk   1.1.1.1
external/mit/MesaLib/dist/src/mesa/Android.libmesa_glsl_utils.mk 1.1.1.1
external/mit/MesaLib/dist/src/mesa/Android.libmesa_st_mesa.mk 1.1.1.1
external/mit/MesaLib/dist/src/mesa/Android.mesa_gen_matypes.mk 1.1.1.1
external/mit/MesaLib/dist/src/mesa/Makefile.in  1.1.1.1
external/mit/MesaLib/dist/src/mesa/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/gbm/backends/dri/gbm_dri.c upto 1.1.1.2
external/mit/MesaLib/dist/src/gbm/backends/dri/gbm_driint.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gbm/main/gbm.c    upto 1.1.1.2
external/mit/MesaLib/dist/src/gbm/main/gbm.h    upto 1.1.1.2
external/mit/MesaLib/dist/src/gbm/main/gbm.pc.in upto 1.1.1.2
external/mit/MesaLib/dist/src/gbm/main/gbmint.h upto 1.1.1.2
external/mit/MesaLib/dist/src/gbm/Makefile.am   1.1.1.1
external/mit/MesaLib/dist/src/gbm/Makefile.in   1.1.1.1
external/mit/MesaLib/dist/src/gbm/gbm-symbols-check 1.1.1.1
external/mit/MesaLib/dist/src/Makefile.am       1.1.1.1
external/mit/MesaLib/dist/src/SConscript        upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/es1api/glesv1_cm.pc.in upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/es1api/ABI-check 1.1.1.1
external/mit/MesaLib/dist/src/mapi/es2api/glesv2.pc.in upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/es2api/ABI-check 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/APPLE_vertex_array_object.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_ES2_compatibility.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_color_buffer_float.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_copy_buffer.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_draw_instanced.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_framebuffer_object.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_geometry_shader4.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_robustness.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_get_program_binary.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_instanced_arrays.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_map_buffer_range.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_sampler_objects.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_seamless_cube_map.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_sync.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_buffer_object.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_vertex_array_object.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/EXT_draw_buffers2.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/EXT_framebuffer_object.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/EXT_gpu_shader4.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/EXT_provoking_vertex.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/EXT_separate_shader_objects.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/GL3x.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/EXT_texture_array.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/EXT_texture_integer.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/EXT_transform_feedback.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/NV_conditional_render.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/NV_primitive_restart.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/OES_EGL_image.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/OES_fixed_point.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/OES_single_precision.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/es_EXT.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/extension_helper.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/glX_API.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/glX_XML.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/glX_proto_common.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/glX_proto_recv.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/glX_proto_send.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/glX_proto_size.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/glX_server_table.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_API.dtd upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_API.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_SPARC_asm.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_XML.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_and_es_API.xml upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_apitemp.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_enums.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_gentable.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_offsets.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_procs.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_table.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_x86-64_asm.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_x86_asm.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/mesadef.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/remap_helper.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/typeexpr.py upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/gen/AMD_performance_monitor.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_ES3_compatibility.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_base_instance.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_blend_func_extended.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_clear_buffer_object.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_clear_texture.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_compressed_texture_pixel_storage.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_compute_shader.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_copy_image.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_debug_output.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_depth_buffer_float.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_draw_buffers.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_draw_indirect.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_gpu_shader5.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_internalformat_query.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_multi_bind.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_invalidate_subdata.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_sample_shading.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_separate_shader_objects.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_shader_atomic_counters.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_shader_image_load_store.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_barrier.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_buffer_range.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_compression_rgtc.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_cube_map_array.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_float.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_gather.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_multisample.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_rg.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_rgb10_a2ui.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_storage.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_storage_multisample.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_texture_view.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_uniform_buffer_object.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_vertex_type_2_10_10_10_rev.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/ARB_viewport_array.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/GL4x.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/INTEL_performance_query.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/KHR_debug.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/NV_vdpau_interop.xml 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/gl_genexec.py 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/glapi_gen.mk 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/gen/next_available_offset.sh 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/glapi.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/glapi.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/glapi_dispatch.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/glapi_entrypoint.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/tests/check_table.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mapi/glapi/glapi_getproc.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/glapi_nop.c upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/glapi_priv.h upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/glapi/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/mapi/shared-glapi/tests/check_table.cpp 1.1.1.1
external/mit/MesaLib/dist/src/mapi/shared-glapi/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/vgapi/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/mapi/vgapi/SConscript upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/vgapi/vg.pc.in upto 1.1.1.2
external/mit/MesaLib/dist/src/mapi/vgapi/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/mapi/Android.mk   1.1.1.1
external/mit/MesaLib/dist/src/mapi/Makefile.am  1.1.1.1
external/mit/MesaLib/dist/src/mapi/Makefile.in  1.1.1.1
external/mit/MesaLib/dist/src/mapi/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/mapi/entry.c      1.1.1.1
external/mit/MesaLib/dist/src/mapi/entry.h      1.1.1.1
external/mit/MesaLib/dist/src/mapi/entry_x86-64_tls.h 1.1.1.1
external/mit/MesaLib/dist/src/mapi/entry_x86_tls.h 1.1-1.2
external/mit/MesaLib/dist/src/mapi/entry_x86_tsd.h 1.1-1.2
external/mit/MesaLib/dist/src/mapi/mapi.c       1.1.1.1
external/mit/MesaLib/dist/src/mapi/mapi.h       1.1.1.1
external/mit/MesaLib/dist/src/mapi/mapi_abi.py  1.1.1.1
external/mit/MesaLib/dist/src/mapi/mapi_glapi.c 1.1.1.1
external/mit/MesaLib/dist/src/mapi/mapi_tmp.h   1.1.1.1
external/mit/MesaLib/dist/src/mapi/stub.c       1.1.1.1
external/mit/MesaLib/dist/src/mapi/stub.h       1.1.1.1
external/mit/MesaLib/dist/src/mapi/table.c      1.1.1.1
external/mit/MesaLib/dist/src/mapi/table.h      1.1.1.1
external/mit/MesaLib/dist/src/mapi/u_compiler.h 1.1.1.1
external/mit/MesaLib/dist/src/mapi/u_current.c  1.1.1.1
external/mit/MesaLib/dist/src/mapi/u_current.h  1.1.1.1
external/mit/MesaLib/dist/src/mapi/u_execmem.c  1.1.1.1
external/mit/MesaLib/dist/src/mapi/u_execmem.h  1.1.1.1
external/mit/MesaLib/dist/src/mapi/u_macros.h   1.1.1.1
external/mit/MesaLib/dist/src/mapi/u_thread.h   1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-death-test-internal.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-filepath.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-internal.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-linked_ptr.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-param-util-generated.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-param-util-generated.h.pump 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-param-util.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-port.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-string.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-tuple.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-tuple.h.pump 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-type-util.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/internal/gtest-type-util.h.pump 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/gtest-death-test.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/gtest-message.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/gtest-param-test.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/gtest-param-test.h.pump 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/gtest-printers.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/gtest-spi.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/gtest-test-part.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/gtest-typed-test.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/gtest.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/gtest_pred_impl.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/include/gtest/gtest_prod.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/gtest/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/gtest/src/gtest-all.cc 1.1.1.1
external/mit/MesaLib/dist/src/gtest/src/gtest-death-test.cc 1.1.1.1
external/mit/MesaLib/dist/src/gtest/src/gtest-filepath.cc 1.1.1.1
external/mit/MesaLib/dist/src/gtest/src/gtest-internal-inl.h 1.1.1.1
external/mit/MesaLib/dist/src/gtest/src/gtest-port.cc 1.1.1.1
external/mit/MesaLib/dist/src/gtest/src/gtest-printers.cc 1.1.1.1
external/mit/MesaLib/dist/src/gtest/src/gtest-test-part.cc 1.1.1.1
external/mit/MesaLib/dist/src/gtest/src/gtest-typed-test.cc 1.1.1.1
external/mit/MesaLib/dist/src/gtest/src/gtest.cc 1.1.1.1
external/mit/MesaLib/dist/src/gtest/src/gtest_main.cc 1.1.1.1
external/mit/MesaLib/dist/src/Makefile.in       1.1.1.1
external/mit/MesaLib/dist/src/hgl/GLDispatcher.cpp 1.1.1.1
external/mit/MesaLib/dist/src/hgl/GLDispatcher.h 1.1.1.1
external/mit/MesaLib/dist/src/hgl/GLRenderer.cpp 1.1.1.1
external/mit/MesaLib/dist/src/hgl/GLRendererRoster.cpp 1.1.1.1
external/mit/MesaLib/dist/src/hgl/GLRendererRoster.h 1.1.1.1
external/mit/MesaLib/dist/src/hgl/GLView.cpp    1.1.1.1
external/mit/MesaLib/dist/src/hgl/SConscript    1.1.1.1
external/mit/MesaLib/dist/src/loader/Android.mk 1.1.1.1
external/mit/MesaLib/dist/src/loader/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/loader/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/loader/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/loader/SConscript 1.1.1.1
external/mit/MesaLib/dist/src/loader/loader.c   1.1.1.1
external/mit/MesaLib/dist/src/loader/loader.h   1.1.1.1
external/mit/MesaLib/dist/src/loader/pci_id_driver_map.c 1.1.1.1
external/mit/MesaLib/dist/src/loader/pci_id_driver_map.h 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/Makefile.am 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/Makefile.in 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/collision.c 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/delete_and_lookup.c 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/delete_management.c 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/destroy_callback.c 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/insert_and_lookup.c 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/insert_many.c 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/null_destroy.c 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/random_entry.c 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/remove_null.c 1.1.1.1
external/mit/MesaLib/dist/src/util/tests/hash_table/replacement.c 1.1.1.1
external/mit/MesaLib/dist/src/util/Android.mk   1.1.1.1
external/mit/MesaLib/dist/src/util/Makefile.am  1.1.1.1
external/mit/MesaLib/dist/src/util/Makefile.in  1.1.1.1
external/mit/MesaLib/dist/src/util/Makefile.sources 1.1.1.1
external/mit/MesaLib/dist/src/util/SConscript   1.1.1.1
external/mit/MesaLib/dist/src/util/format_srgb.h 1.1.1.1
external/mit/MesaLib/dist/src/util/format_srgb.py 1.1.1.1
external/mit/MesaLib/dist/src/util/hash_table.c 1.1.1.1
external/mit/MesaLib/dist/src/util/hash_table.h 1.1.1.1
external/mit/MesaLib/dist/src/util/macros.h     1.1.1.1
external/mit/MesaLib/dist/src/util/ralloc.c     1.1.1.1
external/mit/MesaLib/dist/src/util/ralloc.h     1.1.1.1
external/mit/MesaLib/dist/doxygen/Makefile      1.1.1.1
external/mit/MesaLib/dist/doxygen/README        1.1.1.1
external/mit/MesaLib/dist/doxygen/common.doxy   1.1.1.1
external/mit/MesaLib/dist/doxygen/core_subset.doxy 1.1.1.1
external/mit/MesaLib/dist/doxygen/doxy.bat      1.1.1.1
external/mit/MesaLib/dist/doxygen/gallium.doc   1.1.1.1
external/mit/MesaLib/dist/doxygen/gallium.doxy  1.1.1.1
external/mit/MesaLib/dist/doxygen/gbm.doxy      1.1.1.1
external/mit/MesaLib/dist/doxygen/glapi.doxy    1.1.1.1
external/mit/MesaLib/dist/doxygen/glsl.doxy     1.1.1.1
external/mit/MesaLib/dist/doxygen/header.html   1.1.1.1
external/mit/MesaLib/dist/doxygen/header_subset.html 1.1.1.1
external/mit/MesaLib/dist/doxygen/i965.doxy     1.1.1.1
external/mit/MesaLib/dist/doxygen/main.doxy     1.1.1.1
external/mit/MesaLib/dist/doxygen/math.doxy     1.1.1.1
external/mit/MesaLib/dist/doxygen/math_subset.doxy 1.1.1.1
external/mit/MesaLib/dist/doxygen/radeon_subset.doxy 1.1.1.1
external/mit/MesaLib/dist/doxygen/shader.doxy   1.1.1.1
external/mit/MesaLib/dist/doxygen/swrast.doxy   1.1.1.1
external/mit/MesaLib/dist/doxygen/swrast_setup.doxy 1.1.1.1
external/mit/MesaLib/dist/doxygen/tnl.doxy      1.1.1.1
external/mit/MesaLib/dist/doxygen/tnl_dd.doxy   1.1.1.1
external/mit/MesaLib/dist/doxygen/vbo.doxy      1.1.1.1
external/mit/MesaLib/dist/autogen.sh            1.1.1.1
external/mit/MesaLib/dist/m4/ax_check_compile_flag.m4 1.1.1.1
external/mit/MesaLib/dist/m4/ax_gcc_builtin.m4  1.1.1.1
external/mit/MesaLib/dist/m4/ax_prog_bison.m4   1.1.1.1
external/mit/MesaLib/dist/m4/ax_prog_flex.m4    1.1.1.1
external/mit/MesaLib/dist/m4/ax_pthread.m4      1.1.1.1
external/mit/MesaLib/dist/configure.ac          upto 1.1.1.6
external/mit/MesaLib/dist/aclocal.m4            upto 1.1.1.6
external/mit/MesaLib/dist/configure             upto 1.1.1.6
external/mit/MesaLib/dist/scons/crossmingw.py   upto 1.1.1.2
external/mit/MesaLib/dist/scons/custom.py       upto 1.1.1.2
external/mit/MesaLib/dist/scons/gallium.py      upto 1.1.1.2
external/mit/MesaLib/dist/scons/llvm.py         upto 1.1.1.2
external/mit/MesaLib/dist/scons/source_list.py  1.1.1.1
external/mit/MesaLib/dist/SConstruct            upto 1.1.1.2
external/mit/MesaLib/dist/common.py             upto 1.1.1.2
external/mit/MesaLib/dist/Makefile.am           1.1.1.1
external/mit/MesaLib/dist/Android.common.mk     1.1.1.1
external/mit/MesaLib/dist/Android.mk            1.1.1.1
external/mit/MesaLib/dist/CleanSpec.mk          1.1.1.1
external/mit/MesaLib/dist/Makefile.in           1.1.1.1
external/mit/MesaLib/dist/install-gallium-links.mk 1.1.1.1
external/mit/MesaLib/dist/install-lib-links.mk  1.1.1.1
external/mit/MesaLib/src/arch/i386/matypes.h    1.1
external/mit/MesaLib/src/arch/x86_64/matypes.h  1.1
external/mit/MesaLib/src/Makefile.inc           1.1
external/mit/MesaLib/src/gallium/auxiliary/Makefile 1.1
external/mit/MesaLib/src/gallium/auxiliary/Makefile.inc 1.1
external/mit/MesaLib/src/gallium/auxiliary/u_format_table.c 1.1
external/mit/MesaLib/src/gallium/auxiliary/u_indices_gen.c 1.1
external/mit/MesaLib/src/gallium/auxiliary/u_unfilled_gen.c 1.1
external/mit/MesaLib/src/mapi/glapi/Makefile    1.1
external/mit/MesaLib/src/mapi/glapi/glapi_gentable.c 1.1
external/mit/MesaLib/src/mapi/glapi/glapi_glapi_mapi_tmp.h 1.1
external/mit/MesaLib/src/mapi/glapi/glapi_x86-64.S 1.1
external/mit/MesaLib/src/mapi/glapi/glapitable.h 1.1
external/mit/MesaLib/src/mapi/glapi/glapitemp.h 1.1
external/mit/MesaLib/src/mapi/glapi/glprocs.h   1.1
external/mit/MesaLib/src/mapi/glapi/indirect.c  1.1
external/mit/MesaLib/src/mapi/glapi/indirect.h  1.1
external/mit/MesaLib/src/mapi/glapi/indirect_init.c 1.1
external/mit/MesaLib/src/mapi/glapi/indirect_size.c 1.1
external/mit/MesaLib/src/mapi/glapi/indirect_size.h 1.1
external/mit/MesaLib/src/mapi/glapi/shared-glapi_glapi_mapi_tmp.h 1.1
external/mit/MesaLib/src/mapi/Makefile          1.1
external/mit/MesaLib/src/mapi/shared-glapi_glapi_mapi_tmp.h 1.1
external/mit/MesaLib/src/mesa/drivers/dri/common/xmlpool/Makefile 1.1
external/mit/MesaLib/src/mesa/drivers/dri/common/xmlpool/options.h 1.1
external/mit/MesaLib/src/mesa/format_info.c     1.1
external/mit/MesaLib/src/mesa/get_hash.h        1.1
external/mit/MesaLib/src/mesa/main/Makefile     1.1
external/mit/MesaLib/src/mesa/main/api_exec.c   1.1
external/mit/MesaLib/src/mesa/main/dispatch.h   1.1
external/mit/MesaLib/src/mesa/main/enums.c      1.1
external/mit/MesaLib/src/mesa/main/git_sha1.h   1.1
external/mit/MesaLib/src/mesa/main/remap_helper.h 1.1
external/mit/MesaLib/src/mesa/program/Makefile  1.1
external/mit/MesaLib/src/mesa/program/program_parse.tab.c 1.1
external/mit/MesaLib/src/mesa/program/program_parse.tab.h 1.1
external/mit/MesaLib/src/util/Makefile          1.1
external/mit/MesaLib/src/util/format_srgb.c     1.1

"Make xsrc/external/mit/MesaLib/ match -current" - i.e. import mesa 10.3.5
@
text
@a0 4580
/*
 * Copyright © 2013 Intel Corporation
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice (including the next
 * paragraph) shall be included in all copies or substantial portions of the
 * Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 */

/**
 * \file builtin_functions.cpp
 *
 * Support for GLSL built-in functions.
 *
 * This file is split into several main components:
 *
 * 1. Availability predicates
 *
 *    A series of small functions that check whether the current shader
 *    supports the version/extensions required to expose a built-in.
 *
 * 2. Core builtin_builder class functionality
 *
 * 3. Lists of built-in functions
 *
 *    The builtin_builder::create_builtins() function contains lists of all
 *    built-in function signatures, where they're available, what types they
 *    take, and so on.
 *
 * 4. Implementations of built-in function signatures
 *
 *    A series of functions which create ir_function_signatures and emit IR
 *    via ir_builder to implement them.
 *
 * 5. External API
 *
 *    A few functions the rest of the compiler can use to interact with the
 *    built-in function module.  For example, searching for a built-in by
 *    name and parameters.
 */

#include <stdarg.h>
#include <stdio.h>
#include "main/core.h" /* for struct gl_shader */
#include "main/shaderobj.h"
#include "ir_builder.h"
#include "glsl_parser_extras.h"
#include "program/prog_instruction.h"
#include <limits>

#define M_PIf   ((float) M_PI)
#define M_PI_2f ((float) M_PI_2)
#define M_PI_4f ((float) M_PI_4)

using namespace ir_builder;

/**
 * Availability predicates:
 *  @@{
 */
static bool
always_available(const _mesa_glsl_parse_state *)
{
   return true;
}

static bool
compatibility_vs_only(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_VERTEX &&
          state->language_version <= 130 &&
          !state->es_shader;
}

static bool
fs_only(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT;
}

static bool
gs_only(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_GEOMETRY;
}

static bool
v110(const _mesa_glsl_parse_state *state)
{
   return !state->es_shader;
}

static bool
v110_fs_only(const _mesa_glsl_parse_state *state)
{
   return !state->es_shader && state->stage == MESA_SHADER_FRAGMENT;
}

static bool
v120(const _mesa_glsl_parse_state *state)
{
   return state->is_version(120, 300);
}

static bool
v130(const _mesa_glsl_parse_state *state)
{
   return state->is_version(130, 300);
}

static bool
v130_fs_only(const _mesa_glsl_parse_state *state)
{
   return state->is_version(130, 300) &&
          state->stage == MESA_SHADER_FRAGMENT;
}

static bool
v140(const _mesa_glsl_parse_state *state)
{
   return state->is_version(140, 0);
}

static bool
texture_rectangle(const _mesa_glsl_parse_state *state)
{
   return state->ARB_texture_rectangle_enable;
}

static bool
texture_external(const _mesa_glsl_parse_state *state)
{
   return state->OES_EGL_image_external_enable;
}

/** True if texturing functions with explicit LOD are allowed. */
static bool
lod_exists_in_stage(const _mesa_glsl_parse_state *state)
{
   /* Texturing functions with "Lod" in their name exist:
    * - In the vertex shader stage (for all languages)
    * - In any stage for GLSL 1.30+ or GLSL ES 3.00
    * - In any stage for desktop GLSL with ARB_shader_texture_lod enabled.
    *
    * Since ARB_shader_texture_lod can only be enabled on desktop GLSL, we
    * don't need to explicitly check state->es_shader.
    */
   return state->stage == MESA_SHADER_VERTEX ||
          state->is_version(130, 300) ||
          state->ARB_shader_texture_lod_enable;
}

static bool
v110_lod(const _mesa_glsl_parse_state *state)
{
   return !state->es_shader && lod_exists_in_stage(state);
}

static bool
shader_texture_lod(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shader_texture_lod_enable;
}

static bool
shader_texture_lod_and_rect(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shader_texture_lod_enable &&
          state->ARB_texture_rectangle_enable;
}

static bool
shader_bit_encoding(const _mesa_glsl_parse_state *state)
{
   return state->is_version(330, 300) ||
          state->ARB_shader_bit_encoding_enable ||
          state->ARB_gpu_shader5_enable;
}

static bool
shader_integer_mix(const _mesa_glsl_parse_state *state)
{
   return v130(state) && state->EXT_shader_integer_mix_enable;
}

static bool
shader_packing_or_es3(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shading_language_packing_enable ||
          state->is_version(400, 300);
}

static bool
shader_packing_or_es3_or_gpu_shader5(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shading_language_packing_enable ||
          state->ARB_gpu_shader5_enable ||
          state->is_version(400, 300);
}

static bool
gpu_shader5(const _mesa_glsl_parse_state *state)
{
   return state->is_version(400, 0) || state->ARB_gpu_shader5_enable;
}

static bool
shader_packing_or_gpu_shader5(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shading_language_packing_enable ||
          gpu_shader5(state);
}

static bool
fs_gpu_shader5(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          (state->is_version(400, 0) || state->ARB_gpu_shader5_enable);
}


static bool
texture_array_lod(const _mesa_glsl_parse_state *state)
{
   return lod_exists_in_stage(state) &&
          state->EXT_texture_array_enable;
}

static bool
fs_texture_array(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          state->EXT_texture_array_enable;
}

static bool
texture_array(const _mesa_glsl_parse_state *state)
{
   return state->EXT_texture_array_enable;
}

static bool
texture_multisample(const _mesa_glsl_parse_state *state)
{
   return state->is_version(150, 0) ||
          state->ARB_texture_multisample_enable;
}

static bool
fs_texture_cube_map_array(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          (state->is_version(400, 0) ||
           state->ARB_texture_cube_map_array_enable);
}

static bool
texture_cube_map_array(const _mesa_glsl_parse_state *state)
{
   return state->is_version(400, 0) ||
          state->ARB_texture_cube_map_array_enable;
}

static bool
texture_query_levels(const _mesa_glsl_parse_state *state)
{
   return state->is_version(430, 0) ||
          state->ARB_texture_query_levels_enable;
}

static bool
texture_query_lod(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          state->ARB_texture_query_lod_enable;
}

static bool
texture_gather(const _mesa_glsl_parse_state *state)
{
   return state->is_version(400, 0) ||
          state->ARB_texture_gather_enable ||
          state->ARB_gpu_shader5_enable;
}

/* Only ARB_texture_gather but not GLSL 4.0 or ARB_gpu_shader5.
 * used for relaxation of const offset requirements.
 */
static bool
texture_gather_only(const _mesa_glsl_parse_state *state)
{
   return !state->is_version(400, 0) &&
          !state->ARB_gpu_shader5_enable &&
          state->ARB_texture_gather_enable;
}

/* Desktop GL or OES_standard_derivatives + fragment shader only */
static bool
fs_oes_derivatives(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          (state->is_version(110, 300) ||
           state->OES_standard_derivatives_enable);
}

static bool
fs_derivative_control(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          (state->is_version(450, 0) ||
           state->ARB_derivative_control_enable);
}

static bool
tex1d_lod(const _mesa_glsl_parse_state *state)
{
   return !state->es_shader && lod_exists_in_stage(state);
}

/** True if sampler3D exists */
static bool
tex3d(const _mesa_glsl_parse_state *state)
{
   /* sampler3D exists in all desktop GLSL versions, GLSL ES 1.00 with the
    * OES_texture_3D extension, and in GLSL ES 3.00.
    */
   return !state->es_shader ||
          state->OES_texture_3D_enable ||
          state->language_version >= 300;
}

static bool
fs_tex3d(const _mesa_glsl_parse_state *state)
{
   return state->stage == MESA_SHADER_FRAGMENT &&
          (!state->es_shader || state->OES_texture_3D_enable);
}

static bool
tex3d_lod(const _mesa_glsl_parse_state *state)
{
   return tex3d(state) && lod_exists_in_stage(state);
}

static bool
shader_atomic_counters(const _mesa_glsl_parse_state *state)
{
   return state->ARB_shader_atomic_counters_enable;
}

static bool
shader_trinary_minmax(const _mesa_glsl_parse_state *state)
{
   return state->AMD_shader_trinary_minmax_enable;
}

static bool
shader_image_load_store(const _mesa_glsl_parse_state *state)
{
   return (state->is_version(420, 0) ||
           state->ARB_shader_image_load_store_enable);
}

static bool
gs_streams(const _mesa_glsl_parse_state *state)
{
   return gpu_shader5(state) && gs_only(state);
}

/** @@} */

/******************************************************************************/

namespace {

/**
 * builtin_builder: A singleton object representing the core of the built-in
 * function module.
 *
 * It generates IR for every built-in function signature, and organizes them
 * into functions.
 */
class builtin_builder {
public:
   builtin_builder();
   ~builtin_builder();

   void initialize();
   void release();
   ir_function_signature *find(_mesa_glsl_parse_state *state,
                               const char *name, exec_list *actual_parameters);

   /**
    * A shader to hold all the built-in signatures; created by this module.
    *
    * This includes signatures for every built-in, regardless of version or
    * enabled extensions.  The availability predicate associated with each
    * signature allows matching_signature() to filter out the irrelevant ones.
    */
   gl_shader *shader;

private:
   void *mem_ctx;

   /** Global variables used by built-in functions. */
   ir_variable *gl_ModelViewProjectionMatrix;
   ir_variable *gl_Vertex;

   void create_shader();
   void create_intrinsics();
   void create_builtins();

   /**
    * IR builder helpers:
    *
    * These convenience functions assist in emitting IR, but don't necessarily
    * fit in ir_builder itself.  Many of them rely on having a mem_ctx class
    * member available.
    */
   ir_variable *in_var(const glsl_type *type, const char *name);
   ir_variable *out_var(const glsl_type *type, const char *name);
   ir_constant *imm(float f, unsigned vector_elements=1);
   ir_constant *imm(int i, unsigned vector_elements=1);
   ir_constant *imm(unsigned u, unsigned vector_elements=1);
   ir_constant *imm(const glsl_type *type, const ir_constant_data &);
   ir_dereference_variable *var_ref(ir_variable *var);
   ir_dereference_array *array_ref(ir_variable *var, int i);
   ir_swizzle *matrix_elt(ir_variable *var, int col, int row);

   ir_expression *asin_expr(ir_variable *x);

   /**
    * Call function \param f with parameters specified as the linked
    * list \param params of \c ir_variable objects.  \param ret should
    * point to the ir_variable that will hold the function return
    * value, or be \c NULL if the function has void return type.
    */
   ir_call *call(ir_function *f, ir_variable *ret, exec_list params);

   /** Create a new function and add the given signatures. */
   void add_function(const char *name, ...);

   enum image_function_flags {
      IMAGE_FUNCTION_EMIT_STUB = (1 << 0),
      IMAGE_FUNCTION_RETURNS_VOID = (1 << 1),
      IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE = (1 << 2),
      IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE = (1 << 3),
      IMAGE_FUNCTION_READ_ONLY = (1 << 4),
      IMAGE_FUNCTION_WRITE_ONLY = (1 << 5)
   };

   /**
    * Create a new image built-in function for all known image types.
    * \p flags is a bitfield of \c image_function_flags flags.
    */
   void add_image_function(const char *name,
                           const char *intrinsic_name,
                           unsigned num_arguments,
                           unsigned flags);

   /**
    * Create new functions for all known image built-ins and types.
    * If \p glsl is \c true, use the GLSL built-in names and emit code
    * to call into the actual compiler intrinsic.  If \p glsl is
    * false, emit a function prototype with no body for each image
    * intrinsic name.
    */
   void add_image_functions(bool glsl);

   ir_function_signature *new_sig(const glsl_type *return_type,
                                  builtin_available_predicate avail,
                                  int num_params, ...);

   /**
    * Function signature generators:
    *  @@{
    */
   ir_function_signature *unop(builtin_available_predicate avail,
                               ir_expression_operation opcode,
                               const glsl_type *return_type,
                               const glsl_type *param_type);
   ir_function_signature *binop(ir_expression_operation opcode,
                                builtin_available_predicate avail,
                                const glsl_type *return_type,
                                const glsl_type *param0_type,
                                const glsl_type *param1_type);

#define B0(X) ir_function_signature *_##X();
#define B1(X) ir_function_signature *_##X(const glsl_type *);
#define B2(X) ir_function_signature *_##X(const glsl_type *, const glsl_type *);
#define B3(X) ir_function_signature *_##X(const glsl_type *, const glsl_type *, const glsl_type *);
#define BA1(X) ir_function_signature *_##X(builtin_available_predicate, const glsl_type *);
#define BA2(X) ir_function_signature *_##X(builtin_available_predicate, const glsl_type *, const glsl_type *);
   B1(radians)
   B1(degrees)
   B1(sin)
   B1(cos)
   B1(tan)
   B1(asin)
   B1(acos)
   B1(atan2)
   B1(atan)
   B1(sinh)
   B1(cosh)
   B1(tanh)
   B1(asinh)
   B1(acosh)
   B1(atanh)
   B1(pow)
   B1(exp)
   B1(log)
   B1(exp2)
   B1(log2)
   B1(sqrt)
   B1(inversesqrt)
   B1(abs)
   B1(sign)
   B1(floor)
   B1(trunc)
   B1(round)
   B1(roundEven)
   B1(ceil)
   B1(fract)
   B2(mod)
   B1(modf)
   BA2(min)
   BA2(max)
   BA2(clamp)
   B2(mix_lrp)
   ir_function_signature *_mix_sel(builtin_available_predicate avail,
                                   const glsl_type *val_type,
                                   const glsl_type *blend_type);
   B2(step)
   B2(smoothstep)
   B1(isnan)
   B1(isinf)
   B1(floatBitsToInt)
   B1(floatBitsToUint)
   B1(intBitsToFloat)
   B1(uintBitsToFloat)
   ir_function_signature *_packUnorm2x16(builtin_available_predicate avail);
   ir_function_signature *_packSnorm2x16(builtin_available_predicate avail);
   ir_function_signature *_packUnorm4x8(builtin_available_predicate avail);
   ir_function_signature *_packSnorm4x8(builtin_available_predicate avail);
   ir_function_signature *_unpackUnorm2x16(builtin_available_predicate avail);
   ir_function_signature *_unpackSnorm2x16(builtin_available_predicate avail);
   ir_function_signature *_unpackUnorm4x8(builtin_available_predicate avail);
   ir_function_signature *_unpackSnorm4x8(builtin_available_predicate avail);
   ir_function_signature *_packHalf2x16(builtin_available_predicate avail);
   ir_function_signature *_unpackHalf2x16(builtin_available_predicate avail);
   B1(length)
   B1(distance);
   B1(dot);
   B1(cross);
   B1(normalize);
   B0(ftransform);
   B1(faceforward);
   B1(reflect);
   B1(refract);
   B1(matrixCompMult);
   B1(outerProduct);
   B0(determinant_mat2);
   B0(determinant_mat3);
   B0(determinant_mat4);
   B0(inverse_mat2);
   B0(inverse_mat3);
   B0(inverse_mat4);
   B1(transpose);
   BA1(lessThan);
   BA1(lessThanEqual);
   BA1(greaterThan);
   BA1(greaterThanEqual);
   BA1(equal);
   BA1(notEqual);
   B1(any);
   B1(all);
   B1(not);
   B2(textureSize);
   ir_function_signature *_textureSize(builtin_available_predicate avail,
                                       const glsl_type *return_type,
                                       const glsl_type *sampler_type);

/** Flags to _texture() */
#define TEX_PROJECT 1
#define TEX_OFFSET  2
#define TEX_COMPONENT 4
#define TEX_OFFSET_NONCONST 8
#define TEX_OFFSET_ARRAY 16

   ir_function_signature *_texture(ir_texture_opcode opcode,
                                   builtin_available_predicate avail,
                                   const glsl_type *return_type,
                                   const glsl_type *sampler_type,
                                   const glsl_type *coord_type,
                                   int flags = 0);
   B0(textureCubeArrayShadow);
   ir_function_signature *_texelFetch(builtin_available_predicate avail,
                                      const glsl_type *return_type,
                                      const glsl_type *sampler_type,
                                      const glsl_type *coord_type,
                                      const glsl_type *offset_type = NULL);

   B0(EmitVertex)
   B0(EndPrimitive)
   ir_function_signature *_EmitStreamVertex(builtin_available_predicate avail,
                                            const glsl_type *stream_type);
   ir_function_signature *_EndStreamPrimitive(builtin_available_predicate avail,
                                              const glsl_type *stream_type);

   B2(textureQueryLod);
   B1(textureQueryLevels);
   B1(dFdx);
   B1(dFdy);
   B1(fwidth);
   B1(dFdxCoarse);
   B1(dFdyCoarse);
   B1(fwidthCoarse);
   B1(dFdxFine);
   B1(dFdyFine);
   B1(fwidthFine);
   B1(noise1);
   B1(noise2);
   B1(noise3);
   B1(noise4);

   B1(bitfieldExtract)
   B1(bitfieldInsert)
   B1(bitfieldReverse)
   B1(bitCount)
   B1(findLSB)
   B1(findMSB)
   B1(fma)
   B2(ldexp)
   B2(frexp)
   B1(uaddCarry)
   B1(usubBorrow)
   B1(mulExtended)
   B1(interpolateAtCentroid)
   B1(interpolateAtOffset)
   B1(interpolateAtSample)

   ir_function_signature *_atomic_intrinsic(builtin_available_predicate avail);
   ir_function_signature *_atomic_op(const char *intrinsic,
                                     builtin_available_predicate avail);

   B1(min3)
   B1(max3)
   B1(mid3)

   ir_function_signature *_image_prototype(const glsl_type *image_type,
                                           const char *intrinsic_name,
                                           unsigned num_arguments,
                                           unsigned flags);
   ir_function_signature *_image(const glsl_type *image_type,
                                 const char *intrinsic_name,
                                 unsigned num_arguments,
                                 unsigned flags);

   ir_function_signature *_memory_barrier_intrinsic(
      builtin_available_predicate avail);
   ir_function_signature *_memory_barrier(
      builtin_available_predicate avail);

#undef B0
#undef B1
#undef B2
#undef B3
#undef BA1
#undef BA2
   /** @@} */
};

} /* anonymous namespace */

/**
 * Core builtin_builder functionality:
 *  @@{
 */
builtin_builder::builtin_builder()
   : shader(NULL),
     gl_ModelViewProjectionMatrix(NULL),
     gl_Vertex(NULL)
{
   mem_ctx = NULL;
}

builtin_builder::~builtin_builder()
{
   ralloc_free(mem_ctx);
}

ir_function_signature *
builtin_builder::find(_mesa_glsl_parse_state *state,
                      const char *name, exec_list *actual_parameters)
{
   /* The shader currently being compiled requested a built-in function;
    * it needs to link against builtin_builder::shader in order to get them.
    *
    * Even if we don't find a matching signature, we still need to do this so
    * that the "no matching signature" error will list potential candidates
    * from the available built-ins.
    */
   state->uses_builtin_functions = true;

   ir_function *f = shader->symbols->get_function(name);
   if (f == NULL)
      return NULL;

   ir_function_signature *sig =
      f->matching_signature(state, actual_parameters, true);
   if (sig == NULL)
      return NULL;

   return sig;
}

void
builtin_builder::initialize()
{
   /* If already initialized, don't do it again. */
   if (mem_ctx != NULL)
      return;

   mem_ctx = ralloc_context(NULL);
   create_shader();
   create_intrinsics();
   create_builtins();
}

void
builtin_builder::release()
{
   ralloc_free(mem_ctx);
   mem_ctx = NULL;

   ralloc_free(shader);
   shader = NULL;
}

void
builtin_builder::create_shader()
{
   /* The target doesn't actually matter.  There's no target for generic
    * GLSL utility code that could be linked against any stage, so just
    * arbitrarily pick GL_VERTEX_SHADER.
    */
   shader = _mesa_new_shader(NULL, 0, GL_VERTEX_SHADER);
   shader->symbols = new(mem_ctx) glsl_symbol_table;

   gl_ModelViewProjectionMatrix =
      new(mem_ctx) ir_variable(glsl_type::mat4_type,
                               "gl_ModelViewProjectionMatrix",
                               ir_var_uniform);

   shader->symbols->add_variable(gl_ModelViewProjectionMatrix);

   gl_Vertex = in_var(glsl_type::vec4_type, "gl_Vertex");
   shader->symbols->add_variable(gl_Vertex);
}

/** @@} */

/**
 * Create ir_function and ir_function_signature objects for each
 * intrinsic.
 */
void
builtin_builder::create_intrinsics()
{
   add_function("__intrinsic_atomic_read",
                _atomic_intrinsic(shader_atomic_counters),
                NULL);
   add_function("__intrinsic_atomic_increment",
                _atomic_intrinsic(shader_atomic_counters),
                NULL);
   add_function("__intrinsic_atomic_predecrement",
                _atomic_intrinsic(shader_atomic_counters),
                NULL);

   add_image_functions(false);

   add_function("__intrinsic_memory_barrier",
                _memory_barrier_intrinsic(shader_image_load_store),
                NULL);
}

/**
 * Create ir_function and ir_function_signature objects for each built-in.
 *
 * Contains a list of every available built-in.
 */
void
builtin_builder::create_builtins()
{
#define F(NAME)                                 \
   add_function(#NAME,                          \
                _##NAME(glsl_type::float_type), \
                _##NAME(glsl_type::vec2_type),  \
                _##NAME(glsl_type::vec3_type),  \
                _##NAME(glsl_type::vec4_type),  \
                NULL);

#define FI(NAME)                                \
   add_function(#NAME,                          \
                _##NAME(glsl_type::float_type), \
                _##NAME(glsl_type::vec2_type),  \
                _##NAME(glsl_type::vec3_type),  \
                _##NAME(glsl_type::vec4_type),  \
                _##NAME(glsl_type::int_type),   \
                _##NAME(glsl_type::ivec2_type), \
                _##NAME(glsl_type::ivec3_type), \
                _##NAME(glsl_type::ivec4_type), \
                NULL);

#define FIU(NAME)                                                 \
   add_function(#NAME,                                            \
                _##NAME(always_available, glsl_type::float_type), \
                _##NAME(always_available, glsl_type::vec2_type),  \
                _##NAME(always_available, glsl_type::vec3_type),  \
                _##NAME(always_available, glsl_type::vec4_type),  \
                                                                  \
                _##NAME(always_available, glsl_type::int_type),   \
                _##NAME(always_available, glsl_type::ivec2_type), \
                _##NAME(always_available, glsl_type::ivec3_type), \
                _##NAME(always_available, glsl_type::ivec4_type), \
                                                                  \
                _##NAME(v130, glsl_type::uint_type),              \
                _##NAME(v130, glsl_type::uvec2_type),             \
                _##NAME(v130, glsl_type::uvec3_type),             \
                _##NAME(v130, glsl_type::uvec4_type),             \
                NULL);

#define IU(NAME)                                \
   add_function(#NAME,                          \
                _##NAME(glsl_type::int_type),   \
                _##NAME(glsl_type::ivec2_type), \
                _##NAME(glsl_type::ivec3_type), \
                _##NAME(glsl_type::ivec4_type), \
                                                \
                _##NAME(glsl_type::uint_type),  \
                _##NAME(glsl_type::uvec2_type), \
                _##NAME(glsl_type::uvec3_type), \
                _##NAME(glsl_type::uvec4_type), \
                NULL);

#define FIUB(NAME)                                                \
   add_function(#NAME,                                            \
                _##NAME(always_available, glsl_type::float_type), \
                _##NAME(always_available, glsl_type::vec2_type),  \
                _##NAME(always_available, glsl_type::vec3_type),  \
                _##NAME(always_available, glsl_type::vec4_type),  \
                                                                  \
                _##NAME(always_available, glsl_type::int_type),   \
                _##NAME(always_available, glsl_type::ivec2_type), \
                _##NAME(always_available, glsl_type::ivec3_type), \
                _##NAME(always_available, glsl_type::ivec4_type), \
                                                                  \
                _##NAME(v130, glsl_type::uint_type),              \
                _##NAME(v130, glsl_type::uvec2_type),             \
                _##NAME(v130, glsl_type::uvec3_type),             \
                _##NAME(v130, glsl_type::uvec4_type),             \
                                                                  \
                _##NAME(always_available, glsl_type::bool_type),  \
                _##NAME(always_available, glsl_type::bvec2_type), \
                _##NAME(always_available, glsl_type::bvec3_type), \
                _##NAME(always_available, glsl_type::bvec4_type), \
                NULL);

#define FIU2_MIXED(NAME)                                                                 \
   add_function(#NAME,                                                                   \
                _##NAME(always_available, glsl_type::float_type, glsl_type::float_type), \
                _##NAME(always_available, glsl_type::vec2_type,  glsl_type::float_type), \
                _##NAME(always_available, glsl_type::vec3_type,  glsl_type::float_type), \
                _##NAME(always_available, glsl_type::vec4_type,  glsl_type::float_type), \
                                                                                         \
                _##NAME(always_available, glsl_type::vec2_type,  glsl_type::vec2_type),  \
                _##NAME(always_available, glsl_type::vec3_type,  glsl_type::vec3_type),  \
                _##NAME(always_available, glsl_type::vec4_type,  glsl_type::vec4_type),  \
                                                                                         \
                _##NAME(always_available, glsl_type::int_type,   glsl_type::int_type),   \
                _##NAME(always_available, glsl_type::ivec2_type, glsl_type::int_type),   \
                _##NAME(always_available, glsl_type::ivec3_type, glsl_type::int_type),   \
                _##NAME(always_available, glsl_type::ivec4_type, glsl_type::int_type),   \
                                                                                         \
                _##NAME(always_available, glsl_type::ivec2_type, glsl_type::ivec2_type), \
                _##NAME(always_available, glsl_type::ivec3_type, glsl_type::ivec3_type), \
                _##NAME(always_available, glsl_type::ivec4_type, glsl_type::ivec4_type), \
                                                                                         \
                _##NAME(v130, glsl_type::uint_type,  glsl_type::uint_type),              \
                _##NAME(v130, glsl_type::uvec2_type, glsl_type::uint_type),              \
                _##NAME(v130, glsl_type::uvec3_type, glsl_type::uint_type),              \
                _##NAME(v130, glsl_type::uvec4_type, glsl_type::uint_type),              \
                                                                                         \
                _##NAME(v130, glsl_type::uvec2_type, glsl_type::uvec2_type),             \
                _##NAME(v130, glsl_type::uvec3_type, glsl_type::uvec3_type),             \
                _##NAME(v130, glsl_type::uvec4_type, glsl_type::uvec4_type),             \
                NULL);

   F(radians)
   F(degrees)
   F(sin)
   F(cos)
   F(tan)
   F(asin)
   F(acos)

   add_function("atan",
                _atan(glsl_type::float_type),
                _atan(glsl_type::vec2_type),
                _atan(glsl_type::vec3_type),
                _atan(glsl_type::vec4_type),
                _atan2(glsl_type::float_type),
                _atan2(glsl_type::vec2_type),
                _atan2(glsl_type::vec3_type),
                _atan2(glsl_type::vec4_type),
                NULL);

   F(sinh)
   F(cosh)
   F(tanh)
   F(asinh)
   F(acosh)
   F(atanh)
   F(pow)
   F(exp)
   F(log)
   F(exp2)
   F(log2)
   F(sqrt)
   F(inversesqrt)
   FI(abs)
   FI(sign)
   F(floor)
   F(trunc)
   F(round)
   F(roundEven)
   F(ceil)
   F(fract)

   add_function("mod",
                _mod(glsl_type::float_type, glsl_type::float_type),
                _mod(glsl_type::vec2_type,  glsl_type::float_type),
                _mod(glsl_type::vec3_type,  glsl_type::float_type),
                _mod(glsl_type::vec4_type,  glsl_type::float_type),

                _mod(glsl_type::vec2_type,  glsl_type::vec2_type),
                _mod(glsl_type::vec3_type,  glsl_type::vec3_type),
                _mod(glsl_type::vec4_type,  glsl_type::vec4_type),
                NULL);

   F(modf)

   FIU2_MIXED(min)
   FIU2_MIXED(max)
   FIU2_MIXED(clamp)

   add_function("mix",
                _mix_lrp(glsl_type::float_type, glsl_type::float_type),
                _mix_lrp(glsl_type::vec2_type,  glsl_type::float_type),
                _mix_lrp(glsl_type::vec3_type,  glsl_type::float_type),
                _mix_lrp(glsl_type::vec4_type,  glsl_type::float_type),

                _mix_lrp(glsl_type::vec2_type,  glsl_type::vec2_type),
                _mix_lrp(glsl_type::vec3_type,  glsl_type::vec3_type),
                _mix_lrp(glsl_type::vec4_type,  glsl_type::vec4_type),

                _mix_sel(v130, glsl_type::float_type, glsl_type::bool_type),
                _mix_sel(v130, glsl_type::vec2_type,  glsl_type::bvec2_type),
                _mix_sel(v130, glsl_type::vec3_type,  glsl_type::bvec3_type),
                _mix_sel(v130, glsl_type::vec4_type,  glsl_type::bvec4_type),

                _mix_sel(shader_integer_mix, glsl_type::int_type,   glsl_type::bool_type),
                _mix_sel(shader_integer_mix, glsl_type::ivec2_type, glsl_type::bvec2_type),
                _mix_sel(shader_integer_mix, glsl_type::ivec3_type, glsl_type::bvec3_type),
                _mix_sel(shader_integer_mix, glsl_type::ivec4_type, glsl_type::bvec4_type),

                _mix_sel(shader_integer_mix, glsl_type::uint_type,  glsl_type::bool_type),
                _mix_sel(shader_integer_mix, glsl_type::uvec2_type, glsl_type::bvec2_type),
                _mix_sel(shader_integer_mix, glsl_type::uvec3_type, glsl_type::bvec3_type),
                _mix_sel(shader_integer_mix, glsl_type::uvec4_type, glsl_type::bvec4_type),

                _mix_sel(shader_integer_mix, glsl_type::bool_type,  glsl_type::bool_type),
                _mix_sel(shader_integer_mix, glsl_type::bvec2_type, glsl_type::bvec2_type),
                _mix_sel(shader_integer_mix, glsl_type::bvec3_type, glsl_type::bvec3_type),
                _mix_sel(shader_integer_mix, glsl_type::bvec4_type, glsl_type::bvec4_type),
                NULL);

   add_function("step",
                _step(glsl_type::float_type, glsl_type::float_type),
                _step(glsl_type::float_type, glsl_type::vec2_type),
                _step(glsl_type::float_type, glsl_type::vec3_type),
                _step(glsl_type::float_type, glsl_type::vec4_type),

                _step(glsl_type::vec2_type,  glsl_type::vec2_type),
                _step(glsl_type::vec3_type,  glsl_type::vec3_type),
                _step(glsl_type::vec4_type,  glsl_type::vec4_type),
                NULL);

   add_function("smoothstep",
                _smoothstep(glsl_type::float_type, glsl_type::float_type),
                _smoothstep(glsl_type::float_type, glsl_type::vec2_type),
                _smoothstep(glsl_type::float_type, glsl_type::vec3_type),
                _smoothstep(glsl_type::float_type, glsl_type::vec4_type),

                _smoothstep(glsl_type::vec2_type,  glsl_type::vec2_type),
                _smoothstep(glsl_type::vec3_type,  glsl_type::vec3_type),
                _smoothstep(glsl_type::vec4_type,  glsl_type::vec4_type),
                NULL);
 
   F(isnan)
   F(isinf)

   F(floatBitsToInt)
   F(floatBitsToUint)
   add_function("intBitsToFloat",
                _intBitsToFloat(glsl_type::int_type),
                _intBitsToFloat(glsl_type::ivec2_type),
                _intBitsToFloat(glsl_type::ivec3_type),
                _intBitsToFloat(glsl_type::ivec4_type),
                NULL);
   add_function("uintBitsToFloat",
                _uintBitsToFloat(glsl_type::uint_type),
                _uintBitsToFloat(glsl_type::uvec2_type),
                _uintBitsToFloat(glsl_type::uvec3_type),
                _uintBitsToFloat(glsl_type::uvec4_type),
                NULL);

   add_function("packUnorm2x16",   _packUnorm2x16(shader_packing_or_es3_or_gpu_shader5),   NULL);
   add_function("packSnorm2x16",   _packSnorm2x16(shader_packing_or_es3),                  NULL);
   add_function("packUnorm4x8",    _packUnorm4x8(shader_packing_or_gpu_shader5),           NULL);
   add_function("packSnorm4x8",    _packSnorm4x8(shader_packing_or_gpu_shader5),           NULL);
   add_function("unpackUnorm2x16", _unpackUnorm2x16(shader_packing_or_es3_or_gpu_shader5), NULL);
   add_function("unpackSnorm2x16", _unpackSnorm2x16(shader_packing_or_es3),                NULL);
   add_function("unpackUnorm4x8",  _unpackUnorm4x8(shader_packing_or_gpu_shader5),         NULL);
   add_function("unpackSnorm4x8",  _unpackSnorm4x8(shader_packing_or_gpu_shader5),         NULL);
   add_function("packHalf2x16",    _packHalf2x16(shader_packing_or_es3),                   NULL);
   add_function("unpackHalf2x16",  _unpackHalf2x16(shader_packing_or_es3),                 NULL);

   F(length)
   F(distance)
   F(dot)

   add_function("cross", _cross(glsl_type::vec3_type), NULL);

   F(normalize)
   add_function("ftransform", _ftransform(), NULL);
   F(faceforward)
   F(reflect)
   F(refract)
   // ...
   add_function("matrixCompMult",
                _matrixCompMult(glsl_type::mat2_type),
                _matrixCompMult(glsl_type::mat3_type),
                _matrixCompMult(glsl_type::mat4_type),
                _matrixCompMult(glsl_type::mat2x3_type),
                _matrixCompMult(glsl_type::mat2x4_type),
                _matrixCompMult(glsl_type::mat3x2_type),
                _matrixCompMult(glsl_type::mat3x4_type),
                _matrixCompMult(glsl_type::mat4x2_type),
                _matrixCompMult(glsl_type::mat4x3_type),
                NULL);
   add_function("outerProduct",
                _outerProduct(glsl_type::mat2_type),
                _outerProduct(glsl_type::mat3_type),
                _outerProduct(glsl_type::mat4_type),
                _outerProduct(glsl_type::mat2x3_type),
                _outerProduct(glsl_type::mat2x4_type),
                _outerProduct(glsl_type::mat3x2_type),
                _outerProduct(glsl_type::mat3x4_type),
                _outerProduct(glsl_type::mat4x2_type),
                _outerProduct(glsl_type::mat4x3_type),
                NULL);
   add_function("determinant",
                _determinant_mat2(),
                _determinant_mat3(),
                _determinant_mat4(),
                NULL);
   add_function("inverse",
                _inverse_mat2(),
                _inverse_mat3(),
                _inverse_mat4(),
                NULL);
   add_function("transpose",
                _transpose(glsl_type::mat2_type),
                _transpose(glsl_type::mat3_type),
                _transpose(glsl_type::mat4_type),
                _transpose(glsl_type::mat2x3_type),
                _transpose(glsl_type::mat2x4_type),
                _transpose(glsl_type::mat3x2_type),
                _transpose(glsl_type::mat3x4_type),
                _transpose(glsl_type::mat4x2_type),
                _transpose(glsl_type::mat4x3_type),
                NULL);
   FIU(lessThan)
   FIU(lessThanEqual)
   FIU(greaterThan)
   FIU(greaterThanEqual)
   FIUB(notEqual)
   FIUB(equal)

   add_function("any",
                _any(glsl_type::bvec2_type),
                _any(glsl_type::bvec3_type),
                _any(glsl_type::bvec4_type),
                NULL);

   add_function("all",
                _all(glsl_type::bvec2_type),
                _all(glsl_type::bvec3_type),
                _all(glsl_type::bvec4_type),
                NULL);

   add_function("not",
                _not(glsl_type::bvec2_type),
                _not(glsl_type::bvec3_type),
                _not(glsl_type::bvec4_type),
                NULL);

   add_function("textureSize",
                _textureSize(v130, glsl_type::int_type,   glsl_type::sampler1D_type),
                _textureSize(v130, glsl_type::int_type,   glsl_type::isampler1D_type),
                _textureSize(v130, glsl_type::int_type,   glsl_type::usampler1D_type),

                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler2D_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::isampler2D_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::usampler2D_type),

                _textureSize(v130, glsl_type::ivec3_type, glsl_type::sampler3D_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::isampler3D_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::usampler3D_type),

                _textureSize(v130, glsl_type::ivec2_type, glsl_type::samplerCube_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::isamplerCube_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::usamplerCube_type),

                _textureSize(v130, glsl_type::int_type,   glsl_type::sampler1DShadow_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler2DShadow_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::samplerCubeShadow_type),

                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler1DArray_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::isampler1DArray_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::usampler1DArray_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::sampler2DArray_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::isampler2DArray_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::usampler2DArray_type),

                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler1DArrayShadow_type),
                _textureSize(v130, glsl_type::ivec3_type, glsl_type::sampler2DArrayShadow_type),

                _textureSize(texture_cube_map_array, glsl_type::ivec3_type, glsl_type::samplerCubeArray_type),
                _textureSize(texture_cube_map_array, glsl_type::ivec3_type, glsl_type::isamplerCubeArray_type),
                _textureSize(texture_cube_map_array, glsl_type::ivec3_type, glsl_type::usamplerCubeArray_type),
                _textureSize(texture_cube_map_array, glsl_type::ivec3_type, glsl_type::samplerCubeArrayShadow_type),

                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler2DRect_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::isampler2DRect_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::usampler2DRect_type),
                _textureSize(v130, glsl_type::ivec2_type, glsl_type::sampler2DRectShadow_type),

                _textureSize(v140, glsl_type::int_type,   glsl_type::samplerBuffer_type),
                _textureSize(v140, glsl_type::int_type,   glsl_type::isamplerBuffer_type),
                _textureSize(v140, glsl_type::int_type,   glsl_type::usamplerBuffer_type),
                _textureSize(texture_multisample, glsl_type::ivec2_type, glsl_type::sampler2DMS_type),
                _textureSize(texture_multisample, glsl_type::ivec2_type, glsl_type::isampler2DMS_type),
                _textureSize(texture_multisample, glsl_type::ivec2_type, glsl_type::usampler2DMS_type),

                _textureSize(texture_multisample, glsl_type::ivec3_type, glsl_type::sampler2DMSArray_type),
                _textureSize(texture_multisample, glsl_type::ivec3_type, glsl_type::isampler2DMSArray_type),
                _textureSize(texture_multisample, glsl_type::ivec3_type, glsl_type::usampler2DMSArray_type),
                NULL);

   add_function("texture",
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::samplerCube_type,  glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type,   glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type,   glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::samplerCubeShadow_type, glsl_type::vec4_type),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type),

                _texture(ir_tex, texture_cube_map_array, glsl_type::vec4_type,  glsl_type::samplerCubeArray_type,  glsl_type::vec4_type),
                _texture(ir_tex, texture_cube_map_array, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_tex, texture_cube_map_array, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec4_type),
                /* samplerCubeArrayShadow is special; it has an extra parameter
                 * for the shadow comparitor since there is no vec5 type.
                 */
                _textureCubeArrayShadow(),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::samplerCube_type,  glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler1DShadow_type,   glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler2DShadow_type,   glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::samplerCubeShadow_type, glsl_type::vec4_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type),

                _texture(ir_txb, fs_texture_cube_map_array, glsl_type::vec4_type,  glsl_type::samplerCubeArray_type,  glsl_type::vec4_type),
                _texture(ir_txb, fs_texture_cube_map_array, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_txb, fs_texture_cube_map_array, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),

                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("textureLod",
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::samplerCube_type,  glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec3_type),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type),

                _texture(ir_txl, texture_cube_map_array, glsl_type::vec4_type,  glsl_type::samplerCubeArray_type,  glsl_type::vec4_type),
                _texture(ir_txl, texture_cube_map_array, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_txl, texture_cube_map_array, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("textureOffset",
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txb, v130_fs_only, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                NULL);

   add_function("textureProj",
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txb, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texelFetch",
                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::int_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::int_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::int_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::ivec2_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::ivec3_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::ivec2_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::ivec2_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::ivec3_type),

                _texelFetch(v140, glsl_type::vec4_type,  glsl_type::samplerBuffer_type,  glsl_type::int_type),
                _texelFetch(v140, glsl_type::ivec4_type, glsl_type::isamplerBuffer_type, glsl_type::int_type),
                _texelFetch(v140, glsl_type::uvec4_type, glsl_type::usamplerBuffer_type, glsl_type::int_type),

                _texelFetch(texture_multisample, glsl_type::vec4_type,  glsl_type::sampler2DMS_type,  glsl_type::ivec2_type),
                _texelFetch(texture_multisample, glsl_type::ivec4_type, glsl_type::isampler2DMS_type, glsl_type::ivec2_type),
                _texelFetch(texture_multisample, glsl_type::uvec4_type, glsl_type::usampler2DMS_type, glsl_type::ivec2_type),

                _texelFetch(texture_multisample, glsl_type::vec4_type,  glsl_type::sampler2DMSArray_type,  glsl_type::ivec3_type),
                _texelFetch(texture_multisample, glsl_type::ivec4_type, glsl_type::isampler2DMSArray_type, glsl_type::ivec3_type),
                _texelFetch(texture_multisample, glsl_type::uvec4_type, glsl_type::usampler2DMSArray_type, glsl_type::ivec3_type),
                NULL);

   add_function("texelFetchOffset",
                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::int_type, glsl_type::int_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::int_type, glsl_type::int_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::int_type, glsl_type::int_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::ivec2_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::ivec2_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::ivec2_type, glsl_type::ivec2_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::ivec3_type, glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::ivec3_type, glsl_type::ivec3_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::ivec3_type, glsl_type::ivec3_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::ivec2_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::ivec2_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::ivec2_type, glsl_type::ivec2_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::ivec2_type, glsl_type::int_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::ivec2_type, glsl_type::int_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::ivec2_type, glsl_type::int_type),

                _texelFetch(v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::ivec3_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::ivec3_type, glsl_type::ivec2_type),
                _texelFetch(v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::ivec3_type, glsl_type::ivec2_type),

                NULL);

   add_function("textureProjOffset",
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_tex, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_tex, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txb, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txb, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txb, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                NULL);

   add_function("textureLodOffset",
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                NULL);

   add_function("textureProjLod",
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("textureProjLodOffset",
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txl, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                NULL);

   add_function("textureGrad",
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::samplerCube_type,  glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type,   glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type,   glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::samplerCubeShadow_type, glsl_type::vec4_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type),

                _texture(ir_txd, texture_cube_map_array, glsl_type::vec4_type,  glsl_type::samplerCubeArray_type,  glsl_type::vec4_type),
                _texture(ir_txd, texture_cube_map_array, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_txd, texture_cube_map_array, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec4_type),
                NULL);

   add_function("textureGradOffset",
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::float_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1DArray_type,  glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1DArray_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DArray_type,  glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec4_type, TEX_OFFSET),
                NULL);

   add_function("textureProjGrad",
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("textureProjGradOffset",
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler1D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler3D_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler3D_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::vec4_type,  glsl_type::sampler2DRect_type,  glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),

                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                _texture(ir_txd, v130, glsl_type::float_type, glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT | TEX_OFFSET),
                NULL);

   add_function("EmitVertex",   _EmitVertex(),   NULL);
   add_function("EndPrimitive", _EndPrimitive(), NULL);
   add_function("EmitStreamVertex",
                _EmitStreamVertex(gs_streams, glsl_type::uint_type),
                _EmitStreamVertex(gs_streams, glsl_type::int_type),
                NULL);
   add_function("EndStreamPrimitive",
                _EndStreamPrimitive(gs_streams, glsl_type::uint_type),
                _EndStreamPrimitive(gs_streams, glsl_type::int_type),
                NULL);

   add_function("textureQueryLOD",
                _textureQueryLod(glsl_type::sampler1D_type,  glsl_type::float_type),
                _textureQueryLod(glsl_type::isampler1D_type, glsl_type::float_type),
                _textureQueryLod(glsl_type::usampler1D_type, glsl_type::float_type),

                _textureQueryLod(glsl_type::sampler2D_type,  glsl_type::vec2_type),
                _textureQueryLod(glsl_type::isampler2D_type, glsl_type::vec2_type),
                _textureQueryLod(glsl_type::usampler2D_type, glsl_type::vec2_type),

                _textureQueryLod(glsl_type::sampler3D_type,  glsl_type::vec3_type),
                _textureQueryLod(glsl_type::isampler3D_type, glsl_type::vec3_type),
                _textureQueryLod(glsl_type::usampler3D_type, glsl_type::vec3_type),

                _textureQueryLod(glsl_type::samplerCube_type,  glsl_type::vec3_type),
                _textureQueryLod(glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _textureQueryLod(glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _textureQueryLod(glsl_type::sampler1DArray_type,  glsl_type::float_type),
                _textureQueryLod(glsl_type::isampler1DArray_type, glsl_type::float_type),
                _textureQueryLod(glsl_type::usampler1DArray_type, glsl_type::float_type),

                _textureQueryLod(glsl_type::sampler2DArray_type,  glsl_type::vec2_type),
                _textureQueryLod(glsl_type::isampler2DArray_type, glsl_type::vec2_type),
                _textureQueryLod(glsl_type::usampler2DArray_type, glsl_type::vec2_type),

                _textureQueryLod(glsl_type::samplerCubeArray_type,  glsl_type::vec3_type),
                _textureQueryLod(glsl_type::isamplerCubeArray_type, glsl_type::vec3_type),
                _textureQueryLod(glsl_type::usamplerCubeArray_type, glsl_type::vec3_type),

                _textureQueryLod(glsl_type::sampler1DShadow_type, glsl_type::float_type),
                _textureQueryLod(glsl_type::sampler2DShadow_type, glsl_type::vec2_type),
                _textureQueryLod(glsl_type::samplerCubeShadow_type, glsl_type::vec3_type),
                _textureQueryLod(glsl_type::sampler1DArrayShadow_type, glsl_type::float_type),
                _textureQueryLod(glsl_type::sampler2DArrayShadow_type, glsl_type::vec2_type),
                _textureQueryLod(glsl_type::samplerCubeArrayShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("textureQueryLevels",
                _textureQueryLevels(glsl_type::sampler1D_type),
                _textureQueryLevels(glsl_type::sampler2D_type),
                _textureQueryLevels(glsl_type::sampler3D_type),
                _textureQueryLevels(glsl_type::samplerCube_type),
                _textureQueryLevels(glsl_type::sampler1DArray_type),
                _textureQueryLevels(glsl_type::sampler2DArray_type),
                _textureQueryLevels(glsl_type::samplerCubeArray_type),
                _textureQueryLevels(glsl_type::sampler1DShadow_type),
                _textureQueryLevels(glsl_type::sampler2DShadow_type),
                _textureQueryLevels(glsl_type::samplerCubeShadow_type),
                _textureQueryLevels(glsl_type::sampler1DArrayShadow_type),
                _textureQueryLevels(glsl_type::sampler2DArrayShadow_type),
                _textureQueryLevels(glsl_type::samplerCubeArrayShadow_type),

                _textureQueryLevels(glsl_type::isampler1D_type),
                _textureQueryLevels(glsl_type::isampler2D_type),
                _textureQueryLevels(glsl_type::isampler3D_type),
                _textureQueryLevels(glsl_type::isamplerCube_type),
                _textureQueryLevels(glsl_type::isampler1DArray_type),
                _textureQueryLevels(glsl_type::isampler2DArray_type),
                _textureQueryLevels(glsl_type::isamplerCubeArray_type),

                _textureQueryLevels(glsl_type::usampler1D_type),
                _textureQueryLevels(glsl_type::usampler2D_type),
                _textureQueryLevels(glsl_type::usampler3D_type),
                _textureQueryLevels(glsl_type::usamplerCube_type),
                _textureQueryLevels(glsl_type::usampler1DArray_type),
                _textureQueryLevels(glsl_type::usampler2DArray_type),
                _textureQueryLevels(glsl_type::usamplerCubeArray_type),

                NULL);

   add_function("texture1D",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::float_type),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::float_type),
                NULL);

   add_function("texture1DArray",
                _texture(ir_tex, texture_array,    glsl_type::vec4_type, glsl_type::sampler1DArray_type, glsl_type::vec2_type),
                _texture(ir_txb, fs_texture_array, glsl_type::vec4_type, glsl_type::sampler1DArray_type, glsl_type::vec2_type),
                NULL);

   add_function("texture1DProj",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture1DLod",
                _texture(ir_txl, tex1d_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::float_type),
                NULL);

   add_function("texture1DArrayLod",
                _texture(ir_txl, texture_array_lod, glsl_type::vec4_type, glsl_type::sampler1DArray_type, glsl_type::vec2_type),
                NULL);

   add_function("texture1DProjLod",
                _texture(ir_txl, tex1d_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txl, tex1d_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture2D",
                _texture(ir_tex, always_available, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec2_type),
                _texture(ir_txb, fs_only,          glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec2_type),
                _texture(ir_tex, texture_external, glsl_type::vec4_type,  glsl_type::samplerExternalOES_type, glsl_type::vec2_type),
                NULL);

   add_function("texture2DArray",
                _texture(ir_tex, texture_array,    glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_txb, fs_texture_array, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type),
                NULL);

   add_function("texture2DProj",
                _texture(ir_tex, always_available, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, always_available, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, fs_only,          glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txb, fs_only,          glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_tex, texture_external, glsl_type::vec4_type,  glsl_type::samplerExternalOES_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, texture_external, glsl_type::vec4_type,  glsl_type::samplerExternalOES_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture2DLod",
                _texture(ir_txl, lod_exists_in_stage, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec2_type),
                NULL);

   add_function("texture2DArrayLod",
                _texture(ir_txl, texture_array_lod, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type),
                NULL);

   add_function("texture2DProjLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture3D",
                _texture(ir_tex, tex3d,    glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec3_type),
                _texture(ir_txb, fs_tex3d, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec3_type),
                NULL);

   add_function("texture3DProj",
                _texture(ir_tex, tex3d,    glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, fs_tex3d, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture3DLod",
                _texture(ir_txl, tex3d_lod, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec3_type),
                NULL);

   add_function("texture3DProjLod",
                _texture(ir_txl, tex3d_lod, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("textureCube",
                _texture(ir_tex, always_available, glsl_type::vec4_type,  glsl_type::samplerCube_type, glsl_type::vec3_type),
                _texture(ir_txb, fs_only,          glsl_type::vec4_type,  glsl_type::samplerCube_type, glsl_type::vec3_type),
                NULL);

   add_function("textureCubeLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::samplerCube_type, glsl_type::vec3_type),
                NULL);

   add_function("texture2DRect",
                _texture(ir_tex, texture_rectangle, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec2_type),
                NULL);

   add_function("texture2DRectProj",
                _texture(ir_tex, texture_rectangle, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_tex, texture_rectangle, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow1D",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec3_type),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow1DArray",
                _texture(ir_tex, texture_array,    glsl_type::vec4_type,  glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                _texture(ir_txb, fs_texture_array, glsl_type::vec4_type,  glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2D",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec3_type),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2DArray",
                _texture(ir_tex, texture_array,    glsl_type::vec4_type,  glsl_type::sampler2DArrayShadow_type, glsl_type::vec4_type),
                _texture(ir_txb, fs_texture_array, glsl_type::vec4_type,  glsl_type::sampler2DArrayShadow_type, glsl_type::vec4_type),
                NULL);

   add_function("shadow1DProj",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow2DProj",
                _texture(ir_tex, v110,         glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                _texture(ir_txb, v110_fs_only, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow1DLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2DLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow1DArrayLod",
                _texture(ir_txl, texture_array_lod, glsl_type::vec4_type, glsl_type::sampler1DArrayShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow1DProjLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow2DProjLod",
                _texture(ir_txl, v110_lod, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow2DRect",
                _texture(ir_tex, texture_rectangle, glsl_type::vec4_type,  glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2DRectProj",
                _texture(ir_tex, texture_rectangle, glsl_type::vec4_type,  glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture1DGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::float_type),
                NULL);

   add_function("texture1DProjGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler1D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture2DGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec2_type),
                NULL);

   add_function("texture2DProjGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler2D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture3DGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec3_type),
                NULL);

   add_function("texture3DProjGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler3D_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("textureCubeGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::samplerCube_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow1DGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow1DProjGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler1DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow2DGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2DProjGradARB",
                _texture(ir_txd, shader_texture_lod, glsl_type::vec4_type,  glsl_type::sampler2DShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("texture2DRectGradARB",
                _texture(ir_txd, shader_texture_lod_and_rect, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec2_type),
                NULL);

   add_function("texture2DRectProjGradARB",
                _texture(ir_txd, shader_texture_lod_and_rect, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec3_type, TEX_PROJECT),
                _texture(ir_txd, shader_texture_lod_and_rect, glsl_type::vec4_type,  glsl_type::sampler2DRect_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("shadow2DRectGradARB",
                _texture(ir_txd, shader_texture_lod_and_rect, glsl_type::vec4_type,  glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type),
                NULL);

   add_function("shadow2DRectProjGradARB",
                _texture(ir_txd, shader_texture_lod_and_rect, glsl_type::vec4_type,  glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT),
                NULL);

   add_function("textureGather",
                _texture(ir_tg4, texture_gather, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type),
                _texture(ir_tg4, texture_gather, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type),
                _texture(ir_tg4, texture_gather, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type),

                _texture(ir_tg4, texture_gather, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_tg4, texture_gather, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type),
                _texture(ir_tg4, texture_gather, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type),

                _texture(ir_tg4, texture_gather, glsl_type::vec4_type, glsl_type::samplerCube_type, glsl_type::vec3_type),
                _texture(ir_tg4, texture_gather, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type),
                _texture(ir_tg4, texture_gather, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type),

                _texture(ir_tg4, texture_gather, glsl_type::vec4_type, glsl_type::samplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_tg4, texture_gather, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
                _texture(ir_tg4, texture_gather, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::samplerCube_type, glsl_type::vec3_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type, TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::samplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DShadow_type, glsl_type::vec2_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::samplerCubeShadow_type, glsl_type::vec3_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::samplerCubeArrayShadow_type, glsl_type::vec4_type),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec2_type),
                NULL);

   add_function("textureGatherOffset",
                _texture(ir_tg4, texture_gather_only, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tg4, texture_gather_only, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET),
                _texture(ir_tg4, texture_gather_only, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET),

                _texture(ir_tg4, texture_gather_only, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tg4, texture_gather_only, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),
                _texture(ir_tg4, texture_gather_only, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DShadow_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST),
                NULL);

   add_function("textureGatherOffsets",
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),
                _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | TEX_COMPONENT),

                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DShadow_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY),
                _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY),
                NULL);

   F(dFdx)
   F(dFdy)
   F(fwidth)
   F(dFdxCoarse)
   F(dFdyCoarse)
   F(fwidthCoarse)
   F(dFdxFine)
   F(dFdyFine)
   F(fwidthFine)
   F(noise1)
   F(noise2)
   F(noise3)
   F(noise4)

   IU(bitfieldExtract)
   IU(bitfieldInsert)
   IU(bitfieldReverse)
   IU(bitCount)
   IU(findLSB)
   IU(findMSB)
   F(fma)

   add_function("ldexp",
                _ldexp(glsl_type::float_type, glsl_type::int_type),
                _ldexp(glsl_type::vec2_type,  glsl_type::ivec2_type),
                _ldexp(glsl_type::vec3_type,  glsl_type::ivec3_type),
                _ldexp(glsl_type::vec4_type,  glsl_type::ivec4_type),
                NULL);

   add_function("frexp",
                _frexp(glsl_type::float_type, glsl_type::int_type),
                _frexp(glsl_type::vec2_type,  glsl_type::ivec2_type),
                _frexp(glsl_type::vec3_type,  glsl_type::ivec3_type),
                _frexp(glsl_type::vec4_type,  glsl_type::ivec4_type),
                NULL);
   add_function("uaddCarry",
                _uaddCarry(glsl_type::uint_type),
                _uaddCarry(glsl_type::uvec2_type),
                _uaddCarry(glsl_type::uvec3_type),
                _uaddCarry(glsl_type::uvec4_type),
                NULL);
   add_function("usubBorrow",
                _usubBorrow(glsl_type::uint_type),
                _usubBorrow(glsl_type::uvec2_type),
                _usubBorrow(glsl_type::uvec3_type),
                _usubBorrow(glsl_type::uvec4_type),
                NULL);
   add_function("imulExtended",
                _mulExtended(glsl_type::int_type),
                _mulExtended(glsl_type::ivec2_type),
                _mulExtended(glsl_type::ivec3_type),
                _mulExtended(glsl_type::ivec4_type),
                NULL);
   add_function("umulExtended",
                _mulExtended(glsl_type::uint_type),
                _mulExtended(glsl_type::uvec2_type),
                _mulExtended(glsl_type::uvec3_type),
                _mulExtended(glsl_type::uvec4_type),
                NULL);
   add_function("interpolateAtCentroid",
                _interpolateAtCentroid(glsl_type::float_type),
                _interpolateAtCentroid(glsl_type::vec2_type),
                _interpolateAtCentroid(glsl_type::vec3_type),
                _interpolateAtCentroid(glsl_type::vec4_type),
                NULL);
   add_function("interpolateAtOffset",
                _interpolateAtOffset(glsl_type::float_type),
                _interpolateAtOffset(glsl_type::vec2_type),
                _interpolateAtOffset(glsl_type::vec3_type),
                _interpolateAtOffset(glsl_type::vec4_type),
                NULL);
   add_function("interpolateAtSample",
                _interpolateAtSample(glsl_type::float_type),
                _interpolateAtSample(glsl_type::vec2_type),
                _interpolateAtSample(glsl_type::vec3_type),
                _interpolateAtSample(glsl_type::vec4_type),
                NULL);

   add_function("atomicCounter",
                _atomic_op("__intrinsic_atomic_read",
                           shader_atomic_counters),
                NULL);
   add_function("atomicCounterIncrement",
                _atomic_op("__intrinsic_atomic_increment",
                           shader_atomic_counters),
                NULL);
   add_function("atomicCounterDecrement",
                _atomic_op("__intrinsic_atomic_predecrement",
                           shader_atomic_counters),
                NULL);

   add_function("min3",
                _min3(glsl_type::float_type),
                _min3(glsl_type::vec2_type),
                _min3(glsl_type::vec3_type),
                _min3(glsl_type::vec4_type),

                _min3(glsl_type::int_type),
                _min3(glsl_type::ivec2_type),
                _min3(glsl_type::ivec3_type),
                _min3(glsl_type::ivec4_type),

                _min3(glsl_type::uint_type),
                _min3(glsl_type::uvec2_type),
                _min3(glsl_type::uvec3_type),
                _min3(glsl_type::uvec4_type),
                NULL);

   add_function("max3",
                _max3(glsl_type::float_type),
                _max3(glsl_type::vec2_type),
                _max3(glsl_type::vec3_type),
                _max3(glsl_type::vec4_type),

                _max3(glsl_type::int_type),
                _max3(glsl_type::ivec2_type),
                _max3(glsl_type::ivec3_type),
                _max3(glsl_type::ivec4_type),

                _max3(glsl_type::uint_type),
                _max3(glsl_type::uvec2_type),
                _max3(glsl_type::uvec3_type),
                _max3(glsl_type::uvec4_type),
                NULL);

   add_function("mid3",
                _mid3(glsl_type::float_type),
                _mid3(glsl_type::vec2_type),
                _mid3(glsl_type::vec3_type),
                _mid3(glsl_type::vec4_type),

                _mid3(glsl_type::int_type),
                _mid3(glsl_type::ivec2_type),
                _mid3(glsl_type::ivec3_type),
                _mid3(glsl_type::ivec4_type),

                _mid3(glsl_type::uint_type),
                _mid3(glsl_type::uvec2_type),
                _mid3(glsl_type::uvec3_type),
                _mid3(glsl_type::uvec4_type),
                NULL);

   add_image_functions(true);

   add_function("memoryBarrier",
                _memory_barrier(shader_image_load_store),
                NULL);

#undef F
#undef FI
#undef FIU
#undef FIUB
#undef FIU2_MIXED
}

void
builtin_builder::add_function(const char *name, ...)
{
   va_list ap;

   ir_function *f = new(mem_ctx) ir_function(name);

   va_start(ap, name);
   while (true) {
      ir_function_signature *sig = va_arg(ap, ir_function_signature *);
      if (sig == NULL)
         break;

      if (false) {
         exec_list stuff;
         stuff.push_tail(sig);
         validate_ir_tree(&stuff);
      }

      f->add_signature(sig);
   }
   va_end(ap);

   shader->symbols->add_function(f);
}

void
builtin_builder::add_image_function(const char *name,
                                    const char *intrinsic_name,
                                    unsigned num_arguments,
                                    unsigned flags)
{
   static const glsl_type *const types[] = {
      glsl_type::image1D_type,
      glsl_type::image2D_type,
      glsl_type::image3D_type,
      glsl_type::image2DRect_type,
      glsl_type::imageCube_type,
      glsl_type::imageBuffer_type,
      glsl_type::image1DArray_type,
      glsl_type::image2DArray_type,
      glsl_type::imageCubeArray_type,
      glsl_type::image2DMS_type,
      glsl_type::image2DMSArray_type,
      glsl_type::iimage1D_type,
      glsl_type::iimage2D_type,
      glsl_type::iimage3D_type,
      glsl_type::iimage2DRect_type,
      glsl_type::iimageCube_type,
      glsl_type::iimageBuffer_type,
      glsl_type::iimage1DArray_type,
      glsl_type::iimage2DArray_type,
      glsl_type::iimageCubeArray_type,
      glsl_type::iimage2DMS_type,
      glsl_type::iimage2DMSArray_type,
      glsl_type::uimage1D_type,
      glsl_type::uimage2D_type,
      glsl_type::uimage3D_type,
      glsl_type::uimage2DRect_type,
      glsl_type::uimageCube_type,
      glsl_type::uimageBuffer_type,
      glsl_type::uimage1DArray_type,
      glsl_type::uimage2DArray_type,
      glsl_type::uimageCubeArray_type,
      glsl_type::uimage2DMS_type,
      glsl_type::uimage2DMSArray_type
   };
   ir_function *f = new(mem_ctx) ir_function(name);

   for (unsigned i = 0; i < Elements(types); ++i) {
      if (types[i]->sampler_type != GLSL_TYPE_FLOAT ||
          (flags & IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE))
         f->add_signature(_image(types[i], intrinsic_name,
                                 num_arguments, flags));
   }

   shader->symbols->add_function(f);
}

void
builtin_builder::add_image_functions(bool glsl)
{
   const unsigned flags = (glsl ? IMAGE_FUNCTION_EMIT_STUB : 0);

   add_image_function(glsl ? "imageLoad" : "__intrinsic_image_load",
                      "__intrinsic_image_load", 0,
                      (flags | IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE |
                       IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE |
                       IMAGE_FUNCTION_READ_ONLY));

   add_image_function(glsl ? "imageStore" : "__intrinsic_image_store",
                      "__intrinsic_image_store", 1,
                      (flags | IMAGE_FUNCTION_RETURNS_VOID |
                       IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE |
                       IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE |
                       IMAGE_FUNCTION_WRITE_ONLY));

   add_image_function(glsl ? "imageAtomicAdd" : "__intrinsic_image_atomic_add",
                      "__intrinsic_image_atomic_add", 1, flags);

   add_image_function(glsl ? "imageAtomicMin" : "__intrinsic_image_atomic_min",
                      "__intrinsic_image_atomic_min", 1, flags);

   add_image_function(glsl ? "imageAtomicMax" : "__intrinsic_image_atomic_max",
                      "__intrinsic_image_atomic_max", 1, flags);

   add_image_function(glsl ? "imageAtomicAnd" : "__intrinsic_image_atomic_and",
                      "__intrinsic_image_atomic_and", 1, flags);

   add_image_function(glsl ? "imageAtomicOr" : "__intrinsic_image_atomic_or",
                      "__intrinsic_image_atomic_or", 1, flags);

   add_image_function(glsl ? "imageAtomicXor" : "__intrinsic_image_atomic_xor",
                      "__intrinsic_image_atomic_xor", 1, flags);

   add_image_function((glsl ? "imageAtomicExchange" :
                       "__intrinsic_image_atomic_exchange"),
                      "__intrinsic_image_atomic_exchange", 1, flags);

   add_image_function((glsl ? "imageAtomicCompSwap" :
                       "__intrinsic_image_atomic_comp_swap"),
                      "__intrinsic_image_atomic_comp_swap", 2, flags);
}

ir_variable *
builtin_builder::in_var(const glsl_type *type, const char *name)
{
   return new(mem_ctx) ir_variable(type, name, ir_var_function_in);
}

ir_variable *
builtin_builder::out_var(const glsl_type *type, const char *name)
{
   return new(mem_ctx) ir_variable(type, name, ir_var_function_out);
}

ir_constant *
builtin_builder::imm(float f, unsigned vector_elements)
{
   return new(mem_ctx) ir_constant(f, vector_elements);
}

ir_constant *
builtin_builder::imm(int i, unsigned vector_elements)
{
   return new(mem_ctx) ir_constant(i, vector_elements);
}

ir_constant *
builtin_builder::imm(unsigned u, unsigned vector_elements)
{
   return new(mem_ctx) ir_constant(u, vector_elements);
}

ir_constant *
builtin_builder::imm(const glsl_type *type, const ir_constant_data &data)
{
   return new(mem_ctx) ir_constant(type, &data);
}

ir_dereference_variable *
builtin_builder::var_ref(ir_variable *var)
{
   return new(mem_ctx) ir_dereference_variable(var);
}

ir_dereference_array *
builtin_builder::array_ref(ir_variable *var, int idx)
{
   return new(mem_ctx) ir_dereference_array(var, imm(idx));
}

/** Return an element of a matrix */
ir_swizzle *
builtin_builder::matrix_elt(ir_variable *var, int column, int row)
{
   return swizzle(array_ref(var, column), row, 1);
}

/**
 * Implementations of built-in functions:
 *  @@{
 */
ir_function_signature *
builtin_builder::new_sig(const glsl_type *return_type,
                         builtin_available_predicate avail,
                         int num_params,
                         ...)
{
   va_list ap;

   ir_function_signature *sig =
      new(mem_ctx) ir_function_signature(return_type, avail);

   exec_list plist;
   va_start(ap, num_params);
   for (int i = 0; i < num_params; i++) {
      plist.push_tail(va_arg(ap, ir_variable *));
   }
   va_end(ap);

   sig->replace_parameters(&plist);
   return sig;
}

#define MAKE_SIG(return_type, avail, ...)  \
   ir_function_signature *sig =               \
      new_sig(return_type, avail, __VA_ARGS__);      \
   ir_factory body(&sig->body, mem_ctx);             \
   sig->is_defined = true;

#define MAKE_INTRINSIC(return_type, avail, ...)      \
   ir_function_signature *sig =                      \
      new_sig(return_type, avail, __VA_ARGS__);      \
   sig->is_intrinsic = true;

ir_function_signature *
builtin_builder::unop(builtin_available_predicate avail,
                      ir_expression_operation opcode,
                      const glsl_type *return_type,
                      const glsl_type *param_type)
{
   ir_variable *x = in_var(param_type, "x");
   MAKE_SIG(return_type, avail, 1, x);
   body.emit(ret(expr(opcode, x)));
   return sig;
}

#define UNOP(NAME, OPCODE, AVAIL)               \
ir_function_signature *                         \
builtin_builder::_##NAME(const glsl_type *type) \
{                                               \
   return unop(&AVAIL, OPCODE, type, type);     \
}

ir_function_signature *
builtin_builder::binop(ir_expression_operation opcode,
                       builtin_available_predicate avail,
                       const glsl_type *return_type,
                       const glsl_type *param0_type,
                       const glsl_type *param1_type)
{
   ir_variable *x = in_var(param0_type, "x");
   ir_variable *y = in_var(param1_type, "y");
   MAKE_SIG(return_type, avail, 2, x, y);
   body.emit(ret(expr(opcode, x, y)));
   return sig;
}

#define BINOP(NAME, OPCODE, AVAIL)                                      \
ir_function_signature *                                                 \
builtin_builder::_##NAME(const glsl_type *return_type,                  \
                         const glsl_type *param0_type,                  \
                         const glsl_type *param1_type)                  \
{                                                                       \
   return binop(&AVAIL, OPCODE, return_type, param0_type, param1_type); \
}

/**
 * Angle and Trigonometry Functions @@{
 */

ir_function_signature *
builtin_builder::_radians(const glsl_type *type)
{
   ir_variable *degrees = in_var(type, "degrees");
   MAKE_SIG(type, always_available, 1, degrees);
   body.emit(ret(mul(degrees, imm(0.0174532925f))));
   return sig;
}

ir_function_signature *
builtin_builder::_degrees(const glsl_type *type)
{
   ir_variable *radians = in_var(type, "radians");
   MAKE_SIG(type, always_available, 1, radians);
   body.emit(ret(mul(radians, imm(57.29578f))));
   return sig;
}

UNOP(sin, ir_unop_sin, always_available)
UNOP(cos, ir_unop_cos, always_available)

ir_function_signature *
builtin_builder::_tan(const glsl_type *type)
{
   ir_variable *theta = in_var(type, "theta");
   MAKE_SIG(type, always_available, 1, theta);
   body.emit(ret(div(sin(theta), cos(theta))));
   return sig;
}

ir_expression *
builtin_builder::asin_expr(ir_variable *x)
{
   return mul(sign(x),
              sub(imm(M_PI_2f),
                  mul(sqrt(sub(imm(1.0f), abs(x))),
                      add(imm(M_PI_2f),
                          mul(abs(x),
                              add(imm(M_PI_4f - 1.0f),
                                  mul(abs(x),
                                      add(imm(0.086566724f),
                                          mul(abs(x), imm(-0.03102955f))))))))));
}

ir_call *
builtin_builder::call(ir_function *f, ir_variable *ret, exec_list params)
{
   exec_list actual_params;

   foreach_in_list(ir_variable, var, &params) {
      actual_params.push_tail(var_ref(var));
   }

   ir_function_signature *sig =
      f->exact_matching_signature(NULL, &actual_params);
   if (!sig)
      return NULL;

   ir_dereference_variable *deref =
      (sig->return_type->is_void() ? NULL : var_ref(ret));

   return new(mem_ctx) ir_call(sig, deref, &actual_params);
}

ir_function_signature *
builtin_builder::_asin(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, always_available, 1, x);

   body.emit(ret(asin_expr(x)));

   return sig;
}

ir_function_signature *
builtin_builder::_acos(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, always_available, 1, x);

   body.emit(ret(sub(imm(M_PI_2f), asin_expr(x))));

   return sig;
}

ir_function_signature *
builtin_builder::_atan2(const glsl_type *type)
{
   ir_variable *vec_y = in_var(type, "vec_y");
   ir_variable *vec_x = in_var(type, "vec_x");
   MAKE_SIG(type, always_available, 2, vec_y, vec_x);

   ir_variable *vec_result = body.make_temp(type, "vec_result");
   ir_variable *r = body.make_temp(glsl_type::float_type, "r");
   for (int i = 0; i < type->vector_elements; i++) {
      ir_variable *y = body.make_temp(glsl_type::float_type, "y");
      ir_variable *x = body.make_temp(glsl_type::float_type, "x");
      body.emit(assign(y, swizzle(vec_y, i, 1)));
      body.emit(assign(x, swizzle(vec_x, i, 1)));

      /* If |x| >= 1.0e-8 * |y|: */
      ir_if *outer_if =
         new(mem_ctx) ir_if(greater(abs(x), mul(imm(1.0e-8f), abs(y))));

      ir_factory outer_then(&outer_if->then_instructions, mem_ctx);

      /* Then...call atan(y/x) */
      ir_variable *y_over_x = outer_then.make_temp(glsl_type::float_type, "y_over_x");
      outer_then.emit(assign(y_over_x, div(y, x)));
      outer_then.emit(assign(r, mul(y_over_x, rsq(add(mul(y_over_x, y_over_x),
                                                      imm(1.0f))))));
      outer_then.emit(assign(r, asin_expr(r)));

      /*     ...and fix it up: */
      ir_if *inner_if = new(mem_ctx) ir_if(less(x, imm(0.0f)));
      inner_if->then_instructions.push_tail(
         if_tree(gequal(y, imm(0.0f)),
                 assign(r, add(r, imm(M_PIf))),
                 assign(r, sub(r, imm(M_PIf)))));
      outer_then.emit(inner_if);

      /* Else... */
      outer_if->else_instructions.push_tail(
         assign(r, mul(sign(y), imm(M_PI_2f))));

      body.emit(outer_if);

      body.emit(assign(vec_result, r, 1 << i));
   }
   body.emit(ret(vec_result));

   return sig;
}

ir_function_signature *
builtin_builder::_atan(const glsl_type *type)
{
   ir_variable *y_over_x = in_var(type, "y_over_x");
   MAKE_SIG(type, always_available, 1, y_over_x);

   ir_variable *t = body.make_temp(type, "t");
   body.emit(assign(t, mul(y_over_x, rsq(add(mul(y_over_x, y_over_x),
                                             imm(1.0f))))));

   body.emit(ret(asin_expr(t)));

   return sig;
}

ir_function_signature *
builtin_builder::_sinh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   /* 0.5 * (e^x - e^(-x)) */
   body.emit(ret(mul(imm(0.5f), sub(exp(x), exp(neg(x))))));

   return sig;
}

ir_function_signature *
builtin_builder::_cosh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   /* 0.5 * (e^x + e^(-x)) */
   body.emit(ret(mul(imm(0.5f), add(exp(x), exp(neg(x))))));

   return sig;
}

ir_function_signature *
builtin_builder::_tanh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   /* (e^x - e^(-x)) / (e^x + e^(-x)) */
   body.emit(ret(div(sub(exp(x), exp(neg(x))),
                     add(exp(x), exp(neg(x))))));

   return sig;
}

ir_function_signature *
builtin_builder::_asinh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   body.emit(ret(mul(sign(x), log(add(abs(x), sqrt(add(mul(x, x),
                                                       imm(1.0f))))))));
   return sig;
}

ir_function_signature *
builtin_builder::_acosh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   body.emit(ret(log(add(x, sqrt(sub(mul(x, x), imm(1.0f)))))));
   return sig;
}

ir_function_signature *
builtin_builder::_atanh(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, v130, 1, x);

   body.emit(ret(mul(imm(0.5f), log(div(add(imm(1.0f), x),
                                        sub(imm(1.0f), x))))));
   return sig;
}
/** @@} */

/**
 * Exponential Functions @@{
 */

ir_function_signature *
builtin_builder::_pow(const glsl_type *type)
{
   return binop(ir_binop_pow, always_available, type, type, type);
}

UNOP(exp,         ir_unop_exp,  always_available)
UNOP(log,         ir_unop_log,  always_available)
UNOP(exp2,        ir_unop_exp2, always_available)
UNOP(log2,        ir_unop_log2, always_available)
UNOP(sqrt,        ir_unop_sqrt, always_available)
UNOP(inversesqrt, ir_unop_rsq,  always_available)

/** @@} */

UNOP(abs,       ir_unop_abs,        always_available)
UNOP(sign,      ir_unop_sign,       always_available)
UNOP(floor,     ir_unop_floor,      always_available)
UNOP(trunc,     ir_unop_trunc,      v130)
UNOP(round,     ir_unop_round_even, always_available)
UNOP(roundEven, ir_unop_round_even, always_available)
UNOP(ceil,      ir_unop_ceil,       always_available)
UNOP(fract,     ir_unop_fract,      always_available)

ir_function_signature *
builtin_builder::_mod(const glsl_type *x_type, const glsl_type *y_type)
{
   return binop(ir_binop_mod, always_available, x_type, x_type, y_type);
}

ir_function_signature *
builtin_builder::_modf(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *i = out_var(type, "i");
   MAKE_SIG(type, v130, 2, x, i);

   ir_variable *t = body.make_temp(type, "t");
   body.emit(assign(t, expr(ir_unop_trunc, x)));
   body.emit(assign(i, t));
   body.emit(ret(sub(x, t)));

   return sig;
}

ir_function_signature *
builtin_builder::_min(builtin_available_predicate avail,
                      const glsl_type *x_type, const glsl_type *y_type)
{
   return binop(ir_binop_min, avail, x_type, x_type, y_type);
}

ir_function_signature *
builtin_builder::_max(builtin_available_predicate avail,
                      const glsl_type *x_type, const glsl_type *y_type)
{
   return binop(ir_binop_max, avail, x_type, x_type, y_type);
}

ir_function_signature *
builtin_builder::_clamp(builtin_available_predicate avail,
                        const glsl_type *val_type, const glsl_type *bound_type)
{
   ir_variable *x = in_var(val_type, "x");
   ir_variable *minVal = in_var(bound_type, "minVal");
   ir_variable *maxVal = in_var(bound_type, "maxVal");
   MAKE_SIG(val_type, avail, 3, x, minVal, maxVal);

   body.emit(ret(clamp(x, minVal, maxVal)));

   return sig;
}

ir_function_signature *
builtin_builder::_mix_lrp(const glsl_type *val_type, const glsl_type *blend_type)
{
   ir_variable *x = in_var(val_type, "x");
   ir_variable *y = in_var(val_type, "y");
   ir_variable *a = in_var(blend_type, "a");
   MAKE_SIG(val_type, always_available, 3, x, y, a);

   body.emit(ret(lrp(x, y, a)));

   return sig;
}

ir_function_signature *
builtin_builder::_mix_sel(builtin_available_predicate avail,
                          const glsl_type *val_type,
                          const glsl_type *blend_type)
{
   ir_variable *x = in_var(val_type, "x");
   ir_variable *y = in_var(val_type, "y");
   ir_variable *a = in_var(blend_type, "a");
   MAKE_SIG(val_type, avail, 3, x, y, a);

   /* csel matches the ternary operator in that a selector of true choses the
    * first argument. This differs from mix(x, y, false) which choses the
    * second argument (to remain consistent with the interpolating version of
    * mix() which takes a blend factor from 0.0 to 1.0 where 0.0 is only x.
    *
    * To handle the behavior mismatch, reverse the x and y arguments.
    */
   body.emit(ret(csel(a, y, x)));

   return sig;
}

ir_function_signature *
builtin_builder::_step(const glsl_type *edge_type, const glsl_type *x_type)
{
   ir_variable *edge = in_var(edge_type, "edge");
   ir_variable *x = in_var(x_type, "x");
   MAKE_SIG(x_type, always_available, 2, edge, x);

   ir_variable *t = body.make_temp(x_type, "t");
   if (x_type->vector_elements == 1) {
      /* Both are floats */
      body.emit(assign(t, b2f(gequal(x, edge))));
   } else if (edge_type->vector_elements == 1) {
      /* x is a vector but edge is a float */
      for (int i = 0; i < x_type->vector_elements; i++) {
         body.emit(assign(t, b2f(gequal(swizzle(x, i, 1), edge)), 1 << i));
      }
   } else {
      /* Both are vectors */
      for (int i = 0; i < x_type->vector_elements; i++) {
         body.emit(assign(t, b2f(gequal(swizzle(x, i, 1), swizzle(edge, i, 1))),
                          1 << i));
      }
   }
   body.emit(ret(t));

   return sig;
}

ir_function_signature *
builtin_builder::_smoothstep(const glsl_type *edge_type, const glsl_type *x_type)
{
   ir_variable *edge0 = in_var(edge_type, "edge0");
   ir_variable *edge1 = in_var(edge_type, "edge1");
   ir_variable *x = in_var(x_type, "x");
   MAKE_SIG(x_type, always_available, 3, edge0, edge1, x);

   /* From the GLSL 1.10 specification:
    *
    *    genType t;
    *    t = clamp((x - edge0) / (edge1 - edge0), 0, 1);
    *    return t * t * (3 - 2 * t);
    */

   ir_variable *t = body.make_temp(x_type, "t");
   body.emit(assign(t, clamp(div(sub(x, edge0), sub(edge1, edge0)),
                             imm(0.0f), imm(1.0f))));

   body.emit(ret(mul(t, mul(t, sub(imm(3.0f), mul(imm(2.0f), t))))));

   return sig;
}

ir_function_signature *
builtin_builder::_isnan(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::bvec(type->vector_elements), v130, 1, x);

   body.emit(ret(nequal(x, x)));

   return sig;
}

ir_function_signature *
builtin_builder::_isinf(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::bvec(type->vector_elements), v130, 1, x);

   ir_constant_data infinities;
   for (int i = 0; i < type->vector_elements; i++) {
      infinities.f[i] = std::numeric_limits<float>::infinity();
   }

   body.emit(ret(equal(abs(x), imm(type, infinities))));

   return sig;
}

ir_function_signature *
builtin_builder::_floatBitsToInt(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::ivec(type->vector_elements), shader_bit_encoding, 1, x);
   body.emit(ret(bitcast_f2i(x)));
   return sig;
}

ir_function_signature *
builtin_builder::_floatBitsToUint(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::uvec(type->vector_elements), shader_bit_encoding, 1, x);
   body.emit(ret(bitcast_f2u(x)));
   return sig;
}

ir_function_signature *
builtin_builder::_intBitsToFloat(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::vec(type->vector_elements), shader_bit_encoding, 1, x);
   body.emit(ret(bitcast_i2f(x)));
   return sig;
}

ir_function_signature *
builtin_builder::_uintBitsToFloat(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::vec(type->vector_elements), shader_bit_encoding, 1, x);
   body.emit(ret(bitcast_u2f(x)));
   return sig;
}

ir_function_signature *
builtin_builder::_packUnorm2x16(builtin_available_predicate avail)
{
   ir_variable *v = in_var(glsl_type::vec2_type, "v");
   MAKE_SIG(glsl_type::uint_type, avail, 1, v);
   body.emit(ret(expr(ir_unop_pack_unorm_2x16, v)));
   return sig;
}

ir_function_signature *
builtin_builder::_packSnorm2x16(builtin_available_predicate avail)
{
   ir_variable *v = in_var(glsl_type::vec2_type, "v");
   MAKE_SIG(glsl_type::uint_type, avail, 1, v);
   body.emit(ret(expr(ir_unop_pack_snorm_2x16, v)));
   return sig;
}

ir_function_signature *
builtin_builder::_packUnorm4x8(builtin_available_predicate avail)
{
   ir_variable *v = in_var(glsl_type::vec4_type, "v");
   MAKE_SIG(glsl_type::uint_type, avail, 1, v);
   body.emit(ret(expr(ir_unop_pack_unorm_4x8, v)));
   return sig;
}

ir_function_signature *
builtin_builder::_packSnorm4x8(builtin_available_predicate avail)
{
   ir_variable *v = in_var(glsl_type::vec4_type, "v");
   MAKE_SIG(glsl_type::uint_type, avail, 1, v);
   body.emit(ret(expr(ir_unop_pack_snorm_4x8, v)));
   return sig;
}

ir_function_signature *
builtin_builder::_unpackUnorm2x16(builtin_available_predicate avail)
{
   ir_variable *p = in_var(glsl_type::uint_type, "p");
   MAKE_SIG(glsl_type::vec2_type, avail, 1, p);
   body.emit(ret(expr(ir_unop_unpack_unorm_2x16, p)));
   return sig;
}

ir_function_signature *
builtin_builder::_unpackSnorm2x16(builtin_available_predicate avail)
{
   ir_variable *p = in_var(glsl_type::uint_type, "p");
   MAKE_SIG(glsl_type::vec2_type, avail, 1, p);
   body.emit(ret(expr(ir_unop_unpack_snorm_2x16, p)));
   return sig;
}


ir_function_signature *
builtin_builder::_unpackUnorm4x8(builtin_available_predicate avail)
{
   ir_variable *p = in_var(glsl_type::uint_type, "p");
   MAKE_SIG(glsl_type::vec4_type, avail, 1, p);
   body.emit(ret(expr(ir_unop_unpack_unorm_4x8, p)));
   return sig;
}

ir_function_signature *
builtin_builder::_unpackSnorm4x8(builtin_available_predicate avail)
{
   ir_variable *p = in_var(glsl_type::uint_type, "p");
   MAKE_SIG(glsl_type::vec4_type, avail, 1, p);
   body.emit(ret(expr(ir_unop_unpack_snorm_4x8, p)));
   return sig;
}

ir_function_signature *
builtin_builder::_packHalf2x16(builtin_available_predicate avail)
{
   ir_variable *v = in_var(glsl_type::vec2_type, "v");
   MAKE_SIG(glsl_type::uint_type, avail, 1, v);
   body.emit(ret(expr(ir_unop_pack_half_2x16, v)));
   return sig;
}

ir_function_signature *
builtin_builder::_unpackHalf2x16(builtin_available_predicate avail)
{
   ir_variable *p = in_var(glsl_type::uint_type, "p");
   MAKE_SIG(glsl_type::vec2_type, avail, 1, p);
   body.emit(ret(expr(ir_unop_unpack_half_2x16, p)));
   return sig;
}

ir_function_signature *
builtin_builder::_length(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(glsl_type::float_type, always_available, 1, x);

   body.emit(ret(sqrt(dot(x, x))));

   return sig;
}

ir_function_signature *
builtin_builder::_distance(const glsl_type *type)
{
   ir_variable *p0 = in_var(type, "p0");
   ir_variable *p1 = in_var(type, "p1");
   MAKE_SIG(glsl_type::float_type, always_available, 2, p0, p1);

   if (type->vector_elements == 1) {
      body.emit(ret(abs(sub(p0, p1))));
   } else {
      ir_variable *p = body.make_temp(type, "p");
      body.emit(assign(p, sub(p0, p1)));
      body.emit(ret(sqrt(dot(p, p))));
   }

   return sig;
}

ir_function_signature *
builtin_builder::_dot(const glsl_type *type)
{
   if (type->vector_elements == 1)
      return binop(ir_binop_mul, always_available, type, type, type);

   return binop(ir_binop_dot, always_available,
                glsl_type::float_type, type, type);
}

ir_function_signature *
builtin_builder::_cross(const glsl_type *type)
{
   ir_variable *a = in_var(type, "a");
   ir_variable *b = in_var(type, "b");
   MAKE_SIG(type, always_available, 2, a, b);

   int yzx = MAKE_SWIZZLE4(SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X, 0);
   int zxy = MAKE_SWIZZLE4(SWIZZLE_Z, SWIZZLE_X, SWIZZLE_Y, 0);

   body.emit(ret(sub(mul(swizzle(a, yzx, 3), swizzle(b, zxy, 3)),
                     mul(swizzle(a, zxy, 3), swizzle(b, yzx, 3)))));

   return sig;
}

ir_function_signature *
builtin_builder::_normalize(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   MAKE_SIG(type, always_available, 1, x);

   if (type->vector_elements == 1) {
      body.emit(ret(sign(x)));
   } else {
      body.emit(ret(mul(x, rsq(dot(x, x)))));
   }

   return sig;
}

ir_function_signature *
builtin_builder::_ftransform()
{
   MAKE_SIG(glsl_type::vec4_type, compatibility_vs_only, 0);

   body.emit(ret(new(mem_ctx) ir_expression(ir_binop_mul,
      glsl_type::vec4_type,
      var_ref(gl_ModelViewProjectionMatrix),
      var_ref(gl_Vertex))));

   /* FINISHME: Once the ir_expression() constructor handles type inference
    *           for matrix operations, we can simplify this to:
    *
    *    body.emit(ret(mul(gl_ModelViewProjectionMatrix, gl_Vertex)));
    */
   return sig;
}

ir_function_signature *
builtin_builder::_faceforward(const glsl_type *type)
{
   ir_variable *N = in_var(type, "N");
   ir_variable *I = in_var(type, "I");
   ir_variable *Nref = in_var(type, "Nref");
   MAKE_SIG(type, always_available, 3, N, I, Nref);

   body.emit(if_tree(less(dot(Nref, I), imm(0.0f)),
                     ret(N), ret(neg(N))));

   return sig;
}

ir_function_signature *
builtin_builder::_reflect(const glsl_type *type)
{
   ir_variable *I = in_var(type, "I");
   ir_variable *N = in_var(type, "N");
   MAKE_SIG(type, always_available, 2, I, N);

   /* I - 2 * dot(N, I) * N */
   body.emit(ret(sub(I, mul(imm(2.0f), mul(dot(N, I), N)))));

   return sig;
}

ir_function_signature *
builtin_builder::_refract(const glsl_type *type)
{
   ir_variable *I = in_var(type, "I");
   ir_variable *N = in_var(type, "N");
   ir_variable *eta = in_var(glsl_type::float_type, "eta");
   MAKE_SIG(type, always_available, 3, I, N, eta);

   ir_variable *n_dot_i = body.make_temp(glsl_type::float_type, "n_dot_i");
   body.emit(assign(n_dot_i, dot(N, I)));

   /* From the GLSL 1.10 specification:
    * k = 1.0 - eta * eta * (1.0 - dot(N, I) * dot(N, I))
    * if (k < 0.0)
    *    return genType(0.0)
    * else
    *    return eta * I - (eta * dot(N, I) + sqrt(k)) * N
    */
   ir_variable *k = body.make_temp(glsl_type::float_type, "k");
   body.emit(assign(k, sub(imm(1.0f),
                           mul(eta, mul(eta, sub(imm(1.0f),
                                                 mul(n_dot_i, n_dot_i)))))));
   body.emit(if_tree(less(k, imm(0.0f)),
                     ret(ir_constant::zero(mem_ctx, type)),
                     ret(sub(mul(eta, I),
                             mul(add(mul(eta, n_dot_i), sqrt(k)), N)))));

   return sig;
}

ir_function_signature *
builtin_builder::_matrixCompMult(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   MAKE_SIG(type, always_available, 2, x, y);

   ir_variable *z = body.make_temp(type, "z");
   for (int i = 0; i < type->matrix_columns; i++) {
      body.emit(assign(array_ref(z, i), mul(array_ref(x, i), array_ref(y, i))));
   }
   body.emit(ret(z));

   return sig;
}

ir_function_signature *
builtin_builder::_outerProduct(const glsl_type *type)
{
   ir_variable *c = in_var(glsl_type::vec(type->vector_elements), "c");
   ir_variable *r = in_var(glsl_type::vec(type->matrix_columns), "r");
   MAKE_SIG(type, v120, 2, c, r);

   ir_variable *m = body.make_temp(type, "m");
   for (int i = 0; i < type->matrix_columns; i++) {
      body.emit(assign(array_ref(m, i), mul(c, swizzle(r, i, 1))));
   }
   body.emit(ret(m));

   return sig;
}

ir_function_signature *
builtin_builder::_transpose(const glsl_type *orig_type)
{
   const glsl_type *transpose_type =
      glsl_type::get_instance(GLSL_TYPE_FLOAT,
                              orig_type->matrix_columns,
                              orig_type->vector_elements);

   ir_variable *m = in_var(orig_type, "m");
   MAKE_SIG(transpose_type, v120, 1, m);

   ir_variable *t = body.make_temp(transpose_type, "t");
   for (int i = 0; i < orig_type->matrix_columns; i++) {
      for (int j = 0; j < orig_type->vector_elements; j++) {
         body.emit(assign(array_ref(t, j),
                          matrix_elt(m, i, j),
                          1 << i));
      }
   }
   body.emit(ret(t));

   return sig;
}

ir_function_signature *
builtin_builder::_determinant_mat2()
{
   ir_variable *m = in_var(glsl_type::mat2_type, "m");
   MAKE_SIG(glsl_type::float_type, v120, 1, m);

   body.emit(ret(sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 1, 1)),
                     mul(matrix_elt(m, 1, 0), matrix_elt(m, 0, 1)))));

   return sig;
}

ir_function_signature *
builtin_builder::_determinant_mat3()
{
   ir_variable *m = in_var(glsl_type::mat3_type, "m");
   MAKE_SIG(glsl_type::float_type, v120, 1, m);

   ir_expression *f1 =
      sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 2)),
          mul(matrix_elt(m, 1, 2), matrix_elt(m, 2, 1)));

   ir_expression *f2 =
      sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 2)),
          mul(matrix_elt(m, 1, 2), matrix_elt(m, 2, 0)));

   ir_expression *f3 =
      sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 1)),
          mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 0)));

   body.emit(ret(add(sub(mul(matrix_elt(m, 0, 0), f1),
                         mul(matrix_elt(m, 0, 1), f2)),
                     mul(matrix_elt(m, 0, 2), f3))));

   return sig;
}

ir_function_signature *
builtin_builder::_determinant_mat4()
{
   ir_variable *m = in_var(glsl_type::mat4_type, "m");
   MAKE_SIG(glsl_type::float_type, v120, 1, m);

   ir_variable *SubFactor00 = body.make_temp(glsl_type::float_type, "SubFactor00");
   ir_variable *SubFactor01 = body.make_temp(glsl_type::float_type, "SubFactor01");
   ir_variable *SubFactor02 = body.make_temp(glsl_type::float_type, "SubFactor02");
   ir_variable *SubFactor03 = body.make_temp(glsl_type::float_type, "SubFactor03");
   ir_variable *SubFactor04 = body.make_temp(glsl_type::float_type, "SubFactor04");
   ir_variable *SubFactor05 = body.make_temp(glsl_type::float_type, "SubFactor05");
   ir_variable *SubFactor06 = body.make_temp(glsl_type::float_type, "SubFactor06");
   ir_variable *SubFactor07 = body.make_temp(glsl_type::float_type, "SubFactor07");
   ir_variable *SubFactor08 = body.make_temp(glsl_type::float_type, "SubFactor08");
   ir_variable *SubFactor09 = body.make_temp(glsl_type::float_type, "SubFactor09");
   ir_variable *SubFactor10 = body.make_temp(glsl_type::float_type, "SubFactor10");
   ir_variable *SubFactor11 = body.make_temp(glsl_type::float_type, "SubFactor11");
   ir_variable *SubFactor12 = body.make_temp(glsl_type::float_type, "SubFactor12");
   ir_variable *SubFactor13 = body.make_temp(glsl_type::float_type, "SubFactor13");
   ir_variable *SubFactor14 = body.make_temp(glsl_type::float_type, "SubFactor14");
   ir_variable *SubFactor15 = body.make_temp(glsl_type::float_type, "SubFactor15");
   ir_variable *SubFactor16 = body.make_temp(glsl_type::float_type, "SubFactor16");
   ir_variable *SubFactor17 = body.make_temp(glsl_type::float_type, "SubFactor17");
   ir_variable *SubFactor18 = body.make_temp(glsl_type::float_type, "SubFactor18");

   body.emit(assign(SubFactor00, sub(mul(matrix_elt(m, 2, 2), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 2), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor01, sub(mul(matrix_elt(m, 2, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor02, sub(mul(matrix_elt(m, 2, 1), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 2, 2)))));
   body.emit(assign(SubFactor03, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor04, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 2)))));
   body.emit(assign(SubFactor05, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 1)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 1)))));
   body.emit(assign(SubFactor06, sub(mul(matrix_elt(m, 1, 2), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 2), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor07, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor08, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor09, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor10, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor11, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor12, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 1)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 1)))));
   body.emit(assign(SubFactor13, sub(mul(matrix_elt(m, 1, 2), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 2), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor14, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor15, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 2)), mul(matrix_elt(m, 2, 1), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor16, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor17, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 2)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor18, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 1)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 1)))));

   ir_variable *adj_0 = body.make_temp(glsl_type::vec4_type, "adj_0");

   body.emit(assign(adj_0,
                    add(sub(mul(matrix_elt(m, 1, 1), SubFactor00),
                            mul(matrix_elt(m, 1, 2), SubFactor01)),
                        mul(matrix_elt(m, 1, 3), SubFactor02)),
                    WRITEMASK_X));
   body.emit(assign(adj_0, neg(
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor00),
                            mul(matrix_elt(m, 1, 2), SubFactor03)),
                        mul(matrix_elt(m, 1, 3), SubFactor04))),
                    WRITEMASK_Y));
   body.emit(assign(adj_0,
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor01),
                            mul(matrix_elt(m, 1, 1), SubFactor03)),
                        mul(matrix_elt(m, 1, 3), SubFactor05)),
                    WRITEMASK_Z));
   body.emit(assign(adj_0, neg(
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor02),
                            mul(matrix_elt(m, 1, 1), SubFactor04)),
                        mul(matrix_elt(m, 1, 2), SubFactor05))),
                    WRITEMASK_W));

   body.emit(ret(dot(array_ref(m, 0), adj_0)));

   return sig;
}

ir_function_signature *
builtin_builder::_inverse_mat2()
{
   ir_variable *m = in_var(glsl_type::mat2_type, "m");
   MAKE_SIG(glsl_type::mat2_type, v120, 1, m);

   ir_variable *adj = body.make_temp(glsl_type::mat2_type, "adj");
   body.emit(assign(array_ref(adj, 0), matrix_elt(m, 1, 1), 1 << 0));
   body.emit(assign(array_ref(adj, 0), neg(matrix_elt(m, 0, 1)), 1 << 1));
   body.emit(assign(array_ref(adj, 1), neg(matrix_elt(m, 1, 0)), 1 << 0));
   body.emit(assign(array_ref(adj, 1), matrix_elt(m, 0, 0), 1 << 1));

   ir_expression *det =
      sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 1, 1)),
          mul(matrix_elt(m, 1, 0), matrix_elt(m, 0, 1)));

   body.emit(ret(div(adj, det)));
   return sig;
}

ir_function_signature *
builtin_builder::_inverse_mat3()
{
   ir_variable *m = in_var(glsl_type::mat3_type, "m");
   MAKE_SIG(glsl_type::mat3_type, v120, 1, m);

   ir_variable *f11_22_21_12 = body.make_temp(glsl_type::float_type, "f11_22_21_12");
   ir_variable *f10_22_20_12 = body.make_temp(glsl_type::float_type, "f10_22_20_12");
   ir_variable *f10_21_20_11 = body.make_temp(glsl_type::float_type, "f10_21_20_11");

   body.emit(assign(f11_22_21_12,
                    sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 2)),
                        mul(matrix_elt(m, 2, 1), matrix_elt(m, 1, 2)))));
   body.emit(assign(f10_22_20_12,
                    sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 2)),
                        mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 2)))));
   body.emit(assign(f10_21_20_11,
                    sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 1)),
                        mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 1)))));

   ir_variable *adj = body.make_temp(glsl_type::mat3_type, "adj");
   body.emit(assign(array_ref(adj, 0), f11_22_21_12, WRITEMASK_X));
   body.emit(assign(array_ref(adj, 1), neg(f10_22_20_12), WRITEMASK_X));
   body.emit(assign(array_ref(adj, 2), f10_21_20_11, WRITEMASK_X));

   body.emit(assign(array_ref(adj, 0), neg(
                    sub(mul(matrix_elt(m, 0, 1), matrix_elt(m, 2, 2)),
                        mul(matrix_elt(m, 2, 1), matrix_elt(m, 0, 2)))),
                    WRITEMASK_Y));
   body.emit(assign(array_ref(adj, 1),
                    sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 2, 2)),
                        mul(matrix_elt(m, 2, 0), matrix_elt(m, 0, 2))),
                    WRITEMASK_Y));
   body.emit(assign(array_ref(adj, 2), neg(
                    sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 2, 1)),
                        mul(matrix_elt(m, 2, 0), matrix_elt(m, 0, 1)))),
                    WRITEMASK_Y));

   body.emit(assign(array_ref(adj, 0),
                    sub(mul(matrix_elt(m, 0, 1), matrix_elt(m, 1, 2)),
                        mul(matrix_elt(m, 1, 1), matrix_elt(m, 0, 2))),
                    WRITEMASK_Z));
   body.emit(assign(array_ref(adj, 1), neg(
                    sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 1, 2)),
                        mul(matrix_elt(m, 1, 0), matrix_elt(m, 0, 2)))),
                    WRITEMASK_Z));
   body.emit(assign(array_ref(adj, 2),
                    sub(mul(matrix_elt(m, 0, 0), matrix_elt(m, 1, 1)),
                        mul(matrix_elt(m, 1, 0), matrix_elt(m, 0, 1))),
                    WRITEMASK_Z));

   ir_expression *det =
      add(sub(mul(matrix_elt(m, 0, 0), f11_22_21_12),
              mul(matrix_elt(m, 0, 1), f10_22_20_12)),
          mul(matrix_elt(m, 0, 2), f10_21_20_11));

   body.emit(ret(div(adj, det)));

   return sig;
}

ir_function_signature *
builtin_builder::_inverse_mat4()
{
   ir_variable *m = in_var(glsl_type::mat4_type, "m");
   MAKE_SIG(glsl_type::mat4_type, v120, 1, m);

   ir_variable *SubFactor00 = body.make_temp(glsl_type::float_type, "SubFactor00");
   ir_variable *SubFactor01 = body.make_temp(glsl_type::float_type, "SubFactor01");
   ir_variable *SubFactor02 = body.make_temp(glsl_type::float_type, "SubFactor02");
   ir_variable *SubFactor03 = body.make_temp(glsl_type::float_type, "SubFactor03");
   ir_variable *SubFactor04 = body.make_temp(glsl_type::float_type, "SubFactor04");
   ir_variable *SubFactor05 = body.make_temp(glsl_type::float_type, "SubFactor05");
   ir_variable *SubFactor06 = body.make_temp(glsl_type::float_type, "SubFactor06");
   ir_variable *SubFactor07 = body.make_temp(glsl_type::float_type, "SubFactor07");
   ir_variable *SubFactor08 = body.make_temp(glsl_type::float_type, "SubFactor08");
   ir_variable *SubFactor09 = body.make_temp(glsl_type::float_type, "SubFactor09");
   ir_variable *SubFactor10 = body.make_temp(glsl_type::float_type, "SubFactor10");
   ir_variable *SubFactor11 = body.make_temp(glsl_type::float_type, "SubFactor11");
   ir_variable *SubFactor12 = body.make_temp(glsl_type::float_type, "SubFactor12");
   ir_variable *SubFactor13 = body.make_temp(glsl_type::float_type, "SubFactor13");
   ir_variable *SubFactor14 = body.make_temp(glsl_type::float_type, "SubFactor14");
   ir_variable *SubFactor15 = body.make_temp(glsl_type::float_type, "SubFactor15");
   ir_variable *SubFactor16 = body.make_temp(glsl_type::float_type, "SubFactor16");
   ir_variable *SubFactor17 = body.make_temp(glsl_type::float_type, "SubFactor17");
   ir_variable *SubFactor18 = body.make_temp(glsl_type::float_type, "SubFactor18");

   body.emit(assign(SubFactor00, sub(mul(matrix_elt(m, 2, 2), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 2), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor01, sub(mul(matrix_elt(m, 2, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor02, sub(mul(matrix_elt(m, 2, 1), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 2, 2)))));
   body.emit(assign(SubFactor03, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 3)))));
   body.emit(assign(SubFactor04, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 2)))));
   body.emit(assign(SubFactor05, sub(mul(matrix_elt(m, 2, 0), matrix_elt(m, 3, 1)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 2, 1)))));
   body.emit(assign(SubFactor06, sub(mul(matrix_elt(m, 1, 2), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 2), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor07, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor08, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor09, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor10, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 2)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor11, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 3, 3)), mul(matrix_elt(m, 3, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor12, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 3, 1)), mul(matrix_elt(m, 3, 0), matrix_elt(m, 1, 1)))));
   body.emit(assign(SubFactor13, sub(mul(matrix_elt(m, 1, 2), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 2), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor14, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 1), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor15, sub(mul(matrix_elt(m, 1, 1), matrix_elt(m, 2, 2)), mul(matrix_elt(m, 2, 1), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor16, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 3)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 3)))));
   body.emit(assign(SubFactor17, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 2)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 2)))));
   body.emit(assign(SubFactor18, sub(mul(matrix_elt(m, 1, 0), matrix_elt(m, 2, 1)), mul(matrix_elt(m, 2, 0), matrix_elt(m, 1, 1)))));

   ir_variable *adj = body.make_temp(glsl_type::mat4_type, "adj");
   body.emit(assign(array_ref(adj, 0),
                    add(sub(mul(matrix_elt(m, 1, 1), SubFactor00),
                            mul(matrix_elt(m, 1, 2), SubFactor01)),
                        mul(matrix_elt(m, 1, 3), SubFactor02)),
                    WRITEMASK_X));
   body.emit(assign(array_ref(adj, 1), neg(
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor00),
                            mul(matrix_elt(m, 1, 2), SubFactor03)),
                        mul(matrix_elt(m, 1, 3), SubFactor04))),
                    WRITEMASK_X));
   body.emit(assign(array_ref(adj, 2),
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor01),
                            mul(matrix_elt(m, 1, 1), SubFactor03)),
                        mul(matrix_elt(m, 1, 3), SubFactor05)),
                    WRITEMASK_X));
   body.emit(assign(array_ref(adj, 3), neg(
                    add(sub(mul(matrix_elt(m, 1, 0), SubFactor02),
                            mul(matrix_elt(m, 1, 1), SubFactor04)),
                        mul(matrix_elt(m, 1, 2), SubFactor05))),
                    WRITEMASK_X));

   body.emit(assign(array_ref(adj, 0), neg(
                    add(sub(mul(matrix_elt(m, 0, 1), SubFactor00),
                            mul(matrix_elt(m, 0, 2), SubFactor01)),
                        mul(matrix_elt(m, 0, 3), SubFactor02))),
                    WRITEMASK_Y));
   body.emit(assign(array_ref(adj, 1),
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor00),
                            mul(matrix_elt(m, 0, 2), SubFactor03)),
                        mul(matrix_elt(m, 0, 3), SubFactor04)),
                    WRITEMASK_Y));
   body.emit(assign(array_ref(adj, 2), neg(
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor01),
                            mul(matrix_elt(m, 0, 1), SubFactor03)),
                        mul(matrix_elt(m, 0, 3), SubFactor05))),
                    WRITEMASK_Y));
   body.emit(assign(array_ref(adj, 3),
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor02),
                            mul(matrix_elt(m, 0, 1), SubFactor04)),
                        mul(matrix_elt(m, 0, 2), SubFactor05)),
                    WRITEMASK_Y));

   body.emit(assign(array_ref(adj, 0),
                    add(sub(mul(matrix_elt(m, 0, 1), SubFactor06),
                            mul(matrix_elt(m, 0, 2), SubFactor07)),
                        mul(matrix_elt(m, 0, 3), SubFactor08)),
                    WRITEMASK_Z));
   body.emit(assign(array_ref(adj, 1), neg(
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor06),
                            mul(matrix_elt(m, 0, 2), SubFactor09)),
                        mul(matrix_elt(m, 0, 3), SubFactor10))),
                    WRITEMASK_Z));
   body.emit(assign(array_ref(adj, 2),
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor11),
                            mul(matrix_elt(m, 0, 1), SubFactor09)),
                        mul(matrix_elt(m, 0, 3), SubFactor12)),
                    WRITEMASK_Z));
   body.emit(assign(array_ref(adj, 3), neg(
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor08),
                            mul(matrix_elt(m, 0, 1), SubFactor10)),
                        mul(matrix_elt(m, 0, 2), SubFactor12))),
                    WRITEMASK_Z));

   body.emit(assign(array_ref(adj, 0), neg(
                    add(sub(mul(matrix_elt(m, 0, 1), SubFactor13),
                            mul(matrix_elt(m, 0, 2), SubFactor14)),
                        mul(matrix_elt(m, 0, 3), SubFactor15))),
                    WRITEMASK_W));
   body.emit(assign(array_ref(adj, 1),
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor13),
                            mul(matrix_elt(m, 0, 2), SubFactor16)),
                        mul(matrix_elt(m, 0, 3), SubFactor17)),
                    WRITEMASK_W));
   body.emit(assign(array_ref(adj, 2), neg(
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor14),
                            mul(matrix_elt(m, 0, 1), SubFactor16)),
                        mul(matrix_elt(m, 0, 3), SubFactor18))),
                    WRITEMASK_W));
   body.emit(assign(array_ref(adj, 3),
                    add(sub(mul(matrix_elt(m, 0, 0), SubFactor15),
                            mul(matrix_elt(m, 0, 1), SubFactor17)),
                        mul(matrix_elt(m, 0, 2), SubFactor18)),
                    WRITEMASK_W));

   ir_expression *det =
      add(mul(matrix_elt(m, 0, 0), matrix_elt(adj, 0, 0)),
          add(mul(matrix_elt(m, 0, 1), matrix_elt(adj, 1, 0)),
              add(mul(matrix_elt(m, 0, 2), matrix_elt(adj, 2, 0)),
                  mul(matrix_elt(m, 0, 3), matrix_elt(adj, 3, 0)))));

   body.emit(ret(div(adj, det)));

   return sig;
}


ir_function_signature *
builtin_builder::_lessThan(builtin_available_predicate avail,
                           const glsl_type *type)
{
   return binop(ir_binop_less, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_lessThanEqual(builtin_available_predicate avail,
                                const glsl_type *type)
{
   return binop(ir_binop_lequal, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_greaterThan(builtin_available_predicate avail,
                              const glsl_type *type)
{
   return binop(ir_binop_greater, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_greaterThanEqual(builtin_available_predicate avail,
                                   const glsl_type *type)
{
   return binop(ir_binop_gequal, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_equal(builtin_available_predicate avail,
                        const glsl_type *type)
{
   return binop(ir_binop_equal, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_notEqual(builtin_available_predicate avail,
                           const glsl_type *type)
{
   return binop(ir_binop_nequal, avail,
                glsl_type::bvec(type->vector_elements), type, type);
}

ir_function_signature *
builtin_builder::_any(const glsl_type *type)
{
   return unop(always_available, ir_unop_any, glsl_type::bool_type, type);
}

ir_function_signature *
builtin_builder::_all(const glsl_type *type)
{
   ir_variable *v = in_var(type, "v");
   MAKE_SIG(glsl_type::bool_type, always_available, 1, v);

   switch (type->vector_elements) {
   case 2:
      body.emit(ret(logic_and(swizzle_x(v), swizzle_y(v))));
      break;
   case 3:
      body.emit(ret(logic_and(logic_and(swizzle_x(v), swizzle_y(v)),
                              swizzle_z(v))));
      break;
   case 4:
      body.emit(ret(logic_and(logic_and(logic_and(swizzle_x(v), swizzle_y(v)),
                                        swizzle_z(v)),
                              swizzle_w(v))));
      break;
   }

   return sig;
}

UNOP(not, ir_unop_logic_not, always_available)

static bool
has_lod(const glsl_type *sampler_type)
{
   assert(sampler_type->is_sampler());

   switch (sampler_type->sampler_dimensionality) {
   case GLSL_SAMPLER_DIM_RECT:
   case GLSL_SAMPLER_DIM_BUF:
   case GLSL_SAMPLER_DIM_MS:
      return false;
   default:
      return true;
   }
}

ir_function_signature *
builtin_builder::_textureSize(builtin_available_predicate avail,
                              const glsl_type *return_type,
                              const glsl_type *sampler_type)
{
   ir_variable *s = in_var(sampler_type, "sampler");
   /* The sampler always exists; add optional lod later. */
   MAKE_SIG(return_type, avail, 1, s);

   ir_texture *tex = new(mem_ctx) ir_texture(ir_txs);
   tex->set_sampler(new(mem_ctx) ir_dereference_variable(s), return_type);

   if (has_lod(sampler_type)) {
      ir_variable *lod = in_var(glsl_type::int_type, "lod");
      sig->parameters.push_tail(lod);
      tex->lod_info.lod = var_ref(lod);
   } else {
      tex->lod_info.lod = imm(0u);
   }

   body.emit(ret(tex));

   return sig;
}

ir_function_signature *
builtin_builder::_texture(ir_texture_opcode opcode,
                          builtin_available_predicate avail,
                          const glsl_type *return_type,
                          const glsl_type *sampler_type,
                          const glsl_type *coord_type,
                          int flags)
{
   ir_variable *s = in_var(sampler_type, "sampler");
   ir_variable *P = in_var(coord_type, "P");
   /* The sampler and coordinate always exist; add optional parameters later. */
   MAKE_SIG(return_type, avail, 2, s, P);

   ir_texture *tex = new(mem_ctx) ir_texture(opcode);
   tex->set_sampler(var_ref(s), return_type);

   const int coord_size = sampler_type->coordinate_components();

   if (coord_size == coord_type->vector_elements) {
      tex->coordinate = var_ref(P);
   } else {
      /* The incoming coordinate also has the projector or shadow comparitor,
       * so we need to swizzle those away.
       */
      tex->coordinate = swizzle_for_size(P, coord_size);
   }

   /* The projector is always in the last component. */
   if (flags & TEX_PROJECT)
      tex->projector = swizzle(P, coord_type->vector_elements - 1, 1);

   if (sampler_type->sampler_shadow) {
      if (opcode == ir_tg4) {
         /* gather has refz as a separate parameter, immediately after the
          * coordinate
          */
         ir_variable *refz = in_var(glsl_type::float_type, "refz");
         sig->parameters.push_tail(refz);
         tex->shadow_comparitor = var_ref(refz);
      } else {
         /* The shadow comparitor is normally in the Z component, but a few types
          * have sufficiently large coordinates that it's in W.
          */
         tex->shadow_comparitor = swizzle(P, MAX2(coord_size, SWIZZLE_Z), 1);
      }
   }

   if (opcode == ir_txl) {
      ir_variable *lod = in_var(glsl_type::float_type, "lod");
      sig->parameters.push_tail(lod);
      tex->lod_info.lod = var_ref(lod);
   } else if (opcode == ir_txd) {
      int grad_size = coord_size - (sampler_type->sampler_array ? 1 : 0);
      ir_variable *dPdx = in_var(glsl_type::vec(grad_size), "dPdx");
      ir_variable *dPdy = in_var(glsl_type::vec(grad_size), "dPdy");
      sig->parameters.push_tail(dPdx);
      sig->parameters.push_tail(dPdy);
      tex->lod_info.grad.dPdx = var_ref(dPdx);
      tex->lod_info.grad.dPdy = var_ref(dPdy);
   }

   if (flags & (TEX_OFFSET | TEX_OFFSET_NONCONST)) {
      int offset_size = coord_size - (sampler_type->sampler_array ? 1 : 0);
      ir_variable *offset =
         new(mem_ctx) ir_variable(glsl_type::ivec(offset_size), "offset",
                                  (flags & TEX_OFFSET) ? ir_var_const_in : ir_var_function_in);
      sig->parameters.push_tail(offset);
      tex->offset = var_ref(offset);
   }

   if (flags & TEX_OFFSET_ARRAY) {
      ir_variable *offsets =
         new(mem_ctx) ir_variable(glsl_type::get_array_instance(glsl_type::ivec2_type, 4),
                                  "offsets", ir_var_const_in);
      sig->parameters.push_tail(offsets);
      tex->offset = var_ref(offsets);
   }

   if (opcode == ir_tg4) {
      if (flags & TEX_COMPONENT) {
         ir_variable *component =
            new(mem_ctx) ir_variable(glsl_type::int_type, "comp", ir_var_const_in);
         sig->parameters.push_tail(component);
         tex->lod_info.component = var_ref(component);
      }
      else {
         tex->lod_info.component = imm(0);
      }
   }

   /* The "bias" parameter comes /after/ the "offset" parameter, which is
    * inconsistent with both textureLodOffset and textureGradOffset.
    */
   if (opcode == ir_txb) {
      ir_variable *bias = in_var(glsl_type::float_type, "bias");
      sig->parameters.push_tail(bias);
      tex->lod_info.bias = var_ref(bias);
   }

   body.emit(ret(tex));

   return sig;
}

ir_function_signature *
builtin_builder::_textureCubeArrayShadow()
{
   ir_variable *s = in_var(glsl_type::samplerCubeArrayShadow_type, "sampler");
   ir_variable *P = in_var(glsl_type::vec4_type, "P");
   ir_variable *compare = in_var(glsl_type::float_type, "compare");
   MAKE_SIG(glsl_type::float_type, texture_cube_map_array, 3, s, P, compare);

   ir_texture *tex = new(mem_ctx) ir_texture(ir_tex);
   tex->set_sampler(var_ref(s), glsl_type::float_type);

   tex->coordinate = var_ref(P);
   tex->shadow_comparitor = var_ref(compare);

   body.emit(ret(tex));

   return sig;
}

ir_function_signature *
builtin_builder::_texelFetch(builtin_available_predicate avail,
                             const glsl_type *return_type,
                             const glsl_type *sampler_type,
                             const glsl_type *coord_type,
                             const glsl_type *offset_type)
{
   ir_variable *s = in_var(sampler_type, "sampler");
   ir_variable *P = in_var(coord_type, "P");
   /* The sampler and coordinate always exist; add optional parameters later. */
   MAKE_SIG(return_type, avail, 2, s, P);

   ir_texture *tex = new(mem_ctx) ir_texture(ir_txf);
   tex->coordinate = var_ref(P);
   tex->set_sampler(var_ref(s), return_type);

   if (sampler_type->sampler_dimensionality == GLSL_SAMPLER_DIM_MS) {
      ir_variable *sample = in_var(glsl_type::int_type, "sample");
      sig->parameters.push_tail(sample);
      tex->lod_info.sample_index = var_ref(sample);
      tex->op = ir_txf_ms;
   } else if (has_lod(sampler_type)) {
      ir_variable *lod = in_var(glsl_type::int_type, "lod");
      sig->parameters.push_tail(lod);
      tex->lod_info.lod = var_ref(lod);
   } else {
      tex->lod_info.lod = imm(0u);
   }

   if (offset_type != NULL) {
      ir_variable *offset =
         new(mem_ctx) ir_variable(offset_type, "offset", ir_var_const_in);
      sig->parameters.push_tail(offset);
      tex->offset = var_ref(offset);
   }

   body.emit(ret(tex));

   return sig;
}

ir_function_signature *
builtin_builder::_EmitVertex()
{
   MAKE_SIG(glsl_type::void_type, gs_only, 0);

   ir_rvalue *stream = new(mem_ctx) ir_constant(0, 1);
   body.emit(new(mem_ctx) ir_emit_vertex(stream));

   return sig;
}

ir_function_signature *
builtin_builder::_EmitStreamVertex(builtin_available_predicate avail,
                                   const glsl_type *stream_type)
{
   /* Section 8.12 (Geometry Shader Functions) of the GLSL 4.0 spec says:
    *
    *     "Emit the current values of output variables to the current output
    *     primitive on stream stream. The argument to stream must be a constant
    *     integral expression."
    */
   ir_variable *stream =
      new(mem_ctx) ir_variable(stream_type, "stream", ir_var_const_in);

   MAKE_SIG(glsl_type::void_type, avail, 1, stream);

   body.emit(new(mem_ctx) ir_emit_vertex(var_ref(stream)));

   return sig;
}

ir_function_signature *
builtin_builder::_EndPrimitive()
{
   MAKE_SIG(glsl_type::void_type, gs_only, 0);

   ir_rvalue *stream = new(mem_ctx) ir_constant(0, 1);
   body.emit(new(mem_ctx) ir_end_primitive(stream));

   return sig;
}

ir_function_signature *
builtin_builder::_EndStreamPrimitive(builtin_available_predicate avail,
                                     const glsl_type *stream_type)
{
   /* Section 8.12 (Geometry Shader Functions) of the GLSL 4.0 spec says:
    *
    *     "Completes the current output primitive on stream stream and starts
    *     a new one. The argument to stream must be a constant integral
    *     expression."
    */
   ir_variable *stream =
      new(mem_ctx) ir_variable(stream_type, "stream", ir_var_const_in);

   MAKE_SIG(glsl_type::void_type, avail, 1, stream);

   body.emit(new(mem_ctx) ir_end_primitive(var_ref(stream)));

   return sig;
}

ir_function_signature *
builtin_builder::_textureQueryLod(const glsl_type *sampler_type,
                                  const glsl_type *coord_type)
{
   ir_variable *s = in_var(sampler_type, "sampler");
   ir_variable *coord = in_var(coord_type, "coord");
   /* The sampler and coordinate always exist; add optional parameters later. */
   MAKE_SIG(glsl_type::vec2_type, texture_query_lod, 2, s, coord);

   ir_texture *tex = new(mem_ctx) ir_texture(ir_lod);
   tex->coordinate = var_ref(coord);
   tex->set_sampler(var_ref(s), glsl_type::vec2_type);

   body.emit(ret(tex));

   return sig;
}

ir_function_signature *
builtin_builder::_textureQueryLevels(const glsl_type *sampler_type)
{
   ir_variable *s = in_var(sampler_type, "sampler");
   const glsl_type *return_type = glsl_type::int_type;
   MAKE_SIG(return_type, texture_query_levels, 1, s);

   ir_texture *tex = new(mem_ctx) ir_texture(ir_query_levels);
   tex->set_sampler(var_ref(s), return_type);

   body.emit(ret(tex));

   return sig;
}

UNOP(dFdx, ir_unop_dFdx, fs_oes_derivatives)
UNOP(dFdxCoarse, ir_unop_dFdx_coarse, fs_derivative_control)
UNOP(dFdxFine, ir_unop_dFdx_fine, fs_derivative_control)
UNOP(dFdy, ir_unop_dFdy, fs_oes_derivatives)
UNOP(dFdyCoarse, ir_unop_dFdy_coarse, fs_derivative_control)
UNOP(dFdyFine, ir_unop_dFdy_fine, fs_derivative_control)

ir_function_signature *
builtin_builder::_fwidth(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(type, fs_oes_derivatives, 1, p);

   body.emit(ret(add(abs(expr(ir_unop_dFdx, p)), abs(expr(ir_unop_dFdy, p)))));

   return sig;
}

ir_function_signature *
builtin_builder::_fwidthCoarse(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(type, fs_derivative_control, 1, p);

   body.emit(ret(add(abs(expr(ir_unop_dFdx_coarse, p)),
                     abs(expr(ir_unop_dFdy_coarse, p)))));

   return sig;
}

ir_function_signature *
builtin_builder::_fwidthFine(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(type, fs_derivative_control, 1, p);

   body.emit(ret(add(abs(expr(ir_unop_dFdx_fine, p)),
                     abs(expr(ir_unop_dFdy_fine, p)))));

   return sig;
}

ir_function_signature *
builtin_builder::_noise1(const glsl_type *type)
{
   return unop(v110, ir_unop_noise, glsl_type::float_type, type);
}

ir_function_signature *
builtin_builder::_noise2(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(glsl_type::vec2_type, v110, 1, p);

   ir_constant_data b_offset;
   b_offset.f[0] = 601.0f;
   b_offset.f[1] = 313.0f;
   b_offset.f[2] = 29.0f;
   b_offset.f[3] = 277.0f;

   ir_variable *a = body.make_temp(glsl_type::float_type, "a");
   ir_variable *b = body.make_temp(glsl_type::float_type, "b");
   ir_variable *t = body.make_temp(glsl_type::vec2_type,  "t");
   body.emit(assign(a, expr(ir_unop_noise, p)));
   body.emit(assign(b, expr(ir_unop_noise, add(p, imm(type, b_offset)))));
   body.emit(assign(t, a, WRITEMASK_X));
   body.emit(assign(t, b, WRITEMASK_Y));
   body.emit(ret(t));

   return sig;
}

ir_function_signature *
builtin_builder::_noise3(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(glsl_type::vec3_type, v110, 1, p);

   ir_constant_data b_offset;
   b_offset.f[0] = 601.0f;
   b_offset.f[1] = 313.0f;
   b_offset.f[2] = 29.0f;
   b_offset.f[3] = 277.0f;

   ir_constant_data c_offset;
   c_offset.f[0] = 1559.0f;
   c_offset.f[1] = 113.0f;
   c_offset.f[2] = 1861.0f;
   c_offset.f[3] = 797.0f;

   ir_variable *a = body.make_temp(glsl_type::float_type, "a");
   ir_variable *b = body.make_temp(glsl_type::float_type, "b");
   ir_variable *c = body.make_temp(glsl_type::float_type, "c");
   ir_variable *t = body.make_temp(glsl_type::vec3_type,  "t");
   body.emit(assign(a, expr(ir_unop_noise, p)));
   body.emit(assign(b, expr(ir_unop_noise, add(p, imm(type, b_offset)))));
   body.emit(assign(c, expr(ir_unop_noise, add(p, imm(type, c_offset)))));
   body.emit(assign(t, a, WRITEMASK_X));
   body.emit(assign(t, b, WRITEMASK_Y));
   body.emit(assign(t, c, WRITEMASK_Z));
   body.emit(ret(t));

   return sig;
}

ir_function_signature *
builtin_builder::_noise4(const glsl_type *type)
{
   ir_variable *p = in_var(type, "p");
   MAKE_SIG(glsl_type::vec4_type, v110, 1, p);

   ir_variable *_p = body.make_temp(type, "_p");

   ir_constant_data p_offset;
   p_offset.f[0] = 1559.0f;
   p_offset.f[1] = 113.0f;
   p_offset.f[2] = 1861.0f;
   p_offset.f[3] = 797.0f;

   body.emit(assign(_p, add(p, imm(type, p_offset))));

   ir_constant_data offset;
   offset.f[0] = 601.0f;
   offset.f[1] = 313.0f;
   offset.f[2] = 29.0f;
   offset.f[3] = 277.0f;

   ir_variable *a = body.make_temp(glsl_type::float_type, "a");
   ir_variable *b = body.make_temp(glsl_type::float_type, "b");
   ir_variable *c = body.make_temp(glsl_type::float_type, "c");
   ir_variable *d = body.make_temp(glsl_type::float_type, "d");
   ir_variable *t = body.make_temp(glsl_type::vec4_type,  "t");
   body.emit(assign(a, expr(ir_unop_noise, p)));
   body.emit(assign(b, expr(ir_unop_noise, add(p, imm(type, offset)))));
   body.emit(assign(c, expr(ir_unop_noise, _p)));
   body.emit(assign(d, expr(ir_unop_noise, add(_p, imm(type, offset)))));
   body.emit(assign(t, a, WRITEMASK_X));
   body.emit(assign(t, b, WRITEMASK_Y));
   body.emit(assign(t, c, WRITEMASK_Z));
   body.emit(assign(t, d, WRITEMASK_W));
   body.emit(ret(t));

   return sig;
}

ir_function_signature *
builtin_builder::_bitfieldExtract(const glsl_type *type)
{
   ir_variable *value  = in_var(type, "value");
   ir_variable *offset = in_var(glsl_type::int_type, "offset");
   ir_variable *bits   = in_var(glsl_type::int_type, "bits");
   MAKE_SIG(type, gpu_shader5, 3, value, offset, bits);

   body.emit(ret(expr(ir_triop_bitfield_extract, value, offset, bits)));

   return sig;
}

ir_function_signature *
builtin_builder::_bitfieldInsert(const glsl_type *type)
{
   ir_variable *base   = in_var(type, "base");
   ir_variable *insert = in_var(type, "insert");
   ir_variable *offset = in_var(glsl_type::int_type, "offset");
   ir_variable *bits   = in_var(glsl_type::int_type, "bits");
   MAKE_SIG(type, gpu_shader5, 4, base, insert, offset, bits);

   body.emit(ret(bitfield_insert(base, insert, offset, bits)));

   return sig;
}

UNOP(bitfieldReverse, ir_unop_bitfield_reverse, gpu_shader5)

ir_function_signature *
builtin_builder::_bitCount(const glsl_type *type)
{
   return unop(gpu_shader5, ir_unop_bit_count,
               glsl_type::ivec(type->vector_elements), type);
}

ir_function_signature *
builtin_builder::_findLSB(const glsl_type *type)
{
   return unop(gpu_shader5, ir_unop_find_lsb,
               glsl_type::ivec(type->vector_elements), type);
}

ir_function_signature *
builtin_builder::_findMSB(const glsl_type *type)
{
   return unop(gpu_shader5, ir_unop_find_msb,
               glsl_type::ivec(type->vector_elements), type);
}

ir_function_signature *
builtin_builder::_fma(const glsl_type *type)
{
   ir_variable *a = in_var(type, "a");
   ir_variable *b = in_var(type, "b");
   ir_variable *c = in_var(type, "c");
   MAKE_SIG(type, gpu_shader5, 3, a, b, c);

   body.emit(ret(ir_builder::fma(a, b, c)));

   return sig;
}

ir_function_signature *
builtin_builder::_ldexp(const glsl_type *x_type, const glsl_type *exp_type)
{
   return binop(ir_binop_ldexp, gpu_shader5, x_type, x_type, exp_type);
}

ir_function_signature *
builtin_builder::_frexp(const glsl_type *x_type, const glsl_type *exp_type)
{
   ir_variable *x = in_var(x_type, "x");
   ir_variable *exponent = out_var(exp_type, "exp");
   MAKE_SIG(x_type, gpu_shader5, 2, x, exponent);

   const unsigned vec_elem = x_type->vector_elements;
   const glsl_type *bvec = glsl_type::get_instance(GLSL_TYPE_BOOL, vec_elem, 1);
   const glsl_type *uvec = glsl_type::get_instance(GLSL_TYPE_UINT, vec_elem, 1);

   /* Single-precision floating-point values are stored as
    *   1 sign bit;
    *   8 exponent bits;
    *   23 mantissa bits.
    *
    * An exponent shift of 23 will shift the mantissa out, leaving only the
    * exponent and sign bit (which itself may be zero, if the absolute value
    * was taken before the bitcast and shift.
    */
   ir_constant *exponent_shift = imm(23);
   ir_constant *exponent_bias = imm(-126, vec_elem);

   ir_constant *sign_mantissa_mask = imm(0x807fffffu, vec_elem);

   /* Exponent of floating-point values in the range [0.5, 1.0). */
   ir_constant *exponent_value = imm(0x3f000000u, vec_elem);

   ir_variable *is_not_zero = body.make_temp(bvec, "is_not_zero");
   body.emit(assign(is_not_zero, nequal(abs(x), imm(0.0f, vec_elem))));

   /* Since abs(x) ensures that the sign bit is zero, we don't need to bitcast
    * to unsigned integers to ensure that 1 bits aren't shifted in.
    */
   body.emit(assign(exponent, rshift(bitcast_f2i(abs(x)), exponent_shift)));
   body.emit(assign(exponent, add(exponent, csel(is_not_zero, exponent_bias,
                                                     imm(0, vec_elem)))));

   ir_variable *bits = body.make_temp(uvec, "bits");
   body.emit(assign(bits, bitcast_f2u(x)));
   body.emit(assign(bits, bit_and(bits, sign_mantissa_mask)));
   body.emit(assign(bits, bit_or(bits, csel(is_not_zero, exponent_value,
                                                imm(0u, vec_elem)))));
   body.emit(ret(bitcast_u2f(bits)));

   return sig;
}

ir_function_signature *
builtin_builder::_uaddCarry(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *carry = out_var(type, "carry");
   MAKE_SIG(type, gpu_shader5, 3, x, y, carry);

   body.emit(assign(carry, ir_builder::carry(x, y)));
   body.emit(ret(add(x, y)));

   return sig;
}

ir_function_signature *
builtin_builder::_usubBorrow(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *borrow = out_var(type, "borrow");
   MAKE_SIG(type, gpu_shader5, 3, x, y, borrow);

   body.emit(assign(borrow, ir_builder::borrow(x, y)));
   body.emit(ret(sub(x, y)));

   return sig;
}

/**
 * For both imulExtended() and umulExtended() built-ins.
 */
ir_function_signature *
builtin_builder::_mulExtended(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *msb = out_var(type, "msb");
   ir_variable *lsb = out_var(type, "lsb");
   MAKE_SIG(glsl_type::void_type, gpu_shader5, 4, x, y, msb, lsb);

   body.emit(assign(msb, imul_high(x, y)));
   body.emit(assign(lsb, mul(x, y)));

   return sig;
}

ir_function_signature *
builtin_builder::_interpolateAtCentroid(const glsl_type *type)
{
   ir_variable *interpolant = in_var(type, "interpolant");
   interpolant->data.must_be_shader_input = 1;
   MAKE_SIG(type, fs_gpu_shader5, 1, interpolant);

   body.emit(ret(interpolate_at_centroid(interpolant)));

   return sig;
}

ir_function_signature *
builtin_builder::_interpolateAtOffset(const glsl_type *type)
{
   ir_variable *interpolant = in_var(type, "interpolant");
   interpolant->data.must_be_shader_input = 1;
   ir_variable *offset = in_var(glsl_type::vec2_type, "offset");
   MAKE_SIG(type, fs_gpu_shader5, 2, interpolant, offset);

   body.emit(ret(interpolate_at_offset(interpolant, offset)));

   return sig;
}

ir_function_signature *
builtin_builder::_interpolateAtSample(const glsl_type *type)
{
   ir_variable *interpolant = in_var(type, "interpolant");
   interpolant->data.must_be_shader_input = 1;
   ir_variable *sample_num = in_var(glsl_type::int_type, "sample_num");
   MAKE_SIG(type, fs_gpu_shader5, 2, interpolant, sample_num);

   body.emit(ret(interpolate_at_sample(interpolant, sample_num)));

   return sig;
}

ir_function_signature *
builtin_builder::_atomic_intrinsic(builtin_available_predicate avail)
{
   ir_variable *counter = in_var(glsl_type::atomic_uint_type, "counter");
   MAKE_INTRINSIC(glsl_type::uint_type, avail, 1, counter);
   return sig;
}

ir_function_signature *
builtin_builder::_atomic_op(const char *intrinsic,
                            builtin_available_predicate avail)
{
   ir_variable *counter = in_var(glsl_type::atomic_uint_type, "atomic_counter");
   MAKE_SIG(glsl_type::uint_type, avail, 1, counter);

   ir_variable *retval = body.make_temp(glsl_type::uint_type, "atomic_retval");
   body.emit(call(shader->symbols->get_function(intrinsic), retval,
                  sig->parameters));
   body.emit(ret(retval));
   return sig;
}

ir_function_signature *
builtin_builder::_min3(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *z = in_var(type, "z");
   MAKE_SIG(type, shader_trinary_minmax, 3, x, y, z);

   ir_expression *min3 = min2(x, min2(y,z));
   body.emit(ret(min3));

   return sig;
}

ir_function_signature *
builtin_builder::_max3(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *z = in_var(type, "z");
   MAKE_SIG(type, shader_trinary_minmax, 3, x, y, z);

   ir_expression *max3 = max2(x, max2(y,z));
   body.emit(ret(max3));

   return sig;
}

ir_function_signature *
builtin_builder::_mid3(const glsl_type *type)
{
   ir_variable *x = in_var(type, "x");
   ir_variable *y = in_var(type, "y");
   ir_variable *z = in_var(type, "z");
   MAKE_SIG(type, shader_trinary_minmax, 3, x, y, z);

   ir_expression *mid3 = max2(min2(x, y), max2(min2(x, z), min2(y, z)));
   body.emit(ret(mid3));

   return sig;
}

ir_function_signature *
builtin_builder::_image_prototype(const glsl_type *image_type,
                                  const char *intrinsic_name,
                                  unsigned num_arguments,
                                  unsigned flags)
{
   const glsl_type *data_type = glsl_type::get_instance(
      image_type->sampler_type,
      (flags & IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE ? 4 : 1),
      1);
   const glsl_type *ret_type = (flags & IMAGE_FUNCTION_RETURNS_VOID ?
                                glsl_type::void_type : data_type);

   /* Addressing arguments that are always present. */
   ir_variable *image = in_var(image_type, "image");
   ir_variable *coord = in_var(
      glsl_type::ivec(image_type->coordinate_components()), "coord");

   ir_function_signature *sig = new_sig(
      ret_type, shader_image_load_store, 2, image, coord);

   /* Sample index for multisample images. */
   if (image_type->sampler_dimensionality == GLSL_SAMPLER_DIM_MS)
      sig->parameters.push_tail(in_var(glsl_type::int_type, "sample"));

   /* Data arguments. */
   for (unsigned i = 0; i < num_arguments; ++i)
      sig->parameters.push_tail(in_var(data_type,
                                       ralloc_asprintf(NULL, "arg%d", i)));

   /* Set the maximal set of qualifiers allowed for this image
    * built-in.  Function calls with arguments having fewer
    * qualifiers than present in the prototype are allowed by the
    * spec, but not with more, i.e. this will make the compiler
    * accept everything that needs to be accepted, and reject cases
    * like loads from write-only or stores to read-only images.
    */
   image->data.image.read_only = flags & IMAGE_FUNCTION_READ_ONLY;
   image->data.image.write_only = flags & IMAGE_FUNCTION_WRITE_ONLY;
   image->data.image.coherent = true;
   image->data.image._volatile = true;
   image->data.image.restrict_flag = true;

   return sig;
}

ir_function_signature *
builtin_builder::_image(const glsl_type *image_type,
                        const char *intrinsic_name,
                        unsigned num_arguments,
                        unsigned flags)
{
   ir_function_signature *sig = _image_prototype(image_type, intrinsic_name,
                                                 num_arguments, flags);

   if (flags & IMAGE_FUNCTION_EMIT_STUB) {
      ir_factory body(&sig->body, mem_ctx);
      ir_function *f = shader->symbols->get_function(intrinsic_name);

      if (flags & IMAGE_FUNCTION_RETURNS_VOID) {
         body.emit(call(f, NULL, sig->parameters));
      } else {
         ir_variable *ret_val =
            body.make_temp(sig->return_type, "_ret_val");
         body.emit(call(f, ret_val, sig->parameters));
         body.emit(ret(ret_val));
      }

      sig->is_defined = true;

   } else {
      sig->is_intrinsic = true;
   }

   return sig;
}

ir_function_signature *
builtin_builder::_memory_barrier_intrinsic(builtin_available_predicate avail)
{
   MAKE_INTRINSIC(glsl_type::void_type, avail, 0);
   return sig;
}

ir_function_signature *
builtin_builder::_memory_barrier(builtin_available_predicate avail)
{
   MAKE_SIG(glsl_type::void_type, avail, 0);
   body.emit(call(shader->symbols->get_function("__intrinsic_memory_barrier"),
                  NULL, sig->parameters));
   return sig;
}

/** @@} */

/******************************************************************************/

/* The singleton instance of builtin_builder. */
static builtin_builder builtins;
static mtx_t builtins_lock = _MTX_INITIALIZER_NP;

/**
 * External API (exposing the built-in module to the rest of the compiler):
 *  @@{
 */
void
_mesa_glsl_initialize_builtin_functions()
{
   mtx_lock(&builtins_lock);
   builtins.initialize();
   mtx_unlock(&builtins_lock);
}

void
_mesa_glsl_release_builtin_functions()
{
   mtx_lock(&builtins_lock);
   builtins.release();
   mtx_unlock(&builtins_lock);
}

ir_function_signature *
_mesa_glsl_find_builtin_function(_mesa_glsl_parse_state *state,
                                 const char *name, exec_list *actual_parameters)
{
   ir_function_signature * s;
   mtx_lock(&builtins_lock);
   s = builtins.find(state, name, actual_parameters);
   mtx_unlock(&builtins_lock);
   return s;
}

gl_shader *
_mesa_glsl_get_builtin_function_shader()
{
   return builtins.shader;
}

/** @@} */
@


