summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/Makefile.defines34
-rw-r--r--src/mesa/drivers/dri/Makefile.targets (renamed from src/mesa/drivers/dri/Makefile.template)37
-rw-r--r--src/mesa/drivers/dri/i810/Makefile4
-rw-r--r--src/mesa/drivers/dri/i915/Makefile4
-rw-r--r--src/mesa/drivers/dri/i915/i915_vtbl.c9
-rw-r--r--src/mesa/drivers/dri/i965/Makefile9
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.c6
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.h15
-rw-r--r--src/mesa/drivers/dri/i965/brw_defines.h44
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu_emit.c3
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp2747
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.h16
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_emit.cpp875
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp71
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_visitor.cpp1734
-rw-r--r--src/mesa/drivers/dri/i965/brw_sf.c3
-rw-r--r--src/mesa/drivers/dri/i965/brw_sf.h1
-rw-r--r--src/mesa/drivers/dri/i965/brw_sf_emit.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_shader.cpp194
-rw-r--r--src/mesa/drivers/dri/i965/brw_shader.h25
-rw-r--r--src/mesa/drivers/dri/i965/brw_state_dump.c22
-rw-r--r--src/mesa/drivers/dri/i965/brw_structs.h74
-rw-r--r--src/mesa/drivers/dri/i965/brw_tex_layout.c5
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs_constval.c12
-rw-r--r--src/mesa/drivers/dri/i965/brw_vtbl.c11
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm.c35
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm.h13
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_fp.c27
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_state.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_surface_state.c222
-rw-r--r--src/mesa/drivers/dri/i965/gen7_vs_state.c1
-rw-r--r--src/mesa/drivers/dri/intel/intel_buffers.c28
-rw-r--r--src/mesa/drivers/dri/intel/intel_context.c62
-rw-r--r--src/mesa/drivers/dri/intel/intel_context.h7
-rw-r--r--src/mesa/drivers/dri/intel/intel_fbo.c130
-rw-r--r--src/mesa/drivers/dri/intel/intel_fbo.h27
-rw-r--r--src/mesa/drivers/dri/intel/intel_mipmap_tree.c1
-rw-r--r--src/mesa/drivers/dri/intel/intel_mipmap_tree.h14
-rw-r--r--src/mesa/drivers/dri/intel/intel_span.c3
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_format.c1
-rw-r--r--src/mesa/drivers/dri/mach64/Makefile4
-rw-r--r--src/mesa/drivers/dri/mga/Makefile4
-rw-r--r--src/mesa/drivers/dri/nouveau/Makefile9
-rw-r--r--src/mesa/drivers/dri/r128/Makefile4
-rw-r--r--src/mesa/drivers/dri/r200/Makefile7
-rw-r--r--src/mesa/drivers/dri/r300/Makefile9
-rw-r--r--src/mesa/drivers/dri/r300/compiler/Makefile5
-rwxr-xr-xsrc/mesa/drivers/dri/r300/compiler/SConscript3
-rw-r--r--src/mesa/drivers/dri/r300/r300_state.c1
-rw-r--r--src/mesa/drivers/dri/r600/Makefile9
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_blit.c44
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_chip.c4
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_state.c16
-rw-r--r--src/mesa/drivers/dri/radeon/Makefile7
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_chipset.h14
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_common_context.c2
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.c19
-rw-r--r--src/mesa/drivers/dri/savage/Makefile4
-rw-r--r--src/mesa/drivers/dri/sis/Makefile4
-rw-r--r--src/mesa/drivers/dri/swrast/Makefile4
-rw-r--r--src/mesa/drivers/dri/tdfx/Makefile4
-rw-r--r--src/mesa/drivers/dri/unichrome/Makefile4
-rw-r--r--src/mesa/main/api_validate.c5
-rw-r--r--src/mesa/main/api_validate.h3
-rw-r--r--src/mesa/main/buffers.c36
-rw-r--r--src/mesa/main/dd.h3
-rw-r--r--src/mesa/main/dlist.c427
-rw-r--r--src/mesa/main/es_generator.py4
-rw-r--r--src/mesa/main/fbobject.c29
-rw-r--r--src/mesa/main/formats.c4
-rw-r--r--src/mesa/main/formats.h2
-rw-r--r--src/mesa/main/glapidispatch.h1354
-rw-r--r--src/mesa/main/queryobj.c12
-rw-r--r--src/mesa/main/queryobj.h18
-rw-r--r--src/mesa/main/remap_helper.h4111
-rw-r--r--src/mesa/main/shaderapi.c18
-rw-r--r--src/mesa/main/texformat.c2
-rw-r--r--src/mesa/main/texgetimage.c120
-rw-r--r--src/mesa/main/teximage.c35
-rw-r--r--src/mesa/main/uniforms.c361
-rw-r--r--src/mesa/main/vtxfmt.c1
-rw-r--r--src/mesa/program/ir_to_mesa.cpp3
-rw-r--r--src/mesa/program/prog_parameter_layout.c1
-rw-r--r--src/mesa/state_tracker/st_atom_pixeltransfer.c2
-rw-r--r--src/mesa/state_tracker/st_cb_accum.c2
-rw-r--r--src/mesa/state_tracker/st_cb_blit.c14
-rw-r--r--src/mesa/state_tracker/st_cb_bufferobjects.c3
-rw-r--r--src/mesa/state_tracker/st_cb_condrender.c11
-rw-r--r--src/mesa/state_tracker/st_cb_drawpixels.c29
-rw-r--r--src/mesa/state_tracker/st_cb_fbo.c8
-rw-r--r--src/mesa/state_tracker/st_cb_readpixels.c9
-rw-r--r--src/mesa/state_tracker/st_cb_texture.c27
-rw-r--r--src/mesa/state_tracker/st_context.h4
-rw-r--r--src/mesa/state_tracker/st_format.c1468
-rw-r--r--src/mesa/state_tracker/st_gen_mipmap.c13
-rw-r--r--src/mesa/swrast/s_blit.c3
-rw-r--r--src/mesa/vbo/vbo_exec_array.c27
97 files changed, 7773 insertions, 7109 deletions
diff --git a/src/mesa/drivers/dri/Makefile.defines b/src/mesa/drivers/dri/Makefile.defines
new file mode 100644
index 00000000000..19b6de8b85a
--- /dev/null
+++ b/src/mesa/drivers/dri/Makefile.defines
@@ -0,0 +1,34 @@
+# -*-makefile-*-
+
+COMMON_GALLIUM_SOURCES = \
+ ../common/utils.c \
+ ../common/vblank.c \
+ ../common/dri_util.c \
+ ../common/xmlconfig.c
+
+COMMON_SOURCES = $(COMMON_GALLIUM_SOURCES) \
+ ../../common/driverfuncs.c \
+ ../common/texmem.c \
+ ../common/drirenderbuffer.c
+
+INCLUDES = $(SHARED_INCLUDES) $(EXPAT_INCLUDES)
+
+OBJECTS = $(C_SOURCES:.c=.o) \
+ $(CXX_SOURCES:.cpp=.o) \
+ $(ASM_SOURCES:.S=.o)
+
+
+### Include directories
+SHARED_INCLUDES = \
+ -I. \
+ -I$(TOP)/src/mesa/drivers/dri/common \
+ -Iserver \
+ -I$(TOP)/include \
+ -I$(TOP)/src/mapi \
+ -I$(TOP)/src/mesa \
+ -I$(TOP)/src/egl/main \
+ -I$(TOP)/src/egl/drivers/dri \
+ $(LIBDRM_CFLAGS)
+
+INCLUDES += $(API_DEFINES)
+CXXFLAGS += $(API_DEFINES)
diff --git a/src/mesa/drivers/dri/Makefile.template b/src/mesa/drivers/dri/Makefile.targets
index d1a119379ed..436b2a3c477 100644
--- a/src/mesa/drivers/dri/Makefile.template
+++ b/src/mesa/drivers/dri/Makefile.targets
@@ -1,38 +1,5 @@
# -*-makefile-*-
-COMMON_GALLIUM_SOURCES = \
- ../common/utils.c \
- ../common/vblank.c \
- ../common/dri_util.c \
- ../common/xmlconfig.c
-
-COMMON_SOURCES = $(COMMON_GALLIUM_SOURCES) \
- ../../common/driverfuncs.c \
- ../common/texmem.c \
- ../common/drirenderbuffer.c
-
-INCLUDES = $(SHARED_INCLUDES) $(EXPAT_INCLUDES)
-
-OBJECTS = $(C_SOURCES:.c=.o) \
- $(CXX_SOURCES:.cpp=.o) \
- $(ASM_SOURCES:.S=.o)
-
-
-### Include directories
-SHARED_INCLUDES = \
- -I. \
- -I$(TOP)/src/mesa/drivers/dri/common \
- -Iserver \
- -I$(TOP)/include \
- -I$(TOP)/src/mapi \
- -I$(TOP)/src/mesa \
- -I$(TOP)/src/egl/main \
- -I$(TOP)/src/egl/drivers/dri \
- $(LIBDRM_CFLAGS)
-
-CFLAGS += $(API_DEFINES)
-CXXFLAGS += $(API_DEFINES)
-
##### RULES #####
.c.o:
@@ -45,7 +12,7 @@ CXXFLAGS += $(API_DEFINES)
$(CC) -c $(INCLUDES) $(DRI_CFLAGS) $(DRIVER_DEFINES) $< -o $@
-##### TARGETS #####
+#### TARGETS #####
default: subdirs lib
@@ -55,7 +22,7 @@ lib: symlinks subdirs depend
@$(MAKE) $(LIBNAME) $(TOP)/$(LIB_DIR)/$(LIBNAME)
$(LIBNAME): $(OBJECTS) $(EXTRA_MODULES) $(MESA_MODULES) Makefile \
- $(TOP)/src/mesa/drivers/dri/Makefile.template $(TOP)/src/mesa/drivers/dri/common/dri_test.o
+ $(TOP)/src/mesa/drivers/dri/Makefile.targets $(TOP)/src/mesa/drivers/dri/common/dri_test.o
$(MKLIB) -o [email protected] -noprefix -linker '$(CXX)' -ldflags '$(LDFLAGS)' \
$(OBJECTS) $(EXTRA_MODULES) $(DRI_LIB_DEPS)
$(CXX) $(CFLAGS) -o [email protected] $(TOP)/src/mesa/drivers/dri/common/dri_test.o [email protected] $(DRI_LIB_DEPS)
diff --git a/src/mesa/drivers/dri/i810/Makefile b/src/mesa/drivers/dri/i810/Makefile
index 54a837d5ea9..edc6dd21732 100644
--- a/src/mesa/drivers/dri/i810/Makefile
+++ b/src/mesa/drivers/dri/i810/Makefile
@@ -5,6 +5,8 @@ include $(TOP)/configs/current
LIBNAME = i810_dri.so
+include ../Makefile.defines
+
DRIVER_SOURCES = \
i810context.c \
i810ioctl.c \
@@ -24,5 +26,5 @@ C_SOURCES = \
ASM_SOURCES =
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/drivers/dri/i915/Makefile b/src/mesa/drivers/dri/i915/Makefile
index 65fd658c047..79e03f2f1d1 100644
--- a/src/mesa/drivers/dri/i915/Makefile
+++ b/src/mesa/drivers/dri/i915/Makefile
@@ -4,6 +4,8 @@ include $(TOP)/configs/current
LIBNAME = i915_dri.so
+include ../Makefile.defines
+
DRIVER_SOURCES = \
i830_context.c \
i830_state.c \
@@ -63,7 +65,7 @@ DRIVER_DEFINES = -I../intel -DI915 \
INCLUDES += $(INTEL_CFLAGS)
DRI_LIB_DEPS += $(INTEL_LIBS)
-include ../Makefile.template
+include ../Makefile.targets
intel_decode.o: ../intel/intel_decode.c
diff --git a/src/mesa/drivers/dri/i915/i915_vtbl.c b/src/mesa/drivers/dri/i915/i915_vtbl.c
index 89650b618e4..820feba04ba 100644
--- a/src/mesa/drivers/dri/i915/i915_vtbl.c
+++ b/src/mesa/drivers/dri/i915/i915_vtbl.c
@@ -687,6 +687,14 @@ i915_assert_not_dirty( struct intel_context *intel )
(void) dirty;
}
+/** Return false; i915 does not support HiZ. */
+static bool
+i915_is_hiz_depth_format(struct intel_context *intel,
+ gl_format format)
+{
+ return false;
+}
+
void
i915InitVtbl(struct i915_context *i915)
{
@@ -702,4 +710,5 @@ i915InitVtbl(struct i915_context *i915)
i915->intel.vtbl.assert_not_dirty = i915_assert_not_dirty;
i915->intel.vtbl.finish_batch = intel_finish_vb;
i915->intel.vtbl.render_target_supported = i915_render_target_supported;
+ i915->intel.vtbl.is_hiz_depth_format = i915_is_hiz_depth_format;
}
diff --git a/src/mesa/drivers/dri/i965/Makefile b/src/mesa/drivers/dri/i965/Makefile
index b96f42bfe88..44f28cd9d15 100644
--- a/src/mesa/drivers/dri/i965/Makefile
+++ b/src/mesa/drivers/dri/i965/Makefile
@@ -4,6 +4,8 @@ include $(TOP)/configs/current
LIBNAME = i965_dri.so
+include ../Makefile.defines
+
DRIVER_SOURCES = \
intel_batchbuffer.c \
intel_blit.c \
@@ -116,10 +118,13 @@ C_SOURCES = \
CXX_SOURCES = \
brw_cubemap_normalize.cpp \
brw_fs.cpp \
+ brw_fs_emit.cpp \
+ brw_fs_visitor.cpp \
brw_fs_channel_expressions.cpp \
brw_fs_reg_allocate.cpp \
brw_fs_schedule_instructions.cpp \
- brw_fs_vector_splitting.cpp
+ brw_fs_vector_splitting.cpp \
+ brw_shader.cpp
ASM_SOURCES =
@@ -128,7 +133,7 @@ DRIVER_DEFINES = -I../intel
INCLUDES += $(INTEL_CFLAGS)
DRI_LIB_DEPS += $(INTEL_LIBS)
-include ../Makefile.template
+include ../Makefile.targets
intel_decode.o: ../intel/intel_decode.c
intel_tex_layout.o: ../intel/intel_tex_layout.c
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index df753abed02..0256ab9061f 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -94,9 +94,9 @@ GLboolean brwCreateContext( int api,
ctx->Const.MaxVertexTextureImageUnits +
ctx->Const.MaxTextureImageUnits;
- /* Mesa limits textures to 4kx4k; it would be nice to fix that someday
- */
- ctx->Const.MaxTextureLevels = 13;
+ ctx->Const.MaxTextureLevels = 14; /* 8192 */
+ if (ctx->Const.MaxTextureLevels > MAX_TEXTURE_LEVELS)
+ ctx->Const.MaxTextureLevels = MAX_TEXTURE_LEVELS;
ctx->Const.Max3DTextureLevels = 9;
ctx->Const.MaxCubeTextureLevels = 12;
ctx->Const.MaxTextureRectSize = (1<<12);
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index 1d2ef066db2..621b6f8990b 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -231,8 +231,8 @@ struct brw_wm_prog_data {
GLuint first_curbe_grf;
GLuint first_curbe_grf_16;
- GLuint total_grf;
- GLuint total_grf_16;
+ GLuint reg_blocks;
+ GLuint reg_blocks_16;
GLuint total_scratch;
GLuint nr_params; /**< number of float params/constants */
@@ -863,6 +863,17 @@ float convert_param(enum param_conversion conversion, float param)
}
}
+/**
+ * Pre-gen6, the register file of the EUs was shared between threads,
+ * and each thread used some subset allocated on a 16-register block
+ * granularity. The unit states wanted these block counts.
+ */
+static inline int
+brw_register_blocks(int reg_count)
+{
+ return ALIGN(reg_count, 16) / 16 - 1;
+}
+
GLboolean brw_do_cubemap_normalize(struct exec_list *instructions);
#endif
diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h
index 5eb7892bb08..6d41b1e69d3 100644
--- a/src/mesa/drivers/dri/i965/brw_defines.h
+++ b/src/mesa/drivers/dri/i965/brw_defines.h
@@ -28,7 +28,10 @@
* Authors:
* Keith Whitwell <[email protected]>
*/
-
+
+#define INTEL_MASK(high, low) (((1<<((high)-(low)+1))-1)<<(low))
+#define SET_FIELD(value, field) (((value) << field ## _SHIFT) & field ## _MASK)
+#define GET_FIELD(word, field) (((word) & field ## _MASK) >> field ## _SHIFT)
#ifndef BRW_DEFINES_H
#define BRW_DEFINES_H
@@ -243,8 +246,17 @@
#define BRW_STENCILOP_DECR 6
#define BRW_STENCILOP_INVERT 7
+/* Surface state DW0 */
+#define BRW_SURFACE_RC_READ_WRITE (1 << 8)
+#define BRW_SURFACE_MIPLAYOUT_SHIFT 10
#define BRW_SURFACE_MIPMAPLAYOUT_BELOW 0
#define BRW_SURFACE_MIPMAPLAYOUT_RIGHT 1
+#define BRW_SURFACE_CUBEFACE_ENABLES 0x3f
+#define BRW_SURFACE_BLEND_ENABLED (1 << 13)
+#define BRW_SURFACE_WRITEDISABLE_B_SHIFT 14
+#define BRW_SURFACE_WRITEDISABLE_G_SHIFT 15
+#define BRW_SURFACE_WRITEDISABLE_R_SHIFT 16
+#define BRW_SURFACE_WRITEDISABLE_A_SHIFT 17
#define BRW_SURFACEFORMAT_R32G32B32A32_FLOAT 0x000
#define BRW_SURFACEFORMAT_R32G32B32A32_SINT 0x001
@@ -403,10 +415,14 @@
#define BRW_SURFACEFORMAT_R16G16B16_SNORM 0x19D
#define BRW_SURFACEFORMAT_R16G16B16_SSCALED 0x19E
#define BRW_SURFACEFORMAT_R16G16B16_USCALED 0x19F
+#define BRW_SURFACE_FORMAT_SHIFT 18
+#define BRW_SURFACE_FORMAT_MASK INTEL_MASK(26, 18)
#define BRW_SURFACERETURNFORMAT_FLOAT32 0
#define BRW_SURFACERETURNFORMAT_S1 1
+#define BRW_SURFACE_TYPE_SHIFT 29
+#define BRW_SURFACE_TYPE_MASK INTEL_MASK(31, 29)
#define BRW_SURFACE_1D 0
#define BRW_SURFACE_2D 1
#define BRW_SURFACE_3D 2
@@ -414,6 +430,32 @@
#define BRW_SURFACE_BUFFER 4
#define BRW_SURFACE_NULL 7
+/* Surface state DW2 */
+#define BRW_SURFACE_HEIGHT_SHIFT 19
+#define BRW_SURFACE_HEIGHT_MASK INTEL_MASK(31, 19)
+#define BRW_SURFACE_WIDTH_SHIFT 6
+#define BRW_SURFACE_WIDTH_MASK INTEL_MASK(18, 6)
+#define BRW_SURFACE_LOD_SHIFT 2
+#define BRW_SURFACE_LOD_MASK INTEL_MASK(5, 2)
+
+/* Surface state DW3 */
+#define BRW_SURFACE_DEPTH_SHIFT 21
+#define BRW_SURFACE_DEPTH_MASK INTEL_MASK(31, 21)
+#define BRW_SURFACE_PITCH_SHIFT 3
+#define BRW_SURFACE_PITCH_MASK INTEL_MASK(19, 3)
+#define BRW_SURFACE_TILED (1 << 1)
+#define BRW_SURFACE_TILED_Y (1 << 0)
+
+/* Surface state DW4 */
+#define BRW_SURFACE_MIN_LOD_SHIFT 28
+#define BRW_SURFACE_MIN_LOD_MASK INTEL_MASK(31, 28)
+
+/* Surface state DW5 */
+#define BRW_SURFACE_X_OFFSET_SHIFT 25
+#define BRW_SURFACE_X_OFFSET_MASK INTEL_MASK(31, 25)
+#define BRW_SURFACE_Y_OFFSET_SHIFT 20
+#define BRW_SURFACE_Y_OFFSET_MASK INTEL_MASK(23, 20)
+
#define BRW_TEXCOORDMODE_WRAP 0
#define BRW_TEXCOORDMODE_MIRROR 1
#define BRW_TEXCOORDMODE_CLAMP 2
diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c
index 2d41302d15a..e7370f36064 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
@@ -93,8 +93,6 @@ static void brw_set_dest(struct brw_compile *p,
struct brw_instruction *insn,
struct brw_reg dest)
{
- struct intel_context *intel = &p->brw->intel;
-
if (dest.file != BRW_ARCHITECTURE_REGISTER_FILE &&
dest.file != BRW_MESSAGE_REGISTER_FILE)
assert(dest.nr < 128);
@@ -1254,7 +1252,6 @@ struct brw_instruction *gen6_CONT(struct brw_compile *p,
struct brw_instruction *do_insn)
{
struct brw_instruction *insn;
- int br = 2;
insn = next_insn(p, BRW_OPCODE_CONTINUE);
brw_set_dest(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D));
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 6d545afab64..09033aecd7c 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -19,10 +19,13 @@
* 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 brw_fs.cpp
*
- * Authors:
- * Eric Anholt <[email protected]>
- *
+ * This file drives the GLSL IR -> LIR translation, contains the
+ * optimizations on the LIR, and drives the generation of native code
+ * from the LIR.
*/
extern "C" {
@@ -34,7 +37,6 @@ extern "C" {
#include "main/uniforms.h"
#include "program/prog_parameter.h"
#include "program/prog_print.h"
-#include "program/prog_optimize.h"
#include "program/register_allocate.h"
#include "program/sampler.h"
#include "program/hash_table.h"
@@ -42,113 +44,15 @@ extern "C" {
#include "brw_eu.h"
#include "brw_wm.h"
}
+#include "brw_shader.h"
#include "brw_fs.h"
#include "../glsl/glsl_types.h"
-#include "../glsl/ir_optimization.h"
#include "../glsl/ir_print_visitor.h"
#define MAX_INSTRUCTION (1 << 30)
-static struct brw_reg brw_reg_from_fs_reg(class fs_reg *reg);
-
-struct gl_shader *
-brw_new_shader(struct gl_context *ctx, GLuint name, GLuint type)
-{
- struct brw_shader *shader;
-
- shader = rzalloc(NULL, struct brw_shader);
- if (shader) {
- shader->base.Type = type;
- shader->base.Name = name;
- _mesa_init_shader(ctx, &shader->base);
- }
-
- return &shader->base;
-}
-
-struct gl_shader_program *
-brw_new_shader_program(struct gl_context *ctx, GLuint name)
-{
- struct brw_shader_program *prog;
- prog = rzalloc(NULL, struct brw_shader_program);
- if (prog) {
- prog->base.Name = name;
- _mesa_init_shader_program(ctx, &prog->base);
- }
- return &prog->base;
-}
-
-GLboolean
-brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
-{
- struct brw_context *brw = brw_context(ctx);
- struct intel_context *intel = &brw->intel;
-
- struct brw_shader *shader =
- (struct brw_shader *)prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
- if (shader != NULL) {
- void *mem_ctx = ralloc_context(NULL);
- bool progress;
-
- if (shader->ir)
- ralloc_free(shader->ir);
- shader->ir = new(shader) exec_list;
- clone_ir_list(mem_ctx, shader->ir, shader->base.ir);
-
- do_mat_op_to_vec(shader->ir);
- lower_instructions(shader->ir,
- MOD_TO_FRACT |
- DIV_TO_MUL_RCP |
- SUB_TO_ADD_NEG |
- EXP_TO_EXP2 |
- LOG_TO_LOG2);
-
- /* Pre-gen6 HW can only nest if-statements 16 deep. Beyond this,
- * if-statements need to be flattened.
- */
- if (intel->gen < 6)
- lower_if_to_cond_assign(shader->ir, 16);
-
- do_lower_texture_projection(shader->ir);
- do_vec_index_to_cond_assign(shader->ir);
- brw_do_cubemap_normalize(shader->ir);
- lower_noise(shader->ir);
- lower_quadop_vector(shader->ir, false);
- lower_variable_index_to_cond_assign(shader->ir,
- GL_TRUE, /* input */
- GL_TRUE, /* output */
- GL_TRUE, /* temp */
- GL_TRUE /* uniform */
- );
-
- do {
- progress = false;
-
- brw_do_channel_expressions(shader->ir);
- brw_do_vector_splitting(shader->ir);
-
- progress = do_lower_jumps(shader->ir, true, true,
- true, /* main return */
- false, /* continue */
- false /* loops */
- ) || progress;
-
- progress = do_common_optimization(shader->ir, true, 32) || progress;
- } while (progress);
-
- validate_ir_tree(shader->ir);
- reparent_ir(shader->ir, shader->ir);
- ralloc_free(mem_ctx);
- }
-
- if (!_mesa_ir_link_shader(ctx, prog))
- return GL_FALSE;
-
- return GL_TRUE;
-}
-
-static int
-type_size(const struct glsl_type *type)
+int
+fs_visitor::type_size(const struct glsl_type *type)
{
unsigned int size, i;
@@ -180,17 +84,23 @@ type_size(const struct glsl_type *type)
void
fs_visitor::fail(const char *format, ...)
{
- if (!failed) {
- failed = true;
+ va_list va;
+ char *msg;
- if (INTEL_DEBUG & DEBUG_WM) {
- fprintf(stderr, "FS compile failed: ");
+ if (failed)
+ return;
- va_list va;
- va_start(va, format);
- vfprintf(stderr, format, va);
- va_end(va);
- }
+ failed = true;
+
+ va_start(va, format);
+ msg = ralloc_vasprintf(mem_ctx, format, va);
+ va_end(va);
+ msg = ralloc_asprintf(mem_ctx, "FS compile failed: %s\n", msg);
+
+ this->fail_msg = msg;
+
+ if (INTEL_DEBUG & DEBUG_WM) {
+ fprintf(stderr, msg);
}
}
@@ -297,38 +207,13 @@ fs_reg::fs_reg(enum register_file file, int hw_reg, uint32_t type)
this->type = type;
}
-int
-brw_type_for_base_type(const struct glsl_type *type)
-{
- switch (type->base_type) {
- case GLSL_TYPE_FLOAT:
- return BRW_REGISTER_TYPE_F;
- case GLSL_TYPE_INT:
- case GLSL_TYPE_BOOL:
- return BRW_REGISTER_TYPE_D;
- case GLSL_TYPE_UINT:
- return BRW_REGISTER_TYPE_UD;
- case GLSL_TYPE_ARRAY:
- case GLSL_TYPE_STRUCT:
- case GLSL_TYPE_SAMPLER:
- /* These should be overridden with the type of the member when
- * dereferenced into. BRW_REGISTER_TYPE_UD seems like a likely
- * way to trip up if we don't.
- */
- return BRW_REGISTER_TYPE_UD;
- default:
- assert(!"not reached");
- return BRW_REGISTER_TYPE_F;
- }
-}
-
/** Automatic reg constructor. */
fs_reg::fs_reg(class fs_visitor *v, const struct glsl_type *type)
{
init();
this->file = GRF;
- this->reg = v->virtual_grf_alloc(type_size(type));
+ this->reg = v->virtual_grf_alloc(v->type_size(type));
this->reg_offset = 0;
this->type = brw_type_for_base_type(type);
}
@@ -584,7 +469,7 @@ fs_visitor::emit_general_interpolation(ir_variable *ir)
attr.reg_offset++;
}
- if (intel->gen < 6 && !(is_gl_Color && c->key.linear_color)) {
+ if (intel->gen < 6) {
attr.reg_offset -= type->vector_elements;
for (unsigned int k = 0; k < type->vector_elements; k++) {
emit(BRW_OPCODE_MUL, attr, attr, this->pixel_w);
@@ -706,2134 +591,6 @@ fs_visitor::emit_math(fs_opcodes opcode, fs_reg dst, fs_reg src0, fs_reg src1)
return inst;
}
-void
-fs_visitor::visit(ir_variable *ir)
-{
- fs_reg *reg = NULL;
-
- if (variable_storage(ir))
- return;
-
- if (strcmp(ir->name, "gl_FragColor") == 0) {
- this->frag_color = ir;
- } else if (strcmp(ir->name, "gl_FragData") == 0) {
- this->frag_data = ir;
- } else if (strcmp(ir->name, "gl_FragDepth") == 0) {
- this->frag_depth = ir;
- }
-
- if (ir->mode == ir_var_in) {
- if (!strcmp(ir->name, "gl_FragCoord")) {
- reg = emit_fragcoord_interpolation(ir);
- } else if (!strcmp(ir->name, "gl_FrontFacing")) {
- reg = emit_frontfacing_interpolation(ir);
- } else {
- reg = emit_general_interpolation(ir);
- }
- assert(reg);
- hash_table_insert(this->variable_ht, reg, ir);
- return;
- }
-
- if (ir->mode == ir_var_uniform) {
- int param_index = c->prog_data.nr_params;
-
- if (c->dispatch_width == 16) {
- if (!variable_storage(ir)) {
- fail("Failed to find uniform '%s' in 16-wide\n", ir->name);
- }
- return;
- }
-
- if (!strncmp(ir->name, "gl_", 3)) {
- setup_builtin_uniform_values(ir);
- } else {
- setup_uniform_values(ir->location, ir->type);
- }
-
- reg = new(this->mem_ctx) fs_reg(UNIFORM, param_index);
- reg->type = brw_type_for_base_type(ir->type);
- }
-
- if (!reg)
- reg = new(this->mem_ctx) fs_reg(this, ir->type);
-
- hash_table_insert(this->variable_ht, reg, ir);
-}
-
-void
-fs_visitor::visit(ir_dereference_variable *ir)
-{
- fs_reg *reg = variable_storage(ir->var);
- this->result = *reg;
-}
-
-void
-fs_visitor::visit(ir_dereference_record *ir)
-{
- const glsl_type *struct_type = ir->record->type;
-
- ir->record->accept(this);
-
- unsigned int offset = 0;
- for (unsigned int i = 0; i < struct_type->length; i++) {
- if (strcmp(struct_type->fields.structure[i].name, ir->field) == 0)
- break;
- offset += type_size(struct_type->fields.structure[i].type);
- }
- this->result.reg_offset += offset;
- this->result.type = brw_type_for_base_type(ir->type);
-}
-
-void
-fs_visitor::visit(ir_dereference_array *ir)
-{
- ir_constant *index;
- int element_size;
-
- ir->array->accept(this);
- index = ir->array_index->as_constant();
-
- element_size = type_size(ir->type);
- this->result.type = brw_type_for_base_type(ir->type);
-
- if (index) {
- assert(this->result.file == UNIFORM ||
- (this->result.file == GRF &&
- this->result.reg != 0));
- this->result.reg_offset += index->value.i[0] * element_size;
- } else {
- assert(!"FINISHME: non-constant array element");
- }
-}
-
-/* Instruction selection: Produce a MOV.sat instead of
- * MIN(MAX(val, 0), 1) when possible.
- */
-bool
-fs_visitor::try_emit_saturate(ir_expression *ir)
-{
- ir_rvalue *sat_val = ir->as_rvalue_to_saturate();
-
- if (!sat_val)
- return false;
-
- sat_val->accept(this);
- fs_reg src = this->result;
-
- this->result = fs_reg(this, ir->type);
- fs_inst *inst = emit(BRW_OPCODE_MOV, this->result, src);
- inst->saturate = true;
-
- return true;
-}
-
-static uint32_t
-brw_conditional_for_comparison(unsigned int op)
-{
- switch (op) {
- case ir_binop_less:
- return BRW_CONDITIONAL_L;
- case ir_binop_greater:
- return BRW_CONDITIONAL_G;
- case ir_binop_lequal:
- return BRW_CONDITIONAL_LE;
- case ir_binop_gequal:
- return BRW_CONDITIONAL_GE;
- case ir_binop_equal:
- case ir_binop_all_equal: /* same as equal for scalars */
- return BRW_CONDITIONAL_Z;
- case ir_binop_nequal:
- case ir_binop_any_nequal: /* same as nequal for scalars */
- return BRW_CONDITIONAL_NZ;
- default:
- assert(!"not reached: bad operation for comparison");
- return BRW_CONDITIONAL_NZ;
- }
-}
-
-void
-fs_visitor::visit(ir_expression *ir)
-{
- unsigned int operand;
- fs_reg op[2], temp;
- fs_inst *inst;
-
- assert(ir->get_num_operands() <= 2);
-
- if (try_emit_saturate(ir))
- return;
-
- for (operand = 0; operand < ir->get_num_operands(); operand++) {
- ir->operands[operand]->accept(this);
- if (this->result.file == BAD_FILE) {
- ir_print_visitor v;
- fail("Failed to get tree for expression operand:\n");
- ir->operands[operand]->accept(&v);
- }
- op[operand] = this->result;
-
- /* Matrix expression operands should have been broken down to vector
- * operations already.
- */
- assert(!ir->operands[operand]->type->is_matrix());
- /* And then those vector operands should have been broken down to scalar.
- */
- assert(!ir->operands[operand]->type->is_vector());
- }
-
- /* Storage for our result. If our result goes into an assignment, it will
- * just get copy-propagated out, so no worries.
- */
- this->result = fs_reg(this, ir->type);
-
- switch (ir->operation) {
- case ir_unop_logic_not:
- /* Note that BRW_OPCODE_NOT is not appropriate here, since it is
- * ones complement of the whole register, not just bit 0.
- */
- emit(BRW_OPCODE_XOR, this->result, op[0], fs_reg(1));
- break;
- case ir_unop_neg:
- op[0].negate = !op[0].negate;
- this->result = op[0];
- break;
- case ir_unop_abs:
- op[0].abs = true;
- op[0].negate = false;
- this->result = op[0];
- break;
- case ir_unop_sign:
- temp = fs_reg(this, ir->type);
-
- emit(BRW_OPCODE_MOV, this->result, fs_reg(0.0f));
-
- inst = emit(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f));
- inst->conditional_mod = BRW_CONDITIONAL_G;
- inst = emit(BRW_OPCODE_MOV, this->result, fs_reg(1.0f));
- inst->predicated = true;
-
- inst = emit(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f));
- inst->conditional_mod = BRW_CONDITIONAL_L;
- inst = emit(BRW_OPCODE_MOV, this->result, fs_reg(-1.0f));
- inst->predicated = true;
-
- break;
- case ir_unop_rcp:
- emit_math(FS_OPCODE_RCP, this->result, op[0]);
- break;
-
- case ir_unop_exp2:
- emit_math(FS_OPCODE_EXP2, this->result, op[0]);
- break;
- case ir_unop_log2:
- emit_math(FS_OPCODE_LOG2, this->result, op[0]);
- break;
- case ir_unop_exp:
- case ir_unop_log:
- assert(!"not reached: should be handled by ir_explog_to_explog2");
- break;
- case ir_unop_sin:
- case ir_unop_sin_reduced:
- emit_math(FS_OPCODE_SIN, this->result, op[0]);
- break;
- case ir_unop_cos:
- case ir_unop_cos_reduced:
- emit_math(FS_OPCODE_COS, this->result, op[0]);
- break;
-
- case ir_unop_dFdx:
- emit(FS_OPCODE_DDX, this->result, op[0]);
- break;
- case ir_unop_dFdy:
- emit(FS_OPCODE_DDY, this->result, op[0]);
- break;
-
- case ir_binop_add:
- emit(BRW_OPCODE_ADD, this->result, op[0], op[1]);
- break;
- case ir_binop_sub:
- assert(!"not reached: should be handled by ir_sub_to_add_neg");
- break;
-
- case ir_binop_mul:
- emit(BRW_OPCODE_MUL, this->result, op[0], op[1]);
- break;
- case ir_binop_div:
- assert(!"not reached: should be handled by ir_div_to_mul_rcp");
- break;
- case ir_binop_mod:
- assert(!"ir_binop_mod should have been converted to b * fract(a/b)");
- break;
-
- case ir_binop_less:
- case ir_binop_greater:
- case ir_binop_lequal:
- case ir_binop_gequal:
- case ir_binop_equal:
- case ir_binop_all_equal:
- case ir_binop_nequal:
- case ir_binop_any_nequal:
- temp = this->result;
- /* original gen4 does implicit conversion before comparison. */
- if (intel->gen < 5)
- temp.type = op[0].type;
-
- inst = emit(BRW_OPCODE_CMP, temp, op[0], op[1]);
- inst->conditional_mod = brw_conditional_for_comparison(ir->operation);
- emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(0x1));
- break;
-
- case ir_binop_logic_xor:
- emit(BRW_OPCODE_XOR, this->result, op[0], op[1]);
- break;
-
- case ir_binop_logic_or:
- emit(BRW_OPCODE_OR, this->result, op[0], op[1]);
- break;
-
- case ir_binop_logic_and:
- emit(BRW_OPCODE_AND, this->result, op[0], op[1]);
- break;
-
- case ir_binop_dot:
- case ir_unop_any:
- assert(!"not reached: should be handled by brw_fs_channel_expressions");
- break;
-
- case ir_unop_noise:
- assert(!"not reached: should be handled by lower_noise");
- break;
-
- case ir_quadop_vector:
- assert(!"not reached: should be handled by lower_quadop_vector");
- break;
-
- case ir_unop_sqrt:
- emit_math(FS_OPCODE_SQRT, this->result, op[0]);
- break;
-
- case ir_unop_rsq:
- emit_math(FS_OPCODE_RSQ, this->result, op[0]);
- break;
-
- case ir_unop_i2f:
- case ir_unop_b2f:
- case ir_unop_b2i:
- case ir_unop_f2i:
- emit(BRW_OPCODE_MOV, this->result, op[0]);
- break;
- case ir_unop_f2b:
- case ir_unop_i2b:
- temp = this->result;
- /* original gen4 does implicit conversion before comparison. */
- if (intel->gen < 5)
- temp.type = op[0].type;
-
- inst = emit(BRW_OPCODE_CMP, temp, op[0], fs_reg(0.0f));
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- inst = emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(1));
- break;
-
- case ir_unop_trunc:
- emit(BRW_OPCODE_RNDZ, this->result, op[0]);
- break;
- case ir_unop_ceil:
- op[0].negate = !op[0].negate;
- inst = emit(BRW_OPCODE_RNDD, this->result, op[0]);
- this->result.negate = true;
- break;
- case ir_unop_floor:
- inst = emit(BRW_OPCODE_RNDD, this->result, op[0]);
- break;
- case ir_unop_fract:
- inst = emit(BRW_OPCODE_FRC, this->result, op[0]);
- break;
- case ir_unop_round_even:
- emit(BRW_OPCODE_RNDE, this->result, op[0]);
- break;
-
- case ir_binop_min:
- inst = emit(BRW_OPCODE_CMP, this->result, op[0], op[1]);
- inst->conditional_mod = BRW_CONDITIONAL_L;
-
- inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]);
- inst->predicated = true;
- break;
- case ir_binop_max:
- inst = emit(BRW_OPCODE_CMP, this->result, op[0], op[1]);
- inst->conditional_mod = BRW_CONDITIONAL_G;
-
- inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]);
- inst->predicated = true;
- break;
-
- case ir_binop_pow:
- emit_math(FS_OPCODE_POW, this->result, op[0], op[1]);
- break;
-
- case ir_unop_bit_not:
- inst = emit(BRW_OPCODE_NOT, this->result, op[0]);
- break;
- case ir_binop_bit_and:
- inst = emit(BRW_OPCODE_AND, this->result, op[0], op[1]);
- break;
- case ir_binop_bit_xor:
- inst = emit(BRW_OPCODE_XOR, this->result, op[0], op[1]);
- break;
- case ir_binop_bit_or:
- inst = emit(BRW_OPCODE_OR, this->result, op[0], op[1]);
- break;
-
- case ir_unop_u2f:
- case ir_binop_lshift:
- case ir_binop_rshift:
- assert(!"GLSL 1.30 features unsupported");
- break;
- }
-}
-
-void
-fs_visitor::emit_assignment_writes(fs_reg &l, fs_reg &r,
- const glsl_type *type, bool predicated)
-{
- switch (type->base_type) {
- case GLSL_TYPE_FLOAT:
- case GLSL_TYPE_UINT:
- case GLSL_TYPE_INT:
- case GLSL_TYPE_BOOL:
- for (unsigned int i = 0; i < type->components(); i++) {
- l.type = brw_type_for_base_type(type);
- r.type = brw_type_for_base_type(type);
-
- fs_inst *inst = emit(BRW_OPCODE_MOV, l, r);
- inst->predicated = predicated;
-
- l.reg_offset++;
- r.reg_offset++;
- }
- break;
- case GLSL_TYPE_ARRAY:
- for (unsigned int i = 0; i < type->length; i++) {
- emit_assignment_writes(l, r, type->fields.array, predicated);
- }
- break;
-
- case GLSL_TYPE_STRUCT:
- for (unsigned int i = 0; i < type->length; i++) {
- emit_assignment_writes(l, r, type->fields.structure[i].type,
- predicated);
- }
- break;
-
- case GLSL_TYPE_SAMPLER:
- break;
-
- default:
- assert(!"not reached");
- break;
- }
-}
-
-void
-fs_visitor::visit(ir_assignment *ir)
-{
- struct fs_reg l, r;
- fs_inst *inst;
-
- /* FINISHME: arrays on the lhs */
- ir->lhs->accept(this);
- l = this->result;
-
- ir->rhs->accept(this);
- r = this->result;
-
- assert(l.file != BAD_FILE);
- assert(r.file != BAD_FILE);
-
- if (ir->condition) {
- emit_bool_to_cond_code(ir->condition);
- }
-
- if (ir->lhs->type->is_scalar() ||
- ir->lhs->type->is_vector()) {
- for (int i = 0; i < ir->lhs->type->vector_elements; i++) {
- if (ir->write_mask & (1 << i)) {
- inst = emit(BRW_OPCODE_MOV, l, r);
- if (ir->condition)
- inst->predicated = true;
- r.reg_offset++;
- }
- l.reg_offset++;
- }
- } else {
- emit_assignment_writes(l, r, ir->lhs->type, ir->condition != NULL);
- }
-}
-
-fs_inst *
-fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate,
- int sampler)
-{
- int mlen;
- int base_mrf = 1;
- bool simd16 = false;
- fs_reg orig_dst;
-
- /* g0 header. */
- mlen = 1;
-
- if (ir->shadow_comparitor) {
- for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
- fs_inst *inst = emit(BRW_OPCODE_MOV,
- fs_reg(MRF, base_mrf + mlen + i), coordinate);
- if (i < 3 && c->key.gl_clamp_mask[i] & (1 << sampler))
- inst->saturate = true;
-
- coordinate.reg_offset++;
- }
- /* gen4's SIMD8 sampler always has the slots for u,v,r present. */
- mlen += 3;
-
- if (ir->op == ir_tex) {
- /* There's no plain shadow compare message, so we use shadow
- * compare with a bias of 0.0.
- */
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), fs_reg(0.0f));
- mlen++;
- } else if (ir->op == ir_txb) {
- ir->lod_info.bias->accept(this);
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
- mlen++;
- } else {
- assert(ir->op == ir_txl);
- ir->lod_info.lod->accept(this);
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
- mlen++;
- }
-
- ir->shadow_comparitor->accept(this);
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
- mlen++;
- } else if (ir->op == ir_tex) {
- for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
- fs_inst *inst = emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i),
- coordinate);
- if (i < 3 && c->key.gl_clamp_mask[i] & (1 << sampler))
- inst->saturate = true;
- coordinate.reg_offset++;
- }
- /* gen4's SIMD8 sampler always has the slots for u,v,r present. */
- mlen += 3;
- } else if (ir->op == ir_txd) {
- assert(!"TXD isn't supported on gen4 yet.");
- } else {
- /* Oh joy. gen4 doesn't have SIMD8 non-shadow-compare bias/lod
- * instructions. We'll need to do SIMD16 here.
- */
- assert(ir->op == ir_txb || ir->op == ir_txl);
-
- for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
- fs_inst *inst = emit(BRW_OPCODE_MOV, fs_reg(MRF,
- base_mrf + mlen + i * 2),
- coordinate);
- if (i < 3 && c->key.gl_clamp_mask[i] & (1 << sampler))
- inst->saturate = true;
- coordinate.reg_offset++;
- }
-
- /* lod/bias appears after u/v/r. */
- mlen += 6;
-
- if (ir->op == ir_txb) {
- ir->lod_info.bias->accept(this);
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
- mlen++;
- } else {
- ir->lod_info.lod->accept(this);
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
- mlen++;
- }
-
- /* The unused upper half. */
- mlen++;
-
- /* Now, since we're doing simd16, the return is 2 interleaved
- * vec4s where the odd-indexed ones are junk. We'll need to move
- * this weirdness around to the expected layout.
- */
- simd16 = true;
- orig_dst = dst;
- dst = fs_reg(this, glsl_type::get_array_instance(glsl_type::vec4_type,
- 2));
- dst.type = BRW_REGISTER_TYPE_F;
- }
-
- fs_inst *inst = NULL;
- switch (ir->op) {
- case ir_tex:
- inst = emit(FS_OPCODE_TEX, dst);
- break;
- case ir_txb:
- inst = emit(FS_OPCODE_TXB, dst);
- break;
- case ir_txl:
- inst = emit(FS_OPCODE_TXL, dst);
- break;
- case ir_txd:
- inst = emit(FS_OPCODE_TXD, dst);
- break;
- case ir_txf:
- assert(!"GLSL 1.30 features unsupported");
- break;
- }
- inst->base_mrf = base_mrf;
- inst->mlen = mlen;
- inst->header_present = true;
-
- if (simd16) {
- for (int i = 0; i < 4; i++) {
- emit(BRW_OPCODE_MOV, orig_dst, dst);
- orig_dst.reg_offset++;
- dst.reg_offset += 2;
- }
- }
-
- return inst;
-}
-
-/* gen5's sampler has slots for u, v, r, array index, then optional
- * parameters like shadow comparitor or LOD bias. If optional
- * parameters aren't present, those base slots are optional and don't
- * need to be included in the message.
- *
- * We don't fill in the unnecessary slots regardless, which may look
- * surprising in the disassembly.
- */
-fs_inst *
-fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate,
- int sampler)
-{
- int mlen = 0;
- int base_mrf = 2;
- int reg_width = c->dispatch_width / 8;
- bool header_present = false;
-
- if (ir->offset) {
- /* The offsets set up by the ir_texture visitor are in the
- * m1 header, so we can't go headerless.
- */
- header_present = true;
- mlen++;
- base_mrf--;
- }
-
- for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
- fs_inst *inst = emit(BRW_OPCODE_MOV,
- fs_reg(MRF, base_mrf + mlen + i * reg_width),
- coordinate);
- if (i < 3 && c->key.gl_clamp_mask[i] & (1 << sampler))
- inst->saturate = true;
- coordinate.reg_offset++;
- }
- mlen += ir->coordinate->type->vector_elements * reg_width;
-
- if (ir->shadow_comparitor) {
- mlen = MAX2(mlen, header_present + 4 * reg_width);
-
- ir->shadow_comparitor->accept(this);
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
- mlen += reg_width;
- }
-
- fs_inst *inst = NULL;
- switch (ir->op) {
- case ir_tex:
- inst = emit(FS_OPCODE_TEX, dst);
- break;
- case ir_txb:
- ir->lod_info.bias->accept(this);
- mlen = MAX2(mlen, header_present + 4 * reg_width);
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
- mlen += reg_width;
-
- inst = emit(FS_OPCODE_TXB, dst);
-
- break;
- case ir_txl:
- ir->lod_info.lod->accept(this);
- mlen = MAX2(mlen, header_present + 4 * reg_width);
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
- mlen += reg_width;
-
- inst = emit(FS_OPCODE_TXL, dst);
- break;
- case ir_txd:
- case ir_txf:
- assert(!"GLSL 1.30 features unsupported");
- break;
- }
- inst->base_mrf = base_mrf;
- inst->mlen = mlen;
- inst->header_present = header_present;
-
- if (mlen > 11) {
- fail("Message length >11 disallowed by hardware\n");
- }
-
- return inst;
-}
-
-fs_inst *
-fs_visitor::emit_texture_gen7(ir_texture *ir, fs_reg dst, fs_reg coordinate,
- int sampler)
-{
- int mlen = 0;
- int base_mrf = 2;
- int reg_width = c->dispatch_width / 8;
- bool header_present = false;
-
- if (ir->offset) {
- /* The offsets set up by the ir_texture visitor are in the
- * m1 header, so we can't go headerless.
- */
- header_present = true;
- mlen++;
- base_mrf--;
- }
-
- if (ir->shadow_comparitor) {
- ir->shadow_comparitor->accept(this);
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
- mlen += reg_width;
- }
-
- /* Set up the LOD info */
- switch (ir->op) {
- case ir_tex:
- break;
- case ir_txb:
- ir->lod_info.bias->accept(this);
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
- mlen += reg_width;
- break;
- case ir_txl:
- ir->lod_info.lod->accept(this);
- emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
- mlen += reg_width;
- break;
- case ir_txd:
- case ir_txf:
- assert(!"GLSL 1.30 features unsupported");
- break;
- }
-
- /* Set up the coordinate */
- for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
- fs_inst *inst = emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen),
- coordinate);
- if (i < 3 && c->key.gl_clamp_mask[i] & (1 << sampler))
- inst->saturate = true;
- coordinate.reg_offset++;
- mlen += reg_width;
- }
-
- /* Generate the SEND */
- fs_inst *inst = NULL;
- switch (ir->op) {
- case ir_tex: inst = emit(FS_OPCODE_TEX, dst); break;
- case ir_txb: inst = emit(FS_OPCODE_TXB, dst); break;
- case ir_txl: inst = emit(FS_OPCODE_TXL, dst); break;
- case ir_txd: inst = emit(FS_OPCODE_TXD, dst); break;
- case ir_txf: assert(!"TXF unsupported.");
- }
- inst->base_mrf = base_mrf;
- inst->mlen = mlen;
- inst->header_present = header_present;
-
- if (mlen > 11) {
- fail("Message length >11 disallowed by hardware\n");
- }
-
- return inst;
-}
-
-void
-fs_visitor::visit(ir_texture *ir)
-{
- int sampler;
- fs_inst *inst = NULL;
-
- ir->coordinate->accept(this);
- fs_reg coordinate = this->result;
-
- if (ir->offset != NULL) {
- ir_constant *offset = ir->offset->as_constant();
- assert(offset != NULL);
-
- signed char offsets[3];
- for (unsigned i = 0; i < ir->offset->type->vector_elements; i++)
- offsets[i] = (signed char) offset->value.i[i];
-
- /* Combine all three offsets into a single unsigned dword:
- *
- * bits 11:8 - U Offset (X component)
- * bits 7:4 - V Offset (Y component)
- * bits 3:0 - R Offset (Z component)
- */
- unsigned offset_bits = 0;
- for (unsigned i = 0; i < ir->offset->type->vector_elements; i++) {
- const unsigned shift = 4 * (2 - i);
- offset_bits |= (offsets[i] << shift) & (0xF << shift);
- }
-
- /* Explicitly set up the message header by copying g0 to msg reg m1. */
- emit(BRW_OPCODE_MOV, fs_reg(MRF, 1, BRW_REGISTER_TYPE_UD),
- fs_reg(GRF, 0, BRW_REGISTER_TYPE_UD));
-
- /* Then set the offset bits in DWord 2 of the message header. */
- emit(BRW_OPCODE_MOV,
- fs_reg(retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 1, 2),
- BRW_REGISTER_TYPE_UD)),
- fs_reg(brw_imm_uw(offset_bits)));
- }
-
- /* Should be lowered by do_lower_texture_projection */
- assert(!ir->projector);
-
- sampler = _mesa_get_sampler_uniform_value(ir->sampler,
- ctx->Shader.CurrentFragmentProgram,
- &brw->fragment_program->Base);
- sampler = c->fp->program.Base.SamplerUnits[sampler];
-
- /* The 965 requires the EU to do the normalization of GL rectangle
- * texture coordinates. We use the program parameter state
- * tracking to get the scaling factor.
- */
- if (ir->sampler->type->sampler_dimensionality == GLSL_SAMPLER_DIM_RECT) {
- struct gl_program_parameter_list *params = c->fp->program.Base.Parameters;
- int tokens[STATE_LENGTH] = {
- STATE_INTERNAL,
- STATE_TEXRECT_SCALE,
- sampler,
- 0,
- 0
- };
-
- if (c->dispatch_width == 16) {
- fail("rectangle scale uniform setup not supported on 16-wide\n");
- this->result = fs_reg(this, ir->type);
- return;
- }
-
- c->prog_data.param_convert[c->prog_data.nr_params] =
- PARAM_NO_CONVERT;
- c->prog_data.param_convert[c->prog_data.nr_params + 1] =
- PARAM_NO_CONVERT;
-
- fs_reg scale_x = fs_reg(UNIFORM, c->prog_data.nr_params);
- fs_reg scale_y = fs_reg(UNIFORM, c->prog_data.nr_params + 1);
- GLuint index = _mesa_add_state_reference(params,
- (gl_state_index *)tokens);
-
- this->param_index[c->prog_data.nr_params] = index;
- this->param_offset[c->prog_data.nr_params] = 0;
- c->prog_data.nr_params++;
- this->param_index[c->prog_data.nr_params] = index;
- this->param_offset[c->prog_data.nr_params] = 1;
- c->prog_data.nr_params++;
-
- fs_reg dst = fs_reg(this, ir->coordinate->type);
- fs_reg src = coordinate;
- coordinate = dst;
-
- emit(BRW_OPCODE_MUL, dst, src, scale_x);
- dst.reg_offset++;
- src.reg_offset++;
- emit(BRW_OPCODE_MUL, dst, src, scale_y);
- }
-
- /* Writemasking doesn't eliminate channels on SIMD8 texture
- * samples, so don't worry about them.
- */
- fs_reg dst = fs_reg(this, glsl_type::vec4_type);
-
- if (intel->gen >= 7) {
- inst = emit_texture_gen7(ir, dst, coordinate, sampler);
- } else if (intel->gen >= 5) {
- inst = emit_texture_gen5(ir, dst, coordinate, sampler);
- } else {
- inst = emit_texture_gen4(ir, dst, coordinate, sampler);
- }
-
- /* If there's an offset, we already set up m1. To avoid the implied move,
- * use the null register. Otherwise, we want an implied move from g0.
- */
- if (ir->offset != NULL || !inst->header_present)
- inst->src[0] = fs_reg(brw_null_reg());
- else
- inst->src[0] = fs_reg(retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UW));
-
- inst->sampler = sampler;
-
- this->result = dst;
-
- if (ir->shadow_comparitor)
- inst->shadow_compare = true;
-
- if (ir->type == glsl_type::float_type) {
- /* Ignore DEPTH_TEXTURE_MODE swizzling. */
- assert(ir->sampler->type->sampler_shadow);
- } else if (c->key.tex_swizzles[inst->sampler] != SWIZZLE_NOOP) {
- fs_reg swizzle_dst = fs_reg(this, glsl_type::vec4_type);
-
- for (int i = 0; i < 4; i++) {
- int swiz = GET_SWZ(c->key.tex_swizzles[inst->sampler], i);
- fs_reg l = swizzle_dst;
- l.reg_offset += i;
-
- if (swiz == SWIZZLE_ZERO) {
- emit(BRW_OPCODE_MOV, l, fs_reg(0.0f));
- } else if (swiz == SWIZZLE_ONE) {
- emit(BRW_OPCODE_MOV, l, fs_reg(1.0f));
- } else {
- fs_reg r = dst;
- r.reg_offset += GET_SWZ(c->key.tex_swizzles[inst->sampler], i);
- emit(BRW_OPCODE_MOV, l, r);
- }
- }
- this->result = swizzle_dst;
- }
-}
-
-void
-fs_visitor::visit(ir_swizzle *ir)
-{
- ir->val->accept(this);
- fs_reg val = this->result;
-
- if (ir->type->vector_elements == 1) {
- this->result.reg_offset += ir->mask.x;
- return;
- }
-
- fs_reg result = fs_reg(this, ir->type);
- this->result = result;
-
- for (unsigned int i = 0; i < ir->type->vector_elements; i++) {
- fs_reg channel = val;
- int swiz = 0;
-
- switch (i) {
- case 0:
- swiz = ir->mask.x;
- break;
- case 1:
- swiz = ir->mask.y;
- break;
- case 2:
- swiz = ir->mask.z;
- break;
- case 3:
- swiz = ir->mask.w;
- break;
- }
-
- channel.reg_offset += swiz;
- emit(BRW_OPCODE_MOV, result, channel);
- result.reg_offset++;
- }
-}
-
-void
-fs_visitor::visit(ir_discard *ir)
-{
- assert(ir->condition == NULL); /* FINISHME */
-
- emit(FS_OPCODE_DISCARD);
- kill_emitted = true;
-}
-
-void
-fs_visitor::visit(ir_constant *ir)
-{
- /* Set this->result to reg at the bottom of the function because some code
- * paths will cause this visitor to be applied to other fields. This will
- * cause the value stored in this->result to be modified.
- *
- * Make reg constant so that it doesn't get accidentally modified along the
- * way. Yes, I actually had this problem. :(
- */
- const fs_reg reg(this, ir->type);
- fs_reg dst_reg = reg;
-
- if (ir->type->is_array()) {
- const unsigned size = type_size(ir->type->fields.array);
-
- for (unsigned i = 0; i < ir->type->length; i++) {
- ir->array_elements[i]->accept(this);
- fs_reg src_reg = this->result;
-
- dst_reg.type = src_reg.type;
- for (unsigned j = 0; j < size; j++) {
- emit(BRW_OPCODE_MOV, dst_reg, src_reg);
- src_reg.reg_offset++;
- dst_reg.reg_offset++;
- }
- }
- } else if (ir->type->is_record()) {
- foreach_list(node, &ir->components) {
- ir_instruction *const field = (ir_instruction *) node;
- const unsigned size = type_size(field->type);
-
- field->accept(this);
- fs_reg src_reg = this->result;
-
- dst_reg.type = src_reg.type;
- for (unsigned j = 0; j < size; j++) {
- emit(BRW_OPCODE_MOV, dst_reg, src_reg);
- src_reg.reg_offset++;
- dst_reg.reg_offset++;
- }
- }
- } else {
- const unsigned size = type_size(ir->type);
-
- for (unsigned i = 0; i < size; i++) {
- switch (ir->type->base_type) {
- case GLSL_TYPE_FLOAT:
- emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.f[i]));
- break;
- case GLSL_TYPE_UINT:
- emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.u[i]));
- break;
- case GLSL_TYPE_INT:
- emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.i[i]));
- break;
- case GLSL_TYPE_BOOL:
- emit(BRW_OPCODE_MOV, dst_reg, fs_reg((int)ir->value.b[i]));
- break;
- default:
- assert(!"Non-float/uint/int/bool constant");
- }
- dst_reg.reg_offset++;
- }
- }
-
- this->result = reg;
-}
-
-void
-fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir)
-{
- ir_expression *expr = ir->as_expression();
-
- if (expr) {
- fs_reg op[2];
- fs_inst *inst;
-
- assert(expr->get_num_operands() <= 2);
- for (unsigned int i = 0; i < expr->get_num_operands(); i++) {
- assert(expr->operands[i]->type->is_scalar());
-
- expr->operands[i]->accept(this);
- op[i] = this->result;
- }
-
- switch (expr->operation) {
- case ir_unop_logic_not:
- inst = emit(BRW_OPCODE_AND, reg_null_d, op[0], fs_reg(1));
- inst->conditional_mod = BRW_CONDITIONAL_Z;
- break;
-
- case ir_binop_logic_xor:
- inst = emit(BRW_OPCODE_XOR, reg_null_d, op[0], op[1]);
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- break;
-
- case ir_binop_logic_or:
- inst = emit(BRW_OPCODE_OR, reg_null_d, op[0], op[1]);
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- break;
-
- case ir_binop_logic_and:
- inst = emit(BRW_OPCODE_AND, reg_null_d, op[0], op[1]);
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- break;
-
- case ir_unop_f2b:
- if (intel->gen >= 6) {
- inst = emit(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0.0f));
- } else {
- inst = emit(BRW_OPCODE_MOV, reg_null_f, op[0]);
- }
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- break;
-
- case ir_unop_i2b:
- if (intel->gen >= 6) {
- inst = emit(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0));
- } else {
- inst = emit(BRW_OPCODE_MOV, reg_null_d, op[0]);
- }
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- break;
-
- case ir_binop_greater:
- case ir_binop_gequal:
- case ir_binop_less:
- case ir_binop_lequal:
- case ir_binop_equal:
- case ir_binop_all_equal:
- case ir_binop_nequal:
- case ir_binop_any_nequal:
- inst = emit(BRW_OPCODE_CMP, reg_null_cmp, op[0], op[1]);
- inst->conditional_mod =
- brw_conditional_for_comparison(expr->operation);
- break;
-
- default:
- assert(!"not reached");
- fail("bad cond code\n");
- break;
- }
- return;
- }
-
- ir->accept(this);
-
- if (intel->gen >= 6) {
- fs_inst *inst = emit(BRW_OPCODE_AND, reg_null_d, this->result, fs_reg(1));
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- } else {
- fs_inst *inst = emit(BRW_OPCODE_MOV, reg_null_d, this->result);
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- }
-}
-
-/**
- * Emit a gen6 IF statement with the comparison folded into the IF
- * instruction.
- */
-void
-fs_visitor::emit_if_gen6(ir_if *ir)
-{
- ir_expression *expr = ir->condition->as_expression();
-
- if (expr) {
- fs_reg op[2];
- fs_inst *inst;
- fs_reg temp;
-
- assert(expr->get_num_operands() <= 2);
- for (unsigned int i = 0; i < expr->get_num_operands(); i++) {
- assert(expr->operands[i]->type->is_scalar());
-
- expr->operands[i]->accept(this);
- op[i] = this->result;
- }
-
- switch (expr->operation) {
- case ir_unop_logic_not:
- inst = emit(BRW_OPCODE_IF, temp, op[0], fs_reg(0));
- inst->conditional_mod = BRW_CONDITIONAL_Z;
- return;
-
- case ir_binop_logic_xor:
- inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], op[1]);
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- return;
-
- case ir_binop_logic_or:
- temp = fs_reg(this, glsl_type::bool_type);
- emit(BRW_OPCODE_OR, temp, op[0], op[1]);
- inst = emit(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0));
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- return;
-
- case ir_binop_logic_and:
- temp = fs_reg(this, glsl_type::bool_type);
- emit(BRW_OPCODE_AND, temp, op[0], op[1]);
- inst = emit(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0));
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- return;
-
- case ir_unop_f2b:
- inst = emit(BRW_OPCODE_IF, reg_null_f, op[0], fs_reg(0));
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- return;
-
- case ir_unop_i2b:
- inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0));
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- return;
-
- case ir_binop_greater:
- case ir_binop_gequal:
- case ir_binop_less:
- case ir_binop_lequal:
- case ir_binop_equal:
- case ir_binop_all_equal:
- case ir_binop_nequal:
- case ir_binop_any_nequal:
- inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], op[1]);
- inst->conditional_mod =
- brw_conditional_for_comparison(expr->operation);
- return;
- default:
- assert(!"not reached");
- inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0));
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
- fail("bad condition\n");
- return;
- }
- return;
- }
-
- ir->condition->accept(this);
-
- fs_inst *inst = emit(BRW_OPCODE_IF, reg_null_d, this->result, fs_reg(0));
- inst->conditional_mod = BRW_CONDITIONAL_NZ;
-}
-
-void
-fs_visitor::visit(ir_if *ir)
-{
- fs_inst *inst;
-
- if (intel->gen != 6 && c->dispatch_width == 16) {
- fail("Can't support (non-uniform) control flow on 16-wide\n");
- }
-
- /* Don't point the annotation at the if statement, because then it plus
- * the then and else blocks get printed.
- */
- this->base_ir = ir->condition;
-
- if (intel->gen == 6) {
- emit_if_gen6(ir);
- } else {
- emit_bool_to_cond_code(ir->condition);
-
- inst = emit(BRW_OPCODE_IF);
- inst->predicated = true;
- }
-
- foreach_iter(exec_list_iterator, iter, ir->then_instructions) {
- ir_instruction *ir = (ir_instruction *)iter.get();
- this->base_ir = ir;
-
- ir->accept(this);
- }
-
- if (!ir->else_instructions.is_empty()) {
- emit(BRW_OPCODE_ELSE);
-
- foreach_iter(exec_list_iterator, iter, ir->else_instructions) {
- ir_instruction *ir = (ir_instruction *)iter.get();
- this->base_ir = ir;
-
- ir->accept(this);
- }
- }
-
- emit(BRW_OPCODE_ENDIF);
-}
-
-void
-fs_visitor::visit(ir_loop *ir)
-{
- fs_reg counter = reg_undef;
-
- if (c->dispatch_width == 16) {
- fail("Can't support (non-uniform) control flow on 16-wide\n");
- }
-
- if (ir->counter) {
- this->base_ir = ir->counter;
- ir->counter->accept(this);
- counter = *(variable_storage(ir->counter));
-
- if (ir->from) {
- this->base_ir = ir->from;
- ir->from->accept(this);
-
- emit(BRW_OPCODE_MOV, counter, this->result);
- }
- }
-
- emit(BRW_OPCODE_DO);
-
- if (ir->to) {
- this->base_ir = ir->to;
- ir->to->accept(this);
-
- fs_inst *inst = emit(BRW_OPCODE_CMP, reg_null_cmp, counter, this->result);
- inst->conditional_mod = brw_conditional_for_comparison(ir->cmp);
-
- inst = emit(BRW_OPCODE_BREAK);
- inst->predicated = true;
- }
-
- foreach_iter(exec_list_iterator, iter, ir->body_instructions) {
- ir_instruction *ir = (ir_instruction *)iter.get();
-
- this->base_ir = ir;
- ir->accept(this);
- }
-
- if (ir->increment) {
- this->base_ir = ir->increment;
- ir->increment->accept(this);
- emit(BRW_OPCODE_ADD, counter, counter, this->result);
- }
-
- emit(BRW_OPCODE_WHILE);
-}
-
-void
-fs_visitor::visit(ir_loop_jump *ir)
-{
- switch (ir->mode) {
- case ir_loop_jump::jump_break:
- emit(BRW_OPCODE_BREAK);
- break;
- case ir_loop_jump::jump_continue:
- emit(BRW_OPCODE_CONTINUE);
- break;
- }
-}
-
-void
-fs_visitor::visit(ir_call *ir)
-{
- assert(!"FINISHME");
-}
-
-void
-fs_visitor::visit(ir_return *ir)
-{
- assert(!"FINISHME");
-}
-
-void
-fs_visitor::visit(ir_function *ir)
-{
- /* Ignore function bodies other than main() -- we shouldn't see calls to
- * them since they should all be inlined before we get to ir_to_mesa.
- */
- if (strcmp(ir->name, "main") == 0) {
- const ir_function_signature *sig;
- exec_list empty;
-
- sig = ir->matching_signature(&empty);
-
- assert(sig);
-
- foreach_iter(exec_list_iterator, iter, sig->body) {
- ir_instruction *ir = (ir_instruction *)iter.get();
- this->base_ir = ir;
-
- ir->accept(this);
- }
- }
-}
-
-void
-fs_visitor::visit(ir_function_signature *ir)
-{
- assert(!"not reached");
- (void)ir;
-}
-
-fs_inst *
-fs_visitor::emit(fs_inst inst)
-{
- fs_inst *list_inst = new(mem_ctx) fs_inst;
- *list_inst = inst;
-
- if (force_uncompressed_stack > 0)
- list_inst->force_uncompressed = true;
- else if (force_sechalf_stack > 0)
- list_inst->force_sechalf = true;
-
- list_inst->annotation = this->current_annotation;
- list_inst->ir = this->base_ir;
-
- this->instructions.push_tail(list_inst);
-
- return list_inst;
-}
-
-/** Emits a dummy fragment shader consisting of magenta for bringup purposes. */
-void
-fs_visitor::emit_dummy_fs()
-{
- /* Everyone's favorite color. */
- emit(BRW_OPCODE_MOV, fs_reg(MRF, 2), fs_reg(1.0f));
- emit(BRW_OPCODE_MOV, fs_reg(MRF, 3), fs_reg(0.0f));
- emit(BRW_OPCODE_MOV, fs_reg(MRF, 4), fs_reg(1.0f));
- emit(BRW_OPCODE_MOV, fs_reg(MRF, 5), fs_reg(0.0f));
-
- fs_inst *write;
- write = emit(FS_OPCODE_FB_WRITE, fs_reg(0), fs_reg(0));
- write->base_mrf = 0;
-}
-
-/* The register location here is relative to the start of the URB
- * data. It will get adjusted to be a real location before
- * generate_code() time.
- */
-struct brw_reg
-fs_visitor::interp_reg(int location, int channel)
-{
- int regnr = urb_setup[location] * 2 + channel / 2;
- int stride = (channel & 1) * 4;
-
- assert(urb_setup[location] != -1);
-
- return brw_vec1_grf(regnr, stride);
-}
-
-/** Emits the interpolation for the varying inputs. */
-void
-fs_visitor::emit_interpolation_setup_gen4()
-{
- this->current_annotation = "compute pixel centers";
- this->pixel_x = fs_reg(this, glsl_type::uint_type);
- this->pixel_y = fs_reg(this, glsl_type::uint_type);
- this->pixel_x.type = BRW_REGISTER_TYPE_UW;
- this->pixel_y.type = BRW_REGISTER_TYPE_UW;
-
- emit(FS_OPCODE_PIXEL_X, this->pixel_x);
- emit(FS_OPCODE_PIXEL_Y, this->pixel_y);
-
- this->current_annotation = "compute pixel deltas from v0";
- if (brw->has_pln) {
- this->delta_x = fs_reg(this, glsl_type::vec2_type);
- this->delta_y = this->delta_x;
- this->delta_y.reg_offset++;
- } else {
- this->delta_x = fs_reg(this, glsl_type::float_type);
- this->delta_y = fs_reg(this, glsl_type::float_type);
- }
- emit(BRW_OPCODE_ADD, this->delta_x,
- this->pixel_x, fs_reg(negate(brw_vec1_grf(1, 0))));
- emit(BRW_OPCODE_ADD, this->delta_y,
- this->pixel_y, fs_reg(negate(brw_vec1_grf(1, 1))));
-
- this->current_annotation = "compute pos.w and 1/pos.w";
- /* Compute wpos.w. It's always in our setup, since it's needed to
- * interpolate the other attributes.
- */
- this->wpos_w = fs_reg(this, glsl_type::float_type);
- emit(FS_OPCODE_LINTERP, wpos_w, this->delta_x, this->delta_y,
- interp_reg(FRAG_ATTRIB_WPOS, 3));
- /* Compute the pixel 1/W value from wpos.w. */
- this->pixel_w = fs_reg(this, glsl_type::float_type);
- emit_math(FS_OPCODE_RCP, this->pixel_w, wpos_w);
- this->current_annotation = NULL;
-}
-
-/** Emits the interpolation for the varying inputs. */
-void
-fs_visitor::emit_interpolation_setup_gen6()
-{
- struct brw_reg g1_uw = retype(brw_vec1_grf(1, 0), BRW_REGISTER_TYPE_UW);
-
- /* If the pixel centers end up used, the setup is the same as for gen4. */
- this->current_annotation = "compute pixel centers";
- fs_reg int_pixel_x = fs_reg(this, glsl_type::uint_type);
- fs_reg int_pixel_y = fs_reg(this, glsl_type::uint_type);
- int_pixel_x.type = BRW_REGISTER_TYPE_UW;
- int_pixel_y.type = BRW_REGISTER_TYPE_UW;
- emit(BRW_OPCODE_ADD,
- int_pixel_x,
- fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)),
- fs_reg(brw_imm_v(0x10101010)));
- emit(BRW_OPCODE_ADD,
- int_pixel_y,
- fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)),
- fs_reg(brw_imm_v(0x11001100)));
-
- /* As of gen6, we can no longer mix float and int sources. We have
- * to turn the integer pixel centers into floats for their actual
- * use.
- */
- this->pixel_x = fs_reg(this, glsl_type::float_type);
- this->pixel_y = fs_reg(this, glsl_type::float_type);
- emit(BRW_OPCODE_MOV, this->pixel_x, int_pixel_x);
- emit(BRW_OPCODE_MOV, this->pixel_y, int_pixel_y);
-
- this->current_annotation = "compute pos.w";
- this->pixel_w = fs_reg(brw_vec8_grf(c->source_w_reg, 0));
- this->wpos_w = fs_reg(this, glsl_type::float_type);
- emit_math(FS_OPCODE_RCP, this->wpos_w, this->pixel_w);
-
- this->delta_x = fs_reg(brw_vec8_grf(2, 0));
- this->delta_y = fs_reg(brw_vec8_grf(3, 0));
-
- this->current_annotation = NULL;
-}
-
-void
-fs_visitor::emit_color_write(int index, int first_color_mrf, fs_reg color)
-{
- int reg_width = c->dispatch_width / 8;
-
- if (c->dispatch_width == 8 || intel->gen == 6) {
- /* SIMD8 write looks like:
- * m + 0: r0
- * m + 1: r1
- * m + 2: g0
- * m + 3: g1
- *
- * gen6 SIMD16 DP write looks like:
- * m + 0: r0
- * m + 1: r1
- * m + 2: g0
- * m + 3: g1
- * m + 4: b0
- * m + 5: b1
- * m + 6: a0
- * m + 7: a1
- */
- emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index * reg_width),
- color);
- } else {
- /* pre-gen6 SIMD16 single source DP write looks like:
- * m + 0: r0
- * m + 1: g0
- * m + 2: b0
- * m + 3: a0
- * m + 4: r1
- * m + 5: g1
- * m + 6: b1
- * m + 7: a1
- */
- if (brw->has_compr4) {
- /* By setting the high bit of the MRF register number, we
- * indicate that we want COMPR4 mode - instead of doing the
- * usual destination + 1 for the second half we get
- * destination + 4.
- */
- emit(BRW_OPCODE_MOV,
- fs_reg(MRF, BRW_MRF_COMPR4 + first_color_mrf + index), color);
- } else {
- push_force_uncompressed();
- emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index), color);
- pop_force_uncompressed();
-
- push_force_sechalf();
- color.sechalf = true;
- emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index + 4), color);
- pop_force_sechalf();
- color.sechalf = false;
- }
- }
-}
-
-void
-fs_visitor::emit_fb_writes()
-{
- this->current_annotation = "FB write header";
- GLboolean header_present = GL_TRUE;
- int nr = 0;
- int reg_width = c->dispatch_width / 8;
-
- if (intel->gen >= 6 &&
- !this->kill_emitted &&
- c->key.nr_color_regions == 1) {
- header_present = false;
- }
-
- if (header_present) {
- /* m0, m1 header */
- nr += 2;
- }
-
- if (c->aa_dest_stencil_reg) {
- push_force_uncompressed();
- emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++),
- fs_reg(brw_vec8_grf(c->aa_dest_stencil_reg, 0)));
- pop_force_uncompressed();
- }
-
- /* Reserve space for color. It'll be filled in per MRT below. */
- int color_mrf = nr;
- nr += 4 * reg_width;
-
- if (c->source_depth_to_render_target) {
- if (intel->gen == 6 && c->dispatch_width == 16) {
- /* For outputting oDepth on gen6, SIMD8 writes have to be
- * used. This would require 8-wide moves of each half to
- * message regs, kind of like pre-gen5 SIMD16 FB writes.
- * Just bail on doing so for now.
- */
- fail("Missing support for simd16 depth writes on gen6\n");
- }
-
- if (c->computes_depth) {
- /* Hand over gl_FragDepth. */
- assert(this->frag_depth);
- fs_reg depth = *(variable_storage(this->frag_depth));
-
- emit(BRW_OPCODE_MOV, fs_reg(MRF, nr), depth);
- } else {
- /* Pass through the payload depth. */
- emit(BRW_OPCODE_MOV, fs_reg(MRF, nr),
- fs_reg(brw_vec8_grf(c->source_depth_reg, 0)));
- }
- nr += reg_width;
- }
-
- if (c->dest_depth_reg) {
- emit(BRW_OPCODE_MOV, fs_reg(MRF, nr),
- fs_reg(brw_vec8_grf(c->dest_depth_reg, 0)));
- nr += reg_width;
- }
-
- fs_reg color = reg_undef;
- if (this->frag_color)
- color = *(variable_storage(this->frag_color));
- else if (this->frag_data) {
- color = *(variable_storage(this->frag_data));
- color.type = BRW_REGISTER_TYPE_F;
- }
-
- for (int target = 0; target < c->key.nr_color_regions; target++) {
- this->current_annotation = ralloc_asprintf(this->mem_ctx,
- "FB write target %d",
- target);
- if (this->frag_color || this->frag_data) {
- for (int i = 0; i < 4; i++) {
- emit_color_write(i, color_mrf, color);
- color.reg_offset++;
- }
- }
-
- if (this->frag_color)
- color.reg_offset -= 4;
-
- fs_inst *inst = emit(FS_OPCODE_FB_WRITE);
- inst->target = target;
- inst->base_mrf = 0;
- inst->mlen = nr;
- if (target == c->key.nr_color_regions - 1)
- inst->eot = true;
- inst->header_present = header_present;
- }
-
- if (c->key.nr_color_regions == 0) {
- if (c->key.alpha_test && (this->frag_color || this->frag_data)) {
- /* If the alpha test is enabled but there's no color buffer,
- * we still need to send alpha out the pipeline to our null
- * renderbuffer.
- */
- color.reg_offset += 3;
- emit_color_write(3, color_mrf, color);
- }
-
- fs_inst *inst = emit(FS_OPCODE_FB_WRITE);
- inst->base_mrf = 0;
- inst->mlen = nr;
- inst->eot = true;
- inst->header_present = header_present;
- }
-
- this->current_annotation = NULL;
-}
-
-void
-fs_visitor::generate_fb_write(fs_inst *inst)
-{
- GLboolean eot = inst->eot;
- struct brw_reg implied_header;
-
- /* Header is 2 regs, g0 and g1 are the contents. g0 will be implied
- * move, here's g1.
- */
- brw_push_insn_state(p);
- brw_set_mask_control(p, BRW_MASK_DISABLE);
- brw_set_compression_control(p, BRW_COMPRESSION_NONE);
-
- if (inst->header_present) {
- if (intel->gen >= 6) {
- brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED);
- brw_MOV(p,
- retype(brw_message_reg(inst->base_mrf), BRW_REGISTER_TYPE_UD),
- retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UD));
- brw_set_compression_control(p, BRW_COMPRESSION_NONE);
-
- if (inst->target > 0) {
- /* Set the render target index for choosing BLEND_STATE. */
- brw_MOV(p, retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 0, 2),
- BRW_REGISTER_TYPE_UD),
- brw_imm_ud(inst->target));
- }
-
- implied_header = brw_null_reg();
- } else {
- implied_header = retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UW);
-
- brw_MOV(p,
- brw_message_reg(inst->base_mrf + 1),
- brw_vec8_grf(1, 0));
- }
- } else {
- implied_header = brw_null_reg();
- }
-
- brw_pop_insn_state(p);
-
- brw_fb_WRITE(p,
- c->dispatch_width,
- inst->base_mrf,
- implied_header,
- inst->target,
- inst->mlen,
- 0,
- eot,
- inst->header_present);
-}
-
-/* Computes the integer pixel x,y values from the origin.
- *
- * This is the basis of gl_FragCoord computation, but is also used
- * pre-gen6 for computing the deltas from v0 for computing
- * interpolation.
- */
-void
-fs_visitor::generate_pixel_xy(struct brw_reg dst, bool is_x)
-{
- struct brw_reg g1_uw = retype(brw_vec1_grf(1, 0), BRW_REGISTER_TYPE_UW);
- struct brw_reg src;
- struct brw_reg deltas;
-
- if (is_x) {
- src = stride(suboffset(g1_uw, 4), 2, 4, 0);
- deltas = brw_imm_v(0x10101010);
- } else {
- src = stride(suboffset(g1_uw, 5), 2, 4, 0);
- deltas = brw_imm_v(0x11001100);
- }
-
- if (c->dispatch_width == 16) {
- dst = vec16(dst);
- }
-
- /* We do this 8 or 16-wide, but since the destination is UW we
- * don't do compression in the 16-wide case.
- */
- brw_push_insn_state(p);
- brw_set_compression_control(p, BRW_COMPRESSION_NONE);
- brw_ADD(p, dst, src, deltas);
- brw_pop_insn_state(p);
-}
-
-void
-fs_visitor::generate_linterp(fs_inst *inst,
- struct brw_reg dst, struct brw_reg *src)
-{
- struct brw_reg delta_x = src[0];
- struct brw_reg delta_y = src[1];
- struct brw_reg interp = src[2];
-
- if (brw->has_pln &&
- delta_y.nr == delta_x.nr + 1 &&
- (intel->gen >= 6 || (delta_x.nr & 1) == 0)) {
- brw_PLN(p, dst, interp, delta_x);
- } else {
- brw_LINE(p, brw_null_reg(), interp, delta_x);
- brw_MAC(p, dst, suboffset(interp, 1), delta_y);
- }
-}
-
-void
-fs_visitor::generate_math(fs_inst *inst,
- struct brw_reg dst, struct brw_reg *src)
-{
- int op;
-
- switch (inst->opcode) {
- case FS_OPCODE_RCP:
- op = BRW_MATH_FUNCTION_INV;
- break;
- case FS_OPCODE_RSQ:
- op = BRW_MATH_FUNCTION_RSQ;
- break;
- case FS_OPCODE_SQRT:
- op = BRW_MATH_FUNCTION_SQRT;
- break;
- case FS_OPCODE_EXP2:
- op = BRW_MATH_FUNCTION_EXP;
- break;
- case FS_OPCODE_LOG2:
- op = BRW_MATH_FUNCTION_LOG;
- break;
- case FS_OPCODE_POW:
- op = BRW_MATH_FUNCTION_POW;
- break;
- case FS_OPCODE_SIN:
- op = BRW_MATH_FUNCTION_SIN;
- break;
- case FS_OPCODE_COS:
- op = BRW_MATH_FUNCTION_COS;
- break;
- default:
- assert(!"not reached: unknown math function");
- op = 0;
- break;
- }
-
- if (intel->gen >= 6) {
- assert(inst->mlen == 0);
-
- if (inst->opcode == FS_OPCODE_POW) {
- brw_set_compression_control(p, BRW_COMPRESSION_NONE);
- brw_math2(p, dst, op, src[0], src[1]);
-
- if (c->dispatch_width == 16) {
- brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF);
- brw_math2(p, sechalf(dst), op, sechalf(src[0]), sechalf(src[1]));
- brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED);
- }
- } else {
- brw_set_compression_control(p, BRW_COMPRESSION_NONE);
- brw_math(p, dst,
- op,
- inst->saturate ? BRW_MATH_SATURATE_SATURATE :
- BRW_MATH_SATURATE_NONE,
- 0, src[0],
- BRW_MATH_DATA_VECTOR,
- BRW_MATH_PRECISION_FULL);
-
- if (c->dispatch_width == 16) {
- brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF);
- brw_math(p, sechalf(dst),
- op,
- inst->saturate ? BRW_MATH_SATURATE_SATURATE :
- BRW_MATH_SATURATE_NONE,
- 0, sechalf(src[0]),
- BRW_MATH_DATA_VECTOR,
- BRW_MATH_PRECISION_FULL);
- brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED);
- }
- }
- } else /* gen <= 5 */{
- assert(inst->mlen >= 1);
-
- brw_set_compression_control(p, BRW_COMPRESSION_NONE);
- brw_math(p, dst,
- op,
- inst->saturate ? BRW_MATH_SATURATE_SATURATE :
- BRW_MATH_SATURATE_NONE,
- inst->base_mrf, src[0],
- BRW_MATH_DATA_VECTOR,
- BRW_MATH_PRECISION_FULL);
-
- if (c->dispatch_width == 16) {
- brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF);
- brw_math(p, sechalf(dst),
- op,
- inst->saturate ? BRW_MATH_SATURATE_SATURATE :
- BRW_MATH_SATURATE_NONE,
- inst->base_mrf + 1, sechalf(src[0]),
- BRW_MATH_DATA_VECTOR,
- BRW_MATH_PRECISION_FULL);
-
- brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED);
- }
- }
-}
-
-void
-fs_visitor::generate_tex(fs_inst *inst, struct brw_reg dst, struct brw_reg src)
-{
- int msg_type = -1;
- int rlen = 4;
- uint32_t simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD8;
-
- if (c->dispatch_width == 16)
- simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD16;
-
- if (intel->gen >= 5) {
- switch (inst->opcode) {
- case FS_OPCODE_TEX:
- if (inst->shadow_compare) {
- msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_COMPARE;
- } else {
- msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE;
- }
- break;
- case FS_OPCODE_TXB:
- if (inst->shadow_compare) {
- msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_BIAS_COMPARE;
- } else {
- msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_BIAS;
- }
- break;
- case FS_OPCODE_TXL:
- if (inst->shadow_compare) {
- msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_LOD_COMPARE;
- } else {
- msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_LOD;
- }
- break;
- case FS_OPCODE_TXD:
- assert(!"TXD isn't supported on gen5+ yet.");
- break;
- }
- } else {
- switch (inst->opcode) {
- case FS_OPCODE_TEX:
- /* Note that G45 and older determines shadow compare and dispatch width
- * from message length for most messages.
- */
- assert(c->dispatch_width == 8);
- msg_type = BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE;
- if (inst->shadow_compare) {
- assert(inst->mlen == 6);
- } else {
- assert(inst->mlen <= 4);
- }
- break;
- case FS_OPCODE_TXB:
- if (inst->shadow_compare) {
- assert(inst->mlen == 6);
- msg_type = BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_BIAS_COMPARE;
- } else {
- assert(inst->mlen == 9);
- msg_type = BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_BIAS;
- simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD16;
- }
- break;
- case FS_OPCODE_TXL:
- if (inst->shadow_compare) {
- assert(inst->mlen == 6);
- msg_type = BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_LOD_COMPARE;
- } else {
- assert(inst->mlen == 9);
- msg_type = BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_LOD;
- simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD16;
- }
- break;
- case FS_OPCODE_TXD:
- assert(!"TXD isn't supported on gen4 yet.");
- break;
- }
- }
- assert(msg_type != -1);
-
- if (simd_mode == BRW_SAMPLER_SIMD_MODE_SIMD16) {
- rlen = 8;
- dst = vec16(dst);
- }
-
- brw_SAMPLE(p,
- retype(dst, BRW_REGISTER_TYPE_UW),
- inst->base_mrf,
- src,
- SURF_INDEX_TEXTURE(inst->sampler),
- inst->sampler,
- WRITEMASK_XYZW,
- msg_type,
- rlen,
- inst->mlen,
- 0,
- inst->header_present,
- simd_mode);
-}
-
-
-/* For OPCODE_DDX and OPCODE_DDY, per channel of output we've got input
- * looking like:
- *
- * arg0: ss0.tl ss0.tr ss0.bl ss0.br ss1.tl ss1.tr ss1.bl ss1.br
- *
- * and we're trying to produce:
- *
- * DDX DDY
- * dst: (ss0.tr - ss0.tl) (ss0.tl - ss0.bl)
- * (ss0.tr - ss0.tl) (ss0.tr - ss0.br)
- * (ss0.br - ss0.bl) (ss0.tl - ss0.bl)
- * (ss0.br - ss0.bl) (ss0.tr - ss0.br)
- * (ss1.tr - ss1.tl) (ss1.tl - ss1.bl)
- * (ss1.tr - ss1.tl) (ss1.tr - ss1.br)
- * (ss1.br - ss1.bl) (ss1.tl - ss1.bl)
- * (ss1.br - ss1.bl) (ss1.tr - ss1.br)
- *
- * and add another set of two more subspans if in 16-pixel dispatch mode.
- *
- * For DDX, it ends up being easy: width = 2, horiz=0 gets us the same result
- * for each pair, and vertstride = 2 jumps us 2 elements after processing a
- * pair. But for DDY, it's harder, as we want to produce the pairs swizzled
- * between each other. We could probably do it like ddx and swizzle the right
- * order later, but bail for now and just produce
- * ((ss0.tl - ss0.bl)x4 (ss1.tl - ss1.bl)x4)
- */
-void
-fs_visitor::generate_ddx(fs_inst *inst, struct brw_reg dst, struct brw_reg src)
-{
- struct brw_reg src0 = brw_reg(src.file, src.nr, 1,
- BRW_REGISTER_TYPE_F,
- BRW_VERTICAL_STRIDE_2,
- BRW_WIDTH_2,
- BRW_HORIZONTAL_STRIDE_0,
- BRW_SWIZZLE_XYZW, WRITEMASK_XYZW);
- struct brw_reg src1 = brw_reg(src.file, src.nr, 0,
- BRW_REGISTER_TYPE_F,
- BRW_VERTICAL_STRIDE_2,
- BRW_WIDTH_2,
- BRW_HORIZONTAL_STRIDE_0,
- BRW_SWIZZLE_XYZW, WRITEMASK_XYZW);
- brw_ADD(p, dst, src0, negate(src1));
-}
-
-void
-fs_visitor::generate_ddy(fs_inst *inst, struct brw_reg dst, struct brw_reg src)
-{
- struct brw_reg src0 = brw_reg(src.file, src.nr, 0,
- BRW_REGISTER_TYPE_F,
- BRW_VERTICAL_STRIDE_4,
- BRW_WIDTH_4,
- BRW_HORIZONTAL_STRIDE_0,
- BRW_SWIZZLE_XYZW, WRITEMASK_XYZW);
- struct brw_reg src1 = brw_reg(src.file, src.nr, 2,
- BRW_REGISTER_TYPE_F,
- BRW_VERTICAL_STRIDE_4,
- BRW_WIDTH_4,
- BRW_HORIZONTAL_STRIDE_0,
- BRW_SWIZZLE_XYZW, WRITEMASK_XYZW);
- brw_ADD(p, dst, src0, negate(src1));
-}
-
-void
-fs_visitor::generate_discard(fs_inst *inst)
-{
- struct brw_reg f0 = brw_flag_reg();
-
- if (intel->gen >= 6) {
- struct brw_reg g1 = retype(brw_vec1_grf(1, 7), BRW_REGISTER_TYPE_UW);
- struct brw_reg some_register;
-
- /* As of gen6, we no longer have the mask register to look at,
- * so life gets a bit more complicated.
- */
-
- /* Load the flag register with all ones. */
- brw_push_insn_state(p);
- brw_set_mask_control(p, BRW_MASK_DISABLE);
- brw_MOV(p, f0, brw_imm_uw(0xffff));
- brw_pop_insn_state(p);
-
- /* Do a comparison that should always fail, to produce 0s in the flag
- * reg where we have active channels.
- */
- some_register = retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UW);
- brw_CMP(p, retype(brw_null_reg(), BRW_REGISTER_TYPE_UD),
- BRW_CONDITIONAL_NZ, some_register, some_register);
-
- /* Undo CMP's whacking of predication*/
- brw_set_predicate_control(p, BRW_PREDICATE_NONE);
-
- brw_push_insn_state(p);
- brw_set_mask_control(p, BRW_MASK_DISABLE);
- brw_AND(p, g1, f0, g1);
- brw_pop_insn_state(p);
- } else {
- struct brw_reg g0 = retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UW);
- struct brw_reg mask = brw_uw1_reg(mask.file, mask.nr, 0);
-
- brw_push_insn_state(p);
- brw_set_mask_control(p, BRW_MASK_DISABLE);
- brw_set_compression_control(p, BRW_COMPRESSION_NONE);
-
- /* Unlike the 965, we have the mask reg, so we just need
- * somewhere to invert that (containing channels to be disabled)
- * so it can be ANDed with the mask of pixels still to be
- * written. Use the flag reg for consistency with gen6+.
- */
- brw_NOT(p, f0, brw_mask_reg(1)); /* IMASK */
- brw_AND(p, g0, f0, g0);
-
- brw_pop_insn_state(p);
- }
-}
-
-void
-fs_visitor::generate_spill(fs_inst *inst, struct brw_reg src)
-{
- assert(inst->mlen != 0);
-
- brw_MOV(p,
- retype(brw_message_reg(inst->base_mrf + 1), BRW_REGISTER_TYPE_UD),
- retype(src, BRW_REGISTER_TYPE_UD));
- brw_oword_block_write_scratch(p, brw_message_reg(inst->base_mrf), 1,
- inst->offset);
-}
-
-void
-fs_visitor::generate_unspill(fs_inst *inst, struct brw_reg dst)
-{
- assert(inst->mlen != 0);
-
- /* Clear any post destination dependencies that would be ignored by
- * the block read. See the B-Spec for pre-gen5 send instruction.
- *
- * This could use a better solution, since texture sampling and
- * math reads could potentially run into it as well -- anywhere
- * that we have a SEND with a destination that is a register that
- * was written but not read within the last N instructions (what's
- * N? unsure). This is rare because of dead code elimination, but
- * not impossible.
- */
- if (intel->gen == 4 && !intel->is_g4x)
- brw_MOV(p, brw_null_reg(), dst);
-
- brw_oword_block_read_scratch(p, dst, brw_message_reg(inst->base_mrf), 1,
- inst->offset);
-
- if (intel->gen == 4 && !intel->is_g4x) {
- /* gen4 errata: destination from a send can't be used as a
- * destination until it's been read. Just read it so we don't
- * have to worry.
- */
- brw_MOV(p, brw_null_reg(), dst);
- }
-}
-
-
-void
-fs_visitor::generate_pull_constant_load(fs_inst *inst, struct brw_reg dst)
-{
- assert(inst->mlen != 0);
-
- /* Clear any post destination dependencies that would be ignored by
- * the block read. See the B-Spec for pre-gen5 send instruction.
- *
- * This could use a better solution, since texture sampling and
- * math reads could potentially run into it as well -- anywhere
- * that we have a SEND with a destination that is a register that
- * was written but not read within the last N instructions (what's
- * N? unsure). This is rare because of dead code elimination, but
- * not impossible.
- */
- if (intel->gen == 4 && !intel->is_g4x)
- brw_MOV(p, brw_null_reg(), dst);
-
- brw_oword_block_read(p, dst, brw_message_reg(inst->base_mrf),
- inst->offset, SURF_INDEX_FRAG_CONST_BUFFER);
-
- if (intel->gen == 4 && !intel->is_g4x) {
- /* gen4 errata: destination from a send can't be used as a
- * destination until it's been read. Just read it so we don't
- * have to worry.
- */
- brw_MOV(p, brw_null_reg(), dst);
- }
-}
-
/**
* To be called after the last _mesa_add_state_reference() call, to
* set up prog_data.param[] for assign_curb_setup() and
@@ -2892,7 +649,7 @@ fs_visitor::calculate_urb_setup()
/* Figure out where each of the incoming setup attributes lands. */
if (intel->gen >= 6) {
for (unsigned int i = 0; i < FRAG_ATTRIB_MAX; i++) {
- if (brw->fragment_program->Base.InputsRead & BITFIELD64_BIT(i)) {
+ if (fp->Base.InputsRead & BITFIELD64_BIT(i)) {
urb_setup[i] = urb_next++;
}
}
@@ -3276,12 +1033,16 @@ fs_visitor::propagate_constants()
scan_inst->src[i] = inst->src[0];
progress = true;
} else if (i == 0 && scan_inst->src[1].file != IMM) {
- /* Fit this constant in by swapping the operands and
- * flipping the predicate
- */
scan_inst->src[0] = scan_inst->src[1];
scan_inst->src[1] = inst->src[0];
- scan_inst->predicate_inverse = !scan_inst->predicate_inverse;
+
+ /* If this was predicated, flipping operands means
+ * we also need to flip the predicate.
+ */
+ if (scan_inst->conditional_mod == BRW_CONDITIONAL_NONE) {
+ scan_inst->predicate_inverse =
+ !scan_inst->predicate_inverse;
+ }
progress = true;
}
break;
@@ -3734,355 +1495,6 @@ fs_visitor::virtual_grf_interferes(int a, int b)
return start < end;
}
-static struct brw_reg brw_reg_from_fs_reg(fs_reg *reg)
-{
- struct brw_reg brw_reg;
-
- switch (reg->file) {
- case GRF:
- case ARF:
- case MRF:
- if (reg->smear == -1) {
- brw_reg = brw_vec8_reg(reg->file,
- reg->hw_reg, 0);
- } else {
- brw_reg = brw_vec1_reg(reg->file,
- reg->hw_reg, reg->smear);
- }
- brw_reg = retype(brw_reg, reg->type);
- if (reg->sechalf)
- brw_reg = sechalf(brw_reg);
- break;
- case IMM:
- switch (reg->type) {
- case BRW_REGISTER_TYPE_F:
- brw_reg = brw_imm_f(reg->imm.f);
- break;
- case BRW_REGISTER_TYPE_D:
- brw_reg = brw_imm_d(reg->imm.i);
- break;
- case BRW_REGISTER_TYPE_UD:
- brw_reg = brw_imm_ud(reg->imm.u);
- break;
- default:
- assert(!"not reached");
- brw_reg = brw_null_reg();
- break;
- }
- break;
- case FIXED_HW_REG:
- brw_reg = reg->fixed_hw_reg;
- break;
- case BAD_FILE:
- /* Probably unused. */
- brw_reg = brw_null_reg();
- break;
- case UNIFORM:
- assert(!"not reached");
- brw_reg = brw_null_reg();
- break;
- default:
- assert(!"not reached");
- brw_reg = brw_null_reg();
- break;
- }
- if (reg->abs)
- brw_reg = brw_abs(brw_reg);
- if (reg->negate)
- brw_reg = negate(brw_reg);
-
- return brw_reg;
-}
-
-void
-fs_visitor::generate_code()
-{
- int last_native_inst = p->nr_insn;
- const char *last_annotation_string = NULL;
- ir_instruction *last_annotation_ir = NULL;
-
- int loop_stack_array_size = 16;
- int loop_stack_depth = 0;
- brw_instruction **loop_stack =
- rzalloc_array(this->mem_ctx, brw_instruction *, loop_stack_array_size);
- int *if_depth_in_loop =
- rzalloc_array(this->mem_ctx, int, loop_stack_array_size);
-
-
- if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
- printf("Native code for fragment shader %d (%d-wide dispatch):\n",
- ctx->Shader.CurrentFragmentProgram->Name, c->dispatch_width);
- }
-
- foreach_iter(exec_list_iterator, iter, this->instructions) {
- fs_inst *inst = (fs_inst *)iter.get();
- struct brw_reg src[3], dst;
-
- if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
- if (last_annotation_ir != inst->ir) {
- last_annotation_ir = inst->ir;
- if (last_annotation_ir) {
- printf(" ");
- last_annotation_ir->print();
- printf("\n");
- }
- }
- if (last_annotation_string != inst->annotation) {
- last_annotation_string = inst->annotation;
- if (last_annotation_string)
- printf(" %s\n", last_annotation_string);
- }
- }
-
- for (unsigned int i = 0; i < 3; i++) {
- src[i] = brw_reg_from_fs_reg(&inst->src[i]);
- }
- dst = brw_reg_from_fs_reg(&inst->dst);
-
- brw_set_conditionalmod(p, inst->conditional_mod);
- brw_set_predicate_control(p, inst->predicated);
- brw_set_predicate_inverse(p, inst->predicate_inverse);
- brw_set_saturate(p, inst->saturate);
-
- if (inst->force_uncompressed || c->dispatch_width == 8) {
- brw_set_compression_control(p, BRW_COMPRESSION_NONE);
- } else if (inst->force_sechalf) {
- brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF);
- } else {
- brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED);
- }
-
- switch (inst->opcode) {
- case BRW_OPCODE_MOV:
- brw_MOV(p, dst, src[0]);
- break;
- case BRW_OPCODE_ADD:
- brw_ADD(p, dst, src[0], src[1]);
- break;
- case BRW_OPCODE_MUL:
- brw_MUL(p, dst, src[0], src[1]);
- break;
-
- case BRW_OPCODE_FRC:
- brw_FRC(p, dst, src[0]);
- break;
- case BRW_OPCODE_RNDD:
- brw_RNDD(p, dst, src[0]);
- break;
- case BRW_OPCODE_RNDE:
- brw_RNDE(p, dst, src[0]);
- break;
- case BRW_OPCODE_RNDZ:
- brw_RNDZ(p, dst, src[0]);
- break;
-
- case BRW_OPCODE_AND:
- brw_AND(p, dst, src[0], src[1]);
- break;
- case BRW_OPCODE_OR:
- brw_OR(p, dst, src[0], src[1]);
- break;
- case BRW_OPCODE_XOR:
- brw_XOR(p, dst, src[0], src[1]);
- break;
- case BRW_OPCODE_NOT:
- brw_NOT(p, dst, src[0]);
- break;
- case BRW_OPCODE_ASR:
- brw_ASR(p, dst, src[0], src[1]);
- break;
- case BRW_OPCODE_SHR:
- brw_SHR(p, dst, src[0], src[1]);
- break;
- case BRW_OPCODE_SHL:
- brw_SHL(p, dst, src[0], src[1]);
- break;
-
- case BRW_OPCODE_CMP:
- brw_CMP(p, dst, inst->conditional_mod, src[0], src[1]);
- break;
- case BRW_OPCODE_SEL:
- brw_SEL(p, dst, src[0], src[1]);
- break;
-
- case BRW_OPCODE_IF:
- if (inst->src[0].file != BAD_FILE) {
- /* The instruction has an embedded compare (only allowed on gen6) */
- assert(intel->gen == 6);
- gen6_IF(p, inst->conditional_mod, src[0], src[1]);
- } else {
- brw_IF(p, c->dispatch_width == 16 ? BRW_EXECUTE_16 : BRW_EXECUTE_8);
- }
- if_depth_in_loop[loop_stack_depth]++;
- break;
-
- case BRW_OPCODE_ELSE:
- brw_ELSE(p);
- break;
- case BRW_OPCODE_ENDIF:
- brw_ENDIF(p);
- if_depth_in_loop[loop_stack_depth]--;
- break;
-
- case BRW_OPCODE_DO:
- loop_stack[loop_stack_depth++] = brw_DO(p, BRW_EXECUTE_8);
- if (loop_stack_array_size <= loop_stack_depth) {
- loop_stack_array_size *= 2;
- loop_stack = reralloc(this->mem_ctx, loop_stack, brw_instruction *,
- loop_stack_array_size);
- if_depth_in_loop = reralloc(this->mem_ctx, if_depth_in_loop, int,
- loop_stack_array_size);
- }
- if_depth_in_loop[loop_stack_depth] = 0;
- break;
-
- case BRW_OPCODE_BREAK:
- brw_BREAK(p, if_depth_in_loop[loop_stack_depth]);
- brw_set_predicate_control(p, BRW_PREDICATE_NONE);
- break;
- case BRW_OPCODE_CONTINUE:
- /* FINISHME: We need to write the loop instruction support still. */
- if (intel->gen >= 6)
- gen6_CONT(p, loop_stack[loop_stack_depth - 1]);
- else
- brw_CONT(p, if_depth_in_loop[loop_stack_depth]);
- brw_set_predicate_control(p, BRW_PREDICATE_NONE);
- break;
-
- case BRW_OPCODE_WHILE: {
- struct brw_instruction *inst0, *inst1;
- GLuint br = 1;
-
- if (intel->gen >= 5)
- br = 2;
-
- assert(loop_stack_depth > 0);
- loop_stack_depth--;
- inst0 = inst1 = brw_WHILE(p, loop_stack[loop_stack_depth]);
- if (intel->gen < 6) {
- /* patch all the BREAK/CONT instructions from last BGNLOOP */
- while (inst0 > loop_stack[loop_stack_depth]) {
- inst0--;
- if (inst0->header.opcode == BRW_OPCODE_BREAK &&
- inst0->bits3.if_else.jump_count == 0) {
- inst0->bits3.if_else.jump_count = br * (inst1 - inst0 + 1);
- }
- else if (inst0->header.opcode == BRW_OPCODE_CONTINUE &&
- inst0->bits3.if_else.jump_count == 0) {
- inst0->bits3.if_else.jump_count = br * (inst1 - inst0);
- }
- }
- }
- }
- break;
-
- case FS_OPCODE_RCP:
- case FS_OPCODE_RSQ:
- case FS_OPCODE_SQRT:
- case FS_OPCODE_EXP2:
- case FS_OPCODE_LOG2:
- case FS_OPCODE_POW:
- case FS_OPCODE_SIN:
- case FS_OPCODE_COS:
- generate_math(inst, dst, src);
- break;
- case FS_OPCODE_PIXEL_X:
- generate_pixel_xy(dst, true);
- break;
- case FS_OPCODE_PIXEL_Y:
- generate_pixel_xy(dst, false);
- break;
- case FS_OPCODE_CINTERP:
- brw_MOV(p, dst, src[0]);
- break;
- case FS_OPCODE_LINTERP:
- generate_linterp(inst, dst, src);
- break;
- case FS_OPCODE_TEX:
- case FS_OPCODE_TXB:
- case FS_OPCODE_TXD:
- case FS_OPCODE_TXL:
- generate_tex(inst, dst, src[0]);
- break;
- case FS_OPCODE_DISCARD:
- generate_discard(inst);
- break;
- case FS_OPCODE_DDX:
- generate_ddx(inst, dst, src[0]);
- break;
- case FS_OPCODE_DDY:
- generate_ddy(inst, dst, src[0]);
- break;
-
- case FS_OPCODE_SPILL:
- generate_spill(inst, src[0]);
- break;
-
- case FS_OPCODE_UNSPILL:
- generate_unspill(inst, dst);
- break;
-
- case FS_OPCODE_PULL_CONSTANT_LOAD:
- generate_pull_constant_load(inst, dst);
- break;
-
- case FS_OPCODE_FB_WRITE:
- generate_fb_write(inst);
- break;
- default:
- if (inst->opcode < (int)ARRAY_SIZE(brw_opcodes)) {
- _mesa_problem(ctx, "Unsupported opcode `%s' in FS",
- brw_opcodes[inst->opcode].name);
- } else {
- _mesa_problem(ctx, "Unsupported opcode %d in FS", inst->opcode);
- }
- fail("unsupported opcode in FS\n");
- }
-
- if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
- for (unsigned int i = last_native_inst; i < p->nr_insn; i++) {
- if (0) {
- printf("0x%08x 0x%08x 0x%08x 0x%08x ",
- ((uint32_t *)&p->store[i])[3],
- ((uint32_t *)&p->store[i])[2],
- ((uint32_t *)&p->store[i])[1],
- ((uint32_t *)&p->store[i])[0]);
- }
- brw_disasm(stdout, &p->store[i], intel->gen);
- }
- }
-
- last_native_inst = p->nr_insn;
- }
-
- if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
- printf("\n");
- }
-
- ralloc_free(loop_stack);
- ralloc_free(if_depth_in_loop);
-
- brw_set_uip_jip(p);
-
- /* OK, while the INTEL_DEBUG=wm above is very nice for debugging FS
- * emit issues, it doesn't get the jump distances into the output,
- * which is often something we want to debug. So this is here in
- * case you're doing that.
- */
- if (0) {
- if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
- for (unsigned int i = 0; i < p->nr_insn; i++) {
- printf("0x%08x 0x%08x 0x%08x 0x%08x ",
- ((uint32_t *)&p->store[i])[3],
- ((uint32_t *)&p->store[i])[2],
- ((uint32_t *)&p->store[i])[1],
- ((uint32_t *)&p->store[i])[0]);
- brw_disasm(stdout, &p->store[i], intel->gen);
- }
- }
- }
-}
-
bool
fs_visitor::run()
{
@@ -4118,6 +1530,7 @@ fs_visitor::run()
foreach_iter(exec_list_iterator, iter, *shader->ir) {
ir_instruction *ir = (ir_instruction *)iter.get();
base_ir = ir;
+ this->result = reg_undef;
ir->accept(this);
}
@@ -4171,9 +1584,9 @@ fs_visitor::run()
generate_code();
if (c->dispatch_width == 8) {
- c->prog_data.total_grf = grf_used;
+ c->prog_data.reg_blocks = brw_register_blocks(grf_used);
} else {
- c->prog_data.total_grf_16 = grf_used;
+ c->prog_data.reg_blocks_16 = brw_register_blocks(grf_used);
c->prog_data.prog_offset_16 = prog_offset_16;
/* Make sure we didn't try to sneak in an extra uniform */
@@ -4184,11 +1597,10 @@ fs_visitor::run()
}
bool
-brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c)
+brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c,
+ struct gl_shader_program *prog)
{
struct intel_context *intel = &brw->intel;
- struct gl_context *ctx = &intel->ctx;
- struct gl_shader_program *prog = ctx->Shader.CurrentFragmentProgram;
if (!prog)
return false;
@@ -4208,16 +1620,17 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c)
*/
c->dispatch_width = 8;
- fs_visitor v(c, shader);
+ fs_visitor v(c, prog, shader);
if (!v.run()) {
- /* FINISHME: Cleanly fail, test at link time, etc. */
- assert(!"not reached");
+ prog->LinkStatus = GL_FALSE;
+ prog->InfoLog = ralloc_strdup(prog, v.fail_msg);
+
return false;
}
if (intel->gen >= 5 && c->prog_data.nr_pull_params == 0) {
c->dispatch_width = 16;
- fs_visitor v2(c, shader);
+ fs_visitor v2(c, prog, shader);
v2.import_uniforms(v.variable_ht);
v2.run();
}
@@ -4226,3 +1639,73 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c)
return true;
}
+
+bool
+brw_fs_precompile(struct gl_context *ctx, struct gl_shader_program *prog)
+{
+ struct brw_context *brw = brw_context(ctx);
+ struct brw_wm_prog_key key;
+ struct gl_fragment_program *fp = prog->FragmentProgram;
+ struct brw_fragment_program *bfp = brw_fragment_program(fp);
+
+ if (!fp)
+ return true;
+
+ memset(&key, 0, sizeof(key));
+
+ if (fp->UsesKill)
+ key.iz_lookup |= IZ_PS_KILL_ALPHATEST_BIT;
+
+ if (fp->Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH))
+ key.iz_lookup |= IZ_PS_COMPUTES_DEPTH_BIT;
+
+ /* Just assume depth testing. */
+ key.iz_lookup |= IZ_DEPTH_TEST_ENABLE_BIT;
+ key.iz_lookup |= IZ_DEPTH_WRITE_ENABLE_BIT;
+
+ key.vp_outputs_written |= BITFIELD64_BIT(FRAG_ATTRIB_WPOS);
+ for (int i = 0; i < FRAG_ATTRIB_MAX; i++) {
+ int vp_index = -1;
+
+ if (!(fp->Base.InputsRead & BITFIELD64_BIT(i)))
+ continue;
+
+ key.proj_attrib_mask |= 1 << i;
+
+ if (i <= FRAG_ATTRIB_TEX7)
+ vp_index = i;
+ else if (i >= FRAG_ATTRIB_VAR0)
+ vp_index = i - FRAG_ATTRIB_VAR0 + VERT_RESULT_VAR0;
+
+ if (vp_index >= 0)
+ key.vp_outputs_written |= BITFIELD64_BIT(vp_index);
+ }
+
+ key.clamp_fragment_color = true;
+
+ for (int i = 0; i < BRW_MAX_TEX_UNIT; i++) {
+ /* FINISHME: depth compares might use (0,0,0,W) for example */
+ key.tex_swizzles[i] = SWIZZLE_XYZW;
+ }
+
+ if (fp->Base.InputsRead & FRAG_BIT_WPOS) {
+ key.drawable_height = ctx->DrawBuffer->Height;
+ key.render_to_fbo = ctx->DrawBuffer->Name != 0;
+ }
+
+ key.nr_color_regions = 1;
+
+ key.program_string_id = bfp->id;
+
+ drm_intel_bo *old_prog_bo = brw->wm.prog_bo;
+ struct brw_wm_prog_data *old_prog_data = brw->wm.prog_data;
+ brw->wm.prog_bo = NULL;
+
+ bool success = do_wm_prog(brw, prog, bfp, &key);
+
+ drm_intel_bo_unreference(brw->wm.prog_bo);
+ brw->wm.prog_bo = old_prog_bo;
+ brw->wm.prog_data = old_prog_data;
+
+ return success;
+}
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index 4b355c979eb..7570dda1024 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -359,12 +359,14 @@ class fs_visitor : public ir_visitor
{
public:
- fs_visitor(struct brw_wm_compile *c, struct brw_shader *shader)
+ fs_visitor(struct brw_wm_compile *c, struct gl_shader_program *prog,
+ struct brw_shader *shader)
{
this->c = c;
this->p = &c->func;
this->brw = p->brw;
- this->fp = brw->fragment_program;
+ this->fp = prog->FragmentProgram;
+ this->prog = prog;
this->intel = &brw->intel;
this->ctx = &intel->ctx;
this->mem_ctx = ralloc_context(NULL);
@@ -466,6 +468,8 @@ public:
return emit(fs_inst(opcode, dst, src0, src1, src2));
}
+ int type_size(const struct glsl_type *type);
+
bool run();
void setup_paramvalues_refs();
void assign_curb_setup();
@@ -542,6 +546,7 @@ public:
struct brw_wm_compile *c;
struct brw_compile *p;
struct brw_shader *shader;
+ struct gl_shader_program *prog;
void *mem_ctx;
exec_list instructions;
@@ -570,8 +575,12 @@ public:
/** @} */
bool failed;
+ char *fail_msg;
- /* Result of last visit() method. */
+ /* On entry to a visit() method, this is the storage for the
+ * result. On exit, the visit() called may have changed it, in
+ * which case the parent must use the new storage instead.
+ */
fs_reg result;
fs_reg pixel_x;
@@ -590,3 +599,4 @@ public:
GLboolean brw_do_channel_expressions(struct exec_list *instructions);
GLboolean brw_do_vector_splitting(struct exec_list *instructions);
+bool brw_fs_precompile(struct gl_context *ctx, struct gl_shader_program *prog);
diff --git a/src/mesa/drivers/dri/i965/brw_fs_emit.cpp b/src/mesa/drivers/dri/i965/brw_fs_emit.cpp
new file mode 100644
index 00000000000..6b7c434949c
--- /dev/null
+++ b/src/mesa/drivers/dri/i965/brw_fs_emit.cpp
@@ -0,0 +1,875 @@
+/*
+ * Copyright © 2010 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 brw_fs_emit.cpp
+ *
+ * This file supports emitting code from the FS LIR to the actual
+ * native instructions.
+ */
+
+extern "C" {
+#include "main/macros.h"
+#include "brw_context.h"
+#include "brw_eu.h"
+} /* extern "C" */
+
+#include "brw_fs.h"
+#include "../glsl/ir_print_visitor.h"
+
+void
+fs_visitor::generate_fb_write(fs_inst *inst)
+{
+ GLboolean eot = inst->eot;
+ struct brw_reg implied_header;
+
+ /* Header is 2 regs, g0 and g1 are the contents. g0 will be implied
+ * move, here's g1.
+ */
+ brw_push_insn_state(p);
+ brw_set_mask_control(p, BRW_MASK_DISABLE);
+ brw_set_compression_control(p, BRW_COMPRESSION_NONE);
+
+ if (inst->header_present) {
+ if (intel->gen >= 6) {
+ brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED);
+ brw_MOV(p,
+ retype(brw_message_reg(inst->base_mrf), BRW_REGISTER_TYPE_UD),
+ retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UD));
+ brw_set_compression_control(p, BRW_COMPRESSION_NONE);
+
+ if (inst->target > 0) {
+ /* Set the render target index for choosing BLEND_STATE. */
+ brw_MOV(p, retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 0, 2),
+ BRW_REGISTER_TYPE_UD),
+ brw_imm_ud(inst->target));
+ }
+
+ implied_header = brw_null_reg();
+ } else {
+ implied_header = retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UW);
+
+ brw_MOV(p,
+ brw_message_reg(inst->base_mrf + 1),
+ brw_vec8_grf(1, 0));
+ }
+ } else {
+ implied_header = brw_null_reg();
+ }
+
+ brw_pop_insn_state(p);
+
+ brw_fb_WRITE(p,
+ c->dispatch_width,
+ inst->base_mrf,
+ implied_header,
+ inst->target,
+ inst->mlen,
+ 0,
+ eot,
+ inst->header_present);
+}
+
+/* Computes the integer pixel x,y values from the origin.
+ *
+ * This is the basis of gl_FragCoord computation, but is also used
+ * pre-gen6 for computing the deltas from v0 for computing
+ * interpolation.
+ */
+void
+fs_visitor::generate_pixel_xy(struct brw_reg dst, bool is_x)
+{
+ struct brw_reg g1_uw = retype(brw_vec1_grf(1, 0), BRW_REGISTER_TYPE_UW);
+ struct brw_reg src;
+ struct brw_reg deltas;
+
+ if (is_x) {
+ src = stride(suboffset(g1_uw, 4), 2, 4, 0);
+ deltas = brw_imm_v(0x10101010);
+ } else {
+ src = stride(suboffset(g1_uw, 5), 2, 4, 0);
+ deltas = brw_imm_v(0x11001100);
+ }
+
+ if (c->dispatch_width == 16) {
+ dst = vec16(dst);
+ }
+
+ /* We do this 8 or 16-wide, but since the destination is UW we
+ * don't do compression in the 16-wide case.
+ */
+ brw_push_insn_state(p);
+ brw_set_compression_control(p, BRW_COMPRESSION_NONE);
+ brw_ADD(p, dst, src, deltas);
+ brw_pop_insn_state(p);
+}
+
+void
+fs_visitor::generate_linterp(fs_inst *inst,
+ struct brw_reg dst, struct brw_reg *src)
+{
+ struct brw_reg delta_x = src[0];
+ struct brw_reg delta_y = src[1];
+ struct brw_reg interp = src[2];
+
+ if (brw->has_pln &&
+ delta_y.nr == delta_x.nr + 1 &&
+ (intel->gen >= 6 || (delta_x.nr & 1) == 0)) {
+ brw_PLN(p, dst, interp, delta_x);
+ } else {
+ brw_LINE(p, brw_null_reg(), interp, delta_x);
+ brw_MAC(p, dst, suboffset(interp, 1), delta_y);
+ }
+}
+
+void
+fs_visitor::generate_math(fs_inst *inst,
+ struct brw_reg dst, struct brw_reg *src)
+{
+ int op;
+
+ switch (inst->opcode) {
+ case FS_OPCODE_RCP:
+ op = BRW_MATH_FUNCTION_INV;
+ break;
+ case FS_OPCODE_RSQ:
+ op = BRW_MATH_FUNCTION_RSQ;
+ break;
+ case FS_OPCODE_SQRT:
+ op = BRW_MATH_FUNCTION_SQRT;
+ break;
+ case FS_OPCODE_EXP2:
+ op = BRW_MATH_FUNCTION_EXP;
+ break;
+ case FS_OPCODE_LOG2:
+ op = BRW_MATH_FUNCTION_LOG;
+ break;
+ case FS_OPCODE_POW:
+ op = BRW_MATH_FUNCTION_POW;
+ break;
+ case FS_OPCODE_SIN:
+ op = BRW_MATH_FUNCTION_SIN;
+ break;
+ case FS_OPCODE_COS:
+ op = BRW_MATH_FUNCTION_COS;
+ break;
+ default:
+ assert(!"not reached: unknown math function");
+ op = 0;
+ break;
+ }
+
+ if (intel->gen >= 6) {
+ assert(inst->mlen == 0);
+
+ if (inst->opcode == FS_OPCODE_POW) {
+ brw_set_compression_control(p, BRW_COMPRESSION_NONE);
+ brw_math2(p, dst, op, src[0], src[1]);
+
+ if (c->dispatch_width == 16) {
+ brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF);
+ brw_math2(p, sechalf(dst), op, sechalf(src[0]), sechalf(src[1]));
+ brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED);
+ }
+ } else {
+ brw_set_compression_control(p, BRW_COMPRESSION_NONE);
+ brw_math(p, dst,
+ op,
+ inst->saturate ? BRW_MATH_SATURATE_SATURATE :
+ BRW_MATH_SATURATE_NONE,
+ 0, src[0],
+ BRW_MATH_DATA_VECTOR,
+ BRW_MATH_PRECISION_FULL);
+
+ if (c->dispatch_width == 16) {
+ brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF);
+ brw_math(p, sechalf(dst),
+ op,
+ inst->saturate ? BRW_MATH_SATURATE_SATURATE :
+ BRW_MATH_SATURATE_NONE,
+ 0, sechalf(src[0]),
+ BRW_MATH_DATA_VECTOR,
+ BRW_MATH_PRECISION_FULL);
+ brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED);
+ }
+ }
+ } else /* gen <= 5 */{
+ assert(inst->mlen >= 1);
+
+ brw_set_compression_control(p, BRW_COMPRESSION_NONE);
+ brw_math(p, dst,
+ op,
+ inst->saturate ? BRW_MATH_SATURATE_SATURATE :
+ BRW_MATH_SATURATE_NONE,
+ inst->base_mrf, src[0],
+ BRW_MATH_DATA_VECTOR,
+ BRW_MATH_PRECISION_FULL);
+
+ if (c->dispatch_width == 16) {
+ brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF);
+ brw_math(p, sechalf(dst),
+ op,
+ inst->saturate ? BRW_MATH_SATURATE_SATURATE :
+ BRW_MATH_SATURATE_NONE,
+ inst->base_mrf + 1, sechalf(src[0]),
+ BRW_MATH_DATA_VECTOR,
+ BRW_MATH_PRECISION_FULL);
+
+ brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED);
+ }
+ }
+}
+
+void
+fs_visitor::generate_tex(fs_inst *inst, struct brw_reg dst, struct brw_reg src)
+{
+ int msg_type = -1;
+ int rlen = 4;
+ uint32_t simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD8;
+
+ if (c->dispatch_width == 16)
+ simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD16;
+
+ if (intel->gen >= 5) {
+ switch (inst->opcode) {
+ case FS_OPCODE_TEX:
+ if (inst->shadow_compare) {
+ msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_COMPARE;
+ } else {
+ msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE;
+ }
+ break;
+ case FS_OPCODE_TXB:
+ if (inst->shadow_compare) {
+ msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_BIAS_COMPARE;
+ } else {
+ msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_BIAS;
+ }
+ break;
+ case FS_OPCODE_TXL:
+ if (inst->shadow_compare) {
+ msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_LOD_COMPARE;
+ } else {
+ msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_LOD;
+ }
+ break;
+ case FS_OPCODE_TXD:
+ assert(!"TXD isn't supported on gen5+ yet.");
+ break;
+ }
+ } else {
+ switch (inst->opcode) {
+ case FS_OPCODE_TEX:
+ /* Note that G45 and older determines shadow compare and dispatch width
+ * from message length for most messages.
+ */
+ assert(c->dispatch_width == 8);
+ msg_type = BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE;
+ if (inst->shadow_compare) {
+ assert(inst->mlen == 6);
+ } else {
+ assert(inst->mlen <= 4);
+ }
+ break;
+ case FS_OPCODE_TXB:
+ if (inst->shadow_compare) {
+ assert(inst->mlen == 6);
+ msg_type = BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_BIAS_COMPARE;
+ } else {
+ assert(inst->mlen == 9);
+ msg_type = BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_BIAS;
+ simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD16;
+ }
+ break;
+ case FS_OPCODE_TXL:
+ if (inst->shadow_compare) {
+ assert(inst->mlen == 6);
+ msg_type = BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_LOD_COMPARE;
+ } else {
+ assert(inst->mlen == 9);
+ msg_type = BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_LOD;
+ simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD16;
+ }
+ break;
+ case FS_OPCODE_TXD:
+ assert(!"TXD isn't supported on gen4 yet.");
+ break;
+ }
+ }
+ assert(msg_type != -1);
+
+ if (simd_mode == BRW_SAMPLER_SIMD_MODE_SIMD16) {
+ rlen = 8;
+ dst = vec16(dst);
+ }
+
+ brw_SAMPLE(p,
+ retype(dst, BRW_REGISTER_TYPE_UW),
+ inst->base_mrf,
+ src,
+ SURF_INDEX_TEXTURE(inst->sampler),
+ inst->sampler,
+ WRITEMASK_XYZW,
+ msg_type,
+ rlen,
+ inst->mlen,
+ 0,
+ inst->header_present,
+ simd_mode);
+}
+
+
+/* For OPCODE_DDX and OPCODE_DDY, per channel of output we've got input
+ * looking like:
+ *
+ * arg0: ss0.tl ss0.tr ss0.bl ss0.br ss1.tl ss1.tr ss1.bl ss1.br
+ *
+ * and we're trying to produce:
+ *
+ * DDX DDY
+ * dst: (ss0.tr - ss0.tl) (ss0.tl - ss0.bl)
+ * (ss0.tr - ss0.tl) (ss0.tr - ss0.br)
+ * (ss0.br - ss0.bl) (ss0.tl - ss0.bl)
+ * (ss0.br - ss0.bl) (ss0.tr - ss0.br)
+ * (ss1.tr - ss1.tl) (ss1.tl - ss1.bl)
+ * (ss1.tr - ss1.tl) (ss1.tr - ss1.br)
+ * (ss1.br - ss1.bl) (ss1.tl - ss1.bl)
+ * (ss1.br - ss1.bl) (ss1.tr - ss1.br)
+ *
+ * and add another set of two more subspans if in 16-pixel dispatch mode.
+ *
+ * For DDX, it ends up being easy: width = 2, horiz=0 gets us the same result
+ * for each pair, and vertstride = 2 jumps us 2 elements after processing a
+ * pair. But for DDY, it's harder, as we want to produce the pairs swizzled
+ * between each other. We could probably do it like ddx and swizzle the right
+ * order later, but bail for now and just produce
+ * ((ss0.tl - ss0.bl)x4 (ss1.tl - ss1.bl)x4)
+ */
+void
+fs_visitor::generate_ddx(fs_inst *inst, struct brw_reg dst, struct brw_reg src)
+{
+ struct brw_reg src0 = brw_reg(src.file, src.nr, 1,
+ BRW_REGISTER_TYPE_F,
+ BRW_VERTICAL_STRIDE_2,
+ BRW_WIDTH_2,
+ BRW_HORIZONTAL_STRIDE_0,
+ BRW_SWIZZLE_XYZW, WRITEMASK_XYZW);
+ struct brw_reg src1 = brw_reg(src.file, src.nr, 0,
+ BRW_REGISTER_TYPE_F,
+ BRW_VERTICAL_STRIDE_2,
+ BRW_WIDTH_2,
+ BRW_HORIZONTAL_STRIDE_0,
+ BRW_SWIZZLE_XYZW, WRITEMASK_XYZW);
+ brw_ADD(p, dst, src0, negate(src1));
+}
+
+void
+fs_visitor::generate_ddy(fs_inst *inst, struct brw_reg dst, struct brw_reg src)
+{
+ struct brw_reg src0 = brw_reg(src.file, src.nr, 0,
+ BRW_REGISTER_TYPE_F,
+ BRW_VERTICAL_STRIDE_4,
+ BRW_WIDTH_4,
+ BRW_HORIZONTAL_STRIDE_0,
+ BRW_SWIZZLE_XYZW, WRITEMASK_XYZW);
+ struct brw_reg src1 = brw_reg(src.file, src.nr, 2,
+ BRW_REGISTER_TYPE_F,
+ BRW_VERTICAL_STRIDE_4,
+ BRW_WIDTH_4,
+ BRW_HORIZONTAL_STRIDE_0,
+ BRW_SWIZZLE_XYZW, WRITEMASK_XYZW);
+ brw_ADD(p, dst, src0, negate(src1));
+}
+
+void
+fs_visitor::generate_discard(fs_inst *inst)
+{
+ struct brw_reg f0 = brw_flag_reg();
+
+ if (intel->gen >= 6) {
+ struct brw_reg g1 = retype(brw_vec1_grf(1, 7), BRW_REGISTER_TYPE_UW);
+ struct brw_reg some_register;
+
+ /* As of gen6, we no longer have the mask register to look at,
+ * so life gets a bit more complicated.
+ */
+
+ /* Load the flag register with all ones. */
+ brw_push_insn_state(p);
+ brw_set_mask_control(p, BRW_MASK_DISABLE);
+ brw_MOV(p, f0, brw_imm_uw(0xffff));
+ brw_pop_insn_state(p);
+
+ /* Do a comparison that should always fail, to produce 0s in the flag
+ * reg where we have active channels.
+ */
+ some_register = retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UW);
+ brw_CMP(p, retype(brw_null_reg(), BRW_REGISTER_TYPE_UD),
+ BRW_CONDITIONAL_NZ, some_register, some_register);
+
+ /* Undo CMP's whacking of predication*/
+ brw_set_predicate_control(p, BRW_PREDICATE_NONE);
+
+ brw_push_insn_state(p);
+ brw_set_mask_control(p, BRW_MASK_DISABLE);
+ brw_AND(p, g1, f0, g1);
+ brw_pop_insn_state(p);
+ } else {
+ struct brw_reg g0 = retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UW);
+
+ brw_push_insn_state(p);
+ brw_set_mask_control(p, BRW_MASK_DISABLE);
+ brw_set_compression_control(p, BRW_COMPRESSION_NONE);
+
+ /* Unlike the 965, we have the mask reg, so we just need
+ * somewhere to invert that (containing channels to be disabled)
+ * so it can be ANDed with the mask of pixels still to be
+ * written. Use the flag reg for consistency with gen6+.
+ */
+ brw_NOT(p, f0, brw_mask_reg(1)); /* IMASK */
+ brw_AND(p, g0, f0, g0);
+
+ brw_pop_insn_state(p);
+ }
+}
+
+void
+fs_visitor::generate_spill(fs_inst *inst, struct brw_reg src)
+{
+ assert(inst->mlen != 0);
+
+ brw_MOV(p,
+ retype(brw_message_reg(inst->base_mrf + 1), BRW_REGISTER_TYPE_UD),
+ retype(src, BRW_REGISTER_TYPE_UD));
+ brw_oword_block_write_scratch(p, brw_message_reg(inst->base_mrf), 1,
+ inst->offset);
+}
+
+void
+fs_visitor::generate_unspill(fs_inst *inst, struct brw_reg dst)
+{
+ assert(inst->mlen != 0);
+
+ /* Clear any post destination dependencies that would be ignored by
+ * the block read. See the B-Spec for pre-gen5 send instruction.
+ *
+ * This could use a better solution, since texture sampling and
+ * math reads could potentially run into it as well -- anywhere
+ * that we have a SEND with a destination that is a register that
+ * was written but not read within the last N instructions (what's
+ * N? unsure). This is rare because of dead code elimination, but
+ * not impossible.
+ */
+ if (intel->gen == 4 && !intel->is_g4x)
+ brw_MOV(p, brw_null_reg(), dst);
+
+ brw_oword_block_read_scratch(p, dst, brw_message_reg(inst->base_mrf), 1,
+ inst->offset);
+
+ if (intel->gen == 4 && !intel->is_g4x) {
+ /* gen4 errata: destination from a send can't be used as a
+ * destination until it's been read. Just read it so we don't
+ * have to worry.
+ */
+ brw_MOV(p, brw_null_reg(), dst);
+ }
+}
+
+void
+fs_visitor::generate_pull_constant_load(fs_inst *inst, struct brw_reg dst)
+{
+ assert(inst->mlen != 0);
+
+ /* Clear any post destination dependencies that would be ignored by
+ * the block read. See the B-Spec for pre-gen5 send instruction.
+ *
+ * This could use a better solution, since texture sampling and
+ * math reads could potentially run into it as well -- anywhere
+ * that we have a SEND with a destination that is a register that
+ * was written but not read within the last N instructions (what's
+ * N? unsure). This is rare because of dead code elimination, but
+ * not impossible.
+ */
+ if (intel->gen == 4 && !intel->is_g4x)
+ brw_MOV(p, brw_null_reg(), dst);
+
+ brw_oword_block_read(p, dst, brw_message_reg(inst->base_mrf),
+ inst->offset, SURF_INDEX_FRAG_CONST_BUFFER);
+
+ if (intel->gen == 4 && !intel->is_g4x) {
+ /* gen4 errata: destination from a send can't be used as a
+ * destination until it's been read. Just read it so we don't
+ * have to worry.
+ */
+ brw_MOV(p, brw_null_reg(), dst);
+ }
+}
+
+static struct brw_reg
+brw_reg_from_fs_reg(fs_reg *reg)
+{
+ struct brw_reg brw_reg;
+
+ switch (reg->file) {
+ case GRF:
+ case ARF:
+ case MRF:
+ if (reg->smear == -1) {
+ brw_reg = brw_vec8_reg(reg->file,
+ reg->hw_reg, 0);
+ } else {
+ brw_reg = brw_vec1_reg(reg->file,
+ reg->hw_reg, reg->smear);
+ }
+ brw_reg = retype(brw_reg, reg->type);
+ if (reg->sechalf)
+ brw_reg = sechalf(brw_reg);
+ break;
+ case IMM:
+ switch (reg->type) {
+ case BRW_REGISTER_TYPE_F:
+ brw_reg = brw_imm_f(reg->imm.f);
+ break;
+ case BRW_REGISTER_TYPE_D:
+ brw_reg = brw_imm_d(reg->imm.i);
+ break;
+ case BRW_REGISTER_TYPE_UD:
+ brw_reg = brw_imm_ud(reg->imm.u);
+ break;
+ default:
+ assert(!"not reached");
+ brw_reg = brw_null_reg();
+ break;
+ }
+ break;
+ case FIXED_HW_REG:
+ brw_reg = reg->fixed_hw_reg;
+ break;
+ case BAD_FILE:
+ /* Probably unused. */
+ brw_reg = brw_null_reg();
+ break;
+ case UNIFORM:
+ assert(!"not reached");
+ brw_reg = brw_null_reg();
+ break;
+ default:
+ assert(!"not reached");
+ brw_reg = brw_null_reg();
+ break;
+ }
+ if (reg->abs)
+ brw_reg = brw_abs(brw_reg);
+ if (reg->negate)
+ brw_reg = negate(brw_reg);
+
+ return brw_reg;
+}
+
+void
+fs_visitor::generate_code()
+{
+ int last_native_inst = p->nr_insn;
+ const char *last_annotation_string = NULL;
+ ir_instruction *last_annotation_ir = NULL;
+
+ int loop_stack_array_size = 16;
+ int loop_stack_depth = 0;
+ brw_instruction **loop_stack =
+ rzalloc_array(this->mem_ctx, brw_instruction *, loop_stack_array_size);
+ int *if_depth_in_loop =
+ rzalloc_array(this->mem_ctx, int, loop_stack_array_size);
+
+
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
+ printf("Native code for fragment shader %d (%d-wide dispatch):\n",
+ prog->Name, c->dispatch_width);
+ }
+
+ foreach_iter(exec_list_iterator, iter, this->instructions) {
+ fs_inst *inst = (fs_inst *)iter.get();
+ struct brw_reg src[3], dst;
+
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
+ if (last_annotation_ir != inst->ir) {
+ last_annotation_ir = inst->ir;
+ if (last_annotation_ir) {
+ printf(" ");
+ last_annotation_ir->print();
+ printf("\n");
+ }
+ }
+ if (last_annotation_string != inst->annotation) {
+ last_annotation_string = inst->annotation;
+ if (last_annotation_string)
+ printf(" %s\n", last_annotation_string);
+ }
+ }
+
+ for (unsigned int i = 0; i < 3; i++) {
+ src[i] = brw_reg_from_fs_reg(&inst->src[i]);
+ }
+ dst = brw_reg_from_fs_reg(&inst->dst);
+
+ brw_set_conditionalmod(p, inst->conditional_mod);
+ brw_set_predicate_control(p, inst->predicated);
+ brw_set_predicate_inverse(p, inst->predicate_inverse);
+ brw_set_saturate(p, inst->saturate);
+
+ if (inst->force_uncompressed || c->dispatch_width == 8) {
+ brw_set_compression_control(p, BRW_COMPRESSION_NONE);
+ } else if (inst->force_sechalf) {
+ brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF);
+ } else {
+ brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED);
+ }
+
+ switch (inst->opcode) {
+ case BRW_OPCODE_MOV:
+ brw_MOV(p, dst, src[0]);
+ break;
+ case BRW_OPCODE_ADD:
+ brw_ADD(p, dst, src[0], src[1]);
+ break;
+ case BRW_OPCODE_MUL:
+ brw_MUL(p, dst, src[0], src[1]);
+ break;
+
+ case BRW_OPCODE_FRC:
+ brw_FRC(p, dst, src[0]);
+ break;
+ case BRW_OPCODE_RNDD:
+ brw_RNDD(p, dst, src[0]);
+ break;
+ case BRW_OPCODE_RNDE:
+ brw_RNDE(p, dst, src[0]);
+ break;
+ case BRW_OPCODE_RNDZ:
+ brw_RNDZ(p, dst, src[0]);
+ break;
+
+ case BRW_OPCODE_AND:
+ brw_AND(p, dst, src[0], src[1]);
+ break;
+ case BRW_OPCODE_OR:
+ brw_OR(p, dst, src[0], src[1]);
+ break;
+ case BRW_OPCODE_XOR:
+ brw_XOR(p, dst, src[0], src[1]);
+ break;
+ case BRW_OPCODE_NOT:
+ brw_NOT(p, dst, src[0]);
+ break;
+ case BRW_OPCODE_ASR:
+ brw_ASR(p, dst, src[0], src[1]);
+ break;
+ case BRW_OPCODE_SHR:
+ brw_SHR(p, dst, src[0], src[1]);
+ break;
+ case BRW_OPCODE_SHL:
+ brw_SHL(p, dst, src[0], src[1]);
+ break;
+
+ case BRW_OPCODE_CMP:
+ brw_CMP(p, dst, inst->conditional_mod, src[0], src[1]);
+ break;
+ case BRW_OPCODE_SEL:
+ brw_SEL(p, dst, src[0], src[1]);
+ break;
+
+ case BRW_OPCODE_IF:
+ if (inst->src[0].file != BAD_FILE) {
+ /* The instruction has an embedded compare (only allowed on gen6) */
+ assert(intel->gen == 6);
+ gen6_IF(p, inst->conditional_mod, src[0], src[1]);
+ } else {
+ brw_IF(p, c->dispatch_width == 16 ? BRW_EXECUTE_16 : BRW_EXECUTE_8);
+ }
+ if_depth_in_loop[loop_stack_depth]++;
+ break;
+
+ case BRW_OPCODE_ELSE:
+ brw_ELSE(p);
+ break;
+ case BRW_OPCODE_ENDIF:
+ brw_ENDIF(p);
+ if_depth_in_loop[loop_stack_depth]--;
+ break;
+
+ case BRW_OPCODE_DO:
+ loop_stack[loop_stack_depth++] = brw_DO(p, BRW_EXECUTE_8);
+ if (loop_stack_array_size <= loop_stack_depth) {
+ loop_stack_array_size *= 2;
+ loop_stack = reralloc(this->mem_ctx, loop_stack, brw_instruction *,
+ loop_stack_array_size);
+ if_depth_in_loop = reralloc(this->mem_ctx, if_depth_in_loop, int,
+ loop_stack_array_size);
+ }
+ if_depth_in_loop[loop_stack_depth] = 0;
+ break;
+
+ case BRW_OPCODE_BREAK:
+ brw_BREAK(p, if_depth_in_loop[loop_stack_depth]);
+ brw_set_predicate_control(p, BRW_PREDICATE_NONE);
+ break;
+ case BRW_OPCODE_CONTINUE:
+ /* FINISHME: We need to write the loop instruction support still. */
+ if (intel->gen >= 6)
+ gen6_CONT(p, loop_stack[loop_stack_depth - 1]);
+ else
+ brw_CONT(p, if_depth_in_loop[loop_stack_depth]);
+ brw_set_predicate_control(p, BRW_PREDICATE_NONE);
+ break;
+
+ case BRW_OPCODE_WHILE: {
+ struct brw_instruction *inst0, *inst1;
+ GLuint br = 1;
+
+ if (intel->gen >= 5)
+ br = 2;
+
+ assert(loop_stack_depth > 0);
+ loop_stack_depth--;
+ inst0 = inst1 = brw_WHILE(p, loop_stack[loop_stack_depth]);
+ if (intel->gen < 6) {
+ /* patch all the BREAK/CONT instructions from last BGNLOOP */
+ while (inst0 > loop_stack[loop_stack_depth]) {
+ inst0--;
+ if (inst0->header.opcode == BRW_OPCODE_BREAK &&
+ inst0->bits3.if_else.jump_count == 0) {
+ inst0->bits3.if_else.jump_count = br * (inst1 - inst0 + 1);
+ }
+ else if (inst0->header.opcode == BRW_OPCODE_CONTINUE &&
+ inst0->bits3.if_else.jump_count == 0) {
+ inst0->bits3.if_else.jump_count = br * (inst1 - inst0);
+ }
+ }
+ }
+ }
+ break;
+
+ case FS_OPCODE_RCP:
+ case FS_OPCODE_RSQ:
+ case FS_OPCODE_SQRT:
+ case FS_OPCODE_EXP2:
+ case FS_OPCODE_LOG2:
+ case FS_OPCODE_POW:
+ case FS_OPCODE_SIN:
+ case FS_OPCODE_COS:
+ generate_math(inst, dst, src);
+ break;
+ case FS_OPCODE_PIXEL_X:
+ generate_pixel_xy(dst, true);
+ break;
+ case FS_OPCODE_PIXEL_Y:
+ generate_pixel_xy(dst, false);
+ break;
+ case FS_OPCODE_CINTERP:
+ brw_MOV(p, dst, src[0]);
+ break;
+ case FS_OPCODE_LINTERP:
+ generate_linterp(inst, dst, src);
+ break;
+ case FS_OPCODE_TEX:
+ case FS_OPCODE_TXB:
+ case FS_OPCODE_TXD:
+ case FS_OPCODE_TXL:
+ generate_tex(inst, dst, src[0]);
+ break;
+ case FS_OPCODE_DISCARD:
+ generate_discard(inst);
+ break;
+ case FS_OPCODE_DDX:
+ generate_ddx(inst, dst, src[0]);
+ break;
+ case FS_OPCODE_DDY:
+ generate_ddy(inst, dst, src[0]);
+ break;
+
+ case FS_OPCODE_SPILL:
+ generate_spill(inst, src[0]);
+ break;
+
+ case FS_OPCODE_UNSPILL:
+ generate_unspill(inst, dst);
+ break;
+
+ case FS_OPCODE_PULL_CONSTANT_LOAD:
+ generate_pull_constant_load(inst, dst);
+ break;
+
+ case FS_OPCODE_FB_WRITE:
+ generate_fb_write(inst);
+ break;
+ default:
+ if (inst->opcode < (int)ARRAY_SIZE(brw_opcodes)) {
+ _mesa_problem(ctx, "Unsupported opcode `%s' in FS",
+ brw_opcodes[inst->opcode].name);
+ } else {
+ _mesa_problem(ctx, "Unsupported opcode %d in FS", inst->opcode);
+ }
+ fail("unsupported opcode in FS\n");
+ }
+
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
+ for (unsigned int i = last_native_inst; i < p->nr_insn; i++) {
+ if (0) {
+ printf("0x%08x 0x%08x 0x%08x 0x%08x ",
+ ((uint32_t *)&p->store[i])[3],
+ ((uint32_t *)&p->store[i])[2],
+ ((uint32_t *)&p->store[i])[1],
+ ((uint32_t *)&p->store[i])[0]);
+ }
+ brw_disasm(stdout, &p->store[i], intel->gen);
+ }
+ }
+
+ last_native_inst = p->nr_insn;
+ }
+
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
+ printf("\n");
+ }
+
+ ralloc_free(loop_stack);
+ ralloc_free(if_depth_in_loop);
+
+ brw_set_uip_jip(p);
+
+ /* OK, while the INTEL_DEBUG=wm above is very nice for debugging FS
+ * emit issues, it doesn't get the jump distances into the output,
+ * which is often something we want to debug. So this is here in
+ * case you're doing that.
+ */
+ if (0) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
+ for (unsigned int i = 0; i < p->nr_insn; i++) {
+ printf("0x%08x 0x%08x 0x%08x 0x%08x ",
+ ((uint32_t *)&p->store[i])[3],
+ ((uint32_t *)&p->store[i])[2],
+ ((uint32_t *)&p->store[i])[1],
+ ((uint32_t *)&p->store[i])[0]);
+ brw_disasm(stdout, &p->store[i], intel->gen);
+ }
+ }
+ }
+}
diff --git a/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp b/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp
index fb1192c810a..d8218c26edb 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp
@@ -140,6 +140,7 @@ public:
}
void add_barrier_deps(schedule_node *n);
void add_dep(schedule_node *before, schedule_node *after, int latency);
+ void add_dep(schedule_node *before, schedule_node *after);
void add_inst(fs_inst *inst);
void calculate_deps();
@@ -210,6 +211,15 @@ instruction_scheduler::add_dep(schedule_node *before, schedule_node *after,
after->parent_count++;
}
+void
+instruction_scheduler::add_dep(schedule_node *before, schedule_node *after)
+{
+ if (!before)
+ return;
+
+ add_dep(before, after, before->latency);
+}
+
/**
* Sometimes we really want this node to execute after everything that
* was before it and before everything that followed it. This adds
@@ -253,6 +263,12 @@ instruction_scheduler::calculate_deps()
schedule_node *last_grf_write[virtual_grf_count];
schedule_node *last_mrf_write[BRW_MAX_MRF];
schedule_node *last_conditional_mod = NULL;
+ /* Fixed HW registers are assumed to be separate from the virtual
+ * GRFs, so they can be tracked separately. We don't really write
+ * to fixed GRFs much, so don't bother tracking them on a more
+ * granular level.
+ */
+ schedule_node *last_fixed_grf_write = NULL;
/* The last instruction always needs to still be the last
* instruction. Either it's flow control (IF, ELSE, ENDIF, DO,
@@ -274,10 +290,11 @@ instruction_scheduler::calculate_deps()
/* read-after-write deps. */
for (int i = 0; i < 3; i++) {
if (inst->src[i].file == GRF) {
- if (last_grf_write[inst->src[i].reg]) {
- add_dep(last_grf_write[inst->src[i].reg], n,
- last_grf_write[inst->src[i].reg]->latency);
- }
+ add_dep(last_grf_write[inst->src[i].reg], n);
+ } else if (inst->src[i].file == FIXED_HW_REG &&
+ (inst->src[i].fixed_hw_reg.file ==
+ BRW_GENERAL_REGISTER_FILE)) {
+ add_dep(last_fixed_grf_write, n);
} else if (inst->src[i].file != BAD_FILE &&
inst->src[i].file != IMM &&
inst->src[i].file != UNIFORM) {
@@ -291,53 +308,41 @@ instruction_scheduler::calculate_deps()
* instruction once it's sent, not when the result comes
* back.
*/
- if (last_mrf_write[inst->base_mrf + i]) {
- add_dep(last_mrf_write[inst->base_mrf + i], n,
- last_mrf_write[inst->base_mrf + i]->latency);
- }
+ add_dep(last_mrf_write[inst->base_mrf + i], n);
}
if (inst->predicated) {
assert(last_conditional_mod);
- add_dep(last_conditional_mod, n, last_conditional_mod->latency);
+ add_dep(last_conditional_mod, n);
}
/* write-after-write deps. */
if (inst->dst.file == GRF) {
- if (last_grf_write[inst->dst.reg]) {
- add_dep(last_grf_write[inst->dst.reg], n,
- last_grf_write[inst->dst.reg]->latency);
- }
+ add_dep(last_grf_write[inst->dst.reg], n);
last_grf_write[inst->dst.reg] = n;
} else if (inst->dst.file == MRF) {
int reg = inst->dst.hw_reg & ~BRW_MRF_COMPR4;
- if (last_mrf_write[reg]) {
- add_dep(last_mrf_write[reg], n,
- last_mrf_write[reg]->latency);
- }
+ add_dep(last_mrf_write[reg], n);
last_mrf_write[reg] = n;
if (is_compressed(inst)) {
if (inst->dst.hw_reg & BRW_MRF_COMPR4)
reg += 4;
else
reg++;
- if (last_mrf_write[reg]) {
- add_dep(last_mrf_write[reg], n,
- last_mrf_write[reg]->latency);
- }
+ add_dep(last_mrf_write[reg], n);
last_mrf_write[reg] = n;
}
+ } else if (inst->dst.file == FIXED_HW_REG &&
+ inst->dst.fixed_hw_reg.file == BRW_GENERAL_REGISTER_FILE) {
+ last_fixed_grf_write = n;
} else if (inst->dst.file != BAD_FILE) {
add_barrier_deps(n);
}
if (inst->mlen > 0) {
for (int i = 0; i < v->implied_mrf_writes(inst); i++) {
- if (last_mrf_write[inst->base_mrf + i]) {
- add_dep(last_mrf_write[inst->base_mrf + i], n,
- last_mrf_write[inst->base_mrf + i]->latency);
- }
+ add_dep(last_mrf_write[inst->base_mrf + i], n);
last_mrf_write[inst->base_mrf + i] = n;
}
}
@@ -352,6 +357,7 @@ instruction_scheduler::calculate_deps()
memset(last_grf_write, 0, sizeof(last_grf_write));
memset(last_mrf_write, 0, sizeof(last_mrf_write));
last_conditional_mod = NULL;
+ last_fixed_grf_write = NULL;
exec_node *node;
exec_node *prev;
@@ -364,9 +370,11 @@ instruction_scheduler::calculate_deps()
/* write-after-read deps. */
for (int i = 0; i < 3; i++) {
if (inst->src[i].file == GRF) {
- if (last_grf_write[inst->src[i].reg]) {
- add_dep(n, last_grf_write[inst->src[i].reg], n->latency);
- }
+ add_dep(n, last_grf_write[inst->src[i].reg]);
+ } else if (inst->src[i].file == FIXED_HW_REG &&
+ (inst->src[i].fixed_hw_reg.file ==
+ BRW_GENERAL_REGISTER_FILE)) {
+ add_dep(n, last_fixed_grf_write);
} else if (inst->src[i].file != BAD_FILE &&
inst->src[i].file != IMM &&
inst->src[i].file != UNIFORM) {
@@ -384,9 +392,7 @@ instruction_scheduler::calculate_deps()
}
if (inst->predicated) {
- if (last_conditional_mod) {
- add_dep(n, last_conditional_mod, n->latency);
- }
+ add_dep(n, last_conditional_mod);
}
/* Update the things this instruction wrote, so earlier reads
@@ -407,6 +413,9 @@ instruction_scheduler::calculate_deps()
last_mrf_write[reg] = n;
}
+ } else if (inst->dst.file == FIXED_HW_REG &&
+ inst->dst.fixed_hw_reg.file == BRW_GENERAL_REGISTER_FILE) {
+ last_fixed_grf_write = n;
} else if (inst->dst.file != BAD_FILE) {
add_barrier_deps(n);
}
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
new file mode 100644
index 00000000000..b4857871c78
--- /dev/null
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -0,0 +1,1734 @@
+/*
+ * Copyright © 2010 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 brw_fs_visitor.cpp
+ *
+ * This file supports generating the FS LIR from the GLSL IR. The LIR
+ * makes it easier to do backend-specific optimizations than doing so
+ * in the GLSL IR or in the native code.
+ */
+extern "C" {
+
+#include <sys/types.h>
+
+#include "main/macros.h"
+#include "main/shaderobj.h"
+#include "main/uniforms.h"
+#include "program/prog_parameter.h"
+#include "program/prog_print.h"
+#include "program/prog_optimize.h"
+#include "program/register_allocate.h"
+#include "program/sampler.h"
+#include "program/hash_table.h"
+#include "brw_context.h"
+#include "brw_eu.h"
+#include "brw_wm.h"
+}
+#include "brw_shader.h"
+#include "brw_fs.h"
+#include "../glsl/glsl_types.h"
+#include "../glsl/ir_optimization.h"
+#include "../glsl/ir_print_visitor.h"
+
+void
+fs_visitor::visit(ir_variable *ir)
+{
+ fs_reg *reg = NULL;
+
+ if (variable_storage(ir))
+ return;
+
+ if (strcmp(ir->name, "gl_FragColor") == 0) {
+ this->frag_color = ir;
+ } else if (strcmp(ir->name, "gl_FragData") == 0) {
+ this->frag_data = ir;
+ } else if (strcmp(ir->name, "gl_FragDepth") == 0) {
+ this->frag_depth = ir;
+ }
+
+ if (ir->mode == ir_var_in) {
+ if (!strcmp(ir->name, "gl_FragCoord")) {
+ reg = emit_fragcoord_interpolation(ir);
+ } else if (!strcmp(ir->name, "gl_FrontFacing")) {
+ reg = emit_frontfacing_interpolation(ir);
+ } else {
+ reg = emit_general_interpolation(ir);
+ }
+ assert(reg);
+ hash_table_insert(this->variable_ht, reg, ir);
+ return;
+ }
+
+ if (ir->mode == ir_var_uniform) {
+ int param_index = c->prog_data.nr_params;
+
+ if (c->dispatch_width == 16) {
+ if (!variable_storage(ir)) {
+ fail("Failed to find uniform '%s' in 16-wide\n", ir->name);
+ }
+ return;
+ }
+
+ if (!strncmp(ir->name, "gl_", 3)) {
+ setup_builtin_uniform_values(ir);
+ } else {
+ setup_uniform_values(ir->location, ir->type);
+ }
+
+ reg = new(this->mem_ctx) fs_reg(UNIFORM, param_index);
+ reg->type = brw_type_for_base_type(ir->type);
+ }
+
+ if (!reg)
+ reg = new(this->mem_ctx) fs_reg(this, ir->type);
+
+ hash_table_insert(this->variable_ht, reg, ir);
+}
+
+void
+fs_visitor::visit(ir_dereference_variable *ir)
+{
+ fs_reg *reg = variable_storage(ir->var);
+ this->result = *reg;
+}
+
+void
+fs_visitor::visit(ir_dereference_record *ir)
+{
+ const glsl_type *struct_type = ir->record->type;
+
+ ir->record->accept(this);
+
+ unsigned int offset = 0;
+ for (unsigned int i = 0; i < struct_type->length; i++) {
+ if (strcmp(struct_type->fields.structure[i].name, ir->field) == 0)
+ break;
+ offset += type_size(struct_type->fields.structure[i].type);
+ }
+ this->result.reg_offset += offset;
+ this->result.type = brw_type_for_base_type(ir->type);
+}
+
+void
+fs_visitor::visit(ir_dereference_array *ir)
+{
+ ir_constant *index;
+ int element_size;
+
+ ir->array->accept(this);
+ index = ir->array_index->as_constant();
+
+ element_size = type_size(ir->type);
+ this->result.type = brw_type_for_base_type(ir->type);
+
+ if (index) {
+ assert(this->result.file == UNIFORM ||
+ (this->result.file == GRF &&
+ this->result.reg != 0));
+ this->result.reg_offset += index->value.i[0] * element_size;
+ } else {
+ assert(!"FINISHME: non-constant array element");
+ }
+}
+
+/* Instruction selection: Produce a MOV.sat instead of
+ * MIN(MAX(val, 0), 1) when possible.
+ */
+bool
+fs_visitor::try_emit_saturate(ir_expression *ir)
+{
+ ir_rvalue *sat_val = ir->as_rvalue_to_saturate();
+
+ if (!sat_val)
+ return false;
+
+ this->result = reg_undef;
+ sat_val->accept(this);
+ fs_reg src = this->result;
+
+ this->result = fs_reg(this, ir->type);
+ fs_inst *inst = emit(BRW_OPCODE_MOV, this->result, src);
+ inst->saturate = true;
+
+ return true;
+}
+
+void
+fs_visitor::visit(ir_expression *ir)
+{
+ unsigned int operand;
+ fs_reg op[2], temp;
+ fs_inst *inst;
+
+ assert(ir->get_num_operands() <= 2);
+
+ if (try_emit_saturate(ir))
+ return;
+
+ /* This is where our caller would like us to put the result, if possible. */
+ fs_reg saved_result_storage = this->result;
+
+ for (operand = 0; operand < ir->get_num_operands(); operand++) {
+ this->result = reg_undef;
+ ir->operands[operand]->accept(this);
+ if (this->result.file == BAD_FILE) {
+ ir_print_visitor v;
+ fail("Failed to get tree for expression operand:\n");
+ ir->operands[operand]->accept(&v);
+ }
+ op[operand] = this->result;
+
+ /* Matrix expression operands should have been broken down to vector
+ * operations already.
+ */
+ assert(!ir->operands[operand]->type->is_matrix());
+ /* And then those vector operands should have been broken down to scalar.
+ */
+ assert(!ir->operands[operand]->type->is_vector());
+ }
+
+ /* Inherit storage from our parent if possible, and otherwise we
+ * alloc a temporary.
+ */
+ if (saved_result_storage.file == BAD_FILE) {
+ this->result = fs_reg(this, ir->type);
+ } else {
+ this->result = saved_result_storage;
+ }
+
+ switch (ir->operation) {
+ case ir_unop_logic_not:
+ /* Note that BRW_OPCODE_NOT is not appropriate here, since it is
+ * ones complement of the whole register, not just bit 0.
+ */
+ emit(BRW_OPCODE_XOR, this->result, op[0], fs_reg(1));
+ break;
+ case ir_unop_neg:
+ op[0].negate = !op[0].negate;
+ this->result = op[0];
+ break;
+ case ir_unop_abs:
+ op[0].abs = true;
+ op[0].negate = false;
+ this->result = op[0];
+ break;
+ case ir_unop_sign:
+ temp = fs_reg(this, ir->type);
+
+ /* Unalias the destination. (imagine a = sign(a)) */
+ this->result = fs_reg(this, ir->type);
+
+ emit(BRW_OPCODE_MOV, this->result, fs_reg(0.0f));
+
+ inst = emit(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f));
+ inst->conditional_mod = BRW_CONDITIONAL_G;
+ inst = emit(BRW_OPCODE_MOV, this->result, fs_reg(1.0f));
+ inst->predicated = true;
+
+ inst = emit(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f));
+ inst->conditional_mod = BRW_CONDITIONAL_L;
+ inst = emit(BRW_OPCODE_MOV, this->result, fs_reg(-1.0f));
+ inst->predicated = true;
+
+ break;
+ case ir_unop_rcp:
+ emit_math(FS_OPCODE_RCP, this->result, op[0]);
+ break;
+
+ case ir_unop_exp2:
+ emit_math(FS_OPCODE_EXP2, this->result, op[0]);
+ break;
+ case ir_unop_log2:
+ emit_math(FS_OPCODE_LOG2, this->result, op[0]);
+ break;
+ case ir_unop_exp:
+ case ir_unop_log:
+ assert(!"not reached: should be handled by ir_explog_to_explog2");
+ break;
+ case ir_unop_sin:
+ case ir_unop_sin_reduced:
+ emit_math(FS_OPCODE_SIN, this->result, op[0]);
+ break;
+ case ir_unop_cos:
+ case ir_unop_cos_reduced:
+ emit_math(FS_OPCODE_COS, this->result, op[0]);
+ break;
+
+ case ir_unop_dFdx:
+ emit(FS_OPCODE_DDX, this->result, op[0]);
+ break;
+ case ir_unop_dFdy:
+ emit(FS_OPCODE_DDY, this->result, op[0]);
+ break;
+
+ case ir_binop_add:
+ emit(BRW_OPCODE_ADD, this->result, op[0], op[1]);
+ break;
+ case ir_binop_sub:
+ assert(!"not reached: should be handled by ir_sub_to_add_neg");
+ break;
+
+ case ir_binop_mul:
+ emit(BRW_OPCODE_MUL, this->result, op[0], op[1]);
+ break;
+ case ir_binop_div:
+ assert(!"not reached: should be handled by ir_div_to_mul_rcp");
+ break;
+ case ir_binop_mod:
+ assert(!"ir_binop_mod should have been converted to b * fract(a/b)");
+ break;
+
+ case ir_binop_less:
+ case ir_binop_greater:
+ case ir_binop_lequal:
+ case ir_binop_gequal:
+ case ir_binop_equal:
+ case ir_binop_all_equal:
+ case ir_binop_nequal:
+ case ir_binop_any_nequal:
+ temp = this->result;
+ /* original gen4 does implicit conversion before comparison. */
+ if (intel->gen < 5)
+ temp.type = op[0].type;
+
+ inst = emit(BRW_OPCODE_CMP, temp, op[0], op[1]);
+ inst->conditional_mod = brw_conditional_for_comparison(ir->operation);
+ emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(0x1));
+ break;
+
+ case ir_binop_logic_xor:
+ emit(BRW_OPCODE_XOR, this->result, op[0], op[1]);
+ break;
+
+ case ir_binop_logic_or:
+ emit(BRW_OPCODE_OR, this->result, op[0], op[1]);
+ break;
+
+ case ir_binop_logic_and:
+ emit(BRW_OPCODE_AND, this->result, op[0], op[1]);
+ break;
+
+ case ir_binop_dot:
+ case ir_unop_any:
+ assert(!"not reached: should be handled by brw_fs_channel_expressions");
+ break;
+
+ case ir_unop_noise:
+ assert(!"not reached: should be handled by lower_noise");
+ break;
+
+ case ir_quadop_vector:
+ assert(!"not reached: should be handled by lower_quadop_vector");
+ break;
+
+ case ir_unop_sqrt:
+ emit_math(FS_OPCODE_SQRT, this->result, op[0]);
+ break;
+
+ case ir_unop_rsq:
+ emit_math(FS_OPCODE_RSQ, this->result, op[0]);
+ break;
+
+ case ir_unop_i2f:
+ case ir_unop_b2f:
+ case ir_unop_b2i:
+ case ir_unop_f2i:
+ emit(BRW_OPCODE_MOV, this->result, op[0]);
+ break;
+ case ir_unop_f2b:
+ case ir_unop_i2b:
+ temp = this->result;
+ /* original gen4 does implicit conversion before comparison. */
+ if (intel->gen < 5)
+ temp.type = op[0].type;
+
+ inst = emit(BRW_OPCODE_CMP, temp, op[0], fs_reg(0.0f));
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ inst = emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(1));
+ break;
+
+ case ir_unop_trunc:
+ emit(BRW_OPCODE_RNDZ, this->result, op[0]);
+ break;
+ case ir_unop_ceil:
+ op[0].negate = !op[0].negate;
+ inst = emit(BRW_OPCODE_RNDD, this->result, op[0]);
+ this->result.negate = true;
+ break;
+ case ir_unop_floor:
+ inst = emit(BRW_OPCODE_RNDD, this->result, op[0]);
+ break;
+ case ir_unop_fract:
+ inst = emit(BRW_OPCODE_FRC, this->result, op[0]);
+ break;
+ case ir_unop_round_even:
+ emit(BRW_OPCODE_RNDE, this->result, op[0]);
+ break;
+
+ case ir_binop_min:
+ if (intel->gen >= 6) {
+ inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]);
+ inst->conditional_mod = BRW_CONDITIONAL_L;
+ } else {
+ /* Unalias the destination */
+ this->result = fs_reg(this, ir->type);
+
+ inst = emit(BRW_OPCODE_CMP, this->result, op[0], op[1]);
+ inst->conditional_mod = BRW_CONDITIONAL_L;
+
+ inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]);
+ inst->predicated = true;
+ }
+ break;
+ case ir_binop_max:
+ if (intel->gen >= 6) {
+ inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]);
+ inst->conditional_mod = BRW_CONDITIONAL_GE;
+ } else {
+ /* Unalias the destination */
+ this->result = fs_reg(this, ir->type);
+
+ inst = emit(BRW_OPCODE_CMP, this->result, op[0], op[1]);
+ inst->conditional_mod = BRW_CONDITIONAL_G;
+
+ inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]);
+ inst->predicated = true;
+ }
+ break;
+
+ case ir_binop_pow:
+ emit_math(FS_OPCODE_POW, this->result, op[0], op[1]);
+ break;
+
+ case ir_unop_bit_not:
+ inst = emit(BRW_OPCODE_NOT, this->result, op[0]);
+ break;
+ case ir_binop_bit_and:
+ inst = emit(BRW_OPCODE_AND, this->result, op[0], op[1]);
+ break;
+ case ir_binop_bit_xor:
+ inst = emit(BRW_OPCODE_XOR, this->result, op[0], op[1]);
+ break;
+ case ir_binop_bit_or:
+ inst = emit(BRW_OPCODE_OR, this->result, op[0], op[1]);
+ break;
+
+ case ir_unop_u2f:
+ case ir_binop_lshift:
+ case ir_binop_rshift:
+ assert(!"GLSL 1.30 features unsupported");
+ break;
+ }
+}
+
+void
+fs_visitor::emit_assignment_writes(fs_reg &l, fs_reg &r,
+ const glsl_type *type, bool predicated)
+{
+ switch (type->base_type) {
+ case GLSL_TYPE_FLOAT:
+ case GLSL_TYPE_UINT:
+ case GLSL_TYPE_INT:
+ case GLSL_TYPE_BOOL:
+ for (unsigned int i = 0; i < type->components(); i++) {
+ l.type = brw_type_for_base_type(type);
+ r.type = brw_type_for_base_type(type);
+
+ if (predicated || !l.equals(&r)) {
+ fs_inst *inst = emit(BRW_OPCODE_MOV, l, r);
+ inst->predicated = predicated;
+ }
+
+ l.reg_offset++;
+ r.reg_offset++;
+ }
+ break;
+ case GLSL_TYPE_ARRAY:
+ for (unsigned int i = 0; i < type->length; i++) {
+ emit_assignment_writes(l, r, type->fields.array, predicated);
+ }
+ break;
+
+ case GLSL_TYPE_STRUCT:
+ for (unsigned int i = 0; i < type->length; i++) {
+ emit_assignment_writes(l, r, type->fields.structure[i].type,
+ predicated);
+ }
+ break;
+
+ case GLSL_TYPE_SAMPLER:
+ break;
+
+ default:
+ assert(!"not reached");
+ break;
+ }
+}
+
+void
+fs_visitor::visit(ir_assignment *ir)
+{
+ struct fs_reg l, r;
+ fs_inst *inst;
+
+ /* FINISHME: arrays on the lhs */
+ this->result = reg_undef;
+ ir->lhs->accept(this);
+ l = this->result;
+
+ /* If we're doing a direct assignment, an RHS expression could
+ * drop its result right into our destination. Otherwise, tell it
+ * not to.
+ */
+ if (ir->condition ||
+ !(ir->lhs->type->is_scalar() ||
+ (ir->lhs->type->is_vector() &&
+ ir->write_mask == (1 << ir->lhs->type->vector_elements) - 1))) {
+ this->result = reg_undef;
+ }
+
+ ir->rhs->accept(this);
+ r = this->result;
+
+ assert(l.file != BAD_FILE);
+ assert(r.file != BAD_FILE);
+
+ if (ir->condition) {
+ emit_bool_to_cond_code(ir->condition);
+ }
+
+ if (ir->lhs->type->is_scalar() ||
+ ir->lhs->type->is_vector()) {
+ for (int i = 0; i < ir->lhs->type->vector_elements; i++) {
+ if (ir->write_mask & (1 << i)) {
+ if (ir->condition) {
+ inst = emit(BRW_OPCODE_MOV, l, r);
+ inst->predicated = true;
+ } else if (!l.equals(&r)) {
+ inst = emit(BRW_OPCODE_MOV, l, r);
+ }
+
+ r.reg_offset++;
+ }
+ l.reg_offset++;
+ }
+ } else {
+ emit_assignment_writes(l, r, ir->lhs->type, ir->condition != NULL);
+ }
+}
+
+fs_inst *
+fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate,
+ int sampler)
+{
+ int mlen;
+ int base_mrf = 1;
+ bool simd16 = false;
+ fs_reg orig_dst;
+
+ /* g0 header. */
+ mlen = 1;
+
+ if (ir->shadow_comparitor) {
+ for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
+ fs_inst *inst = emit(BRW_OPCODE_MOV,
+ fs_reg(MRF, base_mrf + mlen + i), coordinate);
+ if (i < 3 && c->key.gl_clamp_mask[i] & (1 << sampler))
+ inst->saturate = true;
+
+ coordinate.reg_offset++;
+ }
+ /* gen4's SIMD8 sampler always has the slots for u,v,r present. */
+ mlen += 3;
+
+ if (ir->op == ir_tex) {
+ /* There's no plain shadow compare message, so we use shadow
+ * compare with a bias of 0.0.
+ */
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), fs_reg(0.0f));
+ mlen++;
+ } else if (ir->op == ir_txb) {
+ this->result = reg_undef;
+ ir->lod_info.bias->accept(this);
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
+ mlen++;
+ } else {
+ assert(ir->op == ir_txl);
+ this->result = reg_undef;
+ ir->lod_info.lod->accept(this);
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
+ mlen++;
+ }
+
+ this->result = reg_undef;
+ ir->shadow_comparitor->accept(this);
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
+ mlen++;
+ } else if (ir->op == ir_tex) {
+ for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
+ fs_inst *inst = emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i),
+ coordinate);
+ if (i < 3 && c->key.gl_clamp_mask[i] & (1 << sampler))
+ inst->saturate = true;
+ coordinate.reg_offset++;
+ }
+ /* gen4's SIMD8 sampler always has the slots for u,v,r present. */
+ mlen += 3;
+ } else if (ir->op == ir_txd) {
+ assert(!"TXD isn't supported on gen4 yet.");
+ } else {
+ /* Oh joy. gen4 doesn't have SIMD8 non-shadow-compare bias/lod
+ * instructions. We'll need to do SIMD16 here.
+ */
+ assert(ir->op == ir_txb || ir->op == ir_txl);
+
+ for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
+ fs_inst *inst = emit(BRW_OPCODE_MOV, fs_reg(MRF,
+ base_mrf + mlen + i * 2),
+ coordinate);
+ if (i < 3 && c->key.gl_clamp_mask[i] & (1 << sampler))
+ inst->saturate = true;
+ coordinate.reg_offset++;
+ }
+
+ /* lod/bias appears after u/v/r. */
+ mlen += 6;
+
+ if (ir->op == ir_txb) {
+ this->result = reg_undef;
+ ir->lod_info.bias->accept(this);
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
+ mlen++;
+ } else {
+ this->result = reg_undef;
+ ir->lod_info.lod->accept(this);
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
+ mlen++;
+ }
+
+ /* The unused upper half. */
+ mlen++;
+
+ /* Now, since we're doing simd16, the return is 2 interleaved
+ * vec4s where the odd-indexed ones are junk. We'll need to move
+ * this weirdness around to the expected layout.
+ */
+ simd16 = true;
+ orig_dst = dst;
+ dst = fs_reg(this, glsl_type::get_array_instance(glsl_type::vec4_type,
+ 2));
+ dst.type = BRW_REGISTER_TYPE_F;
+ }
+
+ fs_inst *inst = NULL;
+ switch (ir->op) {
+ case ir_tex:
+ inst = emit(FS_OPCODE_TEX, dst);
+ break;
+ case ir_txb:
+ inst = emit(FS_OPCODE_TXB, dst);
+ break;
+ case ir_txl:
+ inst = emit(FS_OPCODE_TXL, dst);
+ break;
+ case ir_txd:
+ inst = emit(FS_OPCODE_TXD, dst);
+ break;
+ case ir_txf:
+ assert(!"GLSL 1.30 features unsupported");
+ break;
+ }
+ inst->base_mrf = base_mrf;
+ inst->mlen = mlen;
+ inst->header_present = true;
+
+ if (simd16) {
+ for (int i = 0; i < 4; i++) {
+ emit(BRW_OPCODE_MOV, orig_dst, dst);
+ orig_dst.reg_offset++;
+ dst.reg_offset += 2;
+ }
+ }
+
+ return inst;
+}
+
+/* gen5's sampler has slots for u, v, r, array index, then optional
+ * parameters like shadow comparitor or LOD bias. If optional
+ * parameters aren't present, those base slots are optional and don't
+ * need to be included in the message.
+ *
+ * We don't fill in the unnecessary slots regardless, which may look
+ * surprising in the disassembly.
+ */
+fs_inst *
+fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate,
+ int sampler)
+{
+ int mlen = 0;
+ int base_mrf = 2;
+ int reg_width = c->dispatch_width / 8;
+ bool header_present = false;
+
+ if (ir->offset) {
+ /* The offsets set up by the ir_texture visitor are in the
+ * m1 header, so we can't go headerless.
+ */
+ header_present = true;
+ mlen++;
+ base_mrf--;
+ }
+
+ for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
+ fs_inst *inst = emit(BRW_OPCODE_MOV,
+ fs_reg(MRF, base_mrf + mlen + i * reg_width),
+ coordinate);
+ if (i < 3 && c->key.gl_clamp_mask[i] & (1 << sampler))
+ inst->saturate = true;
+ coordinate.reg_offset++;
+ }
+ mlen += ir->coordinate->type->vector_elements * reg_width;
+
+ if (ir->shadow_comparitor) {
+ mlen = MAX2(mlen, header_present + 4 * reg_width);
+
+ this->result = reg_undef;
+ ir->shadow_comparitor->accept(this);
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
+ mlen += reg_width;
+ }
+
+ fs_inst *inst = NULL;
+ switch (ir->op) {
+ case ir_tex:
+ inst = emit(FS_OPCODE_TEX, dst);
+ break;
+ case ir_txb:
+ this->result = reg_undef;
+ ir->lod_info.bias->accept(this);
+ mlen = MAX2(mlen, header_present + 4 * reg_width);
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
+ mlen += reg_width;
+
+ inst = emit(FS_OPCODE_TXB, dst);
+
+ break;
+ case ir_txl:
+ this->result = reg_undef;
+ ir->lod_info.lod->accept(this);
+ mlen = MAX2(mlen, header_present + 4 * reg_width);
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
+ mlen += reg_width;
+
+ inst = emit(FS_OPCODE_TXL, dst);
+ break;
+ case ir_txd:
+ case ir_txf:
+ assert(!"GLSL 1.30 features unsupported");
+ break;
+ }
+ inst->base_mrf = base_mrf;
+ inst->mlen = mlen;
+ inst->header_present = header_present;
+
+ if (mlen > 11) {
+ fail("Message length >11 disallowed by hardware\n");
+ }
+
+ return inst;
+}
+
+fs_inst *
+fs_visitor::emit_texture_gen7(ir_texture *ir, fs_reg dst, fs_reg coordinate,
+ int sampler)
+{
+ int mlen = 0;
+ int base_mrf = 2;
+ int reg_width = c->dispatch_width / 8;
+ bool header_present = false;
+
+ if (ir->offset) {
+ /* The offsets set up by the ir_texture visitor are in the
+ * m1 header, so we can't go headerless.
+ */
+ header_present = true;
+ mlen++;
+ base_mrf--;
+ }
+
+ if (ir->shadow_comparitor) {
+ ir->shadow_comparitor->accept(this);
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
+ mlen += reg_width;
+ }
+
+ /* Set up the LOD info */
+ switch (ir->op) {
+ case ir_tex:
+ break;
+ case ir_txb:
+ ir->lod_info.bias->accept(this);
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
+ mlen += reg_width;
+ break;
+ case ir_txl:
+ ir->lod_info.lod->accept(this);
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
+ mlen += reg_width;
+ break;
+ case ir_txd:
+ case ir_txf:
+ assert(!"GLSL 1.30 features unsupported");
+ break;
+ }
+
+ /* Set up the coordinate */
+ for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
+ fs_inst *inst = emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen),
+ coordinate);
+ if (i < 3 && c->key.gl_clamp_mask[i] & (1 << sampler))
+ inst->saturate = true;
+ coordinate.reg_offset++;
+ mlen += reg_width;
+ }
+
+ /* Generate the SEND */
+ fs_inst *inst = NULL;
+ switch (ir->op) {
+ case ir_tex: inst = emit(FS_OPCODE_TEX, dst); break;
+ case ir_txb: inst = emit(FS_OPCODE_TXB, dst); break;
+ case ir_txl: inst = emit(FS_OPCODE_TXL, dst); break;
+ case ir_txd: inst = emit(FS_OPCODE_TXD, dst); break;
+ case ir_txf: assert(!"TXF unsupported.");
+ }
+ inst->base_mrf = base_mrf;
+ inst->mlen = mlen;
+ inst->header_present = header_present;
+
+ if (mlen > 11) {
+ fail("Message length >11 disallowed by hardware\n");
+ }
+
+ return inst;
+}
+
+void
+fs_visitor::visit(ir_texture *ir)
+{
+ int sampler;
+ fs_inst *inst = NULL;
+
+ this->result = reg_undef;
+ ir->coordinate->accept(this);
+ fs_reg coordinate = this->result;
+
+ if (ir->offset != NULL) {
+ ir_constant *offset = ir->offset->as_constant();
+ assert(offset != NULL);
+
+ signed char offsets[3];
+ for (unsigned i = 0; i < ir->offset->type->vector_elements; i++)
+ offsets[i] = (signed char) offset->value.i[i];
+
+ /* Combine all three offsets into a single unsigned dword:
+ *
+ * bits 11:8 - U Offset (X component)
+ * bits 7:4 - V Offset (Y component)
+ * bits 3:0 - R Offset (Z component)
+ */
+ unsigned offset_bits = 0;
+ for (unsigned i = 0; i < ir->offset->type->vector_elements; i++) {
+ const unsigned shift = 4 * (2 - i);
+ offset_bits |= (offsets[i] << shift) & (0xF << shift);
+ }
+
+ /* Explicitly set up the message header by copying g0 to msg reg m1. */
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, 1, BRW_REGISTER_TYPE_UD),
+ fs_reg(GRF, 0, BRW_REGISTER_TYPE_UD));
+
+ /* Then set the offset bits in DWord 2 of the message header. */
+ emit(BRW_OPCODE_MOV,
+ fs_reg(retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 1, 2),
+ BRW_REGISTER_TYPE_UD)),
+ fs_reg(brw_imm_uw(offset_bits)));
+ }
+
+ /* Should be lowered by do_lower_texture_projection */
+ assert(!ir->projector);
+
+ sampler = _mesa_get_sampler_uniform_value(ir->sampler,
+ prog,
+ &fp->Base);
+ sampler = fp->Base.SamplerUnits[sampler];
+
+ /* The 965 requires the EU to do the normalization of GL rectangle
+ * texture coordinates. We use the program parameter state
+ * tracking to get the scaling factor.
+ */
+ if (ir->sampler->type->sampler_dimensionality == GLSL_SAMPLER_DIM_RECT) {
+ struct gl_program_parameter_list *params = c->fp->program.Base.Parameters;
+ int tokens[STATE_LENGTH] = {
+ STATE_INTERNAL,
+ STATE_TEXRECT_SCALE,
+ sampler,
+ 0,
+ 0
+ };
+
+ if (c->dispatch_width == 16) {
+ fail("rectangle scale uniform setup not supported on 16-wide\n");
+ this->result = fs_reg(this, ir->type);
+ return;
+ }
+
+ c->prog_data.param_convert[c->prog_data.nr_params] =
+ PARAM_NO_CONVERT;
+ c->prog_data.param_convert[c->prog_data.nr_params + 1] =
+ PARAM_NO_CONVERT;
+
+ fs_reg scale_x = fs_reg(UNIFORM, c->prog_data.nr_params);
+ fs_reg scale_y = fs_reg(UNIFORM, c->prog_data.nr_params + 1);
+ GLuint index = _mesa_add_state_reference(params,
+ (gl_state_index *)tokens);
+
+ this->param_index[c->prog_data.nr_params] = index;
+ this->param_offset[c->prog_data.nr_params] = 0;
+ c->prog_data.nr_params++;
+ this->param_index[c->prog_data.nr_params] = index;
+ this->param_offset[c->prog_data.nr_params] = 1;
+ c->prog_data.nr_params++;
+
+ fs_reg dst = fs_reg(this, ir->coordinate->type);
+ fs_reg src = coordinate;
+ coordinate = dst;
+
+ emit(BRW_OPCODE_MUL, dst, src, scale_x);
+ dst.reg_offset++;
+ src.reg_offset++;
+ emit(BRW_OPCODE_MUL, dst, src, scale_y);
+ }
+
+ /* Writemasking doesn't eliminate channels on SIMD8 texture
+ * samples, so don't worry about them.
+ */
+ fs_reg dst = fs_reg(this, glsl_type::vec4_type);
+
+ if (intel->gen >= 7) {
+ inst = emit_texture_gen7(ir, dst, coordinate, sampler);
+ } else if (intel->gen >= 5) {
+ inst = emit_texture_gen5(ir, dst, coordinate, sampler);
+ } else {
+ inst = emit_texture_gen4(ir, dst, coordinate, sampler);
+ }
+
+ /* If there's an offset, we already set up m1. To avoid the implied move,
+ * use the null register. Otherwise, we want an implied move from g0.
+ */
+ if (ir->offset != NULL || !inst->header_present)
+ inst->src[0] = reg_undef;
+ else
+ inst->src[0] = fs_reg(retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UW));
+
+ inst->sampler = sampler;
+
+ this->result = dst;
+
+ if (ir->shadow_comparitor)
+ inst->shadow_compare = true;
+
+ if (ir->type == glsl_type::float_type) {
+ /* Ignore DEPTH_TEXTURE_MODE swizzling. */
+ assert(ir->sampler->type->sampler_shadow);
+ } else if (c->key.tex_swizzles[inst->sampler] != SWIZZLE_NOOP) {
+ fs_reg swizzle_dst = fs_reg(this, glsl_type::vec4_type);
+
+ for (int i = 0; i < 4; i++) {
+ int swiz = GET_SWZ(c->key.tex_swizzles[inst->sampler], i);
+ fs_reg l = swizzle_dst;
+ l.reg_offset += i;
+
+ if (swiz == SWIZZLE_ZERO) {
+ emit(BRW_OPCODE_MOV, l, fs_reg(0.0f));
+ } else if (swiz == SWIZZLE_ONE) {
+ emit(BRW_OPCODE_MOV, l, fs_reg(1.0f));
+ } else {
+ fs_reg r = dst;
+ r.reg_offset += GET_SWZ(c->key.tex_swizzles[inst->sampler], i);
+ emit(BRW_OPCODE_MOV, l, r);
+ }
+ }
+ this->result = swizzle_dst;
+ }
+}
+
+void
+fs_visitor::visit(ir_swizzle *ir)
+{
+ this->result = reg_undef;
+ ir->val->accept(this);
+ fs_reg val = this->result;
+
+ if (ir->type->vector_elements == 1) {
+ this->result.reg_offset += ir->mask.x;
+ return;
+ }
+
+ fs_reg result = fs_reg(this, ir->type);
+ this->result = result;
+
+ for (unsigned int i = 0; i < ir->type->vector_elements; i++) {
+ fs_reg channel = val;
+ int swiz = 0;
+
+ switch (i) {
+ case 0:
+ swiz = ir->mask.x;
+ break;
+ case 1:
+ swiz = ir->mask.y;
+ break;
+ case 2:
+ swiz = ir->mask.z;
+ break;
+ case 3:
+ swiz = ir->mask.w;
+ break;
+ }
+
+ channel.reg_offset += swiz;
+ emit(BRW_OPCODE_MOV, result, channel);
+ result.reg_offset++;
+ }
+}
+
+void
+fs_visitor::visit(ir_discard *ir)
+{
+ assert(ir->condition == NULL); /* FINISHME */
+
+ emit(FS_OPCODE_DISCARD);
+ kill_emitted = true;
+}
+
+void
+fs_visitor::visit(ir_constant *ir)
+{
+ /* Set this->result to reg at the bottom of the function because some code
+ * paths will cause this visitor to be applied to other fields. This will
+ * cause the value stored in this->result to be modified.
+ *
+ * Make reg constant so that it doesn't get accidentally modified along the
+ * way. Yes, I actually had this problem. :(
+ */
+ const fs_reg reg(this, ir->type);
+ fs_reg dst_reg = reg;
+
+ if (ir->type->is_array()) {
+ const unsigned size = type_size(ir->type->fields.array);
+
+ for (unsigned i = 0; i < ir->type->length; i++) {
+ this->result = reg_undef;
+ ir->array_elements[i]->accept(this);
+ fs_reg src_reg = this->result;
+
+ dst_reg.type = src_reg.type;
+ for (unsigned j = 0; j < size; j++) {
+ emit(BRW_OPCODE_MOV, dst_reg, src_reg);
+ src_reg.reg_offset++;
+ dst_reg.reg_offset++;
+ }
+ }
+ } else if (ir->type->is_record()) {
+ foreach_list(node, &ir->components) {
+ ir_instruction *const field = (ir_instruction *) node;
+ const unsigned size = type_size(field->type);
+
+ this->result = reg_undef;
+ field->accept(this);
+ fs_reg src_reg = this->result;
+
+ dst_reg.type = src_reg.type;
+ for (unsigned j = 0; j < size; j++) {
+ emit(BRW_OPCODE_MOV, dst_reg, src_reg);
+ src_reg.reg_offset++;
+ dst_reg.reg_offset++;
+ }
+ }
+ } else {
+ const unsigned size = type_size(ir->type);
+
+ for (unsigned i = 0; i < size; i++) {
+ switch (ir->type->base_type) {
+ case GLSL_TYPE_FLOAT:
+ emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.f[i]));
+ break;
+ case GLSL_TYPE_UINT:
+ emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.u[i]));
+ break;
+ case GLSL_TYPE_INT:
+ emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.i[i]));
+ break;
+ case GLSL_TYPE_BOOL:
+ emit(BRW_OPCODE_MOV, dst_reg, fs_reg((int)ir->value.b[i]));
+ break;
+ default:
+ assert(!"Non-float/uint/int/bool constant");
+ }
+ dst_reg.reg_offset++;
+ }
+ }
+
+ this->result = reg;
+}
+
+void
+fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir)
+{
+ ir_expression *expr = ir->as_expression();
+
+ if (expr) {
+ fs_reg op[2];
+ fs_inst *inst;
+
+ assert(expr->get_num_operands() <= 2);
+ for (unsigned int i = 0; i < expr->get_num_operands(); i++) {
+ assert(expr->operands[i]->type->is_scalar());
+
+ this->result = reg_undef;
+ expr->operands[i]->accept(this);
+ op[i] = this->result;
+ }
+
+ switch (expr->operation) {
+ case ir_unop_logic_not:
+ inst = emit(BRW_OPCODE_AND, reg_null_d, op[0], fs_reg(1));
+ inst->conditional_mod = BRW_CONDITIONAL_Z;
+ break;
+
+ case ir_binop_logic_xor:
+ inst = emit(BRW_OPCODE_XOR, reg_null_d, op[0], op[1]);
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ break;
+
+ case ir_binop_logic_or:
+ inst = emit(BRW_OPCODE_OR, reg_null_d, op[0], op[1]);
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ break;
+
+ case ir_binop_logic_and:
+ inst = emit(BRW_OPCODE_AND, reg_null_d, op[0], op[1]);
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ break;
+
+ case ir_unop_f2b:
+ if (intel->gen >= 6) {
+ inst = emit(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0.0f));
+ } else {
+ inst = emit(BRW_OPCODE_MOV, reg_null_f, op[0]);
+ }
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ break;
+
+ case ir_unop_i2b:
+ if (intel->gen >= 6) {
+ inst = emit(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0));
+ } else {
+ inst = emit(BRW_OPCODE_MOV, reg_null_d, op[0]);
+ }
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ break;
+
+ case ir_binop_greater:
+ case ir_binop_gequal:
+ case ir_binop_less:
+ case ir_binop_lequal:
+ case ir_binop_equal:
+ case ir_binop_all_equal:
+ case ir_binop_nequal:
+ case ir_binop_any_nequal:
+ inst = emit(BRW_OPCODE_CMP, reg_null_cmp, op[0], op[1]);
+ inst->conditional_mod =
+ brw_conditional_for_comparison(expr->operation);
+ break;
+
+ default:
+ assert(!"not reached");
+ fail("bad cond code\n");
+ break;
+ }
+ return;
+ }
+
+ this->result = reg_undef;
+ ir->accept(this);
+
+ if (intel->gen >= 6) {
+ fs_inst *inst = emit(BRW_OPCODE_AND, reg_null_d, this->result, fs_reg(1));
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ } else {
+ fs_inst *inst = emit(BRW_OPCODE_MOV, reg_null_d, this->result);
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ }
+}
+
+/**
+ * Emit a gen6 IF statement with the comparison folded into the IF
+ * instruction.
+ */
+void
+fs_visitor::emit_if_gen6(ir_if *ir)
+{
+ ir_expression *expr = ir->condition->as_expression();
+
+ if (expr) {
+ fs_reg op[2];
+ fs_inst *inst;
+ fs_reg temp;
+
+ assert(expr->get_num_operands() <= 2);
+ for (unsigned int i = 0; i < expr->get_num_operands(); i++) {
+ assert(expr->operands[i]->type->is_scalar());
+
+ this->result = reg_undef;
+ expr->operands[i]->accept(this);
+ op[i] = this->result;
+ }
+
+ switch (expr->operation) {
+ case ir_unop_logic_not:
+ inst = emit(BRW_OPCODE_IF, temp, op[0], fs_reg(0));
+ inst->conditional_mod = BRW_CONDITIONAL_Z;
+ return;
+
+ case ir_binop_logic_xor:
+ inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], op[1]);
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ return;
+
+ case ir_binop_logic_or:
+ temp = fs_reg(this, glsl_type::bool_type);
+ emit(BRW_OPCODE_OR, temp, op[0], op[1]);
+ inst = emit(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0));
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ return;
+
+ case ir_binop_logic_and:
+ temp = fs_reg(this, glsl_type::bool_type);
+ emit(BRW_OPCODE_AND, temp, op[0], op[1]);
+ inst = emit(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0));
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ return;
+
+ case ir_unop_f2b:
+ inst = emit(BRW_OPCODE_IF, reg_null_f, op[0], fs_reg(0));
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ return;
+
+ case ir_unop_i2b:
+ inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0));
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ return;
+
+ case ir_binop_greater:
+ case ir_binop_gequal:
+ case ir_binop_less:
+ case ir_binop_lequal:
+ case ir_binop_equal:
+ case ir_binop_all_equal:
+ case ir_binop_nequal:
+ case ir_binop_any_nequal:
+ inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], op[1]);
+ inst->conditional_mod =
+ brw_conditional_for_comparison(expr->operation);
+ return;
+ default:
+ assert(!"not reached");
+ inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0));
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ fail("bad condition\n");
+ return;
+ }
+ return;
+ }
+
+ this->result = reg_undef;
+ ir->condition->accept(this);
+
+ fs_inst *inst = emit(BRW_OPCODE_IF, reg_null_d, this->result, fs_reg(0));
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+}
+
+void
+fs_visitor::visit(ir_if *ir)
+{
+ fs_inst *inst;
+
+ if (intel->gen != 6 && c->dispatch_width == 16) {
+ fail("Can't support (non-uniform) control flow on 16-wide\n");
+ }
+
+ /* Don't point the annotation at the if statement, because then it plus
+ * the then and else blocks get printed.
+ */
+ this->base_ir = ir->condition;
+
+ if (intel->gen == 6) {
+ emit_if_gen6(ir);
+ } else {
+ emit_bool_to_cond_code(ir->condition);
+
+ inst = emit(BRW_OPCODE_IF);
+ inst->predicated = true;
+ }
+
+ foreach_iter(exec_list_iterator, iter, ir->then_instructions) {
+ ir_instruction *ir = (ir_instruction *)iter.get();
+ this->base_ir = ir;
+ this->result = reg_undef;
+ ir->accept(this);
+ }
+
+ if (!ir->else_instructions.is_empty()) {
+ emit(BRW_OPCODE_ELSE);
+
+ foreach_iter(exec_list_iterator, iter, ir->else_instructions) {
+ ir_instruction *ir = (ir_instruction *)iter.get();
+ this->base_ir = ir;
+ this->result = reg_undef;
+ ir->accept(this);
+ }
+ }
+
+ emit(BRW_OPCODE_ENDIF);
+}
+
+void
+fs_visitor::visit(ir_loop *ir)
+{
+ fs_reg counter = reg_undef;
+
+ if (c->dispatch_width == 16) {
+ fail("Can't support (non-uniform) control flow on 16-wide\n");
+ }
+
+ if (ir->counter) {
+ this->base_ir = ir->counter;
+ ir->counter->accept(this);
+ counter = *(variable_storage(ir->counter));
+
+ if (ir->from) {
+ this->result = counter;
+
+ this->base_ir = ir->from;
+ this->result = counter;
+ ir->from->accept(this);
+
+ if (!this->result.equals(&counter))
+ emit(BRW_OPCODE_MOV, counter, this->result);
+ }
+ }
+
+ emit(BRW_OPCODE_DO);
+
+ if (ir->to) {
+ this->base_ir = ir->to;
+ this->result = reg_undef;
+ ir->to->accept(this);
+
+ fs_inst *inst = emit(BRW_OPCODE_CMP, reg_null_cmp, counter, this->result);
+ inst->conditional_mod = brw_conditional_for_comparison(ir->cmp);
+
+ inst = emit(BRW_OPCODE_BREAK);
+ inst->predicated = true;
+ }
+
+ foreach_iter(exec_list_iterator, iter, ir->body_instructions) {
+ ir_instruction *ir = (ir_instruction *)iter.get();
+
+ this->base_ir = ir;
+ this->result = reg_undef;
+ ir->accept(this);
+ }
+
+ if (ir->increment) {
+ this->base_ir = ir->increment;
+ this->result = reg_undef;
+ ir->increment->accept(this);
+ emit(BRW_OPCODE_ADD, counter, counter, this->result);
+ }
+
+ emit(BRW_OPCODE_WHILE);
+}
+
+void
+fs_visitor::visit(ir_loop_jump *ir)
+{
+ switch (ir->mode) {
+ case ir_loop_jump::jump_break:
+ emit(BRW_OPCODE_BREAK);
+ break;
+ case ir_loop_jump::jump_continue:
+ emit(BRW_OPCODE_CONTINUE);
+ break;
+ }
+}
+
+void
+fs_visitor::visit(ir_call *ir)
+{
+ assert(!"FINISHME");
+}
+
+void
+fs_visitor::visit(ir_return *ir)
+{
+ assert(!"FINISHME");
+}
+
+void
+fs_visitor::visit(ir_function *ir)
+{
+ /* Ignore function bodies other than main() -- we shouldn't see calls to
+ * them since they should all be inlined before we get to ir_to_mesa.
+ */
+ if (strcmp(ir->name, "main") == 0) {
+ const ir_function_signature *sig;
+ exec_list empty;
+
+ sig = ir->matching_signature(&empty);
+
+ assert(sig);
+
+ foreach_iter(exec_list_iterator, iter, sig->body) {
+ ir_instruction *ir = (ir_instruction *)iter.get();
+ this->base_ir = ir;
+ this->result = reg_undef;
+ ir->accept(this);
+ }
+ }
+}
+
+void
+fs_visitor::visit(ir_function_signature *ir)
+{
+ assert(!"not reached");
+ (void)ir;
+}
+
+fs_inst *
+fs_visitor::emit(fs_inst inst)
+{
+ fs_inst *list_inst = new(mem_ctx) fs_inst;
+ *list_inst = inst;
+
+ if (force_uncompressed_stack > 0)
+ list_inst->force_uncompressed = true;
+ else if (force_sechalf_stack > 0)
+ list_inst->force_sechalf = true;
+
+ list_inst->annotation = this->current_annotation;
+ list_inst->ir = this->base_ir;
+
+ this->instructions.push_tail(list_inst);
+
+ return list_inst;
+}
+
+/** Emits a dummy fragment shader consisting of magenta for bringup purposes. */
+void
+fs_visitor::emit_dummy_fs()
+{
+ /* Everyone's favorite color. */
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, 2), fs_reg(1.0f));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, 3), fs_reg(0.0f));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, 4), fs_reg(1.0f));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, 5), fs_reg(0.0f));
+
+ fs_inst *write;
+ write = emit(FS_OPCODE_FB_WRITE, fs_reg(0), fs_reg(0));
+ write->base_mrf = 0;
+}
+
+/* The register location here is relative to the start of the URB
+ * data. It will get adjusted to be a real location before
+ * generate_code() time.
+ */
+struct brw_reg
+fs_visitor::interp_reg(int location, int channel)
+{
+ int regnr = urb_setup[location] * 2 + channel / 2;
+ int stride = (channel & 1) * 4;
+
+ assert(urb_setup[location] != -1);
+
+ return brw_vec1_grf(regnr, stride);
+}
+
+/** Emits the interpolation for the varying inputs. */
+void
+fs_visitor::emit_interpolation_setup_gen4()
+{
+ this->current_annotation = "compute pixel centers";
+ this->pixel_x = fs_reg(this, glsl_type::uint_type);
+ this->pixel_y = fs_reg(this, glsl_type::uint_type);
+ this->pixel_x.type = BRW_REGISTER_TYPE_UW;
+ this->pixel_y.type = BRW_REGISTER_TYPE_UW;
+
+ emit(FS_OPCODE_PIXEL_X, this->pixel_x);
+ emit(FS_OPCODE_PIXEL_Y, this->pixel_y);
+
+ this->current_annotation = "compute pixel deltas from v0";
+ if (brw->has_pln) {
+ this->delta_x = fs_reg(this, glsl_type::vec2_type);
+ this->delta_y = this->delta_x;
+ this->delta_y.reg_offset++;
+ } else {
+ this->delta_x = fs_reg(this, glsl_type::float_type);
+ this->delta_y = fs_reg(this, glsl_type::float_type);
+ }
+ emit(BRW_OPCODE_ADD, this->delta_x,
+ this->pixel_x, fs_reg(negate(brw_vec1_grf(1, 0))));
+ emit(BRW_OPCODE_ADD, this->delta_y,
+ this->pixel_y, fs_reg(negate(brw_vec1_grf(1, 1))));
+
+ this->current_annotation = "compute pos.w and 1/pos.w";
+ /* Compute wpos.w. It's always in our setup, since it's needed to
+ * interpolate the other attributes.
+ */
+ this->wpos_w = fs_reg(this, glsl_type::float_type);
+ emit(FS_OPCODE_LINTERP, wpos_w, this->delta_x, this->delta_y,
+ interp_reg(FRAG_ATTRIB_WPOS, 3));
+ /* Compute the pixel 1/W value from wpos.w. */
+ this->pixel_w = fs_reg(this, glsl_type::float_type);
+ emit_math(FS_OPCODE_RCP, this->pixel_w, wpos_w);
+ this->current_annotation = NULL;
+}
+
+/** Emits the interpolation for the varying inputs. */
+void
+fs_visitor::emit_interpolation_setup_gen6()
+{
+ struct brw_reg g1_uw = retype(brw_vec1_grf(1, 0), BRW_REGISTER_TYPE_UW);
+
+ /* If the pixel centers end up used, the setup is the same as for gen4. */
+ this->current_annotation = "compute pixel centers";
+ fs_reg int_pixel_x = fs_reg(this, glsl_type::uint_type);
+ fs_reg int_pixel_y = fs_reg(this, glsl_type::uint_type);
+ int_pixel_x.type = BRW_REGISTER_TYPE_UW;
+ int_pixel_y.type = BRW_REGISTER_TYPE_UW;
+ emit(BRW_OPCODE_ADD,
+ int_pixel_x,
+ fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)),
+ fs_reg(brw_imm_v(0x10101010)));
+ emit(BRW_OPCODE_ADD,
+ int_pixel_y,
+ fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)),
+ fs_reg(brw_imm_v(0x11001100)));
+
+ /* As of gen6, we can no longer mix float and int sources. We have
+ * to turn the integer pixel centers into floats for their actual
+ * use.
+ */
+ this->pixel_x = fs_reg(this, glsl_type::float_type);
+ this->pixel_y = fs_reg(this, glsl_type::float_type);
+ emit(BRW_OPCODE_MOV, this->pixel_x, int_pixel_x);
+ emit(BRW_OPCODE_MOV, this->pixel_y, int_pixel_y);
+
+ this->current_annotation = "compute pos.w";
+ this->pixel_w = fs_reg(brw_vec8_grf(c->source_w_reg, 0));
+ this->wpos_w = fs_reg(this, glsl_type::float_type);
+ emit_math(FS_OPCODE_RCP, this->wpos_w, this->pixel_w);
+
+ this->delta_x = fs_reg(brw_vec8_grf(2, 0));
+ this->delta_y = fs_reg(brw_vec8_grf(3, 0));
+
+ this->current_annotation = NULL;
+}
+
+void
+fs_visitor::emit_color_write(int index, int first_color_mrf, fs_reg color)
+{
+ int reg_width = c->dispatch_width / 8;
+
+ if (c->dispatch_width == 8 || intel->gen == 6) {
+ /* SIMD8 write looks like:
+ * m + 0: r0
+ * m + 1: r1
+ * m + 2: g0
+ * m + 3: g1
+ *
+ * gen6 SIMD16 DP write looks like:
+ * m + 0: r0
+ * m + 1: r1
+ * m + 2: g0
+ * m + 3: g1
+ * m + 4: b0
+ * m + 5: b1
+ * m + 6: a0
+ * m + 7: a1
+ */
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index * reg_width),
+ color);
+ } else {
+ /* pre-gen6 SIMD16 single source DP write looks like:
+ * m + 0: r0
+ * m + 1: g0
+ * m + 2: b0
+ * m + 3: a0
+ * m + 4: r1
+ * m + 5: g1
+ * m + 6: b1
+ * m + 7: a1
+ */
+ if (brw->has_compr4) {
+ /* By setting the high bit of the MRF register number, we
+ * indicate that we want COMPR4 mode - instead of doing the
+ * usual destination + 1 for the second half we get
+ * destination + 4.
+ */
+ emit(BRW_OPCODE_MOV,
+ fs_reg(MRF, BRW_MRF_COMPR4 + first_color_mrf + index), color);
+ } else {
+ push_force_uncompressed();
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index), color);
+ pop_force_uncompressed();
+
+ push_force_sechalf();
+ color.sechalf = true;
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index + 4), color);
+ pop_force_sechalf();
+ color.sechalf = false;
+ }
+ }
+}
+
+void
+fs_visitor::emit_fb_writes()
+{
+ this->current_annotation = "FB write header";
+ GLboolean header_present = GL_TRUE;
+ int nr = 0;
+ int reg_width = c->dispatch_width / 8;
+
+ if (intel->gen >= 6 &&
+ !this->kill_emitted &&
+ c->key.nr_color_regions == 1) {
+ header_present = false;
+ }
+
+ if (header_present) {
+ /* m0, m1 header */
+ nr += 2;
+ }
+
+ if (c->aa_dest_stencil_reg) {
+ push_force_uncompressed();
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++),
+ fs_reg(brw_vec8_grf(c->aa_dest_stencil_reg, 0)));
+ pop_force_uncompressed();
+ }
+
+ /* Reserve space for color. It'll be filled in per MRT below. */
+ int color_mrf = nr;
+ nr += 4 * reg_width;
+
+ if (c->source_depth_to_render_target) {
+ if (intel->gen == 6 && c->dispatch_width == 16) {
+ /* For outputting oDepth on gen6, SIMD8 writes have to be
+ * used. This would require 8-wide moves of each half to
+ * message regs, kind of like pre-gen5 SIMD16 FB writes.
+ * Just bail on doing so for now.
+ */
+ fail("Missing support for simd16 depth writes on gen6\n");
+ }
+
+ if (c->computes_depth) {
+ /* Hand over gl_FragDepth. */
+ assert(this->frag_depth);
+ fs_reg depth = *(variable_storage(this->frag_depth));
+
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, nr), depth);
+ } else {
+ /* Pass through the payload depth. */
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, nr),
+ fs_reg(brw_vec8_grf(c->source_depth_reg, 0)));
+ }
+ nr += reg_width;
+ }
+
+ if (c->dest_depth_reg) {
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, nr),
+ fs_reg(brw_vec8_grf(c->dest_depth_reg, 0)));
+ nr += reg_width;
+ }
+
+ fs_reg color = reg_undef;
+ if (this->frag_color)
+ color = *(variable_storage(this->frag_color));
+ else if (this->frag_data) {
+ color = *(variable_storage(this->frag_data));
+ color.type = BRW_REGISTER_TYPE_F;
+ }
+
+ for (int target = 0; target < c->key.nr_color_regions; target++) {
+ this->current_annotation = ralloc_asprintf(this->mem_ctx,
+ "FB write target %d",
+ target);
+ if (this->frag_color || this->frag_data) {
+ for (int i = 0; i < 4; i++) {
+ emit_color_write(i, color_mrf, color);
+ color.reg_offset++;
+ }
+ }
+
+ if (this->frag_color)
+ color.reg_offset -= 4;
+
+ fs_inst *inst = emit(FS_OPCODE_FB_WRITE);
+ inst->target = target;
+ inst->base_mrf = 0;
+ inst->mlen = nr;
+ if (target == c->key.nr_color_regions - 1)
+ inst->eot = true;
+ inst->header_present = header_present;
+ }
+
+ if (c->key.nr_color_regions == 0) {
+ if (c->key.alpha_test && (this->frag_color || this->frag_data)) {
+ /* If the alpha test is enabled but there's no color buffer,
+ * we still need to send alpha out the pipeline to our null
+ * renderbuffer.
+ */
+ color.reg_offset += 3;
+ emit_color_write(3, color_mrf, color);
+ }
+
+ fs_inst *inst = emit(FS_OPCODE_FB_WRITE);
+ inst->base_mrf = 0;
+ inst->mlen = nr;
+ inst->eot = true;
+ inst->header_present = header_present;
+ }
+
+ this->current_annotation = NULL;
+}
diff --git a/src/mesa/drivers/dri/i965/brw_sf.c b/src/mesa/drivers/dri/i965/brw_sf.c
index 9b82fe159f9..c2227777cfb 100644
--- a/src/mesa/drivers/dri/i965/brw_sf.c
+++ b/src/mesa/drivers/dri/i965/brw_sf.c
@@ -181,9 +181,6 @@ static void upload_sf_prog(struct brw_context *brw)
key.do_flat_shading = (ctx->Light.ShadeModel == GL_FLAT);
key.do_twoside_color = (ctx->Light.Enabled && ctx->Light.Model.TwoSide);
- /* _NEW_HINT */
- key.linear_color = (ctx->Hint.PerspectiveCorrection == GL_FASTEST);
-
/* _NEW_POLYGON */
if (key.do_twoside_color) {
/* If we're rendering to a FBO, we have to invert the polygon
diff --git a/src/mesa/drivers/dri/i965/brw_sf.h b/src/mesa/drivers/dri/i965/brw_sf.h
index e525c730d3f..be32085c697 100644
--- a/src/mesa/drivers/dri/i965/brw_sf.h
+++ b/src/mesa/drivers/dri/i965/brw_sf.h
@@ -52,7 +52,6 @@ struct brw_sf_prog_key {
GLuint do_flat_shading:1;
GLuint frontface_ccw:1;
GLuint do_point_sprite:1;
- GLuint linear_color:1; /**< linear interp vs. perspective interp */
GLuint sprite_origin_lower_left:1;
GLuint pad:24;
};
diff --git a/src/mesa/drivers/dri/i965/brw_sf_emit.c b/src/mesa/drivers/dri/i965/brw_sf_emit.c
index 4b2e26cbed7..52a3fb3893d 100644
--- a/src/mesa/drivers/dri/i965/brw_sf_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_sf_emit.c
@@ -316,7 +316,7 @@ static GLboolean calculate_masks( struct brw_sf_compile *c,
GLbitfield64 persp_mask;
GLbitfield64 linear_mask;
- if (c->key.do_flat_shading || c->key.linear_color)
+ if (c->key.do_flat_shading)
persp_mask = c->key.attrs & ~(FRAG_BIT_WPOS |
FRAG_BIT_COL0 |
FRAG_BIT_COL1);
diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp
new file mode 100644
index 00000000000..9471883fb2b
--- /dev/null
+++ b/src/mesa/drivers/dri/i965/brw_shader.cpp
@@ -0,0 +1,194 @@
+/*
+ * Copyright © 2010 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.
+ */
+
+extern "C" {
+#include "main/macros.h"
+#include "brw_context.h"
+}
+#include "brw_fs.h"
+#include "../glsl/ir_optimization.h"
+#include "../glsl/ir_print_visitor.h"
+
+struct gl_shader *
+brw_new_shader(struct gl_context *ctx, GLuint name, GLuint type)
+{
+ struct brw_shader *shader;
+
+ shader = rzalloc(NULL, struct brw_shader);
+ if (shader) {
+ shader->base.Type = type;
+ shader->base.Name = name;
+ _mesa_init_shader(ctx, &shader->base);
+ }
+
+ return &shader->base;
+}
+
+struct gl_shader_program *
+brw_new_shader_program(struct gl_context *ctx, GLuint name)
+{
+ struct brw_shader_program *prog;
+ prog = rzalloc(NULL, struct brw_shader_program);
+ if (prog) {
+ prog->base.Name = name;
+ _mesa_init_shader_program(ctx, &prog->base);
+ }
+ return &prog->base;
+}
+
+/**
+ * Performs a compile of the shader stages even when we don't know
+ * what non-orthogonal state will be set, in the hope that it reflects
+ * the eventual NOS used, and thus allows us to produce link failures.
+ */
+bool
+brw_shader_precompile(struct gl_context *ctx, struct gl_shader_program *prog)
+{
+ if (!brw_fs_precompile(ctx, prog))
+ return false;
+
+ return true;
+}
+
+GLboolean
+brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
+{
+ struct brw_context *brw = brw_context(ctx);
+ struct intel_context *intel = &brw->intel;
+
+ struct brw_shader *shader =
+ (struct brw_shader *)prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
+ if (shader != NULL) {
+ void *mem_ctx = ralloc_context(NULL);
+ bool progress;
+
+ if (shader->ir)
+ ralloc_free(shader->ir);
+ shader->ir = new(shader) exec_list;
+ clone_ir_list(mem_ctx, shader->ir, shader->base.ir);
+
+ do_mat_op_to_vec(shader->ir);
+ lower_instructions(shader->ir,
+ MOD_TO_FRACT |
+ DIV_TO_MUL_RCP |
+ SUB_TO_ADD_NEG |
+ EXP_TO_EXP2 |
+ LOG_TO_LOG2);
+
+ /* Pre-gen6 HW can only nest if-statements 16 deep. Beyond this,
+ * if-statements need to be flattened.
+ */
+ if (intel->gen < 6)
+ lower_if_to_cond_assign(shader->ir, 16);
+
+ do_lower_texture_projection(shader->ir);
+ do_vec_index_to_cond_assign(shader->ir);
+ brw_do_cubemap_normalize(shader->ir);
+ lower_noise(shader->ir);
+ lower_quadop_vector(shader->ir, false);
+ lower_variable_index_to_cond_assign(shader->ir,
+ GL_TRUE, /* input */
+ GL_TRUE, /* output */
+ GL_TRUE, /* temp */
+ GL_TRUE /* uniform */
+ );
+
+ do {
+ progress = false;
+
+ brw_do_channel_expressions(shader->ir);
+ brw_do_vector_splitting(shader->ir);
+
+ progress = do_lower_jumps(shader->ir, true, true,
+ true, /* main return */
+ false, /* continue */
+ false /* loops */
+ ) || progress;
+
+ progress = do_common_optimization(shader->ir, true, 32) || progress;
+ } while (progress);
+
+ validate_ir_tree(shader->ir);
+
+ reparent_ir(shader->ir, shader->ir);
+ ralloc_free(mem_ctx);
+ }
+
+ if (!_mesa_ir_link_shader(ctx, prog))
+ return GL_FALSE;
+
+ if (!brw_shader_precompile(ctx, prog))
+ return GL_FALSE;
+
+ return GL_TRUE;
+}
+
+
+int
+brw_type_for_base_type(const struct glsl_type *type)
+{
+ switch (type->base_type) {
+ case GLSL_TYPE_FLOAT:
+ return BRW_REGISTER_TYPE_F;
+ case GLSL_TYPE_INT:
+ case GLSL_TYPE_BOOL:
+ return BRW_REGISTER_TYPE_D;
+ case GLSL_TYPE_UINT:
+ return BRW_REGISTER_TYPE_UD;
+ case GLSL_TYPE_ARRAY:
+ case GLSL_TYPE_STRUCT:
+ case GLSL_TYPE_SAMPLER:
+ /* These should be overridden with the type of the member when
+ * dereferenced into. BRW_REGISTER_TYPE_UD seems like a likely
+ * way to trip up if we don't.
+ */
+ return BRW_REGISTER_TYPE_UD;
+ default:
+ assert(!"not reached");
+ return BRW_REGISTER_TYPE_F;
+ }
+}
+
+uint32_t
+brw_conditional_for_comparison(unsigned int op)
+{
+ switch (op) {
+ case ir_binop_less:
+ return BRW_CONDITIONAL_L;
+ case ir_binop_greater:
+ return BRW_CONDITIONAL_G;
+ case ir_binop_lequal:
+ return BRW_CONDITIONAL_LE;
+ case ir_binop_gequal:
+ return BRW_CONDITIONAL_GE;
+ case ir_binop_equal:
+ case ir_binop_all_equal: /* same as equal for scalars */
+ return BRW_CONDITIONAL_Z;
+ case ir_binop_nequal:
+ case ir_binop_any_nequal: /* same as nequal for scalars */
+ return BRW_CONDITIONAL_NZ;
+ default:
+ assert(!"not reached: bad operation for comparison");
+ return BRW_CONDITIONAL_NZ;
+ }
+}
diff --git a/src/mesa/drivers/dri/i965/brw_shader.h b/src/mesa/drivers/dri/i965/brw_shader.h
new file mode 100644
index 00000000000..4c568a26caa
--- /dev/null
+++ b/src/mesa/drivers/dri/i965/brw_shader.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright © 2010 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.
+ */
+
+int brw_type_for_base_type(const struct glsl_type *type);
+uint32_t brw_conditional_for_comparison(unsigned int op);
diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c
index 3a3aa8c0346..ef58619702d 100644
--- a/src/mesa/drivers/dri/i965/brw_state_dump.c
+++ b/src/mesa/drivers/dri/i965/brw_state_dump.c
@@ -110,7 +110,7 @@ static void dump_wm_surface_state(struct brw_context *brw)
for (i = 0; i < brw->wm.nr_surfaces; i++) {
unsigned int surfoff;
- struct brw_surface_state *surf;
+ uint32_t *surf;
char name[20];
if (brw->wm.surf_offset[i] == 0) {
@@ -118,21 +118,25 @@ static void dump_wm_surface_state(struct brw_context *brw)
continue;
}
surfoff = bo->offset + brw->wm.surf_offset[i];
- surf = (struct brw_surface_state *)(base + brw->wm.surf_offset[i]);
+ surf = (uint32_t *)(base + brw->wm.surf_offset[i]);
sprintf(name, "WM SURF%d", i);
state_out(name, surf, surfoff, 0, "%s %s\n",
- get_965_surfacetype(surf->ss0.surface_type),
- get_965_surface_format(surf->ss0.surface_format));
+ get_965_surfacetype(GET_FIELD(surf[0], BRW_SURFACE_TYPE)),
+ get_965_surface_format(GET_FIELD(surf[0], BRW_SURFACE_FORMAT)));
state_out(name, surf, surfoff, 1, "offset\n");
state_out(name, surf, surfoff, 2, "%dx%d size, %d mips\n",
- surf->ss2.width + 1, surf->ss2.height + 1, surf->ss2.mip_count);
- state_out(name, surf, surfoff, 3, "pitch %d, %stiled\n",
- surf->ss3.pitch + 1, surf->ss3.tiled_surface ? "" : "not ");
+ GET_FIELD(surf[2], BRW_SURFACE_WIDTH) + 1,
+ GET_FIELD(surf[2], BRW_SURFACE_HEIGHT) + 1);
+ state_out(name, surf, surfoff, 3, "pitch %d, %s tiled\n",
+ GET_FIELD(surf[3], BRW_SURFACE_PITCH) + 1,
+ (surf[3] & BRW_SURFACE_TILED) ?
+ ((surf[3] & BRW_SURFACE_TILED_Y) ? "Y" : "X") : "not");
state_out(name, surf, surfoff, 4, "mip base %d\n",
- surf->ss4.min_lod);
+ GET_FIELD(surf[4], BRW_SURFACE_MIN_LOD));
state_out(name, surf, surfoff, 5, "x,y offset: %d,%d\n",
- surf->ss5.x_offset, surf->ss5.y_offset);
+ GET_FIELD(surf[5], BRW_SURFACE_X_OFFSET),
+ GET_FIELD(surf[5], BRW_SURFACE_Y_OFFSET));
}
drm_intel_bo_unmap(bo);
}
diff --git a/src/mesa/drivers/dri/i965/brw_structs.h b/src/mesa/drivers/dri/i965/brw_structs.h
index ad31222e9ec..7b9cdba4cbf 100644
--- a/src/mesa/drivers/dri/i965/brw_structs.h
+++ b/src/mesa/drivers/dri/i965/brw_structs.h
@@ -1225,80 +1225,6 @@ struct gen7_sf_clip_viewport {
GLfloat pad1[4];
};
-/* Documented in the subsystem/shared-functions/sampler chapter...
- *
- * vol5c Shared Functions - 1.13.4.1.1
- */
-struct brw_surface_state
-{
- struct {
- GLuint cube_pos_z:1;
- GLuint cube_neg_z:1;
- GLuint cube_pos_y:1;
- GLuint cube_neg_y:1;
- GLuint cube_pos_x:1;
- GLuint cube_neg_x:1;
- GLuint pad:2;
- /* Required on gen6 for surfaces accessed through render cache messages.
- */
- GLuint render_cache_read_write:1;
- /* Ironlake and newer: instead of replicating one of the texels */
- GLuint cube_corner_average:1;
- GLuint mipmap_layout_mode:1;
- GLuint vert_line_stride_ofs:1;
- GLuint vert_line_stride:1;
- GLuint color_blend:1;
- GLuint writedisable_blue:1;
- GLuint writedisable_green:1;
- GLuint writedisable_red:1;
- GLuint writedisable_alpha:1;
- GLuint surface_format:9; /**< BRW_SURFACEFORMAT_x */
- GLuint data_return_format:1;
- GLuint pad0:1;
- GLuint surface_type:3; /**< BRW_SURFACE_1D/2D/3D/CUBE */
- } ss0;
-
- struct {
- GLuint base_addr;
- } ss1;
-
- struct {
- GLuint pad:2;
- GLuint mip_count:4;
- GLuint width:13;
- GLuint height:13;
- } ss2;
-
- struct {
- GLuint tile_walk:1;
- GLuint tiled_surface:1;
- GLuint pad:1;
- GLuint pitch:18;
- GLuint depth:11;
- } ss3;
-
- struct {
- GLuint multisample_position_palette_index:3;
- GLuint pad1:1;
- GLuint num_multisamples:3;
- GLuint pad0:1;
- GLuint render_target_view_extent:9;
- GLuint min_array_elt:11;
- GLuint min_lod:4;
- } ss4;
-
- struct {
- GLuint pad1:16;
- GLuint cache_control:2;
- GLuint gfdt:1;
- GLuint encrypt:1;
- GLuint y_offset:4;
- GLuint pad0:1;
- GLuint x_offset:7;
- } ss5; /* New in G4X */
-
-};
-
/* volume 5c Shared Functions - 1.13.4.1.2 */
struct gen7_surface_state
{
diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c b/src/mesa/drivers/dri/i965/brw_tex_layout.c
index 9ac0713a1d3..4a3a2bfada2 100644
--- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
+++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
@@ -61,7 +61,7 @@ GLboolean brw_miptree_layout(struct intel_context *intel,
*/
h0 = ALIGN(mt->height0, align_h);
h1 = ALIGN(minify(h0), align_h);
- qpitch = (h0 + h1 + 11 * align_h);
+ qpitch = (h0 + h1 + (intel->gen >= 7 ? 12 : 11) * align_h);
if (mt->compressed)
qpitch /= 4;
@@ -152,9 +152,6 @@ GLboolean brw_miptree_layout(struct intel_context *intel,
* in the texture surfaces run, so they may be "vertical" through
* memory. As a result, the docs say in Surface Padding Requirements:
* Sampling Engine Surfaces that two extra rows of padding are required.
- * We don't know of similar requirements for pre-965, but given that
- * those docs are silent on padding requirements in general, let's play
- * it safe.
*/
if (mt->target == GL_TEXTURE_CUBE_MAP)
mt->total_height += 2;
diff --git a/src/mesa/drivers/dri/i965/brw_vs_constval.c b/src/mesa/drivers/dri/i965/brw_vs_constval.c
index 47cc0a7da7a..9fdfebe9f76 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_constval.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_constval.c
@@ -194,11 +194,19 @@ static void calc_wm_input_sizes( struct brw_context *brw )
/* BRW_NEW_VERTEX_PROGRAM */
const struct brw_vertex_program *vp =
brw_vertex_program_const(brw->vertex_program);
+ /* BRW_NEW_FRAGMENT_PROGRAM */
+ struct gl_shader_program *prog = ctx->Shader.CurrentFragmentProgram;
/* BRW_NEW_INPUT_DIMENSIONS */
struct tracker t;
GLuint insn;
GLuint i;
+ /* If we're going to go through brw_fs.cpp, we don't end up using
+ * brw->wm.input_size_masks.
+ */
+ if (prog && prog->_LinkedShaders[MESA_SHADER_FRAGMENT])
+ return;
+
memset(&t, 0, sizeof(t));
/* _NEW_LIGHT */
@@ -238,7 +246,9 @@ static void calc_wm_input_sizes( struct brw_context *brw )
const struct brw_tracked_state brw_wm_input_sizes = {
.dirty = {
.mesa = _NEW_LIGHT,
- .brw = BRW_NEW_VERTEX_PROGRAM | BRW_NEW_INPUT_DIMENSIONS,
+ .brw = (BRW_NEW_FRAGMENT_PROGRAM |
+ BRW_NEW_VERTEX_PROGRAM |
+ BRW_NEW_INPUT_DIMENSIONS),
.cache = 0
},
.prepare = calc_wm_input_sizes
diff --git a/src/mesa/drivers/dri/i965/brw_vtbl.c b/src/mesa/drivers/dri/i965/brw_vtbl.c
index 9f99ef57214..69650e1df77 100644
--- a/src/mesa/drivers/dri/i965/brw_vtbl.c
+++ b/src/mesa/drivers/dri/i965/brw_vtbl.c
@@ -136,6 +136,16 @@ static void brw_invalidate_state( struct intel_context *intel, GLuint new_state
/* nothing */
}
+/**
+ * \see intel_context.vtbl.is_hiz_depth_format
+ */
+static bool brw_is_hiz_depth_format(struct intel_context *intel,
+ gl_format format)
+{
+ /* In the future, this will support Z_FLOAT32. */
+ return intel->has_hiz && (format == MESA_FORMAT_X8_Z24);
+}
+
void brwInitVtbl( struct brw_context *brw )
{
@@ -152,4 +162,5 @@ void brwInitVtbl( struct brw_context *brw )
brw->intel.vtbl.set_draw_region = brw_set_draw_region;
brw->intel.vtbl.debug_batch = brw_debug_batch;
brw->intel.vtbl.render_target_supported = brw_render_target_supported;
+ brw->intel.vtbl.is_hiz_depth_format = brw_is_hiz_depth_format;
}
diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c
index 907976295ab..1aebd12df49 100644
--- a/src/mesa/drivers/dri/i965/brw_wm.c
+++ b/src/mesa/drivers/dri/i965/brw_wm.c
@@ -34,6 +34,7 @@
#include "brw_state.h"
#include "main/formats.h"
#include "main/samplerobj.h"
+#include "program/prog_parameter.h"
#include "../glsl/ralloc.h"
@@ -115,7 +116,7 @@ brw_wm_non_glsl_emit(struct brw_context *brw, struct brw_wm_compile *c)
brw_wm_pass2(c);
/* how many general-purpose registers are used */
- c->prog_data.total_grf = c->max_wm_grf;
+ c->prog_data.reg_blocks = brw_register_blocks(c->max_wm_grf);
/* Emit GEN4 code.
*/
@@ -184,9 +185,10 @@ brw_wm_payload_setup(struct brw_context *brw,
* Depending on the instructions used (i.e. flow control instructions)
* we'll use one of two code generators.
*/
-static void do_wm_prog( struct brw_context *brw,
- struct brw_fragment_program *fp,
- struct brw_wm_prog_key *key)
+bool do_wm_prog(struct brw_context *brw,
+ struct gl_shader_program *prog,
+ struct brw_fragment_program *fp,
+ struct brw_wm_prog_key *key)
{
struct intel_context *intel = &brw->intel;
struct brw_wm_compile *c;
@@ -202,7 +204,7 @@ static void do_wm_prog( struct brw_context *brw,
* without triggering a segfault, no way to signal,
* so just return.
*/
- return;
+ return false;
}
c->instruction = rzalloc_array(c, struct brw_wm_instruction, BRW_WM_MAX_INSN);
c->prog_instructions = rzalloc_array(c, struct prog_instruction, BRW_WM_MAX_INSN);
@@ -226,7 +228,10 @@ static void do_wm_prog( struct brw_context *brw,
brw_init_compile(brw, &c->func, c);
- if (!brw_wm_fs_emit(brw, c)) {
+ if (prog && prog->FragmentProgram) {
+ if (!brw_wm_fs_emit(brw, c, prog))
+ return false;
+ } else {
/* Fallback for fixed function and ARB_fp shaders. */
c->dispatch_width = 16;
brw_wm_payload_setup(brw, c);
@@ -274,6 +279,8 @@ static void do_wm_prog( struct brw_context *brw,
program, program_size,
&c->prog_data, sizeof(c->prog_data),
&brw->wm.prog_data);
+
+ return true;
}
@@ -355,9 +362,6 @@ static void brw_wm_populate_key( struct brw_context *brw,
/* _NEW_LIGHT */
key->flat_shade = (ctx->Light.ShadeModel == GL_FLAT);
- /* _NEW_HINT */
- key->linear_color = (ctx->Hint.PerspectiveCorrection == GL_FASTEST);
-
/* _NEW_FRAG_CLAMP | _NEW_BUFFERS */
key->clamp_fragment_color = ctx->Color._ClampFragmentColor;
@@ -426,9 +430,6 @@ static void brw_wm_populate_key( struct brw_context *brw,
}
}
- /* Shadow */
- key->shadowtex_mask = fp->program.Base.ShadowSamplers;
-
/* _NEW_BUFFERS */
/*
* Include the draw buffer origin and height so that we can calculate
@@ -468,6 +469,8 @@ static void brw_wm_populate_key( struct brw_context *brw,
static void brw_prepare_wm_prog(struct brw_context *brw)
{
+ struct intel_context *intel = &brw->intel;
+ struct gl_context *ctx = &intel->ctx;
struct brw_wm_prog_key key;
struct brw_fragment_program *fp = (struct brw_fragment_program *)
brw->fragment_program;
@@ -480,8 +483,11 @@ static void brw_prepare_wm_prog(struct brw_context *brw)
brw->wm.prog_bo = brw_search_cache(&brw->cache, BRW_WM_PROG,
&key, sizeof(key),
&brw->wm.prog_data);
- if (brw->wm.prog_bo == NULL)
- do_wm_prog(brw, fp, &key);
+ if (brw->wm.prog_bo == NULL) {
+ bool success = do_wm_prog(brw, ctx->Shader.CurrentFragmentProgram, fp,
+ &key);
+ assert(success);
+ }
}
@@ -489,7 +495,6 @@ const struct brw_tracked_state brw_wm_prog = {
.dirty = {
.mesa = (_NEW_COLOR |
_NEW_DEPTH |
- _NEW_HINT |
_NEW_STENCIL |
_NEW_POLYGON |
_NEW_LINE |
diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h
index 8ab531bdf87..e244b55a083 100644
--- a/src/mesa/drivers/dri/i965/brw_wm.h
+++ b/src/mesa/drivers/dri/i965/brw_wm.h
@@ -59,16 +59,16 @@
#define AA_ALWAYS 2
struct brw_wm_prog_key {
+ uint8_t iz_lookup;
GLuint stats_wm:1;
GLuint flat_shade:1;
- GLuint linear_color:1; /**< linear interpolation vs perspective interp */
GLuint nr_color_regions:5;
GLuint render_to_fbo:1;
GLuint alpha_test:1;
GLuint clamp_fragment_color:1;
+ GLuint line_aa:2;
GLbitfield proj_attrib_mask; /**< one bit per fragment program attribute */
- GLuint shadowtex_mask:16;
GLuint yuvtex_mask:16;
GLuint yuvtex_swap_mask:16; /* UV swaped */
uint16_t gl_clamp_mask[3];
@@ -76,8 +76,6 @@ struct brw_wm_prog_key {
GLushort tex_swizzles[BRW_MAX_TEX_UNIT];
GLushort drawable_height;
GLbitfield64 vp_outputs_written;
- GLuint iz_lookup;
- GLuint line_aa;
GLuint program_string_id:32;
};
@@ -314,7 +312,8 @@ void brw_wm_print_program( struct brw_wm_compile *c,
void brw_wm_lookup_iz(struct intel_context *intel,
struct brw_wm_compile *c);
-bool brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c);
+bool brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c,
+ struct gl_shader_program *prog);
/* brw_wm_emit.c */
void emit_alu1(struct brw_compile *p,
@@ -476,5 +475,9 @@ bool brw_color_buffer_write_enabled(struct brw_context *brw);
bool brw_render_target_supported(gl_format format);
void brw_wm_payload_setup(struct brw_context *brw,
struct brw_wm_compile *c);
+bool do_wm_prog(struct brw_context *brw,
+ struct gl_shader_program *prog,
+ struct brw_fragment_program *fp,
+ struct brw_wm_prog_key *key);
#endif
diff --git a/src/mesa/drivers/dri/i965/brw_wm_fp.c b/src/mesa/drivers/dri/i965/brw_wm_fp.c
index 9ddbee2edf4..59dcda7b414 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_fp.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_fp.c
@@ -417,25 +417,14 @@ static void emit_interp( struct brw_wm_compile *c,
src_undef());
}
else {
- if (c->key.linear_color) {
- emit_op(c,
- WM_LINTERP,
- dst,
- 0,
- interp,
- deltas,
- src_undef());
- }
- else {
- /* perspective-corrected color interpolation */
- emit_op(c,
- WM_PINTERP,
- dst,
- 0,
- interp,
- deltas,
- get_pixel_w(c));
- }
+ /* perspective-corrected color interpolation */
+ emit_op(c,
+ WM_PINTERP,
+ dst,
+ 0,
+ interp,
+ deltas,
+ get_pixel_w(c));
}
break;
case FRAG_ATTRIB_FOGC:
diff --git a/src/mesa/drivers/dri/i965/brw_wm_state.c b/src/mesa/drivers/dri/i965/brw_wm_state.c
index a356711470a..ef98f8126dc 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_state.c
@@ -91,8 +91,8 @@ brw_prepare_wm_unit(struct brw_context *brw)
}
/* CACHE_NEW_WM_PROG */
- wm->thread0.grf_reg_count = ALIGN(brw->wm.prog_data->total_grf, 16) / 16 - 1;
- wm->wm9.grf_reg_count_2 = ALIGN(brw->wm.prog_data->total_grf_16, 16) / 16 - 1;
+ wm->thread0.grf_reg_count = brw->wm.prog_data->reg_blocks;
+ wm->wm9.grf_reg_count_2 = brw->wm.prog_data->reg_blocks_16;
wm->thread0.kernel_start_pointer = brw->wm.prog_bo->offset >> 6; /* reloc */
/* reloc */
wm->wm9.kernel_start_pointer_2 = (brw->wm.prog_bo->offset +
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index de1953ed600..6c1eba69d4b 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -200,22 +200,16 @@ translate_tex_format(gl_format mesa_format,
}
}
-static void
-brw_set_surface_tiling(struct brw_surface_state *surf, uint32_t tiling)
+static uint32_t
+brw_get_surface_tiling_bits(uint32_t tiling)
{
switch (tiling) {
- case I915_TILING_NONE:
- surf->ss3.tiled_surface = 0;
- surf->ss3.tile_walk = 0;
- break;
case I915_TILING_X:
- surf->ss3.tiled_surface = 1;
- surf->ss3.tile_walk = BRW_TILEWALK_XMAJOR;
- break;
+ return BRW_SURFACE_TILED;
case I915_TILING_Y:
- surf->ss3.tiled_surface = 1;
- surf->ss3.tile_walk = BRW_TILEWALK_YMAJOR;
- break;
+ return BRW_SURFACE_TILED | BRW_SURFACE_TILED_Y;
+ default:
+ return 0;
}
}
@@ -228,46 +222,36 @@ brw_update_texture_surface( struct gl_context *ctx, GLuint unit )
struct gl_texture_image *firstImage = tObj->Image[0][tObj->BaseLevel];
struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, unit);
const GLuint surf_index = SURF_INDEX_TEXTURE(unit);
- struct brw_surface_state *surf;
+ uint32_t *surf;
- surf = brw_state_batch(brw, sizeof(*surf), 32,
- &brw->wm.surf_offset[surf_index]);
- memset(surf, 0, sizeof(*surf));
+ surf = brw_state_batch(brw, 6 * 4, 32, &brw->wm.surf_offset[surf_index]);
- surf->ss0.mipmap_layout_mode = BRW_SURFACE_MIPMAPLAYOUT_BELOW;
- surf->ss0.surface_type = translate_tex_target(tObj->Target);
- surf->ss0.surface_format = translate_tex_format(firstImage->TexFormat,
- firstImage->InternalFormat,
- sampler->DepthMode,
- sampler->sRGBDecode);
+ surf[0] = (translate_tex_target(tObj->Target) << BRW_SURFACE_TYPE_SHIFT |
+ BRW_SURFACE_MIPMAPLAYOUT_BELOW << BRW_SURFACE_MIPLAYOUT_SHIFT |
+ BRW_SURFACE_CUBEFACE_ENABLES |
+ (translate_tex_format(firstImage->TexFormat,
+ firstImage->InternalFormat,
+ sampler->DepthMode,
+ sampler->sRGBDecode) <<
+ BRW_SURFACE_FORMAT_SHIFT));
- /* This is ok for all textures with channel width 8bit or less:
- */
-/* surf->ss0.data_return_format = BRW_SURFACERETURNFORMAT_S1; */
- surf->ss1.base_addr = intelObj->mt->region->buffer->offset; /* reloc */
+ surf[1] = intelObj->mt->region->buffer->offset; /* reloc */
- surf->ss2.mip_count = intelObj->_MaxLevel - tObj->BaseLevel;
- surf->ss2.width = firstImage->Width - 1;
- surf->ss2.height = firstImage->Height - 1;
- brw_set_surface_tiling(surf, intelObj->mt->region->tiling);
- surf->ss3.pitch = (intelObj->mt->region->pitch * intelObj->mt->cpp) - 1;
- surf->ss3.depth = firstImage->Depth - 1;
+ surf[2] = ((intelObj->_MaxLevel - tObj->BaseLevel) << BRW_SURFACE_LOD_SHIFT |
+ (firstImage->Width - 1) << BRW_SURFACE_WIDTH_SHIFT |
+ (firstImage->Height - 1) << BRW_SURFACE_HEIGHT_SHIFT);
- surf->ss4.min_lod = 0;
-
- if (tObj->Target == GL_TEXTURE_CUBE_MAP) {
- surf->ss0.cube_pos_x = 1;
- surf->ss0.cube_pos_y = 1;
- surf->ss0.cube_pos_z = 1;
- surf->ss0.cube_neg_x = 1;
- surf->ss0.cube_neg_y = 1;
- surf->ss0.cube_neg_z = 1;
- }
+ surf[3] = (brw_get_surface_tiling_bits(intelObj->mt->region->tiling) |
+ (firstImage->Depth - 1) << BRW_SURFACE_DEPTH_SHIFT |
+ ((intelObj->mt->region->pitch * intelObj->mt->cpp) - 1) <<
+ BRW_SURFACE_PITCH_SHIFT);
+
+ surf[4] = 0;
+ surf[5] = 0;
/* Emit relocation to surface contents */
drm_intel_bo_emit_reloc(brw->intel.batch.bo,
- brw->wm.surf_offset[surf_index] +
- offsetof(struct brw_surface_state, ss1),
+ brw->wm.surf_offset[surf_index] + 4,
intelObj->mt->region->buffer, 0,
I915_GEM_DOMAIN_SAMPLER, 0);
}
@@ -284,34 +268,34 @@ brw_create_constant_surface(struct brw_context *brw,
{
struct intel_context *intel = &brw->intel;
const GLint w = width - 1;
- struct brw_surface_state *surf;
+ uint32_t *surf;
- surf = brw_state_batch(brw, sizeof(*surf), 32, out_offset);
- memset(surf, 0, sizeof(*surf));
+ surf = brw_state_batch(brw, 6 * 4, 32, out_offset);
- surf->ss0.mipmap_layout_mode = BRW_SURFACE_MIPMAPLAYOUT_BELOW;
- surf->ss0.surface_type = BRW_SURFACE_BUFFER;
- surf->ss0.surface_format = BRW_SURFACEFORMAT_R32G32B32A32_FLOAT;
+ surf[0] = (BRW_SURFACE_BUFFER << BRW_SURFACE_TYPE_SHIFT |
+ BRW_SURFACE_MIPMAPLAYOUT_BELOW << BRW_SURFACE_MIPLAYOUT_SHIFT |
+ BRW_SURFACEFORMAT_R32G32B32A32_FLOAT << BRW_SURFACE_FORMAT_SHIFT);
if (intel->gen >= 6)
- surf->ss0.render_cache_read_write = 1;
+ surf[0] |= BRW_SURFACE_RC_READ_WRITE;
+
+ surf[1] = bo->offset; /* reloc */
- assert(bo);
- surf->ss1.base_addr = bo->offset; /* reloc */
+ surf[2] = (((w & 0x7f) - 1) << BRW_SURFACE_WIDTH_SHIFT |
+ (((w >> 7) & 0x1fff) - 1) << BRW_SURFACE_HEIGHT_SHIFT);
- surf->ss2.width = w & 0x7f; /* bits 6:0 of size or width */
- surf->ss2.height = (w >> 7) & 0x1fff; /* bits 19:7 of size or width */
- surf->ss3.depth = (w >> 20) & 0x7f; /* bits 26:20 of size or width */
- surf->ss3.pitch = (width * 16) - 1; /* ignored?? */
- brw_set_surface_tiling(surf, I915_TILING_NONE); /* tiling now allowed */
+ surf[3] = ((((w >> 20) & 0x7f) - 1) << BRW_SURFACE_DEPTH_SHIFT |
+ (width * 16 - 1) << BRW_SURFACE_PITCH_SHIFT);
+
+ surf[4] = 0;
+ surf[5] = 0;
/* Emit relocation to surface contents. Section 5.1.1 of the gen4
* bspec ("Data Cache") says that the data cache does not exist as
* a separate cache and is just the sampler cache.
*/
drm_intel_bo_emit_reloc(brw->intel.batch.bo,
- (*out_offset +
- offsetof(struct brw_surface_state, ss1)),
+ *out_offset + 4,
bo, 0,
I915_GEM_DOMAIN_SAMPLER, 0);
}
@@ -416,23 +400,23 @@ static void
brw_update_null_renderbuffer_surface(struct brw_context *brw, unsigned int unit)
{
struct intel_context *intel = &brw->intel;
- struct brw_surface_state *surf;
-
- surf = brw_state_batch(brw, sizeof(*surf), 32,
- &brw->wm.surf_offset[unit]);
- memset(surf, 0, sizeof(*surf));
+ uint32_t *surf;
- surf->ss0.surface_type = BRW_SURFACE_NULL;
- surf->ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
+ surf = brw_state_batch(brw, 6 * 4, 32, &brw->wm.surf_offset[unit]);
+ surf[0] = (BRW_SURFACE_NULL << BRW_SURFACE_TYPE_SHIFT |
+ BRW_SURFACEFORMAT_B8G8R8A8_UNORM << BRW_SURFACE_FORMAT_SHIFT);
if (intel->gen < 6) {
- /* _NEW_COLOR */
- surf->ss0.color_blend = 0;
- surf->ss0.writedisable_red = 1;
- surf->ss0.writedisable_green = 1;
- surf->ss0.writedisable_blue = 1;
- surf->ss0.writedisable_alpha = 1;
+ surf[0] |= (1 << BRW_SURFACE_WRITEDISABLE_R_SHIFT |
+ 1 << BRW_SURFACE_WRITEDISABLE_G_SHIFT |
+ 1 << BRW_SURFACE_WRITEDISABLE_B_SHIFT |
+ 1 << BRW_SURFACE_WRITEDISABLE_A_SHIFT);
}
+ surf[1] = 0;
+ surf[2] = 0;
+ surf[3] = 0;
+ surf[4] = 0;
+ surf[5] = 0;
}
/**
@@ -449,12 +433,11 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
struct gl_context *ctx = &intel->ctx;
struct intel_renderbuffer *irb = intel_renderbuffer(rb);
struct intel_region *region = irb->region;
- struct brw_surface_state *surf;
+ uint32_t *surf;
uint32_t tile_x, tile_y;
+ uint32_t format = 0;
- surf = brw_state_batch(brw, sizeof(*surf), 32,
- &brw->wm.surf_offset[unit]);
- memset(surf, 0, sizeof(*surf));
+ surf = brw_state_batch(brw, 6 * 4, 32, &brw->wm.surf_offset[unit]);
switch (irb->Base.Format) {
case MESA_FORMAT_XRGB8888:
@@ -465,7 +448,7 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
* cases where GL_DST_ALPHA (or GL_ONE_MINUS_DST_ALPHA) is
* used.
*/
- surf->ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
+ format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
break;
case MESA_FORMAT_INTENSITY_FLOAT32:
case MESA_FORMAT_LUMINANCE_FLOAT32:
@@ -473,25 +456,35 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
* channel into R, which is to say that we just treat them as
* GL_RED.
*/
- surf->ss0.surface_format = BRW_SURFACEFORMAT_R32_FLOAT;
+ format = BRW_SURFACEFORMAT_R32_FLOAT;
break;
case MESA_FORMAT_SARGB8:
/* without GL_EXT_framebuffer_sRGB we shouldn't bind sRGB
surfaces to the blend/update as sRGB */
if (ctx->Color.sRGBEnabled)
- surf->ss0.surface_format = brw_format_for_mesa_format(irb->Base.Format);
+ format = brw_format_for_mesa_format(irb->Base.Format);
else
- surf->ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
+ format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
break;
default:
assert(brw_render_target_supported(irb->Base.Format));
- surf->ss0.surface_format = brw_format_for_mesa_format(irb->Base.Format);
+ format = brw_format_for_mesa_format(irb->Base.Format);
}
- surf->ss0.surface_type = BRW_SURFACE_2D;
+ surf[0] = (BRW_SURFACE_2D << BRW_SURFACE_TYPE_SHIFT |
+ format << BRW_SURFACE_FORMAT_SHIFT);
+
/* reloc */
- surf->ss1.base_addr = intel_region_tile_offsets(region, &tile_x, &tile_y);
- surf->ss1.base_addr += region->buffer->offset; /* reloc */
+ surf[1] = (intel_region_tile_offsets(region, &tile_x, &tile_y) +
+ region->buffer->offset);
+
+ surf[2] = ((rb->Width - 1) << BRW_SURFACE_WIDTH_SHIFT |
+ (rb->Height - 1) << BRW_SURFACE_HEIGHT_SHIFT);
+
+ surf[3] = (brw_get_surface_tiling_bits(region->tiling) |
+ ((region->pitch * region->cpp) - 1) << BRW_SURFACE_PITCH_SHIFT);
+
+ surf[4] = 0;
assert(brw->has_surface_tile_offset || (tile_x == 0 && tile_y == 0));
/* Note that the low bits of these fields are missing, so
@@ -499,35 +492,35 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
*/
assert(tile_x % 4 == 0);
assert(tile_y % 2 == 0);
- surf->ss5.x_offset = tile_x / 4;
- surf->ss5.y_offset = tile_y / 2;
-
- surf->ss2.width = rb->Width - 1;
- surf->ss2.height = rb->Height - 1;
- brw_set_surface_tiling(surf, region->tiling);
- surf->ss3.pitch = (region->pitch * region->cpp) - 1;
+ surf[5] = ((tile_x / 4) << BRW_SURFACE_X_OFFSET_SHIFT |
+ (tile_y / 2) << BRW_SURFACE_Y_OFFSET_SHIFT);
if (intel->gen < 6) {
/* _NEW_COLOR */
- surf->ss0.color_blend = (!ctx->Color._LogicOpEnabled &&
- (ctx->Color.BlendEnabled & (1 << unit)));
- surf->ss0.writedisable_red = !ctx->Color.ColorMask[unit][0];
- surf->ss0.writedisable_green = !ctx->Color.ColorMask[unit][1];
- surf->ss0.writedisable_blue = !ctx->Color.ColorMask[unit][2];
+ if (!ctx->Color._LogicOpEnabled &&
+ (ctx->Color.BlendEnabled & (1 << unit)))
+ surf[0] |= BRW_SURFACE_BLEND_ENABLED;
+
+ if (!ctx->Color.ColorMask[unit][0])
+ surf[0] |= 1 << BRW_SURFACE_WRITEDISABLE_R_SHIFT;
+ if (!ctx->Color.ColorMask[unit][1])
+ surf[0] |= 1 << BRW_SURFACE_WRITEDISABLE_G_SHIFT;
+ if (!ctx->Color.ColorMask[unit][2])
+ surf[0] |= 1 << BRW_SURFACE_WRITEDISABLE_B_SHIFT;
+
/* As mentioned above, disable writes to the alpha component when the
* renderbuffer is XRGB.
*/
- if (ctx->DrawBuffer->Visual.alphaBits == 0)
- surf->ss0.writedisable_alpha = 1;
- else
- surf->ss0.writedisable_alpha = !ctx->Color.ColorMask[unit][3];
+ if (ctx->DrawBuffer->Visual.alphaBits == 0 ||
+ !ctx->Color.ColorMask[unit][3]) {
+ surf[0] |= 1 << BRW_SURFACE_WRITEDISABLE_A_SHIFT;
+ }
}
drm_intel_bo_emit_reloc(brw->intel.batch.bo,
- brw->wm.surf_offset[unit] +
- offsetof(struct brw_surface_state, ss1),
+ brw->wm.surf_offset[unit] + 4,
region->buffer,
- surf->ss1.base_addr - region->buffer->offset,
+ surf[1] - region->buffer->offset,
I915_GEM_DOMAIN_RENDER,
I915_GEM_DOMAIN_RENDER);
}
@@ -539,16 +532,14 @@ prepare_wm_surfaces(struct brw_context *brw)
int i;
int nr_surfaces = 0;
- if (ctx->DrawBuffer->_NumColorDrawBuffers >= 1) {
- for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++) {
- struct gl_renderbuffer *rb = ctx->DrawBuffer->_ColorDrawBuffers[i];
- struct intel_renderbuffer *irb = intel_renderbuffer(rb);
- struct intel_region *region = irb ? irb->region : NULL;
+ for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++) {
+ struct gl_renderbuffer *rb = ctx->DrawBuffer->_ColorDrawBuffers[i];
+ struct intel_renderbuffer *irb = intel_renderbuffer(rb);
+ struct intel_region *region = irb ? irb->region : NULL;
- if (region)
- brw_add_validated_bo(brw, region->buffer);
- nr_surfaces = SURF_INDEX_DRAW(i) + 1;
- }
+ if (region)
+ brw_add_validated_bo(brw, region->buffer);
+ nr_surfaces = SURF_INDEX_DRAW(i) + 1;
}
if (brw->wm.const_bo) {
@@ -558,10 +549,11 @@ prepare_wm_surfaces(struct brw_context *brw)
for (i = 0; i < BRW_MAX_TEX_UNIT; i++) {
const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i];
- struct gl_texture_object *tObj = texUnit->_Current;
- struct intel_texture_object *intelObj = intel_texture_object(tObj);
if (texUnit->_ReallyEnabled) {
+ struct gl_texture_object *tObj = texUnit->_Current;
+ struct intel_texture_object *intelObj = intel_texture_object(tObj);
+
brw_add_validated_bo(brw, intelObj->mt->region->buffer);
nr_surfaces = SURF_INDEX_TEXTURE(i) + 1;
}
diff --git a/src/mesa/drivers/dri/i965/gen7_vs_state.c b/src/mesa/drivers/dri/i965/gen7_vs_state.c
index 6a7add8e562..ae7a1d6c35c 100644
--- a/src/mesa/drivers/dri/i965/gen7_vs_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_vs_state.c
@@ -33,7 +33,6 @@ static void
upload_vs_state(struct brw_context *brw)
{
struct intel_context *intel = &brw->intel;
- struct gl_context *ctx = &intel->ctx;
BEGIN_BATCH(2);
OUT_BATCH(_3DSTATE_BINDING_TABLE_POINTERS_VS << 16 | (2 - 2));
diff --git a/src/mesa/drivers/dri/intel/intel_buffers.c b/src/mesa/drivers/dri/intel/intel_buffers.c
index ee551ef60d4..7eb50edc6b4 100644
--- a/src/mesa/drivers/dri/intel/intel_buffers.c
+++ b/src/mesa/drivers/dri/intel/intel_buffers.c
@@ -93,6 +93,7 @@ intel_draw_buffer(struct gl_context * ctx, struct gl_framebuffer *fb)
struct intel_context *intel = intel_context(ctx);
struct intel_region *colorRegions[MAX_DRAW_BUFFERS], *depthRegion = NULL;
struct intel_renderbuffer *irbDepth = NULL, *irbStencil = NULL;
+ bool fb_has_hiz = intel_framebuffer_has_hiz(fb);
if (!fb) {
/* this can happen during the initial context initialization */
@@ -166,11 +167,11 @@ intel_draw_buffer(struct gl_context * ctx, struct gl_framebuffer *fb)
/***
*** Get depth buffer region and check if we need a software fallback.
- *** Note that the depth buffer is usually a DEPTH_STENCIL buffer.
***/
if (fb->_DepthBuffer && fb->_DepthBuffer->Wrapped) {
irbDepth = intel_renderbuffer(fb->_DepthBuffer->Wrapped);
if (irbDepth && irbDepth->region) {
+ assert(!fb_has_hiz || irbDepth->Base.Format != MESA_FORMAT_S8_Z24);
FALLBACK(intel, INTEL_FALLBACK_DEPTH_BUFFER, GL_FALSE);
depthRegion = irbDepth->region;
}
@@ -187,13 +188,16 @@ intel_draw_buffer(struct gl_context * ctx, struct gl_framebuffer *fb)
/***
*** Stencil buffer
- *** This can only be hardware accelerated if we're using a
- *** combined DEPTH_STENCIL buffer.
***/
if (fb->_StencilBuffer && fb->_StencilBuffer->Wrapped) {
irbStencil = intel_renderbuffer(fb->_StencilBuffer->Wrapped);
if (irbStencil && irbStencil->region) {
- ASSERT(irbStencil->Base.Format == MESA_FORMAT_S8_Z24);
+ if (!intel->has_separate_stencil)
+ assert(irbStencil->Base.Format == MESA_FORMAT_S8_Z24);
+ if (fb_has_hiz || intel->must_use_separate_stencil)
+ assert(irbStencil->Base.Format == MESA_FORMAT_S8);
+ if (irbStencil->Base.Format == MESA_FORMAT_S8)
+ assert(intel->has_separate_stencil);
FALLBACK(intel, INTEL_FALLBACK_STENCIL_BUFFER, GL_FALSE);
}
else {
@@ -208,8 +212,10 @@ intel_draw_buffer(struct gl_context * ctx, struct gl_framebuffer *fb)
/* If we have a (packed) stencil buffer attached but no depth buffer,
* we still need to set up the shared depth/stencil state so we can use it.
*/
- if (depthRegion == NULL && irbStencil && irbStencil->region)
+ if (depthRegion == NULL && irbStencil && irbStencil->region
+ && irbStencil->Base.Format == MESA_FORMAT_S8_Z24) {
depthRegion = irbStencil->region;
+ }
/*
* Update depth and stencil test state
@@ -302,18 +308,6 @@ intelReadBuffer(struct gl_context * ctx, GLenum mode)
if (!was_front_buffer_reading && intel->is_front_buffer_reading)
dri2InvalidateDrawable(intel->driContext->driReadablePriv);
}
-
- if (ctx->ReadBuffer == ctx->DrawBuffer) {
- /* This will update FBO completeness status.
- * A framebuffer will be incomplete if the GL_READ_BUFFER setting
- * refers to a missing renderbuffer. Calling glReadBuffer can set
- * that straight and can make the drawing buffer complete.
- */
- intel_draw_buffer(ctx, ctx->DrawBuffer);
- }
- /* Generally, functions which read pixels (glReadPixels, glCopyPixels, etc)
- * reference ctx->ReadBuffer and do appropriate state checks.
- */
}
diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index 4516db20ffc..2ea52c26106 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -620,6 +620,53 @@ intelInitDriverFunctions(struct dd_function_table *functions)
intel_init_syncobj_functions(functions);
}
+/**
+ * Override intel->has_hiz with environment variable INTEL_HIZ.
+ *
+ * Valid values for INTEL_HIZ are "0" and "1". If an invalid valid value is
+ * encountered, a warning is emitted and INTEL_HIZ is ignored.
+ */
+static void
+intel_override_hiz(struct intel_context *intel)
+{
+ const char *s = getenv("INTEL_HIZ");
+ if (!s) {
+ return;
+ } else if (!strncmp("0", s, 2)) {
+ intel->has_hiz = false;
+ } else if (!strncmp("1", s, 2)) {
+ intel->has_hiz = true;
+ } else {
+ _mesa_warning(&intel->ctx,
+ "env variable INTEL_HIZ=\"%s\" has invalid value and "
+ "is ignored", s);
+ }
+}
+
+/**
+ * Override intel->has_separate_stencil with environment variable
+ * INTEL_SEPARATE_STENCIL.
+ *
+ * Valid values for INTEL_SEPARATE_STENCIL are "0" and "1". If an invalid
+ * value is encountered, a warning is emitted and INTEL_SEPARATE_STENCIL is
+ * ignored.
+ */
+static void
+intel_override_separate_stencil(struct intel_context *intel)
+{
+ const char *s = getenv("INTEL_SEPARATE_STENCIL");
+ if (!s) {
+ return;
+ } else if (!strncmp("0", s, 2)) {
+ intel->has_separate_stencil = false;
+ } else if (!strncmp("1", s, 2)) {
+ intel->has_separate_stencil = true;
+ } else {
+ _mesa_warning(&intel->ctx,
+ "env variable INTEL_SEPARATE_STENCIL=\"%s\" has invalid "
+ "value and is ignored", s);
+ }
+}
GLboolean
intelInitContext(struct intel_context *intel,
@@ -667,9 +714,14 @@ intelInitContext(struct intel_context *intel,
if (IS_GEN7(intel->intelScreen->deviceID)) {
intel->needs_ff_sync = GL_TRUE;
intel->has_luminance_srgb = GL_TRUE;
+ /* FINISHME: Enable intel->has_separate_stencil on Gen7. */
+ /* FINISHME: Enable intel->must_use_separate_stencil on Gen7. */
+ /* FINISHME: Enable intel->has_hiz on Gen7. */
} else if (IS_GEN6(intel->intelScreen->deviceID)) {
intel->needs_ff_sync = GL_TRUE;
intel->has_luminance_srgb = GL_TRUE;
+ /* FINISHME: Enable intel->has_separate_stencil on Gen6. */
+ /* FINISHME: Enable intel->has_hiz on Gen6. */
} else if (IS_GEN5(intel->intelScreen->deviceID)) {
intel->needs_ff_sync = GL_TRUE;
intel->has_luminance_srgb = GL_TRUE;
@@ -689,6 +741,9 @@ intelInitContext(struct intel_context *intel,
}
}
+ intel_override_hiz(intel);
+ intel_override_separate_stencil(intel);
+
memset(&ctx->TextureFormatSupported, 0,
sizeof(ctx->TextureFormatSupported));
ctx->TextureFormatSupported[MESA_FORMAT_ARGB8888] = GL_TRUE;
@@ -703,7 +758,12 @@ intelInitContext(struct intel_context *intel,
ctx->TextureFormatSupported[MESA_FORMAT_AL88] = GL_TRUE;
if (intel->gen >= 4)
ctx->TextureFormatSupported[MESA_FORMAT_AL1616] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_S8_Z24] = GL_TRUE;
+
+ /* Depth and stencil */
+ ctx->TextureFormatSupported[MESA_FORMAT_S8_Z24] = !intel->must_use_separate_stencil;
+ ctx->TextureFormatSupported[MESA_FORMAT_X8_Z24] = intel->has_separate_stencil;
+ ctx->TextureFormatSupported[MESA_FORMAT_S8] = intel->has_separate_stencil;
+
/*
* This was disabled in initial FBO enabling to avoid combinations
* of depth+stencil that wouldn't work together. We since decided
diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h
index d3a8a659caa..f599861cba8 100644
--- a/src/mesa/drivers/dri/intel/intel_context.h
+++ b/src/mesa/drivers/dri/intel/intel_context.h
@@ -149,6 +149,10 @@ struct intel_context
void (*debug_batch)(struct intel_context *intel);
bool (*render_target_supported)(gl_format format);
+
+ /** Can HiZ be enabled on a depthbuffer of the given format? */
+ bool (*is_hiz_depth_format)(struct intel_context *intel,
+ gl_format format);
} vtbl;
GLbitfield Fallback; /**< mask of INTEL_FALLBACK_x bits */
@@ -166,6 +170,9 @@ struct intel_context
GLboolean is_945;
GLboolean has_luminance_srgb;
GLboolean has_xrgb_textures;
+ GLboolean has_separate_stencil;
+ GLboolean must_use_separate_stencil;
+ GLboolean has_hiz;
int urb_size;
diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c
index ad2468a3237..7434e0efff6 100644
--- a/src/mesa/drivers/dri/intel/intel_fbo.c
+++ b/src/mesa/drivers/dri/intel/intel_fbo.c
@@ -79,6 +79,9 @@ intel_delete_renderbuffer(struct gl_renderbuffer *rb)
if (intel && irb->region) {
intel_region_release(&irb->region);
}
+ if (intel && irb->hiz_region) {
+ intel_region_release(&irb->hiz_region);
+ }
free(irb);
}
@@ -129,7 +132,12 @@ intel_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer
case GL_STENCIL_INDEX8_EXT:
case GL_STENCIL_INDEX16_EXT:
/* These aren't actual texture formats, so force them here. */
- rb->Format = MESA_FORMAT_S8_Z24;
+ if (intel->has_separate_stencil) {
+ rb->Format = MESA_FORMAT_S8;
+ } else {
+ assert(!intel->must_use_separate_stencil);
+ rb->Format = MESA_FORMAT_S8_Z24;
+ }
break;
}
@@ -143,6 +151,9 @@ intel_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer
if (irb->region) {
intel_region_release(&irb->region);
}
+ if (irb->hiz_region) {
+ intel_region_release(&irb->hiz_region);
+ }
/* allocate new memory region/renderbuffer */
@@ -154,19 +165,54 @@ intel_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer
GLenum base_format = _mesa_get_format_base_format(rb->Format);
if (intel->gen >= 4 && (base_format == GL_DEPTH_COMPONENT ||
+ base_format == GL_STENCIL_INDEX ||
base_format == GL_DEPTH_STENCIL))
tiling = I915_TILING_Y;
else
tiling = I915_TILING_X;
}
- irb->region = intel_region_alloc(intel->intelScreen, tiling, cpp,
- width, height, GL_TRUE);
+ if (irb->Base.Format == MESA_FORMAT_S8) {
+ /*
+ * The stencil buffer has quirky pitch requirements. From Vol 2a,
+ * 11.5.6.2.1 3DSTATE_STENCIL_BUFFER, field "Surface Pitch":
+ * The pitch must be set to 2x the value computed based on width, as
+ * the stencil buffer is stored with two rows interleaved.
+ * To accomplish this, we resort to the nasty hack of doubling the drm
+ * region's cpp and halving its height.
+ *
+ * If we neglect to double the pitch, then drm_intel_gem_bo_map_gtt()
+ * maps the memory incorrectly.
+ */
+ irb->region = intel_region_alloc(intel->intelScreen,
+ I915_TILING_Y,
+ cpp * 2,
+ width,
+ height / 2,
+ GL_TRUE);
+ } else {
+ irb->region = intel_region_alloc(intel->intelScreen, tiling, cpp,
+ width, height, GL_TRUE);
+ }
+
if (!irb->region)
return GL_FALSE; /* out of memory? */
ASSERT(irb->region->buffer);
+ if (intel->vtbl.is_hiz_depth_format(intel, rb->Format)) {
+ irb->hiz_region = intel_region_alloc(intel->intelScreen,
+ I915_TILING_Y,
+ irb->region->cpp,
+ irb->region->width,
+ irb->region->height,
+ GL_TRUE);
+ if (!irb->hiz_region) {
+ intel_region_release(&irb->region);
+ return GL_FALSE;
+ }
+ }
+
rb->Width = width;
rb->Height = height;
@@ -374,6 +420,9 @@ static GLboolean
intel_update_wrapper(struct gl_context *ctx, struct intel_renderbuffer *irb,
struct gl_texture_image *texImage)
{
+ struct intel_context *intel = intel_context(ctx);
+ struct intel_texture_image *intel_image = intel_texture_image(texImage);
+
if (!intel_span_supports_format(texImage->TexFormat)) {
DBG("Render to texture BAD FORMAT %s\n",
_mesa_get_format_name(texImage->TexFormat));
@@ -392,6 +441,32 @@ intel_update_wrapper(struct gl_context *ctx, struct intel_renderbuffer *irb,
irb->Base.Delete = intel_delete_renderbuffer;
irb->Base.AllocStorage = intel_nop_alloc_storage;
+ /* Point the renderbuffer's region to the texture's region. */
+ if (irb->region != intel_image->mt->region) {
+ intel_region_release(&irb->region);
+ intel_region_reference(&irb->region, intel_image->mt->region);
+ }
+
+ /* Allocate the texture's hiz region if necessary. */
+ if (intel->vtbl.is_hiz_depth_format(intel, texImage->TexFormat)
+ && !intel_image->mt->hiz_region) {
+ intel_image->mt->hiz_region =
+ intel_region_alloc(intel->intelScreen,
+ I915_TILING_Y,
+ _mesa_get_format_bytes(texImage->TexFormat),
+ texImage->Width,
+ texImage->Height,
+ GL_TRUE);
+ if (!intel_image->mt->hiz_region)
+ return GL_FALSE;
+ }
+
+ /* Point the renderbuffer's hiz region to the texture's hiz region. */
+ if (irb->hiz_region != intel_image->mt->hiz_region) {
+ intel_region_release(&irb->hiz_region);
+ intel_region_reference(&irb->hiz_region, intel_image->mt->hiz_region);
+ }
+
return GL_TRUE;
}
@@ -497,13 +572,6 @@ intel_render_texture(struct gl_context * ctx,
att->Texture->Name, newImage->Width, newImage->Height,
irb->Base.RefCount);
- /* point the renderbufer's region to the texture image region */
- if (irb->region != intel_image->mt->region) {
- if (irb->region)
- intel_region_release(&irb->region);
- intel_region_reference(&irb->region, intel_image->mt->region);
- }
-
intel_set_draw_offset_for_image(intel_image, att->Zoffset);
intel_image->used_as_render_target = GL_TRUE;
@@ -597,21 +665,33 @@ intel_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
intel_get_renderbuffer(fb, BUFFER_STENCIL);
int i;
- if (depthRb && stencilRb && stencilRb != depthRb) {
- if (fb->Attachment[BUFFER_DEPTH].Type == GL_TEXTURE &&
- fb->Attachment[BUFFER_STENCIL].Type == GL_TEXTURE &&
- (fb->Attachment[BUFFER_DEPTH].Texture->Name ==
- fb->Attachment[BUFFER_STENCIL].Texture->Name)) {
- /* OK */
- } else {
- /* we only support combined depth/stencil buffers, not separate
- * stencil buffers.
- */
- DBG("Only supports combined depth/stencil (found %s, %s)\n",
- depthRb ? _mesa_get_format_name(depthRb->Base.Format): "NULL",
- stencilRb ? _mesa_get_format_name(stencilRb->Base.Format): "NULL");
- fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
- }
+ /*
+ * The depth and stencil renderbuffers are the same renderbuffer or wrap
+ * the same texture.
+ */
+ bool depth_stencil_are_same;
+ if (depthRb && stencilRb && depthRb == stencilRb)
+ depth_stencil_are_same = true;
+ else if (depthRb && stencilRb && depthRb != stencilRb
+ && (fb->Attachment[BUFFER_DEPTH].Type == GL_TEXTURE)
+ && (fb->Attachment[BUFFER_STENCIL].Type == GL_TEXTURE)
+ && (fb->Attachment[BUFFER_DEPTH].Texture->Name
+ == fb->Attachment[BUFFER_STENCIL].Texture->Name))
+ depth_stencil_are_same = true;
+ else
+ depth_stencil_are_same = false;
+
+ bool fb_has_combined_depth_stencil_format =
+ (depthRb && depthRb->Base.Format == MESA_FORMAT_S8_Z24) ||
+ (stencilRb && stencilRb->Base.Format == MESA_FORMAT_S8_Z24);
+
+ bool fb_has_hiz = intel_framebuffer_has_hiz(fb);
+
+ if ((intel->must_use_separate_stencil || fb_has_hiz)
+ && (depth_stencil_are_same || fb_has_combined_depth_stencil_format)) {
+ fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
+ } else if (!intel->has_separate_stencil && depthRb && stencilRb && !depth_stencil_are_same) {
+ fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
}
for (i = 0; i < Elements(fb->Attachment); i++) {
diff --git a/src/mesa/drivers/dri/intel/intel_fbo.h b/src/mesa/drivers/dri/intel/intel_fbo.h
index 028f657d12d..212dd9aadc8 100644
--- a/src/mesa/drivers/dri/intel/intel_fbo.h
+++ b/src/mesa/drivers/dri/intel/intel_fbo.h
@@ -28,6 +28,7 @@
#ifndef INTEL_FBO_H
#define INTEL_FBO_H
+#include <stdbool.h>
#include "main/formats.h"
#include "intel_screen.h"
@@ -40,6 +41,9 @@ struct intel_renderbuffer
{
struct gl_renderbuffer Base;
struct intel_region *region;
+
+ /** Only used by depth renderbuffers for which HiZ is enabled. */
+ struct intel_region *hiz_region;
};
@@ -80,6 +84,29 @@ intel_get_renderbuffer(struct gl_framebuffer *fb, int attIndex)
return NULL;
}
+/**
+ * If the framebuffer has a depth buffer attached, then return its HiZ region.
+ * The HiZ region may be null.
+ */
+static INLINE struct intel_region*
+intel_framebuffer_get_hiz_region(struct gl_framebuffer *fb)
+{
+ struct intel_renderbuffer *rb = NULL;
+ if (fb)
+ rb = intel_get_renderbuffer(fb, BUFFER_DEPTH);
+
+ if (rb)
+ return rb->hiz_region;
+ else
+ return NULL;
+}
+
+static INLINE bool
+intel_framebuffer_has_hiz(struct gl_framebuffer *fb)
+{
+ return intel_framebuffer_get_hiz_region(fb) != NULL;
+}
+
extern void
intel_renderbuffer_set_region(struct intel_context *intel,
diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
index a3409274fb7..e62905de7c3 100644
--- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
@@ -200,6 +200,7 @@ intel_miptree_release(struct intel_context *intel,
DBG("%s deleting %p\n", __FUNCTION__, *mt);
intel_region_release(&((*mt)->region));
+ intel_region_release(&((*mt)->hiz_region));
for (i = 0; i < MAX_TEXTURE_LEVELS; i++) {
free((*mt)->level[i].x_offset);
diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.h b/src/mesa/drivers/dri/intel/intel_mipmap_tree.h
index 760a8bce601..325e3916981 100644
--- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.h
+++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.h
@@ -113,6 +113,20 @@ struct intel_mipmap_tree
*/
struct intel_region *region;
+ /**
+ * This points to an auxillary hiz region if all of the following hold:
+ * 1. The texture has been attached to an FBO as a depthbuffer.
+ * 2. The texture format is hiz compatible.
+ * 3. The intel context supports hiz.
+ *
+ * When a texture is attached to multiple FBO's, a separate renderbuffer
+ * wrapper is created for each attachment. This necessitates storing the
+ * hiz region in the texture itself instead of the renderbuffer wrapper.
+ *
+ * \see intel_fbo.c:intel_wrap_texture()
+ */
+ struct intel_region *hiz_region;
+
/* These are also refcounted:
*/
GLuint refcount;
diff --git a/src/mesa/drivers/dri/intel/intel_span.c b/src/mesa/drivers/dri/intel/intel_span.c
index 16bce20317e..5290342c3e1 100644
--- a/src/mesa/drivers/dri/intel/intel_span.c
+++ b/src/mesa/drivers/dri/intel/intel_span.c
@@ -70,9 +70,6 @@ intel_set_span_functions(struct intel_context *intel,
#define HW_UNLOCK()
-/* Convenience macros to avoid typing the address argument over and over */
-#define NO_TILE(_X, _Y) (((_Y) * irb->region->pitch + (_X)) * irb->region->cpp)
-
/* r5g6b5 color span and pixel functions */
#define SPANTMP_PIXEL_FMT GL_RGB
#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_SHORT_5_6_5
diff --git a/src/mesa/drivers/dri/intel/intel_tex_format.c b/src/mesa/drivers/dri/intel/intel_tex_format.c
index befa615d1e6..6890a690ab1 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_format.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_format.c
@@ -22,6 +22,7 @@ intel_mesa_format_to_rb_datatype(gl_format format)
case MESA_FORMAT_RGB565:
case MESA_FORMAT_ARGB1555:
case MESA_FORMAT_ARGB4444:
+ case MESA_FORMAT_S8:
return GL_UNSIGNED_BYTE;
case MESA_FORMAT_R16:
case MESA_FORMAT_RG1616:
diff --git a/src/mesa/drivers/dri/mach64/Makefile b/src/mesa/drivers/dri/mach64/Makefile
index c20fdece297..0474c1a165f 100644
--- a/src/mesa/drivers/dri/mach64/Makefile
+++ b/src/mesa/drivers/dri/mach64/Makefile
@@ -5,6 +5,8 @@ include $(TOP)/configs/current
LIBNAME = mach64_dri.so
+include ../Makefile.defines
+
DRIVER_SOURCES = \
mach64_context.c \
mach64_ioctl.c \
@@ -25,5 +27,5 @@ C_SOURCES = \
ASM_SOURCES =
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/drivers/dri/mga/Makefile b/src/mesa/drivers/dri/mga/Makefile
index 92533bccc29..9948ee767ac 100644
--- a/src/mesa/drivers/dri/mga/Makefile
+++ b/src/mesa/drivers/dri/mga/Makefile
@@ -5,6 +5,8 @@ include $(TOP)/configs/current
LIBNAME = mga_dri.so
+include ../Makefile.defines
+
DRIVER_SOURCES = \
mgadd.c \
mgaioctl.c \
@@ -27,5 +29,5 @@ C_SOURCES = \
ASM_SOURCES =
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/drivers/dri/nouveau/Makefile b/src/mesa/drivers/dri/nouveau/Makefile
index 3b506a91ffa..e485a98761f 100644
--- a/src/mesa/drivers/dri/nouveau/Makefile
+++ b/src/mesa/drivers/dri/nouveau/Makefile
@@ -3,11 +3,10 @@
TOP = ../../../../..
include $(TOP)/configs/current
-CFLAGS += $(shell pkg-config libdrm libdrm_nouveau --cflags)
-DRI_LIB_DEPS += $(shell pkg-config libdrm_nouveau --libs)
-
LIBNAME = nouveau_vieux_dri.so
+include ../Makefile.defines
+
DRIVER_SOURCES = \
nouveau_screen.c \
nouveau_context.c \
@@ -51,7 +50,9 @@ C_SOURCES = \
ASM_SOURCES =
+INCLUDES += $(NOUVEAU_CFLAGS)
+DRI_LIB_DEPS += $(NOUVEAU_LIBS)
-include ../Makefile.template
+include ../Makefile.targets
symlinks:
diff --git a/src/mesa/drivers/dri/r128/Makefile b/src/mesa/drivers/dri/r128/Makefile
index 8144c9b43ff..8b23ccc8cbe 100644
--- a/src/mesa/drivers/dri/r128/Makefile
+++ b/src/mesa/drivers/dri/r128/Makefile
@@ -5,6 +5,8 @@ include $(TOP)/configs/current
LIBNAME = r128_dri.so
+include ../Makefile.defines
+
DRIVER_SOURCES = \
r128_context.c \
r128_lock.c \
@@ -25,5 +27,5 @@ C_SOURCES = \
ASM_SOURCES =
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/drivers/dri/r200/Makefile b/src/mesa/drivers/dri/r200/Makefile
index 8013768e9fb..4547f7e2ee0 100644
--- a/src/mesa/drivers/dri/r200/Makefile
+++ b/src/mesa/drivers/dri/r200/Makefile
@@ -3,10 +3,10 @@
TOP = ../../../../..
include $(TOP)/configs/current
-CFLAGS += $(RADEON_CFLAGS)
-
LIBNAME = r200_dri.so
+include ../Makefile.defines
+
ifeq ($(RADEON_LDFLAGS),)
CS_SOURCES = radeon_cs_space_drm.c radeon_bo.c radeon_cs.c
endif
@@ -55,12 +55,13 @@ X86_SOURCES =
DRIVER_DEFINES = -DRADEON_R200
+INCLUDES += $(RADEON_CFLAGS)
DRI_LIB_DEPS += $(RADEON_LDFLAGS)
##### TARGETS #####
-include ../Makefile.template
+include ../Makefile.targets
#INCLUDES += -I../radeon/server
diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile
index 2245998c952..9f23a8496aa 100644
--- a/src/mesa/drivers/dri/r300/Makefile
+++ b/src/mesa/drivers/dri/r300/Makefile
@@ -3,17 +3,17 @@
TOP = ../../../../..
include $(TOP)/configs/current
-CFLAGS += $(RADEON_CFLAGS)
-
LIBNAME = r300_dri.so
+include ../Makefile.defines
+
ifeq ($(RADEON_LDFLAGS),)
CS_SOURCES = radeon_cs_space_drm.c radeon_bo.c radeon_cs.c
endif
COMMON_SOURCES = \
../../common/driverfuncs.c \
- ../common/mm.c \
+ ../common/drirenderbuffer.c \
../common/utils.c \
../common/texmem.c \
../common/vblank.c \
@@ -64,6 +64,7 @@ C_SOURCES = $(COMMON_SOURCES) $(DRIVER_SOURCES)
DRIVER_DEFINES = -DRADEON_R300
# -DRADEON_BO_TRACK \
+INCLUDES += $(RADEON_CFLAGS)
DRI_LIB_DEPS += $(RADEON_LDFLAGS)
SUBDIRS = compiler
@@ -73,5 +74,5 @@ EXTRA_MODULES = compiler/libr300compiler.a
##### TARGETS #####
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/drivers/dri/r300/compiler/Makefile b/src/mesa/drivers/dri/r300/compiler/Makefile
index 4bedfacd632..5aa13329ac2 100644
--- a/src/mesa/drivers/dri/r300/compiler/Makefile
+++ b/src/mesa/drivers/dri/r300/compiler/Makefile
@@ -38,7 +38,9 @@ C_SOURCES = \
r3xx_vertprog.c \
r3xx_vertprog_dump.c \
\
- memory_pool.c
+ memory_pool.c \
+ $(TOP)/src/glsl/ralloc.c \
+ $(TOP)/src/mesa/program/register_allocate.c
### Basic defines ###
@@ -52,6 +54,7 @@ INCLUDES = \
-I$(TOP)/include \
-I$(TOP)/src/mesa \
-I$(TOP)/src/glsl \
+ -I$(TOP)/src/mapi
##### TARGETS #####
diff --git a/src/mesa/drivers/dri/r300/compiler/SConscript b/src/mesa/drivers/dri/r300/compiler/SConscript
index 9931537492e..2c748b6e214 100755
--- a/src/mesa/drivers/dri/r300/compiler/SConscript
+++ b/src/mesa/drivers/dri/r300/compiler/SConscript
@@ -4,6 +4,7 @@ env = env.Clone()
env.Append(CPPPATH = '#/include')
env.Append(CPPPATH = '#/src/mesa')
env.Append(CPPPATH = '#/src/glsl')
+env.Append(CPPPATH = '#/src/mapi')
# temporary fix
env['CFLAGS'] = str(env['CFLAGS']).replace('-Werror=declaration-after-statement', '')
@@ -43,6 +44,8 @@ r300compiler = env.ConvenienceLibrary(
'r3xx_vertprog.c',
'r3xx_vertprog_dump.c',
'memory_pool.c',
+ '#/src/glsl/ralloc.c',
+ '#/src/mesa/program/register_allocate.c'
])
Return('r300compiler')
diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c
index da6c8b602e1..93a0dd168f4 100644
--- a/src/mesa/drivers/dri/r300/r300_state.c
+++ b/src/mesa/drivers/dri/r300/r300_state.c
@@ -1619,7 +1619,6 @@ static void r500SetupRSUnit(struct gl_context * ctx)
WARN_ONCE("Don't know how to satisfy InputsRead=0x%08x\n", InputsRead);
}
-#define MIN3(a, b, c) ((a) < (b) ? MIN2(a, c) : MIN2(b, c))
void r300VapCntl(r300ContextPtr rmesa, GLuint input_count,
GLuint output_count, GLuint temp_count)
diff --git a/src/mesa/drivers/dri/r600/Makefile b/src/mesa/drivers/dri/r600/Makefile
index 200bc20f647..bec0b5a53fe 100644
--- a/src/mesa/drivers/dri/r600/Makefile
+++ b/src/mesa/drivers/dri/r600/Makefile
@@ -3,17 +3,17 @@
TOP = ../../../../..
include $(TOP)/configs/current
-CFLAGS += $(RADEON_CFLAGS)
-
LIBNAME = r600_dri.so
+include ../Makefile.defines
+
ifeq ($(RADEON_LDFLAGS),)
CS_SOURCES = radeon_cs_space_drm.c radeon_bo.c radeon_cs.c
endif
COMMON_SOURCES = \
../../common/driverfuncs.c \
- ../common/mm.c \
+ ../common/drirenderbuffer.c \
../common/utils.c \
../common/texmem.c \
../common/vblank.c \
@@ -78,9 +78,10 @@ C_SOURCES = $(COMMON_SOURCES) $(DRIVER_SOURCES)
DRIVER_DEFINES = -DRADEON_R600
# -DRADEON_BO_TRACK \
+INCLUDES += $(RADEON_CFLAGS)
DRI_LIB_DEPS += $(RADEON_LDFLAGS)
##### TARGETS #####
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/drivers/dri/r600/evergreen_blit.c b/src/mesa/drivers/dri/r600/evergreen_blit.c
index 0e4da5499ba..95ac4aee5ce 100644
--- a/src/mesa/drivers/dri/r600/evergreen_blit.c
+++ b/src/mesa/drivers/dri/r600/evergreen_blit.c
@@ -1525,6 +1525,48 @@ eg_set_default_state(context_t *context)
num_hs_stack_entries = 42;
num_ls_stack_entries = 42;
break;
+ case CHIP_FAMILY_SUMO:
+ num_ps_gprs = 93;
+ num_vs_gprs = 46;
+ num_temp_gprs = 4;
+ num_gs_gprs = 31;
+ num_es_gprs = 31;
+ num_hs_gprs = 23;
+ num_ls_gprs = 23;
+ num_ps_threads = 96;
+ num_vs_threads = 25;
+ num_gs_threads = 25;
+ num_es_threads = 25;
+ num_hs_threads = 25;
+ num_ls_threads = 25;
+ num_ps_stack_entries = 42;
+ num_vs_stack_entries = 42;
+ num_gs_stack_entries = 42;
+ num_es_stack_entries = 42;
+ num_hs_stack_entries = 42;
+ num_ls_stack_entries = 42;
+ break;
+ case CHIP_FAMILY_SUMO2:
+ num_ps_gprs = 93;
+ num_vs_gprs = 46;
+ num_temp_gprs = 4;
+ num_gs_gprs = 31;
+ num_es_gprs = 31;
+ num_hs_gprs = 23;
+ num_ls_gprs = 23;
+ num_ps_threads = 96;
+ num_vs_threads = 25;
+ num_gs_threads = 25;
+ num_es_threads = 25;
+ num_hs_threads = 25;
+ num_ls_threads = 25;
+ num_ps_stack_entries = 85;
+ num_vs_stack_entries = 85;
+ num_gs_stack_entries = 85;
+ num_es_stack_entries = 85;
+ num_hs_stack_entries = 85;
+ num_ls_stack_entries = 85;
+ break;
case CHIP_FAMILY_BARTS:
num_ps_gprs = 93;
num_vs_gprs = 46;
@@ -1592,6 +1634,8 @@ eg_set_default_state(context_t *context)
if ((context->radeon.radeonScreen->chip_family == CHIP_FAMILY_CEDAR) ||
(context->radeon.radeonScreen->chip_family == CHIP_FAMILY_PALM) ||
+ (context->radeon.radeonScreen->chip_family == CHIP_FAMILY_SUMO) ||
+ (context->radeon.radeonScreen->chip_family == CHIP_FAMILY_SUMO2) ||
(context->radeon.radeonScreen->chip_family == CHIP_FAMILY_CAICOS))
CLEARbit(sq_config, EG_SQ_CONFIG__VC_ENABLE_bit);
else
diff --git a/src/mesa/drivers/dri/r600/evergreen_chip.c b/src/mesa/drivers/dri/r600/evergreen_chip.c
index 42566e537a5..388a96ff067 100644
--- a/src/mesa/drivers/dri/r600/evergreen_chip.c
+++ b/src/mesa/drivers/dri/r600/evergreen_chip.c
@@ -287,7 +287,9 @@ static void evergreenSetupVTXConstants(struct gl_context * ctx,
return;
if ((context->radeon.radeonScreen->chip_family == CHIP_FAMILY_CEDAR) ||
- (context->radeon.radeonScreen->chip_family == CHIP_FAMILY_PALM))
+ (context->radeon.radeonScreen->chip_family == CHIP_FAMILY_PALM) ||
+ (context->radeon.radeonScreen->chip_family == CHIP_FAMILY_SUMO) ||
+ (context->radeon.radeonScreen->chip_family == CHIP_FAMILY_SUMO2))
r700SyncSurf(context, paos->bo, RADEON_GEM_DOMAIN_GTT, 0, TC_ACTION_ENA_bit);
else
r700SyncSurf(context, paos->bo, RADEON_GEM_DOMAIN_GTT, 0, VC_ACTION_ENA_bit);
diff --git a/src/mesa/drivers/dri/r600/evergreen_state.c b/src/mesa/drivers/dri/r600/evergreen_state.c
index 309c93fe088..81bf1172dc3 100644
--- a/src/mesa/drivers/dri/r600/evergreen_state.c
+++ b/src/mesa/drivers/dri/r600/evergreen_state.c
@@ -1470,6 +1470,22 @@ static void evergreenInitSQConfig(struct gl_context * ctx)
uMaxThreads = 192;
uMaxStackEntries = 256;
break;
+ case CHIP_FAMILY_SUMO:
+ uSqNumCfInsts = 2;
+ bVC_ENABLE = GL_FALSE;
+ uMaxGPRs = 256;
+ uPSThreadCount = 96;
+ uMaxThreads = 248;
+ uMaxStackEntries = 256;
+ break;
+ case CHIP_FAMILY_SUMO2:
+ uSqNumCfInsts = 2;
+ bVC_ENABLE = GL_FALSE;
+ uMaxGPRs = 256;
+ uPSThreadCount = 96;
+ uMaxThreads = 248;
+ uMaxStackEntries = 512;
+ break;
case CHIP_FAMILY_BARTS:
uSqNumCfInsts = 2;
bVC_ENABLE = GL_TRUE;
diff --git a/src/mesa/drivers/dri/radeon/Makefile b/src/mesa/drivers/dri/radeon/Makefile
index 93219e40afd..6b5d3335452 100644
--- a/src/mesa/drivers/dri/radeon/Makefile
+++ b/src/mesa/drivers/dri/radeon/Makefile
@@ -4,10 +4,10 @@
TOP = ../../../../..
include $(TOP)/configs/current
-CFLAGS += $(RADEON_CFLAGS)
-
LIBNAME = radeon_dri.so
+include ../Makefile.defines
+
ifeq ($(RADEON_LDFLAGS),)
CS_SOURCES = radeon_cs_space_drm.c radeon_bo.c radeon_cs.c
endif
@@ -53,9 +53,10 @@ C_SOURCES = \
DRIVER_DEFINES = -DRADEON_R100
+INCLUDES += $(RADEON_CFLAGS)
DRI_LIB_DEPS += $(RADEON_LDFLAGS)
X86_SOURCES =
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/drivers/dri/radeon/radeon_chipset.h b/src/mesa/drivers/dri/radeon/radeon_chipset.h
index 9145023826e..bd236625122 100644
--- a/src/mesa/drivers/dri/radeon/radeon_chipset.h
+++ b/src/mesa/drivers/dri/radeon/radeon_chipset.h
@@ -450,6 +450,18 @@
#define PCI_CHIP_PALM_9806 0x9806
#define PCI_CHIP_PALM_9807 0x9807
+#define PCI_CHIP_SUMO_9640 0x9640
+#define PCI_CHIP_SUMO_9641 0x9641
+#define PCI_CHIP_SUMO2_9642 0x9642
+#define PCI_CHIP_SUMO2_9643 0x9643
+#define PCI_CHIP_SUMO2_9644 0x9644
+#define PCI_CHIP_SUMO2_9645 0x9645
+#define PCI_CHIP_SUMO_9647 0x9647
+#define PCI_CHIP_SUMO_9648 0x9648
+#define PCI_CHIP_SUMO_964A 0x964a
+#define PCI_CHIP_SUMO_964E 0x964e
+#define PCI_CHIP_SUMO_964F 0x964f
+
#define PCI_CHIP_BARTS_6720 0x6720
#define PCI_CHIP_BARTS_6721 0x6721
#define PCI_CHIP_BARTS_6722 0x6722
@@ -534,6 +546,8 @@ enum {
CHIP_FAMILY_CYPRESS,
CHIP_FAMILY_HEMLOCK,
CHIP_FAMILY_PALM,
+ CHIP_FAMILY_SUMO,
+ CHIP_FAMILY_SUMO2,
CHIP_FAMILY_BARTS,
CHIP_FAMILY_TURKS,
CHIP_FAMILY_CAICOS,
diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c
index 5d7b3973d57..bf8925f61d0 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c
@@ -98,6 +98,8 @@ static const char* get_chip_family_name(int chip_family)
case CHIP_FAMILY_CYPRESS: return "CYPRESS";
case CHIP_FAMILY_HEMLOCK: return "HEMLOCK";
case CHIP_FAMILY_PALM: return "PALM";
+ case CHIP_FAMILY_SUMO: return "SUMO";
+ case CHIP_FAMILY_SUMO2: return "SUMO2";
case CHIP_FAMILY_BARTS: return "BARTS";
case CHIP_FAMILY_TURKS: return "TURKS";
case CHIP_FAMILY_CAICOS: return "CAICOS";
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 6449229e088..6cf843406f9 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -1168,6 +1168,25 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id)
screen->chip_flags = RADEON_CHIPSET_TCL;
break;
+ case PCI_CHIP_SUMO_9640:
+ case PCI_CHIP_SUMO_9641:
+ case PCI_CHIP_SUMO_9647:
+ case PCI_CHIP_SUMO_9648:
+ case PCI_CHIP_SUMO_964A:
+ case PCI_CHIP_SUMO_964E:
+ case PCI_CHIP_SUMO_964F:
+ screen->chip_family = CHIP_FAMILY_SUMO;
+ screen->chip_flags = RADEON_CHIPSET_TCL;
+ break;
+
+ case PCI_CHIP_SUMO2_9642:
+ case PCI_CHIP_SUMO2_9643:
+ case PCI_CHIP_SUMO2_9644:
+ case PCI_CHIP_SUMO2_9645:
+ screen->chip_family = CHIP_FAMILY_SUMO2;
+ screen->chip_flags = RADEON_CHIPSET_TCL;
+ break;
+
case PCI_CHIP_BARTS_6720:
case PCI_CHIP_BARTS_6721:
case PCI_CHIP_BARTS_6722:
diff --git a/src/mesa/drivers/dri/savage/Makefile b/src/mesa/drivers/dri/savage/Makefile
index 53511552c6d..03be3468da9 100644
--- a/src/mesa/drivers/dri/savage/Makefile
+++ b/src/mesa/drivers/dri/savage/Makefile
@@ -5,6 +5,8 @@ include $(TOP)/configs/current
LIBNAME = savage_dri.so
+include ../Makefile.defines
+
DRIVER_SOURCES = \
savage_xmesa.c \
savagedd.c \
@@ -22,5 +24,5 @@ C_SOURCES = \
ASM_SOURCES =
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/drivers/dri/sis/Makefile b/src/mesa/drivers/dri/sis/Makefile
index 6b4f938bab3..0e0bf0d4eac 100644
--- a/src/mesa/drivers/dri/sis/Makefile
+++ b/src/mesa/drivers/dri/sis/Makefile
@@ -5,6 +5,8 @@ include $(TOP)/configs/current
LIBNAME = sis_dri.so
+include ../Makefile.defines
+
DRIVER_SOURCES = \
sis6326_state.c \
sis6326_clear.c \
@@ -28,5 +30,5 @@ C_SOURCES = \
ASM_SOURCES =
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/drivers/dri/swrast/Makefile b/src/mesa/drivers/dri/swrast/Makefile
index d2cf6dbc55b..4cb99fd0eb7 100644
--- a/src/mesa/drivers/dri/swrast/Makefile
+++ b/src/mesa/drivers/dri/swrast/Makefile
@@ -5,6 +5,8 @@ include $(TOP)/configs/current
LIBNAME = swrast_dri.so
+include ../Makefile.defines
+
DRIVER_DEFINES = -D__NOT_HAVE_DRM_H
DRIVER_SOURCES = \
@@ -22,5 +24,5 @@ SWRAST_COMMON_SOURCES = \
../common/utils.c \
../common/drisw_util.c
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/drivers/dri/tdfx/Makefile b/src/mesa/drivers/dri/tdfx/Makefile
index 96bd8f8202f..ed84df20925 100644
--- a/src/mesa/drivers/dri/tdfx/Makefile
+++ b/src/mesa/drivers/dri/tdfx/Makefile
@@ -5,6 +5,8 @@ include $(TOP)/configs/current
LIBNAME = tdfx_dri.so
+include ../Makefile.defines
+
DRIVER_SOURCES = \
tdfx_context.c \
tdfx_dd.c \
@@ -27,6 +29,6 @@ C_SOURCES = \
ASM_SOURCES =
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/drivers/dri/unichrome/Makefile b/src/mesa/drivers/dri/unichrome/Makefile
index 14cf9f30386..373da6016e4 100644
--- a/src/mesa/drivers/dri/unichrome/Makefile
+++ b/src/mesa/drivers/dri/unichrome/Makefile
@@ -5,6 +5,8 @@ include $(TOP)/configs/current
LIBNAME = unichrome_dri.so
+include ../Makefile.defines
+
DRIVER_SOURCES = \
via_context.c \
via_fb.c \
@@ -25,5 +27,5 @@ C_SOURCES = \
ASM_SOURCES =
-include ../Makefile.template
+include ../Makefile.targets
diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index 993519f61b2..2981d42297a 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -396,7 +396,8 @@ _mesa_validate_DrawArraysInstanced(struct gl_context *ctx, GLenum mode, GLint fi
GLboolean
_mesa_validate_DrawElementsInstanced(struct gl_context *ctx,
GLenum mode, GLsizei count, GLenum type,
- const GLvoid *indices, GLsizei numInstances)
+ const GLvoid *indices, GLsizei numInstances,
+ GLint basevertex)
{
ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
@@ -447,7 +448,7 @@ _mesa_validate_DrawElementsInstanced(struct gl_context *ctx,
return GL_FALSE;
}
- if (!check_index_bounds(ctx, count, type, indices, 0))
+ if (!check_index_bounds(ctx, count, type, indices, basevertex))
return GL_FALSE;
return GL_TRUE;
diff --git a/src/mesa/main/api_validate.h b/src/mesa/main/api_validate.h
index 16b9c2b2647..09e9522d20e 100644
--- a/src/mesa/main/api_validate.h
+++ b/src/mesa/main/api_validate.h
@@ -62,7 +62,8 @@ _mesa_validate_DrawArraysInstanced(struct gl_context *ctx, GLenum mode, GLint fi
extern GLboolean
_mesa_validate_DrawElementsInstanced(struct gl_context *ctx,
GLenum mode, GLsizei count, GLenum type,
- const GLvoid *indices, GLsizei primcount);
+ const GLvoid *indices, GLsizei primcount,
+ GLint basevertex);
#endif
diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c
index 96ee1ace728..63f53e2b080 100644
--- a/src/mesa/main/buffers.c
+++ b/src/mesa/main/buffers.c
@@ -340,6 +340,26 @@ _mesa_DrawBuffersARB(GLsizei n, const GLenum *buffers)
ctx->Driver.DrawBuffer(ctx, n > 0 ? buffers[0] : GL_NONE);
}
+/**
+ * Performs necessary state updates when _mesa_drawbuffers makes an
+ * actual change.
+ */
+static void
+updated_drawbuffers(struct gl_context *ctx)
+{
+ FLUSH_VERTICES(ctx, _NEW_BUFFERS);
+
+#if FEATURE_GL
+ if (ctx->API == API_OPENGL && !ctx->Extensions.ARB_ES2_compatibility) {
+ struct gl_framebuffer *fb = ctx->DrawBuffer;
+
+ /* Flag the FBO as requiring validation. */
+ if (fb->Name != 0) {
+ fb->_Status = 0;
+ }
+ }
+#endif
+}
/**
* Helper function to set the GL_DRAW_BUFFER state in the context and
@@ -361,7 +381,6 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers,
{
struct gl_framebuffer *fb = ctx->DrawBuffer;
GLbitfield mask[MAX_DRAW_BUFFERS];
- GLboolean newState = GL_FALSE;
if (!destMask) {
/* compute destMask values now */
@@ -384,16 +403,16 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers,
while (destMask0) {
GLint bufIndex = _mesa_ffs(destMask0) - 1;
if (fb->_ColorDrawBufferIndexes[count] != bufIndex) {
+ updated_drawbuffers(ctx);
fb->_ColorDrawBufferIndexes[count] = bufIndex;
- newState = GL_TRUE;
}
count++;
destMask0 &= ~(1 << bufIndex);
}
fb->ColorDrawBuffer[0] = buffers[0];
if (fb->_NumColorDrawBuffers != count) {
+ updated_drawbuffers(ctx);
fb->_NumColorDrawBuffers = count;
- newState = GL_TRUE;
}
}
else {
@@ -404,15 +423,15 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers,
/* only one bit should be set in the destMask[buf] field */
ASSERT(_mesa_bitcount(destMask[buf]) == 1);
if (fb->_ColorDrawBufferIndexes[buf] != bufIndex) {
+ updated_drawbuffers(ctx);
fb->_ColorDrawBufferIndexes[buf] = bufIndex;
- newState = GL_TRUE;
}
count = buf + 1;
}
else {
if (fb->_ColorDrawBufferIndexes[buf] != -1) {
+ updated_drawbuffers(ctx);
fb->_ColorDrawBufferIndexes[buf] = -1;
- newState = GL_TRUE;
}
}
fb->ColorDrawBuffer[buf] = buffers[buf];
@@ -420,8 +439,8 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers,
/* set remaining outputs to -1 (GL_NONE) */
while (buf < ctx->Const.MaxDrawBuffers) {
if (fb->_ColorDrawBufferIndexes[buf] != -1) {
+ updated_drawbuffers(ctx);
fb->_ColorDrawBufferIndexes[buf] = -1;
- newState = GL_TRUE;
}
fb->ColorDrawBuffer[buf] = GL_NONE;
buf++;
@@ -434,14 +453,11 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers,
GLuint buf;
for (buf = 0; buf < ctx->Const.MaxDrawBuffers; buf++) {
if (ctx->Color.DrawBuffer[buf] != fb->ColorDrawBuffer[buf]) {
+ updated_drawbuffers(ctx);
ctx->Color.DrawBuffer[buf] = fb->ColorDrawBuffer[buf];
- newState = GL_TRUE;
}
}
}
-
- if (newState)
- FLUSH_VERTICES(ctx, _NEW_BUFFERS);
}
diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index d749b245e13..9fe6d527f92 100644
--- a/src/mesa/main/dd.h
+++ b/src/mesa/main/dd.h
@@ -1177,6 +1177,9 @@ typedef struct {
void (GLAPIENTRYP DrawElementsInstanced)(GLenum mode, GLsizei count,
GLenum type, const GLvoid *indices,
GLsizei primcount);
+ void (GLAPIENTRYP DrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count,
+ GLenum type, const GLvoid *indices,
+ GLsizei primcount, GLint basevertex);
/*@}*/
/**
diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c
index 2aba82fc016..c23593bc30d 100644
--- a/src/mesa/main/dlist.c
+++ b/src/mesa/main/dlist.c
@@ -57,6 +57,9 @@
#include "pack.h"
#include "pbo.h"
#include "queryobj.h"
+#include "samplerobj.h"
+#include "shaderapi.h"
+#include "syncobj.h"
#include "teximage.h"
#include "mtypes.h"
#include "varray.h"
@@ -421,6 +424,10 @@ typedef enum
/* GL_EXT_transform_feedback */
OPCODE_BEGIN_TRANSFORM_FEEDBACK,
OPCODE_END_TRANSFORM_FEEDBACK,
+ OPCODE_BIND_TRANSFORM_FEEDBACK,
+ OPCODE_PAUSE_TRANSFORM_FEEDBACK,
+ OPCODE_RESUME_TRANSFORM_FEEDBACK,
+ OPCODE_DRAW_TRANSFORM_FEEDBACK,
/* GL_EXT_texture_integer */
OPCODE_CLEARCOLOR_I,
@@ -440,6 +447,18 @@ typedef enum
/* GL_ARB_sampler_object */
OPCODE_BIND_SAMPLER,
+ OPCODE_SAMPLER_PARAMETERIV,
+ OPCODE_SAMPLER_PARAMETERFV,
+ OPCODE_SAMPLER_PARAMETERIIV,
+ OPCODE_SAMPLER_PARAMETERUIV,
+
+ /* GL_ARB_geometry_shader4 */
+ OPCODE_PROGRAM_PARAMETERI,
+ OPCODE_FRAMEBUFFER_TEXTURE,
+ OPCODE_FRAMEBUFFER_TEXTURE_FACE,
+
+ /* GL_ARB_sync */
+ OPCODE_WAIT_SYNC,
/* The following three are meta instructions */
OPCODE_ERROR, /* raise compiled-in error */
@@ -482,6 +501,17 @@ typedef union gl_dlist_node Node;
/**
+ * Used to store a 64-bit uint in a pair of "Nodes" for the sake of 32-bit
+ * environment. In 64-bit env, sizeof(Node)==8 anyway.
+ */
+union uint64_pair
+{
+ GLuint64 uint64;
+ GLuint uint32[2];
+};
+
+
+/**
* How many nodes to allocate at a time.
*
* \note Reduced now that we hold vertices etc. elsewhere.
@@ -6263,6 +6293,69 @@ save_EndTransformFeedback(void)
}
}
+static void GLAPIENTRY
+save_TransformFeedbackVaryings(GLuint program, GLsizei count,
+ const GLchar **varyings, GLenum bufferMode)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ _mesa_problem(ctx,
+ "glTransformFeedbackVarying() display list support not done");
+}
+
+static void GLAPIENTRY
+save_BindTransformFeedback(GLenum target, GLuint name)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ Node *n;
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_BIND_TRANSFORM_FEEDBACK, 2);
+ if (n) {
+ n[1].e = target;
+ n[2].ui = name;
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_BindTransformFeedback(ctx->Exec, (target, name));
+ }
+}
+
+static void GLAPIENTRY
+save_PauseTransformFeedback(void)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ (void) alloc_instruction(ctx, OPCODE_PAUSE_TRANSFORM_FEEDBACK, 0);
+ if (ctx->ExecuteFlag) {
+ CALL_PauseTransformFeedback(ctx->Exec, ());
+ }
+}
+
+static void GLAPIENTRY
+save_ResumeTransformFeedback(void)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ (void) alloc_instruction(ctx, OPCODE_RESUME_TRANSFORM_FEEDBACK, 0);
+ if (ctx->ExecuteFlag) {
+ CALL_ResumeTransformFeedback(ctx->Exec, ());
+ }
+}
+
+static void GLAPIENTRY
+save_DrawTransformFeedback(GLenum mode, GLuint name)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ Node *n;
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_DRAW_TRANSFORM_FEEDBACK, 2);
+ if (n) {
+ n[1].e = mode;
+ n[2].ui = name;
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_DrawTransformFeedback(ctx->Exec, (mode, name));
+ }
+}
+
/* aka UseProgram() */
static void GLAPIENTRY
@@ -7087,6 +7180,198 @@ save_BindSampler(GLuint unit, GLuint sampler)
}
}
+static void GLAPIENTRY
+save_SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *params)
+{
+ Node *n;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_SAMPLER_PARAMETERIV, 6);
+ if (n) {
+ n[1].ui = sampler;
+ n[2].e = pname;
+ n[3].i = params[0];
+ if (pname == GL_TEXTURE_BORDER_COLOR) {
+ n[4].i = params[1];
+ n[5].i = params[2];
+ n[6].i = params[3];
+ }
+ else {
+ n[4].i = n[5].i = n[6].i = 0;
+ }
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_SamplerParameteriv(ctx->Exec, (sampler, pname, params));
+ }
+}
+
+static void GLAPIENTRY
+save_SamplerParameteri(GLuint sampler, GLenum pname, GLint param)
+{
+ save_SamplerParameteriv(sampler, pname, &param);
+}
+
+static void GLAPIENTRY
+save_SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *params)
+{
+ Node *n;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_SAMPLER_PARAMETERFV, 6);
+ if (n) {
+ n[1].ui = sampler;
+ n[2].e = pname;
+ n[3].f = params[0];
+ if (pname == GL_TEXTURE_BORDER_COLOR) {
+ n[4].f = params[1];
+ n[5].f = params[2];
+ n[6].f = params[3];
+ }
+ else {
+ n[4].f = n[5].f = n[6].f = 0.0F;
+ }
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_SamplerParameterfv(ctx->Exec, (sampler, pname, params));
+ }
+}
+
+static void GLAPIENTRY
+save_SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
+{
+ save_SamplerParameterfv(sampler, pname, &param);
+}
+
+static void GLAPIENTRY
+save_SamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *params)
+{
+ Node *n;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_SAMPLER_PARAMETERIIV, 6);
+ if (n) {
+ n[1].ui = sampler;
+ n[2].e = pname;
+ n[3].i = params[0];
+ if (pname == GL_TEXTURE_BORDER_COLOR) {
+ n[4].i = params[1];
+ n[5].i = params[2];
+ n[6].i = params[3];
+ }
+ else {
+ n[4].i = n[5].i = n[6].i = 0;
+ }
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_SamplerParameterIiv(ctx->Exec, (sampler, pname, params));
+ }
+}
+
+static void GLAPIENTRY
+save_SamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *params)
+{
+ Node *n;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_SAMPLER_PARAMETERUIV, 6);
+ if (n) {
+ n[1].ui = sampler;
+ n[2].e = pname;
+ n[3].ui = params[0];
+ if (pname == GL_TEXTURE_BORDER_COLOR) {
+ n[4].ui = params[1];
+ n[5].ui = params[2];
+ n[6].ui = params[3];
+ }
+ else {
+ n[4].ui = n[5].ui = n[6].ui = 0;
+ }
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_SamplerParameterIuiv(ctx->Exec, (sampler, pname, params));
+ }
+}
+
+/* GL_ARB_geometry_shader4 */
+static void GLAPIENTRY
+save_ProgramParameteri(GLuint program, GLenum pname, GLint value)
+{
+ Node *n;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_PROGRAM_PARAMETERI, 3);
+ if (n) {
+ n[1].ui = program;
+ n[2].e = pname;
+ n[3].i = value;
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_ProgramParameteriARB(ctx->Exec, (program, pname, value));
+ }
+}
+
+static void GLAPIENTRY
+save_FramebufferTexture(GLenum target, GLenum attachment,
+ GLuint texture, GLint level)
+{
+ Node *n;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_FRAMEBUFFER_TEXTURE, 4);
+ if (n) {
+ n[1].e = target;
+ n[2].e = attachment;
+ n[3].ui = texture;
+ n[4].i = level;
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_FramebufferTextureARB(ctx->Exec, (target, attachment, texture, level));
+ }
+}
+
+static void GLAPIENTRY
+save_FramebufferTextureFace(GLenum target, GLenum attachment,
+ GLuint texture, GLint level, GLenum face)
+{
+ Node *n;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_FRAMEBUFFER_TEXTURE_FACE, 5);
+ if (n) {
+ n[1].e = target;
+ n[2].e = attachment;
+ n[3].ui = texture;
+ n[4].i = level;
+ n[5].e = face;
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_FramebufferTextureFaceARB(ctx->Exec, (target, attachment, texture,
+ level, face));
+ }
+}
+
+
+
+static void GLAPIENTRY
+save_WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
+{
+ Node *n;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_WAIT_SYNC, 4);
+ if (n) {
+ union uint64_pair p;
+ p.uint64 = timeout;
+ n[1].data = sync;
+ n[2].e = flags;
+ n[3].ui = p.uint32[0];
+ n[4].ui = p.uint32[1];
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_WaitSync(ctx->Exec, (sync, flags, timeout));
+ }
+}
+
/**
* Save an error-generating command into display list.
@@ -7715,12 +8000,6 @@ execute_list(struct gl_context *ctx, GLuint list)
case OPCODE_PROVOKING_VERTEX:
CALL_ProvokingVertexEXT(ctx->Exec, (n[1].e));
break;
- case OPCODE_BEGIN_TRANSFORM_FEEDBACK:
- CALL_BeginTransformFeedbackEXT(ctx->Exec, (n[1].e));
- break;
- case OPCODE_END_TRANSFORM_FEEDBACK:
- CALL_EndTransformFeedbackEXT(ctx->Exec, ());
- break;
case OPCODE_STENCIL_FUNC:
CALL_StencilFunc(ctx->Exec, (n[1].e, n[2].i, n[3].ui));
break;
@@ -8271,9 +8550,93 @@ execute_list(struct gl_context *ctx, GLuint list)
CALL_TextureBarrierNV(ctx->Exec, ());
break;
+ /* GL_EXT/ARB_transform_feedback */
+ case OPCODE_BEGIN_TRANSFORM_FEEDBACK:
+ CALL_BeginTransformFeedbackEXT(ctx->Exec, (n[1].e));
+ break;
+ case OPCODE_END_TRANSFORM_FEEDBACK:
+ CALL_EndTransformFeedbackEXT(ctx->Exec, ());
+ break;
+ case OPCODE_BIND_TRANSFORM_FEEDBACK:
+ CALL_BindTransformFeedback(ctx->Exec, (n[1].e, n[2].ui));
+ break;
+ case OPCODE_PAUSE_TRANSFORM_FEEDBACK:
+ CALL_PauseTransformFeedback(ctx->Exec, ());
+ break;
+ case OPCODE_RESUME_TRANSFORM_FEEDBACK:
+ CALL_ResumeTransformFeedback(ctx->Exec, ());
+ break;
+ case OPCODE_DRAW_TRANSFORM_FEEDBACK:
+ CALL_DrawTransformFeedback(ctx->Exec, (n[1].e, n[2].ui));
+ break;
+
+
case OPCODE_BIND_SAMPLER:
CALL_BindSampler(ctx->Exec, (n[1].ui, n[2].ui));
break;
+ case OPCODE_SAMPLER_PARAMETERIV:
+ {
+ GLint params[4];
+ params[0] = n[3].i;
+ params[1] = n[4].i;
+ params[2] = n[5].i;
+ params[3] = n[6].i;
+ CALL_SamplerParameteriv(ctx->Exec, (n[1].ui, n[2].e, params));
+ }
+ break;
+ case OPCODE_SAMPLER_PARAMETERFV:
+ {
+ GLfloat params[4];
+ params[0] = n[3].f;
+ params[1] = n[4].f;
+ params[2] = n[5].f;
+ params[3] = n[6].f;
+ CALL_SamplerParameterfv(ctx->Exec, (n[1].ui, n[2].e, params));
+ }
+ break;
+ case OPCODE_SAMPLER_PARAMETERIIV:
+ {
+ GLint params[4];
+ params[0] = n[3].i;
+ params[1] = n[4].i;
+ params[2] = n[5].i;
+ params[3] = n[6].i;
+ CALL_SamplerParameterIiv(ctx->Exec, (n[1].ui, n[2].e, params));
+ }
+ break;
+ case OPCODE_SAMPLER_PARAMETERUIV:
+ {
+ GLuint params[4];
+ params[0] = n[3].ui;
+ params[1] = n[4].ui;
+ params[2] = n[5].ui;
+ params[3] = n[6].ui;
+ CALL_SamplerParameterIuiv(ctx->Exec, (n[1].ui, n[2].e, params));
+ }
+ break;
+
+ /* GL_ARB_geometry_shader4 */
+ case OPCODE_PROGRAM_PARAMETERI:
+ CALL_ProgramParameteriARB(ctx->Exec, (n[1].ui, n[2].e, n[3].i));
+ break;
+ case OPCODE_FRAMEBUFFER_TEXTURE:
+ CALL_FramebufferTextureARB(ctx->Exec, (n[1].e, n[2].e,
+ n[3].ui, n[4].i));
+ break;
+ case OPCODE_FRAMEBUFFER_TEXTURE_FACE:
+ CALL_FramebufferTextureFaceARB(ctx->Exec, (n[1].e, n[2].e,
+ n[3].ui, n[4].i, n[5].e));
+ break;
+
+ /* GL_ARB_sync */
+ case OPCODE_WAIT_SYNC:
+ {
+ union uint64_pair p;
+ p.uint32[0] = n[3].ui;
+ p.uint32[1] = n[4].ui;
+ CALL_WaitSync(ctx->Exec, (n[1].data, n[2].bf, p.uint64));
+ }
+ break;
case OPCODE_CONTINUE:
n = (Node *) n[1].next;
@@ -9741,6 +10104,10 @@ _mesa_create_save_table(void)
SET_GenVertexArraysAPPLE(table, _mesa_GenVertexArraysAPPLE);
SET_IsVertexArrayAPPLE(table, _mesa_IsVertexArrayAPPLE);
+ /* GL_ARB_vertex_array_object */
+ SET_BindVertexArray(table, _mesa_BindVertexArray);
+ SET_GenVertexArrays(table, _mesa_GenVertexArrays);
+
/* ???. GL_EXT_depth_bounds_test */
SET_DepthBoundsEXT(table, save_DepthBoundsEXT);
@@ -9823,15 +10190,11 @@ _mesa_create_save_table(void)
#endif
#if FEATURE_queryobj
+ _mesa_init_queryobj_dispatch(table); /* glGetQuery, etc */
SET_BeginQueryARB(table, save_BeginQueryARB);
SET_EndQueryARB(table, save_EndQueryARB);
- SET_GenQueriesARB(table, _mesa_GenQueriesARB);
- SET_DeleteQueriesARB(table, _mesa_DeleteQueriesARB);
- SET_IsQueryARB(table, _mesa_IsQueryARB);
- SET_GetQueryivARB(table, _mesa_GetQueryivARB);
- SET_GetQueryObjectivARB(table, _mesa_GetQueryObjectivARB);
- SET_GetQueryObjectuivARB(table, _mesa_GetQueryObjectuivARB);
#endif
+
SET_DrawBuffersARB(table, save_DrawBuffersARB);
#if FEATURE_EXT_framebuffer_blit
@@ -9839,6 +10202,7 @@ _mesa_create_save_table(void)
#endif
/* GL_ARB_shader_objects */
+ _mesa_init_shader_dispatch(table); /* Plug in glCreate/Delete/Get, etc */
SET_UseProgramObjectARB(table, save_UseProgramObjectARB);
SET_Uniform1fARB(table, save_Uniform1fARB);
SET_Uniform2fARB(table, save_Uniform2fARB);
@@ -9890,12 +10254,6 @@ _mesa_create_save_table(void)
/* ARB 59. GL_ARB_copy_buffer */
SET_CopyBufferSubData(table, _mesa_CopyBufferSubData); /* no dlist save */
- /* 352. GL_EXT_transform_feedback */
-#if FEATURE_EXT_transform_feedback
- SET_BeginTransformFeedbackEXT(table, save_BeginTransformFeedback);
- SET_EndTransformFeedbackEXT(table, save_EndTransformFeedback);
-#endif
-
/* 364. GL_EXT_provoking_vertex */
SET_ProvokingVertexEXT(table, save_ProvokingVertexEXT);
@@ -9903,6 +10261,7 @@ _mesa_create_save_table(void)
#if FEATURE_APPLE_object_purgeable
SET_ObjectPurgeableAPPLE(table, _mesa_ObjectPurgeableAPPLE);
SET_ObjectUnpurgeableAPPLE(table, _mesa_ObjectUnpurgeableAPPLE);
+ SET_GetObjectParameterivAPPLE(table, _mesa_GetObjectParameterivAPPLE);
#endif
/* GL_EXT_texture_integer */
@@ -9922,11 +10281,11 @@ _mesa_create_save_table(void)
SET_ClampColor(table, save_ClampColorARB);
/* GL 3.0 */
-#if 0
SET_ClearBufferiv(table, save_ClearBufferiv);
SET_ClearBufferuiv(table, save_ClearBufferuiv);
SET_ClearBufferfv(table, save_ClearBufferfv);
SET_ClearBufferfi(table, save_ClearBufferfi);
+#if 0
SET_Uniform1ui(table, save_Uniform1ui);
SET_Uniform2ui(table, save_Uniform2ui);
SET_Uniform3ui(table, save_Uniform3ui);
@@ -9936,10 +10295,6 @@ _mesa_create_save_table(void)
SET_Uniform3uiv(table, save_Uniform3uiv);
SET_Uniform4uiv(table, save_Uniform4uiv);
#else
- (void) save_ClearBufferiv;
- (void) save_ClearBufferuiv;
- (void) save_ClearBufferfv;
- (void) save_ClearBufferfi;
(void) save_Uniform1ui;
(void) save_Uniform2ui;
(void) save_Uniform3ui;
@@ -9950,6 +10305,16 @@ _mesa_create_save_table(void)
(void) save_Uniform4uiv;
#endif
+#if FEATURE_EXT_transform_feedback
+ SET_BeginTransformFeedbackEXT(table, save_BeginTransformFeedback);
+ SET_EndTransformFeedbackEXT(table, save_EndTransformFeedback);
+ SET_TransformFeedbackVaryingsEXT(table, save_TransformFeedbackVaryings);
+ SET_BindTransformFeedback(table, save_BindTransformFeedback);
+ SET_PauseTransformFeedback(table, save_PauseTransformFeedback);
+ SET_ResumeTransformFeedback(table, save_ResumeTransformFeedback);
+ SET_DrawTransformFeedback(table, save_DrawTransformFeedback);
+#endif
+
/* GL_ARB_instanced_arrays */
SET_VertexAttribDivisorARB(table, save_VertexAttribDivisor);
@@ -9957,7 +10322,14 @@ _mesa_create_save_table(void)
SET_TextureBarrierNV(table, save_TextureBarrierNV);
/* GL_ARB_sampler_objects */
+ _mesa_init_sampler_object_dispatch(table); /* plug in Gen/Get/etc functions */
SET_BindSampler(table, save_BindSampler);
+ SET_SamplerParameteri(table, save_SamplerParameteri);
+ SET_SamplerParameterf(table, save_SamplerParameterf);
+ SET_SamplerParameteriv(table, save_SamplerParameteriv);
+ SET_SamplerParameterfv(table, save_SamplerParameterfv);
+ SET_SamplerParameterIiv(table, save_SamplerParameterIiv);
+ SET_SamplerParameterIuiv(table, save_SamplerParameterIuiv);
/* GL_ARB_draw_buffer_blend */
SET_BlendFunciARB(table, save_BlendFunci);
@@ -9965,6 +10337,15 @@ _mesa_create_save_table(void)
SET_BlendEquationiARB(table, save_BlendEquationi);
SET_BlendEquationSeparateiARB(table, save_BlendEquationSeparatei);
+ /* GL_ARB_geometry_shader4 */
+ SET_ProgramParameteriARB(table, save_ProgramParameteri);
+ SET_FramebufferTextureARB(table, save_FramebufferTexture);
+ SET_FramebufferTextureFaceARB(table, save_FramebufferTextureFace);
+
+ /* GL_ARB_sync */
+ _mesa_init_sync_dispatch(table);
+ SET_WaitSync(table, save_WaitSync);
+
return table;
}
diff --git a/src/mesa/main/es_generator.py b/src/mesa/main/es_generator.py
index a56debe0170..87d8bd31682 100644
--- a/src/mesa/main/es_generator.py
+++ b/src/mesa/main/es_generator.py
@@ -687,10 +687,6 @@ print """
#define need_MESA_remap_table
#include "%sapi/main/remap_helper.h"
-/* force SET_* macros to use the local remap table */
-#define driDispatchRemapTable remap_table
-static int remap_table[driDispatchRemapTable_size];
-
static void
init_remap_table(void)
{
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 67df53b889c..d4400709aef 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -795,7 +795,7 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx,
}
#if FEATURE_GL
- if (ctx->API == API_OPENGL) {
+ if (ctx->API == API_OPENGL && !ctx->Extensions.ARB_ES2_compatibility) {
/* Check that all DrawBuffers are present */
for (j = 0; j < ctx->Const.MaxDrawBuffers; j++) {
if (fb->ColorDrawBuffer[j] != GL_NONE) {
@@ -2161,6 +2161,10 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment,
if (att->Type == GL_TEXTURE) {
*params = att->TextureLevel;
}
+ else if (att->Type == GL_NONE) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glGetFramebufferAttachmentParameterivEXT(pname)");
+ }
else {
_mesa_error(ctx, GL_INVALID_ENUM,
"glGetFramebufferAttachmentParameterivEXT(pname)");
@@ -2175,6 +2179,10 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment,
*params = 0;
}
}
+ else if (att->Type == GL_NONE) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glGetFramebufferAttachmentParameterivEXT(pname)");
+ }
else {
_mesa_error(ctx, GL_INVALID_ENUM,
"glGetFramebufferAttachmentParameterivEXT(pname)");
@@ -2189,6 +2197,10 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment,
*params = 0;
}
}
+ else if (att->Type == GL_NONE) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glGetFramebufferAttachmentParameterivEXT(pname)");
+ }
else {
_mesa_error(ctx, GL_INVALID_ENUM,
"glGetFramebufferAttachmentParameterivEXT(pname)");
@@ -2199,6 +2211,10 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment,
_mesa_error(ctx, GL_INVALID_ENUM,
"glGetFramebufferAttachmentParameterivEXT(pname)");
}
+ else if (att->Type == GL_NONE) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glGetFramebufferAttachmentParameterivEXT(pname)");
+ }
else {
if (ctx->Extensions.EXT_framebuffer_sRGB && ctx->Const.sRGBCapable) {
*params = _mesa_get_format_color_encoding(att->Renderbuffer->Format);
@@ -2216,6 +2232,10 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment,
"glGetFramebufferAttachmentParameterivEXT(pname)");
return;
}
+ else if (att->Type == GL_NONE) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glGetFramebufferAttachmentParameterivEXT(pname)");
+ }
else {
gl_format format = att->Renderbuffer->Format;
if (format == MESA_FORMAT_CI8 || format == MESA_FORMAT_S8) {
@@ -2237,6 +2257,10 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment,
_mesa_error(ctx, GL_INVALID_ENUM,
"glGetFramebufferAttachmentParameterivEXT(pname)");
}
+ else if (att->Type == GL_NONE) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glGetFramebufferAttachmentParameterivEXT(pname)");
+ }
else if (att->Texture) {
const struct gl_texture_image *texImage =
_mesa_select_tex_image(ctx, att->Texture, att->Texture->Target,
@@ -2254,7 +2278,8 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment,
att->Renderbuffer->Format);
}
else {
- *params = 0;
+ _mesa_problem(ctx, "glGetFramebufferAttachmentParameterivEXT:"
+ " invalid FBO attachment structure");
}
return;
default:
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 60e8ae390a5..e88ba43971b 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -1118,8 +1118,10 @@ _mesa_get_format_name(gl_format format)
* Return bytes needed to store a block of pixels in the given format.
* Normally, a block is 1x1 (a single pixel). But for compressed formats
* a block may be 4x4 or 8x4, etc.
+ *
+ * Note: not GLuint, so as not to coerce math to unsigned. cf. fdo #37351
*/
-GLuint
+GLint
_mesa_get_format_bytes(gl_format format)
{
const struct gl_format_info *info = _mesa_get_format_info(format);
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index df9ed70a3e0..0640bbc4af1 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -216,7 +216,7 @@ typedef enum
extern const char *
_mesa_get_format_name(gl_format format);
-extern GLuint
+extern GLint
_mesa_get_format_bytes(gl_format format);
extern GLint
diff --git a/src/mesa/main/glapidispatch.h b/src/mesa/main/glapidispatch.h
index 4a9a58b5e05..44342102fec 100644
--- a/src/mesa/main/glapidispatch.h
+++ b/src/mesa/main/glapidispatch.h
@@ -59,7 +59,7 @@
} while(0)
/* total number of offsets below */
-#define _gloffset_COUNT 928
+#define _gloffset_COUNT 929
#define _gloffset_NewList 0
#define _gloffset_EndList 1
@@ -658,344 +658,345 @@
#define _gloffset_IsSync 591
#define _gloffset_WaitSync 592
#define _gloffset_DrawElementsBaseVertex 593
-#define _gloffset_DrawRangeElementsBaseVertex 594
-#define _gloffset_MultiDrawElementsBaseVertex 595
-#define _gloffset_BlendEquationSeparateiARB 596
-#define _gloffset_BlendEquationiARB 597
-#define _gloffset_BlendFuncSeparateiARB 598
-#define _gloffset_BlendFunciARB 599
-#define _gloffset_BindSampler 600
-#define _gloffset_DeleteSamplers 601
-#define _gloffset_GenSamplers 602
-#define _gloffset_GetSamplerParameterIiv 603
-#define _gloffset_GetSamplerParameterIuiv 604
-#define _gloffset_GetSamplerParameterfv 605
-#define _gloffset_GetSamplerParameteriv 606
-#define _gloffset_IsSampler 607
-#define _gloffset_SamplerParameterIiv 608
-#define _gloffset_SamplerParameterIuiv 609
-#define _gloffset_SamplerParameterf 610
-#define _gloffset_SamplerParameterfv 611
-#define _gloffset_SamplerParameteri 612
-#define _gloffset_SamplerParameteriv 613
-#define _gloffset_BindTransformFeedback 614
-#define _gloffset_DeleteTransformFeedbacks 615
-#define _gloffset_DrawTransformFeedback 616
-#define _gloffset_GenTransformFeedbacks 617
-#define _gloffset_IsTransformFeedback 618
-#define _gloffset_PauseTransformFeedback 619
-#define _gloffset_ResumeTransformFeedback 620
-#define _gloffset_ClearDepthf 621
-#define _gloffset_DepthRangef 622
-#define _gloffset_GetShaderPrecisionFormat 623
-#define _gloffset_ReleaseShaderCompiler 624
-#define _gloffset_ShaderBinary 625
-#define _gloffset_GetGraphicsResetStatusARB 626
-#define _gloffset_GetnColorTableARB 627
-#define _gloffset_GetnCompressedTexImageARB 628
-#define _gloffset_GetnConvolutionFilterARB 629
-#define _gloffset_GetnHistogramARB 630
-#define _gloffset_GetnMapdvARB 631
-#define _gloffset_GetnMapfvARB 632
-#define _gloffset_GetnMapivARB 633
-#define _gloffset_GetnMinmaxARB 634
-#define _gloffset_GetnPixelMapfvARB 635
-#define _gloffset_GetnPixelMapuivARB 636
-#define _gloffset_GetnPixelMapusvARB 637
-#define _gloffset_GetnPolygonStippleARB 638
-#define _gloffset_GetnSeparableFilterARB 639
-#define _gloffset_GetnTexImageARB 640
-#define _gloffset_GetnUniformdvARB 641
-#define _gloffset_GetnUniformfvARB 642
-#define _gloffset_GetnUniformivARB 643
-#define _gloffset_GetnUniformuivARB 644
-#define _gloffset_ReadnPixelsARB 645
-#define _gloffset_PolygonOffsetEXT 646
-#define _gloffset_GetPixelTexGenParameterfvSGIS 647
-#define _gloffset_GetPixelTexGenParameterivSGIS 648
-#define _gloffset_PixelTexGenParameterfSGIS 649
-#define _gloffset_PixelTexGenParameterfvSGIS 650
-#define _gloffset_PixelTexGenParameteriSGIS 651
-#define _gloffset_PixelTexGenParameterivSGIS 652
-#define _gloffset_SampleMaskSGIS 653
-#define _gloffset_SamplePatternSGIS 654
-#define _gloffset_ColorPointerEXT 655
-#define _gloffset_EdgeFlagPointerEXT 656
-#define _gloffset_IndexPointerEXT 657
-#define _gloffset_NormalPointerEXT 658
-#define _gloffset_TexCoordPointerEXT 659
-#define _gloffset_VertexPointerEXT 660
-#define _gloffset_PointParameterfEXT 661
-#define _gloffset_PointParameterfvEXT 662
-#define _gloffset_LockArraysEXT 663
-#define _gloffset_UnlockArraysEXT 664
-#define _gloffset_SecondaryColor3bEXT 665
-#define _gloffset_SecondaryColor3bvEXT 666
-#define _gloffset_SecondaryColor3dEXT 667
-#define _gloffset_SecondaryColor3dvEXT 668
-#define _gloffset_SecondaryColor3fEXT 669
-#define _gloffset_SecondaryColor3fvEXT 670
-#define _gloffset_SecondaryColor3iEXT 671
-#define _gloffset_SecondaryColor3ivEXT 672
-#define _gloffset_SecondaryColor3sEXT 673
-#define _gloffset_SecondaryColor3svEXT 674
-#define _gloffset_SecondaryColor3ubEXT 675
-#define _gloffset_SecondaryColor3ubvEXT 676
-#define _gloffset_SecondaryColor3uiEXT 677
-#define _gloffset_SecondaryColor3uivEXT 678
-#define _gloffset_SecondaryColor3usEXT 679
-#define _gloffset_SecondaryColor3usvEXT 680
-#define _gloffset_SecondaryColorPointerEXT 681
-#define _gloffset_MultiDrawArraysEXT 682
-#define _gloffset_MultiDrawElementsEXT 683
-#define _gloffset_FogCoordPointerEXT 684
-#define _gloffset_FogCoorddEXT 685
-#define _gloffset_FogCoorddvEXT 686
-#define _gloffset_FogCoordfEXT 687
-#define _gloffset_FogCoordfvEXT 688
-#define _gloffset_PixelTexGenSGIX 689
-#define _gloffset_BlendFuncSeparateEXT 690
-#define _gloffset_FlushVertexArrayRangeNV 691
-#define _gloffset_VertexArrayRangeNV 692
-#define _gloffset_CombinerInputNV 693
-#define _gloffset_CombinerOutputNV 694
-#define _gloffset_CombinerParameterfNV 695
-#define _gloffset_CombinerParameterfvNV 696
-#define _gloffset_CombinerParameteriNV 697
-#define _gloffset_CombinerParameterivNV 698
-#define _gloffset_FinalCombinerInputNV 699
-#define _gloffset_GetCombinerInputParameterfvNV 700
-#define _gloffset_GetCombinerInputParameterivNV 701
-#define _gloffset_GetCombinerOutputParameterfvNV 702
-#define _gloffset_GetCombinerOutputParameterivNV 703
-#define _gloffset_GetFinalCombinerInputParameterfvNV 704
-#define _gloffset_GetFinalCombinerInputParameterivNV 705
-#define _gloffset_ResizeBuffersMESA 706
-#define _gloffset_WindowPos2dMESA 707
-#define _gloffset_WindowPos2dvMESA 708
-#define _gloffset_WindowPos2fMESA 709
-#define _gloffset_WindowPos2fvMESA 710
-#define _gloffset_WindowPos2iMESA 711
-#define _gloffset_WindowPos2ivMESA 712
-#define _gloffset_WindowPos2sMESA 713
-#define _gloffset_WindowPos2svMESA 714
-#define _gloffset_WindowPos3dMESA 715
-#define _gloffset_WindowPos3dvMESA 716
-#define _gloffset_WindowPos3fMESA 717
-#define _gloffset_WindowPos3fvMESA 718
-#define _gloffset_WindowPos3iMESA 719
-#define _gloffset_WindowPos3ivMESA 720
-#define _gloffset_WindowPos3sMESA 721
-#define _gloffset_WindowPos3svMESA 722
-#define _gloffset_WindowPos4dMESA 723
-#define _gloffset_WindowPos4dvMESA 724
-#define _gloffset_WindowPos4fMESA 725
-#define _gloffset_WindowPos4fvMESA 726
-#define _gloffset_WindowPos4iMESA 727
-#define _gloffset_WindowPos4ivMESA 728
-#define _gloffset_WindowPos4sMESA 729
-#define _gloffset_WindowPos4svMESA 730
-#define _gloffset_MultiModeDrawArraysIBM 731
-#define _gloffset_MultiModeDrawElementsIBM 732
-#define _gloffset_DeleteFencesNV 733
-#define _gloffset_FinishFenceNV 734
-#define _gloffset_GenFencesNV 735
-#define _gloffset_GetFenceivNV 736
-#define _gloffset_IsFenceNV 737
-#define _gloffset_SetFenceNV 738
-#define _gloffset_TestFenceNV 739
-#define _gloffset_AreProgramsResidentNV 740
-#define _gloffset_BindProgramNV 741
-#define _gloffset_DeleteProgramsNV 742
-#define _gloffset_ExecuteProgramNV 743
-#define _gloffset_GenProgramsNV 744
-#define _gloffset_GetProgramParameterdvNV 745
-#define _gloffset_GetProgramParameterfvNV 746
-#define _gloffset_GetProgramStringNV 747
-#define _gloffset_GetProgramivNV 748
-#define _gloffset_GetTrackMatrixivNV 749
-#define _gloffset_GetVertexAttribPointervNV 750
-#define _gloffset_GetVertexAttribdvNV 751
-#define _gloffset_GetVertexAttribfvNV 752
-#define _gloffset_GetVertexAttribivNV 753
-#define _gloffset_IsProgramNV 754
-#define _gloffset_LoadProgramNV 755
-#define _gloffset_ProgramParameters4dvNV 756
-#define _gloffset_ProgramParameters4fvNV 757
-#define _gloffset_RequestResidentProgramsNV 758
-#define _gloffset_TrackMatrixNV 759
-#define _gloffset_VertexAttrib1dNV 760
-#define _gloffset_VertexAttrib1dvNV 761
-#define _gloffset_VertexAttrib1fNV 762
-#define _gloffset_VertexAttrib1fvNV 763
-#define _gloffset_VertexAttrib1sNV 764
-#define _gloffset_VertexAttrib1svNV 765
-#define _gloffset_VertexAttrib2dNV 766
-#define _gloffset_VertexAttrib2dvNV 767
-#define _gloffset_VertexAttrib2fNV 768
-#define _gloffset_VertexAttrib2fvNV 769
-#define _gloffset_VertexAttrib2sNV 770
-#define _gloffset_VertexAttrib2svNV 771
-#define _gloffset_VertexAttrib3dNV 772
-#define _gloffset_VertexAttrib3dvNV 773
-#define _gloffset_VertexAttrib3fNV 774
-#define _gloffset_VertexAttrib3fvNV 775
-#define _gloffset_VertexAttrib3sNV 776
-#define _gloffset_VertexAttrib3svNV 777
-#define _gloffset_VertexAttrib4dNV 778
-#define _gloffset_VertexAttrib4dvNV 779
-#define _gloffset_VertexAttrib4fNV 780
-#define _gloffset_VertexAttrib4fvNV 781
-#define _gloffset_VertexAttrib4sNV 782
-#define _gloffset_VertexAttrib4svNV 783
-#define _gloffset_VertexAttrib4ubNV 784
-#define _gloffset_VertexAttrib4ubvNV 785
-#define _gloffset_VertexAttribPointerNV 786
-#define _gloffset_VertexAttribs1dvNV 787
-#define _gloffset_VertexAttribs1fvNV 788
-#define _gloffset_VertexAttribs1svNV 789
-#define _gloffset_VertexAttribs2dvNV 790
-#define _gloffset_VertexAttribs2fvNV 791
-#define _gloffset_VertexAttribs2svNV 792
-#define _gloffset_VertexAttribs3dvNV 793
-#define _gloffset_VertexAttribs3fvNV 794
-#define _gloffset_VertexAttribs3svNV 795
-#define _gloffset_VertexAttribs4dvNV 796
-#define _gloffset_VertexAttribs4fvNV 797
-#define _gloffset_VertexAttribs4svNV 798
-#define _gloffset_VertexAttribs4ubvNV 799
-#define _gloffset_GetTexBumpParameterfvATI 800
-#define _gloffset_GetTexBumpParameterivATI 801
-#define _gloffset_TexBumpParameterfvATI 802
-#define _gloffset_TexBumpParameterivATI 803
-#define _gloffset_AlphaFragmentOp1ATI 804
-#define _gloffset_AlphaFragmentOp2ATI 805
-#define _gloffset_AlphaFragmentOp3ATI 806
-#define _gloffset_BeginFragmentShaderATI 807
-#define _gloffset_BindFragmentShaderATI 808
-#define _gloffset_ColorFragmentOp1ATI 809
-#define _gloffset_ColorFragmentOp2ATI 810
-#define _gloffset_ColorFragmentOp3ATI 811
-#define _gloffset_DeleteFragmentShaderATI 812
-#define _gloffset_EndFragmentShaderATI 813
-#define _gloffset_GenFragmentShadersATI 814
-#define _gloffset_PassTexCoordATI 815
-#define _gloffset_SampleMapATI 816
-#define _gloffset_SetFragmentShaderConstantATI 817
-#define _gloffset_PointParameteriNV 818
-#define _gloffset_PointParameterivNV 819
-#define _gloffset_ActiveStencilFaceEXT 820
-#define _gloffset_BindVertexArrayAPPLE 821
-#define _gloffset_DeleteVertexArraysAPPLE 822
-#define _gloffset_GenVertexArraysAPPLE 823
-#define _gloffset_IsVertexArrayAPPLE 824
-#define _gloffset_GetProgramNamedParameterdvNV 825
-#define _gloffset_GetProgramNamedParameterfvNV 826
-#define _gloffset_ProgramNamedParameter4dNV 827
-#define _gloffset_ProgramNamedParameter4dvNV 828
-#define _gloffset_ProgramNamedParameter4fNV 829
-#define _gloffset_ProgramNamedParameter4fvNV 830
-#define _gloffset_PrimitiveRestartIndexNV 831
-#define _gloffset_PrimitiveRestartNV 832
-#define _gloffset_DepthBoundsEXT 833
-#define _gloffset_BlendEquationSeparateEXT 834
-#define _gloffset_BindFramebufferEXT 835
-#define _gloffset_BindRenderbufferEXT 836
-#define _gloffset_CheckFramebufferStatusEXT 837
-#define _gloffset_DeleteFramebuffersEXT 838
-#define _gloffset_DeleteRenderbuffersEXT 839
-#define _gloffset_FramebufferRenderbufferEXT 840
-#define _gloffset_FramebufferTexture1DEXT 841
-#define _gloffset_FramebufferTexture2DEXT 842
-#define _gloffset_FramebufferTexture3DEXT 843
-#define _gloffset_GenFramebuffersEXT 844
-#define _gloffset_GenRenderbuffersEXT 845
-#define _gloffset_GenerateMipmapEXT 846
-#define _gloffset_GetFramebufferAttachmentParameterivEXT 847
-#define _gloffset_GetRenderbufferParameterivEXT 848
-#define _gloffset_IsFramebufferEXT 849
-#define _gloffset_IsRenderbufferEXT 850
-#define _gloffset_RenderbufferStorageEXT 851
-#define _gloffset_BlitFramebufferEXT 852
-#define _gloffset_BufferParameteriAPPLE 853
-#define _gloffset_FlushMappedBufferRangeAPPLE 854
-#define _gloffset_BindFragDataLocationEXT 855
-#define _gloffset_GetFragDataLocationEXT 856
-#define _gloffset_GetUniformuivEXT 857
-#define _gloffset_GetVertexAttribIivEXT 858
-#define _gloffset_GetVertexAttribIuivEXT 859
-#define _gloffset_Uniform1uiEXT 860
-#define _gloffset_Uniform1uivEXT 861
-#define _gloffset_Uniform2uiEXT 862
-#define _gloffset_Uniform2uivEXT 863
-#define _gloffset_Uniform3uiEXT 864
-#define _gloffset_Uniform3uivEXT 865
-#define _gloffset_Uniform4uiEXT 866
-#define _gloffset_Uniform4uivEXT 867
-#define _gloffset_VertexAttribI1iEXT 868
-#define _gloffset_VertexAttribI1ivEXT 869
-#define _gloffset_VertexAttribI1uiEXT 870
-#define _gloffset_VertexAttribI1uivEXT 871
-#define _gloffset_VertexAttribI2iEXT 872
-#define _gloffset_VertexAttribI2ivEXT 873
-#define _gloffset_VertexAttribI2uiEXT 874
-#define _gloffset_VertexAttribI2uivEXT 875
-#define _gloffset_VertexAttribI3iEXT 876
-#define _gloffset_VertexAttribI3ivEXT 877
-#define _gloffset_VertexAttribI3uiEXT 878
-#define _gloffset_VertexAttribI3uivEXT 879
-#define _gloffset_VertexAttribI4bvEXT 880
-#define _gloffset_VertexAttribI4iEXT 881
-#define _gloffset_VertexAttribI4ivEXT 882
-#define _gloffset_VertexAttribI4svEXT 883
-#define _gloffset_VertexAttribI4ubvEXT 884
-#define _gloffset_VertexAttribI4uiEXT 885
-#define _gloffset_VertexAttribI4uivEXT 886
-#define _gloffset_VertexAttribI4usvEXT 887
-#define _gloffset_VertexAttribIPointerEXT 888
-#define _gloffset_FramebufferTextureLayerEXT 889
-#define _gloffset_ColorMaskIndexedEXT 890
-#define _gloffset_DisableIndexedEXT 891
-#define _gloffset_EnableIndexedEXT 892
-#define _gloffset_GetBooleanIndexedvEXT 893
-#define _gloffset_GetIntegerIndexedvEXT 894
-#define _gloffset_IsEnabledIndexedEXT 895
-#define _gloffset_ClearColorIiEXT 896
-#define _gloffset_ClearColorIuiEXT 897
-#define _gloffset_GetTexParameterIivEXT 898
-#define _gloffset_GetTexParameterIuivEXT 899
-#define _gloffset_TexParameterIivEXT 900
-#define _gloffset_TexParameterIuivEXT 901
-#define _gloffset_BeginConditionalRenderNV 902
-#define _gloffset_EndConditionalRenderNV 903
-#define _gloffset_BeginTransformFeedbackEXT 904
-#define _gloffset_BindBufferBaseEXT 905
-#define _gloffset_BindBufferOffsetEXT 906
-#define _gloffset_BindBufferRangeEXT 907
-#define _gloffset_EndTransformFeedbackEXT 908
-#define _gloffset_GetTransformFeedbackVaryingEXT 909
-#define _gloffset_TransformFeedbackVaryingsEXT 910
-#define _gloffset_ProvokingVertexEXT 911
-#define _gloffset_GetTexParameterPointervAPPLE 912
-#define _gloffset_TextureRangeAPPLE 913
-#define _gloffset_GetObjectParameterivAPPLE 914
-#define _gloffset_ObjectPurgeableAPPLE 915
-#define _gloffset_ObjectUnpurgeableAPPLE 916
-#define _gloffset_ActiveProgramEXT 917
-#define _gloffset_CreateShaderProgramEXT 918
-#define _gloffset_UseShaderProgramEXT 919
-#define _gloffset_TextureBarrierNV 920
-#define _gloffset_StencilFuncSeparateATI 921
-#define _gloffset_ProgramEnvParameters4fvEXT 922
-#define _gloffset_ProgramLocalParameters4fvEXT 923
-#define _gloffset_GetQueryObjecti64vEXT 924
-#define _gloffset_GetQueryObjectui64vEXT 925
-#define _gloffset_EGLImageTargetRenderbufferStorageOES 926
-#define _gloffset_EGLImageTargetTexture2DOES 927
+#define _gloffset_DrawElementsInstancedBaseVertex 594
+#define _gloffset_DrawRangeElementsBaseVertex 595
+#define _gloffset_MultiDrawElementsBaseVertex 596
+#define _gloffset_BlendEquationSeparateiARB 597
+#define _gloffset_BlendEquationiARB 598
+#define _gloffset_BlendFuncSeparateiARB 599
+#define _gloffset_BlendFunciARB 600
+#define _gloffset_BindSampler 601
+#define _gloffset_DeleteSamplers 602
+#define _gloffset_GenSamplers 603
+#define _gloffset_GetSamplerParameterIiv 604
+#define _gloffset_GetSamplerParameterIuiv 605
+#define _gloffset_GetSamplerParameterfv 606
+#define _gloffset_GetSamplerParameteriv 607
+#define _gloffset_IsSampler 608
+#define _gloffset_SamplerParameterIiv 609
+#define _gloffset_SamplerParameterIuiv 610
+#define _gloffset_SamplerParameterf 611
+#define _gloffset_SamplerParameterfv 612
+#define _gloffset_SamplerParameteri 613
+#define _gloffset_SamplerParameteriv 614
+#define _gloffset_BindTransformFeedback 615
+#define _gloffset_DeleteTransformFeedbacks 616
+#define _gloffset_DrawTransformFeedback 617
+#define _gloffset_GenTransformFeedbacks 618
+#define _gloffset_IsTransformFeedback 619
+#define _gloffset_PauseTransformFeedback 620
+#define _gloffset_ResumeTransformFeedback 621
+#define _gloffset_ClearDepthf 622
+#define _gloffset_DepthRangef 623
+#define _gloffset_GetShaderPrecisionFormat 624
+#define _gloffset_ReleaseShaderCompiler 625
+#define _gloffset_ShaderBinary 626
+#define _gloffset_GetGraphicsResetStatusARB 627
+#define _gloffset_GetnColorTableARB 628
+#define _gloffset_GetnCompressedTexImageARB 629
+#define _gloffset_GetnConvolutionFilterARB 630
+#define _gloffset_GetnHistogramARB 631
+#define _gloffset_GetnMapdvARB 632
+#define _gloffset_GetnMapfvARB 633
+#define _gloffset_GetnMapivARB 634
+#define _gloffset_GetnMinmaxARB 635
+#define _gloffset_GetnPixelMapfvARB 636
+#define _gloffset_GetnPixelMapuivARB 637
+#define _gloffset_GetnPixelMapusvARB 638
+#define _gloffset_GetnPolygonStippleARB 639
+#define _gloffset_GetnSeparableFilterARB 640
+#define _gloffset_GetnTexImageARB 641
+#define _gloffset_GetnUniformdvARB 642
+#define _gloffset_GetnUniformfvARB 643
+#define _gloffset_GetnUniformivARB 644
+#define _gloffset_GetnUniformuivARB 645
+#define _gloffset_ReadnPixelsARB 646
+#define _gloffset_PolygonOffsetEXT 647
+#define _gloffset_GetPixelTexGenParameterfvSGIS 648
+#define _gloffset_GetPixelTexGenParameterivSGIS 649
+#define _gloffset_PixelTexGenParameterfSGIS 650
+#define _gloffset_PixelTexGenParameterfvSGIS 651
+#define _gloffset_PixelTexGenParameteriSGIS 652
+#define _gloffset_PixelTexGenParameterivSGIS 653
+#define _gloffset_SampleMaskSGIS 654
+#define _gloffset_SamplePatternSGIS 655
+#define _gloffset_ColorPointerEXT 656
+#define _gloffset_EdgeFlagPointerEXT 657
+#define _gloffset_IndexPointerEXT 658
+#define _gloffset_NormalPointerEXT 659
+#define _gloffset_TexCoordPointerEXT 660
+#define _gloffset_VertexPointerEXT 661
+#define _gloffset_PointParameterfEXT 662
+#define _gloffset_PointParameterfvEXT 663
+#define _gloffset_LockArraysEXT 664
+#define _gloffset_UnlockArraysEXT 665
+#define _gloffset_SecondaryColor3bEXT 666
+#define _gloffset_SecondaryColor3bvEXT 667
+#define _gloffset_SecondaryColor3dEXT 668
+#define _gloffset_SecondaryColor3dvEXT 669
+#define _gloffset_SecondaryColor3fEXT 670
+#define _gloffset_SecondaryColor3fvEXT 671
+#define _gloffset_SecondaryColor3iEXT 672
+#define _gloffset_SecondaryColor3ivEXT 673
+#define _gloffset_SecondaryColor3sEXT 674
+#define _gloffset_SecondaryColor3svEXT 675
+#define _gloffset_SecondaryColor3ubEXT 676
+#define _gloffset_SecondaryColor3ubvEXT 677
+#define _gloffset_SecondaryColor3uiEXT 678
+#define _gloffset_SecondaryColor3uivEXT 679
+#define _gloffset_SecondaryColor3usEXT 680
+#define _gloffset_SecondaryColor3usvEXT 681
+#define _gloffset_SecondaryColorPointerEXT 682
+#define _gloffset_MultiDrawArraysEXT 683
+#define _gloffset_MultiDrawElementsEXT 684
+#define _gloffset_FogCoordPointerEXT 685
+#define _gloffset_FogCoorddEXT 686
+#define _gloffset_FogCoorddvEXT 687
+#define _gloffset_FogCoordfEXT 688
+#define _gloffset_FogCoordfvEXT 689
+#define _gloffset_PixelTexGenSGIX 690
+#define _gloffset_BlendFuncSeparateEXT 691
+#define _gloffset_FlushVertexArrayRangeNV 692
+#define _gloffset_VertexArrayRangeNV 693
+#define _gloffset_CombinerInputNV 694
+#define _gloffset_CombinerOutputNV 695
+#define _gloffset_CombinerParameterfNV 696
+#define _gloffset_CombinerParameterfvNV 697
+#define _gloffset_CombinerParameteriNV 698
+#define _gloffset_CombinerParameterivNV 699
+#define _gloffset_FinalCombinerInputNV 700
+#define _gloffset_GetCombinerInputParameterfvNV 701
+#define _gloffset_GetCombinerInputParameterivNV 702
+#define _gloffset_GetCombinerOutputParameterfvNV 703
+#define _gloffset_GetCombinerOutputParameterivNV 704
+#define _gloffset_GetFinalCombinerInputParameterfvNV 705
+#define _gloffset_GetFinalCombinerInputParameterivNV 706
+#define _gloffset_ResizeBuffersMESA 707
+#define _gloffset_WindowPos2dMESA 708
+#define _gloffset_WindowPos2dvMESA 709
+#define _gloffset_WindowPos2fMESA 710
+#define _gloffset_WindowPos2fvMESA 711
+#define _gloffset_WindowPos2iMESA 712
+#define _gloffset_WindowPos2ivMESA 713
+#define _gloffset_WindowPos2sMESA 714
+#define _gloffset_WindowPos2svMESA 715
+#define _gloffset_WindowPos3dMESA 716
+#define _gloffset_WindowPos3dvMESA 717
+#define _gloffset_WindowPos3fMESA 718
+#define _gloffset_WindowPos3fvMESA 719
+#define _gloffset_WindowPos3iMESA 720
+#define _gloffset_WindowPos3ivMESA 721
+#define _gloffset_WindowPos3sMESA 722
+#define _gloffset_WindowPos3svMESA 723
+#define _gloffset_WindowPos4dMESA 724
+#define _gloffset_WindowPos4dvMESA 725
+#define _gloffset_WindowPos4fMESA 726
+#define _gloffset_WindowPos4fvMESA 727
+#define _gloffset_WindowPos4iMESA 728
+#define _gloffset_WindowPos4ivMESA 729
+#define _gloffset_WindowPos4sMESA 730
+#define _gloffset_WindowPos4svMESA 731
+#define _gloffset_MultiModeDrawArraysIBM 732
+#define _gloffset_MultiModeDrawElementsIBM 733
+#define _gloffset_DeleteFencesNV 734
+#define _gloffset_FinishFenceNV 735
+#define _gloffset_GenFencesNV 736
+#define _gloffset_GetFenceivNV 737
+#define _gloffset_IsFenceNV 738
+#define _gloffset_SetFenceNV 739
+#define _gloffset_TestFenceNV 740
+#define _gloffset_AreProgramsResidentNV 741
+#define _gloffset_BindProgramNV 742
+#define _gloffset_DeleteProgramsNV 743
+#define _gloffset_ExecuteProgramNV 744
+#define _gloffset_GenProgramsNV 745
+#define _gloffset_GetProgramParameterdvNV 746
+#define _gloffset_GetProgramParameterfvNV 747
+#define _gloffset_GetProgramStringNV 748
+#define _gloffset_GetProgramivNV 749
+#define _gloffset_GetTrackMatrixivNV 750
+#define _gloffset_GetVertexAttribPointervNV 751
+#define _gloffset_GetVertexAttribdvNV 752
+#define _gloffset_GetVertexAttribfvNV 753
+#define _gloffset_GetVertexAttribivNV 754
+#define _gloffset_IsProgramNV 755
+#define _gloffset_LoadProgramNV 756
+#define _gloffset_ProgramParameters4dvNV 757
+#define _gloffset_ProgramParameters4fvNV 758
+#define _gloffset_RequestResidentProgramsNV 759
+#define _gloffset_TrackMatrixNV 760
+#define _gloffset_VertexAttrib1dNV 761
+#define _gloffset_VertexAttrib1dvNV 762
+#define _gloffset_VertexAttrib1fNV 763
+#define _gloffset_VertexAttrib1fvNV 764
+#define _gloffset_VertexAttrib1sNV 765
+#define _gloffset_VertexAttrib1svNV 766
+#define _gloffset_VertexAttrib2dNV 767
+#define _gloffset_VertexAttrib2dvNV 768
+#define _gloffset_VertexAttrib2fNV 769
+#define _gloffset_VertexAttrib2fvNV 770
+#define _gloffset_VertexAttrib2sNV 771
+#define _gloffset_VertexAttrib2svNV 772
+#define _gloffset_VertexAttrib3dNV 773
+#define _gloffset_VertexAttrib3dvNV 774
+#define _gloffset_VertexAttrib3fNV 775
+#define _gloffset_VertexAttrib3fvNV 776
+#define _gloffset_VertexAttrib3sNV 777
+#define _gloffset_VertexAttrib3svNV 778
+#define _gloffset_VertexAttrib4dNV 779
+#define _gloffset_VertexAttrib4dvNV 780
+#define _gloffset_VertexAttrib4fNV 781
+#define _gloffset_VertexAttrib4fvNV 782
+#define _gloffset_VertexAttrib4sNV 783
+#define _gloffset_VertexAttrib4svNV 784
+#define _gloffset_VertexAttrib4ubNV 785
+#define _gloffset_VertexAttrib4ubvNV 786
+#define _gloffset_VertexAttribPointerNV 787
+#define _gloffset_VertexAttribs1dvNV 788
+#define _gloffset_VertexAttribs1fvNV 789
+#define _gloffset_VertexAttribs1svNV 790
+#define _gloffset_VertexAttribs2dvNV 791
+#define _gloffset_VertexAttribs2fvNV 792
+#define _gloffset_VertexAttribs2svNV 793
+#define _gloffset_VertexAttribs3dvNV 794
+#define _gloffset_VertexAttribs3fvNV 795
+#define _gloffset_VertexAttribs3svNV 796
+#define _gloffset_VertexAttribs4dvNV 797
+#define _gloffset_VertexAttribs4fvNV 798
+#define _gloffset_VertexAttribs4svNV 799
+#define _gloffset_VertexAttribs4ubvNV 800
+#define _gloffset_GetTexBumpParameterfvATI 801
+#define _gloffset_GetTexBumpParameterivATI 802
+#define _gloffset_TexBumpParameterfvATI 803
+#define _gloffset_TexBumpParameterivATI 804
+#define _gloffset_AlphaFragmentOp1ATI 805
+#define _gloffset_AlphaFragmentOp2ATI 806
+#define _gloffset_AlphaFragmentOp3ATI 807
+#define _gloffset_BeginFragmentShaderATI 808
+#define _gloffset_BindFragmentShaderATI 809
+#define _gloffset_ColorFragmentOp1ATI 810
+#define _gloffset_ColorFragmentOp2ATI 811
+#define _gloffset_ColorFragmentOp3ATI 812
+#define _gloffset_DeleteFragmentShaderATI 813
+#define _gloffset_EndFragmentShaderATI 814
+#define _gloffset_GenFragmentShadersATI 815
+#define _gloffset_PassTexCoordATI 816
+#define _gloffset_SampleMapATI 817
+#define _gloffset_SetFragmentShaderConstantATI 818
+#define _gloffset_PointParameteriNV 819
+#define _gloffset_PointParameterivNV 820
+#define _gloffset_ActiveStencilFaceEXT 821
+#define _gloffset_BindVertexArrayAPPLE 822
+#define _gloffset_DeleteVertexArraysAPPLE 823
+#define _gloffset_GenVertexArraysAPPLE 824
+#define _gloffset_IsVertexArrayAPPLE 825
+#define _gloffset_GetProgramNamedParameterdvNV 826
+#define _gloffset_GetProgramNamedParameterfvNV 827
+#define _gloffset_ProgramNamedParameter4dNV 828
+#define _gloffset_ProgramNamedParameter4dvNV 829
+#define _gloffset_ProgramNamedParameter4fNV 830
+#define _gloffset_ProgramNamedParameter4fvNV 831
+#define _gloffset_PrimitiveRestartIndexNV 832
+#define _gloffset_PrimitiveRestartNV 833
+#define _gloffset_DepthBoundsEXT 834
+#define _gloffset_BlendEquationSeparateEXT 835
+#define _gloffset_BindFramebufferEXT 836
+#define _gloffset_BindRenderbufferEXT 837
+#define _gloffset_CheckFramebufferStatusEXT 838
+#define _gloffset_DeleteFramebuffersEXT 839
+#define _gloffset_DeleteRenderbuffersEXT 840
+#define _gloffset_FramebufferRenderbufferEXT 841
+#define _gloffset_FramebufferTexture1DEXT 842
+#define _gloffset_FramebufferTexture2DEXT 843
+#define _gloffset_FramebufferTexture3DEXT 844
+#define _gloffset_GenFramebuffersEXT 845
+#define _gloffset_GenRenderbuffersEXT 846
+#define _gloffset_GenerateMipmapEXT 847
+#define _gloffset_GetFramebufferAttachmentParameterivEXT 848
+#define _gloffset_GetRenderbufferParameterivEXT 849
+#define _gloffset_IsFramebufferEXT 850
+#define _gloffset_IsRenderbufferEXT 851
+#define _gloffset_RenderbufferStorageEXT 852
+#define _gloffset_BlitFramebufferEXT 853
+#define _gloffset_BufferParameteriAPPLE 854
+#define _gloffset_FlushMappedBufferRangeAPPLE 855
+#define _gloffset_BindFragDataLocationEXT 856
+#define _gloffset_GetFragDataLocationEXT 857
+#define _gloffset_GetUniformuivEXT 858
+#define _gloffset_GetVertexAttribIivEXT 859
+#define _gloffset_GetVertexAttribIuivEXT 860
+#define _gloffset_Uniform1uiEXT 861
+#define _gloffset_Uniform1uivEXT 862
+#define _gloffset_Uniform2uiEXT 863
+#define _gloffset_Uniform2uivEXT 864
+#define _gloffset_Uniform3uiEXT 865
+#define _gloffset_Uniform3uivEXT 866
+#define _gloffset_Uniform4uiEXT 867
+#define _gloffset_Uniform4uivEXT 868
+#define _gloffset_VertexAttribI1iEXT 869
+#define _gloffset_VertexAttribI1ivEXT 870
+#define _gloffset_VertexAttribI1uiEXT 871
+#define _gloffset_VertexAttribI1uivEXT 872
+#define _gloffset_VertexAttribI2iEXT 873
+#define _gloffset_VertexAttribI2ivEXT 874
+#define _gloffset_VertexAttribI2uiEXT 875
+#define _gloffset_VertexAttribI2uivEXT 876
+#define _gloffset_VertexAttribI3iEXT 877
+#define _gloffset_VertexAttribI3ivEXT 878
+#define _gloffset_VertexAttribI3uiEXT 879
+#define _gloffset_VertexAttribI3uivEXT 880
+#define _gloffset_VertexAttribI4bvEXT 881
+#define _gloffset_VertexAttribI4iEXT 882
+#define _gloffset_VertexAttribI4ivEXT 883
+#define _gloffset_VertexAttribI4svEXT 884
+#define _gloffset_VertexAttribI4ubvEXT 885
+#define _gloffset_VertexAttribI4uiEXT 886
+#define _gloffset_VertexAttribI4uivEXT 887
+#define _gloffset_VertexAttribI4usvEXT 888
+#define _gloffset_VertexAttribIPointerEXT 889
+#define _gloffset_FramebufferTextureLayerEXT 890
+#define _gloffset_ColorMaskIndexedEXT 891
+#define _gloffset_DisableIndexedEXT 892
+#define _gloffset_EnableIndexedEXT 893
+#define _gloffset_GetBooleanIndexedvEXT 894
+#define _gloffset_GetIntegerIndexedvEXT 895
+#define _gloffset_IsEnabledIndexedEXT 896
+#define _gloffset_ClearColorIiEXT 897
+#define _gloffset_ClearColorIuiEXT 898
+#define _gloffset_GetTexParameterIivEXT 899
+#define _gloffset_GetTexParameterIuivEXT 900
+#define _gloffset_TexParameterIivEXT 901
+#define _gloffset_TexParameterIuivEXT 902
+#define _gloffset_BeginConditionalRenderNV 903
+#define _gloffset_EndConditionalRenderNV 904
+#define _gloffset_BeginTransformFeedbackEXT 905
+#define _gloffset_BindBufferBaseEXT 906
+#define _gloffset_BindBufferOffsetEXT 907
+#define _gloffset_BindBufferRangeEXT 908
+#define _gloffset_EndTransformFeedbackEXT 909
+#define _gloffset_GetTransformFeedbackVaryingEXT 910
+#define _gloffset_TransformFeedbackVaryingsEXT 911
+#define _gloffset_ProvokingVertexEXT 912
+#define _gloffset_GetTexParameterPointervAPPLE 913
+#define _gloffset_TextureRangeAPPLE 914
+#define _gloffset_GetObjectParameterivAPPLE 915
+#define _gloffset_ObjectPurgeableAPPLE 916
+#define _gloffset_ObjectUnpurgeableAPPLE 917
+#define _gloffset_ActiveProgramEXT 918
+#define _gloffset_CreateShaderProgramEXT 919
+#define _gloffset_UseShaderProgramEXT 920
+#define _gloffset_TextureBarrierNV 921
+#define _gloffset_StencilFuncSeparateATI 922
+#define _gloffset_ProgramEnvParameters4fvEXT 923
+#define _gloffset_ProgramLocalParameters4fvEXT 924
+#define _gloffset_GetQueryObjecti64vEXT 925
+#define _gloffset_GetQueryObjectui64vEXT 926
+#define _gloffset_EGLImageTargetRenderbufferStorageOES 927
+#define _gloffset_EGLImageTargetTexture2DOES 928
#else /* !_GLAPI_USE_REMAP_TABLE */
-#define driDispatchRemapTable_size 520
+#define driDispatchRemapTable_size 521
extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define AttachShader_remap_index 0
@@ -1184,340 +1185,341 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define IsSync_remap_index 183
#define WaitSync_remap_index 184
#define DrawElementsBaseVertex_remap_index 185
-#define DrawRangeElementsBaseVertex_remap_index 186
-#define MultiDrawElementsBaseVertex_remap_index 187
-#define BlendEquationSeparateiARB_remap_index 188
-#define BlendEquationiARB_remap_index 189
-#define BlendFuncSeparateiARB_remap_index 190
-#define BlendFunciARB_remap_index 191
-#define BindSampler_remap_index 192
-#define DeleteSamplers_remap_index 193
-#define GenSamplers_remap_index 194
-#define GetSamplerParameterIiv_remap_index 195
-#define GetSamplerParameterIuiv_remap_index 196
-#define GetSamplerParameterfv_remap_index 197
-#define GetSamplerParameteriv_remap_index 198
-#define IsSampler_remap_index 199
-#define SamplerParameterIiv_remap_index 200
-#define SamplerParameterIuiv_remap_index 201
-#define SamplerParameterf_remap_index 202
-#define SamplerParameterfv_remap_index 203
-#define SamplerParameteri_remap_index 204
-#define SamplerParameteriv_remap_index 205
-#define BindTransformFeedback_remap_index 206
-#define DeleteTransformFeedbacks_remap_index 207
-#define DrawTransformFeedback_remap_index 208
-#define GenTransformFeedbacks_remap_index 209
-#define IsTransformFeedback_remap_index 210
-#define PauseTransformFeedback_remap_index 211
-#define ResumeTransformFeedback_remap_index 212
-#define ClearDepthf_remap_index 213
-#define DepthRangef_remap_index 214
-#define GetShaderPrecisionFormat_remap_index 215
-#define ReleaseShaderCompiler_remap_index 216
-#define ShaderBinary_remap_index 217
-#define GetGraphicsResetStatusARB_remap_index 218
-#define GetnColorTableARB_remap_index 219
-#define GetnCompressedTexImageARB_remap_index 220
-#define GetnConvolutionFilterARB_remap_index 221
-#define GetnHistogramARB_remap_index 222
-#define GetnMapdvARB_remap_index 223
-#define GetnMapfvARB_remap_index 224
-#define GetnMapivARB_remap_index 225
-#define GetnMinmaxARB_remap_index 226
-#define GetnPixelMapfvARB_remap_index 227
-#define GetnPixelMapuivARB_remap_index 228
-#define GetnPixelMapusvARB_remap_index 229
-#define GetnPolygonStippleARB_remap_index 230
-#define GetnSeparableFilterARB_remap_index 231
-#define GetnTexImageARB_remap_index 232
-#define GetnUniformdvARB_remap_index 233
-#define GetnUniformfvARB_remap_index 234
-#define GetnUniformivARB_remap_index 235
-#define GetnUniformuivARB_remap_index 236
-#define ReadnPixelsARB_remap_index 237
-#define PolygonOffsetEXT_remap_index 238
-#define GetPixelTexGenParameterfvSGIS_remap_index 239
-#define GetPixelTexGenParameterivSGIS_remap_index 240
-#define PixelTexGenParameterfSGIS_remap_index 241
-#define PixelTexGenParameterfvSGIS_remap_index 242
-#define PixelTexGenParameteriSGIS_remap_index 243
-#define PixelTexGenParameterivSGIS_remap_index 244
-#define SampleMaskSGIS_remap_index 245
-#define SamplePatternSGIS_remap_index 246
-#define ColorPointerEXT_remap_index 247
-#define EdgeFlagPointerEXT_remap_index 248
-#define IndexPointerEXT_remap_index 249
-#define NormalPointerEXT_remap_index 250
-#define TexCoordPointerEXT_remap_index 251
-#define VertexPointerEXT_remap_index 252
-#define PointParameterfEXT_remap_index 253
-#define PointParameterfvEXT_remap_index 254
-#define LockArraysEXT_remap_index 255
-#define UnlockArraysEXT_remap_index 256
-#define SecondaryColor3bEXT_remap_index 257
-#define SecondaryColor3bvEXT_remap_index 258
-#define SecondaryColor3dEXT_remap_index 259
-#define SecondaryColor3dvEXT_remap_index 260
-#define SecondaryColor3fEXT_remap_index 261
-#define SecondaryColor3fvEXT_remap_index 262
-#define SecondaryColor3iEXT_remap_index 263
-#define SecondaryColor3ivEXT_remap_index 264
-#define SecondaryColor3sEXT_remap_index 265
-#define SecondaryColor3svEXT_remap_index 266
-#define SecondaryColor3ubEXT_remap_index 267
-#define SecondaryColor3ubvEXT_remap_index 268
-#define SecondaryColor3uiEXT_remap_index 269
-#define SecondaryColor3uivEXT_remap_index 270
-#define SecondaryColor3usEXT_remap_index 271
-#define SecondaryColor3usvEXT_remap_index 272
-#define SecondaryColorPointerEXT_remap_index 273
-#define MultiDrawArraysEXT_remap_index 274
-#define MultiDrawElementsEXT_remap_index 275
-#define FogCoordPointerEXT_remap_index 276
-#define FogCoorddEXT_remap_index 277
-#define FogCoorddvEXT_remap_index 278
-#define FogCoordfEXT_remap_index 279
-#define FogCoordfvEXT_remap_index 280
-#define PixelTexGenSGIX_remap_index 281
-#define BlendFuncSeparateEXT_remap_index 282
-#define FlushVertexArrayRangeNV_remap_index 283
-#define VertexArrayRangeNV_remap_index 284
-#define CombinerInputNV_remap_index 285
-#define CombinerOutputNV_remap_index 286
-#define CombinerParameterfNV_remap_index 287
-#define CombinerParameterfvNV_remap_index 288
-#define CombinerParameteriNV_remap_index 289
-#define CombinerParameterivNV_remap_index 290
-#define FinalCombinerInputNV_remap_index 291
-#define GetCombinerInputParameterfvNV_remap_index 292
-#define GetCombinerInputParameterivNV_remap_index 293
-#define GetCombinerOutputParameterfvNV_remap_index 294
-#define GetCombinerOutputParameterivNV_remap_index 295
-#define GetFinalCombinerInputParameterfvNV_remap_index 296
-#define GetFinalCombinerInputParameterivNV_remap_index 297
-#define ResizeBuffersMESA_remap_index 298
-#define WindowPos2dMESA_remap_index 299
-#define WindowPos2dvMESA_remap_index 300
-#define WindowPos2fMESA_remap_index 301
-#define WindowPos2fvMESA_remap_index 302
-#define WindowPos2iMESA_remap_index 303
-#define WindowPos2ivMESA_remap_index 304
-#define WindowPos2sMESA_remap_index 305
-#define WindowPos2svMESA_remap_index 306
-#define WindowPos3dMESA_remap_index 307
-#define WindowPos3dvMESA_remap_index 308
-#define WindowPos3fMESA_remap_index 309
-#define WindowPos3fvMESA_remap_index 310
-#define WindowPos3iMESA_remap_index 311
-#define WindowPos3ivMESA_remap_index 312
-#define WindowPos3sMESA_remap_index 313
-#define WindowPos3svMESA_remap_index 314
-#define WindowPos4dMESA_remap_index 315
-#define WindowPos4dvMESA_remap_index 316
-#define WindowPos4fMESA_remap_index 317
-#define WindowPos4fvMESA_remap_index 318
-#define WindowPos4iMESA_remap_index 319
-#define WindowPos4ivMESA_remap_index 320
-#define WindowPos4sMESA_remap_index 321
-#define WindowPos4svMESA_remap_index 322
-#define MultiModeDrawArraysIBM_remap_index 323
-#define MultiModeDrawElementsIBM_remap_index 324
-#define DeleteFencesNV_remap_index 325
-#define FinishFenceNV_remap_index 326
-#define GenFencesNV_remap_index 327
-#define GetFenceivNV_remap_index 328
-#define IsFenceNV_remap_index 329
-#define SetFenceNV_remap_index 330
-#define TestFenceNV_remap_index 331
-#define AreProgramsResidentNV_remap_index 332
-#define BindProgramNV_remap_index 333
-#define DeleteProgramsNV_remap_index 334
-#define ExecuteProgramNV_remap_index 335
-#define GenProgramsNV_remap_index 336
-#define GetProgramParameterdvNV_remap_index 337
-#define GetProgramParameterfvNV_remap_index 338
-#define GetProgramStringNV_remap_index 339
-#define GetProgramivNV_remap_index 340
-#define GetTrackMatrixivNV_remap_index 341
-#define GetVertexAttribPointervNV_remap_index 342
-#define GetVertexAttribdvNV_remap_index 343
-#define GetVertexAttribfvNV_remap_index 344
-#define GetVertexAttribivNV_remap_index 345
-#define IsProgramNV_remap_index 346
-#define LoadProgramNV_remap_index 347
-#define ProgramParameters4dvNV_remap_index 348
-#define ProgramParameters4fvNV_remap_index 349
-#define RequestResidentProgramsNV_remap_index 350
-#define TrackMatrixNV_remap_index 351
-#define VertexAttrib1dNV_remap_index 352
-#define VertexAttrib1dvNV_remap_index 353
-#define VertexAttrib1fNV_remap_index 354
-#define VertexAttrib1fvNV_remap_index 355
-#define VertexAttrib1sNV_remap_index 356
-#define VertexAttrib1svNV_remap_index 357
-#define VertexAttrib2dNV_remap_index 358
-#define VertexAttrib2dvNV_remap_index 359
-#define VertexAttrib2fNV_remap_index 360
-#define VertexAttrib2fvNV_remap_index 361
-#define VertexAttrib2sNV_remap_index 362
-#define VertexAttrib2svNV_remap_index 363
-#define VertexAttrib3dNV_remap_index 364
-#define VertexAttrib3dvNV_remap_index 365
-#define VertexAttrib3fNV_remap_index 366
-#define VertexAttrib3fvNV_remap_index 367
-#define VertexAttrib3sNV_remap_index 368
-#define VertexAttrib3svNV_remap_index 369
-#define VertexAttrib4dNV_remap_index 370
-#define VertexAttrib4dvNV_remap_index 371
-#define VertexAttrib4fNV_remap_index 372
-#define VertexAttrib4fvNV_remap_index 373
-#define VertexAttrib4sNV_remap_index 374
-#define VertexAttrib4svNV_remap_index 375
-#define VertexAttrib4ubNV_remap_index 376
-#define VertexAttrib4ubvNV_remap_index 377
-#define VertexAttribPointerNV_remap_index 378
-#define VertexAttribs1dvNV_remap_index 379
-#define VertexAttribs1fvNV_remap_index 380
-#define VertexAttribs1svNV_remap_index 381
-#define VertexAttribs2dvNV_remap_index 382
-#define VertexAttribs2fvNV_remap_index 383
-#define VertexAttribs2svNV_remap_index 384
-#define VertexAttribs3dvNV_remap_index 385
-#define VertexAttribs3fvNV_remap_index 386
-#define VertexAttribs3svNV_remap_index 387
-#define VertexAttribs4dvNV_remap_index 388
-#define VertexAttribs4fvNV_remap_index 389
-#define VertexAttribs4svNV_remap_index 390
-#define VertexAttribs4ubvNV_remap_index 391
-#define GetTexBumpParameterfvATI_remap_index 392
-#define GetTexBumpParameterivATI_remap_index 393
-#define TexBumpParameterfvATI_remap_index 394
-#define TexBumpParameterivATI_remap_index 395
-#define AlphaFragmentOp1ATI_remap_index 396
-#define AlphaFragmentOp2ATI_remap_index 397
-#define AlphaFragmentOp3ATI_remap_index 398
-#define BeginFragmentShaderATI_remap_index 399
-#define BindFragmentShaderATI_remap_index 400
-#define ColorFragmentOp1ATI_remap_index 401
-#define ColorFragmentOp2ATI_remap_index 402
-#define ColorFragmentOp3ATI_remap_index 403
-#define DeleteFragmentShaderATI_remap_index 404
-#define EndFragmentShaderATI_remap_index 405
-#define GenFragmentShadersATI_remap_index 406
-#define PassTexCoordATI_remap_index 407
-#define SampleMapATI_remap_index 408
-#define SetFragmentShaderConstantATI_remap_index 409
-#define PointParameteriNV_remap_index 410
-#define PointParameterivNV_remap_index 411
-#define ActiveStencilFaceEXT_remap_index 412
-#define BindVertexArrayAPPLE_remap_index 413
-#define DeleteVertexArraysAPPLE_remap_index 414
-#define GenVertexArraysAPPLE_remap_index 415
-#define IsVertexArrayAPPLE_remap_index 416
-#define GetProgramNamedParameterdvNV_remap_index 417
-#define GetProgramNamedParameterfvNV_remap_index 418
-#define ProgramNamedParameter4dNV_remap_index 419
-#define ProgramNamedParameter4dvNV_remap_index 420
-#define ProgramNamedParameter4fNV_remap_index 421
-#define ProgramNamedParameter4fvNV_remap_index 422
-#define PrimitiveRestartIndexNV_remap_index 423
-#define PrimitiveRestartNV_remap_index 424
-#define DepthBoundsEXT_remap_index 425
-#define BlendEquationSeparateEXT_remap_index 426
-#define BindFramebufferEXT_remap_index 427
-#define BindRenderbufferEXT_remap_index 428
-#define CheckFramebufferStatusEXT_remap_index 429
-#define DeleteFramebuffersEXT_remap_index 430
-#define DeleteRenderbuffersEXT_remap_index 431
-#define FramebufferRenderbufferEXT_remap_index 432
-#define FramebufferTexture1DEXT_remap_index 433
-#define FramebufferTexture2DEXT_remap_index 434
-#define FramebufferTexture3DEXT_remap_index 435
-#define GenFramebuffersEXT_remap_index 436
-#define GenRenderbuffersEXT_remap_index 437
-#define GenerateMipmapEXT_remap_index 438
-#define GetFramebufferAttachmentParameterivEXT_remap_index 439
-#define GetRenderbufferParameterivEXT_remap_index 440
-#define IsFramebufferEXT_remap_index 441
-#define IsRenderbufferEXT_remap_index 442
-#define RenderbufferStorageEXT_remap_index 443
-#define BlitFramebufferEXT_remap_index 444
-#define BufferParameteriAPPLE_remap_index 445
-#define FlushMappedBufferRangeAPPLE_remap_index 446
-#define BindFragDataLocationEXT_remap_index 447
-#define GetFragDataLocationEXT_remap_index 448
-#define GetUniformuivEXT_remap_index 449
-#define GetVertexAttribIivEXT_remap_index 450
-#define GetVertexAttribIuivEXT_remap_index 451
-#define Uniform1uiEXT_remap_index 452
-#define Uniform1uivEXT_remap_index 453
-#define Uniform2uiEXT_remap_index 454
-#define Uniform2uivEXT_remap_index 455
-#define Uniform3uiEXT_remap_index 456
-#define Uniform3uivEXT_remap_index 457
-#define Uniform4uiEXT_remap_index 458
-#define Uniform4uivEXT_remap_index 459
-#define VertexAttribI1iEXT_remap_index 460
-#define VertexAttribI1ivEXT_remap_index 461
-#define VertexAttribI1uiEXT_remap_index 462
-#define VertexAttribI1uivEXT_remap_index 463
-#define VertexAttribI2iEXT_remap_index 464
-#define VertexAttribI2ivEXT_remap_index 465
-#define VertexAttribI2uiEXT_remap_index 466
-#define VertexAttribI2uivEXT_remap_index 467
-#define VertexAttribI3iEXT_remap_index 468
-#define VertexAttribI3ivEXT_remap_index 469
-#define VertexAttribI3uiEXT_remap_index 470
-#define VertexAttribI3uivEXT_remap_index 471
-#define VertexAttribI4bvEXT_remap_index 472
-#define VertexAttribI4iEXT_remap_index 473
-#define VertexAttribI4ivEXT_remap_index 474
-#define VertexAttribI4svEXT_remap_index 475
-#define VertexAttribI4ubvEXT_remap_index 476
-#define VertexAttribI4uiEXT_remap_index 477
-#define VertexAttribI4uivEXT_remap_index 478
-#define VertexAttribI4usvEXT_remap_index 479
-#define VertexAttribIPointerEXT_remap_index 480
-#define FramebufferTextureLayerEXT_remap_index 481
-#define ColorMaskIndexedEXT_remap_index 482
-#define DisableIndexedEXT_remap_index 483
-#define EnableIndexedEXT_remap_index 484
-#define GetBooleanIndexedvEXT_remap_index 485
-#define GetIntegerIndexedvEXT_remap_index 486
-#define IsEnabledIndexedEXT_remap_index 487
-#define ClearColorIiEXT_remap_index 488
-#define ClearColorIuiEXT_remap_index 489
-#define GetTexParameterIivEXT_remap_index 490
-#define GetTexParameterIuivEXT_remap_index 491
-#define TexParameterIivEXT_remap_index 492
-#define TexParameterIuivEXT_remap_index 493
-#define BeginConditionalRenderNV_remap_index 494
-#define EndConditionalRenderNV_remap_index 495
-#define BeginTransformFeedbackEXT_remap_index 496
-#define BindBufferBaseEXT_remap_index 497
-#define BindBufferOffsetEXT_remap_index 498
-#define BindBufferRangeEXT_remap_index 499
-#define EndTransformFeedbackEXT_remap_index 500
-#define GetTransformFeedbackVaryingEXT_remap_index 501
-#define TransformFeedbackVaryingsEXT_remap_index 502
-#define ProvokingVertexEXT_remap_index 503
-#define GetTexParameterPointervAPPLE_remap_index 504
-#define TextureRangeAPPLE_remap_index 505
-#define GetObjectParameterivAPPLE_remap_index 506
-#define ObjectPurgeableAPPLE_remap_index 507
-#define ObjectUnpurgeableAPPLE_remap_index 508
-#define ActiveProgramEXT_remap_index 509
-#define CreateShaderProgramEXT_remap_index 510
-#define UseShaderProgramEXT_remap_index 511
-#define TextureBarrierNV_remap_index 512
-#define StencilFuncSeparateATI_remap_index 513
-#define ProgramEnvParameters4fvEXT_remap_index 514
-#define ProgramLocalParameters4fvEXT_remap_index 515
-#define GetQueryObjecti64vEXT_remap_index 516
-#define GetQueryObjectui64vEXT_remap_index 517
-#define EGLImageTargetRenderbufferStorageOES_remap_index 518
-#define EGLImageTargetTexture2DOES_remap_index 519
+#define DrawElementsInstancedBaseVertex_remap_index 186
+#define DrawRangeElementsBaseVertex_remap_index 187
+#define MultiDrawElementsBaseVertex_remap_index 188
+#define BlendEquationSeparateiARB_remap_index 189
+#define BlendEquationiARB_remap_index 190
+#define BlendFuncSeparateiARB_remap_index 191
+#define BlendFunciARB_remap_index 192
+#define BindSampler_remap_index 193
+#define DeleteSamplers_remap_index 194
+#define GenSamplers_remap_index 195
+#define GetSamplerParameterIiv_remap_index 196
+#define GetSamplerParameterIuiv_remap_index 197
+#define GetSamplerParameterfv_remap_index 198
+#define GetSamplerParameteriv_remap_index 199
+#define IsSampler_remap_index 200
+#define SamplerParameterIiv_remap_index 201
+#define SamplerParameterIuiv_remap_index 202
+#define SamplerParameterf_remap_index 203
+#define SamplerParameterfv_remap_index 204
+#define SamplerParameteri_remap_index 205
+#define SamplerParameteriv_remap_index 206
+#define BindTransformFeedback_remap_index 207
+#define DeleteTransformFeedbacks_remap_index 208
+#define DrawTransformFeedback_remap_index 209
+#define GenTransformFeedbacks_remap_index 210
+#define IsTransformFeedback_remap_index 211
+#define PauseTransformFeedback_remap_index 212
+#define ResumeTransformFeedback_remap_index 213
+#define ClearDepthf_remap_index 214
+#define DepthRangef_remap_index 215
+#define GetShaderPrecisionFormat_remap_index 216
+#define ReleaseShaderCompiler_remap_index 217
+#define ShaderBinary_remap_index 218
+#define GetGraphicsResetStatusARB_remap_index 219
+#define GetnColorTableARB_remap_index 220
+#define GetnCompressedTexImageARB_remap_index 221
+#define GetnConvolutionFilterARB_remap_index 222
+#define GetnHistogramARB_remap_index 223
+#define GetnMapdvARB_remap_index 224
+#define GetnMapfvARB_remap_index 225
+#define GetnMapivARB_remap_index 226
+#define GetnMinmaxARB_remap_index 227
+#define GetnPixelMapfvARB_remap_index 228
+#define GetnPixelMapuivARB_remap_index 229
+#define GetnPixelMapusvARB_remap_index 230
+#define GetnPolygonStippleARB_remap_index 231
+#define GetnSeparableFilterARB_remap_index 232
+#define GetnTexImageARB_remap_index 233
+#define GetnUniformdvARB_remap_index 234
+#define GetnUniformfvARB_remap_index 235
+#define GetnUniformivARB_remap_index 236
+#define GetnUniformuivARB_remap_index 237
+#define ReadnPixelsARB_remap_index 238
+#define PolygonOffsetEXT_remap_index 239
+#define GetPixelTexGenParameterfvSGIS_remap_index 240
+#define GetPixelTexGenParameterivSGIS_remap_index 241
+#define PixelTexGenParameterfSGIS_remap_index 242
+#define PixelTexGenParameterfvSGIS_remap_index 243
+#define PixelTexGenParameteriSGIS_remap_index 244
+#define PixelTexGenParameterivSGIS_remap_index 245
+#define SampleMaskSGIS_remap_index 246
+#define SamplePatternSGIS_remap_index 247
+#define ColorPointerEXT_remap_index 248
+#define EdgeFlagPointerEXT_remap_index 249
+#define IndexPointerEXT_remap_index 250
+#define NormalPointerEXT_remap_index 251
+#define TexCoordPointerEXT_remap_index 252
+#define VertexPointerEXT_remap_index 253
+#define PointParameterfEXT_remap_index 254
+#define PointParameterfvEXT_remap_index 255
+#define LockArraysEXT_remap_index 256
+#define UnlockArraysEXT_remap_index 257
+#define SecondaryColor3bEXT_remap_index 258
+#define SecondaryColor3bvEXT_remap_index 259
+#define SecondaryColor3dEXT_remap_index 260
+#define SecondaryColor3dvEXT_remap_index 261
+#define SecondaryColor3fEXT_remap_index 262
+#define SecondaryColor3fvEXT_remap_index 263
+#define SecondaryColor3iEXT_remap_index 264
+#define SecondaryColor3ivEXT_remap_index 265
+#define SecondaryColor3sEXT_remap_index 266
+#define SecondaryColor3svEXT_remap_index 267
+#define SecondaryColor3ubEXT_remap_index 268
+#define SecondaryColor3ubvEXT_remap_index 269
+#define SecondaryColor3uiEXT_remap_index 270
+#define SecondaryColor3uivEXT_remap_index 271
+#define SecondaryColor3usEXT_remap_index 272
+#define SecondaryColor3usvEXT_remap_index 273
+#define SecondaryColorPointerEXT_remap_index 274
+#define MultiDrawArraysEXT_remap_index 275
+#define MultiDrawElementsEXT_remap_index 276
+#define FogCoordPointerEXT_remap_index 277
+#define FogCoorddEXT_remap_index 278
+#define FogCoorddvEXT_remap_index 279
+#define FogCoordfEXT_remap_index 280
+#define FogCoordfvEXT_remap_index 281
+#define PixelTexGenSGIX_remap_index 282
+#define BlendFuncSeparateEXT_remap_index 283
+#define FlushVertexArrayRangeNV_remap_index 284
+#define VertexArrayRangeNV_remap_index 285
+#define CombinerInputNV_remap_index 286
+#define CombinerOutputNV_remap_index 287
+#define CombinerParameterfNV_remap_index 288
+#define CombinerParameterfvNV_remap_index 289
+#define CombinerParameteriNV_remap_index 290
+#define CombinerParameterivNV_remap_index 291
+#define FinalCombinerInputNV_remap_index 292
+#define GetCombinerInputParameterfvNV_remap_index 293
+#define GetCombinerInputParameterivNV_remap_index 294
+#define GetCombinerOutputParameterfvNV_remap_index 295
+#define GetCombinerOutputParameterivNV_remap_index 296
+#define GetFinalCombinerInputParameterfvNV_remap_index 297
+#define GetFinalCombinerInputParameterivNV_remap_index 298
+#define ResizeBuffersMESA_remap_index 299
+#define WindowPos2dMESA_remap_index 300
+#define WindowPos2dvMESA_remap_index 301
+#define WindowPos2fMESA_remap_index 302
+#define WindowPos2fvMESA_remap_index 303
+#define WindowPos2iMESA_remap_index 304
+#define WindowPos2ivMESA_remap_index 305
+#define WindowPos2sMESA_remap_index 306
+#define WindowPos2svMESA_remap_index 307
+#define WindowPos3dMESA_remap_index 308
+#define WindowPos3dvMESA_remap_index 309
+#define WindowPos3fMESA_remap_index 310
+#define WindowPos3fvMESA_remap_index 311
+#define WindowPos3iMESA_remap_index 312
+#define WindowPos3ivMESA_remap_index 313
+#define WindowPos3sMESA_remap_index 314
+#define WindowPos3svMESA_remap_index 315
+#define WindowPos4dMESA_remap_index 316
+#define WindowPos4dvMESA_remap_index 317
+#define WindowPos4fMESA_remap_index 318
+#define WindowPos4fvMESA_remap_index 319
+#define WindowPos4iMESA_remap_index 320
+#define WindowPos4ivMESA_remap_index 321
+#define WindowPos4sMESA_remap_index 322
+#define WindowPos4svMESA_remap_index 323
+#define MultiModeDrawArraysIBM_remap_index 324
+#define MultiModeDrawElementsIBM_remap_index 325
+#define DeleteFencesNV_remap_index 326
+#define FinishFenceNV_remap_index 327
+#define GenFencesNV_remap_index 328
+#define GetFenceivNV_remap_index 329
+#define IsFenceNV_remap_index 330
+#define SetFenceNV_remap_index 331
+#define TestFenceNV_remap_index 332
+#define AreProgramsResidentNV_remap_index 333
+#define BindProgramNV_remap_index 334
+#define DeleteProgramsNV_remap_index 335
+#define ExecuteProgramNV_remap_index 336
+#define GenProgramsNV_remap_index 337
+#define GetProgramParameterdvNV_remap_index 338
+#define GetProgramParameterfvNV_remap_index 339
+#define GetProgramStringNV_remap_index 340
+#define GetProgramivNV_remap_index 341
+#define GetTrackMatrixivNV_remap_index 342
+#define GetVertexAttribPointervNV_remap_index 343
+#define GetVertexAttribdvNV_remap_index 344
+#define GetVertexAttribfvNV_remap_index 345
+#define GetVertexAttribivNV_remap_index 346
+#define IsProgramNV_remap_index 347
+#define LoadProgramNV_remap_index 348
+#define ProgramParameters4dvNV_remap_index 349
+#define ProgramParameters4fvNV_remap_index 350
+#define RequestResidentProgramsNV_remap_index 351
+#define TrackMatrixNV_remap_index 352
+#define VertexAttrib1dNV_remap_index 353
+#define VertexAttrib1dvNV_remap_index 354
+#define VertexAttrib1fNV_remap_index 355
+#define VertexAttrib1fvNV_remap_index 356
+#define VertexAttrib1sNV_remap_index 357
+#define VertexAttrib1svNV_remap_index 358
+#define VertexAttrib2dNV_remap_index 359
+#define VertexAttrib2dvNV_remap_index 360
+#define VertexAttrib2fNV_remap_index 361
+#define VertexAttrib2fvNV_remap_index 362
+#define VertexAttrib2sNV_remap_index 363
+#define VertexAttrib2svNV_remap_index 364
+#define VertexAttrib3dNV_remap_index 365
+#define VertexAttrib3dvNV_remap_index 366
+#define VertexAttrib3fNV_remap_index 367
+#define VertexAttrib3fvNV_remap_index 368
+#define VertexAttrib3sNV_remap_index 369
+#define VertexAttrib3svNV_remap_index 370
+#define VertexAttrib4dNV_remap_index 371
+#define VertexAttrib4dvNV_remap_index 372
+#define VertexAttrib4fNV_remap_index 373
+#define VertexAttrib4fvNV_remap_index 374
+#define VertexAttrib4sNV_remap_index 375
+#define VertexAttrib4svNV_remap_index 376
+#define VertexAttrib4ubNV_remap_index 377
+#define VertexAttrib4ubvNV_remap_index 378
+#define VertexAttribPointerNV_remap_index 379
+#define VertexAttribs1dvNV_remap_index 380
+#define VertexAttribs1fvNV_remap_index 381
+#define VertexAttribs1svNV_remap_index 382
+#define VertexAttribs2dvNV_remap_index 383
+#define VertexAttribs2fvNV_remap_index 384
+#define VertexAttribs2svNV_remap_index 385
+#define VertexAttribs3dvNV_remap_index 386
+#define VertexAttribs3fvNV_remap_index 387
+#define VertexAttribs3svNV_remap_index 388
+#define VertexAttribs4dvNV_remap_index 389
+#define VertexAttribs4fvNV_remap_index 390
+#define VertexAttribs4svNV_remap_index 391
+#define VertexAttribs4ubvNV_remap_index 392
+#define GetTexBumpParameterfvATI_remap_index 393
+#define GetTexBumpParameterivATI_remap_index 394
+#define TexBumpParameterfvATI_remap_index 395
+#define TexBumpParameterivATI_remap_index 396
+#define AlphaFragmentOp1ATI_remap_index 397
+#define AlphaFragmentOp2ATI_remap_index 398
+#define AlphaFragmentOp3ATI_remap_index 399
+#define BeginFragmentShaderATI_remap_index 400
+#define BindFragmentShaderATI_remap_index 401
+#define ColorFragmentOp1ATI_remap_index 402
+#define ColorFragmentOp2ATI_remap_index 403
+#define ColorFragmentOp3ATI_remap_index 404
+#define DeleteFragmentShaderATI_remap_index 405
+#define EndFragmentShaderATI_remap_index 406
+#define GenFragmentShadersATI_remap_index 407
+#define PassTexCoordATI_remap_index 408
+#define SampleMapATI_remap_index 409
+#define SetFragmentShaderConstantATI_remap_index 410
+#define PointParameteriNV_remap_index 411
+#define PointParameterivNV_remap_index 412
+#define ActiveStencilFaceEXT_remap_index 413
+#define BindVertexArrayAPPLE_remap_index 414
+#define DeleteVertexArraysAPPLE_remap_index 415
+#define GenVertexArraysAPPLE_remap_index 416
+#define IsVertexArrayAPPLE_remap_index 417
+#define GetProgramNamedParameterdvNV_remap_index 418
+#define GetProgramNamedParameterfvNV_remap_index 419
+#define ProgramNamedParameter4dNV_remap_index 420
+#define ProgramNamedParameter4dvNV_remap_index 421
+#define ProgramNamedParameter4fNV_remap_index 422
+#define ProgramNamedParameter4fvNV_remap_index 423
+#define PrimitiveRestartIndexNV_remap_index 424
+#define PrimitiveRestartNV_remap_index 425
+#define DepthBoundsEXT_remap_index 426
+#define BlendEquationSeparateEXT_remap_index 427
+#define BindFramebufferEXT_remap_index 428
+#define BindRenderbufferEXT_remap_index 429
+#define CheckFramebufferStatusEXT_remap_index 430
+#define DeleteFramebuffersEXT_remap_index 431
+#define DeleteRenderbuffersEXT_remap_index 432
+#define FramebufferRenderbufferEXT_remap_index 433
+#define FramebufferTexture1DEXT_remap_index 434
+#define FramebufferTexture2DEXT_remap_index 435
+#define FramebufferTexture3DEXT_remap_index 436
+#define GenFramebuffersEXT_remap_index 437
+#define GenRenderbuffersEXT_remap_index 438
+#define GenerateMipmapEXT_remap_index 439
+#define GetFramebufferAttachmentParameterivEXT_remap_index 440
+#define GetRenderbufferParameterivEXT_remap_index 441
+#define IsFramebufferEXT_remap_index 442
+#define IsRenderbufferEXT_remap_index 443
+#define RenderbufferStorageEXT_remap_index 444
+#define BlitFramebufferEXT_remap_index 445
+#define BufferParameteriAPPLE_remap_index 446
+#define FlushMappedBufferRangeAPPLE_remap_index 447
+#define BindFragDataLocationEXT_remap_index 448
+#define GetFragDataLocationEXT_remap_index 449
+#define GetUniformuivEXT_remap_index 450
+#define GetVertexAttribIivEXT_remap_index 451
+#define GetVertexAttribIuivEXT_remap_index 452
+#define Uniform1uiEXT_remap_index 453
+#define Uniform1uivEXT_remap_index 454
+#define Uniform2uiEXT_remap_index 455
+#define Uniform2uivEXT_remap_index 456
+#define Uniform3uiEXT_remap_index 457
+#define Uniform3uivEXT_remap_index 458
+#define Uniform4uiEXT_remap_index 459
+#define Uniform4uivEXT_remap_index 460
+#define VertexAttribI1iEXT_remap_index 461
+#define VertexAttribI1ivEXT_remap_index 462
+#define VertexAttribI1uiEXT_remap_index 463
+#define VertexAttribI1uivEXT_remap_index 464
+#define VertexAttribI2iEXT_remap_index 465
+#define VertexAttribI2ivEXT_remap_index 466
+#define VertexAttribI2uiEXT_remap_index 467
+#define VertexAttribI2uivEXT_remap_index 468
+#define VertexAttribI3iEXT_remap_index 469
+#define VertexAttribI3ivEXT_remap_index 470
+#define VertexAttribI3uiEXT_remap_index 471
+#define VertexAttribI3uivEXT_remap_index 472
+#define VertexAttribI4bvEXT_remap_index 473
+#define VertexAttribI4iEXT_remap_index 474
+#define VertexAttribI4ivEXT_remap_index 475
+#define VertexAttribI4svEXT_remap_index 476
+#define VertexAttribI4ubvEXT_remap_index 477
+#define VertexAttribI4uiEXT_remap_index 478
+#define VertexAttribI4uivEXT_remap_index 479
+#define VertexAttribI4usvEXT_remap_index 480
+#define VertexAttribIPointerEXT_remap_index 481
+#define FramebufferTextureLayerEXT_remap_index 482
+#define ColorMaskIndexedEXT_remap_index 483
+#define DisableIndexedEXT_remap_index 484
+#define EnableIndexedEXT_remap_index 485
+#define GetBooleanIndexedvEXT_remap_index 486
+#define GetIntegerIndexedvEXT_remap_index 487
+#define IsEnabledIndexedEXT_remap_index 488
+#define ClearColorIiEXT_remap_index 489
+#define ClearColorIuiEXT_remap_index 490
+#define GetTexParameterIivEXT_remap_index 491
+#define GetTexParameterIuivEXT_remap_index 492
+#define TexParameterIivEXT_remap_index 493
+#define TexParameterIuivEXT_remap_index 494
+#define BeginConditionalRenderNV_remap_index 495
+#define EndConditionalRenderNV_remap_index 496
+#define BeginTransformFeedbackEXT_remap_index 497
+#define BindBufferBaseEXT_remap_index 498
+#define BindBufferOffsetEXT_remap_index 499
+#define BindBufferRangeEXT_remap_index 500
+#define EndTransformFeedbackEXT_remap_index 501
+#define GetTransformFeedbackVaryingEXT_remap_index 502
+#define TransformFeedbackVaryingsEXT_remap_index 503
+#define ProvokingVertexEXT_remap_index 504
+#define GetTexParameterPointervAPPLE_remap_index 505
+#define TextureRangeAPPLE_remap_index 506
+#define GetObjectParameterivAPPLE_remap_index 507
+#define ObjectPurgeableAPPLE_remap_index 508
+#define ObjectUnpurgeableAPPLE_remap_index 509
+#define ActiveProgramEXT_remap_index 510
+#define CreateShaderProgramEXT_remap_index 511
+#define UseShaderProgramEXT_remap_index 512
+#define TextureBarrierNV_remap_index 513
+#define StencilFuncSeparateATI_remap_index 514
+#define ProgramEnvParameters4fvEXT_remap_index 515
+#define ProgramLocalParameters4fvEXT_remap_index 516
+#define GetQueryObjecti64vEXT_remap_index 517
+#define GetQueryObjectui64vEXT_remap_index 518
+#define EGLImageTargetRenderbufferStorageOES_remap_index 519
+#define EGLImageTargetTexture2DOES_remap_index 520
#define _gloffset_AttachShader driDispatchRemapTable[AttachShader_remap_index]
#define _gloffset_CreateProgram driDispatchRemapTable[CreateProgram_remap_index]
@@ -1705,6 +1707,7 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define _gloffset_IsSync driDispatchRemapTable[IsSync_remap_index]
#define _gloffset_WaitSync driDispatchRemapTable[WaitSync_remap_index]
#define _gloffset_DrawElementsBaseVertex driDispatchRemapTable[DrawElementsBaseVertex_remap_index]
+#define _gloffset_DrawElementsInstancedBaseVertex driDispatchRemapTable[DrawElementsInstancedBaseVertex_remap_index]
#define _gloffset_DrawRangeElementsBaseVertex driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index]
#define _gloffset_MultiDrawElementsBaseVertex driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index]
#define _gloffset_BlendEquationSeparateiARB driDispatchRemapTable[BlendEquationSeparateiARB_remap_index]
@@ -8576,6 +8579,17 @@ static INLINE void SET_DrawElementsBaseVertex(struct _glapi_table *disp, void (G
SET_by_offset(disp, _gloffset_DrawElementsBaseVertex, fn);
}
+typedef void (GLAPIENTRYP _glptr_DrawElementsInstancedBaseVertex)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei, GLint);
+#define CALL_DrawElementsInstancedBaseVertex(disp, parameters) \
+ (* GET_DrawElementsInstancedBaseVertex(disp)) parameters
+static INLINE _glptr_DrawElementsInstancedBaseVertex GET_DrawElementsInstancedBaseVertex(struct _glapi_table *disp) {
+ return (_glptr_DrawElementsInstancedBaseVertex) (GET_by_offset(disp, _gloffset_DrawElementsInstancedBaseVertex));
+}
+
+static INLINE void SET_DrawElementsInstancedBaseVertex(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei, GLint)) {
+ SET_by_offset(disp, _gloffset_DrawElementsInstancedBaseVertex, fn);
+}
+
typedef void (GLAPIENTRYP _glptr_DrawRangeElementsBaseVertex)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *, GLint);
#define CALL_DrawRangeElementsBaseVertex(disp, parameters) \
(* GET_DrawRangeElementsBaseVertex(disp)) parameters
diff --git a/src/mesa/main/queryobj.c b/src/mesa/main/queryobj.c
index e9cf5f64d08..f0a9a7922b2 100644
--- a/src/mesa/main/queryobj.c
+++ b/src/mesa/main/queryobj.c
@@ -173,7 +173,7 @@ get_query_binding_point(struct gl_context *ctx, GLenum target)
}
-void GLAPIENTRY
+static void GLAPIENTRY
_mesa_GenQueriesARB(GLsizei n, GLuint *ids)
{
GLuint first;
@@ -212,7 +212,7 @@ _mesa_GenQueriesARB(GLsizei n, GLuint *ids)
}
-void GLAPIENTRY
+static void GLAPIENTRY
_mesa_DeleteQueriesARB(GLsizei n, const GLuint *ids)
{
GLint i;
@@ -248,7 +248,7 @@ _mesa_DeleteQueriesARB(GLsizei n, const GLuint *ids)
}
-GLboolean GLAPIENTRY
+static GLboolean GLAPIENTRY
_mesa_IsQueryARB(GLuint id)
{
GET_CURRENT_CONTEXT(ctx);
@@ -352,7 +352,7 @@ _mesa_EndQueryARB(GLenum target)
}
-void GLAPIENTRY
+static void GLAPIENTRY
_mesa_GetQueryivARB(GLenum target, GLenum pname, GLint *params)
{
struct gl_query_object *q, **bindpt;
@@ -386,7 +386,7 @@ _mesa_GetQueryivARB(GLenum target, GLenum pname, GLint *params)
}
-void GLAPIENTRY
+static void GLAPIENTRY
_mesa_GetQueryObjectivARB(GLuint id, GLenum pname, GLint *params)
{
struct gl_query_object *q = NULL;
@@ -437,7 +437,7 @@ _mesa_GetQueryObjectivARB(GLuint id, GLenum pname, GLint *params)
}
-void GLAPIENTRY
+static void GLAPIENTRY
_mesa_GetQueryObjectuivARB(GLuint id, GLenum pname, GLuint *params)
{
struct gl_query_object *q = NULL;
diff --git a/src/mesa/main/queryobj.h b/src/mesa/main/queryobj.h
index e4ad96ba5a3..16962e55a1b 100644
--- a/src/mesa/main/queryobj.h
+++ b/src/mesa/main/queryobj.h
@@ -42,24 +42,6 @@ _mesa_lookup_query_object(struct gl_context *ctx, GLuint id)
}
-extern void GLAPIENTRY
-_mesa_GenQueriesARB(GLsizei n, GLuint *ids);
-
-extern void GLAPIENTRY
-_mesa_DeleteQueriesARB(GLsizei n, const GLuint *ids);
-
-extern GLboolean GLAPIENTRY
-_mesa_IsQueryARB(GLuint id);
-
-extern void GLAPIENTRY
-_mesa_GetQueryivARB(GLenum target, GLenum pname, GLint *params);
-
-extern void GLAPIENTRY
-_mesa_GetQueryObjectivARB(GLuint id, GLenum pname, GLint *params);
-
-extern void GLAPIENTRY
-_mesa_GetQueryObjectuivARB(GLuint id, GLenum pname, GLuint *params);
-
extern void
_mesa_init_query_object_functions(struct dd_function_table *driver);
diff --git a/src/mesa/main/remap_helper.h b/src/mesa/main/remap_helper.h
index fdb86d3e38a..dca6b498735 100644
--- a/src/mesa/main/remap_helper.h
+++ b/src/mesa/main/remap_helper.h
@@ -70,4858 +70,4862 @@ static const char _mesa_function_pool[] =
"\0"
"glLoadIdentity\0"
"\0"
- /* _mesa_function_pool[216]: GetCombinerOutputParameterfvNV (will be remapped) */
- "iiip\0"
- "glGetCombinerOutputParameterfvNV\0"
- "\0"
- /* _mesa_function_pool[255]: SampleCoverageARB (will be remapped) */
+ /* _mesa_function_pool[216]: SampleCoverageARB (will be remapped) */
"fi\0"
"glSampleCoverage\0"
"glSampleCoverageARB\0"
"\0"
- /* _mesa_function_pool[296]: ConvolutionFilter1D (offset 348) */
+ /* _mesa_function_pool[257]: ConvolutionFilter1D (offset 348) */
"iiiiip\0"
"glConvolutionFilter1D\0"
"glConvolutionFilter1DEXT\0"
"\0"
- /* _mesa_function_pool[351]: BeginQueryARB (will be remapped) */
+ /* _mesa_function_pool[312]: BeginQueryARB (will be remapped) */
"ii\0"
"glBeginQuery\0"
"glBeginQueryARB\0"
"\0"
- /* _mesa_function_pool[384]: RasterPos3dv (offset 71) */
+ /* _mesa_function_pool[345]: RasterPos3dv (offset 71) */
"p\0"
"glRasterPos3dv\0"
"\0"
- /* _mesa_function_pool[402]: PointParameteriNV (will be remapped) */
+ /* _mesa_function_pool[363]: PointParameteriNV (will be remapped) */
"ii\0"
"glPointParameteri\0"
"glPointParameteriNV\0"
"\0"
- /* _mesa_function_pool[444]: GetProgramiv (will be remapped) */
+ /* _mesa_function_pool[405]: GetProgramiv (will be remapped) */
"iip\0"
"glGetProgramiv\0"
"\0"
- /* _mesa_function_pool[464]: MultiTexCoord3sARB (offset 398) */
+ /* _mesa_function_pool[425]: MultiTexCoord3sARB (offset 398) */
"iiii\0"
"glMultiTexCoord3s\0"
"glMultiTexCoord3sARB\0"
"\0"
- /* _mesa_function_pool[509]: SecondaryColor3iEXT (will be remapped) */
+ /* _mesa_function_pool[470]: SecondaryColor3iEXT (will be remapped) */
"iii\0"
"glSecondaryColor3i\0"
"glSecondaryColor3iEXT\0"
"\0"
- /* _mesa_function_pool[555]: WindowPos3fMESA (will be remapped) */
+ /* _mesa_function_pool[516]: WindowPos3fMESA (will be remapped) */
"fff\0"
"glWindowPos3f\0"
"glWindowPos3fARB\0"
"glWindowPos3fMESA\0"
"\0"
- /* _mesa_function_pool[609]: TexCoord1iv (offset 99) */
+ /* _mesa_function_pool[570]: TexCoord1iv (offset 99) */
"p\0"
"glTexCoord1iv\0"
"\0"
- /* _mesa_function_pool[626]: TexCoord4sv (offset 125) */
+ /* _mesa_function_pool[587]: TexCoord4sv (offset 125) */
"p\0"
"glTexCoord4sv\0"
"\0"
- /* _mesa_function_pool[643]: RasterPos4s (offset 84) */
+ /* _mesa_function_pool[604]: RasterPos4s (offset 84) */
"iiii\0"
"glRasterPos4s\0"
"\0"
- /* _mesa_function_pool[663]: PixelTexGenParameterfvSGIS (will be remapped) */
+ /* _mesa_function_pool[624]: PixelTexGenParameterfvSGIS (will be remapped) */
"ip\0"
"glPixelTexGenParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[696]: ActiveTextureARB (offset 374) */
+ /* _mesa_function_pool[657]: ActiveTextureARB (offset 374) */
"i\0"
"glActiveTexture\0"
"glActiveTextureARB\0"
"\0"
- /* _mesa_function_pool[734]: BlitFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[695]: BlitFramebufferEXT (will be remapped) */
"iiiiiiiiii\0"
"glBlitFramebuffer\0"
"glBlitFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[785]: TexCoord1f (offset 96) */
+ /* _mesa_function_pool[746]: TexCoord1f (offset 96) */
"f\0"
"glTexCoord1f\0"
"\0"
- /* _mesa_function_pool[801]: TexCoord1d (offset 94) */
+ /* _mesa_function_pool[762]: TexCoord1d (offset 94) */
"d\0"
"glTexCoord1d\0"
"\0"
- /* _mesa_function_pool[817]: VertexAttrib4ubvNV (will be remapped) */
+ /* _mesa_function_pool[778]: VertexAttrib4ubvNV (will be remapped) */
"ip\0"
"glVertexAttrib4ubvNV\0"
"\0"
- /* _mesa_function_pool[842]: TexCoord1i (offset 98) */
+ /* _mesa_function_pool[803]: TexCoord1i (offset 98) */
"i\0"
"glTexCoord1i\0"
"\0"
- /* _mesa_function_pool[858]: GetProgramNamedParameterdvNV (will be remapped) */
+ /* _mesa_function_pool[819]: GetProgramNamedParameterdvNV (will be remapped) */
"iipp\0"
"glGetProgramNamedParameterdvNV\0"
"\0"
- /* _mesa_function_pool[895]: Histogram (offset 367) */
+ /* _mesa_function_pool[856]: Histogram (offset 367) */
"iiii\0"
"glHistogram\0"
"glHistogramEXT\0"
"\0"
- /* _mesa_function_pool[928]: TexCoord1s (offset 100) */
+ /* _mesa_function_pool[889]: TexCoord1s (offset 100) */
"i\0"
"glTexCoord1s\0"
"\0"
- /* _mesa_function_pool[944]: GetMapfv (offset 267) */
+ /* _mesa_function_pool[905]: GetMapfv (offset 267) */
"iip\0"
"glGetMapfv\0"
"\0"
- /* _mesa_function_pool[960]: EvalCoord1f (offset 230) */
+ /* _mesa_function_pool[921]: EvalCoord1f (offset 230) */
"f\0"
"glEvalCoord1f\0"
"\0"
- /* _mesa_function_pool[977]: FramebufferTexture (will be remapped) */
+ /* _mesa_function_pool[938]: FramebufferTexture (will be remapped) */
"iiii\0"
"glFramebufferTexture\0"
"\0"
- /* _mesa_function_pool[1004]: GetGraphicsResetStatusARB (will be remapped) */
+ /* _mesa_function_pool[965]: GetGraphicsResetStatusARB (will be remapped) */
"\0"
"glGetGraphicsResetStatusARB\0"
"\0"
- /* _mesa_function_pool[1034]: TexImage4DSGIS (dynamic) */
+ /* _mesa_function_pool[995]: TexImage4DSGIS (dynamic) */
"iiiiiiiiiip\0"
"glTexImage4DSGIS\0"
"\0"
- /* _mesa_function_pool[1064]: PolygonStipple (offset 175) */
+ /* _mesa_function_pool[1025]: PolygonStipple (offset 175) */
"p\0"
"glPolygonStipple\0"
"\0"
- /* _mesa_function_pool[1084]: WindowPos2dvMESA (will be remapped) */
+ /* _mesa_function_pool[1045]: WindowPos2dvMESA (will be remapped) */
"p\0"
"glWindowPos2dv\0"
"glWindowPos2dvARB\0"
"glWindowPos2dvMESA\0"
"\0"
- /* _mesa_function_pool[1139]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[1100]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[1183]: BlendEquationSeparateEXT (will be remapped) */
+ /* _mesa_function_pool[1144]: BlendEquationSeparateEXT (will be remapped) */
"ii\0"
"glBlendEquationSeparate\0"
"glBlendEquationSeparateEXT\0"
"glBlendEquationSeparateATI\0"
"\0"
- /* _mesa_function_pool[1265]: ListParameterfSGIX (dynamic) */
+ /* _mesa_function_pool[1226]: ListParameterfSGIX (dynamic) */
"iif\0"
"glListParameterfSGIX\0"
"\0"
- /* _mesa_function_pool[1291]: SecondaryColor3bEXT (will be remapped) */
+ /* _mesa_function_pool[1252]: SecondaryColor3bEXT (will be remapped) */
"iii\0"
"glSecondaryColor3b\0"
"glSecondaryColor3bEXT\0"
"\0"
- /* _mesa_function_pool[1337]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */
+ /* _mesa_function_pool[1298]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */
"pppp\0"
"glTexCoord4fColor4fNormal3fVertex4fvSUN\0"
"\0"
- /* _mesa_function_pool[1383]: GetnPolygonStippleARB (will be remapped) */
+ /* _mesa_function_pool[1344]: GetnPolygonStippleARB (will be remapped) */
"ip\0"
"glGetnPolygonStippleARB\0"
"\0"
- /* _mesa_function_pool[1411]: GetPixelMapfv (offset 271) */
+ /* _mesa_function_pool[1372]: GetPixelMapfv (offset 271) */
"ip\0"
"glGetPixelMapfv\0"
"\0"
- /* _mesa_function_pool[1431]: Color3uiv (offset 22) */
+ /* _mesa_function_pool[1392]: Color3uiv (offset 22) */
"p\0"
"glColor3uiv\0"
"\0"
- /* _mesa_function_pool[1446]: IsEnabled (offset 286) */
+ /* _mesa_function_pool[1407]: IsEnabled (offset 286) */
"i\0"
"glIsEnabled\0"
"\0"
- /* _mesa_function_pool[1461]: VertexAttrib4svNV (will be remapped) */
+ /* _mesa_function_pool[1422]: VertexAttrib4svNV (will be remapped) */
"ip\0"
"glVertexAttrib4svNV\0"
"\0"
- /* _mesa_function_pool[1485]: EvalCoord2fv (offset 235) */
+ /* _mesa_function_pool[1446]: EvalCoord2fv (offset 235) */
"p\0"
"glEvalCoord2fv\0"
"\0"
- /* _mesa_function_pool[1503]: GetBufferSubDataARB (will be remapped) */
+ /* _mesa_function_pool[1464]: GetBufferSubDataARB (will be remapped) */
"iiip\0"
"glGetBufferSubData\0"
"glGetBufferSubDataARB\0"
"\0"
- /* _mesa_function_pool[1550]: BufferSubDataARB (will be remapped) */
+ /* _mesa_function_pool[1511]: BufferSubDataARB (will be remapped) */
"iiip\0"
"glBufferSubData\0"
"glBufferSubDataARB\0"
"\0"
- /* _mesa_function_pool[1591]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[1552]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */
"ppp\0"
"glTexCoord2fColor4ubVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[1629]: AttachShader (will be remapped) */
+ /* _mesa_function_pool[1590]: AttachShader (will be remapped) */
"ii\0"
"glAttachShader\0"
"\0"
- /* _mesa_function_pool[1648]: GetCombinerInputParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[1609]: GetCombinerInputParameterfvNV (will be remapped) */
"iiiip\0"
"glGetCombinerInputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[1687]: VertexAttrib2fARB (will be remapped) */
+ /* _mesa_function_pool[1648]: VertexAttrib2fARB (will be remapped) */
"iff\0"
"glVertexAttrib2f\0"
"glVertexAttrib2fARB\0"
"\0"
- /* _mesa_function_pool[1729]: GetDebugLogLengthMESA (dynamic) */
+ /* _mesa_function_pool[1690]: GetDebugLogLengthMESA (dynamic) */
"iii\0"
"glGetDebugLogLengthMESA\0"
"\0"
- /* _mesa_function_pool[1758]: GetMapiv (offset 268) */
+ /* _mesa_function_pool[1719]: GetMapiv (offset 268) */
"iip\0"
"glGetMapiv\0"
"\0"
- /* _mesa_function_pool[1774]: VertexAttrib3fARB (will be remapped) */
+ /* _mesa_function_pool[1735]: VertexAttrib3fARB (will be remapped) */
"ifff\0"
"glVertexAttrib3f\0"
"glVertexAttrib3fARB\0"
"\0"
- /* _mesa_function_pool[1817]: Indexubv (offset 316) */
+ /* _mesa_function_pool[1778]: Indexubv (offset 316) */
"p\0"
"glIndexubv\0"
"\0"
- /* _mesa_function_pool[1831]: GetQueryivARB (will be remapped) */
+ /* _mesa_function_pool[1792]: GetQueryivARB (will be remapped) */
"iip\0"
"glGetQueryiv\0"
"glGetQueryivARB\0"
"\0"
- /* _mesa_function_pool[1865]: TexImage3D (offset 371) */
+ /* _mesa_function_pool[1826]: TexImage3D (offset 371) */
"iiiiiiiiip\0"
"glTexImage3D\0"
"glTexImage3DEXT\0"
"\0"
- /* _mesa_function_pool[1906]: BindFragDataLocationEXT (will be remapped) */
+ /* _mesa_function_pool[1867]: BindFragDataLocationEXT (will be remapped) */
"iip\0"
"glBindFragDataLocationEXT\0"
"glBindFragDataLocation\0"
"\0"
- /* _mesa_function_pool[1960]: ReplacementCodeuiVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[1921]: ReplacementCodeuiVertex3fvSUN (dynamic) */
"pp\0"
"glReplacementCodeuiVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[1996]: EdgeFlagPointer (offset 312) */
+ /* _mesa_function_pool[1957]: EdgeFlagPointer (offset 312) */
"ip\0"
"glEdgeFlagPointer\0"
"\0"
- /* _mesa_function_pool[2018]: Color3ubv (offset 20) */
+ /* _mesa_function_pool[1979]: Color3ubv (offset 20) */
"p\0"
"glColor3ubv\0"
"\0"
- /* _mesa_function_pool[2033]: GetQueryObjectivARB (will be remapped) */
+ /* _mesa_function_pool[1994]: GetQueryObjectivARB (will be remapped) */
"iip\0"
"glGetQueryObjectiv\0"
"glGetQueryObjectivARB\0"
"\0"
- /* _mesa_function_pool[2079]: Vertex3dv (offset 135) */
+ /* _mesa_function_pool[2040]: Vertex3dv (offset 135) */
"p\0"
"glVertex3dv\0"
"\0"
- /* _mesa_function_pool[2094]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[2055]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiTexCoord2fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[2141]: CompressedTexSubImage2DARB (will be remapped) */
+ /* _mesa_function_pool[2102]: CompressedTexSubImage2DARB (will be remapped) */
"iiiiiiiip\0"
"glCompressedTexSubImage2D\0"
"glCompressedTexSubImage2DARB\0"
"\0"
- /* _mesa_function_pool[2207]: CombinerOutputNV (will be remapped) */
+ /* _mesa_function_pool[2168]: CombinerOutputNV (will be remapped) */
"iiiiiiiiii\0"
"glCombinerOutputNV\0"
"\0"
- /* _mesa_function_pool[2238]: VertexAttribs3fvNV (will be remapped) */
+ /* _mesa_function_pool[2199]: VertexAttribs3fvNV (will be remapped) */
"iip\0"
"glVertexAttribs3fvNV\0"
"\0"
- /* _mesa_function_pool[2264]: GetnMapivARB (will be remapped) */
+ /* _mesa_function_pool[2225]: GetnMapivARB (will be remapped) */
"iiip\0"
"glGetnMapivARB\0"
"\0"
- /* _mesa_function_pool[2285]: Uniform2fARB (will be remapped) */
+ /* _mesa_function_pool[2246]: Uniform2fARB (will be remapped) */
"iff\0"
"glUniform2f\0"
"glUniform2fARB\0"
"\0"
- /* _mesa_function_pool[2317]: LightModeliv (offset 166) */
+ /* _mesa_function_pool[2278]: LightModeliv (offset 166) */
"ip\0"
"glLightModeliv\0"
"\0"
- /* _mesa_function_pool[2336]: VertexAttrib1svARB (will be remapped) */
+ /* _mesa_function_pool[2297]: VertexAttrib1svARB (will be remapped) */
"ip\0"
"glVertexAttrib1sv\0"
"glVertexAttrib1svARB\0"
"\0"
- /* _mesa_function_pool[2379]: VertexAttribs1dvNV (will be remapped) */
+ /* _mesa_function_pool[2340]: VertexAttribs1dvNV (will be remapped) */
"iip\0"
"glVertexAttribs1dvNV\0"
"\0"
- /* _mesa_function_pool[2405]: Uniform2ivARB (will be remapped) */
+ /* _mesa_function_pool[2366]: Uniform2ivARB (will be remapped) */
"iip\0"
"glUniform2iv\0"
"glUniform2ivARB\0"
"\0"
- /* _mesa_function_pool[2439]: GetImageTransformParameterfvHP (dynamic) */
+ /* _mesa_function_pool[2400]: GetImageTransformParameterfvHP (dynamic) */
"iip\0"
"glGetImageTransformParameterfvHP\0"
"\0"
- /* _mesa_function_pool[2477]: Normal3bv (offset 53) */
+ /* _mesa_function_pool[2438]: Normal3bv (offset 53) */
"p\0"
"glNormal3bv\0"
"\0"
- /* _mesa_function_pool[2492]: TexGeniv (offset 193) */
+ /* _mesa_function_pool[2453]: TexGeniv (offset 193) */
"iip\0"
"glTexGeniv\0"
"\0"
- /* _mesa_function_pool[2508]: WeightubvARB (dynamic) */
+ /* _mesa_function_pool[2469]: WeightubvARB (dynamic) */
"ip\0"
"glWeightubvARB\0"
"\0"
- /* _mesa_function_pool[2527]: VertexAttrib1fvNV (will be remapped) */
+ /* _mesa_function_pool[2488]: VertexAttrib1fvNV (will be remapped) */
"ip\0"
"glVertexAttrib1fvNV\0"
"\0"
- /* _mesa_function_pool[2551]: Vertex3iv (offset 139) */
+ /* _mesa_function_pool[2512]: Vertex3iv (offset 139) */
"p\0"
"glVertex3iv\0"
"\0"
- /* _mesa_function_pool[2566]: CopyConvolutionFilter1D (offset 354) */
+ /* _mesa_function_pool[2527]: CopyConvolutionFilter1D (offset 354) */
"iiiii\0"
"glCopyConvolutionFilter1D\0"
"glCopyConvolutionFilter1DEXT\0"
"\0"
- /* _mesa_function_pool[2628]: VertexAttribI1uiEXT (will be remapped) */
+ /* _mesa_function_pool[2589]: VertexAttribI1uiEXT (will be remapped) */
"ii\0"
"glVertexAttribI1uiEXT\0"
"glVertexAttribI1ui\0"
"\0"
- /* _mesa_function_pool[2673]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[2634]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */
"iffffff\0"
"glReplacementCodeuiNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[2721]: DeleteSync (will be remapped) */
+ /* _mesa_function_pool[2682]: DeleteSync (will be remapped) */
"i\0"
"glDeleteSync\0"
"\0"
- /* _mesa_function_pool[2737]: FragmentMaterialfvSGIX (dynamic) */
+ /* _mesa_function_pool[2698]: FragmentMaterialfvSGIX (dynamic) */
"iip\0"
"glFragmentMaterialfvSGIX\0"
"\0"
- /* _mesa_function_pool[2767]: BlendColor (offset 336) */
+ /* _mesa_function_pool[2728]: BlendColor (offset 336) */
"ffff\0"
"glBlendColor\0"
"glBlendColorEXT\0"
"\0"
- /* _mesa_function_pool[2802]: UniformMatrix4fvARB (will be remapped) */
+ /* _mesa_function_pool[2763]: UniformMatrix4fvARB (will be remapped) */
"iiip\0"
"glUniformMatrix4fv\0"
"glUniformMatrix4fvARB\0"
"\0"
- /* _mesa_function_pool[2849]: DeleteVertexArraysAPPLE (will be remapped) */
+ /* _mesa_function_pool[2810]: DeleteVertexArraysAPPLE (will be remapped) */
"ip\0"
"glDeleteVertexArrays\0"
"glDeleteVertexArraysAPPLE\0"
"\0"
- /* _mesa_function_pool[2900]: TexBuffer (will be remapped) */
+ /* _mesa_function_pool[2861]: TexBuffer (will be remapped) */
"iii\0"
"glTexBuffer\0"
"\0"
- /* _mesa_function_pool[2917]: ReadInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[2878]: ReadInstrumentsSGIX (dynamic) */
"i\0"
"glReadInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[2942]: CallLists (offset 3) */
+ /* _mesa_function_pool[2903]: CallLists (offset 3) */
"iip\0"
"glCallLists\0"
"\0"
- /* _mesa_function_pool[2959]: DeformationMap3dSGIX (dynamic) */
- "iddiiddiiddiip\0"
- "glDeformationMap3dSGIX\0"
- "\0"
- /* _mesa_function_pool[2998]: UniformMatrix2x4fv (will be remapped) */
+ /* _mesa_function_pool[2920]: UniformMatrix2x4fv (will be remapped) */
"iiip\0"
"glUniformMatrix2x4fv\0"
"\0"
- /* _mesa_function_pool[3025]: ReadnPixelsARB (will be remapped) */
+ /* _mesa_function_pool[2947]: ReadnPixelsARB (will be remapped) */
"iiiiiiip\0"
"glReadnPixelsARB\0"
"\0"
- /* _mesa_function_pool[3052]: Color4ubVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[2974]: Color4ubVertex3fvSUN (dynamic) */
"pp\0"
"glColor4ubVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[3079]: Normal3iv (offset 59) */
+ /* _mesa_function_pool[3001]: Normal3iv (offset 59) */
"p\0"
"glNormal3iv\0"
"\0"
- /* _mesa_function_pool[3094]: PassThrough (offset 199) */
+ /* _mesa_function_pool[3016]: PassThrough (offset 199) */
"f\0"
"glPassThrough\0"
"\0"
- /* _mesa_function_pool[3111]: GetnPixelMapusvARB (will be remapped) */
+ /* _mesa_function_pool[3033]: GetnPixelMapusvARB (will be remapped) */
"iip\0"
"glGetnPixelMapusvARB\0"
"\0"
- /* _mesa_function_pool[3137]: TexParameterIivEXT (will be remapped) */
+ /* _mesa_function_pool[3059]: TexParameterIivEXT (will be remapped) */
"iip\0"
"glTexParameterIivEXT\0"
"glTexParameterIiv\0"
"\0"
- /* _mesa_function_pool[3181]: FramebufferTextureLayerEXT (will be remapped) */
+ /* _mesa_function_pool[3103]: FramebufferTextureLayerEXT (will be remapped) */
"iiiii\0"
"glFramebufferTextureLayer\0"
"glFramebufferTextureLayerEXT\0"
"\0"
- /* _mesa_function_pool[3243]: GetListParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[3165]: GetListParameterfvSGIX (dynamic) */
"iip\0"
"glGetListParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[3273]: Viewport (offset 305) */
+ /* _mesa_function_pool[3195]: Viewport (offset 305) */
"iiii\0"
"glViewport\0"
"\0"
- /* _mesa_function_pool[3290]: VertexAttrib4NusvARB (will be remapped) */
+ /* _mesa_function_pool[3212]: VertexAttrib4NusvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nusv\0"
"glVertexAttrib4NusvARB\0"
"\0"
- /* _mesa_function_pool[3337]: WindowPos4svMESA (will be remapped) */
+ /* _mesa_function_pool[3259]: WindowPos4svMESA (will be remapped) */
"p\0"
"glWindowPos4svMESA\0"
"\0"
- /* _mesa_function_pool[3359]: CreateProgramObjectARB (will be remapped) */
+ /* _mesa_function_pool[3281]: CreateProgramObjectARB (will be remapped) */
"\0"
"glCreateProgramObjectARB\0"
"\0"
- /* _mesa_function_pool[3386]: DeleteTransformFeedbacks (will be remapped) */
+ /* _mesa_function_pool[3308]: DeleteTransformFeedbacks (will be remapped) */
"ip\0"
"glDeleteTransformFeedbacks\0"
"\0"
- /* _mesa_function_pool[3417]: UniformMatrix4x3fv (will be remapped) */
+ /* _mesa_function_pool[3339]: UniformMatrix4x3fv (will be remapped) */
"iiip\0"
"glUniformMatrix4x3fv\0"
"\0"
- /* _mesa_function_pool[3444]: PrioritizeTextures (offset 331) */
+ /* _mesa_function_pool[3366]: PrioritizeTextures (offset 331) */
"ipp\0"
"glPrioritizeTextures\0"
"glPrioritizeTexturesEXT\0"
"\0"
- /* _mesa_function_pool[3494]: VertexAttribI3uiEXT (will be remapped) */
+ /* _mesa_function_pool[3416]: VertexAttribI3uiEXT (will be remapped) */
"iiii\0"
"glVertexAttribI3uiEXT\0"
"glVertexAttribI3ui\0"
"\0"
- /* _mesa_function_pool[3541]: AsyncMarkerSGIX (dynamic) */
+ /* _mesa_function_pool[3463]: AsyncMarkerSGIX (dynamic) */
"i\0"
"glAsyncMarkerSGIX\0"
"\0"
- /* _mesa_function_pool[3562]: GlobalAlphaFactorubSUN (dynamic) */
+ /* _mesa_function_pool[3484]: GlobalAlphaFactorubSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorubSUN\0"
"\0"
- /* _mesa_function_pool[3590]: ClearColorIuiEXT (will be remapped) */
+ /* _mesa_function_pool[3512]: ClearColorIuiEXT (will be remapped) */
"iiii\0"
"glClearColorIuiEXT\0"
"\0"
- /* _mesa_function_pool[3615]: ClearDebugLogMESA (dynamic) */
+ /* _mesa_function_pool[3537]: ClearDebugLogMESA (dynamic) */
"iii\0"
"glClearDebugLogMESA\0"
"\0"
- /* _mesa_function_pool[3640]: Uniform4uiEXT (will be remapped) */
+ /* _mesa_function_pool[3562]: Uniform4uiEXT (will be remapped) */
"iiiii\0"
"glUniform4uiEXT\0"
"glUniform4ui\0"
"\0"
- /* _mesa_function_pool[3676]: ResetHistogram (offset 369) */
+ /* _mesa_function_pool[3598]: ResetHistogram (offset 369) */
"i\0"
"glResetHistogram\0"
"glResetHistogramEXT\0"
"\0"
- /* _mesa_function_pool[3716]: GetProgramNamedParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[3638]: GetProgramNamedParameterfvNV (will be remapped) */
"iipp\0"
"glGetProgramNamedParameterfvNV\0"
"\0"
- /* _mesa_function_pool[3753]: PointParameterfEXT (will be remapped) */
+ /* _mesa_function_pool[3675]: PointParameterfEXT (will be remapped) */
"if\0"
"glPointParameterf\0"
"glPointParameterfARB\0"
"glPointParameterfEXT\0"
"glPointParameterfSGIS\0"
"\0"
- /* _mesa_function_pool[3839]: LoadIdentityDeformationMapSGIX (dynamic) */
+ /* _mesa_function_pool[3761]: LoadIdentityDeformationMapSGIX (dynamic) */
"i\0"
"glLoadIdentityDeformationMapSGIX\0"
"\0"
- /* _mesa_function_pool[3875]: GenFencesNV (will be remapped) */
+ /* _mesa_function_pool[3797]: GenFencesNV (will be remapped) */
"ip\0"
"glGenFencesNV\0"
"\0"
- /* _mesa_function_pool[3893]: ImageTransformParameterfHP (dynamic) */
+ /* _mesa_function_pool[3815]: ImageTransformParameterfHP (dynamic) */
"iif\0"
"glImageTransformParameterfHP\0"
"\0"
- /* _mesa_function_pool[3927]: MatrixIndexusvARB (dynamic) */
+ /* _mesa_function_pool[3849]: MatrixIndexusvARB (dynamic) */
"ip\0"
"glMatrixIndexusvARB\0"
"\0"
- /* _mesa_function_pool[3951]: DrawElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[3873]: DrawElementsBaseVertex (will be remapped) */
"iiipi\0"
"glDrawElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[3983]: DisableVertexAttribArrayARB (will be remapped) */
+ /* _mesa_function_pool[3905]: DisableVertexAttribArrayARB (will be remapped) */
"i\0"
"glDisableVertexAttribArray\0"
"glDisableVertexAttribArrayARB\0"
"\0"
- /* _mesa_function_pool[4043]: VertexAttribI4ubvEXT (will be remapped) */
- "ip\0"
- "glVertexAttribI4ubvEXT\0"
- "glVertexAttribI4ubv\0"
- "\0"
- /* _mesa_function_pool[4090]: GetnConvolutionFilterARB (will be remapped) */
+ /* _mesa_function_pool[3965]: GetnConvolutionFilterARB (will be remapped) */
"iiiip\0"
"glGetnConvolutionFilterARB\0"
"\0"
- /* _mesa_function_pool[4124]: TexCoord2sv (offset 109) */
+ /* _mesa_function_pool[3999]: TexCoord2sv (offset 109) */
"p\0"
"glTexCoord2sv\0"
"\0"
- /* _mesa_function_pool[4141]: Vertex4dv (offset 143) */
+ /* _mesa_function_pool[4016]: Vertex4dv (offset 143) */
"p\0"
"glVertex4dv\0"
"\0"
- /* _mesa_function_pool[4156]: StencilMaskSeparate (will be remapped) */
+ /* _mesa_function_pool[4031]: StencilMaskSeparate (will be remapped) */
"ii\0"
"glStencilMaskSeparate\0"
"\0"
- /* _mesa_function_pool[4182]: ProgramLocalParameter4dARB (will be remapped) */
+ /* _mesa_function_pool[4057]: ProgramLocalParameter4dARB (will be remapped) */
"iidddd\0"
"glProgramLocalParameter4dARB\0"
"\0"
- /* _mesa_function_pool[4219]: CompressedTexImage3DARB (will be remapped) */
+ /* _mesa_function_pool[4094]: CompressedTexImage3DARB (will be remapped) */
"iiiiiiiip\0"
"glCompressedTexImage3D\0"
"glCompressedTexImage3DARB\0"
"\0"
- /* _mesa_function_pool[4279]: Color3sv (offset 18) */
+ /* _mesa_function_pool[4154]: Color3sv (offset 18) */
"p\0"
"glColor3sv\0"
"\0"
- /* _mesa_function_pool[4293]: GetConvolutionParameteriv (offset 358) */
+ /* _mesa_function_pool[4168]: GetConvolutionParameteriv (offset 358) */
"iip\0"
"glGetConvolutionParameteriv\0"
"glGetConvolutionParameterivEXT\0"
"\0"
- /* _mesa_function_pool[4357]: DeleteSamplers (will be remapped) */
+ /* _mesa_function_pool[4232]: DeleteSamplers (will be remapped) */
"ip\0"
"glDeleteSamplers\0"
"\0"
- /* _mesa_function_pool[4378]: VertexAttrib1fARB (will be remapped) */
+ /* _mesa_function_pool[4253]: VertexAttrib1fARB (will be remapped) */
"if\0"
"glVertexAttrib1f\0"
"glVertexAttrib1fARB\0"
"\0"
- /* _mesa_function_pool[4419]: Vertex2dv (offset 127) */
+ /* _mesa_function_pool[4294]: Vertex2dv (offset 127) */
"p\0"
"glVertex2dv\0"
"\0"
- /* _mesa_function_pool[4434]: TestFenceNV (will be remapped) */
+ /* _mesa_function_pool[4309]: TestFenceNV (will be remapped) */
"i\0"
"glTestFenceNV\0"
"\0"
- /* _mesa_function_pool[4451]: MultiTexCoord1fvARB (offset 379) */
+ /* _mesa_function_pool[4326]: GetVertexAttribIuivEXT (will be remapped) */
+ "iip\0"
+ "glGetVertexAttribIuivEXT\0"
+ "glGetVertexAttribIuiv\0"
+ "\0"
+ /* _mesa_function_pool[4378]: MultiTexCoord1fvARB (offset 379) */
"ip\0"
"glMultiTexCoord1fv\0"
"glMultiTexCoord1fvARB\0"
"\0"
- /* _mesa_function_pool[4496]: TexCoord3iv (offset 115) */
+ /* _mesa_function_pool[4423]: TexCoord3iv (offset 115) */
"p\0"
"glTexCoord3iv\0"
"\0"
- /* _mesa_function_pool[4513]: Uniform2uivEXT (will be remapped) */
+ /* _mesa_function_pool[4440]: Uniform2uivEXT (will be remapped) */
"iip\0"
"glUniform2uivEXT\0"
"glUniform2uiv\0"
"\0"
- /* _mesa_function_pool[4549]: ColorFragmentOp2ATI (will be remapped) */
+ /* _mesa_function_pool[4476]: ColorFragmentOp2ATI (will be remapped) */
"iiiiiiiiii\0"
"glColorFragmentOp2ATI\0"
"\0"
- /* _mesa_function_pool[4583]: SecondaryColorPointerListIBM (dynamic) */
+ /* _mesa_function_pool[4510]: SecondaryColorPointerListIBM (dynamic) */
"iiipi\0"
"glSecondaryColorPointerListIBM\0"
"\0"
- /* _mesa_function_pool[4621]: GetPixelTexGenParameterivSGIS (will be remapped) */
+ /* _mesa_function_pool[4548]: GetPixelTexGenParameterivSGIS (will be remapped) */
"ip\0"
"glGetPixelTexGenParameterivSGIS\0"
"\0"
- /* _mesa_function_pool[4657]: Color3fv (offset 14) */
+ /* _mesa_function_pool[4584]: Color3fv (offset 14) */
"p\0"
"glColor3fv\0"
"\0"
- /* _mesa_function_pool[4671]: GetnPixelMapfvARB (will be remapped) */
+ /* _mesa_function_pool[4598]: GetnPixelMapfvARB (will be remapped) */
"iip\0"
"glGetnPixelMapfvARB\0"
"\0"
- /* _mesa_function_pool[4696]: ReplacementCodeubSUN (dynamic) */
+ /* _mesa_function_pool[4623]: ReplacementCodeubSUN (dynamic) */
"i\0"
"glReplacementCodeubSUN\0"
"\0"
- /* _mesa_function_pool[4722]: FinishAsyncSGIX (dynamic) */
+ /* _mesa_function_pool[4649]: FinishAsyncSGIX (dynamic) */
"p\0"
"glFinishAsyncSGIX\0"
"\0"
- /* _mesa_function_pool[4743]: GetnUniformfvARB (will be remapped) */
+ /* _mesa_function_pool[4670]: GetnUniformfvARB (will be remapped) */
"iiip\0"
"glGetnUniformfvARB\0"
"\0"
- /* _mesa_function_pool[4768]: GetDebugLogMESA (dynamic) */
+ /* _mesa_function_pool[4695]: GetDebugLogMESA (dynamic) */
"iiiipp\0"
"glGetDebugLogMESA\0"
"\0"
- /* _mesa_function_pool[4794]: FogCoorddEXT (will be remapped) */
+ /* _mesa_function_pool[4721]: FogCoorddEXT (will be remapped) */
"d\0"
"glFogCoordd\0"
"glFogCoorddEXT\0"
"\0"
- /* _mesa_function_pool[4824]: BeginConditionalRenderNV (will be remapped) */
+ /* _mesa_function_pool[4751]: BeginConditionalRenderNV (will be remapped) */
"ii\0"
"glBeginConditionalRenderNV\0"
"glBeginConditionalRender\0"
"\0"
- /* _mesa_function_pool[4880]: Color4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[4807]: Color4ubVertex3fSUN (dynamic) */
"iiiifff\0"
"glColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[4911]: FogCoordfEXT (will be remapped) */
+ /* _mesa_function_pool[4838]: FogCoordfEXT (will be remapped) */
"f\0"
"glFogCoordf\0"
"glFogCoordfEXT\0"
"\0"
- /* _mesa_function_pool[4941]: PointSize (offset 173) */
+ /* _mesa_function_pool[4868]: PointSize (offset 173) */
"f\0"
"glPointSize\0"
"\0"
- /* _mesa_function_pool[4956]: VertexAttribI2uivEXT (will be remapped) */
+ /* _mesa_function_pool[4883]: VertexAttribI2uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI2uivEXT\0"
"glVertexAttribI2uiv\0"
"\0"
- /* _mesa_function_pool[5003]: TexCoord2fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[4930]: TexCoord2fVertex3fSUN (dynamic) */
"fffff\0"
"glTexCoord2fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[5034]: PopName (offset 200) */
+ /* _mesa_function_pool[4961]: PopName (offset 200) */
"\0"
"glPopName\0"
"\0"
- /* _mesa_function_pool[5046]: GetSamplerParameterfv (will be remapped) */
+ /* _mesa_function_pool[4973]: GetSamplerParameterfv (will be remapped) */
"iip\0"
"glGetSamplerParameterfv\0"
"\0"
- /* _mesa_function_pool[5075]: GlobalAlphaFactoriSUN (dynamic) */
+ /* _mesa_function_pool[5002]: GlobalAlphaFactoriSUN (dynamic) */
"i\0"
"glGlobalAlphaFactoriSUN\0"
"\0"
- /* _mesa_function_pool[5102]: VertexAttrib2dNV (will be remapped) */
+ /* _mesa_function_pool[5029]: VertexAttrib2dNV (will be remapped) */
"idd\0"
"glVertexAttrib2dNV\0"
"\0"
- /* _mesa_function_pool[5126]: GetProgramInfoLog (will be remapped) */
+ /* _mesa_function_pool[5053]: GetProgramInfoLog (will be remapped) */
"iipp\0"
"glGetProgramInfoLog\0"
"\0"
- /* _mesa_function_pool[5152]: VertexAttrib4NbvARB (will be remapped) */
+ /* _mesa_function_pool[5079]: VertexAttrib4NbvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nbv\0"
"glVertexAttrib4NbvARB\0"
"\0"
- /* _mesa_function_pool[5197]: GetActiveAttribARB (will be remapped) */
+ /* _mesa_function_pool[5124]: GetActiveAttribARB (will be remapped) */
"iiipppp\0"
"glGetActiveAttrib\0"
"glGetActiveAttribARB\0"
"\0"
- /* _mesa_function_pool[5245]: Vertex4sv (offset 149) */
+ /* _mesa_function_pool[5172]: Vertex4sv (offset 149) */
"p\0"
"glVertex4sv\0"
"\0"
- /* _mesa_function_pool[5260]: VertexAttrib4ubNV (will be remapped) */
+ /* _mesa_function_pool[5187]: VertexAttrib4ubNV (will be remapped) */
"iiiii\0"
"glVertexAttrib4ubNV\0"
"\0"
- /* _mesa_function_pool[5287]: VertexAttribI1ivEXT (will be remapped) */
+ /* _mesa_function_pool[5214]: VertexAttribI1ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI1ivEXT\0"
"glVertexAttribI1iv\0"
"\0"
- /* _mesa_function_pool[5332]: ClampColor (will be remapped) */
+ /* _mesa_function_pool[5259]: ClampColor (will be remapped) */
"ii\0"
"glClampColor\0"
"\0"
- /* _mesa_function_pool[5349]: TextureRangeAPPLE (will be remapped) */
+ /* _mesa_function_pool[5276]: TextureRangeAPPLE (will be remapped) */
"iip\0"
"glTextureRangeAPPLE\0"
"\0"
- /* _mesa_function_pool[5374]: GetTexEnvfv (offset 276) */
+ /* _mesa_function_pool[5301]: GetTexEnvfv (offset 276) */
"iip\0"
"glGetTexEnvfv\0"
"\0"
- /* _mesa_function_pool[5393]: BindTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[5320]: BindTransformFeedback (will be remapped) */
"ii\0"
"glBindTransformFeedback\0"
"\0"
- /* _mesa_function_pool[5421]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[5348]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
"ffffffffffff\0"
"glTexCoord2fColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[5474]: Indexub (offset 315) */
+ /* _mesa_function_pool[5401]: Indexub (offset 315) */
"i\0"
"glIndexub\0"
"\0"
- /* _mesa_function_pool[5487]: VertexAttrib4fNV (will be remapped) */
+ /* _mesa_function_pool[5414]: VertexAttrib4fNV (will be remapped) */
"iffff\0"
"glVertexAttrib4fNV\0"
"\0"
- /* _mesa_function_pool[5513]: TexEnvi (offset 186) */
+ /* _mesa_function_pool[5440]: TexEnvi (offset 186) */
"iii\0"
"glTexEnvi\0"
"\0"
- /* _mesa_function_pool[5528]: GetClipPlane (offset 259) */
+ /* _mesa_function_pool[5455]: GetClipPlane (offset 259) */
"ip\0"
"glGetClipPlane\0"
"\0"
- /* _mesa_function_pool[5547]: CombinerParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[5474]: CombinerParameterfvNV (will be remapped) */
"ip\0"
"glCombinerParameterfvNV\0"
"\0"
- /* _mesa_function_pool[5575]: VertexAttribs3dvNV (will be remapped) */
+ /* _mesa_function_pool[5502]: VertexAttribs3dvNV (will be remapped) */
"iip\0"
"glVertexAttribs3dvNV\0"
"\0"
- /* _mesa_function_pool[5601]: VertexAttribI2uiEXT (will be remapped) */
+ /* _mesa_function_pool[5528]: VertexAttribI2uiEXT (will be remapped) */
"iii\0"
"glVertexAttribI2uiEXT\0"
"glVertexAttribI2ui\0"
"\0"
- /* _mesa_function_pool[5647]: VertexAttribs4fvNV (will be remapped) */
+ /* _mesa_function_pool[5574]: VertexAttribs4fvNV (will be remapped) */
"iip\0"
"glVertexAttribs4fvNV\0"
"\0"
- /* _mesa_function_pool[5673]: VertexArrayRangeNV (will be remapped) */
+ /* _mesa_function_pool[5600]: VertexArrayRangeNV (will be remapped) */
"ip\0"
"glVertexArrayRangeNV\0"
"\0"
- /* _mesa_function_pool[5698]: FragmentLightiSGIX (dynamic) */
+ /* _mesa_function_pool[5625]: FragmentLightiSGIX (dynamic) */
"iii\0"
"glFragmentLightiSGIX\0"
"\0"
- /* _mesa_function_pool[5724]: PolygonOffsetEXT (will be remapped) */
+ /* _mesa_function_pool[5651]: PolygonOffsetEXT (will be remapped) */
"ff\0"
"glPolygonOffsetEXT\0"
"\0"
- /* _mesa_function_pool[5747]: VertexAttribI4uivEXT (will be remapped) */
+ /* _mesa_function_pool[5674]: VertexAttribI4uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI4uivEXT\0"
"glVertexAttribI4uiv\0"
"\0"
- /* _mesa_function_pool[5794]: PollAsyncSGIX (dynamic) */
+ /* _mesa_function_pool[5721]: PollAsyncSGIX (dynamic) */
"p\0"
"glPollAsyncSGIX\0"
"\0"
- /* _mesa_function_pool[5813]: DeleteFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[5740]: DeleteFragmentShaderATI (will be remapped) */
"i\0"
"glDeleteFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[5842]: Scaled (offset 301) */
+ /* _mesa_function_pool[5769]: Scaled (offset 301) */
"ddd\0"
"glScaled\0"
"\0"
- /* _mesa_function_pool[5856]: ResumeTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[5783]: ResumeTransformFeedback (will be remapped) */
"\0"
"glResumeTransformFeedback\0"
"\0"
- /* _mesa_function_pool[5884]: Scalef (offset 302) */
+ /* _mesa_function_pool[5811]: Scalef (offset 302) */
"fff\0"
"glScalef\0"
"\0"
- /* _mesa_function_pool[5898]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[5825]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glTexCoord2fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[5936]: ProgramEnvParameters4fvEXT (will be remapped) */
+ /* _mesa_function_pool[5863]: ProgramEnvParameters4fvEXT (will be remapped) */
"iiip\0"
"glProgramEnvParameters4fvEXT\0"
"\0"
- /* _mesa_function_pool[5971]: MultTransposeMatrixdARB (will be remapped) */
+ /* _mesa_function_pool[5898]: MultTransposeMatrixdARB (will be remapped) */
"p\0"
"glMultTransposeMatrixd\0"
"glMultTransposeMatrixdARB\0"
"\0"
- /* _mesa_function_pool[6023]: ObjectUnpurgeableAPPLE (will be remapped) */
+ /* _mesa_function_pool[5950]: ColorMaskIndexedEXT (will be remapped) */
+ "iiiii\0"
+ "glColorMaskIndexedEXT\0"
+ "glColorMaski\0"
+ "\0"
+ /* _mesa_function_pool[5992]: ObjectUnpurgeableAPPLE (will be remapped) */
"iii\0"
"glObjectUnpurgeableAPPLE\0"
"\0"
- /* _mesa_function_pool[6053]: AlphaFunc (offset 240) */
+ /* _mesa_function_pool[6022]: AlphaFunc (offset 240) */
"if\0"
"glAlphaFunc\0"
"\0"
- /* _mesa_function_pool[6069]: WindowPos2svMESA (will be remapped) */
+ /* _mesa_function_pool[6038]: WindowPos2svMESA (will be remapped) */
"p\0"
"glWindowPos2sv\0"
"glWindowPos2svARB\0"
"glWindowPos2svMESA\0"
"\0"
- /* _mesa_function_pool[6124]: EdgeFlag (offset 41) */
+ /* _mesa_function_pool[6093]: EdgeFlag (offset 41) */
"i\0"
"glEdgeFlag\0"
"\0"
- /* _mesa_function_pool[6138]: TexCoord2iv (offset 107) */
+ /* _mesa_function_pool[6107]: TexCoord2iv (offset 107) */
"p\0"
"glTexCoord2iv\0"
"\0"
- /* _mesa_function_pool[6155]: CompressedTexImage1DARB (will be remapped) */
+ /* _mesa_function_pool[6124]: CompressedTexImage1DARB (will be remapped) */
"iiiiiip\0"
"glCompressedTexImage1D\0"
"glCompressedTexImage1DARB\0"
"\0"
- /* _mesa_function_pool[6213]: Rotated (offset 299) */
+ /* _mesa_function_pool[6182]: Rotated (offset 299) */
"dddd\0"
"glRotated\0"
"\0"
- /* _mesa_function_pool[6229]: GetTexParameterIuivEXT (will be remapped) */
+ /* _mesa_function_pool[6198]: GetTexParameterIuivEXT (will be remapped) */
"iip\0"
"glGetTexParameterIuivEXT\0"
"glGetTexParameterIuiv\0"
"\0"
- /* _mesa_function_pool[6281]: VertexAttrib2sNV (will be remapped) */
+ /* _mesa_function_pool[6250]: VertexAttrib2sNV (will be remapped) */
"iii\0"
"glVertexAttrib2sNV\0"
"\0"
- /* _mesa_function_pool[6305]: ReadPixels (offset 256) */
+ /* _mesa_function_pool[6274]: ReadPixels (offset 256) */
"iiiiiip\0"
"glReadPixels\0"
"\0"
- /* _mesa_function_pool[6327]: VertexAttribDivisorARB (will be remapped) */
+ /* _mesa_function_pool[6296]: VertexAttribDivisorARB (will be remapped) */
"ii\0"
"glVertexAttribDivisorARB\0"
"\0"
- /* _mesa_function_pool[6356]: EdgeFlagv (offset 42) */
+ /* _mesa_function_pool[6325]: EdgeFlagv (offset 42) */
"p\0"
"glEdgeFlagv\0"
"\0"
- /* _mesa_function_pool[6371]: NormalPointerListIBM (dynamic) */
+ /* _mesa_function_pool[6340]: NormalPointerListIBM (dynamic) */
"iipi\0"
"glNormalPointerListIBM\0"
"\0"
- /* _mesa_function_pool[6400]: IndexPointerEXT (will be remapped) */
+ /* _mesa_function_pool[6369]: IndexPointerEXT (will be remapped) */
"iiip\0"
"glIndexPointerEXT\0"
"\0"
- /* _mesa_function_pool[6424]: Color4iv (offset 32) */
+ /* _mesa_function_pool[6393]: Color4iv (offset 32) */
"p\0"
"glColor4iv\0"
"\0"
- /* _mesa_function_pool[6438]: TexParameterf (offset 178) */
+ /* _mesa_function_pool[6407]: TexParameterf (offset 178) */
"iif\0"
"glTexParameterf\0"
"\0"
- /* _mesa_function_pool[6459]: TexParameteri (offset 180) */
+ /* _mesa_function_pool[6428]: TexParameteri (offset 180) */
"iii\0"
"glTexParameteri\0"
"\0"
- /* _mesa_function_pool[6480]: NormalPointerEXT (will be remapped) */
+ /* _mesa_function_pool[6449]: NormalPointerEXT (will be remapped) */
"iiip\0"
"glNormalPointerEXT\0"
"\0"
- /* _mesa_function_pool[6505]: MultiTexCoord3dARB (offset 392) */
+ /* _mesa_function_pool[6474]: MultiTexCoord3dARB (offset 392) */
"iddd\0"
"glMultiTexCoord3d\0"
"glMultiTexCoord3dARB\0"
"\0"
- /* _mesa_function_pool[6550]: MultiTexCoord2iARB (offset 388) */
+ /* _mesa_function_pool[6519]: MultiTexCoord2iARB (offset 388) */
"iii\0"
"glMultiTexCoord2i\0"
"glMultiTexCoord2iARB\0"
"\0"
- /* _mesa_function_pool[6594]: DrawPixels (offset 257) */
+ /* _mesa_function_pool[6563]: DrawPixels (offset 257) */
"iiiip\0"
"glDrawPixels\0"
"\0"
- /* _mesa_function_pool[6614]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[6583]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */
"iffffffff\0"
"glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[6674]: MultiTexCoord2svARB (offset 391) */
+ /* _mesa_function_pool[6643]: MultiTexCoord2svARB (offset 391) */
"ip\0"
"glMultiTexCoord2sv\0"
"glMultiTexCoord2svARB\0"
"\0"
- /* _mesa_function_pool[6719]: ReplacementCodeubvSUN (dynamic) */
+ /* _mesa_function_pool[6688]: ReplacementCodeubvSUN (dynamic) */
"p\0"
"glReplacementCodeubvSUN\0"
"\0"
- /* _mesa_function_pool[6746]: Uniform3iARB (will be remapped) */
+ /* _mesa_function_pool[6715]: Uniform3iARB (will be remapped) */
"iiii\0"
"glUniform3i\0"
"glUniform3iARB\0"
"\0"
- /* _mesa_function_pool[6779]: DrawTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[6748]: DrawTransformFeedback (will be remapped) */
"ii\0"
"glDrawTransformFeedback\0"
"\0"
- /* _mesa_function_pool[6807]: DrawElementsInstancedARB (will be remapped) */
+ /* _mesa_function_pool[6776]: DrawElementsInstancedARB (will be remapped) */
"iiipi\0"
"glDrawElementsInstancedARB\0"
"glDrawElementsInstancedEXT\0"
"glDrawElementsInstanced\0"
"\0"
- /* _mesa_function_pool[6892]: GetShaderInfoLog (will be remapped) */
+ /* _mesa_function_pool[6861]: GetShaderInfoLog (will be remapped) */
"iipp\0"
"glGetShaderInfoLog\0"
"\0"
- /* _mesa_function_pool[6917]: WeightivARB (dynamic) */
+ /* _mesa_function_pool[6886]: WeightivARB (dynamic) */
"ip\0"
"glWeightivARB\0"
"\0"
- /* _mesa_function_pool[6935]: PollInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[6904]: PollInstrumentsSGIX (dynamic) */
"p\0"
"glPollInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[6960]: GlobalAlphaFactordSUN (dynamic) */
+ /* _mesa_function_pool[6929]: GlobalAlphaFactordSUN (dynamic) */
"d\0"
"glGlobalAlphaFactordSUN\0"
"\0"
- /* _mesa_function_pool[6987]: GetFinalCombinerInputParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[6956]: GetFinalCombinerInputParameterfvNV (will be remapped) */
"iip\0"
"glGetFinalCombinerInputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[7029]: GenerateMipmapEXT (will be remapped) */
+ /* _mesa_function_pool[6998]: GenerateMipmapEXT (will be remapped) */
"i\0"
"glGenerateMipmap\0"
"glGenerateMipmapEXT\0"
"\0"
- /* _mesa_function_pool[7069]: GenLists (offset 5) */
+ /* _mesa_function_pool[7038]: GenLists (offset 5) */
"i\0"
"glGenLists\0"
"\0"
- /* _mesa_function_pool[7083]: DepthRangef (will be remapped) */
+ /* _mesa_function_pool[7052]: DepthRangef (will be remapped) */
"ff\0"
"glDepthRangef\0"
"\0"
- /* _mesa_function_pool[7101]: GetMapAttribParameterivNV (dynamic) */
+ /* _mesa_function_pool[7070]: GetMapAttribParameterivNV (dynamic) */
"iiip\0"
"glGetMapAttribParameterivNV\0"
"\0"
- /* _mesa_function_pool[7135]: CreateShaderObjectARB (will be remapped) */
+ /* _mesa_function_pool[7104]: CreateShaderObjectARB (will be remapped) */
"i\0"
"glCreateShaderObjectARB\0"
"\0"
- /* _mesa_function_pool[7162]: GetSharpenTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[7131]: GetSharpenTexFuncSGIS (dynamic) */
"ip\0"
"glGetSharpenTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[7190]: BufferDataARB (will be remapped) */
+ /* _mesa_function_pool[7159]: BufferDataARB (will be remapped) */
"iipi\0"
"glBufferData\0"
"glBufferDataARB\0"
"\0"
- /* _mesa_function_pool[7225]: FlushVertexArrayRangeNV (will be remapped) */
+ /* _mesa_function_pool[7194]: FlushVertexArrayRangeNV (will be remapped) */
"\0"
"glFlushVertexArrayRangeNV\0"
"\0"
- /* _mesa_function_pool[7253]: MapGrid2d (offset 226) */
+ /* _mesa_function_pool[7222]: MapGrid2d (offset 226) */
"iddidd\0"
"glMapGrid2d\0"
"\0"
- /* _mesa_function_pool[7273]: MapGrid2f (offset 227) */
+ /* _mesa_function_pool[7242]: MapGrid2f (offset 227) */
"iffiff\0"
"glMapGrid2f\0"
"\0"
- /* _mesa_function_pool[7293]: SampleMapATI (will be remapped) */
+ /* _mesa_function_pool[7262]: SampleMapATI (will be remapped) */
"iii\0"
"glSampleMapATI\0"
"\0"
- /* _mesa_function_pool[7313]: VertexPointerEXT (will be remapped) */
+ /* _mesa_function_pool[7282]: VertexPointerEXT (will be remapped) */
"iiiip\0"
"glVertexPointerEXT\0"
"\0"
- /* _mesa_function_pool[7339]: GetTexFilterFuncSGIS (dynamic) */
+ /* _mesa_function_pool[7308]: GetTexFilterFuncSGIS (dynamic) */
"iip\0"
"glGetTexFilterFuncSGIS\0"
"\0"
- /* _mesa_function_pool[7367]: Scissor (offset 176) */
+ /* _mesa_function_pool[7336]: Scissor (offset 176) */
"iiii\0"
"glScissor\0"
"\0"
- /* _mesa_function_pool[7383]: Fogf (offset 153) */
+ /* _mesa_function_pool[7352]: Fogf (offset 153) */
"if\0"
"glFogf\0"
"\0"
- /* _mesa_function_pool[7394]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[7363]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiColor4ubVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[7439]: TexSubImage1D (offset 332) */
+ /* _mesa_function_pool[7408]: TexSubImage1D (offset 332) */
"iiiiiip\0"
"glTexSubImage1D\0"
"glTexSubImage1DEXT\0"
"\0"
- /* _mesa_function_pool[7483]: VertexAttrib1sARB (will be remapped) */
+ /* _mesa_function_pool[7452]: VertexAttrib1sARB (will be remapped) */
"ii\0"
"glVertexAttrib1s\0"
"glVertexAttrib1sARB\0"
"\0"
- /* _mesa_function_pool[7524]: FenceSync (will be remapped) */
+ /* _mesa_function_pool[7493]: FenceSync (will be remapped) */
"ii\0"
"glFenceSync\0"
"\0"
- /* _mesa_function_pool[7540]: Color4usv (offset 40) */
+ /* _mesa_function_pool[7509]: Color4usv (offset 40) */
"p\0"
"glColor4usv\0"
"\0"
- /* _mesa_function_pool[7555]: Fogi (offset 155) */
+ /* _mesa_function_pool[7524]: Fogi (offset 155) */
"ii\0"
"glFogi\0"
"\0"
- /* _mesa_function_pool[7566]: DepthRange (offset 288) */
+ /* _mesa_function_pool[7535]: DepthRange (offset 288) */
"dd\0"
"glDepthRange\0"
"\0"
- /* _mesa_function_pool[7583]: RasterPos3iv (offset 75) */
+ /* _mesa_function_pool[7552]: RasterPos3iv (offset 75) */
"p\0"
"glRasterPos3iv\0"
"\0"
- /* _mesa_function_pool[7601]: FinalCombinerInputNV (will be remapped) */
+ /* _mesa_function_pool[7570]: FinalCombinerInputNV (will be remapped) */
"iiii\0"
"glFinalCombinerInputNV\0"
"\0"
- /* _mesa_function_pool[7630]: TexCoord2i (offset 106) */
+ /* _mesa_function_pool[7599]: TexCoord2i (offset 106) */
"ii\0"
"glTexCoord2i\0"
"\0"
- /* _mesa_function_pool[7647]: PixelMapfv (offset 251) */
+ /* _mesa_function_pool[7616]: PixelMapfv (offset 251) */
"iip\0"
"glPixelMapfv\0"
"\0"
- /* _mesa_function_pool[7665]: Color4ui (offset 37) */
+ /* _mesa_function_pool[7634]: Color4ui (offset 37) */
"iiii\0"
"glColor4ui\0"
"\0"
- /* _mesa_function_pool[7682]: RasterPos3s (offset 76) */
+ /* _mesa_function_pool[7651]: RasterPos3s (offset 76) */
"iii\0"
"glRasterPos3s\0"
"\0"
- /* _mesa_function_pool[7701]: Color3usv (offset 24) */
+ /* _mesa_function_pool[7670]: Color3usv (offset 24) */
"p\0"
"glColor3usv\0"
"\0"
- /* _mesa_function_pool[7716]: FlushRasterSGIX (dynamic) */
+ /* _mesa_function_pool[7685]: FlushRasterSGIX (dynamic) */
"\0"
"glFlushRasterSGIX\0"
"\0"
- /* _mesa_function_pool[7736]: TexCoord2f (offset 104) */
+ /* _mesa_function_pool[7705]: TexCoord2f (offset 104) */
"ff\0"
"glTexCoord2f\0"
"\0"
- /* _mesa_function_pool[7753]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[7722]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */
"ifffff\0"
"glReplacementCodeuiTexCoord2fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[7802]: TexCoord2d (offset 102) */
+ /* _mesa_function_pool[7771]: TexCoord2d (offset 102) */
"dd\0"
"glTexCoord2d\0"
"\0"
- /* _mesa_function_pool[7819]: RasterPos3d (offset 70) */
+ /* _mesa_function_pool[7788]: RasterPos3d (offset 70) */
"ddd\0"
"glRasterPos3d\0"
"\0"
- /* _mesa_function_pool[7838]: RasterPos3f (offset 72) */
+ /* _mesa_function_pool[7807]: RasterPos3f (offset 72) */
"fff\0"
"glRasterPos3f\0"
"\0"
- /* _mesa_function_pool[7857]: Uniform1fARB (will be remapped) */
+ /* _mesa_function_pool[7826]: Uniform1fARB (will be remapped) */
"if\0"
"glUniform1f\0"
"glUniform1fARB\0"
"\0"
- /* _mesa_function_pool[7888]: AreTexturesResident (offset 322) */
+ /* _mesa_function_pool[7857]: AreTexturesResident (offset 322) */
"ipp\0"
"glAreTexturesResident\0"
"glAreTexturesResidentEXT\0"
"\0"
- /* _mesa_function_pool[7940]: TexCoord2s (offset 108) */
+ /* _mesa_function_pool[7909]: TexCoord2s (offset 108) */
"ii\0"
"glTexCoord2s\0"
"\0"
- /* _mesa_function_pool[7957]: StencilOpSeparate (will be remapped) */
+ /* _mesa_function_pool[7926]: StencilOpSeparate (will be remapped) */
"iiii\0"
"glStencilOpSeparate\0"
"glStencilOpSeparateATI\0"
"\0"
- /* _mesa_function_pool[8006]: ColorTableParameteriv (offset 341) */
+ /* _mesa_function_pool[7975]: ColorTableParameteriv (offset 341) */
"iip\0"
"glColorTableParameteriv\0"
"glColorTableParameterivSGI\0"
"\0"
- /* _mesa_function_pool[8062]: FogCoordPointerListIBM (dynamic) */
+ /* _mesa_function_pool[8031]: FogCoordPointerListIBM (dynamic) */
"iipi\0"
"glFogCoordPointerListIBM\0"
"\0"
- /* _mesa_function_pool[8093]: WindowPos3dMESA (will be remapped) */
+ /* _mesa_function_pool[8062]: WindowPos3dMESA (will be remapped) */
"ddd\0"
"glWindowPos3d\0"
"glWindowPos3dARB\0"
"glWindowPos3dMESA\0"
"\0"
- /* _mesa_function_pool[8147]: Color4us (offset 39) */
+ /* _mesa_function_pool[8116]: Color4us (offset 39) */
"iiii\0"
"glColor4us\0"
"\0"
- /* _mesa_function_pool[8164]: PointParameterfvEXT (will be remapped) */
+ /* _mesa_function_pool[8133]: PointParameterfvEXT (will be remapped) */
"ip\0"
"glPointParameterfv\0"
"glPointParameterfvARB\0"
"glPointParameterfvEXT\0"
"glPointParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[8254]: Color3bv (offset 10) */
+ /* _mesa_function_pool[8223]: Color3bv (offset 10) */
"p\0"
"glColor3bv\0"
"\0"
- /* _mesa_function_pool[8268]: GetnCompressedTexImageARB (will be remapped) */
+ /* _mesa_function_pool[8237]: GetnCompressedTexImageARB (will be remapped) */
"iiip\0"
"glGetnCompressedTexImageARB\0"
"\0"
- /* _mesa_function_pool[8302]: WindowPos2fvMESA (will be remapped) */
+ /* _mesa_function_pool[8271]: WindowPos2fvMESA (will be remapped) */
"p\0"
"glWindowPos2fv\0"
"glWindowPos2fvARB\0"
"glWindowPos2fvMESA\0"
"\0"
- /* _mesa_function_pool[8357]: SecondaryColor3bvEXT (will be remapped) */
+ /* _mesa_function_pool[8326]: SecondaryColor3bvEXT (will be remapped) */
"p\0"
"glSecondaryColor3bv\0"
"glSecondaryColor3bvEXT\0"
"\0"
- /* _mesa_function_pool[8403]: VertexPointerListIBM (dynamic) */
+ /* _mesa_function_pool[8372]: VertexPointerListIBM (dynamic) */
"iiipi\0"
"glVertexPointerListIBM\0"
"\0"
- /* _mesa_function_pool[8433]: GetProgramLocalParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[8402]: GetProgramLocalParameterfvARB (will be remapped) */
"iip\0"
"glGetProgramLocalParameterfvARB\0"
"\0"
- /* _mesa_function_pool[8470]: FragmentMaterialfSGIX (dynamic) */
+ /* _mesa_function_pool[8439]: FragmentMaterialfSGIX (dynamic) */
"iif\0"
"glFragmentMaterialfSGIX\0"
"\0"
- /* _mesa_function_pool[8499]: BindSampler (will be remapped) */
+ /* _mesa_function_pool[8468]: BindSampler (will be remapped) */
"ii\0"
"glBindSampler\0"
"\0"
- /* _mesa_function_pool[8517]: RenderbufferStorageEXT (will be remapped) */
+ /* _mesa_function_pool[8486]: RenderbufferStorageEXT (will be remapped) */
"iiii\0"
"glRenderbufferStorage\0"
"glRenderbufferStorageEXT\0"
"\0"
- /* _mesa_function_pool[8570]: IsFenceNV (will be remapped) */
+ /* _mesa_function_pool[8539]: IsFenceNV (will be remapped) */
"i\0"
"glIsFenceNV\0"
"\0"
- /* _mesa_function_pool[8585]: AttachObjectARB (will be remapped) */
+ /* _mesa_function_pool[8554]: AttachObjectARB (will be remapped) */
"ii\0"
"glAttachObjectARB\0"
"\0"
- /* _mesa_function_pool[8607]: GetFragmentLightivSGIX (dynamic) */
+ /* _mesa_function_pool[8576]: GetFragmentLightivSGIX (dynamic) */
"iip\0"
"glGetFragmentLightivSGIX\0"
"\0"
- /* _mesa_function_pool[8637]: UniformMatrix2fvARB (will be remapped) */
+ /* _mesa_function_pool[8606]: UniformMatrix2fvARB (will be remapped) */
"iiip\0"
"glUniformMatrix2fv\0"
"glUniformMatrix2fvARB\0"
"\0"
- /* _mesa_function_pool[8684]: MultiTexCoord2fARB (offset 386) */
+ /* _mesa_function_pool[8653]: MultiTexCoord2fARB (offset 386) */
"iff\0"
"glMultiTexCoord2f\0"
"glMultiTexCoord2fARB\0"
"\0"
- /* _mesa_function_pool[8728]: ColorTable (offset 339) */
+ /* _mesa_function_pool[8697]: ColorTable (offset 339) */
"iiiiip\0"
"glColorTable\0"
"glColorTableSGI\0"
"glColorTableEXT\0"
"\0"
- /* _mesa_function_pool[8781]: IndexPointer (offset 314) */
+ /* _mesa_function_pool[8750]: IndexPointer (offset 314) */
"iip\0"
"glIndexPointer\0"
"\0"
- /* _mesa_function_pool[8801]: Accum (offset 213) */
+ /* _mesa_function_pool[8770]: Accum (offset 213) */
"if\0"
"glAccum\0"
"\0"
- /* _mesa_function_pool[8813]: GetTexImage (offset 281) */
+ /* _mesa_function_pool[8782]: GetTexImage (offset 281) */
"iiiip\0"
"glGetTexImage\0"
"\0"
- /* _mesa_function_pool[8834]: MapControlPointsNV (dynamic) */
+ /* _mesa_function_pool[8803]: MapControlPointsNV (dynamic) */
"iiiiiiiip\0"
"glMapControlPointsNV\0"
"\0"
- /* _mesa_function_pool[8866]: ConvolutionFilter2D (offset 349) */
+ /* _mesa_function_pool[8835]: ConvolutionFilter2D (offset 349) */
"iiiiiip\0"
"glConvolutionFilter2D\0"
"glConvolutionFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[8922]: Finish (offset 216) */
+ /* _mesa_function_pool[8891]: Finish (offset 216) */
"\0"
"glFinish\0"
"\0"
- /* _mesa_function_pool[8933]: MapParameterfvNV (dynamic) */
+ /* _mesa_function_pool[8902]: MapParameterfvNV (dynamic) */
"iip\0"
"glMapParameterfvNV\0"
"\0"
- /* _mesa_function_pool[8957]: ClearStencil (offset 207) */
+ /* _mesa_function_pool[8926]: ClearStencil (offset 207) */
"i\0"
"glClearStencil\0"
"\0"
- /* _mesa_function_pool[8975]: VertexAttrib3dvARB (will be remapped) */
+ /* _mesa_function_pool[8944]: VertexAttrib3dvARB (will be remapped) */
"ip\0"
"glVertexAttrib3dv\0"
"glVertexAttrib3dvARB\0"
"\0"
- /* _mesa_function_pool[9018]: Uniform4uivEXT (will be remapped) */
+ /* _mesa_function_pool[8987]: Uniform4uivEXT (will be remapped) */
"iip\0"
"glUniform4uivEXT\0"
"glUniform4uiv\0"
"\0"
- /* _mesa_function_pool[9054]: HintPGI (dynamic) */
+ /* _mesa_function_pool[9023]: HintPGI (dynamic) */
"ii\0"
"glHintPGI\0"
"\0"
- /* _mesa_function_pool[9068]: ConvolutionParameteriv (offset 353) */
+ /* _mesa_function_pool[9037]: ConvolutionParameteriv (offset 353) */
"iip\0"
"glConvolutionParameteriv\0"
"glConvolutionParameterivEXT\0"
"\0"
- /* _mesa_function_pool[9126]: Color4s (offset 33) */
+ /* _mesa_function_pool[9095]: Color4s (offset 33) */
"iiii\0"
"glColor4s\0"
"\0"
- /* _mesa_function_pool[9142]: InterleavedArrays (offset 317) */
+ /* _mesa_function_pool[9111]: InterleavedArrays (offset 317) */
"iip\0"
"glInterleavedArrays\0"
"\0"
- /* _mesa_function_pool[9167]: RasterPos2fv (offset 65) */
+ /* _mesa_function_pool[9136]: RasterPos2fv (offset 65) */
"p\0"
"glRasterPos2fv\0"
"\0"
- /* _mesa_function_pool[9185]: TexCoord1fv (offset 97) */
+ /* _mesa_function_pool[9154]: TexCoord1fv (offset 97) */
"p\0"
"glTexCoord1fv\0"
"\0"
- /* _mesa_function_pool[9202]: Vertex2d (offset 126) */
+ /* _mesa_function_pool[9171]: Vertex2d (offset 126) */
"dd\0"
"glVertex2d\0"
"\0"
- /* _mesa_function_pool[9217]: CullParameterdvEXT (dynamic) */
+ /* _mesa_function_pool[9186]: CullParameterdvEXT (dynamic) */
"ip\0"
"glCullParameterdvEXT\0"
"\0"
- /* _mesa_function_pool[9242]: ProgramNamedParameter4fNV (will be remapped) */
+ /* _mesa_function_pool[9211]: ProgramNamedParameter4fNV (will be remapped) */
"iipffff\0"
"glProgramNamedParameter4fNV\0"
"\0"
- /* _mesa_function_pool[9279]: Color3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[9248]: Color3fVertex3fSUN (dynamic) */
"ffffff\0"
"glColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[9308]: ProgramEnvParameter4fvARB (will be remapped) */
+ /* _mesa_function_pool[9277]: ProgramEnvParameter4fvARB (will be remapped) */
"iip\0"
"glProgramEnvParameter4fvARB\0"
"glProgramParameter4fvNV\0"
"\0"
- /* _mesa_function_pool[9365]: Color4i (offset 31) */
+ /* _mesa_function_pool[9334]: Color4i (offset 31) */
"iiii\0"
"glColor4i\0"
"\0"
- /* _mesa_function_pool[9381]: Color4f (offset 29) */
+ /* _mesa_function_pool[9350]: Color4f (offset 29) */
"ffff\0"
"glColor4f\0"
"\0"
- /* _mesa_function_pool[9397]: RasterPos4fv (offset 81) */
+ /* _mesa_function_pool[9366]: RasterPos4fv (offset 81) */
"p\0"
"glRasterPos4fv\0"
"\0"
- /* _mesa_function_pool[9415]: Color4d (offset 27) */
+ /* _mesa_function_pool[9384]: Color4d (offset 27) */
"dddd\0"
"glColor4d\0"
"\0"
- /* _mesa_function_pool[9431]: ClearIndex (offset 205) */
+ /* _mesa_function_pool[9400]: ClearIndex (offset 205) */
"f\0"
"glClearIndex\0"
"\0"
- /* _mesa_function_pool[9447]: Color4b (offset 25) */
+ /* _mesa_function_pool[9416]: Color4b (offset 25) */
"iiii\0"
"glColor4b\0"
"\0"
- /* _mesa_function_pool[9463]: LoadMatrixd (offset 292) */
+ /* _mesa_function_pool[9432]: LoadMatrixd (offset 292) */
"p\0"
"glLoadMatrixd\0"
"\0"
- /* _mesa_function_pool[9480]: FragmentLightModeliSGIX (dynamic) */
+ /* _mesa_function_pool[9449]: FragmentLightModeliSGIX (dynamic) */
"ii\0"
"glFragmentLightModeliSGIX\0"
"\0"
- /* _mesa_function_pool[9510]: RasterPos2dv (offset 63) */
+ /* _mesa_function_pool[9479]: RasterPos2dv (offset 63) */
"p\0"
"glRasterPos2dv\0"
"\0"
- /* _mesa_function_pool[9528]: ConvolutionParameterfv (offset 351) */
+ /* _mesa_function_pool[9497]: ConvolutionParameterfv (offset 351) */
"iip\0"
"glConvolutionParameterfv\0"
"glConvolutionParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[9586]: TbufferMask3DFX (dynamic) */
+ /* _mesa_function_pool[9555]: TbufferMask3DFX (dynamic) */
"i\0"
"glTbufferMask3DFX\0"
"\0"
- /* _mesa_function_pool[9607]: GetTexGendv (offset 278) */
+ /* _mesa_function_pool[9576]: GetTexGendv (offset 278) */
"iip\0"
"glGetTexGendv\0"
"\0"
- /* _mesa_function_pool[9626]: GetVertexAttribfvNV (will be remapped) */
+ /* _mesa_function_pool[9595]: GetVertexAttribfvNV (will be remapped) */
"iip\0"
"glGetVertexAttribfvNV\0"
"\0"
- /* _mesa_function_pool[9653]: BeginTransformFeedbackEXT (will be remapped) */
+ /* _mesa_function_pool[9622]: BeginTransformFeedbackEXT (will be remapped) */
"i\0"
"glBeginTransformFeedbackEXT\0"
"glBeginTransformFeedback\0"
"\0"
- /* _mesa_function_pool[9709]: LoadProgramNV (will be remapped) */
+ /* _mesa_function_pool[9678]: LoadProgramNV (will be remapped) */
"iiip\0"
"glLoadProgramNV\0"
"\0"
- /* _mesa_function_pool[9731]: WaitSync (will be remapped) */
+ /* _mesa_function_pool[9700]: WaitSync (will be remapped) */
"iii\0"
"glWaitSync\0"
"\0"
- /* _mesa_function_pool[9747]: EndList (offset 1) */
+ /* _mesa_function_pool[9716]: EndList (offset 1) */
"\0"
"glEndList\0"
"\0"
- /* _mesa_function_pool[9759]: VertexAttrib4fvNV (will be remapped) */
+ /* _mesa_function_pool[9728]: VertexAttrib4fvNV (will be remapped) */
"ip\0"
"glVertexAttrib4fvNV\0"
"\0"
- /* _mesa_function_pool[9783]: GetAttachedObjectsARB (will be remapped) */
+ /* _mesa_function_pool[9752]: GetAttachedObjectsARB (will be remapped) */
"iipp\0"
"glGetAttachedObjectsARB\0"
"\0"
- /* _mesa_function_pool[9813]: Uniform3fvARB (will be remapped) */
+ /* _mesa_function_pool[9782]: Uniform3fvARB (will be remapped) */
"iip\0"
"glUniform3fv\0"
"glUniform3fvARB\0"
"\0"
- /* _mesa_function_pool[9847]: EvalCoord1fv (offset 231) */
+ /* _mesa_function_pool[9816]: EvalCoord1fv (offset 231) */
"p\0"
"glEvalCoord1fv\0"
"\0"
- /* _mesa_function_pool[9865]: DrawRangeElements (offset 338) */
+ /* _mesa_function_pool[9834]: DrawRangeElements (offset 338) */
"iiiiip\0"
"glDrawRangeElements\0"
"glDrawRangeElementsEXT\0"
"\0"
- /* _mesa_function_pool[9916]: EvalMesh2 (offset 238) */
+ /* _mesa_function_pool[9885]: EvalMesh2 (offset 238) */
"iiiii\0"
"glEvalMesh2\0"
"\0"
- /* _mesa_function_pool[9935]: Vertex4fv (offset 145) */
+ /* _mesa_function_pool[9904]: Vertex4fv (offset 145) */
"p\0"
"glVertex4fv\0"
"\0"
- /* _mesa_function_pool[9950]: GenTransformFeedbacks (will be remapped) */
+ /* _mesa_function_pool[9919]: GenTransformFeedbacks (will be remapped) */
"ip\0"
"glGenTransformFeedbacks\0"
"\0"
- /* _mesa_function_pool[9978]: SpriteParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[9947]: SpriteParameterfvSGIX (dynamic) */
"ip\0"
"glSpriteParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[10006]: CheckFramebufferStatusEXT (will be remapped) */
+ /* _mesa_function_pool[9975]: CheckFramebufferStatusEXT (will be remapped) */
"i\0"
"glCheckFramebufferStatus\0"
"glCheckFramebufferStatusEXT\0"
"\0"
- /* _mesa_function_pool[10062]: GlobalAlphaFactoruiSUN (dynamic) */
+ /* _mesa_function_pool[10031]: GlobalAlphaFactoruiSUN (dynamic) */
"i\0"
"glGlobalAlphaFactoruiSUN\0"
"\0"
- /* _mesa_function_pool[10090]: GetHandleARB (will be remapped) */
+ /* _mesa_function_pool[10059]: GetHandleARB (will be remapped) */
"i\0"
"glGetHandleARB\0"
"\0"
- /* _mesa_function_pool[10108]: GetVertexAttribivARB (will be remapped) */
+ /* _mesa_function_pool[10077]: GetVertexAttribivARB (will be remapped) */
"iip\0"
"glGetVertexAttribiv\0"
"glGetVertexAttribivARB\0"
"\0"
- /* _mesa_function_pool[10156]: BlendFunciARB (will be remapped) */
+ /* _mesa_function_pool[10125]: BlendFunciARB (will be remapped) */
"iii\0"
"glBlendFunciARB\0"
"glBlendFuncIndexedAMD\0"
"\0"
- /* _mesa_function_pool[10199]: GetnUniformivARB (will be remapped) */
+ /* _mesa_function_pool[10168]: GetnUniformivARB (will be remapped) */
"iiip\0"
"glGetnUniformivARB\0"
"\0"
- /* _mesa_function_pool[10224]: GetTexParameterIivEXT (will be remapped) */
+ /* _mesa_function_pool[10193]: GetTexParameterIivEXT (will be remapped) */
"iip\0"
"glGetTexParameterIivEXT\0"
"glGetTexParameterIiv\0"
"\0"
- /* _mesa_function_pool[10274]: CreateProgram (will be remapped) */
+ /* _mesa_function_pool[10243]: CreateProgram (will be remapped) */
"\0"
"glCreateProgram\0"
"\0"
- /* _mesa_function_pool[10292]: LoadTransposeMatrixdARB (will be remapped) */
+ /* _mesa_function_pool[10261]: LoadTransposeMatrixdARB (will be remapped) */
"p\0"
"glLoadTransposeMatrixd\0"
"glLoadTransposeMatrixdARB\0"
"\0"
- /* _mesa_function_pool[10344]: ReleaseShaderCompiler (will be remapped) */
+ /* _mesa_function_pool[10313]: ReleaseShaderCompiler (will be remapped) */
"\0"
"glReleaseShaderCompiler\0"
"\0"
- /* _mesa_function_pool[10370]: GetMinmax (offset 364) */
+ /* _mesa_function_pool[10339]: GetMinmax (offset 364) */
"iiiip\0"
"glGetMinmax\0"
"glGetMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[10404]: StencilFuncSeparate (will be remapped) */
+ /* _mesa_function_pool[10373]: StencilFuncSeparate (will be remapped) */
"iiii\0"
"glStencilFuncSeparate\0"
"\0"
- /* _mesa_function_pool[10432]: SecondaryColor3sEXT (will be remapped) */
+ /* _mesa_function_pool[10401]: SecondaryColor3sEXT (will be remapped) */
"iii\0"
"glSecondaryColor3s\0"
"glSecondaryColor3sEXT\0"
"\0"
- /* _mesa_function_pool[10478]: Color3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[10447]: Color3fVertex3fvSUN (dynamic) */
"pp\0"
"glColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[10504]: GetInteger64i_v (will be remapped) */
+ /* _mesa_function_pool[10473]: GetInteger64i_v (will be remapped) */
"iip\0"
"glGetInteger64i_v\0"
"\0"
- /* _mesa_function_pool[10527]: GetVertexAttribdvNV (will be remapped) */
+ /* _mesa_function_pool[10496]: GetVertexAttribdvNV (will be remapped) */
"iip\0"
"glGetVertexAttribdvNV\0"
"\0"
- /* _mesa_function_pool[10554]: Normal3fv (offset 57) */
+ /* _mesa_function_pool[10523]: Normal3fv (offset 57) */
"p\0"
"glNormal3fv\0"
"\0"
- /* _mesa_function_pool[10569]: GlobalAlphaFactorbSUN (dynamic) */
+ /* _mesa_function_pool[10538]: GlobalAlphaFactorbSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorbSUN\0"
"\0"
- /* _mesa_function_pool[10596]: Color3us (offset 23) */
+ /* _mesa_function_pool[10565]: Color3us (offset 23) */
"iii\0"
"glColor3us\0"
"\0"
- /* _mesa_function_pool[10612]: ImageTransformParameterfvHP (dynamic) */
+ /* _mesa_function_pool[10581]: ImageTransformParameterfvHP (dynamic) */
"iip\0"
"glImageTransformParameterfvHP\0"
"\0"
- /* _mesa_function_pool[10647]: VertexAttrib4ivARB (will be remapped) */
+ /* _mesa_function_pool[10616]: VertexAttrib4ivARB (will be remapped) */
"ip\0"
"glVertexAttrib4iv\0"
"glVertexAttrib4ivARB\0"
"\0"
- /* _mesa_function_pool[10690]: End (offset 43) */
+ /* _mesa_function_pool[10659]: End (offset 43) */
"\0"
"glEnd\0"
"\0"
- /* _mesa_function_pool[10698]: VertexAttrib3fNV (will be remapped) */
+ /* _mesa_function_pool[10667]: VertexAttrib3fNV (will be remapped) */
"ifff\0"
"glVertexAttrib3fNV\0"
"\0"
- /* _mesa_function_pool[10723]: VertexAttribs2dvNV (will be remapped) */
+ /* _mesa_function_pool[10692]: VertexAttribs2dvNV (will be remapped) */
"iip\0"
"glVertexAttribs2dvNV\0"
"\0"
- /* _mesa_function_pool[10749]: GetQueryObjectui64vEXT (will be remapped) */
+ /* _mesa_function_pool[10718]: GetQueryObjectui64vEXT (will be remapped) */
"iip\0"
"glGetQueryObjectui64vEXT\0"
"\0"
- /* _mesa_function_pool[10779]: MultiTexCoord3fvARB (offset 395) */
+ /* _mesa_function_pool[10748]: MultiTexCoord3fvARB (offset 395) */
"ip\0"
"glMultiTexCoord3fv\0"
"glMultiTexCoord3fvARB\0"
"\0"
- /* _mesa_function_pool[10824]: SecondaryColor3dEXT (will be remapped) */
+ /* _mesa_function_pool[10793]: SecondaryColor3dEXT (will be remapped) */
"ddd\0"
"glSecondaryColor3d\0"
"glSecondaryColor3dEXT\0"
"\0"
- /* _mesa_function_pool[10870]: Color3ub (offset 19) */
+ /* _mesa_function_pool[10839]: Color3ub (offset 19) */
"iii\0"
"glColor3ub\0"
"\0"
- /* _mesa_function_pool[10886]: GetProgramParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[10855]: GetProgramParameterfvNV (will be remapped) */
"iiip\0"
"glGetProgramParameterfvNV\0"
"\0"
- /* _mesa_function_pool[10918]: TangentPointerEXT (dynamic) */
+ /* _mesa_function_pool[10887]: TangentPointerEXT (dynamic) */
"iip\0"
"glTangentPointerEXT\0"
"\0"
- /* _mesa_function_pool[10943]: Color4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[10912]: Color4fNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[10978]: GetInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[10947]: GetInstrumentsSGIX (dynamic) */
"\0"
"glGetInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[11001]: GetUniformuivEXT (will be remapped) */
+ /* _mesa_function_pool[10970]: GetUniformuivEXT (will be remapped) */
"iip\0"
"glGetUniformuivEXT\0"
"glGetUniformuiv\0"
"\0"
- /* _mesa_function_pool[11041]: Color3ui (offset 21) */
+ /* _mesa_function_pool[11010]: Color3ui (offset 21) */
"iii\0"
"glColor3ui\0"
"\0"
- /* _mesa_function_pool[11057]: EvalMapsNV (dynamic) */
+ /* _mesa_function_pool[11026]: EvalMapsNV (dynamic) */
"ii\0"
"glEvalMapsNV\0"
"\0"
- /* _mesa_function_pool[11074]: TexSubImage2D (offset 333) */
+ /* _mesa_function_pool[11043]: TexSubImage2D (offset 333) */
"iiiiiiiip\0"
"glTexSubImage2D\0"
"glTexSubImage2DEXT\0"
"\0"
- /* _mesa_function_pool[11120]: FragmentLightivSGIX (dynamic) */
+ /* _mesa_function_pool[11089]: FragmentLightivSGIX (dynamic) */
"iip\0"
"glFragmentLightivSGIX\0"
"\0"
- /* _mesa_function_pool[11147]: GetTexParameterPointervAPPLE (will be remapped) */
+ /* _mesa_function_pool[11116]: GetTexParameterPointervAPPLE (will be remapped) */
"iip\0"
"glGetTexParameterPointervAPPLE\0"
"\0"
- /* _mesa_function_pool[11183]: TexGenfv (offset 191) */
+ /* _mesa_function_pool[11152]: TexGenfv (offset 191) */
"iip\0"
"glTexGenfv\0"
"\0"
- /* _mesa_function_pool[11199]: GetTransformFeedbackVaryingEXT (will be remapped) */
+ /* _mesa_function_pool[11168]: GetTransformFeedbackVaryingEXT (will be remapped) */
"iiipppp\0"
"glGetTransformFeedbackVaryingEXT\0"
"glGetTransformFeedbackVarying\0"
"\0"
- /* _mesa_function_pool[11271]: VertexAttrib4bvARB (will be remapped) */
+ /* _mesa_function_pool[11240]: VertexAttrib4bvARB (will be remapped) */
"ip\0"
"glVertexAttrib4bv\0"
"glVertexAttrib4bvARB\0"
"\0"
- /* _mesa_function_pool[11314]: ShaderBinary (will be remapped) */
+ /* _mesa_function_pool[11283]: ShaderBinary (will be remapped) */
"ipipi\0"
"glShaderBinary\0"
"\0"
- /* _mesa_function_pool[11336]: GetIntegerIndexedvEXT (will be remapped) */
+ /* _mesa_function_pool[11305]: GetIntegerIndexedvEXT (will be remapped) */
"iip\0"
"glGetIntegerIndexedvEXT\0"
"glGetIntegeri_v\0"
"\0"
- /* _mesa_function_pool[11381]: MultiTexCoord4sARB (offset 406) */
+ /* _mesa_function_pool[11350]: MultiTexCoord4sARB (offset 406) */
"iiiii\0"
"glMultiTexCoord4s\0"
"glMultiTexCoord4sARB\0"
"\0"
- /* _mesa_function_pool[11427]: GetFragmentMaterialivSGIX (dynamic) */
+ /* _mesa_function_pool[11396]: GetFragmentMaterialivSGIX (dynamic) */
"iip\0"
"glGetFragmentMaterialivSGIX\0"
"\0"
- /* _mesa_function_pool[11460]: WindowPos4dMESA (will be remapped) */
+ /* _mesa_function_pool[11429]: WindowPos4dMESA (will be remapped) */
"dddd\0"
"glWindowPos4dMESA\0"
"\0"
- /* _mesa_function_pool[11484]: WeightPointerARB (dynamic) */
+ /* _mesa_function_pool[11453]: WeightPointerARB (dynamic) */
"iiip\0"
"glWeightPointerARB\0"
"\0"
- /* _mesa_function_pool[11509]: WindowPos2dMESA (will be remapped) */
+ /* _mesa_function_pool[11478]: WindowPos2dMESA (will be remapped) */
"dd\0"
"glWindowPos2d\0"
"glWindowPos2dARB\0"
"glWindowPos2dMESA\0"
"\0"
- /* _mesa_function_pool[11562]: FramebufferTexture3DEXT (will be remapped) */
+ /* _mesa_function_pool[11531]: FramebufferTexture3DEXT (will be remapped) */
"iiiiii\0"
"glFramebufferTexture3D\0"
"glFramebufferTexture3DEXT\0"
"\0"
- /* _mesa_function_pool[11619]: BlendEquation (offset 337) */
+ /* _mesa_function_pool[11588]: BlendEquation (offset 337) */
"i\0"
"glBlendEquation\0"
"glBlendEquationEXT\0"
"\0"
- /* _mesa_function_pool[11657]: VertexAttrib3dNV (will be remapped) */
+ /* _mesa_function_pool[11626]: VertexAttrib3dNV (will be remapped) */
"iddd\0"
"glVertexAttrib3dNV\0"
"\0"
- /* _mesa_function_pool[11682]: VertexAttrib3dARB (will be remapped) */
+ /* _mesa_function_pool[11651]: VertexAttrib3dARB (will be remapped) */
"iddd\0"
"glVertexAttrib3d\0"
"glVertexAttrib3dARB\0"
"\0"
- /* _mesa_function_pool[11725]: VertexAttribI4usvEXT (will be remapped) */
+ /* _mesa_function_pool[11694]: VertexAttribI4usvEXT (will be remapped) */
"ip\0"
"glVertexAttribI4usvEXT\0"
"glVertexAttribI4usv\0"
"\0"
- /* _mesa_function_pool[11772]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[11741]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
"ppppp\0"
"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[11836]: VertexAttrib4fARB (will be remapped) */
+ /* _mesa_function_pool[11805]: VertexAttrib4fARB (will be remapped) */
"iffff\0"
"glVertexAttrib4f\0"
"glVertexAttrib4fARB\0"
"\0"
- /* _mesa_function_pool[11880]: GetError (offset 261) */
+ /* _mesa_function_pool[11849]: GetError (offset 261) */
"\0"
"glGetError\0"
"\0"
- /* _mesa_function_pool[11893]: IndexFuncEXT (dynamic) */
+ /* _mesa_function_pool[11862]: IndexFuncEXT (dynamic) */
"if\0"
"glIndexFuncEXT\0"
"\0"
- /* _mesa_function_pool[11912]: TexCoord3dv (offset 111) */
+ /* _mesa_function_pool[11881]: TexCoord3dv (offset 111) */
"p\0"
"glTexCoord3dv\0"
"\0"
- /* _mesa_function_pool[11929]: Indexdv (offset 45) */
+ /* _mesa_function_pool[11898]: Indexdv (offset 45) */
"p\0"
"glIndexdv\0"
"\0"
- /* _mesa_function_pool[11942]: FramebufferTexture2DEXT (will be remapped) */
+ /* _mesa_function_pool[11911]: FramebufferTexture2DEXT (will be remapped) */
"iiiii\0"
"glFramebufferTexture2D\0"
"glFramebufferTexture2DEXT\0"
"\0"
- /* _mesa_function_pool[11998]: Normal3s (offset 60) */
+ /* _mesa_function_pool[11967]: Normal3s (offset 60) */
"iii\0"
"glNormal3s\0"
"\0"
- /* _mesa_function_pool[12014]: GetObjectParameterivAPPLE (will be remapped) */
+ /* _mesa_function_pool[11983]: GetObjectParameterivAPPLE (will be remapped) */
"iiip\0"
"glGetObjectParameterivAPPLE\0"
"\0"
- /* _mesa_function_pool[12048]: PushName (offset 201) */
+ /* _mesa_function_pool[12017]: PushName (offset 201) */
"i\0"
"glPushName\0"
"\0"
- /* _mesa_function_pool[12062]: MultiTexCoord2dvARB (offset 385) */
+ /* _mesa_function_pool[12031]: MultiTexCoord2dvARB (offset 385) */
"ip\0"
"glMultiTexCoord2dv\0"
"glMultiTexCoord2dvARB\0"
"\0"
- /* _mesa_function_pool[12107]: CullParameterfvEXT (dynamic) */
+ /* _mesa_function_pool[12076]: CullParameterfvEXT (dynamic) */
"ip\0"
"glCullParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[12132]: Normal3i (offset 58) */
+ /* _mesa_function_pool[12101]: Normal3i (offset 58) */
"iii\0"
"glNormal3i\0"
"\0"
- /* _mesa_function_pool[12148]: ProgramNamedParameter4fvNV (will be remapped) */
+ /* _mesa_function_pool[12117]: ProgramNamedParameter4fvNV (will be remapped) */
"iipp\0"
"glProgramNamedParameter4fvNV\0"
"\0"
- /* _mesa_function_pool[12183]: SecondaryColorPointerEXT (will be remapped) */
+ /* _mesa_function_pool[12152]: SecondaryColorPointerEXT (will be remapped) */
"iiip\0"
"glSecondaryColorPointer\0"
"glSecondaryColorPointerEXT\0"
"\0"
- /* _mesa_function_pool[12240]: VertexAttrib4fvARB (will be remapped) */
+ /* _mesa_function_pool[12209]: VertexAttrib4fvARB (will be remapped) */
"ip\0"
"glVertexAttrib4fv\0"
"glVertexAttrib4fvARB\0"
"\0"
- /* _mesa_function_pool[12283]: PixelTexGenSGIX (will be remapped) */
+ /* _mesa_function_pool[12252]: PixelTexGenSGIX (will be remapped) */
"i\0"
"glPixelTexGenSGIX\0"
"\0"
- /* _mesa_function_pool[12304]: GetActiveUniformARB (will be remapped) */
+ /* _mesa_function_pool[12273]: GetActiveUniformARB (will be remapped) */
"iiipppp\0"
"glGetActiveUniform\0"
"glGetActiveUniformARB\0"
"\0"
- /* _mesa_function_pool[12354]: ImageTransformParameteriHP (dynamic) */
+ /* _mesa_function_pool[12323]: ImageTransformParameteriHP (dynamic) */
"iii\0"
"glImageTransformParameteriHP\0"
"\0"
- /* _mesa_function_pool[12388]: Normal3b (offset 52) */
+ /* _mesa_function_pool[12357]: Normal3b (offset 52) */
"iii\0"
"glNormal3b\0"
"\0"
- /* _mesa_function_pool[12404]: Normal3d (offset 54) */
+ /* _mesa_function_pool[12373]: Normal3d (offset 54) */
"ddd\0"
"glNormal3d\0"
"\0"
- /* _mesa_function_pool[12420]: Uniform1uiEXT (will be remapped) */
+ /* _mesa_function_pool[12389]: Uniform1uiEXT (will be remapped) */
"ii\0"
"glUniform1uiEXT\0"
"glUniform1ui\0"
"\0"
- /* _mesa_function_pool[12453]: Normal3f (offset 56) */
+ /* _mesa_function_pool[12422]: Normal3f (offset 56) */
"fff\0"
"glNormal3f\0"
"\0"
- /* _mesa_function_pool[12469]: MultiTexCoord1svARB (offset 383) */
+ /* _mesa_function_pool[12438]: MultiTexCoord1svARB (offset 383) */
"ip\0"
"glMultiTexCoord1sv\0"
"glMultiTexCoord1svARB\0"
"\0"
- /* _mesa_function_pool[12514]: Indexi (offset 48) */
+ /* _mesa_function_pool[12483]: Indexi (offset 48) */
"i\0"
"glIndexi\0"
"\0"
- /* _mesa_function_pool[12526]: EGLImageTargetTexture2DOES (will be remapped) */
+ /* _mesa_function_pool[12495]: EGLImageTargetTexture2DOES (will be remapped) */
"ip\0"
"glEGLImageTargetTexture2DOES\0"
"\0"
- /* _mesa_function_pool[12559]: EndQueryARB (will be remapped) */
+ /* _mesa_function_pool[12528]: EndQueryARB (will be remapped) */
"i\0"
"glEndQuery\0"
"glEndQueryARB\0"
"\0"
- /* _mesa_function_pool[12587]: DeleteFencesNV (will be remapped) */
+ /* _mesa_function_pool[12556]: DeleteFencesNV (will be remapped) */
"ip\0"
"glDeleteFencesNV\0"
"\0"
- /* _mesa_function_pool[12608]: ColorPointerListIBM (dynamic) */
+ /* _mesa_function_pool[12577]: ColorPointerListIBM (dynamic) */
"iiipi\0"
"glColorPointerListIBM\0"
"\0"
- /* _mesa_function_pool[12637]: BindBufferRangeEXT (will be remapped) */
+ /* _mesa_function_pool[12606]: BindBufferRangeEXT (will be remapped) */
"iiiii\0"
"glBindBufferRangeEXT\0"
"glBindBufferRange\0"
"\0"
- /* _mesa_function_pool[12683]: DepthMask (offset 211) */
+ /* _mesa_function_pool[12652]: DepthMask (offset 211) */
"i\0"
"glDepthMask\0"
"\0"
- /* _mesa_function_pool[12698]: IsShader (will be remapped) */
+ /* _mesa_function_pool[12667]: IsShader (will be remapped) */
"i\0"
"glIsShader\0"
"\0"
- /* _mesa_function_pool[12712]: Indexf (offset 46) */
+ /* _mesa_function_pool[12681]: Indexf (offset 46) */
"f\0"
"glIndexf\0"
"\0"
- /* _mesa_function_pool[12724]: GetImageTransformParameterivHP (dynamic) */
+ /* _mesa_function_pool[12693]: GetImageTransformParameterivHP (dynamic) */
"iip\0"
"glGetImageTransformParameterivHP\0"
"\0"
- /* _mesa_function_pool[12762]: Indexd (offset 44) */
+ /* _mesa_function_pool[12731]: Indexd (offset 44) */
"d\0"
"glIndexd\0"
"\0"
- /* _mesa_function_pool[12774]: GetMaterialiv (offset 270) */
+ /* _mesa_function_pool[12743]: GetMaterialiv (offset 270) */
"iip\0"
"glGetMaterialiv\0"
"\0"
- /* _mesa_function_pool[12795]: StencilOp (offset 244) */
+ /* _mesa_function_pool[12764]: StencilOp (offset 244) */
"iii\0"
"glStencilOp\0"
"\0"
- /* _mesa_function_pool[12812]: WindowPos4ivMESA (will be remapped) */
+ /* _mesa_function_pool[12781]: WindowPos4ivMESA (will be remapped) */
"p\0"
"glWindowPos4ivMESA\0"
"\0"
- /* _mesa_function_pool[12834]: FramebufferTextureLayer (dynamic) */
+ /* _mesa_function_pool[12803]: FramebufferTextureLayer (dynamic) */
"iiiii\0"
"glFramebufferTextureLayerARB\0"
"\0"
- /* _mesa_function_pool[12870]: MultiTexCoord3svARB (offset 399) */
+ /* _mesa_function_pool[12839]: MultiTexCoord3svARB (offset 399) */
"ip\0"
"glMultiTexCoord3sv\0"
"glMultiTexCoord3svARB\0"
"\0"
- /* _mesa_function_pool[12915]: TexEnvfv (offset 185) */
+ /* _mesa_function_pool[12884]: TexEnvfv (offset 185) */
"iip\0"
"glTexEnvfv\0"
"\0"
- /* _mesa_function_pool[12931]: MultiTexCoord4iARB (offset 404) */
+ /* _mesa_function_pool[12900]: MultiTexCoord4iARB (offset 404) */
"iiiii\0"
"glMultiTexCoord4i\0"
"glMultiTexCoord4iARB\0"
"\0"
- /* _mesa_function_pool[12977]: Indexs (offset 50) */
+ /* _mesa_function_pool[12946]: Indexs (offset 50) */
"i\0"
"glIndexs\0"
"\0"
- /* _mesa_function_pool[12989]: Binormal3ivEXT (dynamic) */
+ /* _mesa_function_pool[12958]: Binormal3ivEXT (dynamic) */
"p\0"
"glBinormal3ivEXT\0"
"\0"
- /* _mesa_function_pool[13009]: ResizeBuffersMESA (will be remapped) */
+ /* _mesa_function_pool[12978]: ResizeBuffersMESA (will be remapped) */
"\0"
"glResizeBuffersMESA\0"
"\0"
- /* _mesa_function_pool[13031]: BlendFuncSeparateiARB (will be remapped) */
+ /* _mesa_function_pool[13000]: BlendFuncSeparateiARB (will be remapped) */
"iiiii\0"
"glBlendFuncSeparateiARB\0"
"glBlendFuncSeparateIndexedAMD\0"
"\0"
- /* _mesa_function_pool[13092]: GetUniformivARB (will be remapped) */
+ /* _mesa_function_pool[13061]: GetUniformivARB (will be remapped) */
"iip\0"
"glGetUniformiv\0"
"glGetUniformivARB\0"
"\0"
- /* _mesa_function_pool[13130]: PixelTexGenParameteriSGIS (will be remapped) */
+ /* _mesa_function_pool[13099]: PixelTexGenParameteriSGIS (will be remapped) */
"ii\0"
"glPixelTexGenParameteriSGIS\0"
"\0"
- /* _mesa_function_pool[13162]: VertexPointervINTEL (dynamic) */
+ /* _mesa_function_pool[13131]: VertexPointervINTEL (dynamic) */
"iip\0"
"glVertexPointervINTEL\0"
"\0"
- /* _mesa_function_pool[13189]: Vertex2i (offset 130) */
+ /* _mesa_function_pool[13158]: Vertex2i (offset 130) */
"ii\0"
"glVertex2i\0"
"\0"
- /* _mesa_function_pool[13204]: LoadMatrixf (offset 291) */
+ /* _mesa_function_pool[13173]: LoadMatrixf (offset 291) */
"p\0"
"glLoadMatrixf\0"
"\0"
- /* _mesa_function_pool[13221]: VertexAttribI1uivEXT (will be remapped) */
+ /* _mesa_function_pool[13190]: VertexAttribI1uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI1uivEXT\0"
"glVertexAttribI1uiv\0"
"\0"
- /* _mesa_function_pool[13268]: Vertex2f (offset 128) */
+ /* _mesa_function_pool[13237]: Vertex2f (offset 128) */
"ff\0"
"glVertex2f\0"
"\0"
- /* _mesa_function_pool[13283]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[13252]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[13336]: Color4bv (offset 26) */
+ /* _mesa_function_pool[13305]: Color4bv (offset 26) */
"p\0"
"glColor4bv\0"
"\0"
- /* _mesa_function_pool[13350]: VertexPointer (offset 321) */
+ /* _mesa_function_pool[13319]: VertexPointer (offset 321) */
"iiip\0"
"glVertexPointer\0"
"\0"
- /* _mesa_function_pool[13372]: SecondaryColor3uiEXT (will be remapped) */
+ /* _mesa_function_pool[13341]: SecondaryColor3uiEXT (will be remapped) */
"iii\0"
"glSecondaryColor3ui\0"
"glSecondaryColor3uiEXT\0"
"\0"
- /* _mesa_function_pool[13420]: StartInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[13389]: StartInstrumentsSGIX (dynamic) */
"\0"
"glStartInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[13445]: SecondaryColor3usvEXT (will be remapped) */
+ /* _mesa_function_pool[13414]: SecondaryColor3usvEXT (will be remapped) */
"p\0"
"glSecondaryColor3usv\0"
"glSecondaryColor3usvEXT\0"
"\0"
- /* _mesa_function_pool[13493]: VertexAttrib2fvNV (will be remapped) */
+ /* _mesa_function_pool[13462]: VertexAttrib2fvNV (will be remapped) */
"ip\0"
"glVertexAttrib2fvNV\0"
"\0"
- /* _mesa_function_pool[13517]: ProgramLocalParameter4dvARB (will be remapped) */
+ /* _mesa_function_pool[13486]: ProgramLocalParameter4dvARB (will be remapped) */
"iip\0"
"glProgramLocalParameter4dvARB\0"
"\0"
- /* _mesa_function_pool[13552]: DeleteLists (offset 4) */
+ /* _mesa_function_pool[13521]: DeleteLists (offset 4) */
"ii\0"
"glDeleteLists\0"
"\0"
- /* _mesa_function_pool[13570]: LogicOp (offset 242) */
+ /* _mesa_function_pool[13539]: LogicOp (offset 242) */
"i\0"
"glLogicOp\0"
"\0"
- /* _mesa_function_pool[13583]: MatrixIndexuivARB (dynamic) */
+ /* _mesa_function_pool[13552]: MatrixIndexuivARB (dynamic) */
"ip\0"
"glMatrixIndexuivARB\0"
"\0"
- /* _mesa_function_pool[13607]: Vertex2s (offset 132) */
+ /* _mesa_function_pool[13576]: Vertex2s (offset 132) */
"ii\0"
"glVertex2s\0"
"\0"
- /* _mesa_function_pool[13622]: RenderbufferStorageMultisample (will be remapped) */
+ /* _mesa_function_pool[13591]: RenderbufferStorageMultisample (will be remapped) */
"iiiii\0"
"glRenderbufferStorageMultisample\0"
"glRenderbufferStorageMultisampleEXT\0"
"\0"
- /* _mesa_function_pool[13698]: TexCoord4fv (offset 121) */
+ /* _mesa_function_pool[13667]: TexCoord4fv (offset 121) */
"p\0"
"glTexCoord4fv\0"
"\0"
- /* _mesa_function_pool[13715]: Tangent3sEXT (dynamic) */
+ /* _mesa_function_pool[13684]: Tangent3sEXT (dynamic) */
"iii\0"
"glTangent3sEXT\0"
"\0"
- /* _mesa_function_pool[13735]: GlobalAlphaFactorfSUN (dynamic) */
+ /* _mesa_function_pool[13704]: GlobalAlphaFactorfSUN (dynamic) */
"f\0"
"glGlobalAlphaFactorfSUN\0"
"\0"
- /* _mesa_function_pool[13762]: MultiTexCoord3iARB (offset 396) */
+ /* _mesa_function_pool[13731]: MultiTexCoord3iARB (offset 396) */
"iiii\0"
"glMultiTexCoord3i\0"
"glMultiTexCoord3iARB\0"
"\0"
- /* _mesa_function_pool[13807]: IsProgram (will be remapped) */
+ /* _mesa_function_pool[13776]: IsProgram (will be remapped) */
"i\0"
"glIsProgram\0"
"\0"
- /* _mesa_function_pool[13822]: TexCoordPointerListIBM (dynamic) */
+ /* _mesa_function_pool[13791]: TexCoordPointerListIBM (dynamic) */
"iiipi\0"
"glTexCoordPointerListIBM\0"
"\0"
- /* _mesa_function_pool[13854]: VertexAttribI4svEXT (will be remapped) */
+ /* _mesa_function_pool[13823]: VertexAttribI4svEXT (will be remapped) */
"ip\0"
"glVertexAttribI4svEXT\0"
"glVertexAttribI4sv\0"
"\0"
- /* _mesa_function_pool[13899]: GlobalAlphaFactorusSUN (dynamic) */
+ /* _mesa_function_pool[13868]: GlobalAlphaFactorusSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorusSUN\0"
"\0"
- /* _mesa_function_pool[13927]: VertexAttrib2dvNV (will be remapped) */
+ /* _mesa_function_pool[13896]: VertexAttrib2dvNV (will be remapped) */
"ip\0"
"glVertexAttrib2dvNV\0"
"\0"
- /* _mesa_function_pool[13951]: FramebufferRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[13920]: FramebufferRenderbufferEXT (will be remapped) */
"iiii\0"
"glFramebufferRenderbuffer\0"
"glFramebufferRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[14012]: ClearBufferuiv (will be remapped) */
+ /* _mesa_function_pool[13981]: ClearBufferuiv (will be remapped) */
"iip\0"
"glClearBufferuiv\0"
"\0"
- /* _mesa_function_pool[14034]: VertexAttrib1dvNV (will be remapped) */
+ /* _mesa_function_pool[14003]: VertexAttrib1dvNV (will be remapped) */
"ip\0"
"glVertexAttrib1dvNV\0"
"\0"
- /* _mesa_function_pool[14058]: GenTextures (offset 328) */
+ /* _mesa_function_pool[14027]: GenTextures (offset 328) */
"ip\0"
"glGenTextures\0"
"glGenTexturesEXT\0"
"\0"
- /* _mesa_function_pool[14093]: FramebufferTextureARB (will be remapped) */
+ /* _mesa_function_pool[14062]: FramebufferTextureARB (will be remapped) */
"iiii\0"
"glFramebufferTextureARB\0"
"\0"
- /* _mesa_function_pool[14123]: SetFenceNV (will be remapped) */
+ /* _mesa_function_pool[14092]: SetFenceNV (will be remapped) */
"ii\0"
"glSetFenceNV\0"
"\0"
- /* _mesa_function_pool[14140]: FramebufferTexture1DEXT (will be remapped) */
+ /* _mesa_function_pool[14109]: FramebufferTexture1DEXT (will be remapped) */
"iiiii\0"
"glFramebufferTexture1D\0"
"glFramebufferTexture1DEXT\0"
"\0"
- /* _mesa_function_pool[14196]: GetCombinerOutputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[14165]: GetCombinerOutputParameterivNV (will be remapped) */
"iiip\0"
"glGetCombinerOutputParameterivNV\0"
"\0"
- /* _mesa_function_pool[14235]: PixelTexGenParameterivSGIS (will be remapped) */
+ /* _mesa_function_pool[14204]: MultiModeDrawArraysIBM (will be remapped) */
+ "pppii\0"
+ "glMultiModeDrawArraysIBM\0"
+ "\0"
+ /* _mesa_function_pool[14236]: PixelTexGenParameterivSGIS (will be remapped) */
"ip\0"
"glPixelTexGenParameterivSGIS\0"
"\0"
- /* _mesa_function_pool[14268]: TextureNormalEXT (dynamic) */
+ /* _mesa_function_pool[14269]: TextureNormalEXT (dynamic) */
"i\0"
"glTextureNormalEXT\0"
"\0"
- /* _mesa_function_pool[14290]: IndexPointerListIBM (dynamic) */
+ /* _mesa_function_pool[14291]: IndexPointerListIBM (dynamic) */
"iipi\0"
"glIndexPointerListIBM\0"
"\0"
- /* _mesa_function_pool[14318]: WeightfvARB (dynamic) */
+ /* _mesa_function_pool[14319]: WeightfvARB (dynamic) */
"ip\0"
"glWeightfvARB\0"
"\0"
- /* _mesa_function_pool[14336]: RasterPos2sv (offset 69) */
+ /* _mesa_function_pool[14337]: GetCombinerOutputParameterfvNV (will be remapped) */
+ "iiip\0"
+ "glGetCombinerOutputParameterfvNV\0"
+ "\0"
+ /* _mesa_function_pool[14376]: RasterPos2sv (offset 69) */
"p\0"
"glRasterPos2sv\0"
"\0"
- /* _mesa_function_pool[14354]: Color4ubv (offset 36) */
+ /* _mesa_function_pool[14394]: Color4ubv (offset 36) */
"p\0"
"glColor4ubv\0"
"\0"
- /* _mesa_function_pool[14369]: DrawBuffer (offset 202) */
+ /* _mesa_function_pool[14409]: DrawBuffer (offset 202) */
"i\0"
"glDrawBuffer\0"
"\0"
- /* _mesa_function_pool[14385]: TexCoord2fv (offset 105) */
+ /* _mesa_function_pool[14425]: TexCoord2fv (offset 105) */
"p\0"
"glTexCoord2fv\0"
"\0"
- /* _mesa_function_pool[14402]: WindowPos4fMESA (will be remapped) */
+ /* _mesa_function_pool[14442]: WindowPos4fMESA (will be remapped) */
"ffff\0"
"glWindowPos4fMESA\0"
"\0"
- /* _mesa_function_pool[14426]: TexCoord1sv (offset 101) */
+ /* _mesa_function_pool[14466]: TexCoord1sv (offset 101) */
"p\0"
"glTexCoord1sv\0"
"\0"
- /* _mesa_function_pool[14443]: WindowPos3dvMESA (will be remapped) */
+ /* _mesa_function_pool[14483]: WindowPos3dvMESA (will be remapped) */
"p\0"
"glWindowPos3dv\0"
"glWindowPos3dvARB\0"
"glWindowPos3dvMESA\0"
"\0"
- /* _mesa_function_pool[14498]: DepthFunc (offset 245) */
+ /* _mesa_function_pool[14538]: DepthFunc (offset 245) */
"i\0"
"glDepthFunc\0"
"\0"
- /* _mesa_function_pool[14513]: PixelMapusv (offset 253) */
+ /* _mesa_function_pool[14553]: PixelMapusv (offset 253) */
"iip\0"
"glPixelMapusv\0"
"\0"
- /* _mesa_function_pool[14532]: GetQueryObjecti64vEXT (will be remapped) */
+ /* _mesa_function_pool[14572]: GetQueryObjecti64vEXT (will be remapped) */
"iip\0"
"glGetQueryObjecti64vEXT\0"
"\0"
- /* _mesa_function_pool[14561]: MultiTexCoord1dARB (offset 376) */
+ /* _mesa_function_pool[14601]: MultiTexCoord1dARB (offset 376) */
"id\0"
"glMultiTexCoord1d\0"
"glMultiTexCoord1dARB\0"
"\0"
- /* _mesa_function_pool[14604]: PointParameterivNV (will be remapped) */
+ /* _mesa_function_pool[14644]: PointParameterivNV (will be remapped) */
"ip\0"
"glPointParameteriv\0"
"glPointParameterivNV\0"
"\0"
- /* _mesa_function_pool[14648]: IsSampler (will be remapped) */
+ /* _mesa_function_pool[14688]: IsSampler (will be remapped) */
"i\0"
"glIsSampler\0"
"\0"
- /* _mesa_function_pool[14663]: BlendFunc (offset 241) */
+ /* _mesa_function_pool[14703]: BlendFunc (offset 241) */
"ii\0"
"glBlendFunc\0"
"\0"
- /* _mesa_function_pool[14679]: EndTransformFeedbackEXT (will be remapped) */
+ /* _mesa_function_pool[14719]: EndTransformFeedbackEXT (will be remapped) */
"\0"
"glEndTransformFeedbackEXT\0"
"glEndTransformFeedback\0"
"\0"
- /* _mesa_function_pool[14730]: Uniform2fvARB (will be remapped) */
+ /* _mesa_function_pool[14770]: Uniform2fvARB (will be remapped) */
"iip\0"
"glUniform2fv\0"
"glUniform2fvARB\0"
"\0"
- /* _mesa_function_pool[14764]: BufferParameteriAPPLE (will be remapped) */
+ /* _mesa_function_pool[14804]: BufferParameteriAPPLE (will be remapped) */
"iii\0"
"glBufferParameteriAPPLE\0"
"\0"
- /* _mesa_function_pool[14793]: MultiTexCoord3dvARB (offset 393) */
+ /* _mesa_function_pool[14833]: MultiTexCoord3dvARB (offset 393) */
"ip\0"
"glMultiTexCoord3dv\0"
"glMultiTexCoord3dvARB\0"
"\0"
- /* _mesa_function_pool[14838]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[14878]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[14894]: DeleteObjectARB (will be remapped) */
+ /* _mesa_function_pool[14934]: DeleteObjectARB (will be remapped) */
"i\0"
"glDeleteObjectARB\0"
"\0"
- /* _mesa_function_pool[14915]: GetShaderPrecisionFormat (will be remapped) */
+ /* _mesa_function_pool[14955]: GetShaderPrecisionFormat (will be remapped) */
"iipp\0"
"glGetShaderPrecisionFormat\0"
"\0"
- /* _mesa_function_pool[14948]: MatrixIndexPointerARB (dynamic) */
+ /* _mesa_function_pool[14988]: MatrixIndexPointerARB (dynamic) */
"iiip\0"
"glMatrixIndexPointerARB\0"
"\0"
- /* _mesa_function_pool[14978]: ProgramNamedParameter4dvNV (will be remapped) */
+ /* _mesa_function_pool[15018]: ProgramNamedParameter4dvNV (will be remapped) */
"iipp\0"
"glProgramNamedParameter4dvNV\0"
"\0"
- /* _mesa_function_pool[15013]: Tangent3fvEXT (dynamic) */
+ /* _mesa_function_pool[15053]: Tangent3fvEXT (dynamic) */
"p\0"
"glTangent3fvEXT\0"
"\0"
- /* _mesa_function_pool[15032]: Flush (offset 217) */
+ /* _mesa_function_pool[15072]: Flush (offset 217) */
"\0"
"glFlush\0"
"\0"
- /* _mesa_function_pool[15042]: Color4uiv (offset 38) */
+ /* _mesa_function_pool[15082]: Color4uiv (offset 38) */
"p\0"
"glColor4uiv\0"
"\0"
- /* _mesa_function_pool[15057]: VertexAttribI4iEXT (will be remapped) */
+ /* _mesa_function_pool[15097]: VertexAttribI4iEXT (will be remapped) */
"iiiii\0"
"glVertexAttribI4iEXT\0"
"glVertexAttribI4i\0"
"\0"
- /* _mesa_function_pool[15103]: GenVertexArrays (will be remapped) */
+ /* _mesa_function_pool[15143]: GenVertexArrays (will be remapped) */
"ip\0"
"glGenVertexArrays\0"
"\0"
- /* _mesa_function_pool[15125]: Uniform3uivEXT (will be remapped) */
+ /* _mesa_function_pool[15165]: Uniform3uivEXT (will be remapped) */
"iip\0"
"glUniform3uivEXT\0"
"glUniform3uiv\0"
"\0"
- /* _mesa_function_pool[15161]: RasterPos3sv (offset 77) */
+ /* _mesa_function_pool[15201]: RasterPos3sv (offset 77) */
"p\0"
"glRasterPos3sv\0"
"\0"
- /* _mesa_function_pool[15179]: BindFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[15219]: BindFramebufferEXT (will be remapped) */
"ii\0"
"glBindFramebuffer\0"
"glBindFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[15222]: ReferencePlaneSGIX (dynamic) */
+ /* _mesa_function_pool[15262]: ReferencePlaneSGIX (dynamic) */
"p\0"
"glReferencePlaneSGIX\0"
"\0"
- /* _mesa_function_pool[15246]: PushAttrib (offset 219) */
+ /* _mesa_function_pool[15286]: PushAttrib (offset 219) */
"i\0"
"glPushAttrib\0"
"\0"
- /* _mesa_function_pool[15262]: RasterPos2i (offset 66) */
+ /* _mesa_function_pool[15302]: RasterPos2i (offset 66) */
"ii\0"
"glRasterPos2i\0"
"\0"
- /* _mesa_function_pool[15280]: ValidateProgramARB (will be remapped) */
+ /* _mesa_function_pool[15320]: ValidateProgramARB (will be remapped) */
"i\0"
"glValidateProgram\0"
"glValidateProgramARB\0"
"\0"
- /* _mesa_function_pool[15322]: TexParameteriv (offset 181) */
+ /* _mesa_function_pool[15362]: TexParameteriv (offset 181) */
"iip\0"
"glTexParameteriv\0"
"\0"
- /* _mesa_function_pool[15344]: UnlockArraysEXT (will be remapped) */
+ /* _mesa_function_pool[15384]: UnlockArraysEXT (will be remapped) */
"\0"
"glUnlockArraysEXT\0"
"\0"
- /* _mesa_function_pool[15364]: TexCoord2fColor3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[15404]: TexCoord2fColor3fVertex3fSUN (dynamic) */
"ffffffff\0"
"glTexCoord2fColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[15405]: WindowPos3fvMESA (will be remapped) */
+ /* _mesa_function_pool[15445]: WindowPos3fvMESA (will be remapped) */
"p\0"
"glWindowPos3fv\0"
"glWindowPos3fvARB\0"
"glWindowPos3fvMESA\0"
"\0"
- /* _mesa_function_pool[15460]: RasterPos2f (offset 64) */
+ /* _mesa_function_pool[15500]: RasterPos2f (offset 64) */
"ff\0"
"glRasterPos2f\0"
"\0"
- /* _mesa_function_pool[15478]: VertexAttrib1svNV (will be remapped) */
+ /* _mesa_function_pool[15518]: VertexAttrib1svNV (will be remapped) */
"ip\0"
"glVertexAttrib1svNV\0"
"\0"
- /* _mesa_function_pool[15502]: RasterPos2d (offset 62) */
+ /* _mesa_function_pool[15542]: RasterPos2d (offset 62) */
"dd\0"
"glRasterPos2d\0"
"\0"
- /* _mesa_function_pool[15520]: RasterPos3fv (offset 73) */
+ /* _mesa_function_pool[15560]: RasterPos3fv (offset 73) */
"p\0"
"glRasterPos3fv\0"
"\0"
- /* _mesa_function_pool[15538]: CopyTexSubImage3D (offset 373) */
+ /* _mesa_function_pool[15578]: CopyTexSubImage3D (offset 373) */
"iiiiiiiii\0"
"glCopyTexSubImage3D\0"
"glCopyTexSubImage3DEXT\0"
"\0"
- /* _mesa_function_pool[15592]: VertexAttrib2dARB (will be remapped) */
+ /* _mesa_function_pool[15632]: VertexAttrib2dARB (will be remapped) */
"idd\0"
"glVertexAttrib2d\0"
"glVertexAttrib2dARB\0"
"\0"
- /* _mesa_function_pool[15634]: Color4ub (offset 35) */
+ /* _mesa_function_pool[15674]: Color4ub (offset 35) */
"iiii\0"
"glColor4ub\0"
"\0"
- /* _mesa_function_pool[15651]: GetInteger64v (will be remapped) */
+ /* _mesa_function_pool[15691]: GetInteger64v (will be remapped) */
"ip\0"
"glGetInteger64v\0"
"\0"
- /* _mesa_function_pool[15671]: TextureColorMaskSGIS (dynamic) */
+ /* _mesa_function_pool[15711]: TextureColorMaskSGIS (dynamic) */
"iiii\0"
"glTextureColorMaskSGIS\0"
"\0"
- /* _mesa_function_pool[15700]: RasterPos2s (offset 68) */
+ /* _mesa_function_pool[15740]: RasterPos2s (offset 68) */
"ii\0"
"glRasterPos2s\0"
"\0"
- /* _mesa_function_pool[15718]: GetColorTable (offset 343) */
+ /* _mesa_function_pool[15758]: GetColorTable (offset 343) */
"iiip\0"
"glGetColorTable\0"
"glGetColorTableSGI\0"
"glGetColorTableEXT\0"
"\0"
- /* _mesa_function_pool[15778]: SelectBuffer (offset 195) */
+ /* _mesa_function_pool[15818]: SelectBuffer (offset 195) */
"ip\0"
"glSelectBuffer\0"
"\0"
- /* _mesa_function_pool[15797]: Indexiv (offset 49) */
+ /* _mesa_function_pool[15837]: Indexiv (offset 49) */
"p\0"
"glIndexiv\0"
"\0"
- /* _mesa_function_pool[15810]: TexCoord3i (offset 114) */
+ /* _mesa_function_pool[15850]: TexCoord3i (offset 114) */
"iii\0"
"glTexCoord3i\0"
"\0"
- /* _mesa_function_pool[15828]: CopyColorTable (offset 342) */
+ /* _mesa_function_pool[15868]: CopyColorTable (offset 342) */
"iiiii\0"
"glCopyColorTable\0"
"glCopyColorTableSGI\0"
"\0"
- /* _mesa_function_pool[15872]: GetHistogramParameterfv (offset 362) */
+ /* _mesa_function_pool[15912]: GetHistogramParameterfv (offset 362) */
"iip\0"
"glGetHistogramParameterfv\0"
"glGetHistogramParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[15932]: Frustum (offset 289) */
+ /* _mesa_function_pool[15972]: Frustum (offset 289) */
"dddddd\0"
"glFrustum\0"
"\0"
- /* _mesa_function_pool[15950]: GetString (offset 275) */
+ /* _mesa_function_pool[15990]: GetString (offset 275) */
"i\0"
"glGetString\0"
"\0"
- /* _mesa_function_pool[15965]: ColorPointervINTEL (dynamic) */
+ /* _mesa_function_pool[16005]: ColorPointervINTEL (dynamic) */
"iip\0"
"glColorPointervINTEL\0"
"\0"
- /* _mesa_function_pool[15991]: TexEnvf (offset 184) */
+ /* _mesa_function_pool[16031]: TexEnvf (offset 184) */
"iif\0"
"glTexEnvf\0"
"\0"
- /* _mesa_function_pool[16006]: TexCoord3d (offset 110) */
+ /* _mesa_function_pool[16046]: TexCoord3d (offset 110) */
"ddd\0"
"glTexCoord3d\0"
"\0"
- /* _mesa_function_pool[16024]: AlphaFragmentOp1ATI (will be remapped) */
+ /* _mesa_function_pool[16064]: AlphaFragmentOp1ATI (will be remapped) */
"iiiiii\0"
"glAlphaFragmentOp1ATI\0"
"\0"
- /* _mesa_function_pool[16054]: TexCoord3f (offset 112) */
+ /* _mesa_function_pool[16094]: TexCoord3f (offset 112) */
"fff\0"
"glTexCoord3f\0"
"\0"
- /* _mesa_function_pool[16072]: MultiTexCoord3ivARB (offset 397) */
+ /* _mesa_function_pool[16112]: MultiTexCoord3ivARB (offset 397) */
"ip\0"
"glMultiTexCoord3iv\0"
"glMultiTexCoord3ivARB\0"
"\0"
- /* _mesa_function_pool[16117]: MultiTexCoord2sARB (offset 390) */
+ /* _mesa_function_pool[16157]: MultiTexCoord2sARB (offset 390) */
"iii\0"
"glMultiTexCoord2s\0"
"glMultiTexCoord2sARB\0"
"\0"
- /* _mesa_function_pool[16161]: VertexAttrib1dvARB (will be remapped) */
+ /* _mesa_function_pool[16201]: VertexAttrib1dvARB (will be remapped) */
"ip\0"
"glVertexAttrib1dv\0"
"glVertexAttrib1dvARB\0"
"\0"
- /* _mesa_function_pool[16204]: GetnHistogramARB (will be remapped) */
+ /* _mesa_function_pool[16244]: GetnHistogramARB (will be remapped) */
"iiiiip\0"
"glGetnHistogramARB\0"
"\0"
- /* _mesa_function_pool[16231]: DeleteTextures (offset 327) */
+ /* _mesa_function_pool[16271]: DeleteTextures (offset 327) */
"ip\0"
"glDeleteTextures\0"
"glDeleteTexturesEXT\0"
"\0"
- /* _mesa_function_pool[16272]: TexCoordPointerEXT (will be remapped) */
+ /* _mesa_function_pool[16312]: TexCoordPointerEXT (will be remapped) */
"iiiip\0"
"glTexCoordPointerEXT\0"
"\0"
- /* _mesa_function_pool[16300]: TexSubImage4DSGIS (dynamic) */
+ /* _mesa_function_pool[16340]: TexSubImage4DSGIS (dynamic) */
"iiiiiiiiiiiip\0"
"glTexSubImage4DSGIS\0"
"\0"
- /* _mesa_function_pool[16335]: TexCoord3s (offset 116) */
+ /* _mesa_function_pool[16375]: TexCoord3s (offset 116) */
"iii\0"
"glTexCoord3s\0"
"\0"
- /* _mesa_function_pool[16353]: GetTexLevelParameteriv (offset 285) */
+ /* _mesa_function_pool[16393]: GetTexLevelParameteriv (offset 285) */
"iiip\0"
"glGetTexLevelParameteriv\0"
"\0"
- /* _mesa_function_pool[16384]: CombinerStageParameterfvNV (dynamic) */
+ /* _mesa_function_pool[16424]: CombinerStageParameterfvNV (dynamic) */
"iip\0"
"glCombinerStageParameterfvNV\0"
"\0"
- /* _mesa_function_pool[16418]: StopInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[16458]: StopInstrumentsSGIX (dynamic) */
"i\0"
"glStopInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[16443]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */
+ /* _mesa_function_pool[16483]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */
"fffffffffffffff\0"
"glTexCoord4fColor4fNormal3fVertex4fSUN\0"
"\0"
- /* _mesa_function_pool[16499]: ClearAccum (offset 204) */
+ /* _mesa_function_pool[16539]: ClearAccum (offset 204) */
"ffff\0"
"glClearAccum\0"
"\0"
- /* _mesa_function_pool[16518]: DeformSGIX (dynamic) */
+ /* _mesa_function_pool[16558]: DeformSGIX (dynamic) */
"i\0"
"glDeformSGIX\0"
"\0"
- /* _mesa_function_pool[16534]: GetVertexAttribfvARB (will be remapped) */
+ /* _mesa_function_pool[16574]: GetVertexAttribfvARB (will be remapped) */
"iip\0"
"glGetVertexAttribfv\0"
"glGetVertexAttribfvARB\0"
"\0"
- /* _mesa_function_pool[16582]: SecondaryColor3ivEXT (will be remapped) */
+ /* _mesa_function_pool[16622]: SecondaryColor3ivEXT (will be remapped) */
"p\0"
"glSecondaryColor3iv\0"
"glSecondaryColor3ivEXT\0"
"\0"
- /* _mesa_function_pool[16628]: TexCoord4iv (offset 123) */
+ /* _mesa_function_pool[16668]: TexCoord4iv (offset 123) */
"p\0"
"glTexCoord4iv\0"
"\0"
- /* _mesa_function_pool[16645]: VertexAttribI4uiEXT (will be remapped) */
+ /* _mesa_function_pool[16685]: VertexAttribI4uiEXT (will be remapped) */
"iiiii\0"
"glVertexAttribI4uiEXT\0"
"glVertexAttribI4ui\0"
"\0"
- /* _mesa_function_pool[16693]: GetFragmentMaterialfvSGIX (dynamic) */
+ /* _mesa_function_pool[16733]: GetFragmentMaterialfvSGIX (dynamic) */
"iip\0"
"glGetFragmentMaterialfvSGIX\0"
"\0"
- /* _mesa_function_pool[16726]: UniformMatrix4x2fv (will be remapped) */
+ /* _mesa_function_pool[16766]: UniformMatrix4x2fv (will be remapped) */
"iiip\0"
"glUniformMatrix4x2fv\0"
"\0"
- /* _mesa_function_pool[16753]: GetDetailTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[16793]: GetDetailTexFuncSGIS (dynamic) */
"ip\0"
"glGetDetailTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[16780]: GetCombinerStageParameterfvNV (dynamic) */
+ /* _mesa_function_pool[16820]: GetCombinerStageParameterfvNV (dynamic) */
"iip\0"
"glGetCombinerStageParameterfvNV\0"
"\0"
- /* _mesa_function_pool[16817]: SamplerParameterIiv (will be remapped) */
+ /* _mesa_function_pool[16857]: SamplerParameterIiv (will be remapped) */
"iip\0"
"glSamplerParameterIiv\0"
"\0"
- /* _mesa_function_pool[16844]: PolygonOffset (offset 319) */
+ /* _mesa_function_pool[16884]: PolygonOffset (offset 319) */
"ff\0"
"glPolygonOffset\0"
"\0"
- /* _mesa_function_pool[16864]: BindVertexArray (will be remapped) */
+ /* _mesa_function_pool[16904]: BindVertexArray (will be remapped) */
"i\0"
"glBindVertexArray\0"
"\0"
- /* _mesa_function_pool[16885]: Color4ubVertex2fvSUN (dynamic) */
+ /* _mesa_function_pool[16925]: Color4ubVertex2fvSUN (dynamic) */
"pp\0"
"glColor4ubVertex2fvSUN\0"
"\0"
- /* _mesa_function_pool[16912]: Rectd (offset 86) */
+ /* _mesa_function_pool[16952]: Rectd (offset 86) */
"dddd\0"
"glRectd\0"
"\0"
- /* _mesa_function_pool[16926]: TexFilterFuncSGIS (dynamic) */
+ /* _mesa_function_pool[16966]: TexFilterFuncSGIS (dynamic) */
"iiip\0"
"glTexFilterFuncSGIS\0"
"\0"
- /* _mesa_function_pool[16952]: TextureBarrierNV (will be remapped) */
+ /* _mesa_function_pool[16992]: TextureBarrierNV (will be remapped) */
"\0"
"glTextureBarrierNV\0"
"\0"
- /* _mesa_function_pool[16973]: SamplerParameterfv (will be remapped) */
+ /* _mesa_function_pool[17013]: SamplerParameterfv (will be remapped) */
"iip\0"
"glSamplerParameterfv\0"
"\0"
- /* _mesa_function_pool[16999]: ColorMaskIndexedEXT (will be remapped) */
- "iiiii\0"
- "glColorMaskIndexedEXT\0"
- "glColorMaski\0"
+ /* _mesa_function_pool[17039]: VertexAttribI4ubvEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI4ubvEXT\0"
+ "glVertexAttribI4ubv\0"
"\0"
- /* _mesa_function_pool[17041]: GetAttribLocationARB (will be remapped) */
+ /* _mesa_function_pool[17086]: GetAttribLocationARB (will be remapped) */
"ip\0"
"glGetAttribLocation\0"
"glGetAttribLocationARB\0"
"\0"
- /* _mesa_function_pool[17088]: RasterPos3i (offset 74) */
+ /* _mesa_function_pool[17133]: RasterPos3i (offset 74) */
"iii\0"
"glRasterPos3i\0"
"\0"
- /* _mesa_function_pool[17107]: VertexAttrib4ubvARB (will be remapped) */
+ /* _mesa_function_pool[17152]: BlendEquationSeparateiARB (will be remapped) */
+ "iii\0"
+ "glBlendEquationSeparateiARB\0"
+ "glBlendEquationSeparateIndexedAMD\0"
+ "\0"
+ /* _mesa_function_pool[17219]: VertexAttrib4ubvARB (will be remapped) */
"ip\0"
"glVertexAttrib4ubv\0"
"glVertexAttrib4ubvARB\0"
"\0"
- /* _mesa_function_pool[17152]: DetailTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[17264]: DetailTexFuncSGIS (dynamic) */
"iip\0"
"glDetailTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[17177]: Normal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[17289]: Normal3fVertex3fSUN (dynamic) */
"ffffff\0"
"glNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[17207]: CopyTexImage2D (offset 324) */
+ /* _mesa_function_pool[17319]: CopyTexImage2D (offset 324) */
"iiiiiiii\0"
"glCopyTexImage2D\0"
"glCopyTexImage2DEXT\0"
"\0"
- /* _mesa_function_pool[17254]: GetBufferPointervARB (will be remapped) */
+ /* _mesa_function_pool[17366]: GetBufferPointervARB (will be remapped) */
"iip\0"
"glGetBufferPointerv\0"
"glGetBufferPointervARB\0"
"\0"
- /* _mesa_function_pool[17302]: ProgramEnvParameter4fARB (will be remapped) */
+ /* _mesa_function_pool[17414]: ProgramEnvParameter4fARB (will be remapped) */
"iiffff\0"
"glProgramEnvParameter4fARB\0"
"glProgramParameter4fNV\0"
"\0"
- /* _mesa_function_pool[17360]: Uniform3ivARB (will be remapped) */
+ /* _mesa_function_pool[17472]: Uniform3ivARB (will be remapped) */
"iip\0"
"glUniform3iv\0"
"glUniform3ivARB\0"
"\0"
- /* _mesa_function_pool[17394]: Lightfv (offset 160) */
+ /* _mesa_function_pool[17506]: Lightfv (offset 160) */
"iip\0"
"glLightfv\0"
"\0"
- /* _mesa_function_pool[17409]: PrimitiveRestartIndexNV (will be remapped) */
+ /* _mesa_function_pool[17521]: PrimitiveRestartIndexNV (will be remapped) */
"i\0"
"glPrimitiveRestartIndexNV\0"
"glPrimitiveRestartIndex\0"
"\0"
- /* _mesa_function_pool[17462]: ClearDepth (offset 208) */
+ /* _mesa_function_pool[17574]: ClearDepth (offset 208) */
"d\0"
"glClearDepth\0"
"\0"
- /* _mesa_function_pool[17478]: GetFenceivNV (will be remapped) */
+ /* _mesa_function_pool[17590]: GetFenceivNV (will be remapped) */
"iip\0"
"glGetFenceivNV\0"
"\0"
- /* _mesa_function_pool[17498]: WindowPos4dvMESA (will be remapped) */
+ /* _mesa_function_pool[17610]: WindowPos4dvMESA (will be remapped) */
"p\0"
"glWindowPos4dvMESA\0"
"\0"
- /* _mesa_function_pool[17520]: ColorSubTable (offset 346) */
+ /* _mesa_function_pool[17632]: ColorSubTable (offset 346) */
"iiiiip\0"
"glColorSubTable\0"
"glColorSubTableEXT\0"
"\0"
- /* _mesa_function_pool[17563]: Color4fv (offset 30) */
+ /* _mesa_function_pool[17675]: Color4fv (offset 30) */
"p\0"
"glColor4fv\0"
"\0"
- /* _mesa_function_pool[17577]: MultiTexCoord4ivARB (offset 405) */
+ /* _mesa_function_pool[17689]: MultiTexCoord4ivARB (offset 405) */
"ip\0"
"glMultiTexCoord4iv\0"
"glMultiTexCoord4ivARB\0"
"\0"
- /* _mesa_function_pool[17622]: GetnMinmaxARB (will be remapped) */
+ /* _mesa_function_pool[17734]: GetnMinmaxARB (will be remapped) */
"iiiiip\0"
"glGetnMinmaxARB\0"
"\0"
- /* _mesa_function_pool[17646]: ProgramLocalParameters4fvEXT (will be remapped) */
+ /* _mesa_function_pool[17758]: ProgramLocalParameters4fvEXT (will be remapped) */
"iiip\0"
"glProgramLocalParameters4fvEXT\0"
"\0"
- /* _mesa_function_pool[17683]: ColorPointer (offset 308) */
+ /* _mesa_function_pool[17795]: ColorPointer (offset 308) */
"iiip\0"
"glColorPointer\0"
"\0"
- /* _mesa_function_pool[17704]: Rects (offset 92) */
+ /* _mesa_function_pool[17816]: Rects (offset 92) */
"iiii\0"
"glRects\0"
"\0"
- /* _mesa_function_pool[17718]: GetMapAttribParameterfvNV (dynamic) */
+ /* _mesa_function_pool[17830]: GetMapAttribParameterfvNV (dynamic) */
"iiip\0"
"glGetMapAttribParameterfvNV\0"
"\0"
- /* _mesa_function_pool[17752]: CreateShaderProgramEXT (will be remapped) */
+ /* _mesa_function_pool[17864]: CreateShaderProgramEXT (will be remapped) */
"ip\0"
"glCreateShaderProgramEXT\0"
"\0"
- /* _mesa_function_pool[17781]: ActiveProgramEXT (will be remapped) */
+ /* _mesa_function_pool[17893]: ActiveProgramEXT (will be remapped) */
"i\0"
"glActiveProgramEXT\0"
"\0"
- /* _mesa_function_pool[17803]: Lightiv (offset 162) */
+ /* _mesa_function_pool[17915]: Lightiv (offset 162) */
"iip\0"
"glLightiv\0"
"\0"
- /* _mesa_function_pool[17818]: VertexAttrib4sARB (will be remapped) */
+ /* _mesa_function_pool[17930]: VertexAttrib4sARB (will be remapped) */
"iiiii\0"
"glVertexAttrib4s\0"
"glVertexAttrib4sARB\0"
"\0"
- /* _mesa_function_pool[17862]: GetQueryObjectuivARB (will be remapped) */
+ /* _mesa_function_pool[17974]: GetQueryObjectuivARB (will be remapped) */
"iip\0"
"glGetQueryObjectuiv\0"
"glGetQueryObjectuivARB\0"
"\0"
- /* _mesa_function_pool[17910]: GetTexParameteriv (offset 283) */
+ /* _mesa_function_pool[18022]: GetTexParameteriv (offset 283) */
"iip\0"
"glGetTexParameteriv\0"
"\0"
- /* _mesa_function_pool[17935]: MapParameterivNV (dynamic) */
+ /* _mesa_function_pool[18047]: MapParameterivNV (dynamic) */
"iip\0"
"glMapParameterivNV\0"
"\0"
- /* _mesa_function_pool[17959]: GenRenderbuffersEXT (will be remapped) */
+ /* _mesa_function_pool[18071]: GenRenderbuffersEXT (will be remapped) */
"ip\0"
"glGenRenderbuffers\0"
"glGenRenderbuffersEXT\0"
"\0"
- /* _mesa_function_pool[18004]: ClearBufferfv (will be remapped) */
+ /* _mesa_function_pool[18116]: ClearBufferfv (will be remapped) */
"iip\0"
"glClearBufferfv\0"
"\0"
- /* _mesa_function_pool[18025]: VertexAttrib2dvARB (will be remapped) */
+ /* _mesa_function_pool[18137]: VertexAttrib2dvARB (will be remapped) */
"ip\0"
"glVertexAttrib2dv\0"
"glVertexAttrib2dvARB\0"
"\0"
- /* _mesa_function_pool[18068]: EdgeFlagPointerEXT (will be remapped) */
+ /* _mesa_function_pool[18180]: EdgeFlagPointerEXT (will be remapped) */
"iip\0"
"glEdgeFlagPointerEXT\0"
"\0"
- /* _mesa_function_pool[18094]: VertexAttribs2svNV (will be remapped) */
+ /* _mesa_function_pool[18206]: VertexAttribs2svNV (will be remapped) */
"iip\0"
"glVertexAttribs2svNV\0"
"\0"
- /* _mesa_function_pool[18120]: WeightbvARB (dynamic) */
+ /* _mesa_function_pool[18232]: WeightbvARB (dynamic) */
"ip\0"
"glWeightbvARB\0"
"\0"
- /* _mesa_function_pool[18138]: VertexAttrib2fvARB (will be remapped) */
+ /* _mesa_function_pool[18250]: VertexAttrib2fvARB (will be remapped) */
"ip\0"
"glVertexAttrib2fv\0"
"glVertexAttrib2fvARB\0"
"\0"
- /* _mesa_function_pool[18181]: GetBufferParameterivARB (will be remapped) */
+ /* _mesa_function_pool[18293]: GetBufferParameterivARB (will be remapped) */
"iip\0"
"glGetBufferParameteriv\0"
"glGetBufferParameterivARB\0"
"\0"
- /* _mesa_function_pool[18235]: Rectdv (offset 87) */
+ /* _mesa_function_pool[18347]: Rectdv (offset 87) */
"pp\0"
"glRectdv\0"
"\0"
- /* _mesa_function_pool[18248]: ListParameteriSGIX (dynamic) */
+ /* _mesa_function_pool[18360]: ListParameteriSGIX (dynamic) */
"iii\0"
"glListParameteriSGIX\0"
"\0"
- /* _mesa_function_pool[18274]: BlendEquationiARB (will be remapped) */
+ /* _mesa_function_pool[18386]: BlendEquationiARB (will be remapped) */
"ii\0"
"glBlendEquationiARB\0"
"glBlendEquationIndexedAMD\0"
"\0"
- /* _mesa_function_pool[18324]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[18436]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */
"iffffffffff\0"
"glReplacementCodeuiColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[18383]: InstrumentsBufferSGIX (dynamic) */
+ /* _mesa_function_pool[18495]: InstrumentsBufferSGIX (dynamic) */
"ip\0"
"glInstrumentsBufferSGIX\0"
"\0"
- /* _mesa_function_pool[18411]: VertexAttrib4NivARB (will be remapped) */
+ /* _mesa_function_pool[18523]: VertexAttrib4NivARB (will be remapped) */
"ip\0"
"glVertexAttrib4Niv\0"
"glVertexAttrib4NivARB\0"
"\0"
- /* _mesa_function_pool[18456]: DrawArraysInstancedARB (will be remapped) */
+ /* _mesa_function_pool[18568]: DrawArraysInstancedARB (will be remapped) */
"iiii\0"
"glDrawArraysInstancedARB\0"
"glDrawArraysInstancedEXT\0"
"glDrawArraysInstanced\0"
"\0"
- /* _mesa_function_pool[18534]: GetAttachedShaders (will be remapped) */
+ /* _mesa_function_pool[18646]: GetAttachedShaders (will be remapped) */
"iipp\0"
"glGetAttachedShaders\0"
"\0"
- /* _mesa_function_pool[18561]: GenVertexArraysAPPLE (will be remapped) */
+ /* _mesa_function_pool[18673]: GenVertexArraysAPPLE (will be remapped) */
"ip\0"
"glGenVertexArraysAPPLE\0"
"\0"
- /* _mesa_function_pool[18588]: ClearBufferfi (will be remapped) */
+ /* _mesa_function_pool[18700]: ClearBufferfi (will be remapped) */
"iifi\0"
"glClearBufferfi\0"
"\0"
- /* _mesa_function_pool[18610]: Materialiv (offset 172) */
+ /* _mesa_function_pool[18722]: Materialiv (offset 172) */
"iip\0"
"glMaterialiv\0"
"\0"
- /* _mesa_function_pool[18628]: PushClientAttrib (offset 335) */
+ /* _mesa_function_pool[18740]: PushClientAttrib (offset 335) */
"i\0"
"glPushClientAttrib\0"
"\0"
- /* _mesa_function_pool[18650]: SamplerParameteriv (will be remapped) */
+ /* _mesa_function_pool[18762]: SamplerParameteriv (will be remapped) */
"iip\0"
"glSamplerParameteriv\0"
"\0"
- /* _mesa_function_pool[18676]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[18788]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glTexCoord2fColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[18722]: WindowPos2iMESA (will be remapped) */
+ /* _mesa_function_pool[18834]: WindowPos2iMESA (will be remapped) */
"ii\0"
"glWindowPos2i\0"
"glWindowPos2iARB\0"
"glWindowPos2iMESA\0"
"\0"
- /* _mesa_function_pool[18775]: SampleMaskSGIS (will be remapped) */
+ /* _mesa_function_pool[18887]: SampleMaskSGIS (will be remapped) */
"fi\0"
"glSampleMaskSGIS\0"
"glSampleMaskEXT\0"
"\0"
- /* _mesa_function_pool[18812]: SecondaryColor3fvEXT (will be remapped) */
+ /* _mesa_function_pool[18924]: SecondaryColor3fvEXT (will be remapped) */
"p\0"
"glSecondaryColor3fv\0"
"glSecondaryColor3fvEXT\0"
"\0"
- /* _mesa_function_pool[18858]: PolygonMode (offset 174) */
+ /* _mesa_function_pool[18970]: PolygonMode (offset 174) */
"ii\0"
"glPolygonMode\0"
"\0"
- /* _mesa_function_pool[18876]: CompressedTexSubImage1DARB (will be remapped) */
+ /* _mesa_function_pool[18988]: CompressedTexSubImage1DARB (will be remapped) */
"iiiiiip\0"
"glCompressedTexSubImage1D\0"
"glCompressedTexSubImage1DARB\0"
"\0"
- /* _mesa_function_pool[18940]: VertexAttribI1iEXT (will be remapped) */
+ /* _mesa_function_pool[19052]: VertexAttribI1iEXT (will be remapped) */
"ii\0"
"glVertexAttribI1iEXT\0"
"glVertexAttribI1i\0"
"\0"
- /* _mesa_function_pool[18983]: TexCoord2fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[19095]: TexCoord2fNormal3fVertex3fSUN (dynamic) */
"ffffffff\0"
"glTexCoord2fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[19025]: GetVertexAttribivNV (will be remapped) */
+ /* _mesa_function_pool[19137]: GetVertexAttribivNV (will be remapped) */
"iip\0"
"glGetVertexAttribivNV\0"
"\0"
- /* _mesa_function_pool[19052]: GetProgramStringARB (will be remapped) */
+ /* _mesa_function_pool[19164]: GetProgramStringARB (will be remapped) */
"iip\0"
"glGetProgramStringARB\0"
"\0"
- /* _mesa_function_pool[19079]: GetnUniformdvARB (will be remapped) */
+ /* _mesa_function_pool[19191]: GetnUniformdvARB (will be remapped) */
"iiip\0"
"glGetnUniformdvARB\0"
"\0"
- /* _mesa_function_pool[19104]: VertexAttribIPointerEXT (will be remapped) */
+ /* _mesa_function_pool[19216]: DrawElementsInstancedBaseVertex (will be remapped) */
+ "iiipii\0"
+ "glDrawElementsInstancedBaseVertex\0"
+ "\0"
+ /* _mesa_function_pool[19258]: VertexAttribIPointerEXT (will be remapped) */
"iiiip\0"
"glVertexAttribIPointerEXT\0"
"glVertexAttribIPointer\0"
"\0"
- /* _mesa_function_pool[19160]: TexBumpParameterfvATI (will be remapped) */
+ /* _mesa_function_pool[19314]: TexBumpParameterfvATI (will be remapped) */
"ip\0"
"glTexBumpParameterfvATI\0"
"\0"
- /* _mesa_function_pool[19188]: Tangent3ivEXT (dynamic) */
+ /* _mesa_function_pool[19342]: Tangent3ivEXT (dynamic) */
"p\0"
"glTangent3ivEXT\0"
"\0"
- /* _mesa_function_pool[19207]: CompileShaderARB (will be remapped) */
+ /* _mesa_function_pool[19361]: CompileShaderARB (will be remapped) */
"i\0"
"glCompileShader\0"
"glCompileShaderARB\0"
"\0"
- /* _mesa_function_pool[19245]: DeleteShader (will be remapped) */
+ /* _mesa_function_pool[19399]: DeleteShader (will be remapped) */
"i\0"
"glDeleteShader\0"
"\0"
- /* _mesa_function_pool[19263]: DisableClientState (offset 309) */
+ /* _mesa_function_pool[19417]: DisableClientState (offset 309) */
"i\0"
"glDisableClientState\0"
"\0"
- /* _mesa_function_pool[19287]: TexGeni (offset 192) */
+ /* _mesa_function_pool[19441]: TexGeni (offset 192) */
"iii\0"
"glTexGeni\0"
"\0"
- /* _mesa_function_pool[19302]: TexGenf (offset 190) */
+ /* _mesa_function_pool[19456]: TexGenf (offset 190) */
"iif\0"
"glTexGenf\0"
"\0"
- /* _mesa_function_pool[19317]: Uniform3fARB (will be remapped) */
+ /* _mesa_function_pool[19471]: Uniform3fARB (will be remapped) */
"ifff\0"
"glUniform3f\0"
"glUniform3fARB\0"
"\0"
- /* _mesa_function_pool[19350]: TexGend (offset 188) */
+ /* _mesa_function_pool[19504]: TexGend (offset 188) */
"iid\0"
"glTexGend\0"
"\0"
- /* _mesa_function_pool[19365]: ListParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[19519]: ListParameterfvSGIX (dynamic) */
"iip\0"
"glListParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[19392]: GetPolygonStipple (offset 274) */
+ /* _mesa_function_pool[19546]: GetPolygonStipple (offset 274) */
"p\0"
"glGetPolygonStipple\0"
"\0"
- /* _mesa_function_pool[19415]: Tangent3dvEXT (dynamic) */
+ /* _mesa_function_pool[19569]: Tangent3dvEXT (dynamic) */
"p\0"
"glTangent3dvEXT\0"
"\0"
- /* _mesa_function_pool[19434]: BindBufferOffsetEXT (will be remapped) */
+ /* _mesa_function_pool[19588]: BindBufferOffsetEXT (will be remapped) */
"iiii\0"
"glBindBufferOffsetEXT\0"
"\0"
- /* _mesa_function_pool[19462]: WindowPos3sMESA (will be remapped) */
+ /* _mesa_function_pool[19616]: WindowPos3sMESA (will be remapped) */
"iii\0"
"glWindowPos3s\0"
"glWindowPos3sARB\0"
"glWindowPos3sMESA\0"
"\0"
- /* _mesa_function_pool[19516]: VertexAttrib2svNV (will be remapped) */
+ /* _mesa_function_pool[19670]: VertexAttrib2svNV (will be remapped) */
"ip\0"
"glVertexAttrib2svNV\0"
"\0"
- /* _mesa_function_pool[19540]: DisableIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[19694]: DisableIndexedEXT (will be remapped) */
"ii\0"
"glDisableIndexedEXT\0"
"glDisablei\0"
"\0"
- /* _mesa_function_pool[19575]: BindBufferBaseEXT (will be remapped) */
+ /* _mesa_function_pool[19729]: BindBufferBaseEXT (will be remapped) */
"iii\0"
"glBindBufferBaseEXT\0"
"glBindBufferBase\0"
"\0"
- /* _mesa_function_pool[19617]: TexCoord2fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[19771]: TexCoord2fVertex3fvSUN (dynamic) */
"pp\0"
"glTexCoord2fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[19646]: WindowPos4sMESA (will be remapped) */
+ /* _mesa_function_pool[19800]: WindowPos4sMESA (will be remapped) */
"iiii\0"
"glWindowPos4sMESA\0"
"\0"
- /* _mesa_function_pool[19670]: GetnPixelMapuivARB (will be remapped) */
+ /* _mesa_function_pool[19824]: GetnPixelMapuivARB (will be remapped) */
"iip\0"
"glGetnPixelMapuivARB\0"
"\0"
- /* _mesa_function_pool[19696]: VertexAttrib4NuivARB (will be remapped) */
+ /* _mesa_function_pool[19850]: VertexAttrib4NuivARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nuiv\0"
"glVertexAttrib4NuivARB\0"
"\0"
- /* _mesa_function_pool[19743]: ClientActiveTextureARB (offset 375) */
+ /* _mesa_function_pool[19897]: ClientActiveTextureARB (offset 375) */
"i\0"
"glClientActiveTexture\0"
"glClientActiveTextureARB\0"
"\0"
- /* _mesa_function_pool[19793]: GetSamplerParameterIuiv (will be remapped) */
+ /* _mesa_function_pool[19947]: GetSamplerParameterIuiv (will be remapped) */
"iip\0"
"glGetSamplerParameterIuiv\0"
"\0"
- /* _mesa_function_pool[19824]: ReplacementCodeusvSUN (dynamic) */
+ /* _mesa_function_pool[19978]: ReplacementCodeusvSUN (dynamic) */
"p\0"
"glReplacementCodeusvSUN\0"
"\0"
- /* _mesa_function_pool[19851]: Uniform4fARB (will be remapped) */
+ /* _mesa_function_pool[20005]: Uniform4fARB (will be remapped) */
"iffff\0"
"glUniform4f\0"
"glUniform4fARB\0"
"\0"
- /* _mesa_function_pool[19885]: Color4sv (offset 34) */
+ /* _mesa_function_pool[20039]: Color4sv (offset 34) */
"p\0"
"glColor4sv\0"
"\0"
- /* _mesa_function_pool[19899]: FlushMappedBufferRange (will be remapped) */
+ /* _mesa_function_pool[20053]: FlushMappedBufferRange (will be remapped) */
"iii\0"
"glFlushMappedBufferRange\0"
"\0"
- /* _mesa_function_pool[19929]: IsProgramNV (will be remapped) */
+ /* _mesa_function_pool[20083]: IsProgramNV (will be remapped) */
"i\0"
"glIsProgramARB\0"
"glIsProgramNV\0"
"\0"
- /* _mesa_function_pool[19961]: FlushMappedBufferRangeAPPLE (will be remapped) */
+ /* _mesa_function_pool[20115]: FlushMappedBufferRangeAPPLE (will be remapped) */
"iii\0"
"glFlushMappedBufferRangeAPPLE\0"
"\0"
- /* _mesa_function_pool[19996]: PixelZoom (offset 246) */
+ /* _mesa_function_pool[20150]: PixelZoom (offset 246) */
"ff\0"
"glPixelZoom\0"
"\0"
- /* _mesa_function_pool[20012]: ReplacementCodePointerSUN (dynamic) */
+ /* _mesa_function_pool[20166]: ReplacementCodePointerSUN (dynamic) */
"iip\0"
"glReplacementCodePointerSUN\0"
"\0"
- /* _mesa_function_pool[20045]: ProgramEnvParameter4dARB (will be remapped) */
+ /* _mesa_function_pool[20199]: ProgramEnvParameter4dARB (will be remapped) */
"iidddd\0"
"glProgramEnvParameter4dARB\0"
"glProgramParameter4dNV\0"
"\0"
- /* _mesa_function_pool[20103]: ColorTableParameterfv (offset 340) */
+ /* _mesa_function_pool[20257]: ColorTableParameterfv (offset 340) */
"iip\0"
"glColorTableParameterfv\0"
"glColorTableParameterfvSGI\0"
"\0"
- /* _mesa_function_pool[20159]: FragmentLightModelfSGIX (dynamic) */
+ /* _mesa_function_pool[20313]: FragmentLightModelfSGIX (dynamic) */
"if\0"
"glFragmentLightModelfSGIX\0"
"\0"
- /* _mesa_function_pool[20189]: Binormal3bvEXT (dynamic) */
+ /* _mesa_function_pool[20343]: Binormal3bvEXT (dynamic) */
"p\0"
"glBinormal3bvEXT\0"
"\0"
- /* _mesa_function_pool[20209]: PixelMapuiv (offset 252) */
+ /* _mesa_function_pool[20363]: PixelMapuiv (offset 252) */
"iip\0"
"glPixelMapuiv\0"
"\0"
- /* _mesa_function_pool[20228]: Color3dv (offset 12) */
+ /* _mesa_function_pool[20382]: Color3dv (offset 12) */
"p\0"
"glColor3dv\0"
"\0"
- /* _mesa_function_pool[20242]: IsTexture (offset 330) */
+ /* _mesa_function_pool[20396]: IsTexture (offset 330) */
"i\0"
"glIsTexture\0"
"glIsTextureEXT\0"
"\0"
- /* _mesa_function_pool[20272]: GenSamplers (will be remapped) */
+ /* _mesa_function_pool[20426]: GenSamplers (will be remapped) */
"ip\0"
"glGenSamplers\0"
"\0"
- /* _mesa_function_pool[20290]: VertexWeightfvEXT (dynamic) */
+ /* _mesa_function_pool[20444]: VertexWeightfvEXT (dynamic) */
"p\0"
"glVertexWeightfvEXT\0"
"\0"
- /* _mesa_function_pool[20313]: VertexAttrib1dARB (will be remapped) */
+ /* _mesa_function_pool[20467]: VertexAttrib1dARB (will be remapped) */
"id\0"
"glVertexAttrib1d\0"
"glVertexAttrib1dARB\0"
"\0"
- /* _mesa_function_pool[20354]: ImageTransformParameterivHP (dynamic) */
+ /* _mesa_function_pool[20508]: ImageTransformParameterivHP (dynamic) */
"iip\0"
"glImageTransformParameterivHP\0"
"\0"
- /* _mesa_function_pool[20389]: TexCoord4i (offset 122) */
+ /* _mesa_function_pool[20543]: TexCoord4i (offset 122) */
"iiii\0"
"glTexCoord4i\0"
"\0"
- /* _mesa_function_pool[20408]: DeleteQueriesARB (will be remapped) */
+ /* _mesa_function_pool[20562]: DeleteQueriesARB (will be remapped) */
"ip\0"
"glDeleteQueries\0"
"glDeleteQueriesARB\0"
"\0"
- /* _mesa_function_pool[20447]: Color4ubVertex2fSUN (dynamic) */
+ /* _mesa_function_pool[20601]: Color4ubVertex2fSUN (dynamic) */
"iiiiff\0"
"glColor4ubVertex2fSUN\0"
"\0"
- /* _mesa_function_pool[20477]: FragmentColorMaterialSGIX (dynamic) */
+ /* _mesa_function_pool[20631]: FragmentColorMaterialSGIX (dynamic) */
"ii\0"
"glFragmentColorMaterialSGIX\0"
"\0"
- /* _mesa_function_pool[20509]: CurrentPaletteMatrixARB (dynamic) */
+ /* _mesa_function_pool[20663]: CurrentPaletteMatrixARB (dynamic) */
"i\0"
"glCurrentPaletteMatrixARB\0"
"\0"
- /* _mesa_function_pool[20538]: GetMapdv (offset 266) */
+ /* _mesa_function_pool[20692]: GetMapdv (offset 266) */
"iip\0"
"glGetMapdv\0"
"\0"
- /* _mesa_function_pool[20554]: ObjectPurgeableAPPLE (will be remapped) */
+ /* _mesa_function_pool[20708]: ObjectPurgeableAPPLE (will be remapped) */
"iii\0"
"glObjectPurgeableAPPLE\0"
"\0"
- /* _mesa_function_pool[20582]: GetStringi (will be remapped) */
+ /* _mesa_function_pool[20736]: GetStringi (will be remapped) */
"ii\0"
"glGetStringi\0"
"\0"
- /* _mesa_function_pool[20599]: SamplePatternSGIS (will be remapped) */
+ /* _mesa_function_pool[20753]: SamplePatternSGIS (will be remapped) */
"i\0"
"glSamplePatternSGIS\0"
"glSamplePatternEXT\0"
"\0"
- /* _mesa_function_pool[20641]: PixelStoref (offset 249) */
+ /* _mesa_function_pool[20795]: PixelStoref (offset 249) */
"if\0"
"glPixelStoref\0"
"\0"
- /* _mesa_function_pool[20659]: IsQueryARB (will be remapped) */
+ /* _mesa_function_pool[20813]: IsQueryARB (will be remapped) */
"i\0"
"glIsQuery\0"
"glIsQueryARB\0"
"\0"
- /* _mesa_function_pool[20685]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[20839]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */
"iiiiifff\0"
"glReplacementCodeuiColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[20734]: PixelStorei (offset 250) */
+ /* _mesa_function_pool[20888]: PixelStorei (offset 250) */
"ii\0"
"glPixelStorei\0"
"\0"
- /* _mesa_function_pool[20752]: VertexAttrib4usvARB (will be remapped) */
+ /* _mesa_function_pool[20906]: VertexAttrib4usvARB (will be remapped) */
"ip\0"
"glVertexAttrib4usv\0"
"glVertexAttrib4usvARB\0"
"\0"
- /* _mesa_function_pool[20797]: LinkProgramARB (will be remapped) */
+ /* _mesa_function_pool[20951]: LinkProgramARB (will be remapped) */
"i\0"
"glLinkProgram\0"
"glLinkProgramARB\0"
"\0"
- /* _mesa_function_pool[20831]: VertexAttrib2fNV (will be remapped) */
+ /* _mesa_function_pool[20985]: VertexAttrib2fNV (will be remapped) */
"iff\0"
"glVertexAttrib2fNV\0"
"\0"
- /* _mesa_function_pool[20855]: ShaderSourceARB (will be remapped) */
+ /* _mesa_function_pool[21009]: ShaderSourceARB (will be remapped) */
"iipp\0"
"glShaderSource\0"
"glShaderSourceARB\0"
"\0"
- /* _mesa_function_pool[20894]: FragmentMaterialiSGIX (dynamic) */
+ /* _mesa_function_pool[21048]: FragmentMaterialiSGIX (dynamic) */
"iii\0"
"glFragmentMaterialiSGIX\0"
"\0"
- /* _mesa_function_pool[20923]: EvalCoord2dv (offset 233) */
+ /* _mesa_function_pool[21077]: EvalCoord2dv (offset 233) */
"p\0"
"glEvalCoord2dv\0"
"\0"
- /* _mesa_function_pool[20941]: VertexAttrib3svARB (will be remapped) */
+ /* _mesa_function_pool[21095]: VertexAttrib3svARB (will be remapped) */
"ip\0"
"glVertexAttrib3sv\0"
"glVertexAttrib3svARB\0"
"\0"
- /* _mesa_function_pool[20984]: ColorMaterial (offset 151) */
+ /* _mesa_function_pool[21138]: ColorMaterial (offset 151) */
"ii\0"
"glColorMaterial\0"
"\0"
- /* _mesa_function_pool[21004]: CompressedTexSubImage3DARB (will be remapped) */
+ /* _mesa_function_pool[21158]: CompressedTexSubImage3DARB (will be remapped) */
"iiiiiiiiiip\0"
"glCompressedTexSubImage3D\0"
"glCompressedTexSubImage3DARB\0"
"\0"
- /* _mesa_function_pool[21072]: WindowPos2ivMESA (will be remapped) */
+ /* _mesa_function_pool[21226]: WindowPos2ivMESA (will be remapped) */
"p\0"
"glWindowPos2iv\0"
"glWindowPos2ivARB\0"
"glWindowPos2ivMESA\0"
"\0"
- /* _mesa_function_pool[21127]: IsFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[21281]: IsFramebufferEXT (will be remapped) */
"i\0"
"glIsFramebuffer\0"
"glIsFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[21165]: Uniform4ivARB (will be remapped) */
+ /* _mesa_function_pool[21319]: Uniform4ivARB (will be remapped) */
"iip\0"
"glUniform4iv\0"
"glUniform4ivARB\0"
"\0"
- /* _mesa_function_pool[21199]: GetVertexAttribdvARB (will be remapped) */
+ /* _mesa_function_pool[21353]: GetVertexAttribdvARB (will be remapped) */
"iip\0"
"glGetVertexAttribdv\0"
"glGetVertexAttribdvARB\0"
"\0"
- /* _mesa_function_pool[21247]: TexBumpParameterivATI (will be remapped) */
+ /* _mesa_function_pool[21401]: TexBumpParameterivATI (will be remapped) */
"ip\0"
"glTexBumpParameterivATI\0"
"\0"
- /* _mesa_function_pool[21275]: GetSeparableFilter (offset 359) */
+ /* _mesa_function_pool[21429]: GetSeparableFilter (offset 359) */
"iiippp\0"
"glGetSeparableFilter\0"
"glGetSeparableFilterEXT\0"
"\0"
- /* _mesa_function_pool[21328]: Binormal3dEXT (dynamic) */
+ /* _mesa_function_pool[21482]: Binormal3dEXT (dynamic) */
"ddd\0"
"glBinormal3dEXT\0"
"\0"
- /* _mesa_function_pool[21349]: SpriteParameteriSGIX (dynamic) */
+ /* _mesa_function_pool[21503]: SpriteParameteriSGIX (dynamic) */
"ii\0"
"glSpriteParameteriSGIX\0"
"\0"
- /* _mesa_function_pool[21376]: RequestResidentProgramsNV (will be remapped) */
+ /* _mesa_function_pool[21530]: RequestResidentProgramsNV (will be remapped) */
"ip\0"
"glRequestResidentProgramsNV\0"
"\0"
- /* _mesa_function_pool[21408]: TagSampleBufferSGIX (dynamic) */
+ /* _mesa_function_pool[21562]: TagSampleBufferSGIX (dynamic) */
"\0"
"glTagSampleBufferSGIX\0"
"\0"
- /* _mesa_function_pool[21432]: TransformFeedbackVaryingsEXT (will be remapped) */
+ /* _mesa_function_pool[21586]: TransformFeedbackVaryingsEXT (will be remapped) */
"iipi\0"
"glTransformFeedbackVaryingsEXT\0"
"glTransformFeedbackVaryings\0"
"\0"
- /* _mesa_function_pool[21497]: FeedbackBuffer (offset 194) */
+ /* _mesa_function_pool[21651]: FeedbackBuffer (offset 194) */
"iip\0"
"glFeedbackBuffer\0"
"\0"
- /* _mesa_function_pool[21519]: RasterPos2iv (offset 67) */
+ /* _mesa_function_pool[21673]: RasterPos2iv (offset 67) */
"p\0"
"glRasterPos2iv\0"
"\0"
- /* _mesa_function_pool[21537]: TexImage1D (offset 182) */
+ /* _mesa_function_pool[21691]: TexImage1D (offset 182) */
"iiiiiiip\0"
"glTexImage1D\0"
"\0"
- /* _mesa_function_pool[21560]: ListParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[21714]: ListParameterivSGIX (dynamic) */
"iip\0"
"glListParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[21587]: MultiDrawElementsEXT (will be remapped) */
+ /* _mesa_function_pool[21741]: MultiDrawElementsEXT (will be remapped) */
"ipipi\0"
"glMultiDrawElements\0"
"glMultiDrawElementsEXT\0"
"\0"
- /* _mesa_function_pool[21637]: Color3s (offset 17) */
+ /* _mesa_function_pool[21791]: Color3s (offset 17) */
"iii\0"
"glColor3s\0"
"\0"
- /* _mesa_function_pool[21652]: Uniform1ivARB (will be remapped) */
+ /* _mesa_function_pool[21806]: Uniform1ivARB (will be remapped) */
"iip\0"
"glUniform1iv\0"
"glUniform1ivARB\0"
"\0"
- /* _mesa_function_pool[21686]: WindowPos2sMESA (will be remapped) */
+ /* _mesa_function_pool[21840]: WindowPos2sMESA (will be remapped) */
"ii\0"
"glWindowPos2s\0"
"glWindowPos2sARB\0"
"glWindowPos2sMESA\0"
"\0"
- /* _mesa_function_pool[21739]: WeightusvARB (dynamic) */
+ /* _mesa_function_pool[21893]: WeightusvARB (dynamic) */
"ip\0"
"glWeightusvARB\0"
"\0"
- /* _mesa_function_pool[21758]: TexCoordPointer (offset 320) */
+ /* _mesa_function_pool[21912]: TexCoordPointer (offset 320) */
"iiip\0"
"glTexCoordPointer\0"
"\0"
- /* _mesa_function_pool[21782]: FogCoordPointerEXT (will be remapped) */
+ /* _mesa_function_pool[21936]: FogCoordPointerEXT (will be remapped) */
"iip\0"
"glFogCoordPointer\0"
"glFogCoordPointerEXT\0"
"\0"
- /* _mesa_function_pool[21826]: GetnSeparableFilterARB (will be remapped) */
+ /* _mesa_function_pool[21980]: GetnSeparableFilterARB (will be remapped) */
"iiiipipp\0"
"glGetnSeparableFilterARB\0"
"\0"
- /* _mesa_function_pool[21861]: IndexMaterialEXT (dynamic) */
+ /* _mesa_function_pool[22015]: IndexMaterialEXT (dynamic) */
"ii\0"
"glIndexMaterialEXT\0"
"\0"
- /* _mesa_function_pool[21884]: Color3i (offset 15) */
+ /* _mesa_function_pool[22038]: Color3i (offset 15) */
"iii\0"
"glColor3i\0"
"\0"
- /* _mesa_function_pool[21899]: FrontFace (offset 157) */
+ /* _mesa_function_pool[22053]: FrontFace (offset 157) */
"i\0"
"glFrontFace\0"
"\0"
- /* _mesa_function_pool[21914]: EvalCoord2d (offset 232) */
+ /* _mesa_function_pool[22068]: EvalCoord2d (offset 232) */
"dd\0"
"glEvalCoord2d\0"
"\0"
- /* _mesa_function_pool[21932]: SecondaryColor3ubvEXT (will be remapped) */
+ /* _mesa_function_pool[22086]: SecondaryColor3ubvEXT (will be remapped) */
"p\0"
"glSecondaryColor3ubv\0"
"glSecondaryColor3ubvEXT\0"
"\0"
- /* _mesa_function_pool[21980]: EvalCoord2f (offset 234) */
+ /* _mesa_function_pool[22134]: EvalCoord2f (offset 234) */
"ff\0"
"glEvalCoord2f\0"
"\0"
- /* _mesa_function_pool[21998]: VertexAttrib4dvARB (will be remapped) */
+ /* _mesa_function_pool[22152]: VertexAttrib4dvARB (will be remapped) */
"ip\0"
"glVertexAttrib4dv\0"
"glVertexAttrib4dvARB\0"
"\0"
- /* _mesa_function_pool[22041]: BindAttribLocationARB (will be remapped) */
+ /* _mesa_function_pool[22195]: BindAttribLocationARB (will be remapped) */
"iip\0"
"glBindAttribLocation\0"
"glBindAttribLocationARB\0"
"\0"
- /* _mesa_function_pool[22091]: Color3b (offset 9) */
+ /* _mesa_function_pool[22245]: Color3b (offset 9) */
"iii\0"
"glColor3b\0"
"\0"
- /* _mesa_function_pool[22106]: MultiTexCoord2dARB (offset 384) */
+ /* _mesa_function_pool[22260]: MultiTexCoord2dARB (offset 384) */
"idd\0"
"glMultiTexCoord2d\0"
"glMultiTexCoord2dARB\0"
"\0"
- /* _mesa_function_pool[22150]: ExecuteProgramNV (will be remapped) */
+ /* _mesa_function_pool[22304]: ExecuteProgramNV (will be remapped) */
"iip\0"
"glExecuteProgramNV\0"
"\0"
- /* _mesa_function_pool[22174]: Color3f (offset 13) */
+ /* _mesa_function_pool[22328]: Color3f (offset 13) */
"fff\0"
"glColor3f\0"
"\0"
- /* _mesa_function_pool[22189]: LightEnviSGIX (dynamic) */
+ /* _mesa_function_pool[22343]: LightEnviSGIX (dynamic) */
"ii\0"
"glLightEnviSGIX\0"
"\0"
- /* _mesa_function_pool[22209]: Color3d (offset 11) */
+ /* _mesa_function_pool[22363]: Color3d (offset 11) */
"ddd\0"
"glColor3d\0"
"\0"
- /* _mesa_function_pool[22224]: Normal3dv (offset 55) */
+ /* _mesa_function_pool[22378]: Normal3dv (offset 55) */
"p\0"
"glNormal3dv\0"
"\0"
- /* _mesa_function_pool[22239]: Lightf (offset 159) */
+ /* _mesa_function_pool[22393]: Lightf (offset 159) */
"iif\0"
"glLightf\0"
"\0"
- /* _mesa_function_pool[22253]: ReplacementCodeuiSUN (dynamic) */
+ /* _mesa_function_pool[22407]: ReplacementCodeuiSUN (dynamic) */
"i\0"
"glReplacementCodeuiSUN\0"
"\0"
- /* _mesa_function_pool[22279]: MatrixMode (offset 293) */
+ /* _mesa_function_pool[22433]: MatrixMode (offset 293) */
"i\0"
"glMatrixMode\0"
"\0"
- /* _mesa_function_pool[22295]: GetPixelMapusv (offset 273) */
+ /* _mesa_function_pool[22449]: GetPixelMapusv (offset 273) */
"ip\0"
"glGetPixelMapusv\0"
"\0"
- /* _mesa_function_pool[22316]: Lighti (offset 161) */
+ /* _mesa_function_pool[22470]: Lighti (offset 161) */
"iii\0"
"glLighti\0"
"\0"
- /* _mesa_function_pool[22330]: VertexAttribPointerNV (will be remapped) */
+ /* _mesa_function_pool[22484]: VertexAttribPointerNV (will be remapped) */
"iiiip\0"
"glVertexAttribPointerNV\0"
"\0"
- /* _mesa_function_pool[22361]: ClearDepthf (will be remapped) */
+ /* _mesa_function_pool[22515]: ClearDepthf (will be remapped) */
"f\0"
"glClearDepthf\0"
"\0"
- /* _mesa_function_pool[22378]: GetBooleanIndexedvEXT (will be remapped) */
+ /* _mesa_function_pool[22532]: GetBooleanIndexedvEXT (will be remapped) */
"iip\0"
"glGetBooleanIndexedvEXT\0"
"glGetBooleani_v\0"
"\0"
- /* _mesa_function_pool[22423]: GetFramebufferAttachmentParameterivEXT (will be remapped) */
+ /* _mesa_function_pool[22577]: GetFramebufferAttachmentParameterivEXT (will be remapped) */
"iiip\0"
"glGetFramebufferAttachmentParameteriv\0"
"glGetFramebufferAttachmentParameterivEXT\0"
"\0"
- /* _mesa_function_pool[22508]: PixelTransformParameterfEXT (dynamic) */
+ /* _mesa_function_pool[22662]: PixelTransformParameterfEXT (dynamic) */
"iif\0"
"glPixelTransformParameterfEXT\0"
"\0"
- /* _mesa_function_pool[22543]: MultiTexCoord4dvARB (offset 401) */
+ /* _mesa_function_pool[22697]: MultiTexCoord4dvARB (offset 401) */
"ip\0"
"glMultiTexCoord4dv\0"
"glMultiTexCoord4dvARB\0"
"\0"
- /* _mesa_function_pool[22588]: PixelTransformParameteriEXT (dynamic) */
+ /* _mesa_function_pool[22742]: PixelTransformParameteriEXT (dynamic) */
"iii\0"
"glPixelTransformParameteriEXT\0"
"\0"
- /* _mesa_function_pool[22623]: GetDoublev (offset 260) */
+ /* _mesa_function_pool[22777]: GetDoublev (offset 260) */
"ip\0"
"glGetDoublev\0"
"\0"
- /* _mesa_function_pool[22640]: MultMatrixd (offset 295) */
+ /* _mesa_function_pool[22794]: MultMatrixd (offset 295) */
"p\0"
"glMultMatrixd\0"
"\0"
- /* _mesa_function_pool[22657]: MultMatrixf (offset 294) */
+ /* _mesa_function_pool[22811]: MultMatrixf (offset 294) */
"p\0"
"glMultMatrixf\0"
"\0"
- /* _mesa_function_pool[22674]: VertexAttribI4bvEXT (will be remapped) */
+ /* _mesa_function_pool[22828]: VertexAttribI4bvEXT (will be remapped) */
"ip\0"
"glVertexAttribI4bvEXT\0"
"glVertexAttribI4bv\0"
"\0"
- /* _mesa_function_pool[22719]: TexCoord2fColor4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[22873]: TexCoord2fColor4ubVertex3fSUN (dynamic) */
"ffiiiifff\0"
"glTexCoord2fColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[22762]: Uniform1iARB (will be remapped) */
+ /* _mesa_function_pool[22916]: Uniform1iARB (will be remapped) */
"ii\0"
"glUniform1i\0"
"glUniform1iARB\0"
"\0"
- /* _mesa_function_pool[22793]: GetnMapfvARB (will be remapped) */
+ /* _mesa_function_pool[22947]: GetnMapfvARB (will be remapped) */
"iiip\0"
"glGetnMapfvARB\0"
"\0"
- /* _mesa_function_pool[22814]: VertexAttribPointerARB (will be remapped) */
+ /* _mesa_function_pool[22968]: VertexAttribPointerARB (will be remapped) */
"iiiiip\0"
"glVertexAttribPointer\0"
"glVertexAttribPointerARB\0"
"\0"
- /* _mesa_function_pool[22869]: VertexAttrib3sNV (will be remapped) */
+ /* _mesa_function_pool[23023]: VertexAttrib3sNV (will be remapped) */
"iiii\0"
"glVertexAttrib3sNV\0"
"\0"
- /* _mesa_function_pool[22894]: SharpenTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[23048]: SharpenTexFuncSGIS (dynamic) */
"iip\0"
"glSharpenTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[22920]: MultiTexCoord4fvARB (offset 403) */
+ /* _mesa_function_pool[23074]: MultiTexCoord4fvARB (offset 403) */
"ip\0"
"glMultiTexCoord4fv\0"
"glMultiTexCoord4fvARB\0"
"\0"
- /* _mesa_function_pool[22965]: Uniform2uiEXT (will be remapped) */
+ /* _mesa_function_pool[23119]: Uniform2uiEXT (will be remapped) */
"iii\0"
"glUniform2uiEXT\0"
"glUniform2ui\0"
"\0"
- /* _mesa_function_pool[22999]: UniformMatrix2x3fv (will be remapped) */
+ /* _mesa_function_pool[23153]: UniformMatrix2x3fv (will be remapped) */
"iiip\0"
"glUniformMatrix2x3fv\0"
"\0"
- /* _mesa_function_pool[23026]: SamplerParameteri (will be remapped) */
+ /* _mesa_function_pool[23180]: SamplerParameteri (will be remapped) */
"iii\0"
"glSamplerParameteri\0"
"\0"
- /* _mesa_function_pool[23051]: SamplerParameterf (will be remapped) */
+ /* _mesa_function_pool[23205]: SamplerParameterf (will be remapped) */
"iif\0"
"glSamplerParameterf\0"
"\0"
- /* _mesa_function_pool[23076]: CombinerParameteriNV (will be remapped) */
+ /* _mesa_function_pool[23230]: CombinerParameteriNV (will be remapped) */
"ii\0"
"glCombinerParameteriNV\0"
"\0"
- /* _mesa_function_pool[23103]: DeleteAsyncMarkersSGIX (dynamic) */
+ /* _mesa_function_pool[23257]: DeleteAsyncMarkersSGIX (dynamic) */
"ii\0"
"glDeleteAsyncMarkersSGIX\0"
"\0"
- /* _mesa_function_pool[23132]: ReplacementCodeusSUN (dynamic) */
+ /* _mesa_function_pool[23286]: ReplacementCodeusSUN (dynamic) */
"i\0"
"glReplacementCodeusSUN\0"
"\0"
- /* _mesa_function_pool[23158]: IsAsyncMarkerSGIX (dynamic) */
+ /* _mesa_function_pool[23312]: IsAsyncMarkerSGIX (dynamic) */
"i\0"
"glIsAsyncMarkerSGIX\0"
"\0"
- /* _mesa_function_pool[23181]: FrameZoomSGIX (dynamic) */
+ /* _mesa_function_pool[23335]: FrameZoomSGIX (dynamic) */
"i\0"
"glFrameZoomSGIX\0"
"\0"
- /* _mesa_function_pool[23200]: Normal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[23354]: Normal3fVertex3fvSUN (dynamic) */
"pp\0"
"glNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[23227]: GetnUniformuivARB (will be remapped) */
+ /* _mesa_function_pool[23381]: GetnUniformuivARB (will be remapped) */
"iiip\0"
"glGetnUniformuivARB\0"
"\0"
- /* _mesa_function_pool[23253]: RasterPos4sv (offset 85) */
+ /* _mesa_function_pool[23407]: RasterPos4sv (offset 85) */
"p\0"
"glRasterPos4sv\0"
"\0"
- /* _mesa_function_pool[23271]: VertexAttrib4NsvARB (will be remapped) */
+ /* _mesa_function_pool[23425]: VertexAttrib4NsvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nsv\0"
"glVertexAttrib4NsvARB\0"
"\0"
- /* _mesa_function_pool[23316]: VertexAttrib3fvARB (will be remapped) */
+ /* _mesa_function_pool[23470]: VertexAttrib3fvARB (will be remapped) */
"ip\0"
"glVertexAttrib3fv\0"
"glVertexAttrib3fvARB\0"
"\0"
- /* _mesa_function_pool[23359]: ClearColor (offset 206) */
+ /* _mesa_function_pool[23513]: ClearColor (offset 206) */
"ffff\0"
"glClearColor\0"
"\0"
- /* _mesa_function_pool[23378]: GetSynciv (will be remapped) */
+ /* _mesa_function_pool[23532]: GetSynciv (will be remapped) */
"iiipp\0"
"glGetSynciv\0"
"\0"
- /* _mesa_function_pool[23397]: ClearColorIiEXT (will be remapped) */
+ /* _mesa_function_pool[23551]: ClearColorIiEXT (will be remapped) */
"iiii\0"
"glClearColorIiEXT\0"
"\0"
- /* _mesa_function_pool[23421]: DeleteFramebuffersEXT (will be remapped) */
+ /* _mesa_function_pool[23575]: DeleteFramebuffersEXT (will be remapped) */
"ip\0"
"glDeleteFramebuffers\0"
"glDeleteFramebuffersEXT\0"
"\0"
- /* _mesa_function_pool[23470]: GlobalAlphaFactorsSUN (dynamic) */
+ /* _mesa_function_pool[23624]: GlobalAlphaFactorsSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorsSUN\0"
"\0"
- /* _mesa_function_pool[23497]: IsEnabledIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[23651]: IsEnabledIndexedEXT (will be remapped) */
"ii\0"
"glIsEnabledIndexedEXT\0"
"glIsEnabledi\0"
"\0"
- /* _mesa_function_pool[23536]: TexEnviv (offset 187) */
+ /* _mesa_function_pool[23690]: TexEnviv (offset 187) */
"iip\0"
"glTexEnviv\0"
"\0"
- /* _mesa_function_pool[23552]: TexSubImage3D (offset 372) */
+ /* _mesa_function_pool[23706]: TexSubImage3D (offset 372) */
"iiiiiiiiiip\0"
"glTexSubImage3D\0"
"glTexSubImage3DEXT\0"
"\0"
- /* _mesa_function_pool[23600]: Tangent3fEXT (dynamic) */
+ /* _mesa_function_pool[23754]: Tangent3fEXT (dynamic) */
"fff\0"
"glTangent3fEXT\0"
"\0"
- /* _mesa_function_pool[23620]: SecondaryColor3uivEXT (will be remapped) */
+ /* _mesa_function_pool[23774]: SecondaryColor3uivEXT (will be remapped) */
"p\0"
"glSecondaryColor3uiv\0"
"glSecondaryColor3uivEXT\0"
"\0"
- /* _mesa_function_pool[23668]: MatrixIndexubvARB (dynamic) */
+ /* _mesa_function_pool[23822]: MatrixIndexubvARB (dynamic) */
"ip\0"
"glMatrixIndexubvARB\0"
"\0"
- /* _mesa_function_pool[23692]: Color4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[23846]: Color4fNormal3fVertex3fSUN (dynamic) */
"ffffffffff\0"
"glColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[23733]: PixelTexGenParameterfSGIS (will be remapped) */
+ /* _mesa_function_pool[23887]: PixelTexGenParameterfSGIS (will be remapped) */
"if\0"
"glPixelTexGenParameterfSGIS\0"
"\0"
- /* _mesa_function_pool[23765]: CreateShader (will be remapped) */
+ /* _mesa_function_pool[23919]: CreateShader (will be remapped) */
"i\0"
"glCreateShader\0"
"\0"
- /* _mesa_function_pool[23783]: GetColorTableParameterfv (offset 344) */
+ /* _mesa_function_pool[23937]: GetColorTableParameterfv (offset 344) */
"iip\0"
"glGetColorTableParameterfv\0"
"glGetColorTableParameterfvSGI\0"
"glGetColorTableParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[23875]: FragmentLightModelfvSGIX (dynamic) */
+ /* _mesa_function_pool[24029]: FragmentLightModelfvSGIX (dynamic) */
"ip\0"
"glFragmentLightModelfvSGIX\0"
"\0"
- /* _mesa_function_pool[23906]: Bitmap (offset 8) */
+ /* _mesa_function_pool[24060]: Bitmap (offset 8) */
"iiffffp\0"
"glBitmap\0"
"\0"
- /* _mesa_function_pool[23924]: MultiTexCoord3fARB (offset 394) */
+ /* _mesa_function_pool[24078]: MultiTexCoord3fARB (offset 394) */
"ifff\0"
"glMultiTexCoord3f\0"
"glMultiTexCoord3fARB\0"
"\0"
- /* _mesa_function_pool[23969]: GetTexLevelParameterfv (offset 284) */
+ /* _mesa_function_pool[24123]: GetTexLevelParameterfv (offset 284) */
"iiip\0"
"glGetTexLevelParameterfv\0"
"\0"
- /* _mesa_function_pool[24000]: GetPixelTexGenParameterfvSGIS (will be remapped) */
+ /* _mesa_function_pool[24154]: GetPixelTexGenParameterfvSGIS (will be remapped) */
"ip\0"
"glGetPixelTexGenParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[24036]: GenFramebuffersEXT (will be remapped) */
+ /* _mesa_function_pool[24190]: GenFramebuffersEXT (will be remapped) */
"ip\0"
"glGenFramebuffers\0"
"glGenFramebuffersEXT\0"
"\0"
- /* _mesa_function_pool[24079]: VertexAttribDivisor (will be remapped) */
+ /* _mesa_function_pool[24233]: VertexAttribDivisor (will be remapped) */
"ii\0"
"glVertexAttribDivisor\0"
"\0"
- /* _mesa_function_pool[24105]: GetProgramParameterdvNV (will be remapped) */
+ /* _mesa_function_pool[24259]: GetProgramParameterdvNV (will be remapped) */
"iiip\0"
"glGetProgramParameterdvNV\0"
"\0"
- /* _mesa_function_pool[24137]: Vertex2sv (offset 133) */
+ /* _mesa_function_pool[24291]: Vertex2sv (offset 133) */
"p\0"
"glVertex2sv\0"
"\0"
- /* _mesa_function_pool[24152]: GetIntegerv (offset 263) */
+ /* _mesa_function_pool[24306]: GetIntegerv (offset 263) */
"ip\0"
"glGetIntegerv\0"
"\0"
- /* _mesa_function_pool[24170]: IsVertexArrayAPPLE (will be remapped) */
+ /* _mesa_function_pool[24324]: IsVertexArrayAPPLE (will be remapped) */
"i\0"
"glIsVertexArray\0"
"glIsVertexArrayAPPLE\0"
"\0"
- /* _mesa_function_pool[24210]: FragmentLightfvSGIX (dynamic) */
+ /* _mesa_function_pool[24364]: FragmentLightfvSGIX (dynamic) */
"iip\0"
"glFragmentLightfvSGIX\0"
"\0"
- /* _mesa_function_pool[24237]: GetnMapdvARB (will be remapped) */
+ /* _mesa_function_pool[24391]: GetnMapdvARB (will be remapped) */
"iiip\0"
"glGetnMapdvARB\0"
"\0"
- /* _mesa_function_pool[24258]: DetachShader (will be remapped) */
+ /* _mesa_function_pool[24412]: DetachShader (will be remapped) */
"ii\0"
"glDetachShader\0"
"\0"
- /* _mesa_function_pool[24277]: VertexAttrib4NubARB (will be remapped) */
+ /* _mesa_function_pool[24431]: VertexAttrib4NubARB (will be remapped) */
"iiiii\0"
"glVertexAttrib4Nub\0"
"glVertexAttrib4NubARB\0"
"\0"
- /* _mesa_function_pool[24325]: GetProgramEnvParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[24479]: GetProgramEnvParameterfvARB (will be remapped) */
"iip\0"
"glGetProgramEnvParameterfvARB\0"
"\0"
- /* _mesa_function_pool[24360]: GetTrackMatrixivNV (will be remapped) */
+ /* _mesa_function_pool[24514]: GetTrackMatrixivNV (will be remapped) */
"iiip\0"
"glGetTrackMatrixivNV\0"
"\0"
- /* _mesa_function_pool[24387]: VertexAttrib3svNV (will be remapped) */
+ /* _mesa_function_pool[24541]: VertexAttrib3svNV (will be remapped) */
"ip\0"
"glVertexAttrib3svNV\0"
"\0"
- /* _mesa_function_pool[24411]: Uniform4fvARB (will be remapped) */
+ /* _mesa_function_pool[24565]: Uniform4fvARB (will be remapped) */
"iip\0"
"glUniform4fv\0"
"glUniform4fvARB\0"
"\0"
- /* _mesa_function_pool[24445]: MultTransposeMatrixfARB (will be remapped) */
+ /* _mesa_function_pool[24599]: MultTransposeMatrixfARB (will be remapped) */
"p\0"
"glMultTransposeMatrixf\0"
"glMultTransposeMatrixfARB\0"
"\0"
- /* _mesa_function_pool[24497]: GetTexEnviv (offset 277) */
+ /* _mesa_function_pool[24651]: GetTexEnviv (offset 277) */
"iip\0"
"glGetTexEnviv\0"
"\0"
- /* _mesa_function_pool[24516]: ColorFragmentOp1ATI (will be remapped) */
+ /* _mesa_function_pool[24670]: ColorFragmentOp1ATI (will be remapped) */
"iiiiiii\0"
"glColorFragmentOp1ATI\0"
"\0"
- /* _mesa_function_pool[24547]: GetUniformfvARB (will be remapped) */
+ /* _mesa_function_pool[24701]: GetUniformfvARB (will be remapped) */
"iip\0"
"glGetUniformfv\0"
"glGetUniformfvARB\0"
"\0"
- /* _mesa_function_pool[24585]: EGLImageTargetRenderbufferStorageOES (will be remapped) */
+ /* _mesa_function_pool[24739]: EGLImageTargetRenderbufferStorageOES (will be remapped) */
"ip\0"
"glEGLImageTargetRenderbufferStorageOES\0"
"\0"
- /* _mesa_function_pool[24628]: VertexAttribI2ivEXT (will be remapped) */
+ /* _mesa_function_pool[24782]: VertexAttribI2ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI2ivEXT\0"
"glVertexAttribI2iv\0"
"\0"
- /* _mesa_function_pool[24673]: PopClientAttrib (offset 334) */
+ /* _mesa_function_pool[24827]: PopClientAttrib (offset 334) */
"\0"
"glPopClientAttrib\0"
"\0"
- /* _mesa_function_pool[24693]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[24847]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
"iffffffffffff\0"
"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[24764]: DetachObjectARB (will be remapped) */
+ /* _mesa_function_pool[24918]: DetachObjectARB (will be remapped) */
"ii\0"
"glDetachObjectARB\0"
"\0"
- /* _mesa_function_pool[24786]: VertexBlendARB (dynamic) */
+ /* _mesa_function_pool[24940]: VertexBlendARB (dynamic) */
"i\0"
"glVertexBlendARB\0"
"\0"
- /* _mesa_function_pool[24806]: WindowPos3iMESA (will be remapped) */
+ /* _mesa_function_pool[24960]: WindowPos3iMESA (will be remapped) */
"iii\0"
"glWindowPos3i\0"
"glWindowPos3iARB\0"
"glWindowPos3iMESA\0"
"\0"
- /* _mesa_function_pool[24860]: SeparableFilter2D (offset 360) */
+ /* _mesa_function_pool[25014]: SeparableFilter2D (offset 360) */
"iiiiiipp\0"
"glSeparableFilter2D\0"
"glSeparableFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[24913]: ProgramParameteriARB (will be remapped) */
+ /* _mesa_function_pool[25067]: ProgramParameteriARB (will be remapped) */
"iii\0"
"glProgramParameteriARB\0"
"\0"
- /* _mesa_function_pool[24941]: Map1d (offset 220) */
+ /* _mesa_function_pool[25095]: Map1d (offset 220) */
"iddiip\0"
"glMap1d\0"
"\0"
- /* _mesa_function_pool[24957]: Map1f (offset 221) */
+ /* _mesa_function_pool[25111]: Map1f (offset 221) */
"iffiip\0"
"glMap1f\0"
"\0"
- /* _mesa_function_pool[24973]: CompressedTexImage2DARB (will be remapped) */
+ /* _mesa_function_pool[25127]: CompressedTexImage2DARB (will be remapped) */
"iiiiiiip\0"
"glCompressedTexImage2D\0"
"glCompressedTexImage2DARB\0"
"\0"
- /* _mesa_function_pool[25032]: ArrayElement (offset 306) */
+ /* _mesa_function_pool[25186]: ArrayElement (offset 306) */
"i\0"
"glArrayElement\0"
"glArrayElementEXT\0"
"\0"
- /* _mesa_function_pool[25068]: TexImage2D (offset 183) */
+ /* _mesa_function_pool[25222]: TexImage2D (offset 183) */
"iiiiiiiip\0"
"glTexImage2D\0"
"\0"
- /* _mesa_function_pool[25092]: DepthBoundsEXT (will be remapped) */
+ /* _mesa_function_pool[25246]: DepthBoundsEXT (will be remapped) */
"dd\0"
"glDepthBoundsEXT\0"
"\0"
- /* _mesa_function_pool[25113]: ProgramParameters4fvNV (will be remapped) */
+ /* _mesa_function_pool[25267]: ProgramParameters4fvNV (will be remapped) */
"iiip\0"
"glProgramParameters4fvNV\0"
"\0"
- /* _mesa_function_pool[25144]: DeformationMap3fSGIX (dynamic) */
+ /* _mesa_function_pool[25298]: DeformationMap3fSGIX (dynamic) */
"iffiiffiiffiip\0"
"glDeformationMap3fSGIX\0"
"\0"
- /* _mesa_function_pool[25183]: GetProgramivNV (will be remapped) */
+ /* _mesa_function_pool[25337]: GetProgramivNV (will be remapped) */
"iip\0"
"glGetProgramivNV\0"
"\0"
- /* _mesa_function_pool[25205]: GetFragDataLocationEXT (will be remapped) */
+ /* _mesa_function_pool[25359]: GetFragDataLocationEXT (will be remapped) */
"ip\0"
"glGetFragDataLocationEXT\0"
"glGetFragDataLocation\0"
"\0"
- /* _mesa_function_pool[25256]: GetMinmaxParameteriv (offset 366) */
+ /* _mesa_function_pool[25410]: GetMinmaxParameteriv (offset 366) */
"iip\0"
"glGetMinmaxParameteriv\0"
"glGetMinmaxParameterivEXT\0"
"\0"
- /* _mesa_function_pool[25310]: PixelTransferf (offset 247) */
+ /* _mesa_function_pool[25464]: PixelTransferf (offset 247) */
"if\0"
"glPixelTransferf\0"
"\0"
- /* _mesa_function_pool[25331]: CopyTexImage1D (offset 323) */
+ /* _mesa_function_pool[25485]: CopyTexImage1D (offset 323) */
"iiiiiii\0"
"glCopyTexImage1D\0"
"glCopyTexImage1DEXT\0"
"\0"
- /* _mesa_function_pool[25377]: PushMatrix (offset 298) */
+ /* _mesa_function_pool[25531]: PushMatrix (offset 298) */
"\0"
"glPushMatrix\0"
"\0"
- /* _mesa_function_pool[25392]: Fogiv (offset 156) */
+ /* _mesa_function_pool[25546]: Fogiv (offset 156) */
"ip\0"
"glFogiv\0"
"\0"
- /* _mesa_function_pool[25404]: TexCoord1dv (offset 95) */
+ /* _mesa_function_pool[25558]: TexCoord1dv (offset 95) */
"p\0"
"glTexCoord1dv\0"
"\0"
- /* _mesa_function_pool[25421]: AlphaFragmentOp3ATI (will be remapped) */
+ /* _mesa_function_pool[25575]: AlphaFragmentOp3ATI (will be remapped) */
"iiiiiiiiiiii\0"
"glAlphaFragmentOp3ATI\0"
"\0"
- /* _mesa_function_pool[25457]: PixelTransferi (offset 248) */
+ /* _mesa_function_pool[25611]: PixelTransferi (offset 248) */
"ii\0"
"glPixelTransferi\0"
"\0"
- /* _mesa_function_pool[25478]: GetnColorTableARB (will be remapped) */
+ /* _mesa_function_pool[25632]: GetnColorTableARB (will be remapped) */
"iiiip\0"
"glGetnColorTableARB\0"
"\0"
- /* _mesa_function_pool[25505]: VertexAttrib3fvNV (will be remapped) */
+ /* _mesa_function_pool[25659]: VertexAttrib3fvNV (will be remapped) */
"ip\0"
"glVertexAttrib3fvNV\0"
"\0"
- /* _mesa_function_pool[25529]: Rotatef (offset 300) */
+ /* _mesa_function_pool[25683]: Rotatef (offset 300) */
"ffff\0"
"glRotatef\0"
"\0"
- /* _mesa_function_pool[25545]: GetFinalCombinerInputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[25699]: GetFinalCombinerInputParameterivNV (will be remapped) */
"iip\0"
"glGetFinalCombinerInputParameterivNV\0"
"\0"
- /* _mesa_function_pool[25587]: Vertex3i (offset 138) */
+ /* _mesa_function_pool[25741]: Vertex3i (offset 138) */
"iii\0"
"glVertex3i\0"
"\0"
- /* _mesa_function_pool[25603]: Vertex3f (offset 136) */
+ /* _mesa_function_pool[25757]: Vertex3f (offset 136) */
"fff\0"
"glVertex3f\0"
"\0"
- /* _mesa_function_pool[25619]: Clear (offset 203) */
+ /* _mesa_function_pool[25773]: Clear (offset 203) */
"i\0"
"glClear\0"
"\0"
- /* _mesa_function_pool[25630]: Vertex3d (offset 134) */
+ /* _mesa_function_pool[25784]: Vertex3d (offset 134) */
"ddd\0"
"glVertex3d\0"
"\0"
- /* _mesa_function_pool[25646]: GetMapParameterivNV (dynamic) */
+ /* _mesa_function_pool[25800]: GetMapParameterivNV (dynamic) */
"iip\0"
"glGetMapParameterivNV\0"
"\0"
- /* _mesa_function_pool[25673]: Uniform4iARB (will be remapped) */
+ /* _mesa_function_pool[25827]: Uniform4iARB (will be remapped) */
"iiiii\0"
"glUniform4i\0"
"glUniform4iARB\0"
"\0"
- /* _mesa_function_pool[25707]: ReadBuffer (offset 254) */
+ /* _mesa_function_pool[25861]: ReadBuffer (offset 254) */
"i\0"
"glReadBuffer\0"
"\0"
- /* _mesa_function_pool[25723]: ConvolutionParameteri (offset 352) */
+ /* _mesa_function_pool[25877]: ConvolutionParameteri (offset 352) */
"iii\0"
"glConvolutionParameteri\0"
"glConvolutionParameteriEXT\0"
"\0"
- /* _mesa_function_pool[25779]: Ortho (offset 296) */
+ /* _mesa_function_pool[25933]: Ortho (offset 296) */
"dddddd\0"
"glOrtho\0"
"\0"
- /* _mesa_function_pool[25795]: Binormal3sEXT (dynamic) */
+ /* _mesa_function_pool[25949]: Binormal3sEXT (dynamic) */
"iii\0"
"glBinormal3sEXT\0"
"\0"
- /* _mesa_function_pool[25816]: ListBase (offset 6) */
+ /* _mesa_function_pool[25970]: ListBase (offset 6) */
"i\0"
"glListBase\0"
"\0"
- /* _mesa_function_pool[25830]: VertexAttribI3ivEXT (will be remapped) */
+ /* _mesa_function_pool[25984]: VertexAttribI3ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI3ivEXT\0"
"glVertexAttribI3iv\0"
"\0"
- /* _mesa_function_pool[25875]: Vertex3s (offset 140) */
+ /* _mesa_function_pool[26029]: Vertex3s (offset 140) */
"iii\0"
"glVertex3s\0"
"\0"
- /* _mesa_function_pool[25891]: ConvolutionParameterf (offset 350) */
+ /* _mesa_function_pool[26045]: ConvolutionParameterf (offset 350) */
"iif\0"
"glConvolutionParameterf\0"
"glConvolutionParameterfEXT\0"
"\0"
- /* _mesa_function_pool[25947]: GetColorTableParameteriv (offset 345) */
+ /* _mesa_function_pool[26101]: GetColorTableParameteriv (offset 345) */
"iip\0"
"glGetColorTableParameteriv\0"
"glGetColorTableParameterivSGI\0"
"glGetColorTableParameterivEXT\0"
"\0"
- /* _mesa_function_pool[26039]: ProgramEnvParameter4dvARB (will be remapped) */
+ /* _mesa_function_pool[26193]: ProgramEnvParameter4dvARB (will be remapped) */
"iip\0"
"glProgramEnvParameter4dvARB\0"
"glProgramParameter4dvNV\0"
"\0"
- /* _mesa_function_pool[26096]: ShadeModel (offset 177) */
+ /* _mesa_function_pool[26250]: ShadeModel (offset 177) */
"i\0"
"glShadeModel\0"
"\0"
- /* _mesa_function_pool[26112]: VertexAttribs2fvNV (will be remapped) */
+ /* _mesa_function_pool[26266]: VertexAttribs2fvNV (will be remapped) */
"iip\0"
"glVertexAttribs2fvNV\0"
"\0"
- /* _mesa_function_pool[26138]: Rectiv (offset 91) */
+ /* _mesa_function_pool[26292]: Rectiv (offset 91) */
"pp\0"
"glRectiv\0"
"\0"
- /* _mesa_function_pool[26151]: UseProgramObjectARB (will be remapped) */
+ /* _mesa_function_pool[26305]: UseProgramObjectARB (will be remapped) */
"i\0"
"glUseProgram\0"
"glUseProgramObjectARB\0"
"\0"
- /* _mesa_function_pool[26189]: GetMapParameterfvNV (dynamic) */
+ /* _mesa_function_pool[26343]: GetMapParameterfvNV (dynamic) */
"iip\0"
"glGetMapParameterfvNV\0"
"\0"
- /* _mesa_function_pool[26216]: EndConditionalRenderNV (will be remapped) */
+ /* _mesa_function_pool[26370]: EndConditionalRenderNV (will be remapped) */
"\0"
"glEndConditionalRenderNV\0"
"glEndConditionalRender\0"
"\0"
- /* _mesa_function_pool[26266]: PassTexCoordATI (will be remapped) */
+ /* _mesa_function_pool[26420]: PassTexCoordATI (will be remapped) */
"iii\0"
"glPassTexCoordATI\0"
"\0"
- /* _mesa_function_pool[26289]: DeleteProgram (will be remapped) */
+ /* _mesa_function_pool[26443]: DeleteProgram (will be remapped) */
"i\0"
"glDeleteProgram\0"
"\0"
- /* _mesa_function_pool[26308]: GetSamplerParameteriv (will be remapped) */
+ /* _mesa_function_pool[26462]: GetSamplerParameteriv (will be remapped) */
"iip\0"
"glGetSamplerParameteriv\0"
"\0"
- /* _mesa_function_pool[26337]: Tangent3dEXT (dynamic) */
+ /* _mesa_function_pool[26491]: Tangent3dEXT (dynamic) */
"ddd\0"
"glTangent3dEXT\0"
"\0"
- /* _mesa_function_pool[26357]: SecondaryColor3dvEXT (will be remapped) */
+ /* _mesa_function_pool[26511]: SecondaryColor3dvEXT (will be remapped) */
"p\0"
"glSecondaryColor3dv\0"
"glSecondaryColor3dvEXT\0"
"\0"
- /* _mesa_function_pool[26403]: AlphaFragmentOp2ATI (will be remapped) */
+ /* _mesa_function_pool[26557]: AlphaFragmentOp2ATI (will be remapped) */
"iiiiiiiii\0"
"glAlphaFragmentOp2ATI\0"
"\0"
- /* _mesa_function_pool[26436]: Vertex2fv (offset 129) */
+ /* _mesa_function_pool[26590]: Vertex2fv (offset 129) */
"p\0"
"glVertex2fv\0"
"\0"
- /* _mesa_function_pool[26451]: MultiDrawArraysEXT (will be remapped) */
+ /* _mesa_function_pool[26605]: MultiDrawArraysEXT (will be remapped) */
"ippi\0"
"glMultiDrawArrays\0"
"glMultiDrawArraysEXT\0"
"\0"
- /* _mesa_function_pool[26496]: BindRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[26650]: BindRenderbufferEXT (will be remapped) */
"ii\0"
"glBindRenderbuffer\0"
"glBindRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[26541]: MultiTexCoord4dARB (offset 400) */
+ /* _mesa_function_pool[26695]: MultiTexCoord4dARB (offset 400) */
"idddd\0"
"glMultiTexCoord4d\0"
"glMultiTexCoord4dARB\0"
"\0"
- /* _mesa_function_pool[26587]: FramebufferTextureFaceARB (will be remapped) */
+ /* _mesa_function_pool[26741]: FramebufferTextureFaceARB (will be remapped) */
"iiiii\0"
"glFramebufferTextureFaceARB\0"
"\0"
- /* _mesa_function_pool[26622]: Vertex3sv (offset 141) */
+ /* _mesa_function_pool[26776]: Vertex3sv (offset 141) */
"p\0"
"glVertex3sv\0"
"\0"
- /* _mesa_function_pool[26637]: SecondaryColor3usEXT (will be remapped) */
+ /* _mesa_function_pool[26791]: SecondaryColor3usEXT (will be remapped) */
"iii\0"
"glSecondaryColor3us\0"
"glSecondaryColor3usEXT\0"
"\0"
- /* _mesa_function_pool[26685]: ProgramLocalParameter4fvARB (will be remapped) */
+ /* _mesa_function_pool[26839]: ProgramLocalParameter4fvARB (will be remapped) */
"iip\0"
"glProgramLocalParameter4fvARB\0"
"\0"
- /* _mesa_function_pool[26720]: DeleteProgramsNV (will be remapped) */
+ /* _mesa_function_pool[26874]: DeleteProgramsNV (will be remapped) */
"ip\0"
"glDeleteProgramsARB\0"
"glDeleteProgramsNV\0"
"\0"
- /* _mesa_function_pool[26763]: EvalMesh1 (offset 236) */
+ /* _mesa_function_pool[26917]: EvalMesh1 (offset 236) */
"iii\0"
"glEvalMesh1\0"
"\0"
- /* _mesa_function_pool[26780]: PauseTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[26934]: PauseTransformFeedback (will be remapped) */
"\0"
"glPauseTransformFeedback\0"
"\0"
- /* _mesa_function_pool[26807]: MultiTexCoord1sARB (offset 382) */
+ /* _mesa_function_pool[26961]: MultiTexCoord1sARB (offset 382) */
"ii\0"
"glMultiTexCoord1s\0"
"glMultiTexCoord1sARB\0"
"\0"
- /* _mesa_function_pool[26850]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[27004]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */
"iffffff\0"
"glReplacementCodeuiColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[26897]: GetVertexAttribPointervNV (will be remapped) */
+ /* _mesa_function_pool[27051]: GetVertexAttribPointervNV (will be remapped) */
"iip\0"
"glGetVertexAttribPointerv\0"
"glGetVertexAttribPointervARB\0"
"glGetVertexAttribPointervNV\0"
"\0"
- /* _mesa_function_pool[26985]: VertexAttribs1fvNV (will be remapped) */
+ /* _mesa_function_pool[27139]: VertexAttribs1fvNV (will be remapped) */
"iip\0"
"glVertexAttribs1fvNV\0"
"\0"
- /* _mesa_function_pool[27011]: MultiTexCoord1dvARB (offset 377) */
+ /* _mesa_function_pool[27165]: MultiTexCoord1dvARB (offset 377) */
"ip\0"
"glMultiTexCoord1dv\0"
"glMultiTexCoord1dvARB\0"
"\0"
- /* _mesa_function_pool[27056]: Uniform2iARB (will be remapped) */
+ /* _mesa_function_pool[27210]: Uniform2iARB (will be remapped) */
"iii\0"
"glUniform2i\0"
"glUniform2iARB\0"
"\0"
- /* _mesa_function_pool[27088]: Vertex2iv (offset 131) */
+ /* _mesa_function_pool[27242]: Vertex2iv (offset 131) */
"p\0"
"glVertex2iv\0"
"\0"
- /* _mesa_function_pool[27103]: GetProgramStringNV (will be remapped) */
+ /* _mesa_function_pool[27257]: GetProgramStringNV (will be remapped) */
"iip\0"
"glGetProgramStringNV\0"
"\0"
- /* _mesa_function_pool[27129]: ColorPointerEXT (will be remapped) */
+ /* _mesa_function_pool[27283]: ColorPointerEXT (will be remapped) */
"iiiip\0"
"glColorPointerEXT\0"
"\0"
- /* _mesa_function_pool[27154]: LineWidth (offset 168) */
+ /* _mesa_function_pool[27308]: LineWidth (offset 168) */
"f\0"
"glLineWidth\0"
"\0"
- /* _mesa_function_pool[27169]: MapBufferARB (will be remapped) */
+ /* _mesa_function_pool[27323]: MapBufferARB (will be remapped) */
"ii\0"
"glMapBuffer\0"
"glMapBufferARB\0"
"\0"
- /* _mesa_function_pool[27200]: MultiDrawElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[27354]: MultiDrawElementsBaseVertex (will be remapped) */
"ipipip\0"
"glMultiDrawElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[27238]: TexParameterIuivEXT (will be remapped) */
+ /* _mesa_function_pool[27392]: TexParameterIuivEXT (will be remapped) */
"iip\0"
"glTexParameterIuivEXT\0"
"glTexParameterIuiv\0"
"\0"
- /* _mesa_function_pool[27284]: Binormal3svEXT (dynamic) */
+ /* _mesa_function_pool[27438]: Binormal3svEXT (dynamic) */
"p\0"
"glBinormal3svEXT\0"
"\0"
- /* _mesa_function_pool[27304]: ApplyTextureEXT (dynamic) */
+ /* _mesa_function_pool[27458]: ApplyTextureEXT (dynamic) */
"i\0"
"glApplyTextureEXT\0"
"\0"
- /* _mesa_function_pool[27325]: GetBufferParameteri64v (will be remapped) */
+ /* _mesa_function_pool[27479]: GetBufferParameteri64v (will be remapped) */
"iip\0"
"glGetBufferParameteri64v\0"
"\0"
- /* _mesa_function_pool[27355]: TexGendv (offset 189) */
+ /* _mesa_function_pool[27509]: TexGendv (offset 189) */
"iip\0"
"glTexGendv\0"
"\0"
- /* _mesa_function_pool[27371]: VertexAttribI3iEXT (will be remapped) */
+ /* _mesa_function_pool[27525]: VertexAttribI3iEXT (will be remapped) */
"iiii\0"
"glVertexAttribI3iEXT\0"
"glVertexAttribI3i\0"
"\0"
- /* _mesa_function_pool[27416]: EnableIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[27570]: EnableIndexedEXT (will be remapped) */
"ii\0"
"glEnableIndexedEXT\0"
"glEnablei\0"
"\0"
- /* _mesa_function_pool[27449]: TextureMaterialEXT (dynamic) */
+ /* _mesa_function_pool[27603]: TextureMaterialEXT (dynamic) */
"ii\0"
"glTextureMaterialEXT\0"
"\0"
- /* _mesa_function_pool[27474]: TextureLightEXT (dynamic) */
+ /* _mesa_function_pool[27628]: TextureLightEXT (dynamic) */
"i\0"
"glTextureLightEXT\0"
"\0"
- /* _mesa_function_pool[27495]: ResetMinmax (offset 370) */
+ /* _mesa_function_pool[27649]: ResetMinmax (offset 370) */
"i\0"
"glResetMinmax\0"
"glResetMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[27529]: SpriteParameterfSGIX (dynamic) */
+ /* _mesa_function_pool[27683]: SpriteParameterfSGIX (dynamic) */
"if\0"
"glSpriteParameterfSGIX\0"
"\0"
- /* _mesa_function_pool[27556]: EnableClientState (offset 313) */
+ /* _mesa_function_pool[27710]: EnableClientState (offset 313) */
"i\0"
"glEnableClientState\0"
"\0"
- /* _mesa_function_pool[27579]: VertexAttrib4sNV (will be remapped) */
+ /* _mesa_function_pool[27733]: VertexAttrib4sNV (will be remapped) */
"iiiii\0"
"glVertexAttrib4sNV\0"
"\0"
- /* _mesa_function_pool[27605]: GetConvolutionParameterfv (offset 357) */
+ /* _mesa_function_pool[27759]: GetConvolutionParameterfv (offset 357) */
"iip\0"
"glGetConvolutionParameterfv\0"
"glGetConvolutionParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[27669]: VertexAttribs4dvNV (will be remapped) */
+ /* _mesa_function_pool[27823]: VertexAttribs4dvNV (will be remapped) */
"iip\0"
"glVertexAttribs4dvNV\0"
"\0"
- /* _mesa_function_pool[27695]: MultiModeDrawArraysIBM (will be remapped) */
- "pppii\0"
- "glMultiModeDrawArraysIBM\0"
- "\0"
- /* _mesa_function_pool[27727]: VertexAttrib4dARB (will be remapped) */
+ /* _mesa_function_pool[27849]: VertexAttrib4dARB (will be remapped) */
"idddd\0"
"glVertexAttrib4d\0"
"glVertexAttrib4dARB\0"
"\0"
- /* _mesa_function_pool[27771]: GetTexBumpParameterfvATI (will be remapped) */
+ /* _mesa_function_pool[27893]: GetTexBumpParameterfvATI (will be remapped) */
"ip\0"
"glGetTexBumpParameterfvATI\0"
"\0"
- /* _mesa_function_pool[27802]: ProgramNamedParameter4dNV (will be remapped) */
+ /* _mesa_function_pool[27924]: ProgramNamedParameter4dNV (will be remapped) */
"iipdddd\0"
"glProgramNamedParameter4dNV\0"
"\0"
- /* _mesa_function_pool[27839]: GetMaterialfv (offset 269) */
+ /* _mesa_function_pool[27961]: GetMaterialfv (offset 269) */
"iip\0"
"glGetMaterialfv\0"
"\0"
- /* _mesa_function_pool[27860]: VertexWeightfEXT (dynamic) */
+ /* _mesa_function_pool[27982]: VertexWeightfEXT (dynamic) */
"f\0"
"glVertexWeightfEXT\0"
"\0"
- /* _mesa_function_pool[27882]: SetFragmentShaderConstantATI (will be remapped) */
+ /* _mesa_function_pool[28004]: SetFragmentShaderConstantATI (will be remapped) */
"ip\0"
"glSetFragmentShaderConstantATI\0"
"\0"
- /* _mesa_function_pool[27917]: Binormal3fEXT (dynamic) */
+ /* _mesa_function_pool[28039]: Binormal3fEXT (dynamic) */
"fff\0"
"glBinormal3fEXT\0"
"\0"
- /* _mesa_function_pool[27938]: CallList (offset 2) */
+ /* _mesa_function_pool[28060]: CallList (offset 2) */
"i\0"
"glCallList\0"
"\0"
- /* _mesa_function_pool[27952]: Materialfv (offset 170) */
+ /* _mesa_function_pool[28074]: Materialfv (offset 170) */
"iip\0"
"glMaterialfv\0"
"\0"
- /* _mesa_function_pool[27970]: TexCoord3fv (offset 113) */
+ /* _mesa_function_pool[28092]: TexCoord3fv (offset 113) */
"p\0"
"glTexCoord3fv\0"
"\0"
- /* _mesa_function_pool[27987]: FogCoordfvEXT (will be remapped) */
+ /* _mesa_function_pool[28109]: FogCoordfvEXT (will be remapped) */
"p\0"
"glFogCoordfv\0"
"glFogCoordfvEXT\0"
"\0"
- /* _mesa_function_pool[28019]: MultiTexCoord1ivARB (offset 381) */
+ /* _mesa_function_pool[28141]: MultiTexCoord1ivARB (offset 381) */
"ip\0"
"glMultiTexCoord1iv\0"
"glMultiTexCoord1ivARB\0"
"\0"
- /* _mesa_function_pool[28064]: SecondaryColor3ubEXT (will be remapped) */
+ /* _mesa_function_pool[28186]: SecondaryColor3ubEXT (will be remapped) */
"iii\0"
"glSecondaryColor3ub\0"
"glSecondaryColor3ubEXT\0"
"\0"
- /* _mesa_function_pool[28112]: MultiTexCoord2ivARB (offset 389) */
+ /* _mesa_function_pool[28234]: MultiTexCoord2ivARB (offset 389) */
"ip\0"
"glMultiTexCoord2iv\0"
"glMultiTexCoord2ivARB\0"
"\0"
- /* _mesa_function_pool[28157]: FogFuncSGIS (dynamic) */
+ /* _mesa_function_pool[28279]: FogFuncSGIS (dynamic) */
"ip\0"
"glFogFuncSGIS\0"
"\0"
- /* _mesa_function_pool[28175]: CopyTexSubImage2D (offset 326) */
+ /* _mesa_function_pool[28297]: CopyTexSubImage2D (offset 326) */
"iiiiiiii\0"
"glCopyTexSubImage2D\0"
"glCopyTexSubImage2DEXT\0"
"\0"
- /* _mesa_function_pool[28228]: GetObjectParameterivARB (will be remapped) */
+ /* _mesa_function_pool[28350]: GetObjectParameterivARB (will be remapped) */
"iip\0"
"glGetObjectParameterivARB\0"
"\0"
- /* _mesa_function_pool[28259]: Color3iv (offset 16) */
+ /* _mesa_function_pool[28381]: Color3iv (offset 16) */
"p\0"
"glColor3iv\0"
"\0"
- /* _mesa_function_pool[28273]: TexCoord4fVertex4fSUN (dynamic) */
+ /* _mesa_function_pool[28395]: TexCoord4fVertex4fSUN (dynamic) */
"ffffffff\0"
"glTexCoord4fVertex4fSUN\0"
"\0"
- /* _mesa_function_pool[28307]: DrawElements (offset 311) */
+ /* _mesa_function_pool[28429]: DrawElements (offset 311) */
"iiip\0"
"glDrawElements\0"
"\0"
- /* _mesa_function_pool[28328]: BindVertexArrayAPPLE (will be remapped) */
+ /* _mesa_function_pool[28450]: BindVertexArrayAPPLE (will be remapped) */
"i\0"
"glBindVertexArrayAPPLE\0"
"\0"
- /* _mesa_function_pool[28354]: GetProgramLocalParameterdvARB (will be remapped) */
+ /* _mesa_function_pool[28476]: GetProgramLocalParameterdvARB (will be remapped) */
"iip\0"
"glGetProgramLocalParameterdvARB\0"
"\0"
- /* _mesa_function_pool[28391]: GetHistogramParameteriv (offset 363) */
+ /* _mesa_function_pool[28513]: GetHistogramParameteriv (offset 363) */
"iip\0"
"glGetHistogramParameteriv\0"
"glGetHistogramParameterivEXT\0"
"\0"
- /* _mesa_function_pool[28451]: MultiTexCoord1iARB (offset 380) */
+ /* _mesa_function_pool[28573]: MultiTexCoord1iARB (offset 380) */
"ii\0"
"glMultiTexCoord1i\0"
"glMultiTexCoord1iARB\0"
"\0"
- /* _mesa_function_pool[28494]: GetConvolutionFilter (offset 356) */
+ /* _mesa_function_pool[28616]: GetConvolutionFilter (offset 356) */
"iiip\0"
"glGetConvolutionFilter\0"
"glGetConvolutionFilterEXT\0"
"\0"
- /* _mesa_function_pool[28549]: GetProgramivARB (will be remapped) */
+ /* _mesa_function_pool[28671]: GetProgramivARB (will be remapped) */
"iip\0"
"glGetProgramivARB\0"
"\0"
- /* _mesa_function_pool[28572]: TexBufferARB (will be remapped) */
+ /* _mesa_function_pool[28694]: TexBufferARB (will be remapped) */
"iii\0"
"glTexBufferARB\0"
"\0"
- /* _mesa_function_pool[28592]: BlendFuncSeparateEXT (will be remapped) */
+ /* _mesa_function_pool[28714]: BlendFuncSeparateEXT (will be remapped) */
"iiii\0"
"glBlendFuncSeparate\0"
"glBlendFuncSeparateEXT\0"
"glBlendFuncSeparateINGR\0"
"\0"
- /* _mesa_function_pool[28665]: MapBufferRange (will be remapped) */
+ /* _mesa_function_pool[28787]: MapBufferRange (will be remapped) */
"iiii\0"
"glMapBufferRange\0"
"\0"
- /* _mesa_function_pool[28688]: ProgramParameters4dvNV (will be remapped) */
+ /* _mesa_function_pool[28810]: ProgramParameters4dvNV (will be remapped) */
"iiip\0"
"glProgramParameters4dvNV\0"
"\0"
- /* _mesa_function_pool[28719]: TexCoord2fColor3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[28841]: TexCoord2fColor3fVertex3fvSUN (dynamic) */
"ppp\0"
"glTexCoord2fColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[28756]: EvalPoint2 (offset 239) */
+ /* _mesa_function_pool[28878]: EvalPoint2 (offset 239) */
"ii\0"
"glEvalPoint2\0"
"\0"
- /* _mesa_function_pool[28773]: Uniform1uivEXT (will be remapped) */
+ /* _mesa_function_pool[28895]: Uniform1uivEXT (will be remapped) */
"iip\0"
"glUniform1uivEXT\0"
"glUniform1uiv\0"
"\0"
- /* _mesa_function_pool[28809]: EvalPoint1 (offset 237) */
+ /* _mesa_function_pool[28931]: EvalPoint1 (offset 237) */
"i\0"
"glEvalPoint1\0"
"\0"
- /* _mesa_function_pool[28825]: Binormal3dvEXT (dynamic) */
+ /* _mesa_function_pool[28947]: Binormal3dvEXT (dynamic) */
"p\0"
"glBinormal3dvEXT\0"
"\0"
- /* _mesa_function_pool[28845]: PopMatrix (offset 297) */
+ /* _mesa_function_pool[28967]: PopMatrix (offset 297) */
"\0"
"glPopMatrix\0"
"\0"
- /* _mesa_function_pool[28859]: GetVertexAttribIuivEXT (will be remapped) */
- "iip\0"
- "glGetVertexAttribIuivEXT\0"
- "glGetVertexAttribIuiv\0"
- "\0"
- /* _mesa_function_pool[28911]: FinishFenceNV (will be remapped) */
+ /* _mesa_function_pool[28981]: FinishFenceNV (will be remapped) */
"i\0"
"glFinishFenceNV\0"
"\0"
- /* _mesa_function_pool[28930]: GetFogFuncSGIS (dynamic) */
+ /* _mesa_function_pool[29000]: GetFogFuncSGIS (dynamic) */
"p\0"
"glGetFogFuncSGIS\0"
"\0"
- /* _mesa_function_pool[28950]: GetUniformLocationARB (will be remapped) */
+ /* _mesa_function_pool[29020]: GetUniformLocationARB (will be remapped) */
"ip\0"
"glGetUniformLocation\0"
"glGetUniformLocationARB\0"
"\0"
- /* _mesa_function_pool[28999]: SecondaryColor3fEXT (will be remapped) */
+ /* _mesa_function_pool[29069]: SecondaryColor3fEXT (will be remapped) */
"fff\0"
"glSecondaryColor3f\0"
"glSecondaryColor3fEXT\0"
"\0"
- /* _mesa_function_pool[29045]: GetTexGeniv (offset 280) */
+ /* _mesa_function_pool[29115]: GetTexGeniv (offset 280) */
"iip\0"
"glGetTexGeniv\0"
"\0"
- /* _mesa_function_pool[29064]: CombinerInputNV (will be remapped) */
+ /* _mesa_function_pool[29134]: CombinerInputNV (will be remapped) */
"iiiiii\0"
"glCombinerInputNV\0"
"\0"
- /* _mesa_function_pool[29090]: VertexAttrib3sARB (will be remapped) */
+ /* _mesa_function_pool[29160]: VertexAttrib3sARB (will be remapped) */
"iiii\0"
"glVertexAttrib3s\0"
"glVertexAttrib3sARB\0"
"\0"
- /* _mesa_function_pool[29133]: IsTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[29203]: IsTransformFeedback (will be remapped) */
"i\0"
"glIsTransformFeedback\0"
"\0"
- /* _mesa_function_pool[29158]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[29228]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[29203]: Map2d (offset 222) */
+ /* _mesa_function_pool[29273]: Map2d (offset 222) */
"iddiiddiip\0"
"glMap2d\0"
"\0"
- /* _mesa_function_pool[29223]: Map2f (offset 223) */
+ /* _mesa_function_pool[29293]: Map2f (offset 223) */
"iffiiffiip\0"
"glMap2f\0"
"\0"
- /* _mesa_function_pool[29243]: ProgramStringARB (will be remapped) */
+ /* _mesa_function_pool[29313]: ProgramStringARB (will be remapped) */
"iiip\0"
"glProgramStringARB\0"
"\0"
- /* _mesa_function_pool[29268]: Vertex4s (offset 148) */
+ /* _mesa_function_pool[29338]: Vertex4s (offset 148) */
"iiii\0"
"glVertex4s\0"
"\0"
- /* _mesa_function_pool[29285]: TexCoord4fVertex4fvSUN (dynamic) */
+ /* _mesa_function_pool[29355]: TexCoord4fVertex4fvSUN (dynamic) */
"pp\0"
"glTexCoord4fVertex4fvSUN\0"
"\0"
- /* _mesa_function_pool[29314]: FragmentLightModelivSGIX (dynamic) */
+ /* _mesa_function_pool[29384]: FragmentLightModelivSGIX (dynamic) */
"ip\0"
"glFragmentLightModelivSGIX\0"
"\0"
- /* _mesa_function_pool[29345]: VertexAttrib1fNV (will be remapped) */
+ /* _mesa_function_pool[29415]: VertexAttrib1fNV (will be remapped) */
"if\0"
"glVertexAttrib1fNV\0"
"\0"
- /* _mesa_function_pool[29368]: Vertex4f (offset 144) */
+ /* _mesa_function_pool[29438]: Vertex4f (offset 144) */
"ffff\0"
"glVertex4f\0"
"\0"
- /* _mesa_function_pool[29385]: EvalCoord1d (offset 228) */
+ /* _mesa_function_pool[29455]: EvalCoord1d (offset 228) */
"d\0"
"glEvalCoord1d\0"
"\0"
- /* _mesa_function_pool[29402]: Vertex4d (offset 142) */
+ /* _mesa_function_pool[29472]: Vertex4d (offset 142) */
"dddd\0"
"glVertex4d\0"
"\0"
- /* _mesa_function_pool[29419]: RasterPos4dv (offset 79) */
+ /* _mesa_function_pool[29489]: RasterPos4dv (offset 79) */
"p\0"
"glRasterPos4dv\0"
"\0"
- /* _mesa_function_pool[29437]: UseShaderProgramEXT (will be remapped) */
+ /* _mesa_function_pool[29507]: UseShaderProgramEXT (will be remapped) */
"ii\0"
"glUseShaderProgramEXT\0"
"\0"
- /* _mesa_function_pool[29463]: FragmentLightfSGIX (dynamic) */
+ /* _mesa_function_pool[29533]: FragmentLightfSGIX (dynamic) */
"iif\0"
"glFragmentLightfSGIX\0"
"\0"
- /* _mesa_function_pool[29489]: GetCompressedTexImageARB (will be remapped) */
+ /* _mesa_function_pool[29559]: GetCompressedTexImageARB (will be remapped) */
"iip\0"
"glGetCompressedTexImage\0"
"glGetCompressedTexImageARB\0"
"\0"
- /* _mesa_function_pool[29545]: GetTexGenfv (offset 279) */
+ /* _mesa_function_pool[29615]: GetTexGenfv (offset 279) */
"iip\0"
"glGetTexGenfv\0"
"\0"
- /* _mesa_function_pool[29564]: Vertex4i (offset 146) */
+ /* _mesa_function_pool[29634]: Vertex4i (offset 146) */
"iiii\0"
"glVertex4i\0"
"\0"
- /* _mesa_function_pool[29581]: VertexWeightPointerEXT (dynamic) */
+ /* _mesa_function_pool[29651]: VertexWeightPointerEXT (dynamic) */
"iiip\0"
"glVertexWeightPointerEXT\0"
"\0"
- /* _mesa_function_pool[29612]: GetHistogram (offset 361) */
+ /* _mesa_function_pool[29682]: GetHistogram (offset 361) */
"iiiip\0"
"glGetHistogram\0"
"glGetHistogramEXT\0"
"\0"
- /* _mesa_function_pool[29652]: ActiveStencilFaceEXT (will be remapped) */
+ /* _mesa_function_pool[29722]: ActiveStencilFaceEXT (will be remapped) */
"i\0"
"glActiveStencilFaceEXT\0"
"\0"
- /* _mesa_function_pool[29678]: StencilFuncSeparateATI (will be remapped) */
+ /* _mesa_function_pool[29748]: StencilFuncSeparateATI (will be remapped) */
"iiii\0"
"glStencilFuncSeparateATI\0"
"\0"
- /* _mesa_function_pool[29709]: Materialf (offset 169) */
+ /* _mesa_function_pool[29779]: Materialf (offset 169) */
"iif\0"
"glMaterialf\0"
"\0"
- /* _mesa_function_pool[29726]: GetShaderSourceARB (will be remapped) */
+ /* _mesa_function_pool[29796]: GetShaderSourceARB (will be remapped) */
"iipp\0"
"glGetShaderSource\0"
"glGetShaderSourceARB\0"
"\0"
- /* _mesa_function_pool[29771]: IglooInterfaceSGIX (dynamic) */
+ /* _mesa_function_pool[29841]: IglooInterfaceSGIX (dynamic) */
"ip\0"
"glIglooInterfaceSGIX\0"
"\0"
- /* _mesa_function_pool[29796]: Materiali (offset 171) */
+ /* _mesa_function_pool[29866]: Materiali (offset 171) */
"iii\0"
"glMateriali\0"
"\0"
- /* _mesa_function_pool[29813]: VertexAttrib4dNV (will be remapped) */
+ /* _mesa_function_pool[29883]: VertexAttrib4dNV (will be remapped) */
"idddd\0"
"glVertexAttrib4dNV\0"
"\0"
- /* _mesa_function_pool[29839]: MultiModeDrawElementsIBM (will be remapped) */
+ /* _mesa_function_pool[29909]: MultiModeDrawElementsIBM (will be remapped) */
"ppipii\0"
"glMultiModeDrawElementsIBM\0"
"\0"
- /* _mesa_function_pool[29874]: Indexsv (offset 51) */
+ /* _mesa_function_pool[29944]: Indexsv (offset 51) */
"p\0"
"glIndexsv\0"
"\0"
- /* _mesa_function_pool[29887]: MultiTexCoord4svARB (offset 407) */
+ /* _mesa_function_pool[29957]: MultiTexCoord4svARB (offset 407) */
"ip\0"
"glMultiTexCoord4sv\0"
"glMultiTexCoord4svARB\0"
"\0"
- /* _mesa_function_pool[29932]: LightModelfv (offset 164) */
+ /* _mesa_function_pool[30002]: LightModelfv (offset 164) */
"ip\0"
"glLightModelfv\0"
"\0"
- /* _mesa_function_pool[29951]: TexCoord2dv (offset 103) */
+ /* _mesa_function_pool[30021]: TexCoord2dv (offset 103) */
"p\0"
"glTexCoord2dv\0"
"\0"
- /* _mesa_function_pool[29968]: GenQueriesARB (will be remapped) */
+ /* _mesa_function_pool[30038]: GenQueriesARB (will be remapped) */
"ip\0"
"glGenQueries\0"
"glGenQueriesARB\0"
"\0"
- /* _mesa_function_pool[30001]: EvalCoord1dv (offset 229) */
+ /* _mesa_function_pool[30071]: EvalCoord1dv (offset 229) */
"p\0"
"glEvalCoord1dv\0"
"\0"
- /* _mesa_function_pool[30019]: ReplacementCodeuiVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[30089]: ReplacementCodeuiVertex3fSUN (dynamic) */
"ifff\0"
"glReplacementCodeuiVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[30056]: Translated (offset 303) */
+ /* _mesa_function_pool[30126]: Translated (offset 303) */
"ddd\0"
"glTranslated\0"
"\0"
- /* _mesa_function_pool[30074]: Translatef (offset 304) */
+ /* _mesa_function_pool[30144]: Translatef (offset 304) */
"fff\0"
"glTranslatef\0"
"\0"
- /* _mesa_function_pool[30092]: Uniform3uiEXT (will be remapped) */
+ /* _mesa_function_pool[30162]: Uniform3uiEXT (will be remapped) */
"iiii\0"
"glUniform3uiEXT\0"
"glUniform3ui\0"
"\0"
- /* _mesa_function_pool[30127]: StencilMask (offset 209) */
+ /* _mesa_function_pool[30197]: StencilMask (offset 209) */
"i\0"
"glStencilMask\0"
"\0"
- /* _mesa_function_pool[30144]: Tangent3iEXT (dynamic) */
+ /* _mesa_function_pool[30214]: Tangent3iEXT (dynamic) */
"iii\0"
"glTangent3iEXT\0"
"\0"
- /* _mesa_function_pool[30164]: ClampColorARB (will be remapped) */
+ /* _mesa_function_pool[30234]: ClampColorARB (will be remapped) */
"ii\0"
"glClampColorARB\0"
"\0"
- /* _mesa_function_pool[30184]: GetLightiv (offset 265) */
+ /* _mesa_function_pool[30254]: GetLightiv (offset 265) */
"iip\0"
"glGetLightiv\0"
"\0"
- /* _mesa_function_pool[30202]: GetSamplerParameterIiv (will be remapped) */
+ /* _mesa_function_pool[30272]: GetSamplerParameterIiv (will be remapped) */
"iip\0"
"glGetSamplerParameterIiv\0"
"\0"
- /* _mesa_function_pool[30232]: DrawMeshArraysSUN (dynamic) */
+ /* _mesa_function_pool[30302]: DrawMeshArraysSUN (dynamic) */
"iiii\0"
"glDrawMeshArraysSUN\0"
"\0"
- /* _mesa_function_pool[30258]: IsList (offset 287) */
+ /* _mesa_function_pool[30328]: IsList (offset 287) */
"i\0"
"glIsList\0"
"\0"
- /* _mesa_function_pool[30270]: IsSync (will be remapped) */
+ /* _mesa_function_pool[30340]: IsSync (will be remapped) */
"i\0"
"glIsSync\0"
"\0"
- /* _mesa_function_pool[30282]: RenderMode (offset 196) */
+ /* _mesa_function_pool[30352]: RenderMode (offset 196) */
"i\0"
"glRenderMode\0"
"\0"
- /* _mesa_function_pool[30298]: GetMapControlPointsNV (dynamic) */
+ /* _mesa_function_pool[30368]: GetMapControlPointsNV (dynamic) */
"iiiiiip\0"
"glGetMapControlPointsNV\0"
"\0"
- /* _mesa_function_pool[30331]: DrawBuffersARB (will be remapped) */
+ /* _mesa_function_pool[30401]: DrawBuffersARB (will be remapped) */
"ip\0"
"glDrawBuffers\0"
"glDrawBuffersARB\0"
"glDrawBuffersATI\0"
"\0"
- /* _mesa_function_pool[30383]: ClearBufferiv (will be remapped) */
+ /* _mesa_function_pool[30453]: ClearBufferiv (will be remapped) */
"iip\0"
"glClearBufferiv\0"
"\0"
- /* _mesa_function_pool[30404]: ProgramLocalParameter4fARB (will be remapped) */
+ /* _mesa_function_pool[30474]: ProgramLocalParameter4fARB (will be remapped) */
"iiffff\0"
"glProgramLocalParameter4fARB\0"
"\0"
- /* _mesa_function_pool[30441]: SpriteParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[30511]: SpriteParameterivSGIX (dynamic) */
"ip\0"
"glSpriteParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[30469]: ProvokingVertexEXT (will be remapped) */
+ /* _mesa_function_pool[30539]: ProvokingVertexEXT (will be remapped) */
"i\0"
"glProvokingVertexEXT\0"
"glProvokingVertex\0"
"\0"
- /* _mesa_function_pool[30511]: MultiTexCoord1fARB (offset 378) */
+ /* _mesa_function_pool[30581]: MultiTexCoord1fARB (offset 378) */
"if\0"
"glMultiTexCoord1f\0"
"glMultiTexCoord1fARB\0"
"\0"
- /* _mesa_function_pool[30554]: LoadName (offset 198) */
+ /* _mesa_function_pool[30624]: LoadName (offset 198) */
"i\0"
"glLoadName\0"
"\0"
- /* _mesa_function_pool[30568]: VertexAttribs4ubvNV (will be remapped) */
+ /* _mesa_function_pool[30638]: VertexAttribs4ubvNV (will be remapped) */
"iip\0"
"glVertexAttribs4ubvNV\0"
"\0"
- /* _mesa_function_pool[30595]: WeightsvARB (dynamic) */
+ /* _mesa_function_pool[30665]: WeightsvARB (dynamic) */
"ip\0"
"glWeightsvARB\0"
"\0"
- /* _mesa_function_pool[30613]: Uniform1fvARB (will be remapped) */
+ /* _mesa_function_pool[30683]: Uniform1fvARB (will be remapped) */
"iip\0"
"glUniform1fv\0"
"glUniform1fvARB\0"
"\0"
- /* _mesa_function_pool[30647]: CopyTexSubImage1D (offset 325) */
+ /* _mesa_function_pool[30717]: CopyTexSubImage1D (offset 325) */
"iiiiii\0"
"glCopyTexSubImage1D\0"
"glCopyTexSubImage1DEXT\0"
"\0"
- /* _mesa_function_pool[30698]: CullFace (offset 152) */
+ /* _mesa_function_pool[30768]: CullFace (offset 152) */
"i\0"
"glCullFace\0"
"\0"
- /* _mesa_function_pool[30712]: BindTexture (offset 307) */
+ /* _mesa_function_pool[30782]: BindTexture (offset 307) */
"ii\0"
"glBindTexture\0"
"glBindTextureEXT\0"
"\0"
- /* _mesa_function_pool[30747]: BeginFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[30817]: BeginFragmentShaderATI (will be remapped) */
"\0"
"glBeginFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[30774]: MultiTexCoord4fARB (offset 402) */
+ /* _mesa_function_pool[30844]: MultiTexCoord4fARB (offset 402) */
"iffff\0"
"glMultiTexCoord4f\0"
"glMultiTexCoord4fARB\0"
"\0"
- /* _mesa_function_pool[30820]: VertexAttribs3svNV (will be remapped) */
+ /* _mesa_function_pool[30890]: VertexAttribs3svNV (will be remapped) */
"iip\0"
"glVertexAttribs3svNV\0"
"\0"
- /* _mesa_function_pool[30846]: StencilFunc (offset 243) */
+ /* _mesa_function_pool[30916]: StencilFunc (offset 243) */
"iii\0"
"glStencilFunc\0"
"\0"
- /* _mesa_function_pool[30865]: CopyPixels (offset 255) */
+ /* _mesa_function_pool[30935]: CopyPixels (offset 255) */
"iiiii\0"
"glCopyPixels\0"
"\0"
- /* _mesa_function_pool[30885]: Rectsv (offset 93) */
+ /* _mesa_function_pool[30955]: Rectsv (offset 93) */
"pp\0"
"glRectsv\0"
"\0"
- /* _mesa_function_pool[30898]: ReplacementCodeuivSUN (dynamic) */
+ /* _mesa_function_pool[30968]: ReplacementCodeuivSUN (dynamic) */
"p\0"
"glReplacementCodeuivSUN\0"
"\0"
- /* _mesa_function_pool[30925]: EnableVertexAttribArrayARB (will be remapped) */
+ /* _mesa_function_pool[30995]: EnableVertexAttribArrayARB (will be remapped) */
"i\0"
"glEnableVertexAttribArray\0"
"glEnableVertexAttribArrayARB\0"
"\0"
- /* _mesa_function_pool[30983]: NormalPointervINTEL (dynamic) */
+ /* _mesa_function_pool[31053]: NormalPointervINTEL (dynamic) */
"ip\0"
"glNormalPointervINTEL\0"
"\0"
- /* _mesa_function_pool[31009]: CopyConvolutionFilter2D (offset 355) */
+ /* _mesa_function_pool[31079]: CopyConvolutionFilter2D (offset 355) */
"iiiiii\0"
"glCopyConvolutionFilter2D\0"
"glCopyConvolutionFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[31072]: WindowPos3ivMESA (will be remapped) */
+ /* _mesa_function_pool[31142]: WindowPos3ivMESA (will be remapped) */
"p\0"
"glWindowPos3iv\0"
"glWindowPos3ivARB\0"
"glWindowPos3ivMESA\0"
"\0"
- /* _mesa_function_pool[31127]: CopyBufferSubData (will be remapped) */
+ /* _mesa_function_pool[31197]: CopyBufferSubData (will be remapped) */
"iiiii\0"
"glCopyBufferSubData\0"
"\0"
- /* _mesa_function_pool[31154]: NormalPointer (offset 318) */
+ /* _mesa_function_pool[31224]: NormalPointer (offset 318) */
"iip\0"
"glNormalPointer\0"
"\0"
- /* _mesa_function_pool[31175]: TexParameterfv (offset 179) */
+ /* _mesa_function_pool[31245]: TexParameterfv (offset 179) */
"iip\0"
"glTexParameterfv\0"
"\0"
- /* _mesa_function_pool[31197]: IsBufferARB (will be remapped) */
+ /* _mesa_function_pool[31267]: IsBufferARB (will be remapped) */
"i\0"
"glIsBuffer\0"
"glIsBufferARB\0"
"\0"
- /* _mesa_function_pool[31225]: WindowPos4iMESA (will be remapped) */
+ /* _mesa_function_pool[31295]: WindowPos4iMESA (will be remapped) */
"iiii\0"
"glWindowPos4iMESA\0"
"\0"
- /* _mesa_function_pool[31249]: VertexAttrib4uivARB (will be remapped) */
+ /* _mesa_function_pool[31319]: VertexAttrib4uivARB (will be remapped) */
"ip\0"
"glVertexAttrib4uiv\0"
"glVertexAttrib4uivARB\0"
"\0"
- /* _mesa_function_pool[31294]: Tangent3bvEXT (dynamic) */
+ /* _mesa_function_pool[31364]: Tangent3bvEXT (dynamic) */
"p\0"
"glTangent3bvEXT\0"
"\0"
- /* _mesa_function_pool[31313]: VertexAttribI3uivEXT (will be remapped) */
+ /* _mesa_function_pool[31383]: VertexAttribI3uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI3uivEXT\0"
"glVertexAttribI3uiv\0"
"\0"
- /* _mesa_function_pool[31360]: UniformMatrix3x4fv (will be remapped) */
+ /* _mesa_function_pool[31430]: UniformMatrix3x4fv (will be remapped) */
"iiip\0"
"glUniformMatrix3x4fv\0"
"\0"
- /* _mesa_function_pool[31387]: ClipPlane (offset 150) */
+ /* _mesa_function_pool[31457]: ClipPlane (offset 150) */
"ip\0"
"glClipPlane\0"
"\0"
- /* _mesa_function_pool[31403]: Recti (offset 90) */
+ /* _mesa_function_pool[31473]: Recti (offset 90) */
"iiii\0"
"glRecti\0"
"\0"
- /* _mesa_function_pool[31417]: TrackMatrixNV (will be remapped) */
+ /* _mesa_function_pool[31487]: TrackMatrixNV (will be remapped) */
"iiii\0"
"glTrackMatrixNV\0"
"\0"
- /* _mesa_function_pool[31439]: DrawRangeElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[31509]: DrawRangeElementsBaseVertex (will be remapped) */
"iiiiipi\0"
"glDrawRangeElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[31478]: SamplerParameterIuiv (will be remapped) */
+ /* _mesa_function_pool[31548]: SamplerParameterIuiv (will be remapped) */
"iip\0"
"glSamplerParameterIuiv\0"
"\0"
- /* _mesa_function_pool[31506]: TexCoordPointervINTEL (dynamic) */
+ /* _mesa_function_pool[31576]: TexCoordPointervINTEL (dynamic) */
"iip\0"
"glTexCoordPointervINTEL\0"
"\0"
- /* _mesa_function_pool[31535]: DeleteBuffersARB (will be remapped) */
+ /* _mesa_function_pool[31605]: DeleteBuffersARB (will be remapped) */
"ip\0"
"glDeleteBuffers\0"
"glDeleteBuffersARB\0"
"\0"
- /* _mesa_function_pool[31574]: PixelTransformParameterfvEXT (dynamic) */
+ /* _mesa_function_pool[31644]: PixelTransformParameterfvEXT (dynamic) */
"iip\0"
"glPixelTransformParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[31610]: PrimitiveRestartNV (will be remapped) */
+ /* _mesa_function_pool[31680]: PrimitiveRestartNV (will be remapped) */
"\0"
"glPrimitiveRestartNV\0"
"\0"
- /* _mesa_function_pool[31633]: WindowPos4fvMESA (will be remapped) */
+ /* _mesa_function_pool[31703]: WindowPos4fvMESA (will be remapped) */
"p\0"
"glWindowPos4fvMESA\0"
"\0"
- /* _mesa_function_pool[31655]: GetPixelMapuiv (offset 272) */
+ /* _mesa_function_pool[31725]: GetPixelMapuiv (offset 272) */
"ip\0"
"glGetPixelMapuiv\0"
"\0"
- /* _mesa_function_pool[31676]: Rectf (offset 88) */
+ /* _mesa_function_pool[31746]: Rectf (offset 88) */
"ffff\0"
"glRectf\0"
"\0"
- /* _mesa_function_pool[31690]: VertexAttrib1sNV (will be remapped) */
+ /* _mesa_function_pool[31760]: VertexAttrib1sNV (will be remapped) */
"ii\0"
"glVertexAttrib1sNV\0"
"\0"
- /* _mesa_function_pool[31713]: Indexfv (offset 47) */
+ /* _mesa_function_pool[31783]: Indexfv (offset 47) */
"p\0"
"glIndexfv\0"
"\0"
- /* _mesa_function_pool[31726]: SecondaryColor3svEXT (will be remapped) */
+ /* _mesa_function_pool[31796]: SecondaryColor3svEXT (will be remapped) */
"p\0"
"glSecondaryColor3sv\0"
"glSecondaryColor3svEXT\0"
"\0"
- /* _mesa_function_pool[31772]: LoadTransposeMatrixfARB (will be remapped) */
+ /* _mesa_function_pool[31842]: LoadTransposeMatrixfARB (will be remapped) */
"p\0"
"glLoadTransposeMatrixf\0"
"glLoadTransposeMatrixfARB\0"
"\0"
- /* _mesa_function_pool[31824]: GetPointerv (offset 329) */
+ /* _mesa_function_pool[31894]: GetPointerv (offset 329) */
"ip\0"
"glGetPointerv\0"
"glGetPointervEXT\0"
"\0"
- /* _mesa_function_pool[31859]: Tangent3bEXT (dynamic) */
+ /* _mesa_function_pool[31929]: Tangent3bEXT (dynamic) */
"iii\0"
"glTangent3bEXT\0"
"\0"
- /* _mesa_function_pool[31879]: CombinerParameterfNV (will be remapped) */
+ /* _mesa_function_pool[31949]: CombinerParameterfNV (will be remapped) */
"if\0"
"glCombinerParameterfNV\0"
"\0"
- /* _mesa_function_pool[31906]: IndexMask (offset 212) */
+ /* _mesa_function_pool[31976]: IndexMask (offset 212) */
"i\0"
"glIndexMask\0"
"\0"
- /* _mesa_function_pool[31921]: BindProgramNV (will be remapped) */
+ /* _mesa_function_pool[31991]: BindProgramNV (will be remapped) */
"ii\0"
"glBindProgramARB\0"
"glBindProgramNV\0"
"\0"
- /* _mesa_function_pool[31958]: VertexAttrib4svARB (will be remapped) */
+ /* _mesa_function_pool[32028]: VertexAttrib4svARB (will be remapped) */
"ip\0"
"glVertexAttrib4sv\0"
"glVertexAttrib4svARB\0"
"\0"
- /* _mesa_function_pool[32001]: GetFloatv (offset 262) */
+ /* _mesa_function_pool[32071]: GetFloatv (offset 262) */
"ip\0"
"glGetFloatv\0"
"\0"
- /* _mesa_function_pool[32017]: CreateDebugObjectMESA (dynamic) */
+ /* _mesa_function_pool[32087]: CreateDebugObjectMESA (dynamic) */
"\0"
"glCreateDebugObjectMESA\0"
"\0"
- /* _mesa_function_pool[32043]: GetShaderiv (will be remapped) */
+ /* _mesa_function_pool[32113]: GetShaderiv (will be remapped) */
"iip\0"
"glGetShaderiv\0"
"\0"
- /* _mesa_function_pool[32062]: ClientWaitSync (will be remapped) */
+ /* _mesa_function_pool[32132]: ClientWaitSync (will be remapped) */
"iii\0"
"glClientWaitSync\0"
"\0"
- /* _mesa_function_pool[32084]: TexCoord4s (offset 124) */
+ /* _mesa_function_pool[32154]: TexCoord4s (offset 124) */
"iiii\0"
"glTexCoord4s\0"
"\0"
- /* _mesa_function_pool[32103]: TexCoord3sv (offset 117) */
+ /* _mesa_function_pool[32173]: TexCoord3sv (offset 117) */
"p\0"
"glTexCoord3sv\0"
"\0"
- /* _mesa_function_pool[32120]: BindFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[32190]: BindFragmentShaderATI (will be remapped) */
"i\0"
"glBindFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[32147]: PopAttrib (offset 218) */
+ /* _mesa_function_pool[32217]: PopAttrib (offset 218) */
"\0"
"glPopAttrib\0"
"\0"
- /* _mesa_function_pool[32161]: Fogfv (offset 154) */
+ /* _mesa_function_pool[32231]: Fogfv (offset 154) */
"ip\0"
"glFogfv\0"
"\0"
- /* _mesa_function_pool[32173]: UnmapBufferARB (will be remapped) */
+ /* _mesa_function_pool[32243]: UnmapBufferARB (will be remapped) */
"i\0"
"glUnmapBuffer\0"
"glUnmapBufferARB\0"
"\0"
- /* _mesa_function_pool[32207]: InitNames (offset 197) */
+ /* _mesa_function_pool[32277]: InitNames (offset 197) */
"\0"
"glInitNames\0"
"\0"
- /* _mesa_function_pool[32221]: Normal3sv (offset 61) */
+ /* _mesa_function_pool[32291]: Normal3sv (offset 61) */
"p\0"
"glNormal3sv\0"
"\0"
- /* _mesa_function_pool[32236]: Minmax (offset 368) */
+ /* _mesa_function_pool[32306]: Minmax (offset 368) */
"iii\0"
"glMinmax\0"
"glMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[32262]: TexCoord4d (offset 118) */
+ /* _mesa_function_pool[32332]: TexCoord4d (offset 118) */
"dddd\0"
"glTexCoord4d\0"
"\0"
- /* _mesa_function_pool[32281]: TexCoord4f (offset 120) */
+ /* _mesa_function_pool[32351]: DeformationMap3dSGIX (dynamic) */
+ "iddiiddiiddiip\0"
+ "glDeformationMap3dSGIX\0"
+ "\0"
+ /* _mesa_function_pool[32390]: TexCoord4f (offset 120) */
"ffff\0"
"glTexCoord4f\0"
"\0"
- /* _mesa_function_pool[32300]: FogCoorddvEXT (will be remapped) */
+ /* _mesa_function_pool[32409]: FogCoorddvEXT (will be remapped) */
"p\0"
"glFogCoorddv\0"
"glFogCoorddvEXT\0"
"\0"
- /* _mesa_function_pool[32332]: FinishTextureSUNX (dynamic) */
+ /* _mesa_function_pool[32441]: FinishTextureSUNX (dynamic) */
"\0"
"glFinishTextureSUNX\0"
"\0"
- /* _mesa_function_pool[32354]: GetFragmentLightfvSGIX (dynamic) */
+ /* _mesa_function_pool[32463]: GetFragmentLightfvSGIX (dynamic) */
"iip\0"
"glGetFragmentLightfvSGIX\0"
"\0"
- /* _mesa_function_pool[32384]: Binormal3fvEXT (dynamic) */
+ /* _mesa_function_pool[32493]: Binormal3fvEXT (dynamic) */
"p\0"
"glBinormal3fvEXT\0"
"\0"
- /* _mesa_function_pool[32404]: GetBooleanv (offset 258) */
+ /* _mesa_function_pool[32513]: GetBooleanv (offset 258) */
"ip\0"
"glGetBooleanv\0"
"\0"
- /* _mesa_function_pool[32422]: ColorFragmentOp3ATI (will be remapped) */
+ /* _mesa_function_pool[32531]: ColorFragmentOp3ATI (will be remapped) */
"iiiiiiiiiiiii\0"
"glColorFragmentOp3ATI\0"
"\0"
- /* _mesa_function_pool[32459]: Hint (offset 158) */
+ /* _mesa_function_pool[32568]: Hint (offset 158) */
"ii\0"
"glHint\0"
"\0"
- /* _mesa_function_pool[32470]: Color4dv (offset 28) */
+ /* _mesa_function_pool[32579]: Color4dv (offset 28) */
"p\0"
"glColor4dv\0"
"\0"
- /* _mesa_function_pool[32484]: VertexAttrib2svARB (will be remapped) */
+ /* _mesa_function_pool[32593]: VertexAttrib2svARB (will be remapped) */
"ip\0"
"glVertexAttrib2sv\0"
"glVertexAttrib2svARB\0"
"\0"
- /* _mesa_function_pool[32527]: AreProgramsResidentNV (will be remapped) */
+ /* _mesa_function_pool[32636]: AreProgramsResidentNV (will be remapped) */
"ipp\0"
"glAreProgramsResidentNV\0"
"\0"
- /* _mesa_function_pool[32556]: WindowPos3svMESA (will be remapped) */
+ /* _mesa_function_pool[32665]: WindowPos3svMESA (will be remapped) */
"p\0"
"glWindowPos3sv\0"
"glWindowPos3svARB\0"
"glWindowPos3svMESA\0"
"\0"
- /* _mesa_function_pool[32611]: CopyColorSubTable (offset 347) */
+ /* _mesa_function_pool[32720]: CopyColorSubTable (offset 347) */
"iiiii\0"
"glCopyColorSubTable\0"
"glCopyColorSubTableEXT\0"
"\0"
- /* _mesa_function_pool[32661]: WeightdvARB (dynamic) */
+ /* _mesa_function_pool[32770]: WeightdvARB (dynamic) */
"ip\0"
"glWeightdvARB\0"
"\0"
- /* _mesa_function_pool[32679]: DeleteRenderbuffersEXT (will be remapped) */
+ /* _mesa_function_pool[32788]: DeleteRenderbuffersEXT (will be remapped) */
"ip\0"
"glDeleteRenderbuffers\0"
"glDeleteRenderbuffersEXT\0"
"\0"
- /* _mesa_function_pool[32730]: VertexAttrib4NubvARB (will be remapped) */
+ /* _mesa_function_pool[32839]: VertexAttrib4NubvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nubv\0"
"glVertexAttrib4NubvARB\0"
"\0"
- /* _mesa_function_pool[32777]: VertexAttrib3dvNV (will be remapped) */
+ /* _mesa_function_pool[32886]: VertexAttrib3dvNV (will be remapped) */
"ip\0"
"glVertexAttrib3dvNV\0"
"\0"
- /* _mesa_function_pool[32801]: GetObjectParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[32910]: GetObjectParameterfvARB (will be remapped) */
"iip\0"
"glGetObjectParameterfvARB\0"
"\0"
- /* _mesa_function_pool[32832]: Vertex4iv (offset 147) */
+ /* _mesa_function_pool[32941]: Vertex4iv (offset 147) */
"p\0"
"glVertex4iv\0"
"\0"
- /* _mesa_function_pool[32847]: GetProgramEnvParameterdvARB (will be remapped) */
+ /* _mesa_function_pool[32956]: GetProgramEnvParameterdvARB (will be remapped) */
"iip\0"
"glGetProgramEnvParameterdvARB\0"
"\0"
- /* _mesa_function_pool[32882]: TexCoord4dv (offset 119) */
+ /* _mesa_function_pool[32991]: TexCoord4dv (offset 119) */
"p\0"
"glTexCoord4dv\0"
"\0"
- /* _mesa_function_pool[32899]: LockArraysEXT (will be remapped) */
+ /* _mesa_function_pool[33008]: LockArraysEXT (will be remapped) */
"ii\0"
"glLockArraysEXT\0"
"\0"
- /* _mesa_function_pool[32919]: Begin (offset 7) */
+ /* _mesa_function_pool[33028]: Begin (offset 7) */
"i\0"
"glBegin\0"
"\0"
- /* _mesa_function_pool[32930]: LightModeli (offset 165) */
+ /* _mesa_function_pool[33039]: LightModeli (offset 165) */
"ii\0"
"glLightModeli\0"
"\0"
- /* _mesa_function_pool[32948]: VertexAttribI4ivEXT (will be remapped) */
+ /* _mesa_function_pool[33057]: VertexAttribI4ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI4ivEXT\0"
"glVertexAttribI4iv\0"
"\0"
- /* _mesa_function_pool[32993]: Rectfv (offset 89) */
+ /* _mesa_function_pool[33102]: Rectfv (offset 89) */
"pp\0"
"glRectfv\0"
"\0"
- /* _mesa_function_pool[33006]: BlendEquationSeparateiARB (will be remapped) */
- "iii\0"
- "glBlendEquationSeparateiARB\0"
- "glBlendEquationSeparateIndexedAMD\0"
- "\0"
- /* _mesa_function_pool[33073]: LightModelf (offset 163) */
+ /* _mesa_function_pool[33115]: LightModelf (offset 163) */
"if\0"
"glLightModelf\0"
"\0"
- /* _mesa_function_pool[33091]: GetTexParameterfv (offset 282) */
+ /* _mesa_function_pool[33133]: GetTexParameterfv (offset 282) */
"iip\0"
"glGetTexParameterfv\0"
"\0"
- /* _mesa_function_pool[33116]: GetLightfv (offset 264) */
+ /* _mesa_function_pool[33158]: GetLightfv (offset 264) */
"iip\0"
"glGetLightfv\0"
"\0"
- /* _mesa_function_pool[33134]: PixelTransformParameterivEXT (dynamic) */
+ /* _mesa_function_pool[33176]: PixelTransformParameterivEXT (dynamic) */
"iip\0"
"glPixelTransformParameterivEXT\0"
"\0"
- /* _mesa_function_pool[33170]: BinormalPointerEXT (dynamic) */
+ /* _mesa_function_pool[33212]: BinormalPointerEXT (dynamic) */
"iip\0"
"glBinormalPointerEXT\0"
"\0"
- /* _mesa_function_pool[33196]: VertexAttrib1dNV (will be remapped) */
+ /* _mesa_function_pool[33238]: VertexAttrib1dNV (will be remapped) */
"id\0"
"glVertexAttrib1dNV\0"
"\0"
- /* _mesa_function_pool[33219]: GetCombinerInputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[33261]: GetCombinerInputParameterivNV (will be remapped) */
"iiiip\0"
"glGetCombinerInputParameterivNV\0"
"\0"
- /* _mesa_function_pool[33258]: Disable (offset 214) */
+ /* _mesa_function_pool[33300]: Disable (offset 214) */
"i\0"
"glDisable\0"
"\0"
- /* _mesa_function_pool[33271]: MultiTexCoord2fvARB (offset 387) */
+ /* _mesa_function_pool[33313]: MultiTexCoord2fvARB (offset 387) */
"ip\0"
"glMultiTexCoord2fv\0"
"glMultiTexCoord2fvARB\0"
"\0"
- /* _mesa_function_pool[33316]: GetRenderbufferParameterivEXT (will be remapped) */
+ /* _mesa_function_pool[33358]: GetRenderbufferParameterivEXT (will be remapped) */
"iip\0"
"glGetRenderbufferParameteriv\0"
"glGetRenderbufferParameterivEXT\0"
"\0"
- /* _mesa_function_pool[33382]: CombinerParameterivNV (will be remapped) */
+ /* _mesa_function_pool[33424]: CombinerParameterivNV (will be remapped) */
"ip\0"
"glCombinerParameterivNV\0"
"\0"
- /* _mesa_function_pool[33410]: GenFragmentShadersATI (will be remapped) */
+ /* _mesa_function_pool[33452]: GenFragmentShadersATI (will be remapped) */
"i\0"
"glGenFragmentShadersATI\0"
"\0"
- /* _mesa_function_pool[33437]: DrawArrays (offset 310) */
+ /* _mesa_function_pool[33479]: DrawArrays (offset 310) */
"iii\0"
"glDrawArrays\0"
"glDrawArraysEXT\0"
"\0"
- /* _mesa_function_pool[33471]: WeightuivARB (dynamic) */
+ /* _mesa_function_pool[33513]: WeightuivARB (dynamic) */
"ip\0"
"glWeightuivARB\0"
"\0"
- /* _mesa_function_pool[33490]: GetVertexAttribIivEXT (will be remapped) */
+ /* _mesa_function_pool[33532]: GetVertexAttribIivEXT (will be remapped) */
"iip\0"
"glGetVertexAttribIivEXT\0"
"glGetVertexAttribIiv\0"
"\0"
- /* _mesa_function_pool[33540]: VertexAttrib2sARB (will be remapped) */
+ /* _mesa_function_pool[33582]: VertexAttrib2sARB (will be remapped) */
"iii\0"
"glVertexAttrib2s\0"
"glVertexAttrib2sARB\0"
"\0"
- /* _mesa_function_pool[33582]: GetnTexImageARB (will be remapped) */
+ /* _mesa_function_pool[33624]: GetnTexImageARB (will be remapped) */
"iiiiip\0"
"glGetnTexImageARB\0"
"\0"
- /* _mesa_function_pool[33608]: ColorMask (offset 210) */
+ /* _mesa_function_pool[33650]: ColorMask (offset 210) */
"iiii\0"
"glColorMask\0"
"\0"
- /* _mesa_function_pool[33626]: GenAsyncMarkersSGIX (dynamic) */
+ /* _mesa_function_pool[33668]: GenAsyncMarkersSGIX (dynamic) */
"i\0"
"glGenAsyncMarkersSGIX\0"
"\0"
- /* _mesa_function_pool[33651]: Tangent3svEXT (dynamic) */
+ /* _mesa_function_pool[33693]: Tangent3svEXT (dynamic) */
"p\0"
"glTangent3svEXT\0"
"\0"
- /* _mesa_function_pool[33670]: GetListParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[33712]: GetListParameterivSGIX (dynamic) */
"iip\0"
"glGetListParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[33700]: BindBufferARB (will be remapped) */
+ /* _mesa_function_pool[33742]: BindBufferARB (will be remapped) */
"ii\0"
"glBindBuffer\0"
"glBindBufferARB\0"
"\0"
- /* _mesa_function_pool[33733]: GetInfoLogARB (will be remapped) */
+ /* _mesa_function_pool[33775]: GetInfoLogARB (will be remapped) */
"iipp\0"
"glGetInfoLogARB\0"
"\0"
- /* _mesa_function_pool[33755]: RasterPos4iv (offset 83) */
+ /* _mesa_function_pool[33797]: RasterPos4iv (offset 83) */
"p\0"
"glRasterPos4iv\0"
"\0"
- /* _mesa_function_pool[33773]: Enable (offset 215) */
+ /* _mesa_function_pool[33815]: Enable (offset 215) */
"i\0"
"glEnable\0"
"\0"
- /* _mesa_function_pool[33785]: LineStipple (offset 167) */
+ /* _mesa_function_pool[33827]: LineStipple (offset 167) */
"ii\0"
"glLineStipple\0"
"\0"
- /* _mesa_function_pool[33803]: VertexAttribs4svNV (will be remapped) */
+ /* _mesa_function_pool[33845]: VertexAttribs4svNV (will be remapped) */
"iip\0"
"glVertexAttribs4svNV\0"
"\0"
- /* _mesa_function_pool[33829]: EdgeFlagPointerListIBM (dynamic) */
+ /* _mesa_function_pool[33871]: EdgeFlagPointerListIBM (dynamic) */
"ipi\0"
"glEdgeFlagPointerListIBM\0"
"\0"
- /* _mesa_function_pool[33859]: UniformMatrix3x2fv (will be remapped) */
+ /* _mesa_function_pool[33901]: UniformMatrix3x2fv (will be remapped) */
"iiip\0"
"glUniformMatrix3x2fv\0"
"\0"
- /* _mesa_function_pool[33886]: GetMinmaxParameterfv (offset 365) */
+ /* _mesa_function_pool[33928]: GetMinmaxParameterfv (offset 365) */
"iip\0"
"glGetMinmaxParameterfv\0"
"glGetMinmaxParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[33940]: VertexAttrib1fvARB (will be remapped) */
+ /* _mesa_function_pool[33982]: VertexAttrib1fvARB (will be remapped) */
"ip\0"
"glVertexAttrib1fv\0"
"glVertexAttrib1fvARB\0"
"\0"
- /* _mesa_function_pool[33983]: GenBuffersARB (will be remapped) */
+ /* _mesa_function_pool[34025]: GenBuffersARB (will be remapped) */
"ip\0"
"glGenBuffers\0"
"glGenBuffersARB\0"
"\0"
- /* _mesa_function_pool[34016]: VertexAttribs1svNV (will be remapped) */
+ /* _mesa_function_pool[34058]: VertexAttribs1svNV (will be remapped) */
"iip\0"
"glVertexAttribs1svNV\0"
"\0"
- /* _mesa_function_pool[34042]: Vertex3fv (offset 137) */
+ /* _mesa_function_pool[34084]: Vertex3fv (offset 137) */
"p\0"
"glVertex3fv\0"
"\0"
- /* _mesa_function_pool[34057]: GetTexBumpParameterivATI (will be remapped) */
+ /* _mesa_function_pool[34099]: GetTexBumpParameterivATI (will be remapped) */
"ip\0"
"glGetTexBumpParameterivATI\0"
"\0"
- /* _mesa_function_pool[34088]: Binormal3bEXT (dynamic) */
+ /* _mesa_function_pool[34130]: Binormal3bEXT (dynamic) */
"iii\0"
"glBinormal3bEXT\0"
"\0"
- /* _mesa_function_pool[34109]: FragmentMaterialivSGIX (dynamic) */
+ /* _mesa_function_pool[34151]: FragmentMaterialivSGIX (dynamic) */
"iip\0"
"glFragmentMaterialivSGIX\0"
"\0"
- /* _mesa_function_pool[34139]: IsRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[34181]: IsRenderbufferEXT (will be remapped) */
"i\0"
"glIsRenderbuffer\0"
"glIsRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[34179]: GenProgramsNV (will be remapped) */
+ /* _mesa_function_pool[34221]: GenProgramsNV (will be remapped) */
"ip\0"
"glGenProgramsARB\0"
"glGenProgramsNV\0"
"\0"
- /* _mesa_function_pool[34216]: VertexAttrib4dvNV (will be remapped) */
+ /* _mesa_function_pool[34258]: VertexAttrib4dvNV (will be remapped) */
"ip\0"
"glVertexAttrib4dvNV\0"
"\0"
- /* _mesa_function_pool[34240]: EndFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[34282]: EndFragmentShaderATI (will be remapped) */
"\0"
"glEndFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[34265]: Binormal3iEXT (dynamic) */
+ /* _mesa_function_pool[34307]: Binormal3iEXT (dynamic) */
"iii\0"
"glBinormal3iEXT\0"
"\0"
- /* _mesa_function_pool[34286]: WindowPos2fMESA (will be remapped) */
+ /* _mesa_function_pool[34328]: WindowPos2fMESA (will be remapped) */
"ff\0"
"glWindowPos2f\0"
"glWindowPos2fARB\0"
@@ -4931,636 +4935,637 @@ static const char _mesa_function_pool[] =
/* these functions need to be remapped */
static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
- { 1629, AttachShader_remap_index },
- { 10274, CreateProgram_remap_index },
- { 23765, CreateShader_remap_index },
- { 26289, DeleteProgram_remap_index },
- { 19245, DeleteShader_remap_index },
- { 24258, DetachShader_remap_index },
- { 18534, GetAttachedShaders_remap_index },
- { 5126, GetProgramInfoLog_remap_index },
- { 444, GetProgramiv_remap_index },
- { 6892, GetShaderInfoLog_remap_index },
- { 32043, GetShaderiv_remap_index },
- { 13807, IsProgram_remap_index },
- { 12698, IsShader_remap_index },
- { 10404, StencilFuncSeparate_remap_index },
- { 4156, StencilMaskSeparate_remap_index },
- { 7957, StencilOpSeparate_remap_index },
- { 22999, UniformMatrix2x3fv_remap_index },
- { 2998, UniformMatrix2x4fv_remap_index },
- { 33859, UniformMatrix3x2fv_remap_index },
- { 31360, UniformMatrix3x4fv_remap_index },
- { 16726, UniformMatrix4x2fv_remap_index },
- { 3417, UniformMatrix4x3fv_remap_index },
- { 5332, ClampColor_remap_index },
- { 18588, ClearBufferfi_remap_index },
- { 18004, ClearBufferfv_remap_index },
- { 30383, ClearBufferiv_remap_index },
- { 14012, ClearBufferuiv_remap_index },
- { 20582, GetStringi_remap_index },
- { 2900, TexBuffer_remap_index },
- { 977, FramebufferTexture_remap_index },
- { 27325, GetBufferParameteri64v_remap_index },
- { 10504, GetInteger64i_v_remap_index },
- { 24079, VertexAttribDivisor_remap_index },
- { 10292, LoadTransposeMatrixdARB_remap_index },
- { 31772, LoadTransposeMatrixfARB_remap_index },
- { 5971, MultTransposeMatrixdARB_remap_index },
- { 24445, MultTransposeMatrixfARB_remap_index },
- { 255, SampleCoverageARB_remap_index },
- { 6155, CompressedTexImage1DARB_remap_index },
- { 24973, CompressedTexImage2DARB_remap_index },
- { 4219, CompressedTexImage3DARB_remap_index },
- { 18876, CompressedTexSubImage1DARB_remap_index },
- { 2141, CompressedTexSubImage2DARB_remap_index },
- { 21004, CompressedTexSubImage3DARB_remap_index },
- { 29489, GetCompressedTexImageARB_remap_index },
- { 3983, DisableVertexAttribArrayARB_remap_index },
- { 30925, EnableVertexAttribArrayARB_remap_index },
- { 32847, GetProgramEnvParameterdvARB_remap_index },
- { 24325, GetProgramEnvParameterfvARB_remap_index },
- { 28354, GetProgramLocalParameterdvARB_remap_index },
- { 8433, GetProgramLocalParameterfvARB_remap_index },
- { 19052, GetProgramStringARB_remap_index },
- { 28549, GetProgramivARB_remap_index },
- { 21199, GetVertexAttribdvARB_remap_index },
- { 16534, GetVertexAttribfvARB_remap_index },
- { 10108, GetVertexAttribivARB_remap_index },
- { 20045, ProgramEnvParameter4dARB_remap_index },
- { 26039, ProgramEnvParameter4dvARB_remap_index },
- { 17302, ProgramEnvParameter4fARB_remap_index },
- { 9308, ProgramEnvParameter4fvARB_remap_index },
- { 4182, ProgramLocalParameter4dARB_remap_index },
- { 13517, ProgramLocalParameter4dvARB_remap_index },
- { 30404, ProgramLocalParameter4fARB_remap_index },
- { 26685, ProgramLocalParameter4fvARB_remap_index },
- { 29243, ProgramStringARB_remap_index },
- { 20313, VertexAttrib1dARB_remap_index },
- { 16161, VertexAttrib1dvARB_remap_index },
- { 4378, VertexAttrib1fARB_remap_index },
- { 33940, VertexAttrib1fvARB_remap_index },
- { 7483, VertexAttrib1sARB_remap_index },
- { 2336, VertexAttrib1svARB_remap_index },
- { 15592, VertexAttrib2dARB_remap_index },
- { 18025, VertexAttrib2dvARB_remap_index },
- { 1687, VertexAttrib2fARB_remap_index },
- { 18138, VertexAttrib2fvARB_remap_index },
- { 33540, VertexAttrib2sARB_remap_index },
- { 32484, VertexAttrib2svARB_remap_index },
- { 11682, VertexAttrib3dARB_remap_index },
- { 8975, VertexAttrib3dvARB_remap_index },
- { 1774, VertexAttrib3fARB_remap_index },
- { 23316, VertexAttrib3fvARB_remap_index },
- { 29090, VertexAttrib3sARB_remap_index },
- { 20941, VertexAttrib3svARB_remap_index },
- { 5152, VertexAttrib4NbvARB_remap_index },
- { 18411, VertexAttrib4NivARB_remap_index },
- { 23271, VertexAttrib4NsvARB_remap_index },
- { 24277, VertexAttrib4NubARB_remap_index },
- { 32730, VertexAttrib4NubvARB_remap_index },
- { 19696, VertexAttrib4NuivARB_remap_index },
- { 3290, VertexAttrib4NusvARB_remap_index },
- { 11271, VertexAttrib4bvARB_remap_index },
- { 27727, VertexAttrib4dARB_remap_index },
- { 21998, VertexAttrib4dvARB_remap_index },
- { 11836, VertexAttrib4fARB_remap_index },
- { 12240, VertexAttrib4fvARB_remap_index },
- { 10647, VertexAttrib4ivARB_remap_index },
- { 17818, VertexAttrib4sARB_remap_index },
- { 31958, VertexAttrib4svARB_remap_index },
- { 17107, VertexAttrib4ubvARB_remap_index },
- { 31249, VertexAttrib4uivARB_remap_index },
- { 20752, VertexAttrib4usvARB_remap_index },
- { 22814, VertexAttribPointerARB_remap_index },
- { 33700, BindBufferARB_remap_index },
- { 7190, BufferDataARB_remap_index },
- { 1550, BufferSubDataARB_remap_index },
- { 31535, DeleteBuffersARB_remap_index },
- { 33983, GenBuffersARB_remap_index },
- { 18181, GetBufferParameterivARB_remap_index },
- { 17254, GetBufferPointervARB_remap_index },
- { 1503, GetBufferSubDataARB_remap_index },
- { 31197, IsBufferARB_remap_index },
- { 27169, MapBufferARB_remap_index },
- { 32173, UnmapBufferARB_remap_index },
- { 351, BeginQueryARB_remap_index },
- { 20408, DeleteQueriesARB_remap_index },
- { 12559, EndQueryARB_remap_index },
- { 29968, GenQueriesARB_remap_index },
- { 2033, GetQueryObjectivARB_remap_index },
- { 17862, GetQueryObjectuivARB_remap_index },
- { 1831, GetQueryivARB_remap_index },
- { 20659, IsQueryARB_remap_index },
- { 8585, AttachObjectARB_remap_index },
- { 19207, CompileShaderARB_remap_index },
- { 3359, CreateProgramObjectARB_remap_index },
- { 7135, CreateShaderObjectARB_remap_index },
- { 14894, DeleteObjectARB_remap_index },
- { 24764, DetachObjectARB_remap_index },
- { 12304, GetActiveUniformARB_remap_index },
- { 9783, GetAttachedObjectsARB_remap_index },
- { 10090, GetHandleARB_remap_index },
- { 33733, GetInfoLogARB_remap_index },
- { 32801, GetObjectParameterfvARB_remap_index },
- { 28228, GetObjectParameterivARB_remap_index },
- { 29726, GetShaderSourceARB_remap_index },
- { 28950, GetUniformLocationARB_remap_index },
- { 24547, GetUniformfvARB_remap_index },
- { 13092, GetUniformivARB_remap_index },
- { 20797, LinkProgramARB_remap_index },
- { 20855, ShaderSourceARB_remap_index },
- { 7857, Uniform1fARB_remap_index },
- { 30613, Uniform1fvARB_remap_index },
- { 22762, Uniform1iARB_remap_index },
- { 21652, Uniform1ivARB_remap_index },
- { 2285, Uniform2fARB_remap_index },
- { 14730, Uniform2fvARB_remap_index },
- { 27056, Uniform2iARB_remap_index },
- { 2405, Uniform2ivARB_remap_index },
- { 19317, Uniform3fARB_remap_index },
- { 9813, Uniform3fvARB_remap_index },
- { 6746, Uniform3iARB_remap_index },
- { 17360, Uniform3ivARB_remap_index },
- { 19851, Uniform4fARB_remap_index },
- { 24411, Uniform4fvARB_remap_index },
- { 25673, Uniform4iARB_remap_index },
- { 21165, Uniform4ivARB_remap_index },
- { 8637, UniformMatrix2fvARB_remap_index },
+ { 1590, AttachShader_remap_index },
+ { 10243, CreateProgram_remap_index },
+ { 23919, CreateShader_remap_index },
+ { 26443, DeleteProgram_remap_index },
+ { 19399, DeleteShader_remap_index },
+ { 24412, DetachShader_remap_index },
+ { 18646, GetAttachedShaders_remap_index },
+ { 5053, GetProgramInfoLog_remap_index },
+ { 405, GetProgramiv_remap_index },
+ { 6861, GetShaderInfoLog_remap_index },
+ { 32113, GetShaderiv_remap_index },
+ { 13776, IsProgram_remap_index },
+ { 12667, IsShader_remap_index },
+ { 10373, StencilFuncSeparate_remap_index },
+ { 4031, StencilMaskSeparate_remap_index },
+ { 7926, StencilOpSeparate_remap_index },
+ { 23153, UniformMatrix2x3fv_remap_index },
+ { 2920, UniformMatrix2x4fv_remap_index },
+ { 33901, UniformMatrix3x2fv_remap_index },
+ { 31430, UniformMatrix3x4fv_remap_index },
+ { 16766, UniformMatrix4x2fv_remap_index },
+ { 3339, UniformMatrix4x3fv_remap_index },
+ { 5259, ClampColor_remap_index },
+ { 18700, ClearBufferfi_remap_index },
+ { 18116, ClearBufferfv_remap_index },
+ { 30453, ClearBufferiv_remap_index },
+ { 13981, ClearBufferuiv_remap_index },
+ { 20736, GetStringi_remap_index },
+ { 2861, TexBuffer_remap_index },
+ { 938, FramebufferTexture_remap_index },
+ { 27479, GetBufferParameteri64v_remap_index },
+ { 10473, GetInteger64i_v_remap_index },
+ { 24233, VertexAttribDivisor_remap_index },
+ { 10261, LoadTransposeMatrixdARB_remap_index },
+ { 31842, LoadTransposeMatrixfARB_remap_index },
+ { 5898, MultTransposeMatrixdARB_remap_index },
+ { 24599, MultTransposeMatrixfARB_remap_index },
+ { 216, SampleCoverageARB_remap_index },
+ { 6124, CompressedTexImage1DARB_remap_index },
+ { 25127, CompressedTexImage2DARB_remap_index },
+ { 4094, CompressedTexImage3DARB_remap_index },
+ { 18988, CompressedTexSubImage1DARB_remap_index },
+ { 2102, CompressedTexSubImage2DARB_remap_index },
+ { 21158, CompressedTexSubImage3DARB_remap_index },
+ { 29559, GetCompressedTexImageARB_remap_index },
+ { 3905, DisableVertexAttribArrayARB_remap_index },
+ { 30995, EnableVertexAttribArrayARB_remap_index },
+ { 32956, GetProgramEnvParameterdvARB_remap_index },
+ { 24479, GetProgramEnvParameterfvARB_remap_index },
+ { 28476, GetProgramLocalParameterdvARB_remap_index },
+ { 8402, GetProgramLocalParameterfvARB_remap_index },
+ { 19164, GetProgramStringARB_remap_index },
+ { 28671, GetProgramivARB_remap_index },
+ { 21353, GetVertexAttribdvARB_remap_index },
+ { 16574, GetVertexAttribfvARB_remap_index },
+ { 10077, GetVertexAttribivARB_remap_index },
+ { 20199, ProgramEnvParameter4dARB_remap_index },
+ { 26193, ProgramEnvParameter4dvARB_remap_index },
+ { 17414, ProgramEnvParameter4fARB_remap_index },
+ { 9277, ProgramEnvParameter4fvARB_remap_index },
+ { 4057, ProgramLocalParameter4dARB_remap_index },
+ { 13486, ProgramLocalParameter4dvARB_remap_index },
+ { 30474, ProgramLocalParameter4fARB_remap_index },
+ { 26839, ProgramLocalParameter4fvARB_remap_index },
+ { 29313, ProgramStringARB_remap_index },
+ { 20467, VertexAttrib1dARB_remap_index },
+ { 16201, VertexAttrib1dvARB_remap_index },
+ { 4253, VertexAttrib1fARB_remap_index },
+ { 33982, VertexAttrib1fvARB_remap_index },
+ { 7452, VertexAttrib1sARB_remap_index },
+ { 2297, VertexAttrib1svARB_remap_index },
+ { 15632, VertexAttrib2dARB_remap_index },
+ { 18137, VertexAttrib2dvARB_remap_index },
+ { 1648, VertexAttrib2fARB_remap_index },
+ { 18250, VertexAttrib2fvARB_remap_index },
+ { 33582, VertexAttrib2sARB_remap_index },
+ { 32593, VertexAttrib2svARB_remap_index },
+ { 11651, VertexAttrib3dARB_remap_index },
+ { 8944, VertexAttrib3dvARB_remap_index },
+ { 1735, VertexAttrib3fARB_remap_index },
+ { 23470, VertexAttrib3fvARB_remap_index },
+ { 29160, VertexAttrib3sARB_remap_index },
+ { 21095, VertexAttrib3svARB_remap_index },
+ { 5079, VertexAttrib4NbvARB_remap_index },
+ { 18523, VertexAttrib4NivARB_remap_index },
+ { 23425, VertexAttrib4NsvARB_remap_index },
+ { 24431, VertexAttrib4NubARB_remap_index },
+ { 32839, VertexAttrib4NubvARB_remap_index },
+ { 19850, VertexAttrib4NuivARB_remap_index },
+ { 3212, VertexAttrib4NusvARB_remap_index },
+ { 11240, VertexAttrib4bvARB_remap_index },
+ { 27849, VertexAttrib4dARB_remap_index },
+ { 22152, VertexAttrib4dvARB_remap_index },
+ { 11805, VertexAttrib4fARB_remap_index },
+ { 12209, VertexAttrib4fvARB_remap_index },
+ { 10616, VertexAttrib4ivARB_remap_index },
+ { 17930, VertexAttrib4sARB_remap_index },
+ { 32028, VertexAttrib4svARB_remap_index },
+ { 17219, VertexAttrib4ubvARB_remap_index },
+ { 31319, VertexAttrib4uivARB_remap_index },
+ { 20906, VertexAttrib4usvARB_remap_index },
+ { 22968, VertexAttribPointerARB_remap_index },
+ { 33742, BindBufferARB_remap_index },
+ { 7159, BufferDataARB_remap_index },
+ { 1511, BufferSubDataARB_remap_index },
+ { 31605, DeleteBuffersARB_remap_index },
+ { 34025, GenBuffersARB_remap_index },
+ { 18293, GetBufferParameterivARB_remap_index },
+ { 17366, GetBufferPointervARB_remap_index },
+ { 1464, GetBufferSubDataARB_remap_index },
+ { 31267, IsBufferARB_remap_index },
+ { 27323, MapBufferARB_remap_index },
+ { 32243, UnmapBufferARB_remap_index },
+ { 312, BeginQueryARB_remap_index },
+ { 20562, DeleteQueriesARB_remap_index },
+ { 12528, EndQueryARB_remap_index },
+ { 30038, GenQueriesARB_remap_index },
+ { 1994, GetQueryObjectivARB_remap_index },
+ { 17974, GetQueryObjectuivARB_remap_index },
+ { 1792, GetQueryivARB_remap_index },
+ { 20813, IsQueryARB_remap_index },
+ { 8554, AttachObjectARB_remap_index },
+ { 19361, CompileShaderARB_remap_index },
+ { 3281, CreateProgramObjectARB_remap_index },
+ { 7104, CreateShaderObjectARB_remap_index },
+ { 14934, DeleteObjectARB_remap_index },
+ { 24918, DetachObjectARB_remap_index },
+ { 12273, GetActiveUniformARB_remap_index },
+ { 9752, GetAttachedObjectsARB_remap_index },
+ { 10059, GetHandleARB_remap_index },
+ { 33775, GetInfoLogARB_remap_index },
+ { 32910, GetObjectParameterfvARB_remap_index },
+ { 28350, GetObjectParameterivARB_remap_index },
+ { 29796, GetShaderSourceARB_remap_index },
+ { 29020, GetUniformLocationARB_remap_index },
+ { 24701, GetUniformfvARB_remap_index },
+ { 13061, GetUniformivARB_remap_index },
+ { 20951, LinkProgramARB_remap_index },
+ { 21009, ShaderSourceARB_remap_index },
+ { 7826, Uniform1fARB_remap_index },
+ { 30683, Uniform1fvARB_remap_index },
+ { 22916, Uniform1iARB_remap_index },
+ { 21806, Uniform1ivARB_remap_index },
+ { 2246, Uniform2fARB_remap_index },
+ { 14770, Uniform2fvARB_remap_index },
+ { 27210, Uniform2iARB_remap_index },
+ { 2366, Uniform2ivARB_remap_index },
+ { 19471, Uniform3fARB_remap_index },
+ { 9782, Uniform3fvARB_remap_index },
+ { 6715, Uniform3iARB_remap_index },
+ { 17472, Uniform3ivARB_remap_index },
+ { 20005, Uniform4fARB_remap_index },
+ { 24565, Uniform4fvARB_remap_index },
+ { 25827, Uniform4iARB_remap_index },
+ { 21319, Uniform4ivARB_remap_index },
+ { 8606, UniformMatrix2fvARB_remap_index },
{ 17, UniformMatrix3fvARB_remap_index },
- { 2802, UniformMatrix4fvARB_remap_index },
- { 26151, UseProgramObjectARB_remap_index },
- { 15280, ValidateProgramARB_remap_index },
- { 22041, BindAttribLocationARB_remap_index },
- { 5197, GetActiveAttribARB_remap_index },
- { 17041, GetAttribLocationARB_remap_index },
- { 30331, DrawBuffersARB_remap_index },
- { 30164, ClampColorARB_remap_index },
- { 18456, DrawArraysInstancedARB_remap_index },
- { 6807, DrawElementsInstancedARB_remap_index },
- { 13622, RenderbufferStorageMultisample_remap_index },
- { 14093, FramebufferTextureARB_remap_index },
- { 26587, FramebufferTextureFaceARB_remap_index },
- { 24913, ProgramParameteriARB_remap_index },
- { 6327, VertexAttribDivisorARB_remap_index },
- { 19899, FlushMappedBufferRange_remap_index },
- { 28665, MapBufferRange_remap_index },
- { 28572, TexBufferARB_remap_index },
- { 16864, BindVertexArray_remap_index },
- { 15103, GenVertexArrays_remap_index },
- { 31127, CopyBufferSubData_remap_index },
- { 32062, ClientWaitSync_remap_index },
- { 2721, DeleteSync_remap_index },
- { 7524, FenceSync_remap_index },
- { 15651, GetInteger64v_remap_index },
- { 23378, GetSynciv_remap_index },
- { 30270, IsSync_remap_index },
- { 9731, WaitSync_remap_index },
- { 3951, DrawElementsBaseVertex_remap_index },
- { 31439, DrawRangeElementsBaseVertex_remap_index },
- { 27200, MultiDrawElementsBaseVertex_remap_index },
- { 33006, BlendEquationSeparateiARB_remap_index },
- { 18274, BlendEquationiARB_remap_index },
- { 13031, BlendFuncSeparateiARB_remap_index },
- { 10156, BlendFunciARB_remap_index },
- { 8499, BindSampler_remap_index },
- { 4357, DeleteSamplers_remap_index },
- { 20272, GenSamplers_remap_index },
- { 30202, GetSamplerParameterIiv_remap_index },
- { 19793, GetSamplerParameterIuiv_remap_index },
- { 5046, GetSamplerParameterfv_remap_index },
- { 26308, GetSamplerParameteriv_remap_index },
- { 14648, IsSampler_remap_index },
- { 16817, SamplerParameterIiv_remap_index },
- { 31478, SamplerParameterIuiv_remap_index },
- { 23051, SamplerParameterf_remap_index },
- { 16973, SamplerParameterfv_remap_index },
- { 23026, SamplerParameteri_remap_index },
- { 18650, SamplerParameteriv_remap_index },
- { 5393, BindTransformFeedback_remap_index },
- { 3386, DeleteTransformFeedbacks_remap_index },
- { 6779, DrawTransformFeedback_remap_index },
- { 9950, GenTransformFeedbacks_remap_index },
- { 29133, IsTransformFeedback_remap_index },
- { 26780, PauseTransformFeedback_remap_index },
- { 5856, ResumeTransformFeedback_remap_index },
- { 22361, ClearDepthf_remap_index },
- { 7083, DepthRangef_remap_index },
- { 14915, GetShaderPrecisionFormat_remap_index },
- { 10344, ReleaseShaderCompiler_remap_index },
- { 11314, ShaderBinary_remap_index },
- { 1004, GetGraphicsResetStatusARB_remap_index },
- { 25478, GetnColorTableARB_remap_index },
- { 8268, GetnCompressedTexImageARB_remap_index },
- { 4090, GetnConvolutionFilterARB_remap_index },
- { 16204, GetnHistogramARB_remap_index },
- { 24237, GetnMapdvARB_remap_index },
- { 22793, GetnMapfvARB_remap_index },
- { 2264, GetnMapivARB_remap_index },
- { 17622, GetnMinmaxARB_remap_index },
- { 4671, GetnPixelMapfvARB_remap_index },
- { 19670, GetnPixelMapuivARB_remap_index },
- { 3111, GetnPixelMapusvARB_remap_index },
- { 1383, GetnPolygonStippleARB_remap_index },
- { 21826, GetnSeparableFilterARB_remap_index },
- { 33582, GetnTexImageARB_remap_index },
- { 19079, GetnUniformdvARB_remap_index },
- { 4743, GetnUniformfvARB_remap_index },
- { 10199, GetnUniformivARB_remap_index },
- { 23227, GetnUniformuivARB_remap_index },
- { 3025, ReadnPixelsARB_remap_index },
- { 5724, PolygonOffsetEXT_remap_index },
- { 24000, GetPixelTexGenParameterfvSGIS_remap_index },
- { 4621, GetPixelTexGenParameterivSGIS_remap_index },
- { 23733, PixelTexGenParameterfSGIS_remap_index },
- { 663, PixelTexGenParameterfvSGIS_remap_index },
- { 13130, PixelTexGenParameteriSGIS_remap_index },
- { 14235, PixelTexGenParameterivSGIS_remap_index },
- { 18775, SampleMaskSGIS_remap_index },
- { 20599, SamplePatternSGIS_remap_index },
- { 27129, ColorPointerEXT_remap_index },
- { 18068, EdgeFlagPointerEXT_remap_index },
- { 6400, IndexPointerEXT_remap_index },
- { 6480, NormalPointerEXT_remap_index },
- { 16272, TexCoordPointerEXT_remap_index },
- { 7313, VertexPointerEXT_remap_index },
- { 3753, PointParameterfEXT_remap_index },
- { 8164, PointParameterfvEXT_remap_index },
- { 32899, LockArraysEXT_remap_index },
- { 15344, UnlockArraysEXT_remap_index },
- { 1291, SecondaryColor3bEXT_remap_index },
- { 8357, SecondaryColor3bvEXT_remap_index },
- { 10824, SecondaryColor3dEXT_remap_index },
- { 26357, SecondaryColor3dvEXT_remap_index },
- { 28999, SecondaryColor3fEXT_remap_index },
- { 18812, SecondaryColor3fvEXT_remap_index },
- { 509, SecondaryColor3iEXT_remap_index },
- { 16582, SecondaryColor3ivEXT_remap_index },
- { 10432, SecondaryColor3sEXT_remap_index },
- { 31726, SecondaryColor3svEXT_remap_index },
- { 28064, SecondaryColor3ubEXT_remap_index },
- { 21932, SecondaryColor3ubvEXT_remap_index },
- { 13372, SecondaryColor3uiEXT_remap_index },
- { 23620, SecondaryColor3uivEXT_remap_index },
- { 26637, SecondaryColor3usEXT_remap_index },
- { 13445, SecondaryColor3usvEXT_remap_index },
- { 12183, SecondaryColorPointerEXT_remap_index },
- { 26451, MultiDrawArraysEXT_remap_index },
- { 21587, MultiDrawElementsEXT_remap_index },
- { 21782, FogCoordPointerEXT_remap_index },
- { 4794, FogCoorddEXT_remap_index },
- { 32300, FogCoorddvEXT_remap_index },
- { 4911, FogCoordfEXT_remap_index },
- { 27987, FogCoordfvEXT_remap_index },
- { 12283, PixelTexGenSGIX_remap_index },
- { 28592, BlendFuncSeparateEXT_remap_index },
- { 7225, FlushVertexArrayRangeNV_remap_index },
- { 5673, VertexArrayRangeNV_remap_index },
- { 29064, CombinerInputNV_remap_index },
- { 2207, CombinerOutputNV_remap_index },
- { 31879, CombinerParameterfNV_remap_index },
- { 5547, CombinerParameterfvNV_remap_index },
- { 23076, CombinerParameteriNV_remap_index },
- { 33382, CombinerParameterivNV_remap_index },
- { 7601, FinalCombinerInputNV_remap_index },
- { 1648, GetCombinerInputParameterfvNV_remap_index },
- { 33219, GetCombinerInputParameterivNV_remap_index },
- { 216, GetCombinerOutputParameterfvNV_remap_index },
- { 14196, GetCombinerOutputParameterivNV_remap_index },
- { 6987, GetFinalCombinerInputParameterfvNV_remap_index },
- { 25545, GetFinalCombinerInputParameterivNV_remap_index },
- { 13009, ResizeBuffersMESA_remap_index },
- { 11509, WindowPos2dMESA_remap_index },
- { 1084, WindowPos2dvMESA_remap_index },
- { 34286, WindowPos2fMESA_remap_index },
- { 8302, WindowPos2fvMESA_remap_index },
- { 18722, WindowPos2iMESA_remap_index },
- { 21072, WindowPos2ivMESA_remap_index },
- { 21686, WindowPos2sMESA_remap_index },
- { 6069, WindowPos2svMESA_remap_index },
- { 8093, WindowPos3dMESA_remap_index },
- { 14443, WindowPos3dvMESA_remap_index },
- { 555, WindowPos3fMESA_remap_index },
- { 15405, WindowPos3fvMESA_remap_index },
- { 24806, WindowPos3iMESA_remap_index },
- { 31072, WindowPos3ivMESA_remap_index },
- { 19462, WindowPos3sMESA_remap_index },
- { 32556, WindowPos3svMESA_remap_index },
- { 11460, WindowPos4dMESA_remap_index },
- { 17498, WindowPos4dvMESA_remap_index },
- { 14402, WindowPos4fMESA_remap_index },
- { 31633, WindowPos4fvMESA_remap_index },
- { 31225, WindowPos4iMESA_remap_index },
- { 12812, WindowPos4ivMESA_remap_index },
- { 19646, WindowPos4sMESA_remap_index },
- { 3337, WindowPos4svMESA_remap_index },
- { 27695, MultiModeDrawArraysIBM_remap_index },
- { 29839, MultiModeDrawElementsIBM_remap_index },
- { 12587, DeleteFencesNV_remap_index },
- { 28911, FinishFenceNV_remap_index },
- { 3875, GenFencesNV_remap_index },
- { 17478, GetFenceivNV_remap_index },
- { 8570, IsFenceNV_remap_index },
- { 14123, SetFenceNV_remap_index },
- { 4434, TestFenceNV_remap_index },
- { 32527, AreProgramsResidentNV_remap_index },
- { 31921, BindProgramNV_remap_index },
- { 26720, DeleteProgramsNV_remap_index },
- { 22150, ExecuteProgramNV_remap_index },
- { 34179, GenProgramsNV_remap_index },
- { 24105, GetProgramParameterdvNV_remap_index },
- { 10886, GetProgramParameterfvNV_remap_index },
- { 27103, GetProgramStringNV_remap_index },
- { 25183, GetProgramivNV_remap_index },
- { 24360, GetTrackMatrixivNV_remap_index },
- { 26897, GetVertexAttribPointervNV_remap_index },
- { 10527, GetVertexAttribdvNV_remap_index },
- { 9626, GetVertexAttribfvNV_remap_index },
- { 19025, GetVertexAttribivNV_remap_index },
- { 19929, IsProgramNV_remap_index },
- { 9709, LoadProgramNV_remap_index },
- { 28688, ProgramParameters4dvNV_remap_index },
- { 25113, ProgramParameters4fvNV_remap_index },
- { 21376, RequestResidentProgramsNV_remap_index },
- { 31417, TrackMatrixNV_remap_index },
- { 33196, VertexAttrib1dNV_remap_index },
- { 14034, VertexAttrib1dvNV_remap_index },
- { 29345, VertexAttrib1fNV_remap_index },
- { 2527, VertexAttrib1fvNV_remap_index },
- { 31690, VertexAttrib1sNV_remap_index },
- { 15478, VertexAttrib1svNV_remap_index },
- { 5102, VertexAttrib2dNV_remap_index },
- { 13927, VertexAttrib2dvNV_remap_index },
- { 20831, VertexAttrib2fNV_remap_index },
- { 13493, VertexAttrib2fvNV_remap_index },
- { 6281, VertexAttrib2sNV_remap_index },
- { 19516, VertexAttrib2svNV_remap_index },
- { 11657, VertexAttrib3dNV_remap_index },
- { 32777, VertexAttrib3dvNV_remap_index },
- { 10698, VertexAttrib3fNV_remap_index },
- { 25505, VertexAttrib3fvNV_remap_index },
- { 22869, VertexAttrib3sNV_remap_index },
- { 24387, VertexAttrib3svNV_remap_index },
- { 29813, VertexAttrib4dNV_remap_index },
- { 34216, VertexAttrib4dvNV_remap_index },
- { 5487, VertexAttrib4fNV_remap_index },
- { 9759, VertexAttrib4fvNV_remap_index },
- { 27579, VertexAttrib4sNV_remap_index },
- { 1461, VertexAttrib4svNV_remap_index },
- { 5260, VertexAttrib4ubNV_remap_index },
- { 817, VertexAttrib4ubvNV_remap_index },
- { 22330, VertexAttribPointerNV_remap_index },
- { 2379, VertexAttribs1dvNV_remap_index },
- { 26985, VertexAttribs1fvNV_remap_index },
- { 34016, VertexAttribs1svNV_remap_index },
- { 10723, VertexAttribs2dvNV_remap_index },
- { 26112, VertexAttribs2fvNV_remap_index },
- { 18094, VertexAttribs2svNV_remap_index },
- { 5575, VertexAttribs3dvNV_remap_index },
- { 2238, VertexAttribs3fvNV_remap_index },
- { 30820, VertexAttribs3svNV_remap_index },
- { 27669, VertexAttribs4dvNV_remap_index },
- { 5647, VertexAttribs4fvNV_remap_index },
- { 33803, VertexAttribs4svNV_remap_index },
- { 30568, VertexAttribs4ubvNV_remap_index },
- { 27771, GetTexBumpParameterfvATI_remap_index },
- { 34057, GetTexBumpParameterivATI_remap_index },
- { 19160, TexBumpParameterfvATI_remap_index },
- { 21247, TexBumpParameterivATI_remap_index },
- { 16024, AlphaFragmentOp1ATI_remap_index },
- { 26403, AlphaFragmentOp2ATI_remap_index },
- { 25421, AlphaFragmentOp3ATI_remap_index },
- { 30747, BeginFragmentShaderATI_remap_index },
- { 32120, BindFragmentShaderATI_remap_index },
- { 24516, ColorFragmentOp1ATI_remap_index },
- { 4549, ColorFragmentOp2ATI_remap_index },
- { 32422, ColorFragmentOp3ATI_remap_index },
- { 5813, DeleteFragmentShaderATI_remap_index },
- { 34240, EndFragmentShaderATI_remap_index },
- { 33410, GenFragmentShadersATI_remap_index },
- { 26266, PassTexCoordATI_remap_index },
- { 7293, SampleMapATI_remap_index },
- { 27882, SetFragmentShaderConstantATI_remap_index },
- { 402, PointParameteriNV_remap_index },
- { 14604, PointParameterivNV_remap_index },
- { 29652, ActiveStencilFaceEXT_remap_index },
- { 28328, BindVertexArrayAPPLE_remap_index },
- { 2849, DeleteVertexArraysAPPLE_remap_index },
- { 18561, GenVertexArraysAPPLE_remap_index },
- { 24170, IsVertexArrayAPPLE_remap_index },
- { 858, GetProgramNamedParameterdvNV_remap_index },
- { 3716, GetProgramNamedParameterfvNV_remap_index },
- { 27802, ProgramNamedParameter4dNV_remap_index },
- { 14978, ProgramNamedParameter4dvNV_remap_index },
- { 9242, ProgramNamedParameter4fNV_remap_index },
- { 12148, ProgramNamedParameter4fvNV_remap_index },
- { 17409, PrimitiveRestartIndexNV_remap_index },
- { 31610, PrimitiveRestartNV_remap_index },
- { 25092, DepthBoundsEXT_remap_index },
- { 1183, BlendEquationSeparateEXT_remap_index },
- { 15179, BindFramebufferEXT_remap_index },
- { 26496, BindRenderbufferEXT_remap_index },
- { 10006, CheckFramebufferStatusEXT_remap_index },
- { 23421, DeleteFramebuffersEXT_remap_index },
- { 32679, DeleteRenderbuffersEXT_remap_index },
- { 13951, FramebufferRenderbufferEXT_remap_index },
- { 14140, FramebufferTexture1DEXT_remap_index },
- { 11942, FramebufferTexture2DEXT_remap_index },
- { 11562, FramebufferTexture3DEXT_remap_index },
- { 24036, GenFramebuffersEXT_remap_index },
- { 17959, GenRenderbuffersEXT_remap_index },
- { 7029, GenerateMipmapEXT_remap_index },
- { 22423, GetFramebufferAttachmentParameterivEXT_remap_index },
- { 33316, GetRenderbufferParameterivEXT_remap_index },
- { 21127, IsFramebufferEXT_remap_index },
- { 34139, IsRenderbufferEXT_remap_index },
- { 8517, RenderbufferStorageEXT_remap_index },
- { 734, BlitFramebufferEXT_remap_index },
- { 14764, BufferParameteriAPPLE_remap_index },
- { 19961, FlushMappedBufferRangeAPPLE_remap_index },
- { 1906, BindFragDataLocationEXT_remap_index },
- { 25205, GetFragDataLocationEXT_remap_index },
- { 11001, GetUniformuivEXT_remap_index },
- { 33490, GetVertexAttribIivEXT_remap_index },
- { 28859, GetVertexAttribIuivEXT_remap_index },
- { 12420, Uniform1uiEXT_remap_index },
- { 28773, Uniform1uivEXT_remap_index },
- { 22965, Uniform2uiEXT_remap_index },
- { 4513, Uniform2uivEXT_remap_index },
- { 30092, Uniform3uiEXT_remap_index },
- { 15125, Uniform3uivEXT_remap_index },
- { 3640, Uniform4uiEXT_remap_index },
- { 9018, Uniform4uivEXT_remap_index },
- { 18940, VertexAttribI1iEXT_remap_index },
- { 5287, VertexAttribI1ivEXT_remap_index },
- { 2628, VertexAttribI1uiEXT_remap_index },
- { 13221, VertexAttribI1uivEXT_remap_index },
+ { 2763, UniformMatrix4fvARB_remap_index },
+ { 26305, UseProgramObjectARB_remap_index },
+ { 15320, ValidateProgramARB_remap_index },
+ { 22195, BindAttribLocationARB_remap_index },
+ { 5124, GetActiveAttribARB_remap_index },
+ { 17086, GetAttribLocationARB_remap_index },
+ { 30401, DrawBuffersARB_remap_index },
+ { 30234, ClampColorARB_remap_index },
+ { 18568, DrawArraysInstancedARB_remap_index },
+ { 6776, DrawElementsInstancedARB_remap_index },
+ { 13591, RenderbufferStorageMultisample_remap_index },
+ { 14062, FramebufferTextureARB_remap_index },
+ { 26741, FramebufferTextureFaceARB_remap_index },
+ { 25067, ProgramParameteriARB_remap_index },
+ { 6296, VertexAttribDivisorARB_remap_index },
+ { 20053, FlushMappedBufferRange_remap_index },
+ { 28787, MapBufferRange_remap_index },
+ { 28694, TexBufferARB_remap_index },
+ { 16904, BindVertexArray_remap_index },
+ { 15143, GenVertexArrays_remap_index },
+ { 31197, CopyBufferSubData_remap_index },
+ { 32132, ClientWaitSync_remap_index },
+ { 2682, DeleteSync_remap_index },
+ { 7493, FenceSync_remap_index },
+ { 15691, GetInteger64v_remap_index },
+ { 23532, GetSynciv_remap_index },
+ { 30340, IsSync_remap_index },
+ { 9700, WaitSync_remap_index },
+ { 3873, DrawElementsBaseVertex_remap_index },
+ { 19216, DrawElementsInstancedBaseVertex_remap_index },
+ { 31509, DrawRangeElementsBaseVertex_remap_index },
+ { 27354, MultiDrawElementsBaseVertex_remap_index },
+ { 17152, BlendEquationSeparateiARB_remap_index },
+ { 18386, BlendEquationiARB_remap_index },
+ { 13000, BlendFuncSeparateiARB_remap_index },
+ { 10125, BlendFunciARB_remap_index },
+ { 8468, BindSampler_remap_index },
+ { 4232, DeleteSamplers_remap_index },
+ { 20426, GenSamplers_remap_index },
+ { 30272, GetSamplerParameterIiv_remap_index },
+ { 19947, GetSamplerParameterIuiv_remap_index },
+ { 4973, GetSamplerParameterfv_remap_index },
+ { 26462, GetSamplerParameteriv_remap_index },
+ { 14688, IsSampler_remap_index },
+ { 16857, SamplerParameterIiv_remap_index },
+ { 31548, SamplerParameterIuiv_remap_index },
+ { 23205, SamplerParameterf_remap_index },
+ { 17013, SamplerParameterfv_remap_index },
+ { 23180, SamplerParameteri_remap_index },
+ { 18762, SamplerParameteriv_remap_index },
+ { 5320, BindTransformFeedback_remap_index },
+ { 3308, DeleteTransformFeedbacks_remap_index },
+ { 6748, DrawTransformFeedback_remap_index },
+ { 9919, GenTransformFeedbacks_remap_index },
+ { 29203, IsTransformFeedback_remap_index },
+ { 26934, PauseTransformFeedback_remap_index },
+ { 5783, ResumeTransformFeedback_remap_index },
+ { 22515, ClearDepthf_remap_index },
+ { 7052, DepthRangef_remap_index },
+ { 14955, GetShaderPrecisionFormat_remap_index },
+ { 10313, ReleaseShaderCompiler_remap_index },
+ { 11283, ShaderBinary_remap_index },
+ { 965, GetGraphicsResetStatusARB_remap_index },
+ { 25632, GetnColorTableARB_remap_index },
+ { 8237, GetnCompressedTexImageARB_remap_index },
+ { 3965, GetnConvolutionFilterARB_remap_index },
+ { 16244, GetnHistogramARB_remap_index },
+ { 24391, GetnMapdvARB_remap_index },
+ { 22947, GetnMapfvARB_remap_index },
+ { 2225, GetnMapivARB_remap_index },
+ { 17734, GetnMinmaxARB_remap_index },
+ { 4598, GetnPixelMapfvARB_remap_index },
+ { 19824, GetnPixelMapuivARB_remap_index },
+ { 3033, GetnPixelMapusvARB_remap_index },
+ { 1344, GetnPolygonStippleARB_remap_index },
+ { 21980, GetnSeparableFilterARB_remap_index },
+ { 33624, GetnTexImageARB_remap_index },
+ { 19191, GetnUniformdvARB_remap_index },
+ { 4670, GetnUniformfvARB_remap_index },
+ { 10168, GetnUniformivARB_remap_index },
+ { 23381, GetnUniformuivARB_remap_index },
+ { 2947, ReadnPixelsARB_remap_index },
+ { 5651, PolygonOffsetEXT_remap_index },
+ { 24154, GetPixelTexGenParameterfvSGIS_remap_index },
+ { 4548, GetPixelTexGenParameterivSGIS_remap_index },
+ { 23887, PixelTexGenParameterfSGIS_remap_index },
+ { 624, PixelTexGenParameterfvSGIS_remap_index },
+ { 13099, PixelTexGenParameteriSGIS_remap_index },
+ { 14236, PixelTexGenParameterivSGIS_remap_index },
+ { 18887, SampleMaskSGIS_remap_index },
+ { 20753, SamplePatternSGIS_remap_index },
+ { 27283, ColorPointerEXT_remap_index },
+ { 18180, EdgeFlagPointerEXT_remap_index },
+ { 6369, IndexPointerEXT_remap_index },
+ { 6449, NormalPointerEXT_remap_index },
+ { 16312, TexCoordPointerEXT_remap_index },
+ { 7282, VertexPointerEXT_remap_index },
+ { 3675, PointParameterfEXT_remap_index },
+ { 8133, PointParameterfvEXT_remap_index },
+ { 33008, LockArraysEXT_remap_index },
+ { 15384, UnlockArraysEXT_remap_index },
+ { 1252, SecondaryColor3bEXT_remap_index },
+ { 8326, SecondaryColor3bvEXT_remap_index },
+ { 10793, SecondaryColor3dEXT_remap_index },
+ { 26511, SecondaryColor3dvEXT_remap_index },
+ { 29069, SecondaryColor3fEXT_remap_index },
+ { 18924, SecondaryColor3fvEXT_remap_index },
+ { 470, SecondaryColor3iEXT_remap_index },
+ { 16622, SecondaryColor3ivEXT_remap_index },
+ { 10401, SecondaryColor3sEXT_remap_index },
+ { 31796, SecondaryColor3svEXT_remap_index },
+ { 28186, SecondaryColor3ubEXT_remap_index },
+ { 22086, SecondaryColor3ubvEXT_remap_index },
+ { 13341, SecondaryColor3uiEXT_remap_index },
+ { 23774, SecondaryColor3uivEXT_remap_index },
+ { 26791, SecondaryColor3usEXT_remap_index },
+ { 13414, SecondaryColor3usvEXT_remap_index },
+ { 12152, SecondaryColorPointerEXT_remap_index },
+ { 26605, MultiDrawArraysEXT_remap_index },
+ { 21741, MultiDrawElementsEXT_remap_index },
+ { 21936, FogCoordPointerEXT_remap_index },
+ { 4721, FogCoorddEXT_remap_index },
+ { 32409, FogCoorddvEXT_remap_index },
+ { 4838, FogCoordfEXT_remap_index },
+ { 28109, FogCoordfvEXT_remap_index },
+ { 12252, PixelTexGenSGIX_remap_index },
+ { 28714, BlendFuncSeparateEXT_remap_index },
+ { 7194, FlushVertexArrayRangeNV_remap_index },
+ { 5600, VertexArrayRangeNV_remap_index },
+ { 29134, CombinerInputNV_remap_index },
+ { 2168, CombinerOutputNV_remap_index },
+ { 31949, CombinerParameterfNV_remap_index },
+ { 5474, CombinerParameterfvNV_remap_index },
+ { 23230, CombinerParameteriNV_remap_index },
+ { 33424, CombinerParameterivNV_remap_index },
+ { 7570, FinalCombinerInputNV_remap_index },
+ { 1609, GetCombinerInputParameterfvNV_remap_index },
+ { 33261, GetCombinerInputParameterivNV_remap_index },
+ { 14337, GetCombinerOutputParameterfvNV_remap_index },
+ { 14165, GetCombinerOutputParameterivNV_remap_index },
+ { 6956, GetFinalCombinerInputParameterfvNV_remap_index },
+ { 25699, GetFinalCombinerInputParameterivNV_remap_index },
+ { 12978, ResizeBuffersMESA_remap_index },
+ { 11478, WindowPos2dMESA_remap_index },
+ { 1045, WindowPos2dvMESA_remap_index },
+ { 34328, WindowPos2fMESA_remap_index },
+ { 8271, WindowPos2fvMESA_remap_index },
+ { 18834, WindowPos2iMESA_remap_index },
+ { 21226, WindowPos2ivMESA_remap_index },
+ { 21840, WindowPos2sMESA_remap_index },
+ { 6038, WindowPos2svMESA_remap_index },
+ { 8062, WindowPos3dMESA_remap_index },
+ { 14483, WindowPos3dvMESA_remap_index },
+ { 516, WindowPos3fMESA_remap_index },
+ { 15445, WindowPos3fvMESA_remap_index },
+ { 24960, WindowPos3iMESA_remap_index },
+ { 31142, WindowPos3ivMESA_remap_index },
+ { 19616, WindowPos3sMESA_remap_index },
+ { 32665, WindowPos3svMESA_remap_index },
+ { 11429, WindowPos4dMESA_remap_index },
+ { 17610, WindowPos4dvMESA_remap_index },
+ { 14442, WindowPos4fMESA_remap_index },
+ { 31703, WindowPos4fvMESA_remap_index },
+ { 31295, WindowPos4iMESA_remap_index },
+ { 12781, WindowPos4ivMESA_remap_index },
+ { 19800, WindowPos4sMESA_remap_index },
+ { 3259, WindowPos4svMESA_remap_index },
+ { 14204, MultiModeDrawArraysIBM_remap_index },
+ { 29909, MultiModeDrawElementsIBM_remap_index },
+ { 12556, DeleteFencesNV_remap_index },
+ { 28981, FinishFenceNV_remap_index },
+ { 3797, GenFencesNV_remap_index },
+ { 17590, GetFenceivNV_remap_index },
+ { 8539, IsFenceNV_remap_index },
+ { 14092, SetFenceNV_remap_index },
+ { 4309, TestFenceNV_remap_index },
+ { 32636, AreProgramsResidentNV_remap_index },
+ { 31991, BindProgramNV_remap_index },
+ { 26874, DeleteProgramsNV_remap_index },
+ { 22304, ExecuteProgramNV_remap_index },
+ { 34221, GenProgramsNV_remap_index },
+ { 24259, GetProgramParameterdvNV_remap_index },
+ { 10855, GetProgramParameterfvNV_remap_index },
+ { 27257, GetProgramStringNV_remap_index },
+ { 25337, GetProgramivNV_remap_index },
+ { 24514, GetTrackMatrixivNV_remap_index },
+ { 27051, GetVertexAttribPointervNV_remap_index },
+ { 10496, GetVertexAttribdvNV_remap_index },
+ { 9595, GetVertexAttribfvNV_remap_index },
+ { 19137, GetVertexAttribivNV_remap_index },
+ { 20083, IsProgramNV_remap_index },
+ { 9678, LoadProgramNV_remap_index },
+ { 28810, ProgramParameters4dvNV_remap_index },
+ { 25267, ProgramParameters4fvNV_remap_index },
+ { 21530, RequestResidentProgramsNV_remap_index },
+ { 31487, TrackMatrixNV_remap_index },
+ { 33238, VertexAttrib1dNV_remap_index },
+ { 14003, VertexAttrib1dvNV_remap_index },
+ { 29415, VertexAttrib1fNV_remap_index },
+ { 2488, VertexAttrib1fvNV_remap_index },
+ { 31760, VertexAttrib1sNV_remap_index },
+ { 15518, VertexAttrib1svNV_remap_index },
+ { 5029, VertexAttrib2dNV_remap_index },
+ { 13896, VertexAttrib2dvNV_remap_index },
+ { 20985, VertexAttrib2fNV_remap_index },
+ { 13462, VertexAttrib2fvNV_remap_index },
+ { 6250, VertexAttrib2sNV_remap_index },
+ { 19670, VertexAttrib2svNV_remap_index },
+ { 11626, VertexAttrib3dNV_remap_index },
+ { 32886, VertexAttrib3dvNV_remap_index },
+ { 10667, VertexAttrib3fNV_remap_index },
+ { 25659, VertexAttrib3fvNV_remap_index },
+ { 23023, VertexAttrib3sNV_remap_index },
+ { 24541, VertexAttrib3svNV_remap_index },
+ { 29883, VertexAttrib4dNV_remap_index },
+ { 34258, VertexAttrib4dvNV_remap_index },
+ { 5414, VertexAttrib4fNV_remap_index },
+ { 9728, VertexAttrib4fvNV_remap_index },
+ { 27733, VertexAttrib4sNV_remap_index },
+ { 1422, VertexAttrib4svNV_remap_index },
+ { 5187, VertexAttrib4ubNV_remap_index },
+ { 778, VertexAttrib4ubvNV_remap_index },
+ { 22484, VertexAttribPointerNV_remap_index },
+ { 2340, VertexAttribs1dvNV_remap_index },
+ { 27139, VertexAttribs1fvNV_remap_index },
+ { 34058, VertexAttribs1svNV_remap_index },
+ { 10692, VertexAttribs2dvNV_remap_index },
+ { 26266, VertexAttribs2fvNV_remap_index },
+ { 18206, VertexAttribs2svNV_remap_index },
+ { 5502, VertexAttribs3dvNV_remap_index },
+ { 2199, VertexAttribs3fvNV_remap_index },
+ { 30890, VertexAttribs3svNV_remap_index },
+ { 27823, VertexAttribs4dvNV_remap_index },
+ { 5574, VertexAttribs4fvNV_remap_index },
+ { 33845, VertexAttribs4svNV_remap_index },
+ { 30638, VertexAttribs4ubvNV_remap_index },
+ { 27893, GetTexBumpParameterfvATI_remap_index },
+ { 34099, GetTexBumpParameterivATI_remap_index },
+ { 19314, TexBumpParameterfvATI_remap_index },
+ { 21401, TexBumpParameterivATI_remap_index },
+ { 16064, AlphaFragmentOp1ATI_remap_index },
+ { 26557, AlphaFragmentOp2ATI_remap_index },
+ { 25575, AlphaFragmentOp3ATI_remap_index },
+ { 30817, BeginFragmentShaderATI_remap_index },
+ { 32190, BindFragmentShaderATI_remap_index },
+ { 24670, ColorFragmentOp1ATI_remap_index },
+ { 4476, ColorFragmentOp2ATI_remap_index },
+ { 32531, ColorFragmentOp3ATI_remap_index },
+ { 5740, DeleteFragmentShaderATI_remap_index },
+ { 34282, EndFragmentShaderATI_remap_index },
+ { 33452, GenFragmentShadersATI_remap_index },
+ { 26420, PassTexCoordATI_remap_index },
+ { 7262, SampleMapATI_remap_index },
+ { 28004, SetFragmentShaderConstantATI_remap_index },
+ { 363, PointParameteriNV_remap_index },
+ { 14644, PointParameterivNV_remap_index },
+ { 29722, ActiveStencilFaceEXT_remap_index },
+ { 28450, BindVertexArrayAPPLE_remap_index },
+ { 2810, DeleteVertexArraysAPPLE_remap_index },
+ { 18673, GenVertexArraysAPPLE_remap_index },
+ { 24324, IsVertexArrayAPPLE_remap_index },
+ { 819, GetProgramNamedParameterdvNV_remap_index },
+ { 3638, GetProgramNamedParameterfvNV_remap_index },
+ { 27924, ProgramNamedParameter4dNV_remap_index },
+ { 15018, ProgramNamedParameter4dvNV_remap_index },
+ { 9211, ProgramNamedParameter4fNV_remap_index },
+ { 12117, ProgramNamedParameter4fvNV_remap_index },
+ { 17521, PrimitiveRestartIndexNV_remap_index },
+ { 31680, PrimitiveRestartNV_remap_index },
+ { 25246, DepthBoundsEXT_remap_index },
+ { 1144, BlendEquationSeparateEXT_remap_index },
+ { 15219, BindFramebufferEXT_remap_index },
+ { 26650, BindRenderbufferEXT_remap_index },
+ { 9975, CheckFramebufferStatusEXT_remap_index },
+ { 23575, DeleteFramebuffersEXT_remap_index },
+ { 32788, DeleteRenderbuffersEXT_remap_index },
+ { 13920, FramebufferRenderbufferEXT_remap_index },
+ { 14109, FramebufferTexture1DEXT_remap_index },
+ { 11911, FramebufferTexture2DEXT_remap_index },
+ { 11531, FramebufferTexture3DEXT_remap_index },
+ { 24190, GenFramebuffersEXT_remap_index },
+ { 18071, GenRenderbuffersEXT_remap_index },
+ { 6998, GenerateMipmapEXT_remap_index },
+ { 22577, GetFramebufferAttachmentParameterivEXT_remap_index },
+ { 33358, GetRenderbufferParameterivEXT_remap_index },
+ { 21281, IsFramebufferEXT_remap_index },
+ { 34181, IsRenderbufferEXT_remap_index },
+ { 8486, RenderbufferStorageEXT_remap_index },
+ { 695, BlitFramebufferEXT_remap_index },
+ { 14804, BufferParameteriAPPLE_remap_index },
+ { 20115, FlushMappedBufferRangeAPPLE_remap_index },
+ { 1867, BindFragDataLocationEXT_remap_index },
+ { 25359, GetFragDataLocationEXT_remap_index },
+ { 10970, GetUniformuivEXT_remap_index },
+ { 33532, GetVertexAttribIivEXT_remap_index },
+ { 4326, GetVertexAttribIuivEXT_remap_index },
+ { 12389, Uniform1uiEXT_remap_index },
+ { 28895, Uniform1uivEXT_remap_index },
+ { 23119, Uniform2uiEXT_remap_index },
+ { 4440, Uniform2uivEXT_remap_index },
+ { 30162, Uniform3uiEXT_remap_index },
+ { 15165, Uniform3uivEXT_remap_index },
+ { 3562, Uniform4uiEXT_remap_index },
+ { 8987, Uniform4uivEXT_remap_index },
+ { 19052, VertexAttribI1iEXT_remap_index },
+ { 5214, VertexAttribI1ivEXT_remap_index },
+ { 2589, VertexAttribI1uiEXT_remap_index },
+ { 13190, VertexAttribI1uivEXT_remap_index },
{ 81, VertexAttribI2iEXT_remap_index },
- { 24628, VertexAttribI2ivEXT_remap_index },
- { 5601, VertexAttribI2uiEXT_remap_index },
- { 4956, VertexAttribI2uivEXT_remap_index },
- { 27371, VertexAttribI3iEXT_remap_index },
- { 25830, VertexAttribI3ivEXT_remap_index },
- { 3494, VertexAttribI3uiEXT_remap_index },
- { 31313, VertexAttribI3uivEXT_remap_index },
- { 22674, VertexAttribI4bvEXT_remap_index },
- { 15057, VertexAttribI4iEXT_remap_index },
- { 32948, VertexAttribI4ivEXT_remap_index },
- { 13854, VertexAttribI4svEXT_remap_index },
- { 4043, VertexAttribI4ubvEXT_remap_index },
- { 16645, VertexAttribI4uiEXT_remap_index },
- { 5747, VertexAttribI4uivEXT_remap_index },
- { 11725, VertexAttribI4usvEXT_remap_index },
- { 19104, VertexAttribIPointerEXT_remap_index },
- { 3181, FramebufferTextureLayerEXT_remap_index },
- { 16999, ColorMaskIndexedEXT_remap_index },
- { 19540, DisableIndexedEXT_remap_index },
- { 27416, EnableIndexedEXT_remap_index },
- { 22378, GetBooleanIndexedvEXT_remap_index },
- { 11336, GetIntegerIndexedvEXT_remap_index },
- { 23497, IsEnabledIndexedEXT_remap_index },
- { 23397, ClearColorIiEXT_remap_index },
- { 3590, ClearColorIuiEXT_remap_index },
- { 10224, GetTexParameterIivEXT_remap_index },
- { 6229, GetTexParameterIuivEXT_remap_index },
- { 3137, TexParameterIivEXT_remap_index },
- { 27238, TexParameterIuivEXT_remap_index },
- { 4824, BeginConditionalRenderNV_remap_index },
- { 26216, EndConditionalRenderNV_remap_index },
- { 9653, BeginTransformFeedbackEXT_remap_index },
- { 19575, BindBufferBaseEXT_remap_index },
- { 19434, BindBufferOffsetEXT_remap_index },
- { 12637, BindBufferRangeEXT_remap_index },
- { 14679, EndTransformFeedbackEXT_remap_index },
- { 11199, GetTransformFeedbackVaryingEXT_remap_index },
- { 21432, TransformFeedbackVaryingsEXT_remap_index },
- { 30469, ProvokingVertexEXT_remap_index },
- { 11147, GetTexParameterPointervAPPLE_remap_index },
- { 5349, TextureRangeAPPLE_remap_index },
- { 12014, GetObjectParameterivAPPLE_remap_index },
- { 20554, ObjectPurgeableAPPLE_remap_index },
- { 6023, ObjectUnpurgeableAPPLE_remap_index },
- { 17781, ActiveProgramEXT_remap_index },
- { 17752, CreateShaderProgramEXT_remap_index },
- { 29437, UseShaderProgramEXT_remap_index },
- { 16952, TextureBarrierNV_remap_index },
- { 29678, StencilFuncSeparateATI_remap_index },
- { 5936, ProgramEnvParameters4fvEXT_remap_index },
- { 17646, ProgramLocalParameters4fvEXT_remap_index },
- { 14532, GetQueryObjecti64vEXT_remap_index },
- { 10749, GetQueryObjectui64vEXT_remap_index },
- { 24585, EGLImageTargetRenderbufferStorageOES_remap_index },
- { 12526, EGLImageTargetTexture2DOES_remap_index },
+ { 24782, VertexAttribI2ivEXT_remap_index },
+ { 5528, VertexAttribI2uiEXT_remap_index },
+ { 4883, VertexAttribI2uivEXT_remap_index },
+ { 27525, VertexAttribI3iEXT_remap_index },
+ { 25984, VertexAttribI3ivEXT_remap_index },
+ { 3416, VertexAttribI3uiEXT_remap_index },
+ { 31383, VertexAttribI3uivEXT_remap_index },
+ { 22828, VertexAttribI4bvEXT_remap_index },
+ { 15097, VertexAttribI4iEXT_remap_index },
+ { 33057, VertexAttribI4ivEXT_remap_index },
+ { 13823, VertexAttribI4svEXT_remap_index },
+ { 17039, VertexAttribI4ubvEXT_remap_index },
+ { 16685, VertexAttribI4uiEXT_remap_index },
+ { 5674, VertexAttribI4uivEXT_remap_index },
+ { 11694, VertexAttribI4usvEXT_remap_index },
+ { 19258, VertexAttribIPointerEXT_remap_index },
+ { 3103, FramebufferTextureLayerEXT_remap_index },
+ { 5950, ColorMaskIndexedEXT_remap_index },
+ { 19694, DisableIndexedEXT_remap_index },
+ { 27570, EnableIndexedEXT_remap_index },
+ { 22532, GetBooleanIndexedvEXT_remap_index },
+ { 11305, GetIntegerIndexedvEXT_remap_index },
+ { 23651, IsEnabledIndexedEXT_remap_index },
+ { 23551, ClearColorIiEXT_remap_index },
+ { 3512, ClearColorIuiEXT_remap_index },
+ { 10193, GetTexParameterIivEXT_remap_index },
+ { 6198, GetTexParameterIuivEXT_remap_index },
+ { 3059, TexParameterIivEXT_remap_index },
+ { 27392, TexParameterIuivEXT_remap_index },
+ { 4751, BeginConditionalRenderNV_remap_index },
+ { 26370, EndConditionalRenderNV_remap_index },
+ { 9622, BeginTransformFeedbackEXT_remap_index },
+ { 19729, BindBufferBaseEXT_remap_index },
+ { 19588, BindBufferOffsetEXT_remap_index },
+ { 12606, BindBufferRangeEXT_remap_index },
+ { 14719, EndTransformFeedbackEXT_remap_index },
+ { 11168, GetTransformFeedbackVaryingEXT_remap_index },
+ { 21586, TransformFeedbackVaryingsEXT_remap_index },
+ { 30539, ProvokingVertexEXT_remap_index },
+ { 11116, GetTexParameterPointervAPPLE_remap_index },
+ { 5276, TextureRangeAPPLE_remap_index },
+ { 11983, GetObjectParameterivAPPLE_remap_index },
+ { 20708, ObjectPurgeableAPPLE_remap_index },
+ { 5992, ObjectUnpurgeableAPPLE_remap_index },
+ { 17893, ActiveProgramEXT_remap_index },
+ { 17864, CreateShaderProgramEXT_remap_index },
+ { 29507, UseShaderProgramEXT_remap_index },
+ { 16992, TextureBarrierNV_remap_index },
+ { 29748, StencilFuncSeparateATI_remap_index },
+ { 5863, ProgramEnvParameters4fvEXT_remap_index },
+ { 17758, ProgramLocalParameters4fvEXT_remap_index },
+ { 14572, GetQueryObjecti64vEXT_remap_index },
+ { 10718, GetQueryObjectui64vEXT_remap_index },
+ { 24739, EGLImageTargetRenderbufferStorageOES_remap_index },
+ { 12495, EGLImageTargetTexture2DOES_remap_index },
{ -1, -1 }
};
/* these functions are in the ABI, but have alternative names */
static const struct gl_function_remap MESA_alt_functions[] = {
/* from GL_EXT_blend_color */
- { 2767, _gloffset_BlendColor },
+ { 2728, _gloffset_BlendColor },
/* from GL_EXT_blend_minmax */
- { 11619, _gloffset_BlendEquation },
+ { 11588, _gloffset_BlendEquation },
/* from GL_EXT_color_subtable */
- { 17520, _gloffset_ColorSubTable },
- { 32611, _gloffset_CopyColorSubTable },
+ { 17632, _gloffset_ColorSubTable },
+ { 32720, _gloffset_CopyColorSubTable },
/* from GL_EXT_convolution */
- { 296, _gloffset_ConvolutionFilter1D },
- { 2566, _gloffset_CopyConvolutionFilter1D },
- { 4293, _gloffset_GetConvolutionParameteriv },
- { 8866, _gloffset_ConvolutionFilter2D },
- { 9068, _gloffset_ConvolutionParameteriv },
- { 9528, _gloffset_ConvolutionParameterfv },
- { 21275, _gloffset_GetSeparableFilter },
- { 24860, _gloffset_SeparableFilter2D },
- { 25723, _gloffset_ConvolutionParameteri },
- { 25891, _gloffset_ConvolutionParameterf },
- { 27605, _gloffset_GetConvolutionParameterfv },
- { 28494, _gloffset_GetConvolutionFilter },
- { 31009, _gloffset_CopyConvolutionFilter2D },
+ { 257, _gloffset_ConvolutionFilter1D },
+ { 2527, _gloffset_CopyConvolutionFilter1D },
+ { 4168, _gloffset_GetConvolutionParameteriv },
+ { 8835, _gloffset_ConvolutionFilter2D },
+ { 9037, _gloffset_ConvolutionParameteriv },
+ { 9497, _gloffset_ConvolutionParameterfv },
+ { 21429, _gloffset_GetSeparableFilter },
+ { 25014, _gloffset_SeparableFilter2D },
+ { 25877, _gloffset_ConvolutionParameteri },
+ { 26045, _gloffset_ConvolutionParameterf },
+ { 27759, _gloffset_GetConvolutionParameterfv },
+ { 28616, _gloffset_GetConvolutionFilter },
+ { 31079, _gloffset_CopyConvolutionFilter2D },
/* from GL_EXT_copy_texture */
- { 15538, _gloffset_CopyTexSubImage3D },
- { 17207, _gloffset_CopyTexImage2D },
- { 25331, _gloffset_CopyTexImage1D },
- { 28175, _gloffset_CopyTexSubImage2D },
- { 30647, _gloffset_CopyTexSubImage1D },
+ { 15578, _gloffset_CopyTexSubImage3D },
+ { 17319, _gloffset_CopyTexImage2D },
+ { 25485, _gloffset_CopyTexImage1D },
+ { 28297, _gloffset_CopyTexSubImage2D },
+ { 30717, _gloffset_CopyTexSubImage1D },
/* from GL_EXT_draw_range_elements */
- { 9865, _gloffset_DrawRangeElements },
+ { 9834, _gloffset_DrawRangeElements },
/* from GL_EXT_histogram */
- { 895, _gloffset_Histogram },
- { 3676, _gloffset_ResetHistogram },
- { 10370, _gloffset_GetMinmax },
- { 15872, _gloffset_GetHistogramParameterfv },
- { 25256, _gloffset_GetMinmaxParameteriv },
- { 27495, _gloffset_ResetMinmax },
- { 28391, _gloffset_GetHistogramParameteriv },
- { 29612, _gloffset_GetHistogram },
- { 32236, _gloffset_Minmax },
- { 33886, _gloffset_GetMinmaxParameterfv },
+ { 856, _gloffset_Histogram },
+ { 3598, _gloffset_ResetHistogram },
+ { 10339, _gloffset_GetMinmax },
+ { 15912, _gloffset_GetHistogramParameterfv },
+ { 25410, _gloffset_GetMinmaxParameteriv },
+ { 27649, _gloffset_ResetMinmax },
+ { 28513, _gloffset_GetHistogramParameteriv },
+ { 29682, _gloffset_GetHistogram },
+ { 32306, _gloffset_Minmax },
+ { 33928, _gloffset_GetMinmaxParameterfv },
/* from GL_EXT_paletted_texture */
- { 8728, _gloffset_ColorTable },
- { 15718, _gloffset_GetColorTable },
- { 23783, _gloffset_GetColorTableParameterfv },
- { 25947, _gloffset_GetColorTableParameteriv },
+ { 8697, _gloffset_ColorTable },
+ { 15758, _gloffset_GetColorTable },
+ { 23937, _gloffset_GetColorTableParameterfv },
+ { 26101, _gloffset_GetColorTableParameteriv },
/* from GL_EXT_subtexture */
- { 7439, _gloffset_TexSubImage1D },
- { 11074, _gloffset_TexSubImage2D },
+ { 7408, _gloffset_TexSubImage1D },
+ { 11043, _gloffset_TexSubImage2D },
/* from GL_EXT_texture3D */
- { 1865, _gloffset_TexImage3D },
- { 23552, _gloffset_TexSubImage3D },
+ { 1826, _gloffset_TexImage3D },
+ { 23706, _gloffset_TexSubImage3D },
/* from GL_EXT_texture_object */
- { 3444, _gloffset_PrioritizeTextures },
- { 7888, _gloffset_AreTexturesResident },
- { 14058, _gloffset_GenTextures },
- { 16231, _gloffset_DeleteTextures },
- { 20242, _gloffset_IsTexture },
- { 30712, _gloffset_BindTexture },
+ { 3366, _gloffset_PrioritizeTextures },
+ { 7857, _gloffset_AreTexturesResident },
+ { 14027, _gloffset_GenTextures },
+ { 16271, _gloffset_DeleteTextures },
+ { 20396, _gloffset_IsTexture },
+ { 30782, _gloffset_BindTexture },
/* from GL_EXT_vertex_array */
- { 25032, _gloffset_ArrayElement },
- { 31824, _gloffset_GetPointerv },
- { 33437, _gloffset_DrawArrays },
+ { 25186, _gloffset_ArrayElement },
+ { 31894, _gloffset_GetPointerv },
+ { 33479, _gloffset_DrawArrays },
/* from GL_SGI_color_table */
- { 8006, _gloffset_ColorTableParameteriv },
- { 8728, _gloffset_ColorTable },
- { 15718, _gloffset_GetColorTable },
- { 15828, _gloffset_CopyColorTable },
- { 20103, _gloffset_ColorTableParameterfv },
- { 23783, _gloffset_GetColorTableParameterfv },
- { 25947, _gloffset_GetColorTableParameteriv },
+ { 7975, _gloffset_ColorTableParameteriv },
+ { 8697, _gloffset_ColorTable },
+ { 15758, _gloffset_GetColorTable },
+ { 15868, _gloffset_CopyColorTable },
+ { 20257, _gloffset_ColorTableParameterfv },
+ { 23937, _gloffset_GetColorTableParameterfv },
+ { 26101, _gloffset_GetColorTableParameteriv },
/* from GL_VERSION_1_3 */
- { 464, _gloffset_MultiTexCoord3sARB },
- { 696, _gloffset_ActiveTextureARB },
- { 4451, _gloffset_MultiTexCoord1fvARB },
- { 6505, _gloffset_MultiTexCoord3dARB },
- { 6550, _gloffset_MultiTexCoord2iARB },
- { 6674, _gloffset_MultiTexCoord2svARB },
- { 8684, _gloffset_MultiTexCoord2fARB },
- { 10779, _gloffset_MultiTexCoord3fvARB },
- { 11381, _gloffset_MultiTexCoord4sARB },
- { 12062, _gloffset_MultiTexCoord2dvARB },
- { 12469, _gloffset_MultiTexCoord1svARB },
- { 12870, _gloffset_MultiTexCoord3svARB },
- { 12931, _gloffset_MultiTexCoord4iARB },
- { 13762, _gloffset_MultiTexCoord3iARB },
- { 14561, _gloffset_MultiTexCoord1dARB },
- { 14793, _gloffset_MultiTexCoord3dvARB },
- { 16072, _gloffset_MultiTexCoord3ivARB },
- { 16117, _gloffset_MultiTexCoord2sARB },
- { 17577, _gloffset_MultiTexCoord4ivARB },
- { 19743, _gloffset_ClientActiveTextureARB },
- { 22106, _gloffset_MultiTexCoord2dARB },
- { 22543, _gloffset_MultiTexCoord4dvARB },
- { 22920, _gloffset_MultiTexCoord4fvARB },
- { 23924, _gloffset_MultiTexCoord3fARB },
- { 26541, _gloffset_MultiTexCoord4dARB },
- { 26807, _gloffset_MultiTexCoord1sARB },
- { 27011, _gloffset_MultiTexCoord1dvARB },
- { 28019, _gloffset_MultiTexCoord1ivARB },
- { 28112, _gloffset_MultiTexCoord2ivARB },
- { 28451, _gloffset_MultiTexCoord1iARB },
- { 29887, _gloffset_MultiTexCoord4svARB },
- { 30511, _gloffset_MultiTexCoord1fARB },
- { 30774, _gloffset_MultiTexCoord4fARB },
- { 33271, _gloffset_MultiTexCoord2fvARB },
+ { 425, _gloffset_MultiTexCoord3sARB },
+ { 657, _gloffset_ActiveTextureARB },
+ { 4378, _gloffset_MultiTexCoord1fvARB },
+ { 6474, _gloffset_MultiTexCoord3dARB },
+ { 6519, _gloffset_MultiTexCoord2iARB },
+ { 6643, _gloffset_MultiTexCoord2svARB },
+ { 8653, _gloffset_MultiTexCoord2fARB },
+ { 10748, _gloffset_MultiTexCoord3fvARB },
+ { 11350, _gloffset_MultiTexCoord4sARB },
+ { 12031, _gloffset_MultiTexCoord2dvARB },
+ { 12438, _gloffset_MultiTexCoord1svARB },
+ { 12839, _gloffset_MultiTexCoord3svARB },
+ { 12900, _gloffset_MultiTexCoord4iARB },
+ { 13731, _gloffset_MultiTexCoord3iARB },
+ { 14601, _gloffset_MultiTexCoord1dARB },
+ { 14833, _gloffset_MultiTexCoord3dvARB },
+ { 16112, _gloffset_MultiTexCoord3ivARB },
+ { 16157, _gloffset_MultiTexCoord2sARB },
+ { 17689, _gloffset_MultiTexCoord4ivARB },
+ { 19897, _gloffset_ClientActiveTextureARB },
+ { 22260, _gloffset_MultiTexCoord2dARB },
+ { 22697, _gloffset_MultiTexCoord4dvARB },
+ { 23074, _gloffset_MultiTexCoord4fvARB },
+ { 24078, _gloffset_MultiTexCoord3fARB },
+ { 26695, _gloffset_MultiTexCoord4dARB },
+ { 26961, _gloffset_MultiTexCoord1sARB },
+ { 27165, _gloffset_MultiTexCoord1dvARB },
+ { 28141, _gloffset_MultiTexCoord1ivARB },
+ { 28234, _gloffset_MultiTexCoord2ivARB },
+ { 28573, _gloffset_MultiTexCoord1iARB },
+ { 29957, _gloffset_MultiTexCoord4svARB },
+ { 30581, _gloffset_MultiTexCoord1fARB },
+ { 30844, _gloffset_MultiTexCoord4fARB },
+ { 33313, _gloffset_MultiTexCoord2fvARB },
{ -1, -1 }
};
@@ -5568,7 +5573,7 @@ static const struct gl_function_remap MESA_alt_functions[] = {
#if defined(need_GL_3DFX_tbuffer)
static const struct gl_function_remap GL_3DFX_tbuffer_functions[] = {
- { 9586, -1 }, /* TbufferMask3DFX */
+ { 9555, -1 }, /* TbufferMask3DFX */
{ -1, -1 }
};
#endif
@@ -5667,7 +5672,7 @@ static const struct gl_function_remap GL_ARB_framebuffer_object_functions[] = {
#if defined(need_GL_ARB_geometry_shader4)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_ARB_geometry_shader4_functions[] = {
- { 12834, -1 }, /* FramebufferTextureLayer */
+ { 12803, -1 }, /* FramebufferTextureLayer */
{ -1, -1 }
};
#endif
@@ -5688,11 +5693,11 @@ static const struct gl_function_remap GL_ARB_map_buffer_range_functions[] = {
#if defined(need_GL_ARB_matrix_palette)
static const struct gl_function_remap GL_ARB_matrix_palette_functions[] = {
- { 3927, -1 }, /* MatrixIndexusvARB */
- { 13583, -1 }, /* MatrixIndexuivARB */
- { 14948, -1 }, /* MatrixIndexPointerARB */
- { 20509, -1 }, /* CurrentPaletteMatrixARB */
- { 23668, -1 }, /* MatrixIndexubvARB */
+ { 3849, -1 }, /* MatrixIndexusvARB */
+ { 13552, -1 }, /* MatrixIndexuivARB */
+ { 14988, -1 }, /* MatrixIndexPointerARB */
+ { 20663, -1 }, /* CurrentPaletteMatrixARB */
+ { 23822, -1 }, /* MatrixIndexubvARB */
{ -1, -1 }
};
#endif
@@ -5790,16 +5795,16 @@ static const struct gl_function_remap GL_ARB_vertex_array_object_functions[] = {
#if defined(need_GL_ARB_vertex_blend)
static const struct gl_function_remap GL_ARB_vertex_blend_functions[] = {
- { 2508, -1 }, /* WeightubvARB */
- { 6917, -1 }, /* WeightivARB */
- { 11484, -1 }, /* WeightPointerARB */
- { 14318, -1 }, /* WeightfvARB */
- { 18120, -1 }, /* WeightbvARB */
- { 21739, -1 }, /* WeightusvARB */
- { 24786, -1 }, /* VertexBlendARB */
- { 30595, -1 }, /* WeightsvARB */
- { 32661, -1 }, /* WeightdvARB */
- { 33471, -1 }, /* WeightuivARB */
+ { 2469, -1 }, /* WeightubvARB */
+ { 6886, -1 }, /* WeightivARB */
+ { 11453, -1 }, /* WeightPointerARB */
+ { 14319, -1 }, /* WeightfvARB */
+ { 18232, -1 }, /* WeightbvARB */
+ { 21893, -1 }, /* WeightusvARB */
+ { 24940, -1 }, /* VertexBlendARB */
+ { 30665, -1 }, /* WeightsvARB */
+ { 32770, -1 }, /* WeightdvARB */
+ { 33513, -1 }, /* WeightuivARB */
{ -1, -1 }
};
#endif
@@ -5869,7 +5874,7 @@ static const struct gl_function_remap GL_ATI_separate_stencil_functions[] = {
#if defined(need_GL_EXT_blend_color)
static const struct gl_function_remap GL_EXT_blend_color_functions[] = {
- { 2767, _gloffset_BlendColor },
+ { 2728, _gloffset_BlendColor },
{ -1, -1 }
};
#endif
@@ -5890,15 +5895,15 @@ static const struct gl_function_remap GL_EXT_blend_func_separate_functions[] = {
#if defined(need_GL_EXT_blend_minmax)
static const struct gl_function_remap GL_EXT_blend_minmax_functions[] = {
- { 11619, _gloffset_BlendEquation },
+ { 11588, _gloffset_BlendEquation },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_color_subtable)
static const struct gl_function_remap GL_EXT_color_subtable_functions[] = {
- { 17520, _gloffset_ColorSubTable },
- { 32611, _gloffset_CopyColorSubTable },
+ { 17632, _gloffset_ColorSubTable },
+ { 32720, _gloffset_CopyColorSubTable },
{ -1, -1 }
};
#endif
@@ -5912,66 +5917,66 @@ static const struct gl_function_remap GL_EXT_compiled_vertex_array_functions[] =
#if defined(need_GL_EXT_convolution)
static const struct gl_function_remap GL_EXT_convolution_functions[] = {
- { 296, _gloffset_ConvolutionFilter1D },
- { 2566, _gloffset_CopyConvolutionFilter1D },
- { 4293, _gloffset_GetConvolutionParameteriv },
- { 8866, _gloffset_ConvolutionFilter2D },
- { 9068, _gloffset_ConvolutionParameteriv },
- { 9528, _gloffset_ConvolutionParameterfv },
- { 21275, _gloffset_GetSeparableFilter },
- { 24860, _gloffset_SeparableFilter2D },
- { 25723, _gloffset_ConvolutionParameteri },
- { 25891, _gloffset_ConvolutionParameterf },
- { 27605, _gloffset_GetConvolutionParameterfv },
- { 28494, _gloffset_GetConvolutionFilter },
- { 31009, _gloffset_CopyConvolutionFilter2D },
+ { 257, _gloffset_ConvolutionFilter1D },
+ { 2527, _gloffset_CopyConvolutionFilter1D },
+ { 4168, _gloffset_GetConvolutionParameteriv },
+ { 8835, _gloffset_ConvolutionFilter2D },
+ { 9037, _gloffset_ConvolutionParameteriv },
+ { 9497, _gloffset_ConvolutionParameterfv },
+ { 21429, _gloffset_GetSeparableFilter },
+ { 25014, _gloffset_SeparableFilter2D },
+ { 25877, _gloffset_ConvolutionParameteri },
+ { 26045, _gloffset_ConvolutionParameterf },
+ { 27759, _gloffset_GetConvolutionParameterfv },
+ { 28616, _gloffset_GetConvolutionFilter },
+ { 31079, _gloffset_CopyConvolutionFilter2D },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_coordinate_frame)
static const struct gl_function_remap GL_EXT_coordinate_frame_functions[] = {
- { 10918, -1 }, /* TangentPointerEXT */
- { 12989, -1 }, /* Binormal3ivEXT */
- { 13715, -1 }, /* Tangent3sEXT */
- { 15013, -1 }, /* Tangent3fvEXT */
- { 19188, -1 }, /* Tangent3ivEXT */
- { 19415, -1 }, /* Tangent3dvEXT */
- { 20189, -1 }, /* Binormal3bvEXT */
- { 21328, -1 }, /* Binormal3dEXT */
- { 23600, -1 }, /* Tangent3fEXT */
- { 25795, -1 }, /* Binormal3sEXT */
- { 26337, -1 }, /* Tangent3dEXT */
- { 27284, -1 }, /* Binormal3svEXT */
- { 27917, -1 }, /* Binormal3fEXT */
- { 28825, -1 }, /* Binormal3dvEXT */
- { 30144, -1 }, /* Tangent3iEXT */
- { 31294, -1 }, /* Tangent3bvEXT */
- { 31859, -1 }, /* Tangent3bEXT */
- { 32384, -1 }, /* Binormal3fvEXT */
- { 33170, -1 }, /* BinormalPointerEXT */
- { 33651, -1 }, /* Tangent3svEXT */
- { 34088, -1 }, /* Binormal3bEXT */
- { 34265, -1 }, /* Binormal3iEXT */
+ { 10887, -1 }, /* TangentPointerEXT */
+ { 12958, -1 }, /* Binormal3ivEXT */
+ { 13684, -1 }, /* Tangent3sEXT */
+ { 15053, -1 }, /* Tangent3fvEXT */
+ { 19342, -1 }, /* Tangent3ivEXT */
+ { 19569, -1 }, /* Tangent3dvEXT */
+ { 20343, -1 }, /* Binormal3bvEXT */
+ { 21482, -1 }, /* Binormal3dEXT */
+ { 23754, -1 }, /* Tangent3fEXT */
+ { 25949, -1 }, /* Binormal3sEXT */
+ { 26491, -1 }, /* Tangent3dEXT */
+ { 27438, -1 }, /* Binormal3svEXT */
+ { 28039, -1 }, /* Binormal3fEXT */
+ { 28947, -1 }, /* Binormal3dvEXT */
+ { 30214, -1 }, /* Tangent3iEXT */
+ { 31364, -1 }, /* Tangent3bvEXT */
+ { 31929, -1 }, /* Tangent3bEXT */
+ { 32493, -1 }, /* Binormal3fvEXT */
+ { 33212, -1 }, /* BinormalPointerEXT */
+ { 33693, -1 }, /* Tangent3svEXT */
+ { 34130, -1 }, /* Binormal3bEXT */
+ { 34307, -1 }, /* Binormal3iEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_copy_texture)
static const struct gl_function_remap GL_EXT_copy_texture_functions[] = {
- { 15538, _gloffset_CopyTexSubImage3D },
- { 17207, _gloffset_CopyTexImage2D },
- { 25331, _gloffset_CopyTexImage1D },
- { 28175, _gloffset_CopyTexSubImage2D },
- { 30647, _gloffset_CopyTexSubImage1D },
+ { 15578, _gloffset_CopyTexSubImage3D },
+ { 17319, _gloffset_CopyTexImage2D },
+ { 25485, _gloffset_CopyTexImage1D },
+ { 28297, _gloffset_CopyTexSubImage2D },
+ { 30717, _gloffset_CopyTexSubImage1D },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_cull_vertex)
static const struct gl_function_remap GL_EXT_cull_vertex_functions[] = {
- { 9217, -1 }, /* CullParameterdvEXT */
- { 12107, -1 }, /* CullParameterfvEXT */
+ { 9186, -1 }, /* CullParameterdvEXT */
+ { 12076, -1 }, /* CullParameterfvEXT */
{ -1, -1 }
};
#endif
@@ -5999,7 +6004,7 @@ static const struct gl_function_remap GL_EXT_draw_instanced_functions[] = {
#if defined(need_GL_EXT_draw_range_elements)
static const struct gl_function_remap GL_EXT_draw_range_elements_functions[] = {
- { 9865, _gloffset_DrawRangeElements },
+ { 9834, _gloffset_DrawRangeElements },
{ -1, -1 }
};
#endif
@@ -6048,39 +6053,39 @@ static const struct gl_function_remap GL_EXT_gpu_shader4_functions[] = {
#if defined(need_GL_EXT_histogram)
static const struct gl_function_remap GL_EXT_histogram_functions[] = {
- { 895, _gloffset_Histogram },
- { 3676, _gloffset_ResetHistogram },
- { 10370, _gloffset_GetMinmax },
- { 15872, _gloffset_GetHistogramParameterfv },
- { 25256, _gloffset_GetMinmaxParameteriv },
- { 27495, _gloffset_ResetMinmax },
- { 28391, _gloffset_GetHistogramParameteriv },
- { 29612, _gloffset_GetHistogram },
- { 32236, _gloffset_Minmax },
- { 33886, _gloffset_GetMinmaxParameterfv },
+ { 856, _gloffset_Histogram },
+ { 3598, _gloffset_ResetHistogram },
+ { 10339, _gloffset_GetMinmax },
+ { 15912, _gloffset_GetHistogramParameterfv },
+ { 25410, _gloffset_GetMinmaxParameteriv },
+ { 27649, _gloffset_ResetMinmax },
+ { 28513, _gloffset_GetHistogramParameteriv },
+ { 29682, _gloffset_GetHistogram },
+ { 32306, _gloffset_Minmax },
+ { 33928, _gloffset_GetMinmaxParameterfv },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_index_func)
static const struct gl_function_remap GL_EXT_index_func_functions[] = {
- { 11893, -1 }, /* IndexFuncEXT */
+ { 11862, -1 }, /* IndexFuncEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_index_material)
static const struct gl_function_remap GL_EXT_index_material_functions[] = {
- { 21861, -1 }, /* IndexMaterialEXT */
+ { 22015, -1 }, /* IndexMaterialEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_light_texture)
static const struct gl_function_remap GL_EXT_light_texture_functions[] = {
- { 27304, -1 }, /* ApplyTextureEXT */
- { 27449, -1 }, /* TextureMaterialEXT */
- { 27474, -1 }, /* TextureLightEXT */
+ { 27458, -1 }, /* ApplyTextureEXT */
+ { 27603, -1 }, /* TextureMaterialEXT */
+ { 27628, -1 }, /* TextureLightEXT */
{ -1, -1 }
};
#endif
@@ -6101,20 +6106,20 @@ static const struct gl_function_remap GL_EXT_multisample_functions[] = {
#if defined(need_GL_EXT_paletted_texture)
static const struct gl_function_remap GL_EXT_paletted_texture_functions[] = {
- { 8728, _gloffset_ColorTable },
- { 15718, _gloffset_GetColorTable },
- { 23783, _gloffset_GetColorTableParameterfv },
- { 25947, _gloffset_GetColorTableParameteriv },
+ { 8697, _gloffset_ColorTable },
+ { 15758, _gloffset_GetColorTable },
+ { 23937, _gloffset_GetColorTableParameterfv },
+ { 26101, _gloffset_GetColorTableParameteriv },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_pixel_transform)
static const struct gl_function_remap GL_EXT_pixel_transform_functions[] = {
- { 22508, -1 }, /* PixelTransformParameterfEXT */
- { 22588, -1 }, /* PixelTransformParameteriEXT */
- { 31574, -1 }, /* PixelTransformParameterfvEXT */
- { 33134, -1 }, /* PixelTransformParameterivEXT */
+ { 22662, -1 }, /* PixelTransformParameterfEXT */
+ { 22742, -1 }, /* PixelTransformParameteriEXT */
+ { 31644, -1 }, /* PixelTransformParameterfvEXT */
+ { 33176, -1 }, /* PixelTransformParameterivEXT */
{ -1, -1 }
};
#endif
@@ -6163,16 +6168,16 @@ static const struct gl_function_remap GL_EXT_stencil_two_side_functions[] = {
#if defined(need_GL_EXT_subtexture)
static const struct gl_function_remap GL_EXT_subtexture_functions[] = {
- { 7439, _gloffset_TexSubImage1D },
- { 11074, _gloffset_TexSubImage2D },
+ { 7408, _gloffset_TexSubImage1D },
+ { 11043, _gloffset_TexSubImage2D },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_texture3D)
static const struct gl_function_remap GL_EXT_texture3D_functions[] = {
- { 1865, _gloffset_TexImage3D },
- { 23552, _gloffset_TexSubImage3D },
+ { 1826, _gloffset_TexImage3D },
+ { 23706, _gloffset_TexSubImage3D },
{ -1, -1 }
};
#endif
@@ -6193,19 +6198,19 @@ static const struct gl_function_remap GL_EXT_texture_integer_functions[] = {
#if defined(need_GL_EXT_texture_object)
static const struct gl_function_remap GL_EXT_texture_object_functions[] = {
- { 3444, _gloffset_PrioritizeTextures },
- { 7888, _gloffset_AreTexturesResident },
- { 14058, _gloffset_GenTextures },
- { 16231, _gloffset_DeleteTextures },
- { 20242, _gloffset_IsTexture },
- { 30712, _gloffset_BindTexture },
+ { 3366, _gloffset_PrioritizeTextures },
+ { 7857, _gloffset_AreTexturesResident },
+ { 14027, _gloffset_GenTextures },
+ { 16271, _gloffset_DeleteTextures },
+ { 20396, _gloffset_IsTexture },
+ { 30782, _gloffset_BindTexture },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_texture_perturb_normal)
static const struct gl_function_remap GL_EXT_texture_perturb_normal_functions[] = {
- { 14268, -1 }, /* TextureNormalEXT */
+ { 14269, -1 }, /* TextureNormalEXT */
{ -1, -1 }
};
#endif
@@ -6227,30 +6232,30 @@ static const struct gl_function_remap GL_EXT_transform_feedback_functions[] = {
#if defined(need_GL_EXT_vertex_array)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_EXT_vertex_array_functions[] = {
- { 25032, _gloffset_ArrayElement },
- { 31824, _gloffset_GetPointerv },
- { 33437, _gloffset_DrawArrays },
+ { 25186, _gloffset_ArrayElement },
+ { 31894, _gloffset_GetPointerv },
+ { 33479, _gloffset_DrawArrays },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_vertex_weighting)
static const struct gl_function_remap GL_EXT_vertex_weighting_functions[] = {
- { 20290, -1 }, /* VertexWeightfvEXT */
- { 27860, -1 }, /* VertexWeightfEXT */
- { 29581, -1 }, /* VertexWeightPointerEXT */
+ { 20444, -1 }, /* VertexWeightfvEXT */
+ { 27982, -1 }, /* VertexWeightfEXT */
+ { 29651, -1 }, /* VertexWeightPointerEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_HP_image_transform)
static const struct gl_function_remap GL_HP_image_transform_functions[] = {
- { 2439, -1 }, /* GetImageTransformParameterfvHP */
- { 3893, -1 }, /* ImageTransformParameterfHP */
- { 10612, -1 }, /* ImageTransformParameterfvHP */
- { 12354, -1 }, /* ImageTransformParameteriHP */
- { 12724, -1 }, /* GetImageTransformParameterivHP */
- { 20354, -1 }, /* ImageTransformParameterivHP */
+ { 2400, -1 }, /* GetImageTransformParameterfvHP */
+ { 3815, -1 }, /* ImageTransformParameterfHP */
+ { 10581, -1 }, /* ImageTransformParameterfvHP */
+ { 12323, -1 }, /* ImageTransformParameteriHP */
+ { 12693, -1 }, /* GetImageTransformParameterivHP */
+ { 20508, -1 }, /* ImageTransformParameterivHP */
{ -1, -1 }
};
#endif
@@ -6264,14 +6269,14 @@ static const struct gl_function_remap GL_IBM_multimode_draw_arrays_functions[] =
#if defined(need_GL_IBM_vertex_array_lists)
static const struct gl_function_remap GL_IBM_vertex_array_lists_functions[] = {
- { 4583, -1 }, /* SecondaryColorPointerListIBM */
- { 6371, -1 }, /* NormalPointerListIBM */
- { 8062, -1 }, /* FogCoordPointerListIBM */
- { 8403, -1 }, /* VertexPointerListIBM */
- { 12608, -1 }, /* ColorPointerListIBM */
- { 13822, -1 }, /* TexCoordPointerListIBM */
- { 14290, -1 }, /* IndexPointerListIBM */
- { 33829, -1 }, /* EdgeFlagPointerListIBM */
+ { 4510, -1 }, /* SecondaryColorPointerListIBM */
+ { 6340, -1 }, /* NormalPointerListIBM */
+ { 8031, -1 }, /* FogCoordPointerListIBM */
+ { 8372, -1 }, /* VertexPointerListIBM */
+ { 12577, -1 }, /* ColorPointerListIBM */
+ { 13791, -1 }, /* TexCoordPointerListIBM */
+ { 14291, -1 }, /* IndexPointerListIBM */
+ { 33871, -1 }, /* EdgeFlagPointerListIBM */
{ -1, -1 }
};
#endif
@@ -6285,10 +6290,10 @@ static const struct gl_function_remap GL_INGR_blend_func_separate_functions[] =
#if defined(need_GL_INTEL_parallel_arrays)
static const struct gl_function_remap GL_INTEL_parallel_arrays_functions[] = {
- { 13162, -1 }, /* VertexPointervINTEL */
- { 15965, -1 }, /* ColorPointervINTEL */
- { 30983, -1 }, /* NormalPointervINTEL */
- { 31506, -1 }, /* TexCoordPointervINTEL */
+ { 13131, -1 }, /* VertexPointervINTEL */
+ { 16005, -1 }, /* ColorPointervINTEL */
+ { 31053, -1 }, /* NormalPointervINTEL */
+ { 31576, -1 }, /* TexCoordPointervINTEL */
{ -1, -1 }
};
#endif
@@ -6302,10 +6307,10 @@ static const struct gl_function_remap GL_MESA_resize_buffers_functions[] = {
#if defined(need_GL_MESA_shader_debug)
static const struct gl_function_remap GL_MESA_shader_debug_functions[] = {
- { 1729, -1 }, /* GetDebugLogLengthMESA */
- { 3615, -1 }, /* ClearDebugLogMESA */
- { 4768, -1 }, /* GetDebugLogMESA */
- { 32017, -1 }, /* CreateDebugObjectMESA */
+ { 1690, -1 }, /* GetDebugLogLengthMESA */
+ { 3537, -1 }, /* ClearDebugLogMESA */
+ { 4695, -1 }, /* GetDebugLogMESA */
+ { 32087, -1 }, /* CreateDebugObjectMESA */
{ -1, -1 }
};
#endif
@@ -6326,15 +6331,15 @@ static const struct gl_function_remap GL_NV_condtitional_render_functions[] = {
#if defined(need_GL_NV_evaluators)
static const struct gl_function_remap GL_NV_evaluators_functions[] = {
- { 7101, -1 }, /* GetMapAttribParameterivNV */
- { 8834, -1 }, /* MapControlPointsNV */
- { 8933, -1 }, /* MapParameterfvNV */
- { 11057, -1 }, /* EvalMapsNV */
- { 17718, -1 }, /* GetMapAttribParameterfvNV */
- { 17935, -1 }, /* MapParameterivNV */
- { 25646, -1 }, /* GetMapParameterivNV */
- { 26189, -1 }, /* GetMapParameterfvNV */
- { 30298, -1 }, /* GetMapControlPointsNV */
+ { 7070, -1 }, /* GetMapAttribParameterivNV */
+ { 8803, -1 }, /* MapControlPointsNV */
+ { 8902, -1 }, /* MapParameterfvNV */
+ { 11026, -1 }, /* EvalMapsNV */
+ { 17830, -1 }, /* GetMapAttribParameterfvNV */
+ { 18047, -1 }, /* MapParameterivNV */
+ { 25800, -1 }, /* GetMapParameterivNV */
+ { 26343, -1 }, /* GetMapParameterfvNV */
+ { 30368, -1 }, /* GetMapControlPointsNV */
{ -1, -1 }
};
#endif
@@ -6376,8 +6381,8 @@ static const struct gl_function_remap GL_NV_register_combiners_functions[] = {
#if defined(need_GL_NV_register_combiners2)
static const struct gl_function_remap GL_NV_register_combiners2_functions[] = {
- { 16384, -1 }, /* CombinerStageParameterfvNV */
- { 16780, -1 }, /* GetCombinerStageParameterfvNV */
+ { 16424, -1 }, /* CombinerStageParameterfvNV */
+ { 16820, -1 }, /* GetCombinerStageParameterfvNV */
{ -1, -1 }
};
#endif
@@ -6412,23 +6417,23 @@ static const struct gl_function_remap GL_OES_EGL_image_functions[] = {
#if defined(need_GL_PGI_misc_hints)
static const struct gl_function_remap GL_PGI_misc_hints_functions[] = {
- { 9054, -1 }, /* HintPGI */
+ { 9023, -1 }, /* HintPGI */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_detail_texture)
static const struct gl_function_remap GL_SGIS_detail_texture_functions[] = {
- { 16753, -1 }, /* GetDetailTexFuncSGIS */
- { 17152, -1 }, /* DetailTexFuncSGIS */
+ { 16793, -1 }, /* GetDetailTexFuncSGIS */
+ { 17264, -1 }, /* DetailTexFuncSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_fog_function)
static const struct gl_function_remap GL_SGIS_fog_function_functions[] = {
- { 28157, -1 }, /* FogFuncSGIS */
- { 28930, -1 }, /* GetFogFuncSGIS */
+ { 28279, -1 }, /* FogFuncSGIS */
+ { 29000, -1 }, /* GetFogFuncSGIS */
{ -1, -1 }
};
#endif
@@ -6456,112 +6461,112 @@ static const struct gl_function_remap GL_SGIS_point_parameters_functions[] = {
#if defined(need_GL_SGIS_sharpen_texture)
static const struct gl_function_remap GL_SGIS_sharpen_texture_functions[] = {
- { 7162, -1 }, /* GetSharpenTexFuncSGIS */
- { 22894, -1 }, /* SharpenTexFuncSGIS */
+ { 7131, -1 }, /* GetSharpenTexFuncSGIS */
+ { 23048, -1 }, /* SharpenTexFuncSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_texture4D)
static const struct gl_function_remap GL_SGIS_texture4D_functions[] = {
- { 1034, -1 }, /* TexImage4DSGIS */
- { 16300, -1 }, /* TexSubImage4DSGIS */
+ { 995, -1 }, /* TexImage4DSGIS */
+ { 16340, -1 }, /* TexSubImage4DSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_texture_color_mask)
static const struct gl_function_remap GL_SGIS_texture_color_mask_functions[] = {
- { 15671, -1 }, /* TextureColorMaskSGIS */
+ { 15711, -1 }, /* TextureColorMaskSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_texture_filter4)
static const struct gl_function_remap GL_SGIS_texture_filter4_functions[] = {
- { 7339, -1 }, /* GetTexFilterFuncSGIS */
- { 16926, -1 }, /* TexFilterFuncSGIS */
+ { 7308, -1 }, /* GetTexFilterFuncSGIS */
+ { 16966, -1 }, /* TexFilterFuncSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_async)
static const struct gl_function_remap GL_SGIX_async_functions[] = {
- { 3541, -1 }, /* AsyncMarkerSGIX */
- { 4722, -1 }, /* FinishAsyncSGIX */
- { 5794, -1 }, /* PollAsyncSGIX */
- { 23103, -1 }, /* DeleteAsyncMarkersSGIX */
- { 23158, -1 }, /* IsAsyncMarkerSGIX */
- { 33626, -1 }, /* GenAsyncMarkersSGIX */
+ { 3463, -1 }, /* AsyncMarkerSGIX */
+ { 4649, -1 }, /* FinishAsyncSGIX */
+ { 5721, -1 }, /* PollAsyncSGIX */
+ { 23257, -1 }, /* DeleteAsyncMarkersSGIX */
+ { 23312, -1 }, /* IsAsyncMarkerSGIX */
+ { 33668, -1 }, /* GenAsyncMarkersSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_flush_raster)
static const struct gl_function_remap GL_SGIX_flush_raster_functions[] = {
- { 7716, -1 }, /* FlushRasterSGIX */
+ { 7685, -1 }, /* FlushRasterSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_fragment_lighting)
static const struct gl_function_remap GL_SGIX_fragment_lighting_functions[] = {
- { 2737, -1 }, /* FragmentMaterialfvSGIX */
- { 5698, -1 }, /* FragmentLightiSGIX */
- { 8470, -1 }, /* FragmentMaterialfSGIX */
- { 8607, -1 }, /* GetFragmentLightivSGIX */
- { 9480, -1 }, /* FragmentLightModeliSGIX */
- { 11120, -1 }, /* FragmentLightivSGIX */
- { 11427, -1 }, /* GetFragmentMaterialivSGIX */
- { 16693, -1 }, /* GetFragmentMaterialfvSGIX */
- { 20159, -1 }, /* FragmentLightModelfSGIX */
- { 20477, -1 }, /* FragmentColorMaterialSGIX */
- { 20894, -1 }, /* FragmentMaterialiSGIX */
- { 22189, -1 }, /* LightEnviSGIX */
- { 23875, -1 }, /* FragmentLightModelfvSGIX */
- { 24210, -1 }, /* FragmentLightfvSGIX */
- { 29314, -1 }, /* FragmentLightModelivSGIX */
- { 29463, -1 }, /* FragmentLightfSGIX */
- { 32354, -1 }, /* GetFragmentLightfvSGIX */
- { 34109, -1 }, /* FragmentMaterialivSGIX */
+ { 2698, -1 }, /* FragmentMaterialfvSGIX */
+ { 5625, -1 }, /* FragmentLightiSGIX */
+ { 8439, -1 }, /* FragmentMaterialfSGIX */
+ { 8576, -1 }, /* GetFragmentLightivSGIX */
+ { 9449, -1 }, /* FragmentLightModeliSGIX */
+ { 11089, -1 }, /* FragmentLightivSGIX */
+ { 11396, -1 }, /* GetFragmentMaterialivSGIX */
+ { 16733, -1 }, /* GetFragmentMaterialfvSGIX */
+ { 20313, -1 }, /* FragmentLightModelfSGIX */
+ { 20631, -1 }, /* FragmentColorMaterialSGIX */
+ { 21048, -1 }, /* FragmentMaterialiSGIX */
+ { 22343, -1 }, /* LightEnviSGIX */
+ { 24029, -1 }, /* FragmentLightModelfvSGIX */
+ { 24364, -1 }, /* FragmentLightfvSGIX */
+ { 29384, -1 }, /* FragmentLightModelivSGIX */
+ { 29533, -1 }, /* FragmentLightfSGIX */
+ { 32463, -1 }, /* GetFragmentLightfvSGIX */
+ { 34151, -1 }, /* FragmentMaterialivSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_framezoom)
static const struct gl_function_remap GL_SGIX_framezoom_functions[] = {
- { 23181, -1 }, /* FrameZoomSGIX */
+ { 23335, -1 }, /* FrameZoomSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_igloo_interface)
static const struct gl_function_remap GL_SGIX_igloo_interface_functions[] = {
- { 29771, -1 }, /* IglooInterfaceSGIX */
+ { 29841, -1 }, /* IglooInterfaceSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_instruments)
static const struct gl_function_remap GL_SGIX_instruments_functions[] = {
- { 2917, -1 }, /* ReadInstrumentsSGIX */
- { 6935, -1 }, /* PollInstrumentsSGIX */
- { 10978, -1 }, /* GetInstrumentsSGIX */
- { 13420, -1 }, /* StartInstrumentsSGIX */
- { 16418, -1 }, /* StopInstrumentsSGIX */
- { 18383, -1 }, /* InstrumentsBufferSGIX */
+ { 2878, -1 }, /* ReadInstrumentsSGIX */
+ { 6904, -1 }, /* PollInstrumentsSGIX */
+ { 10947, -1 }, /* GetInstrumentsSGIX */
+ { 13389, -1 }, /* StartInstrumentsSGIX */
+ { 16458, -1 }, /* StopInstrumentsSGIX */
+ { 18495, -1 }, /* InstrumentsBufferSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_list_priority)
static const struct gl_function_remap GL_SGIX_list_priority_functions[] = {
- { 1265, -1 }, /* ListParameterfSGIX */
- { 3243, -1 }, /* GetListParameterfvSGIX */
- { 18248, -1 }, /* ListParameteriSGIX */
- { 19365, -1 }, /* ListParameterfvSGIX */
- { 21560, -1 }, /* ListParameterivSGIX */
- { 33670, -1 }, /* GetListParameterivSGIX */
+ { 1226, -1 }, /* ListParameterfSGIX */
+ { 3165, -1 }, /* GetListParameterfvSGIX */
+ { 18360, -1 }, /* ListParameteriSGIX */
+ { 19519, -1 }, /* ListParameterfvSGIX */
+ { 21714, -1 }, /* ListParameterivSGIX */
+ { 33712, -1 }, /* GetListParameterivSGIX */
{ -1, -1 }
};
#endif
@@ -6575,134 +6580,134 @@ static const struct gl_function_remap GL_SGIX_pixel_texture_functions[] = {
#if defined(need_GL_SGIX_polynomial_ffd)
static const struct gl_function_remap GL_SGIX_polynomial_ffd_functions[] = {
- { 2959, -1 }, /* DeformationMap3dSGIX */
- { 3839, -1 }, /* LoadIdentityDeformationMapSGIX */
- { 16518, -1 }, /* DeformSGIX */
- { 25144, -1 }, /* DeformationMap3fSGIX */
+ { 3761, -1 }, /* LoadIdentityDeformationMapSGIX */
+ { 16558, -1 }, /* DeformSGIX */
+ { 25298, -1 }, /* DeformationMap3fSGIX */
+ { 32351, -1 }, /* DeformationMap3dSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_reference_plane)
static const struct gl_function_remap GL_SGIX_reference_plane_functions[] = {
- { 15222, -1 }, /* ReferencePlaneSGIX */
+ { 15262, -1 }, /* ReferencePlaneSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_sprite)
static const struct gl_function_remap GL_SGIX_sprite_functions[] = {
- { 9978, -1 }, /* SpriteParameterfvSGIX */
- { 21349, -1 }, /* SpriteParameteriSGIX */
- { 27529, -1 }, /* SpriteParameterfSGIX */
- { 30441, -1 }, /* SpriteParameterivSGIX */
+ { 9947, -1 }, /* SpriteParameterfvSGIX */
+ { 21503, -1 }, /* SpriteParameteriSGIX */
+ { 27683, -1 }, /* SpriteParameterfSGIX */
+ { 30511, -1 }, /* SpriteParameterivSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_tag_sample_buffer)
static const struct gl_function_remap GL_SGIX_tag_sample_buffer_functions[] = {
- { 21408, -1 }, /* TagSampleBufferSGIX */
+ { 21562, -1 }, /* TagSampleBufferSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGI_color_table)
static const struct gl_function_remap GL_SGI_color_table_functions[] = {
- { 8006, _gloffset_ColorTableParameteriv },
- { 8728, _gloffset_ColorTable },
- { 15718, _gloffset_GetColorTable },
- { 15828, _gloffset_CopyColorTable },
- { 20103, _gloffset_ColorTableParameterfv },
- { 23783, _gloffset_GetColorTableParameterfv },
- { 25947, _gloffset_GetColorTableParameteriv },
+ { 7975, _gloffset_ColorTableParameteriv },
+ { 8697, _gloffset_ColorTable },
+ { 15758, _gloffset_GetColorTable },
+ { 15868, _gloffset_CopyColorTable },
+ { 20257, _gloffset_ColorTableParameterfv },
+ { 23937, _gloffset_GetColorTableParameterfv },
+ { 26101, _gloffset_GetColorTableParameteriv },
{ -1, -1 }
};
#endif
#if defined(need_GL_SUNX_constant_data)
static const struct gl_function_remap GL_SUNX_constant_data_functions[] = {
- { 32332, -1 }, /* FinishTextureSUNX */
+ { 32441, -1 }, /* FinishTextureSUNX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_global_alpha)
static const struct gl_function_remap GL_SUN_global_alpha_functions[] = {
- { 3562, -1 }, /* GlobalAlphaFactorubSUN */
- { 5075, -1 }, /* GlobalAlphaFactoriSUN */
- { 6960, -1 }, /* GlobalAlphaFactordSUN */
- { 10062, -1 }, /* GlobalAlphaFactoruiSUN */
- { 10569, -1 }, /* GlobalAlphaFactorbSUN */
- { 13735, -1 }, /* GlobalAlphaFactorfSUN */
- { 13899, -1 }, /* GlobalAlphaFactorusSUN */
- { 23470, -1 }, /* GlobalAlphaFactorsSUN */
+ { 3484, -1 }, /* GlobalAlphaFactorubSUN */
+ { 5002, -1 }, /* GlobalAlphaFactoriSUN */
+ { 6929, -1 }, /* GlobalAlphaFactordSUN */
+ { 10031, -1 }, /* GlobalAlphaFactoruiSUN */
+ { 10538, -1 }, /* GlobalAlphaFactorbSUN */
+ { 13704, -1 }, /* GlobalAlphaFactorfSUN */
+ { 13868, -1 }, /* GlobalAlphaFactorusSUN */
+ { 23624, -1 }, /* GlobalAlphaFactorsSUN */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_mesh_array)
static const struct gl_function_remap GL_SUN_mesh_array_functions[] = {
- { 30232, -1 }, /* DrawMeshArraysSUN */
+ { 30302, -1 }, /* DrawMeshArraysSUN */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_triangle_list)
static const struct gl_function_remap GL_SUN_triangle_list_functions[] = {
- { 4696, -1 }, /* ReplacementCodeubSUN */
- { 6719, -1 }, /* ReplacementCodeubvSUN */
- { 19824, -1 }, /* ReplacementCodeusvSUN */
- { 20012, -1 }, /* ReplacementCodePointerSUN */
- { 22253, -1 }, /* ReplacementCodeuiSUN */
- { 23132, -1 }, /* ReplacementCodeusSUN */
- { 30898, -1 }, /* ReplacementCodeuivSUN */
+ { 4623, -1 }, /* ReplacementCodeubSUN */
+ { 6688, -1 }, /* ReplacementCodeubvSUN */
+ { 19978, -1 }, /* ReplacementCodeusvSUN */
+ { 20166, -1 }, /* ReplacementCodePointerSUN */
+ { 22407, -1 }, /* ReplacementCodeuiSUN */
+ { 23286, -1 }, /* ReplacementCodeusSUN */
+ { 30968, -1 }, /* ReplacementCodeuivSUN */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_vertex)
static const struct gl_function_remap GL_SUN_vertex_functions[] = {
- { 1139, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */
- { 1337, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */
- { 1591, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */
- { 1960, -1 }, /* ReplacementCodeuiVertex3fvSUN */
- { 2094, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */
- { 2673, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */
- { 3052, -1 }, /* Color4ubVertex3fvSUN */
- { 4880, -1 }, /* Color4ubVertex3fSUN */
- { 5003, -1 }, /* TexCoord2fVertex3fSUN */
- { 5421, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */
- { 5898, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */
- { 6614, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */
- { 7394, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */
- { 7753, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */
- { 9279, -1 }, /* Color3fVertex3fSUN */
- { 10478, -1 }, /* Color3fVertex3fvSUN */
- { 10943, -1 }, /* Color4fNormal3fVertex3fvSUN */
- { 11772, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */
- { 13283, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */
- { 14838, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */
- { 15364, -1 }, /* TexCoord2fColor3fVertex3fSUN */
- { 16443, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */
- { 16885, -1 }, /* Color4ubVertex2fvSUN */
- { 17177, -1 }, /* Normal3fVertex3fSUN */
- { 18324, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */
- { 18676, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */
- { 18983, -1 }, /* TexCoord2fNormal3fVertex3fSUN */
- { 19617, -1 }, /* TexCoord2fVertex3fvSUN */
- { 20447, -1 }, /* Color4ubVertex2fSUN */
- { 20685, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */
- { 22719, -1 }, /* TexCoord2fColor4ubVertex3fSUN */
- { 23200, -1 }, /* Normal3fVertex3fvSUN */
- { 23692, -1 }, /* Color4fNormal3fVertex3fSUN */
- { 24693, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */
- { 26850, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */
- { 28273, -1 }, /* TexCoord4fVertex4fSUN */
- { 28719, -1 }, /* TexCoord2fColor3fVertex3fvSUN */
- { 29158, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */
- { 29285, -1 }, /* TexCoord4fVertex4fvSUN */
- { 30019, -1 }, /* ReplacementCodeuiVertex3fSUN */
+ { 1100, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */
+ { 1298, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */
+ { 1552, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */
+ { 1921, -1 }, /* ReplacementCodeuiVertex3fvSUN */
+ { 2055, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */
+ { 2634, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */
+ { 2974, -1 }, /* Color4ubVertex3fvSUN */
+ { 4807, -1 }, /* Color4ubVertex3fSUN */
+ { 4930, -1 }, /* TexCoord2fVertex3fSUN */
+ { 5348, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */
+ { 5825, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */
+ { 6583, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */
+ { 7363, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */
+ { 7722, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */
+ { 9248, -1 }, /* Color3fVertex3fSUN */
+ { 10447, -1 }, /* Color3fVertex3fvSUN */
+ { 10912, -1 }, /* Color4fNormal3fVertex3fvSUN */
+ { 11741, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */
+ { 13252, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */
+ { 14878, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */
+ { 15404, -1 }, /* TexCoord2fColor3fVertex3fSUN */
+ { 16483, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */
+ { 16925, -1 }, /* Color4ubVertex2fvSUN */
+ { 17289, -1 }, /* Normal3fVertex3fSUN */
+ { 18436, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */
+ { 18788, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */
+ { 19095, -1 }, /* TexCoord2fNormal3fVertex3fSUN */
+ { 19771, -1 }, /* TexCoord2fVertex3fvSUN */
+ { 20601, -1 }, /* Color4ubVertex2fSUN */
+ { 20839, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */
+ { 22873, -1 }, /* TexCoord2fColor4ubVertex3fSUN */
+ { 23354, -1 }, /* Normal3fVertex3fvSUN */
+ { 23846, -1 }, /* Color4fNormal3fVertex3fSUN */
+ { 24847, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */
+ { 27004, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */
+ { 28395, -1 }, /* TexCoord4fVertex4fSUN */
+ { 28841, -1 }, /* TexCoord2fColor3fVertex3fvSUN */
+ { 29228, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */
+ { 29355, -1 }, /* TexCoord4fVertex4fvSUN */
+ { 30089, -1 }, /* ReplacementCodeuiVertex3fSUN */
{ -1, -1 }
};
#endif
@@ -6710,40 +6715,40 @@ static const struct gl_function_remap GL_SUN_vertex_functions[] = {
#if defined(need_GL_VERSION_1_3)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_VERSION_1_3_functions[] = {
- { 464, _gloffset_MultiTexCoord3sARB },
- { 696, _gloffset_ActiveTextureARB },
- { 4451, _gloffset_MultiTexCoord1fvARB },
- { 6505, _gloffset_MultiTexCoord3dARB },
- { 6550, _gloffset_MultiTexCoord2iARB },
- { 6674, _gloffset_MultiTexCoord2svARB },
- { 8684, _gloffset_MultiTexCoord2fARB },
- { 10779, _gloffset_MultiTexCoord3fvARB },
- { 11381, _gloffset_MultiTexCoord4sARB },
- { 12062, _gloffset_MultiTexCoord2dvARB },
- { 12469, _gloffset_MultiTexCoord1svARB },
- { 12870, _gloffset_MultiTexCoord3svARB },
- { 12931, _gloffset_MultiTexCoord4iARB },
- { 13762, _gloffset_MultiTexCoord3iARB },
- { 14561, _gloffset_MultiTexCoord1dARB },
- { 14793, _gloffset_MultiTexCoord3dvARB },
- { 16072, _gloffset_MultiTexCoord3ivARB },
- { 16117, _gloffset_MultiTexCoord2sARB },
- { 17577, _gloffset_MultiTexCoord4ivARB },
- { 19743, _gloffset_ClientActiveTextureARB },
- { 22106, _gloffset_MultiTexCoord2dARB },
- { 22543, _gloffset_MultiTexCoord4dvARB },
- { 22920, _gloffset_MultiTexCoord4fvARB },
- { 23924, _gloffset_MultiTexCoord3fARB },
- { 26541, _gloffset_MultiTexCoord4dARB },
- { 26807, _gloffset_MultiTexCoord1sARB },
- { 27011, _gloffset_MultiTexCoord1dvARB },
- { 28019, _gloffset_MultiTexCoord1ivARB },
- { 28112, _gloffset_MultiTexCoord2ivARB },
- { 28451, _gloffset_MultiTexCoord1iARB },
- { 29887, _gloffset_MultiTexCoord4svARB },
- { 30511, _gloffset_MultiTexCoord1fARB },
- { 30774, _gloffset_MultiTexCoord4fARB },
- { 33271, _gloffset_MultiTexCoord2fvARB },
+ { 425, _gloffset_MultiTexCoord3sARB },
+ { 657, _gloffset_ActiveTextureARB },
+ { 4378, _gloffset_MultiTexCoord1fvARB },
+ { 6474, _gloffset_MultiTexCoord3dARB },
+ { 6519, _gloffset_MultiTexCoord2iARB },
+ { 6643, _gloffset_MultiTexCoord2svARB },
+ { 8653, _gloffset_MultiTexCoord2fARB },
+ { 10748, _gloffset_MultiTexCoord3fvARB },
+ { 11350, _gloffset_MultiTexCoord4sARB },
+ { 12031, _gloffset_MultiTexCoord2dvARB },
+ { 12438, _gloffset_MultiTexCoord1svARB },
+ { 12839, _gloffset_MultiTexCoord3svARB },
+ { 12900, _gloffset_MultiTexCoord4iARB },
+ { 13731, _gloffset_MultiTexCoord3iARB },
+ { 14601, _gloffset_MultiTexCoord1dARB },
+ { 14833, _gloffset_MultiTexCoord3dvARB },
+ { 16112, _gloffset_MultiTexCoord3ivARB },
+ { 16157, _gloffset_MultiTexCoord2sARB },
+ { 17689, _gloffset_MultiTexCoord4ivARB },
+ { 19897, _gloffset_ClientActiveTextureARB },
+ { 22260, _gloffset_MultiTexCoord2dARB },
+ { 22697, _gloffset_MultiTexCoord4dvARB },
+ { 23074, _gloffset_MultiTexCoord4fvARB },
+ { 24078, _gloffset_MultiTexCoord3fARB },
+ { 26695, _gloffset_MultiTexCoord4dARB },
+ { 26961, _gloffset_MultiTexCoord1sARB },
+ { 27165, _gloffset_MultiTexCoord1dvARB },
+ { 28141, _gloffset_MultiTexCoord1ivARB },
+ { 28234, _gloffset_MultiTexCoord2ivARB },
+ { 28573, _gloffset_MultiTexCoord1iARB },
+ { 29957, _gloffset_MultiTexCoord4svARB },
+ { 30581, _gloffset_MultiTexCoord1fARB },
+ { 30844, _gloffset_MultiTexCoord4fARB },
+ { 33313, _gloffset_MultiTexCoord2fvARB },
{ -1, -1 }
};
#endif
diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
index 514eed5d0b1..b58e30de9c4 100644
--- a/src/mesa/main/shaderapi.c
+++ b/src/mesa/main/shaderapi.c
@@ -925,6 +925,8 @@ print_shader_info(const struct gl_shader_program *shProg)
printf(" vert prog %u\n", shProg->VertexProgram->Base.Id);
if (shProg->FragmentProgram)
printf(" frag prog %u\n", shProg->FragmentProgram->Base.Id);
+ if (shProg->GeometryProgram)
+ printf(" geom prog %u\n", shProg->GeometryProgram->Base.Id);
}
@@ -1075,6 +1077,7 @@ validate_shader_program(const struct gl_shader_program *shProg,
char *errMsg)
{
const struct gl_vertex_program *vp = shProg->VertexProgram;
+ const struct gl_geometry_program *gp = shProg->GeometryProgram;
const struct gl_fragment_program *fp = shProg->FragmentProgram;
if (!shProg->LinkStatus) {
@@ -1104,6 +1107,9 @@ validate_shader_program(const struct gl_shader_program *shProg,
if (vp && !validate_samplers(&vp->Base, errMsg)) {
return GL_FALSE;
}
+ if (gp && !validate_samplers(&gp->Base, errMsg)) {
+ return GL_FALSE;
+ }
if (fp && !validate_samplers(&fp->Base, errMsg)) {
return GL_FALSE;
}
@@ -1519,7 +1525,8 @@ _mesa_ShaderSourceARB(GLhandleARB shaderObj, GLsizei count,
for (i = 0; i < count; i++) {
if (string[i] == NULL) {
free((GLvoid *) offsets);
- _mesa_error(ctx, GL_INVALID_OPERATION, "glShaderSourceARB(null string)");
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glShaderSourceARB(null string)");
return;
}
if (length == NULL || length[i] < 0)
@@ -1570,7 +1577,7 @@ _mesa_ShaderSourceARB(GLhandleARB shaderObj, GLsizei count,
free(source);
source = newSource;
}
- }
+ }
shader_source(ctx, shaderObj, source);
@@ -1592,6 +1599,8 @@ _mesa_UseProgramObjectARB(GLhandleARB program)
struct gl_transform_feedback_object *obj =
ctx->TransformFeedback.CurrentObject;
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
if (obj->Active) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glUseProgram(transform feedback active)");
@@ -1709,8 +1718,7 @@ _mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat,
#if FEATURE_ARB_geometry_shader4
void GLAPIENTRY
-_mesa_ProgramParameteriARB(GLuint program, GLenum pname,
- GLint value)
+_mesa_ProgramParameteriARB(GLuint program, GLenum pname, GLint value)
{
struct gl_shader_program *shProg;
GET_CURRENT_CONTEXT(ctx);
@@ -1788,6 +1796,8 @@ _mesa_UseShaderProgramEXT(GLenum type, GLuint program)
GET_CURRENT_CONTEXT(ctx);
struct gl_shader_program *shProg = NULL;
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
if (!validate_shader_target(ctx, type)) {
_mesa_error(ctx, GL_INVALID_ENUM, "glUseShaderProgramEXT(type)");
return;
diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c
index 456687b0c5c..8cbb021d8b0 100644
--- a/src/mesa/main/texformat.c
+++ b/src/mesa/main/texformat.c
@@ -217,10 +217,12 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32:
RETURN_IF_SUPPORTED(MESA_FORMAT_Z32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_X8_Z24);
RETURN_IF_SUPPORTED(MESA_FORMAT_S8_Z24);
break;
case GL_DEPTH_COMPONENT16:
RETURN_IF_SUPPORTED(MESA_FORMAT_Z16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_X8_Z24);
RETURN_IF_SUPPORTED(MESA_FORMAT_S8_Z24);
default:
; /* fallthrough */
diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c
index b23317c46a0..97d10122541 100644
--- a/src/mesa/main/texgetimage.c
+++ b/src/mesa/main/texgetimage.c
@@ -40,6 +40,7 @@
#include "pack.h"
#include "pbo.h"
#include "texgetimage.h"
+#include "texfetch.h"
#include "teximage.h"
@@ -220,110 +221,14 @@ get_tex_ycbcr(struct gl_context *ctx, GLuint dimensions,
}
-#if FEATURE_EXT_texture_sRGB
-
-
-/**
- * Convert a float value from linear space to a
- * non-linear sRGB value in [0, 255].
- * Not terribly efficient.
- */
-static INLINE GLfloat
-linear_to_nonlinear(GLfloat cl)
-{
- /* can't have values outside [0, 1] */
- GLfloat cs;
- if (cl < 0.0031308f) {
- cs = 12.92f * cl;
- }
- else {
- cs = (GLfloat)(1.055 * pow(cl, 0.41666) - 0.055);
- }
- return cs;
-}
-
-
-/**
- * glGetTexImagefor sRGB pixels;
- */
-static void
-get_tex_srgb(struct gl_context *ctx, GLuint dimensions,
- GLenum format, GLenum type, GLvoid *pixels,
- const struct gl_texture_image *texImage)
-{
- const GLint width = texImage->Width;
- const GLint height = texImage->Height;
- const GLint depth = texImage->Depth;
- const GLbitfield transferOps = 0x0;
- GLint img, row;
- GLfloat (*rgba)[4] = (GLfloat (*)[4]) malloc(4 * width * sizeof(GLfloat));
-
- if (!rgba) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGetTexImage");
- return;
- }
-
- for (img = 0; img < depth; img++) {
- for (row = 0; row < height; row++) {
- void *dest = _mesa_image_address(dimensions, &ctx->Pack, pixels,
- width, height, format, type,
- img, row, 0);
-
- GLint col;
-
- /* convert row to RGBA format */
- for (col = 0; col < width; col++) {
- texImage->FetchTexelf(texImage, col, row, img, rgba[col]);
- if (texImage->_BaseFormat == GL_LUMINANCE) {
- rgba[col][RCOMP] = linear_to_nonlinear(rgba[col][RCOMP]);
- rgba[col][GCOMP] = 0.0;
- rgba[col][BCOMP] = 0.0;
- }
- else if (texImage->_BaseFormat == GL_LUMINANCE_ALPHA) {
- rgba[col][RCOMP] = linear_to_nonlinear(rgba[col][RCOMP]);
- rgba[col][GCOMP] = 0.0;
- rgba[col][BCOMP] = 0.0;
- }
- else if (texImage->_BaseFormat == GL_RGB ||
- texImage->_BaseFormat == GL_RGBA) {
- rgba[col][RCOMP] = linear_to_nonlinear(rgba[col][RCOMP]);
- rgba[col][GCOMP] = linear_to_nonlinear(rgba[col][GCOMP]);
- rgba[col][BCOMP] = linear_to_nonlinear(rgba[col][BCOMP]);
- }
- }
- _mesa_pack_rgba_span_float(ctx, width, (GLfloat (*)[4]) rgba,
- format, type, dest,
- &ctx->Pack, transferOps);
- }
- }
-
- free(rgba);
-}
-
-
-#else /* FEATURE_EXT_texture_sRGB */
-
-
-static INLINE void
-get_tex_srgb(struct gl_context *ctx, GLuint dimensions,
- GLenum format, GLenum type, GLvoid *pixels,
- const struct gl_texture_image *texImage)
-{
- ASSERT_NO_FEATURE();
-}
-
-
-#endif /* FEATURE_EXT_texture_sRGB */
-
-
/**
- * glGetTexImagefor RGBA, Luminance, etc. pixels.
+ * glGetTexImage for (s)RGBA, Luminance, etc. pixels.
* This is the slow way since we use texture sampling.
*/
static void
get_tex_rgba(struct gl_context *ctx, GLuint dimensions,
GLenum format, GLenum type, GLvoid *pixels,
- const struct gl_texture_image *texImage)
+ struct gl_texture_image *texImage)
{
const GLint width = texImage->Width;
const GLint height = texImage->Height;
@@ -334,12 +239,23 @@ get_tex_rgba(struct gl_context *ctx, GLuint dimensions,
GLbitfield transferOps = 0x0;
GLint img, row;
GLfloat (*rgba)[4] = (GLfloat (*)[4]) malloc(4 * width * sizeof(GLfloat));
+ const GLboolean is_sampler_srgb_decode =
+ _mesa_get_format_color_encoding(texImage->TexFormat) == GL_SRGB &&
+ texImage->TexObject->Sampler.sRGBDecode == GL_DECODE_EXT;
if (!rgba) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glGetTexImage");
return;
}
+ /* glGetTexImage always returns sRGB data for sRGB textures. Make sure the
+ * fetch functions return sRGB data without linearizing it.
+ */
+ if (is_sampler_srgb_decode) {
+ texImage->TexObject->Sampler.sRGBDecode = GL_SKIP_DECODE_EXT;
+ _mesa_set_fetch_functions(texImage, dimensions);
+ }
+
for (img = 0; img < depth; img++) {
for (row = 0; row < height; row++) {
void *dest = _mesa_image_address(dimensions, &ctx->Pack, pixels,
@@ -389,6 +305,11 @@ get_tex_rgba(struct gl_context *ctx, GLuint dimensions,
}
}
+ if (is_sampler_srgb_decode) {
+ texImage->TexObject->Sampler.sRGBDecode = GL_DECODE_EXT;
+ _mesa_set_fetch_functions(texImage, dimensions);
+ }
+
free(rgba);
}
@@ -548,9 +469,6 @@ _mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level,
else if (format == GL_YCBCR_MESA) {
get_tex_ycbcr(ctx, dimensions, format, type, pixels, texImage);
}
- else if (_mesa_get_format_color_encoding(texImage->TexFormat) == GL_SRGB) {
- get_tex_srgb(ctx, dimensions, format, type, pixels, texImage);
- }
else {
get_tex_rgba(ctx, dimensions, format, type, pixels, texImage);
}
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 8fb54c693e0..3e429110ae9 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -81,31 +81,18 @@ _mesa_free_texmemory(void *m)
/*
- * Compute floor(log_base_2(n)).
- * If n < 0 return -1.
+ * Returns the floor form of binary logarithm for a 32-bit integer.
*/
-static int
-logbase2( int n )
+static GLuint
+logbase2(GLuint n)
{
- GLint i = 1;
- GLint log2 = 0;
-
- if (n < 0)
- return -1;
-
- if (n == 0)
- return 0;
-
- while ( n > i ) {
- i *= 2;
- log2++;
- }
- if (i != n) {
- return log2 - 1;
- }
- else {
- return log2;
- }
+ GLuint pos = 0;
+ if (n >= 1<<16) { n >>= 16; pos += 16; }
+ if (n >= 1<< 8) { n >>= 8; pos += 8; }
+ if (n >= 1<< 4) { n >>= 4; pos += 4; }
+ if (n >= 1<< 2) { n >>= 2; pos += 2; }
+ if (n >= 1<< 1) { pos += 1; }
+ return pos;
}
@@ -2693,7 +2680,7 @@ texsubimage(struct gl_context *ctx, GLuint dims, GLenum target, GLint level,
format, type, texImage)) {
/* error was recorded */
}
- else if (width > 0 && height > 0 && height > 0) {
+ else if (width > 0 && height > 0 && depth > 0) {
/* If we have a border, offset=-1 is legal. Bias by border width. */
switch (dims) {
case 3:
diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c
index 12fe7b5e226..c9b12c8c2e1 100644
--- a/src/mesa/main/uniforms.c
+++ b/src/mesa/main/uniforms.c
@@ -39,6 +39,7 @@
#include "main/glheader.h"
#include "main/context.h"
#include "main/dispatch.h"
+#include "main/image.h"
#include "main/mfeatures.h"
#include "main/mtypes.h"
#include "main/shaderapi.h"
@@ -121,32 +122,72 @@ is_sampler_type(GLenum type)
}
-static struct gl_program_parameter *
-get_uniform_parameter(const struct gl_shader_program *shProg, GLuint index)
+/**
+ * Given a uniform index, return the vertex/geometry/fragment program
+ * that has that parameter, plus the position of the parameter in the
+ * parameter/constant buffer.
+ * \param shProg the shader program
+ * \param index the uniform index in [0, NumUniforms-1]
+ * \param progOut returns containing program
+ * \param posOut returns position of the uniform in the param/const buffer
+ * \return GL_TRUE for success, GL_FALSE for invalid index
+ */
+static GLboolean
+find_uniform_parameter_pos(struct gl_shader_program *shProg, GLint index,
+ struct gl_program **progOut, GLint *posOut)
{
- const struct gl_program *prog = NULL;
- GLint progPos;
+ struct gl_program *prog = NULL;
+ GLint pos;
- progPos = shProg->Uniforms->Uniforms[index].VertPos;
- if (progPos >= 0) {
+ if (!shProg->Uniforms ||
+ index < 0 ||
+ index >= (GLint) shProg->Uniforms->NumUniforms) {
+ return GL_FALSE;
+ }
+
+ pos = shProg->Uniforms->Uniforms[index].VertPos;
+ if (pos >= 0) {
prog = &shProg->VertexProgram->Base;
}
else {
- progPos = shProg->Uniforms->Uniforms[index].FragPos;
- if (progPos >= 0) {
+ pos = shProg->Uniforms->Uniforms[index].FragPos;
+ if (pos >= 0) {
prog = &shProg->FragmentProgram->Base;
- } else {
- progPos = shProg->Uniforms->Uniforms[index].GeomPos;
- if (progPos >= 0) {
+ }
+ else {
+ pos = shProg->Uniforms->Uniforms[index].GeomPos;
+ if (pos >= 0) {
prog = &shProg->GeometryProgram->Base;
}
}
}
- if (!prog || progPos < 0)
- return NULL; /* should never happen */
+ if (!prog || pos < 0)
+ return GL_FALSE; /* should really never happen */
- return &prog->Parameters->Parameters[progPos];
+ *progOut = prog;
+ *posOut = pos;
+
+ return GL_TRUE;
+}
+
+
+/**
+ * Return pointer to a gl_program_parameter which corresponds to a uniform.
+ * \param shProg the shader program
+ * \param index the uniform index in [0, NumUniforms-1]
+ * \return gl_program_parameter point or NULL if index is invalid
+ */
+static const struct gl_program_parameter *
+get_uniform_parameter(struct gl_shader_program *shProg, GLint index)
+{
+ struct gl_program *prog;
+ GLint progPos;
+
+ if (find_uniform_parameter_pos(shProg, index, &prog, &progPos))
+ return &prog->Parameters->Parameters[progPos];
+ else
+ return NULL;
}
@@ -158,12 +199,10 @@ _mesa_get_active_uniform(struct gl_context *ctx, GLuint program, GLuint index,
GLsizei maxLength, GLsizei *length, GLint *size,
GLenum *type, GLchar *nameOut)
{
- const struct gl_shader_program *shProg;
- const struct gl_program *prog = NULL;
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program, "glGetActiveUniform");
const struct gl_program_parameter *param;
- GLint progPos;
- shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveUniform");
if (!shProg)
return;
@@ -172,27 +211,9 @@ _mesa_get_active_uniform(struct gl_context *ctx, GLuint program, GLuint index,
return;
}
- progPos = shProg->Uniforms->Uniforms[index].VertPos;
- if (progPos >= 0) {
- prog = &shProg->VertexProgram->Base;
- }
- else {
- progPos = shProg->Uniforms->Uniforms[index].FragPos;
- if (progPos >= 0) {
- prog = &shProg->FragmentProgram->Base;
- } else {
- progPos = shProg->Uniforms->Uniforms[index].GeomPos;
- if (progPos >= 0) {
- prog = &shProg->GeometryProgram->Base;
- }
- }
- }
-
- if (!prog || progPos < 0)
- return; /* should never happen */
-
- ASSERT(progPos < prog->Parameters->NumParameters);
- param = &prog->Parameters->Parameters[progPos];
+ param = get_uniform_parameter(shProg, index);
+ if (!param)
+ return;
if (nameOut) {
_mesa_copy_string(nameOut, maxLength, length, param->Name);
@@ -313,54 +334,7 @@ get_uniform_rows_cols(const struct gl_program_parameter *p,
/**
- * Helper for get_uniform[fi]v() functions.
- * Given a shader program name and uniform location, return a pointer
- * to the shader program and return the program parameter position.
- */
-static void
-lookup_uniform_parameter(struct gl_context *ctx, GLuint program, GLint location,
- struct gl_program **progOut, GLint *paramPosOut)
-{
- struct gl_shader_program *shProg
- = _mesa_lookup_shader_program_err(ctx, program, "glGetUniform[if]v");
- struct gl_program *prog = NULL;
- GLint progPos = -1;
-
- /* if shProg is NULL, we'll have already recorded an error */
-
- if (shProg) {
- if (!shProg->Uniforms ||
- location < 0 ||
- location >= (GLint) shProg->Uniforms->NumUniforms) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformfv(location)");
- }
- else {
- /* OK, find the gl_program and program parameter location */
- progPos = shProg->Uniforms->Uniforms[location].VertPos;
- if (progPos >= 0) {
- prog = &shProg->VertexProgram->Base;
- }
- else {
- progPos = shProg->Uniforms->Uniforms[location].FragPos;
- if (progPos >= 0) {
- prog = &shProg->FragmentProgram->Base;
- } else {
- progPos = shProg->Uniforms->Uniforms[location].GeomPos;
- if (progPos >= 0) {
- prog = &shProg->GeometryProgram->Base;
- }
- }
- }
- }
- }
-
- *progOut = prog;
- *paramPosOut = progPos;
-}
-
-
-/**
- * GLGL uniform arrays and structs require special handling.
+ * GLSL uniform arrays and structs require special handling.
*
* The GL_ARB_shader_objects spec says that if you use
* glGetUniformLocation to get the location of an array, you CANNOT
@@ -408,20 +382,26 @@ split_location_offset(GLint *location, GLint *offset)
/**
- * Called via glGetUniformfv().
+ * Called via glGetUniform[fiui]v() to get the current value of a uniform.
*/
static void
-_mesa_get_uniformfv(struct gl_context *ctx, GLuint program, GLint location,
- GLsizei bufSize, GLfloat *params)
+get_uniform(struct gl_context *ctx, GLuint program, GLint location,
+ GLsizei bufSize, GLenum returnType, GLvoid *paramsOut)
{
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program, "glGetUniformfv");
struct gl_program *prog;
GLint paramPos, offset;
- split_location_offset(&location, &offset);
+ if (!shProg)
+ return;
- lookup_uniform_parameter(ctx, program, location, &prog, &paramPos);
+ split_location_offset(&location, &offset);
- if (prog) {
+ if (!find_uniform_parameter_pos(shProg, location, &prog, &paramPos)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformfv(location)");
+ }
+ else {
const struct gl_program_parameter *p =
&prog->Parameters->Parameters[paramPos];
GLint rows, cols, i, j, k;
@@ -429,7 +409,7 @@ _mesa_get_uniformfv(struct gl_context *ctx, GLuint program, GLint location,
get_uniform_rows_cols(p, &rows, &cols);
- numBytes = rows * cols * sizeof *params;
+ numBytes = rows * cols * _mesa_sizeof_type(returnType);
if (bufSize < numBytes) {
_mesa_error( ctx, GL_INVALID_OPERATION,
"glGetnUniformfvARB(out of bounds: bufSize is %d,"
@@ -437,126 +417,74 @@ _mesa_get_uniformfv(struct gl_context *ctx, GLuint program, GLint location,
return;
}
- k = 0;
- for (i = 0; i < rows; i++) {
- const int base = paramPos + offset + i;
-
- for (j = 0; j < cols; j++ ) {
- params[k++] = prog->Parameters->ParameterValues[base][j];
+ switch (returnType) {
+ case GL_FLOAT:
+ {
+ GLfloat *params = (GLfloat *) paramsOut;
+ k = 0;
+ for (i = 0; i < rows; i++) {
+ const int base = paramPos + offset + i;
+ for (j = 0; j < cols; j++ ) {
+ params[k++] = prog->Parameters->ParameterValues[base][j];
+ }
+ }
}
- }
- }
-}
-
-
-/**
- * Called via glGetUniformiv().
- * \sa _mesa_get_uniformfv, only difference is a cast.
- */
-static void
-_mesa_get_uniformiv(struct gl_context *ctx, GLuint program, GLint location,
- GLsizei bufSize, GLint *params)
-{
- struct gl_program *prog;
- GLint paramPos, offset;
-
- split_location_offset(&location, &offset);
-
- lookup_uniform_parameter(ctx, program, location, &prog, &paramPos);
-
- if (prog) {
- const struct gl_program_parameter *p =
- &prog->Parameters->Parameters[paramPos];
- GLint rows, cols, i, j, k;
- GLsizei numBytes;
-
- get_uniform_rows_cols(p, &rows, &cols);
-
- numBytes = rows * cols * sizeof *params;
- if (bufSize < numBytes) {
- _mesa_error( ctx, GL_INVALID_OPERATION,
- "glGetnUniformivARB(out of bounds: bufSize is %d,"
- " but %d bytes are required)", bufSize, numBytes );
- return;
- }
-
- k = 0;
- for (i = 0; i < rows; i++) {
- const int base = paramPos + offset + i;
-
- for (j = 0; j < cols; j++ ) {
- params[k++] = (GLint) prog->Parameters->ParameterValues[base][j];
+ break;
+ case GL_DOUBLE:
+ {
+ GLfloat *params = (GLfloat *) paramsOut;
+ k = 0;
+ for (i = 0; i < rows; i++) {
+ const int base = paramPos + offset + i;
+ for (j = 0; j < cols; j++ ) {
+ params[k++] = (GLdouble)
+ prog->Parameters->ParameterValues[base][j];
+ }
+ }
}
- }
- }
-}
-
-
-/**
- * Called via glGetUniformuiv().
- * New in GL_EXT_gpu_shader4, OpenGL 3.0
- * \sa _mesa_get_uniformfv, only difference is a cast.
- */
-static void
-_mesa_get_uniformuiv(struct gl_context *ctx, GLuint program, GLint location,
- GLsizei bufSize, GLuint *params)
-{
- struct gl_program *prog;
- GLint paramPos, offset;
-
- split_location_offset(&location, &offset);
-
- lookup_uniform_parameter(ctx, program, location, &prog, &paramPos);
-
- if (prog) {
- const struct gl_program_parameter *p =
- &prog->Parameters->Parameters[paramPos];
- GLint rows, cols, i, j, k;
- GLsizei numBytes;
-
- get_uniform_rows_cols(p, &rows, &cols);
-
- numBytes = rows * cols * sizeof *params;
- if (bufSize < numBytes) {
- _mesa_error( ctx, GL_INVALID_OPERATION,
- "glGetnUniformuivARB(out of bounds: bufSize is %d,"
- " but %d bytes are required)", bufSize, numBytes );
- return;
- }
-
- k = 0;
- for (i = 0; i < rows; i++) {
- const int base = paramPos + offset + i;
-
- for (j = 0; j < cols; j++ ) {
- params[k++] = (GLuint) prog->Parameters->ParameterValues[base][j];
+ break;
+ case GL_INT:
+ {
+ GLint *params = (GLint *) paramsOut;
+ k = 0;
+ for (i = 0; i < rows; i++) {
+ const int base = paramPos + offset + i;
+ for (j = 0; j < cols; j++ ) {
+ params[k++] = (GLint)
+ prog->Parameters->ParameterValues[base][j];
+ }
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT:
+ {
+ GLuint *params = (GLuint *) paramsOut;
+ k = 0;
+ for (i = 0; i < rows; i++) {
+ const int base = paramPos + offset + i;
+ for (j = 0; j < cols; j++ ) {
+ params[k++] = (GLuint)
+ prog->Parameters->ParameterValues[base][j];
+ }
+ }
}
+ break;
+ default:
+ _mesa_problem(ctx, "bad returnType in get_uniform()");
}
}
}
/**
- * Called via glGetUniformdv().
- * New in GL_ARB_gpu_shader_fp64, OpenGL 4.0
- */
-static void
-_mesa_get_uniformdv(struct gl_context *ctx, GLuint program, GLint location,
- GLsizei bufSize, GLdouble *params)
-{
- _mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformdvARB"
- "(GL_ARB_gpu_shader_fp64 not implemented)");
-}
-
-
-/**
* Called via glGetUniformLocation().
*
* The return value will encode two values, the uniform location and an
* offset (used for arrays, structs).
*/
GLint
-_mesa_get_uniform_location(struct gl_context *ctx, struct gl_shader_program *shProg,
+_mesa_get_uniform_location(struct gl_context *ctx,
+ struct gl_shader_program *shProg,
const GLchar *name)
{
GLint offset = 0, location = -1;
@@ -593,8 +521,8 @@ _mesa_get_uniform_location(struct gl_context *ctx, struct gl_shader_program *shP
const GLint element = atoi(c + 1);
if (element > 0) {
/* get type of the uniform array element */
- struct gl_program_parameter *p;
- p = get_uniform_parameter(shProg, location);
+ const struct gl_program_parameter *p =
+ get_uniform_parameter(shProg, location);
if (p) {
GLint rows, cols;
get_matrix_dims(p->DataType, &rows, &cols);
@@ -737,8 +665,8 @@ set_program_uniform(struct gl_context *ctx, struct gl_program *program,
/* loop over number of samplers to change */
for (i = 0; i < count; i++) {
- GLuint sampler =
- (GLuint) program->Parameters->ParameterValues[index + offset + i][0];
+ GLuint sampler = (GLuint)
+ program->Parameters->ParameterValues[index + offset + i][0];
GLuint texUnit = ((GLuint *) values)[i];
/* check that the sampler (tex unit index) is legal */
@@ -790,7 +718,9 @@ set_program_uniform(struct gl_context *ctx, struct gl_program *program,
/* we'll ignore extra data below */
}
else {
- /* non-array: count must be at most one; count == 0 is handled by the loop below */
+ /* non-array: count must be at most one; count == 0 is handled
+ * by the loop below
+ */
if (count > 1) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glUniform(uniform '%s' is not an array)",
@@ -855,6 +785,8 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
struct gl_uniform *uniform;
GLint elems, offset;
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
if (!shProg || !shProg->LinkStatus) {
_mesa_error(ctx, GL_INVALID_OPERATION, "glUniform(program not linked)");
return;
@@ -959,7 +891,8 @@ set_program_uniform_matrix(struct gl_context *ctx, struct gl_program *program,
{
GLuint mat, row, col;
GLuint src = 0;
- const struct gl_program_parameter * param = &program->Parameters->Parameters[index];
+ const struct gl_program_parameter *param =
+ &program->Parameters->Parameters[index];
const GLuint slots = (param->Size + 3) / 4;
const GLint typeSize = _mesa_sizeof_glsl_type(param->DataType);
GLint nr, nc;
@@ -973,7 +906,9 @@ set_program_uniform_matrix(struct gl_context *ctx, struct gl_program *program,
}
if ((GLint) param->Size <= typeSize) {
- /* non-array: count must be at most one; count == 0 is handled by the loop below */
+ /* non-array: count must be at most one; count == 0 is handled
+ * by the loop below
+ */
if (count > 1) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glUniformMatrix(uniform is not an array)");
@@ -1028,6 +963,8 @@ _mesa_uniform_matrix(struct gl_context *ctx, struct gl_shader_program *shProg,
struct gl_uniform *uniform;
GLint offset;
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
if (!shProg || !shProg->LinkStatus) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glUniformMatrix(program not linked)");
@@ -1391,7 +1328,7 @@ _mesa_GetnUniformfvARB(GLhandleARB program, GLint location,
GLsizei bufSize, GLfloat *params)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_get_uniformfv(ctx, program, location, bufSize, params);
+ get_uniform(ctx, program, location, bufSize, GL_FLOAT, params);
}
void GLAPIENTRY
@@ -1406,7 +1343,7 @@ _mesa_GetnUniformivARB(GLhandleARB program, GLint location,
GLsizei bufSize, GLint *params)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_get_uniformiv(ctx, program, location, bufSize, params);
+ get_uniform(ctx, program, location, bufSize, GL_INT, params);
}
void GLAPIENTRY
@@ -1422,7 +1359,7 @@ _mesa_GetnUniformuivARB(GLhandleARB program, GLint location,
GLsizei bufSize, GLuint *params)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_get_uniformuiv(ctx, program, location, bufSize, params);
+ get_uniform(ctx, program, location, bufSize, GL_UNSIGNED_INT, params);
}
void GLAPIENTRY
@@ -1438,7 +1375,11 @@ _mesa_GetnUniformdvARB(GLhandleARB program, GLint location,
GLsizei bufSize, GLdouble *params)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_get_uniformdv(ctx, program, location, bufSize, params);
+ /*
+ get_uniform(ctx, program, location, bufSize, GL_DOUBLE, params);
+ */
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformdvARB"
+ "(GL_ARB_gpu_shader_fp64 not implemented)");
}
void GLAPIENTRY
diff --git a/src/mesa/main/vtxfmt.c b/src/mesa/main/vtxfmt.c
index 692ce080c9f..d0941477d61 100644
--- a/src/mesa/main/vtxfmt.c
+++ b/src/mesa/main/vtxfmt.c
@@ -106,6 +106,7 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt )
SET_MultiDrawElementsBaseVertex(tab, vfmt->MultiDrawElementsBaseVertex);
SET_DrawArraysInstancedARB(tab, vfmt->DrawArraysInstanced);
SET_DrawElementsInstancedARB(tab, vfmt->DrawElementsInstanced);
+ SET_DrawElementsInstancedBaseVertex(tab, vfmt->DrawElementsInstancedBaseVertex);
/* GL_NV_vertex_program */
SET_VertexAttrib1fNV(tab, vfmt->VertexAttrib1fNV);
diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
index 510aeab82da..00869979dd8 100644
--- a/src/mesa/program/ir_to_mesa.cpp
+++ b/src/mesa/program/ir_to_mesa.cpp
@@ -3172,7 +3172,8 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader)
&ctx->Extensions, ctx->API);
if (ctx->Shader.Flags & GLSL_DUMP) {
- printf("GLSL source for shader %d:\n", shader->Name);
+ printf("GLSL source for %s shader %d:\n",
+ _mesa_glsl_shader_target_name(state->target), shader->Name);
printf("%s\n", shader->Source);
}
diff --git a/src/mesa/program/prog_parameter_layout.c b/src/mesa/program/prog_parameter_layout.c
index d7dc97edbfb..90a9771080c 100644
--- a/src/mesa/program/prog_parameter_layout.c
+++ b/src/mesa/program/prog_parameter_layout.c
@@ -207,6 +207,7 @@ _mesa_layout_parameters(struct asm_parser_state *state)
}
}
+ layout->StateFlags = state->prog->Parameters->StateFlags;
_mesa_free_parameter_list(state->prog->Parameters);
state->prog->Parameters = layout;
diff --git a/src/mesa/state_tracker/st_atom_pixeltransfer.c b/src/mesa/state_tracker/st_atom_pixeltransfer.c
index 57430b36f8d..95b706cb96c 100644
--- a/src/mesa/state_tracker/st_atom_pixeltransfer.c
+++ b/src/mesa/state_tracker/st_atom_pixeltransfer.c
@@ -121,7 +121,7 @@ load_color_map_texture(struct gl_context *ctx, struct pipe_resource *pt)
uint *dest;
uint i, j;
- transfer = pipe_get_transfer(st_context(ctx)->pipe,
+ transfer = pipe_get_transfer(pipe,
pt, 0, 0, PIPE_TRANSFER_WRITE,
0, 0, texSize, texSize);
dest = (uint *) pipe_transfer_map(pipe, transfer);
diff --git a/src/mesa/state_tracker/st_cb_accum.c b/src/mesa/state_tracker/st_cb_accum.c
index 3e01c440bda..3e3659d1571 100644
--- a/src/mesa/state_tracker/st_cb_accum.c
+++ b/src/mesa/state_tracker/st_cb_accum.c
@@ -248,7 +248,7 @@ accum_return(struct gl_context *ctx, GLfloat value,
else
usage = PIPE_TRANSFER_WRITE;
- color_trans = pipe_get_transfer(st_context(ctx)->pipe,
+ color_trans = pipe_get_transfer(pipe,
color_strb->texture, 0, 0,
usage,
xpos, ypos,
diff --git a/src/mesa/state_tracker/st_cb_blit.c b/src/mesa/state_tracker/st_cb_blit.c
index 25c95c7b9dc..416be194d11 100644
--- a/src/mesa/state_tracker/st_cb_blit.c
+++ b/src/mesa/state_tracker/st_cb_blit.c
@@ -109,6 +109,11 @@ st_BlitFramebuffer(struct gl_context *ctx,
dstY1 = tmp;
}
+ /* Disable conditional rendering. */
+ if (st->render_condition) {
+ st->pipe->render_condition(st->pipe, NULL, 0);
+ }
+
if (mask & GL_COLOR_BUFFER_BIT) {
struct gl_renderbuffer_attachment *srcAtt =
&readFB->Attachment[readFB->_ColorReadBufferIndex];
@@ -121,7 +126,7 @@ st_BlitFramebuffer(struct gl_context *ctx,
struct pipe_surface *dstSurf = dstRb->surface;
if (!srcObj->pt)
- return;
+ goto done;
util_blit_pixels(st->blit, srcObj->pt, srcAtt->TextureLevel,
srcX0, srcY0, srcX1, srcY1,
@@ -199,6 +204,13 @@ st_BlitFramebuffer(struct gl_context *ctx,
}
}
}
+
+done:
+ /* Restore conditional rendering state. */
+ if (st->render_condition) {
+ st->pipe->render_condition(st->pipe, st->render_condition,
+ st->condition_mode);
+ }
}
diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c b/src/mesa/state_tracker/st_cb_bufferobjects.c
index 1e489b29d93..7374bb0acc5 100644
--- a/src/mesa/state_tracker/st_cb_bufferobjects.c
+++ b/src/mesa/state_tracker/st_cb_bufferobjects.c
@@ -222,8 +222,7 @@ st_bufferobj_data(struct gl_context *ctx,
}
if (data)
- pipe_buffer_write(st_context(ctx)->pipe, st_obj->buffer, 0,
- size, data);
+ pipe_buffer_write(pipe, st_obj->buffer, 0, size, data);
return GL_TRUE;
}
diff --git a/src/mesa/state_tracker/st_cb_condrender.c b/src/mesa/state_tracker/st_cb_condrender.c
index 7766ead48b5..64c6c117fca 100644
--- a/src/mesa/state_tracker/st_cb_condrender.c
+++ b/src/mesa/state_tracker/st_cb_condrender.c
@@ -51,7 +51,8 @@ st_BeginConditionalRender(struct gl_context *ctx, struct gl_query_object *q,
GLenum mode)
{
struct st_query_object *stq = st_query_object(q);
- struct pipe_context *pipe = st_context(ctx)->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
uint m;
switch (mode) {
@@ -72,6 +73,9 @@ st_BeginConditionalRender(struct gl_context *ctx, struct gl_query_object *q,
m = PIPE_RENDER_COND_WAIT;
}
+ st->render_condition = stq->pq;
+ st->condition_mode = m;
+
pipe->render_condition(pipe, stq->pq, m);
}
@@ -82,9 +86,12 @@ st_BeginConditionalRender(struct gl_context *ctx, struct gl_query_object *q,
static void
st_EndConditionalRender(struct gl_context *ctx, struct gl_query_object *q)
{
- struct pipe_context *pipe = st_context(ctx)->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
(void) q;
+
pipe->render_condition(pipe, NULL, 0);
+ st->render_condition = NULL;
}
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index 9948f8d2bc5..965fbcd1d9e 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -793,9 +793,10 @@ draw_stencil_pixels(struct gl_context *ctx, GLint x, GLint y,
else
usage = PIPE_TRANSFER_WRITE;
- pt = pipe_get_transfer(st_context(ctx)->pipe, strb->texture, 0, 0,
- usage, x, y,
- width, height);
+ pt = pipe_get_transfer(pipe, strb->texture,
+ strb->rtt_level, strb->rtt_face + strb->rtt_slice,
+ usage, x, y,
+ width, height);
stmap = pipe_transfer_map(pipe, pt);
@@ -1130,8 +1131,10 @@ copy_stencil_pixels(struct gl_context *ctx, GLint srcx, GLint srcy,
dsty = rbDraw->Base.Height - dsty - height;
}
- ptDraw = pipe_get_transfer(st_context(ctx)->pipe,
- rbDraw->texture, 0, 0,
+ ptDraw = pipe_get_transfer(pipe,
+ rbDraw->texture,
+ rbDraw->rtt_level,
+ rbDraw->rtt_face + rbDraw->rtt_slice,
usage, dstx, dsty,
width, height);
@@ -1244,7 +1247,8 @@ blit_copy_pixels(struct gl_context *ctx, GLint srcx, GLint srcy,
!ctx->VertexProgram.Enabled &&
!ctx->Shader.CurrentFragmentProgram &&
st_fb_orientation(ctx->ReadBuffer) == st_fb_orientation(ctx->DrawBuffer) &&
- ctx->DrawBuffer->_NumColorDrawBuffers == 1) {
+ ctx->DrawBuffer->_NumColorDrawBuffers == 1 &&
+ !ctx->Query.CondRenderQuery) {
struct st_renderbuffer *rbRead, *rbDraw;
GLint drawX, drawY;
@@ -1291,8 +1295,10 @@ blit_copy_pixels(struct gl_context *ctx, GLint srcx, GLint srcy,
u_box_2d(readX, readY, readW, readH, &srcBox);
pipe->resource_copy_region(pipe,
- rbDraw->texture, 0, drawX, drawY, 0,
- rbRead->texture, 0, &srcBox);
+ rbDraw->texture,
+ rbDraw->rtt_level, drawX, drawY, 0,
+ rbRead->texture,
+ rbRead->rtt_level, &srcBox);
return GL_TRUE;
}
}
@@ -1444,10 +1450,10 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
/* copy source framebuffer surface into mipmap/texture */
pipe->resource_copy_region(pipe,
pt, /* dest tex */
- 0,
+ 0, /* dest lvl */
pack.SkipPixels, pack.SkipRows, 0, /* dest pos */
rbRead->texture, /* src tex */
- 0,
+ rbRead->rtt_level, /* src lvl */
&src_box);
}
@@ -1455,7 +1461,8 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
/* CPU-based fallback/conversion */
struct pipe_transfer *ptRead =
pipe_get_transfer(st->pipe, rbRead->texture,
- 0, 0, /* level, layer */
+ rbRead->rtt_level,
+ rbRead->rtt_face + rbRead->rtt_slice,
PIPE_TRANSFER_READ,
readX, readY, readW, readH);
struct pipe_transfer *ptTex;
diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c
index e632d816542..64424f77634 100644
--- a/src/mesa/state_tracker/st_cb_fbo.c
+++ b/src/mesa/state_tracker/st_cb_fbo.c
@@ -74,11 +74,8 @@ st_renderbuffer_alloc_storage(struct gl_context * ctx,
enum pipe_format format;
struct pipe_surface surf_tmpl;
- if (strb->format != PIPE_FORMAT_NONE)
- format = strb->format;
- else
- format = st_choose_renderbuffer_format(screen, internalFormat,
- rb->NumSamples);
+ format = st_choose_renderbuffer_format(screen, internalFormat,
+ rb->NumSamples);
if (format == PIPE_FORMAT_NONE) {
return FALSE;
@@ -90,6 +87,7 @@ st_renderbuffer_alloc_storage(struct gl_context * ctx,
strb->Base.Format = st_pipe_format_to_mesa_format(format);
strb->Base._BaseFormat = _mesa_base_fbo_format(ctx, internalFormat);
strb->Base.DataType = st_format_datatype(format);
+ strb->format = format;
strb->defined = GL_FALSE; /* undefined contents now */
diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c
index 2a63799bdbc..67926e39297 100644
--- a/src/mesa/state_tracker/st_cb_readpixels.c
+++ b/src/mesa/state_tracker/st_cb_readpixels.c
@@ -82,7 +82,8 @@ st_read_stencil_pixels(struct gl_context *ctx, GLint x, GLint y,
/* Create a read transfer from the renderbuffer's texture */
pt = pipe_get_transfer(pipe, strb->texture,
- 0, 0,
+ strb->rtt_level,
+ strb->rtt_face + strb->rtt_slice,
PIPE_TRANSFER_READ,
x, y, width, height);
@@ -250,7 +251,8 @@ st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb,
}
trans = pipe_get_transfer(pipe, strb->texture,
- 0, 0,
+ strb->rtt_level,
+ strb->rtt_face + strb->rtt_slice,
PIPE_TRANSFER_READ,
x, y, width, height);
if (!trans) {
@@ -445,7 +447,8 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei h
/* Create a read transfer from the renderbuffer's texture */
trans = pipe_get_transfer(pipe, strb->texture,
- 0, 0,
+ strb->rtt_level, /* level */
+ strb->rtt_face + strb->rtt_slice, /* layer */
PIPE_TRANSFER_READ,
x, y, width, height);
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index a27c30e51fe..88f62902b25 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -795,6 +795,11 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level,
return;
}
+ /* Disable conditional rendering. */
+ if (st->render_condition) {
+ pipe->render_condition(pipe, NULL, 0);
+ }
+
/* blit/render/decompress */
util_blit_pixels_tex(st->blit,
src_view, /* pipe_resource (src) */
@@ -806,8 +811,14 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level,
0.0, /* z */
PIPE_TEX_MIPFILTER_NEAREST);
+ /* Restore conditional rendering state. */
+ if (st->render_condition) {
+ pipe->render_condition(pipe, st->render_condition,
+ st->condition_mode);
+ }
+
/* map the dst_surface so we can read from it */
- tex_xfer = pipe_get_transfer(st_context(ctx)->pipe,
+ tex_xfer = pipe_get_transfer(pipe,
dst_texture, 0, 0,
PIPE_TRANSFER_READ,
0, 0, width, height);
@@ -1228,7 +1239,7 @@ fallback_copy_texsubimage(struct gl_context *ctx, GLenum target, GLint level,
srcY = strb->Base.Height - srcY - height;
}
- src_trans = pipe_get_transfer(st_context(ctx)->pipe,
+ src_trans = pipe_get_transfer(pipe,
strb->texture,
0, 0,
PIPE_TRANSFER_READ,
@@ -1556,6 +1567,11 @@ st_copy_texsubimage(struct gl_context *ctx,
srcY1 = srcY0 + height;
}
+ /* Disable conditional rendering. */
+ if (st->render_condition) {
+ pipe->render_condition(pipe, NULL, 0);
+ }
+
util_blit_pixels_writemask(st->blit,
strb->texture,
strb->surface->u.tex.level,
@@ -1567,6 +1583,13 @@ st_copy_texsubimage(struct gl_context *ctx,
destX + width, destY + height,
0.0, PIPE_TEX_MIPFILTER_NEAREST,
format_writemask);
+
+ /* Restore conditional rendering state. */
+ if (st->render_condition) {
+ pipe->render_condition(pipe, st->render_condition,
+ st->condition_mode);
+ }
+
use_fallback = GL_FALSE;
}
diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h
index c6fc31801d6..ff207039d78 100644
--- a/src/mesa/state_tracker/st_context.h
+++ b/src/mesa/state_tracker/st_context.h
@@ -200,6 +200,10 @@ struct st_context
GLsizei stride;
} user_attrib[PIPE_MAX_ATTRIBS];
unsigned num_user_attribs;
+
+ /* Active render condition. */
+ struct pipe_query *render_condition;
+ unsigned condition_mode;
};
diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
index acfafe351d2..72d5a25336e 100644
--- a/src/mesa/state_tracker/st_format.c
+++ b/src/mesa/state_tracker/st_format.c
@@ -563,18 +563,559 @@ st_pipe_format_to_mesa_format(enum pipe_format format)
/**
+ * Map GL texture formats to Gallium pipe formats.
+ */
+struct format_mapping
+{
+ GLenum glFormats[18]; /**< list of GLenum formats, 0-terminated */
+ enum pipe_format pipeFormats[10]; /**< list of pipe formats, 0-terminated */
+};
+
+
+#define DEFAULT_RGBA_FORMATS \
+ PIPE_FORMAT_B8G8R8A8_UNORM, \
+ PIPE_FORMAT_A8R8G8B8_UNORM, \
+ PIPE_FORMAT_A8B8G8R8_UNORM, \
+ PIPE_FORMAT_B5G6R5_UNORM, \
+ 0
+
+#define DEFAULT_RGB_FORMATS \
+ PIPE_FORMAT_B8G8R8X8_UNORM, \
+ PIPE_FORMAT_X8R8G8B8_UNORM, \
+ PIPE_FORMAT_X8B8G8R8_UNORM, \
+ PIPE_FORMAT_B8G8R8A8_UNORM, \
+ PIPE_FORMAT_A8R8G8B8_UNORM, \
+ PIPE_FORMAT_A8B8G8R8_UNORM, \
+ PIPE_FORMAT_B5G6R5_UNORM, \
+ 0
+
+#define DEFAULT_SRGBA_FORMATS \
+ PIPE_FORMAT_B8G8R8A8_SRGB, \
+ PIPE_FORMAT_A8R8G8B8_SRGB, \
+ PIPE_FORMAT_A8B8G8R8_SRGB, \
+ 0
+
+#define DEFAULT_DEPTH_FORMATS \
+ PIPE_FORMAT_Z24X8_UNORM, \
+ PIPE_FORMAT_X8Z24_UNORM, \
+ PIPE_FORMAT_Z16_UNORM, \
+ PIPE_FORMAT_Z24_UNORM_S8_USCALED, \
+ PIPE_FORMAT_S8_USCALED_Z24_UNORM, \
+ 0
+
+/**
+ * This table maps OpenGL texture format enums to Gallium pipe_format enums.
+ * Multiple GL enums might map to multiple pipe_formats.
+ * The first pipe format in the list that's supported is the one that's chosen.
+ */
+static struct format_mapping format_map[] = {
+ /* Basic RGB, RGBA formats */
+ {
+ { GL_RGB10, GL_RGB10_A2, 0 },
+ { PIPE_FORMAT_B10G10R10A2_UNORM, DEFAULT_RGBA_FORMATS }
+ },
+ {
+ { 4, GL_RGBA, GL_RGBA8, 0 },
+ { DEFAULT_RGBA_FORMATS, 0 }
+ },
+ {
+ { GL_BGRA, 0 },
+ { PIPE_FORMAT_B8G8R8A8_UNORM, DEFAULT_RGBA_FORMATS }
+ },
+ {
+ { 3, GL_RGB, GL_RGB8, 0 },
+ { DEFAULT_RGB_FORMATS, 0 }
+ },
+ {
+ { GL_RGB12, GL_RGB16, GL_RGBA12, GL_RGBA16, 0 },
+ { PIPE_FORMAT_R16G16B16A16_UNORM, DEFAULT_RGBA_FORMATS }
+ },
+ {
+ { GL_RGBA4, GL_RGBA2, 0 },
+ { PIPE_FORMAT_B4G4R4A4_UNORM, DEFAULT_RGBA_FORMATS }
+ },
+ {
+ { GL_RGB5_A1, 0 },
+ { PIPE_FORMAT_B5G5R5A1_UNORM, DEFAULT_RGBA_FORMATS }
+ },
+ {
+ { GL_R3_G3_B2, 0 },
+ { PIPE_FORMAT_B2G3R3_UNORM, PIPE_FORMAT_B5G6R5_UNORM,
+ PIPE_FORMAT_B5G5R5A1_UNORM, DEFAULT_RGBA_FORMATS }
+ },
+ {
+ { GL_RGB5, GL_RGB4 },
+ { PIPE_FORMAT_B5G6R5_UNORM, PIPE_FORMAT_B5G5R5A1_UNORM,
+ DEFAULT_RGBA_FORMATS }
+ },
+
+ /* basic Alpha formats */
+ {
+ { GL_ALPHA12, GL_ALPHA16, 0 },
+ { PIPE_FORMAT_A16_UNORM, PIPE_FORMAT_A8_UNORM,
+ DEFAULT_RGBA_FORMATS }
+ },
+ {
+ { GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_COMPRESSED_ALPHA, 0 },
+ { PIPE_FORMAT_A8_UNORM, DEFAULT_RGBA_FORMATS }
+ },
+
+ /* basic Luminance formats */
+ {
+ { GL_LUMINANCE12, GL_LUMINANCE16, 0 },
+ { PIPE_FORMAT_L16_UNORM, PIPE_FORMAT_L8_UNORM, DEFAULT_RGB_FORMATS }
+ },
+ {
+ { 1, GL_LUMINANCE, GL_LUMINANCE4, GL_LUMINANCE8, 0 },
+ { PIPE_FORMAT_L8_UNORM, DEFAULT_RGB_FORMATS }
+ },
+
+ /* basic Luminance/Alpha formats */
+ {
+ { GL_LUMINANCE12_ALPHA4, GL_LUMINANCE12_ALPHA12,
+ GL_LUMINANCE16_ALPHA16, 0},
+ { PIPE_FORMAT_L16A16_UNORM, PIPE_FORMAT_L8A8_UNORM,
+ DEFAULT_RGBA_FORMATS }
+ },
+ {
+ { 2, GL_LUMINANCE_ALPHA, GL_LUMINANCE6_ALPHA2, GL_LUMINANCE8_ALPHA8, 0 },
+ { PIPE_FORMAT_L8A8_UNORM, DEFAULT_RGBA_FORMATS }
+ },
+ {
+ { GL_LUMINANCE4_ALPHA4, 0 },
+ { PIPE_FORMAT_L4A4_UNORM, PIPE_FORMAT_L8A8_UNORM,
+ DEFAULT_RGBA_FORMATS }
+ },
+
+ /* basic Intensity formats */
+ {
+ { GL_INTENSITY12, GL_INTENSITY16, 0 },
+ { PIPE_FORMAT_I16_UNORM, PIPE_FORMAT_I8_UNORM, DEFAULT_RGBA_FORMATS }
+ },
+ {
+ { GL_INTENSITY, GL_INTENSITY4, GL_INTENSITY8,
+ GL_COMPRESSED_INTENSITY, 0 },
+ { PIPE_FORMAT_I8_UNORM, DEFAULT_RGBA_FORMATS }
+ },
+
+ /* YCbCr */
+ {
+ { GL_YCBCR_MESA, 0 },
+ { PIPE_FORMAT_UYVY, PIPE_FORMAT_YUYV, 0 }
+ },
+
+ /* compressed formats */ /* XXX PIPE_BIND_SAMPLER_VIEW only */
+ {
+ { GL_COMPRESSED_RGB, 0 },
+ { PIPE_FORMAT_DXT1_RGB, DEFAULT_RGB_FORMATS }
+ },
+ {
+ { GL_COMPRESSED_RGBA, 0 },
+ { PIPE_FORMAT_DXT5_RGBA, DEFAULT_RGBA_FORMATS }
+ },
+ {
+ { GL_RGB_S3TC, GL_RGB4_S3TC, GL_COMPRESSED_RGB_S3TC_DXT1_EXT, 0 },
+ { PIPE_FORMAT_DXT1_RGB, 0 }
+ },
+ {
+ { GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, 0 },
+ { PIPE_FORMAT_DXT1_RGBA, 0 }
+ },
+ {
+ { GL_RGBA_S3TC, GL_RGBA4_S3TC, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, 0 },
+ { PIPE_FORMAT_DXT3_RGBA, 0 }
+ },
+ {
+ { GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, 0 },
+ { PIPE_FORMAT_DXT5_RGBA, 0 }
+ },
+
+#if 0
+ {
+ { GL_COMPRESSED_RGB_FXT1_3DFX, 0 },
+ { PIPE_FORMAT_RGB_FXT1, 0 }
+ },
+ {
+ { GL_COMPRESSED_RGBA_FXT1_3DFX, 0 },
+ { PIPE_FORMAT_RGBA_FXT1, 0 }
+ },
+#endif
+
+ /* Depth formats */
+ {
+ { GL_DEPTH_COMPONENT16, 0 },
+ { PIPE_FORMAT_Z16_UNORM, DEFAULT_DEPTH_FORMATS }
+ },
+ {
+ { GL_DEPTH_COMPONENT24, 0 },
+ { PIPE_FORMAT_Z24X8_UNORM, PIPE_FORMAT_X8Z24_UNORM,
+ DEFAULT_DEPTH_FORMATS }
+ },
+ {
+ { GL_DEPTH_COMPONENT32, 0 },
+ { PIPE_FORMAT_Z32_UNORM, DEFAULT_DEPTH_FORMATS }
+ },
+ {
+ { GL_DEPTH_COMPONENT, 0 },
+ { DEFAULT_DEPTH_FORMATS }
+ },
+
+ /* stencil formats */
+ {
+ { GL_STENCIL_INDEX, GL_STENCIL_INDEX1_EXT, GL_STENCIL_INDEX4_EXT,
+ GL_STENCIL_INDEX8_EXT, GL_STENCIL_INDEX16_EXT, 0 },
+ {
+ PIPE_FORMAT_S8_USCALED, PIPE_FORMAT_Z24_UNORM_S8_USCALED,
+ PIPE_FORMAT_S8_USCALED_Z24_UNORM, 0
+ }
+ },
+
+ /* Depth / Stencil formats */
+ {
+ { GL_DEPTH_STENCIL_EXT, GL_DEPTH24_STENCIL8_EXT, 0 },
+ { PIPE_FORMAT_Z24_UNORM_S8_USCALED, PIPE_FORMAT_S8_USCALED_Z24_UNORM, 0 }
+ },
+
+ /* sRGB formats */
+ {
+ { GL_SRGB_EXT, GL_SRGB8_EXT, GL_SRGB_ALPHA_EXT, GL_SRGB8_ALPHA8_EXT, 0 },
+ { DEFAULT_SRGBA_FORMATS }
+ },
+ {
+ { GL_COMPRESSED_SRGB_EXT, GL_COMPRESSED_SRGB_S3TC_DXT1_EXT, 0 },
+ { PIPE_FORMAT_DXT1_SRGB, DEFAULT_SRGBA_FORMATS }
+ },
+ {
+ { GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, 0 },
+ { PIPE_FORMAT_DXT1_SRGBA, 0 }
+ },
+ {
+ { GL_COMPRESSED_SRGB_ALPHA_EXT,
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, 0 },
+ { PIPE_FORMAT_DXT3_SRGBA, DEFAULT_SRGBA_FORMATS }
+ },
+ {
+ { GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, 0 },
+ { PIPE_FORMAT_DXT5_SRGBA, 0 }
+ },
+ {
+ { GL_SLUMINANCE_ALPHA_EXT, GL_SLUMINANCE8_ALPHA8_EXT,
+ GL_COMPRESSED_SLUMINANCE_EXT, GL_COMPRESSED_SLUMINANCE_ALPHA_EXT, 0 },
+ { PIPE_FORMAT_L8A8_SRGB, DEFAULT_SRGBA_FORMATS }
+ },
+ {
+ { GL_SLUMINANCE_EXT, GL_SLUMINANCE8_EXT, 0 },
+ { PIPE_FORMAT_L8_SRGB, DEFAULT_SRGBA_FORMATS }
+ },
+
+ /* 16-bit float formats */
+ {
+ { GL_RGBA16F_ARB, 0 },
+ { PIPE_FORMAT_R16G16B16A16_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 }
+ },
+ {
+ { GL_RGB16F_ARB, 0 },
+ { PIPE_FORMAT_R16G16B16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_R32G32B32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 }
+ },
+ {
+ { GL_LUMINANCE_ALPHA16F_ARB, 0 },
+ { PIPE_FORMAT_L16A16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_L32A32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 }
+ },
+ {
+ { GL_ALPHA16F_ARB, 0 },
+ { PIPE_FORMAT_A16_FLOAT, PIPE_FORMAT_L16A16_FLOAT,
+ PIPE_FORMAT_A32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_L32A32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 }
+ },
+ {
+ { GL_INTENSITY16F_ARB, 0 },
+ { PIPE_FORMAT_I16_FLOAT, PIPE_FORMAT_L16A16_FLOAT,
+ PIPE_FORMAT_I32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_L32A32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 }
+ },
+ {
+ { GL_LUMINANCE16F_ARB, 0 },
+ { PIPE_FORMAT_L16_FLOAT, PIPE_FORMAT_L16A16_FLOAT,
+ PIPE_FORMAT_L32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_L32A32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 }
+ },
+ {
+ { GL_R16F, 0 },
+ { PIPE_FORMAT_R16_FLOAT, PIPE_FORMAT_R16G16_FLOAT,
+ PIPE_FORMAT_R32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_R32G32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 }
+ },
+ {
+ { GL_RG16F, 0 },
+ { PIPE_FORMAT_R16G16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_R32G32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 }
+ },
+
+ /* 32-bit float formats */
+ {
+ { GL_RGBA32F_ARB, 0 },
+ { PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 }
+ },
+ {
+ { GL_RGB32F_ARB, 0 },
+ { PIPE_FORMAT_R32G32B32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT, 0 }
+ },
+ {
+ { GL_LUMINANCE_ALPHA32F_ARB, 0 },
+ { PIPE_FORMAT_L32A32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_FORMAT_L16A16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 }
+ },
+ {
+ { GL_ALPHA32F_ARB, 0 },
+ { PIPE_FORMAT_A32_FLOAT, PIPE_FORMAT_L32A32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_A16_FLOAT,
+ PIPE_FORMAT_L16A16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 }
+ },
+ {
+ { GL_INTENSITY32F_ARB, 0 },
+ { PIPE_FORMAT_I32_FLOAT, PIPE_FORMAT_L32A32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_I16_FLOAT,
+ PIPE_FORMAT_L16A16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 }
+ },
+ {
+ { GL_LUMINANCE32F_ARB, 0 },
+ { PIPE_FORMAT_L32_FLOAT, PIPE_FORMAT_L32A32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_L16_FLOAT,
+ PIPE_FORMAT_L16A16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 }
+ },
+ {
+ { GL_R32F, 0 },
+ { PIPE_FORMAT_R32_FLOAT, PIPE_FORMAT_R32G32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_R16_FLOAT,
+ PIPE_FORMAT_R16G16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 }
+ },
+ {
+ { GL_RG32F, 0 },
+ { PIPE_FORMAT_R32G32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_FORMAT_R16G16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 }
+ },
+
+ /* R, RG formats */
+ {
+ { GL_RED, GL_R8, 0 },
+ { PIPE_FORMAT_R8_UNORM, 0 }
+ },
+ {
+ { GL_RG, GL_RG8, 0 },
+ { PIPE_FORMAT_R8G8_UNORM, 0 }
+ },
+ {
+ { GL_R16, 0 },
+ { PIPE_FORMAT_R16_UNORM, 0 }
+ },
+ {
+ { GL_RG16, 0 },
+ { PIPE_FORMAT_R16G16_UNORM, 0 }
+ },
+
+ /* compressed R, RG formats */
+ {
+ { GL_COMPRESSED_RED, GL_COMPRESSED_RED_RGTC1, 0 },
+ { PIPE_FORMAT_RGTC1_UNORM, PIPE_FORMAT_R8_UNORM, 0 }
+ },
+ {
+ { GL_COMPRESSED_SIGNED_RED_RGTC1, 0 },
+ { PIPE_FORMAT_RGTC1_SNORM, 0 }
+ },
+ {
+ { GL_COMPRESSED_RG, GL_COMPRESSED_RG_RGTC2, 0 },
+ { PIPE_FORMAT_RGTC2_UNORM, PIPE_FORMAT_R8G8_UNORM, 0 }
+ },
+ {
+ { GL_COMPRESSED_SIGNED_RG_RGTC2, 0 },
+ { PIPE_FORMAT_RGTC2_SNORM, 0 }
+ },
+ {
+ { GL_COMPRESSED_LUMINANCE, GL_COMPRESSED_LUMINANCE_LATC1_EXT, 0 },
+ { PIPE_FORMAT_LATC1_UNORM, PIPE_FORMAT_L8_UNORM, 0 }
+ },
+ {
+ { GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT, 0 },
+ { PIPE_FORMAT_LATC1_SNORM, 0 }
+ },
+ {
+ { GL_COMPRESSED_LUMINANCE_ALPHA, GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT,
+ GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI, 0 },
+ { PIPE_FORMAT_LATC2_UNORM, PIPE_FORMAT_L8A8_UNORM, 0 }
+ },
+ {
+ { GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT, 0 },
+ { PIPE_FORMAT_LATC2_SNORM, 0 }
+ },
+
+ /* signed/unsigned integer formats.
+ * XXX Mesa only has formats for RGBA signed/unsigned integer formats.
+ * If/when new formats are added this code should be updated.
+ */
+ {
+ { GL_RED_INTEGER_EXT,
+ GL_GREEN_INTEGER_EXT,
+ GL_BLUE_INTEGER_EXT,
+ GL_ALPHA_INTEGER_EXT,
+ GL_RGB_INTEGER_EXT,
+ GL_RGBA_INTEGER_EXT,
+ GL_BGR_INTEGER_EXT,
+ GL_BGRA_INTEGER_EXT,
+ GL_LUMINANCE_INTEGER_EXT,
+ GL_LUMINANCE_ALPHA_INTEGER_EXT,
+ GL_RGBA8I_EXT,
+ GL_RGB8I_EXT,
+ GL_ALPHA8I_EXT,
+ GL_INTENSITY8I_EXT,
+ GL_LUMINANCE8I_EXT,
+ GL_LUMINANCE_ALPHA8I_EXT, 0 },
+ { PIPE_FORMAT_R8G8B8A8_SSCALED, 0 }
+ },
+ {
+ {
+ GL_RGBA16I_EXT,
+ GL_RGB16I_EXT,
+ GL_ALPHA16I_EXT,
+ GL_INTENSITY16I_EXT,
+ GL_LUMINANCE16I_EXT,
+ GL_LUMINANCE_ALPHA16I_EXT, 0 },
+ { PIPE_FORMAT_R16G16B16A16_SSCALED, 0 },
+ },
+ {
+ {
+ GL_RGBA32I_EXT,
+ GL_RGB32I_EXT,
+ GL_ALPHA32I_EXT,
+ GL_INTENSITY32I_EXT,
+ GL_LUMINANCE32I_EXT,
+ GL_LUMINANCE_ALPHA32I_EXT, 0 },
+ { PIPE_FORMAT_R32G32B32A32_SSCALED, 0 }
+ },
+ {
+ {
+ GL_RGBA8UI_EXT,
+ GL_RGB8UI_EXT,
+ GL_ALPHA8UI_EXT,
+ GL_INTENSITY8UI_EXT,
+ GL_LUMINANCE8UI_EXT,
+ GL_LUMINANCE_ALPHA8UI_EXT, 0 },
+ { PIPE_FORMAT_R8G8B8A8_USCALED, 0 }
+ },
+ {
+ {
+ GL_RGBA16UI_EXT,
+ GL_RGB16UI_EXT,
+ GL_ALPHA16UI_EXT,
+ GL_INTENSITY16UI_EXT,
+ GL_LUMINANCE16UI_EXT,
+ GL_LUMINANCE_ALPHA16UI_EXT, 0 },
+ { PIPE_FORMAT_R16G16B16A16_USCALED, 0 }
+ },
+ {
+ {
+ GL_RGBA32UI_EXT,
+ GL_RGB32UI_EXT,
+ GL_ALPHA32UI_EXT,
+ GL_INTENSITY32UI_EXT,
+ GL_LUMINANCE32UI_EXT,
+ GL_LUMINANCE_ALPHA32UI_EXT, 0 },
+ { PIPE_FORMAT_R32G32B32A32_USCALED, 0 }
+ },
+
+ /* signed normalized formats */
+ {
+ { GL_RED_SNORM, GL_R8_SNORM, 0 },
+ { PIPE_FORMAT_R8_SNORM, PIPE_FORMAT_R8G8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_R16_SNORM, 0 },
+ { PIPE_FORMAT_R16_SNORM,
+ PIPE_FORMAT_R16G16_SNORM,
+ PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_R8_SNORM,
+ PIPE_FORMAT_R8G8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_RG_SNORM, GL_RG8_SNORM, 0 },
+ { PIPE_FORMAT_R8G8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_RG16_SNORM, 0 },
+ { PIPE_FORMAT_R16G16_SNORM, PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_R8G8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_RGB_SNORM, GL_RGB8_SNORM, GL_RGBA_SNORM, GL_RGBA8_SNORM, 0 },
+ { PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_RGB16_SNORM, GL_RGBA16_SNORM, 0 },
+ { PIPE_FORMAT_R16G16B16A16_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_ALPHA_SNORM, GL_ALPHA8_SNORM, 0 },
+ { PIPE_FORMAT_A8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_ALPHA16_SNORM, 0 },
+ { PIPE_FORMAT_A16_SNORM, PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_A8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_LUMINANCE_SNORM, GL_LUMINANCE8_SNORM, 0 },
+ { PIPE_FORMAT_L8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_LUMINANCE16_SNORM, 0 },
+ { PIPE_FORMAT_L16_SNORM, PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_L8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_LUMINANCE_ALPHA_SNORM, GL_LUMINANCE8_ALPHA8_SNORM, 0 },
+ { PIPE_FORMAT_L8A8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_LUMINANCE16_ALPHA16_SNORM, 0 },
+ { PIPE_FORMAT_L16A16_SNORM, PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_L8A8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_INTENSITY_SNORM, GL_INTENSITY8_SNORM, 0 },
+ { PIPE_FORMAT_I8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_INTENSITY16_SNORM, 0 },
+ { PIPE_FORMAT_I16_SNORM, PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_I8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 }
+ },
+ {
+ { GL_RGB9_E5, 0 },
+ { PIPE_FORMAT_R9G9B9E5_FLOAT, 0 }
+ },
+ {
+ { GL_R11F_G11F_B10F, 0 },
+ { PIPE_FORMAT_R11G11B10_FLOAT, 0 }
+ }
+};
+
+
+/**
* Return first supported format from the given list.
*/
static enum pipe_format
find_supported_format(struct pipe_screen *screen,
const enum pipe_format formats[],
- uint num_formats,
enum pipe_texture_target target,
unsigned sample_count,
unsigned tex_usage)
{
uint i;
- for (i = 0; i < num_formats; i++) {
+ for (i = 0; formats[i]; i++) {
if (screen->is_format_supported(screen, formats[i], target,
sample_count, tex_usage)) {
return formats[i];
@@ -585,67 +1126,6 @@ find_supported_format(struct pipe_screen *screen,
/**
- * Find an RGBA format supported by the context/winsys.
- */
-static enum pipe_format
-default_rgba_format(struct pipe_screen *screen,
- enum pipe_texture_target target,
- unsigned sample_count,
- unsigned tex_usage)
-{
- static const enum pipe_format colorFormats[] = {
- PIPE_FORMAT_B8G8R8A8_UNORM,
- PIPE_FORMAT_A8R8G8B8_UNORM,
- PIPE_FORMAT_A8B8G8R8_UNORM,
- PIPE_FORMAT_B5G6R5_UNORM
- };
- return find_supported_format(screen, colorFormats, Elements(colorFormats),
- target, sample_count, tex_usage);
-}
-
-
-/**
- * Find an RGB format supported by the context/winsys.
- */
-static enum pipe_format
-default_rgb_format(struct pipe_screen *screen,
- enum pipe_texture_target target,
- unsigned sample_count,
- unsigned tex_usage)
-{
- static const enum pipe_format colorFormats[] = {
- PIPE_FORMAT_B8G8R8X8_UNORM,
- PIPE_FORMAT_X8R8G8B8_UNORM,
- PIPE_FORMAT_X8B8G8R8_UNORM,
- PIPE_FORMAT_B8G8R8A8_UNORM,
- PIPE_FORMAT_A8R8G8B8_UNORM,
- PIPE_FORMAT_A8B8G8R8_UNORM,
- PIPE_FORMAT_B5G6R5_UNORM
- };
- return find_supported_format(screen, colorFormats, Elements(colorFormats),
- target, sample_count, tex_usage);
-}
-
-/**
- * Find an sRGBA format supported by the context/winsys.
- */
-static enum pipe_format
-default_srgba_format(struct pipe_screen *screen,
- enum pipe_texture_target target,
- unsigned sample_count,
- unsigned tex_usage)
-{
- static const enum pipe_format colorFormats[] = {
- PIPE_FORMAT_B8G8R8A8_SRGB,
- PIPE_FORMAT_A8R8G8B8_SRGB,
- PIPE_FORMAT_A8B8G8R8_SRGB,
- };
- return find_supported_format(screen, colorFormats, Elements(colorFormats),
- target, sample_count, tex_usage);
-}
-
-
-/**
* Given an OpenGL internalFormat value for a texture or surface, return
* the best matching PIPE_FORMAT_x, or PIPE_FORMAT_NONE if there's no match.
* This is called during glTexImage2D, for example.
@@ -663,853 +1143,31 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
enum pipe_texture_target target, unsigned sample_count,
unsigned bindings)
{
+ GET_CURRENT_CONTEXT(ctx); /* XXX this should be a function parameter */
+ int i, j;
- switch (internalFormat) {
- case GL_RGB10:
- case GL_RGB10_A2:
- if (screen->is_format_supported( screen, PIPE_FORMAT_B10G10R10A2_UNORM,
- target, sample_count, bindings))
- return PIPE_FORMAT_B10G10R10A2_UNORM;
- /* Pass through. */
- case 4:
- case GL_RGBA:
- case GL_RGBA8:
- return default_rgba_format( screen, target, sample_count, bindings);
-
- case GL_BGRA:
- if (screen->is_format_supported( screen, PIPE_FORMAT_B8G8R8A8_UNORM,
- target, sample_count, bindings))
- return PIPE_FORMAT_B8G8R8A8_UNORM;
- return default_rgba_format( screen, target, sample_count, bindings);
-
- case 3:
- case GL_RGB:
- case GL_RGB8:
- return default_rgb_format( screen, target, sample_count, bindings);
-
- case GL_RGB12:
- case GL_RGB16:
- case GL_RGBA12:
- case GL_RGBA16:
- if (screen->is_format_supported( screen, PIPE_FORMAT_R16G16B16A16_UNORM,
- target, sample_count, bindings))
- return PIPE_FORMAT_R16G16B16A16_UNORM;
- return default_rgba_format( screen, target, sample_count, bindings);
-
- case GL_RGBA4:
- case GL_RGBA2:
- if (screen->is_format_supported( screen, PIPE_FORMAT_B4G4R4A4_UNORM,
- target, sample_count, bindings))
- return PIPE_FORMAT_B4G4R4A4_UNORM;
- return default_rgba_format( screen, target, sample_count, bindings);
-
- case GL_RGB5_A1:
- if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM,
- target, sample_count, bindings))
- return PIPE_FORMAT_B5G5R5A1_UNORM;
- return default_rgba_format( screen, target, sample_count, bindings);
-
- case GL_R3_G3_B2:
- if (screen->is_format_supported( screen, PIPE_FORMAT_B2G3R3_UNORM,
- target, sample_count, bindings))
- return PIPE_FORMAT_B2G3R3_UNORM;
- /* Pass through. */
- case GL_RGB5:
- case GL_RGB4:
- if (screen->is_format_supported( screen, PIPE_FORMAT_B5G6R5_UNORM,
- target, sample_count, bindings))
- return PIPE_FORMAT_B5G6R5_UNORM;
- if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM,
- target, sample_count, bindings))
- return PIPE_FORMAT_B5G5R5A1_UNORM;
- return default_rgba_format( screen, target, sample_count, bindings);
-
- case GL_ALPHA12:
- case GL_ALPHA16:
- if (screen->is_format_supported( screen, PIPE_FORMAT_A16_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_A16_UNORM;
- /* Pass through. */
- case GL_ALPHA:
- case GL_ALPHA4:
- case GL_ALPHA8:
- case GL_COMPRESSED_ALPHA:
- if (screen->is_format_supported( screen, PIPE_FORMAT_A8_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_A8_UNORM;
- return default_rgba_format( screen, target, sample_count, bindings);
-
- case GL_LUMINANCE12:
- case GL_LUMINANCE16:
- if (screen->is_format_supported( screen, PIPE_FORMAT_L16_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_L16_UNORM;
- /* Pass through. */
- case 1:
- case GL_LUMINANCE:
- case GL_LUMINANCE4:
- case GL_LUMINANCE8:
- if (screen->is_format_supported( screen, PIPE_FORMAT_L8_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_L8_UNORM;
- return default_rgba_format( screen, target, sample_count, bindings);
-
- case GL_LUMINANCE12_ALPHA4:
- case GL_LUMINANCE12_ALPHA12:
- case GL_LUMINANCE16_ALPHA16:
- if (screen->is_format_supported( screen, PIPE_FORMAT_L16A16_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_L16A16_UNORM;
- /* Pass through. */
- case 2:
- case GL_LUMINANCE_ALPHA:
- case GL_LUMINANCE6_ALPHA2:
- case GL_LUMINANCE8_ALPHA8:
- if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_L8A8_UNORM;
- return default_rgba_format( screen, target, sample_count, bindings);
-
- case GL_LUMINANCE4_ALPHA4:
- if (screen->is_format_supported( screen, PIPE_FORMAT_L4A4_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_L4A4_UNORM;
- if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_L8A8_UNORM;
- return default_rgba_format( screen, target, sample_count, bindings);
-
- case GL_INTENSITY12:
- case GL_INTENSITY16:
- if (screen->is_format_supported( screen, PIPE_FORMAT_I16_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_I16_UNORM;
- /* Pass through. */
- case GL_INTENSITY:
- case GL_INTENSITY4:
- case GL_INTENSITY8:
- case GL_COMPRESSED_INTENSITY:
- if (screen->is_format_supported( screen, PIPE_FORMAT_I8_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_I8_UNORM;
- return default_rgba_format( screen, target, sample_count, bindings);
-
- case GL_YCBCR_MESA:
- if (screen->is_format_supported(screen, PIPE_FORMAT_UYVY, target,
- sample_count, bindings)) {
- return PIPE_FORMAT_UYVY;
- }
- if (screen->is_format_supported(screen, PIPE_FORMAT_YUYV, target,
- sample_count, bindings)) {
- return PIPE_FORMAT_YUYV;
- }
- return PIPE_FORMAT_NONE;
-
- case GL_COMPRESSED_RGB:
- /* can only sample from compressed formats */
- if (bindings & ~PIPE_BIND_SAMPLER_VIEW)
- return PIPE_FORMAT_NONE;
- else if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGB,
- target, sample_count, bindings))
- return PIPE_FORMAT_DXT1_RGB;
- else
- return default_rgb_format(screen, target, sample_count, bindings);
-
- case GL_COMPRESSED_RGBA:
- /* can only sample from compressed formats */
- if (bindings & ~PIPE_BIND_SAMPLER_VIEW)
- return PIPE_FORMAT_NONE;
- else if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_RGBA,
- target, sample_count, bindings))
- return PIPE_FORMAT_DXT3_RGBA;
- else
- return default_rgba_format(screen, target, sample_count, bindings);
-
- case GL_RGB_S3TC:
- case GL_RGB4_S3TC:
- case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGB,
- target, sample_count, bindings))
- return PIPE_FORMAT_DXT1_RGB;
- else
- return PIPE_FORMAT_NONE;
-
- case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGBA,
- target, sample_count, bindings))
- return PIPE_FORMAT_DXT1_RGBA;
- else
- return PIPE_FORMAT_NONE;
-
- case GL_RGBA_S3TC:
- case GL_RGBA4_S3TC:
- case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_RGBA,
- target, sample_count, bindings))
- return PIPE_FORMAT_DXT3_RGBA;
- else
- return PIPE_FORMAT_NONE;
-
- case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA,
- target, sample_count, bindings))
- return PIPE_FORMAT_DXT5_RGBA;
- else
- return PIPE_FORMAT_NONE;
-
-#if 0
- case GL_COMPRESSED_RGB_FXT1_3DFX:
- return PIPE_FORMAT_RGB_FXT1;
- case GL_COMPRESSED_RGBA_FXT1_3DFX:
- return PIPE_FORMAT_RGB_FXT1;
-#endif
-
- case GL_DEPTH_COMPONENT16:
- if (screen->is_format_supported(screen, PIPE_FORMAT_Z16_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_Z16_UNORM;
- /* fall-through */
- case GL_DEPTH_COMPONENT24:
- if (screen->is_format_supported(screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED,
- target, sample_count, bindings))
- return PIPE_FORMAT_Z24_UNORM_S8_USCALED;
- if (screen->is_format_supported(screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM,
- target, sample_count, bindings))
- return PIPE_FORMAT_S8_USCALED_Z24_UNORM;
- /* fall-through */
- case GL_DEPTH_COMPONENT32:
- if (screen->is_format_supported(screen, PIPE_FORMAT_Z32_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_Z32_UNORM;
- /* fall-through */
- case GL_DEPTH_COMPONENT:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_Z32_UNORM,
- PIPE_FORMAT_Z24_UNORM_S8_USCALED,
- PIPE_FORMAT_S8_USCALED_Z24_UNORM,
- PIPE_FORMAT_Z16_UNORM
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_STENCIL_INDEX:
- case GL_STENCIL_INDEX1_EXT:
- case GL_STENCIL_INDEX4_EXT:
- case GL_STENCIL_INDEX8_EXT:
- case GL_STENCIL_INDEX16_EXT:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_S8_USCALED,
- PIPE_FORMAT_Z24_UNORM_S8_USCALED,
- PIPE_FORMAT_S8_USCALED_Z24_UNORM
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_DEPTH_STENCIL_EXT:
- case GL_DEPTH24_STENCIL8_EXT:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_Z24_UNORM_S8_USCALED,
- PIPE_FORMAT_S8_USCALED_Z24_UNORM
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_SRGB_EXT:
- case GL_SRGB8_EXT:
- case GL_SRGB_ALPHA_EXT:
- case GL_SRGB8_ALPHA8_EXT:
- return default_srgba_format( screen, target, sample_count, bindings);
-
- case GL_COMPRESSED_SRGB_EXT:
- case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_SRGB, target,
- sample_count, bindings))
- return PIPE_FORMAT_DXT1_SRGB;
- return default_srgba_format( screen, target, sample_count, bindings);
-
- case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
- return PIPE_FORMAT_DXT1_SRGBA;
-
- case GL_COMPRESSED_SRGB_ALPHA_EXT:
- case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_SRGBA, target,
- sample_count, bindings))
- return PIPE_FORMAT_DXT3_SRGBA;
- return default_srgba_format( screen, target, sample_count, bindings);
-
- case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
- return PIPE_FORMAT_DXT5_SRGBA;
-
- case GL_SLUMINANCE_ALPHA_EXT:
- case GL_SLUMINANCE8_ALPHA8_EXT:
- case GL_COMPRESSED_SLUMINANCE_EXT:
- case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_L8A8_SRGB, target,
- sample_count, bindings))
- return PIPE_FORMAT_L8A8_SRGB;
- return default_srgba_format( screen, target, sample_count, bindings);
-
- case GL_SLUMINANCE_EXT:
- case GL_SLUMINANCE8_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_L8_SRGB, target,
- sample_count, bindings))
- return PIPE_FORMAT_L8_SRGB;
- return default_srgba_format( screen, target, sample_count, bindings);
-
- /* prefer formats in order of data size, choosing 16-bit ones if equal sized */
- case GL_RGBA16F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R16G16B16A16_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_RGB16F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R16G16B16_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT,
- PIPE_FORMAT_R32G32B32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_LUMINANCE_ALPHA16F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_L16A16_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT,
- PIPE_FORMAT_L32A32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_ALPHA16F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_A16_FLOAT,
- PIPE_FORMAT_L16A16_FLOAT,
- PIPE_FORMAT_A32_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT,
- PIPE_FORMAT_L32A32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_INTENSITY16F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_I16_FLOAT,
- PIPE_FORMAT_L16A16_FLOAT,
- PIPE_FORMAT_I32_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT,
- PIPE_FORMAT_L32A32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_LUMINANCE16F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_L16_FLOAT,
- PIPE_FORMAT_L16A16_FLOAT,
- PIPE_FORMAT_L32_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT,
- PIPE_FORMAT_L32A32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_R16F:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R16_FLOAT,
- PIPE_FORMAT_R16G16_FLOAT,
- PIPE_FORMAT_R32_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT,
- PIPE_FORMAT_R32G32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_RG16F:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R16G16_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT,
- PIPE_FORMAT_R32G32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- /* try a 32-bit format if available, otherwise fallback to a 16-bit one */
- case GL_RGBA32F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R32G32B32A32_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_RGB32F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R32G32B32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_LUMINANCE_ALPHA32F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_L32A32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT,
- PIPE_FORMAT_L16A16_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_ALPHA32F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_A32_FLOAT,
- PIPE_FORMAT_L32A32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT,
- PIPE_FORMAT_A16_FLOAT,
- PIPE_FORMAT_L16A16_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_INTENSITY32F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_I32_FLOAT,
- PIPE_FORMAT_L32A32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT,
- PIPE_FORMAT_I16_FLOAT,
- PIPE_FORMAT_L16A16_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_LUMINANCE32F_ARB:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_L32_FLOAT,
- PIPE_FORMAT_L32A32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT,
- PIPE_FORMAT_L16_FLOAT,
- PIPE_FORMAT_L16A16_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_R32F:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R32_FLOAT,
- PIPE_FORMAT_R32G32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT,
- PIPE_FORMAT_R16_FLOAT,
- PIPE_FORMAT_R16G16_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
- case GL_RG32F:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R32G32_FLOAT,
- PIPE_FORMAT_R32G32B32A32_FLOAT,
- PIPE_FORMAT_R16G16_FLOAT,
- PIPE_FORMAT_R16G16B16A16_FLOAT
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_RED:
- case GL_R8:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R8_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_R8_UNORM;
- return PIPE_FORMAT_NONE;
- case GL_RG:
- case GL_RG8:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_R8G8_UNORM;
- return PIPE_FORMAT_NONE;
-
- case GL_R16:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R16_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_R16_UNORM;
- return PIPE_FORMAT_NONE;
-
- case GL_RG16:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_R16G16_UNORM;
- return PIPE_FORMAT_NONE;
-
- case GL_COMPRESSED_RED:
- case GL_COMPRESSED_RED_RGTC1:
- if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC1_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_RGTC1_UNORM;
- if (screen->is_format_supported(screen, PIPE_FORMAT_R8_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_R8_UNORM;
- return PIPE_FORMAT_NONE;
-
- case GL_COMPRESSED_SIGNED_RED_RGTC1:
- if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC1_SNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_RGTC1_SNORM;
- return PIPE_FORMAT_NONE;
-
- case GL_COMPRESSED_RG:
- case GL_COMPRESSED_RG_RGTC2:
- if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC2_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_RGTC2_UNORM;
- if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_R8G8_UNORM;
- return PIPE_FORMAT_NONE;
-
- case GL_COMPRESSED_SIGNED_RG_RGTC2:
- if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC2_SNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_RGTC2_SNORM;
- return PIPE_FORMAT_NONE;
-
- case GL_COMPRESSED_LUMINANCE:
- case GL_COMPRESSED_LUMINANCE_LATC1_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_LATC1_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_LATC1_UNORM;
- if (screen->is_format_supported(screen, PIPE_FORMAT_L8_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_L8_UNORM;
- return PIPE_FORMAT_NONE;
-
- case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_LATC1_SNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_LATC1_SNORM;
- return PIPE_FORMAT_NONE;
-
- case GL_COMPRESSED_LUMINANCE_ALPHA:
- case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT:
- case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI:
- if (screen->is_format_supported(screen, PIPE_FORMAT_LATC2_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_LATC2_UNORM;
- if (screen->is_format_supported(screen, PIPE_FORMAT_L8A8_UNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_L8A8_UNORM;
- return PIPE_FORMAT_NONE;
-
- case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_LATC2_SNORM, target,
- sample_count, bindings))
- return PIPE_FORMAT_LATC2_SNORM;
- return PIPE_FORMAT_NONE;
-
- /* signed/unsigned integer formats.
- * XXX Mesa only has formats for RGBA signed/unsigned integer formats.
- * If/when new formats are added this code should be updated.
- */
- case GL_RED_INTEGER_EXT:
- case GL_GREEN_INTEGER_EXT:
- case GL_BLUE_INTEGER_EXT:
- case GL_ALPHA_INTEGER_EXT:
- case GL_RGB_INTEGER_EXT:
- case GL_RGBA_INTEGER_EXT:
- case GL_BGR_INTEGER_EXT:
- case GL_BGRA_INTEGER_EXT:
- case GL_LUMINANCE_INTEGER_EXT:
- case GL_LUMINANCE_ALPHA_INTEGER_EXT:
- /* fall-through */
- case GL_RGBA8I_EXT:
- case GL_RGB8I_EXT:
- case GL_ALPHA8I_EXT:
- case GL_INTENSITY8I_EXT:
- case GL_LUMINANCE8I_EXT:
- case GL_LUMINANCE_ALPHA8I_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SSCALED,
- target,
- sample_count, bindings))
- return PIPE_FORMAT_R8G8B8A8_SSCALED;
- return PIPE_FORMAT_NONE;
- case GL_RGBA16I_EXT:
- case GL_RGB16I_EXT:
- case GL_ALPHA16I_EXT:
- case GL_INTENSITY16I_EXT:
- case GL_LUMINANCE16I_EXT:
- case GL_LUMINANCE_ALPHA16I_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_SSCALED,
- target,
- sample_count, bindings))
- return PIPE_FORMAT_R16G16B16A16_SSCALED;
- return PIPE_FORMAT_NONE;
- case GL_RGBA32I_EXT:
- case GL_RGB32I_EXT:
- case GL_ALPHA32I_EXT:
- case GL_INTENSITY32I_EXT:
- case GL_LUMINANCE32I_EXT:
- case GL_LUMINANCE_ALPHA32I_EXT:
- /* xxx */
- if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_SSCALED,
- target,
- sample_count, bindings))
- return PIPE_FORMAT_R32G32B32A32_SSCALED;
- return PIPE_FORMAT_NONE;
-
- case GL_RGBA8UI_EXT:
- case GL_RGB8UI_EXT:
- case GL_ALPHA8UI_EXT:
- case GL_INTENSITY8UI_EXT:
- case GL_LUMINANCE8UI_EXT:
- case GL_LUMINANCE_ALPHA8UI_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_USCALED,
- target,
- sample_count, bindings))
- return PIPE_FORMAT_R8G8B8A8_USCALED;
- return PIPE_FORMAT_NONE;
-
- case GL_RGBA16UI_EXT:
- case GL_RGB16UI_EXT:
- case GL_ALPHA16UI_EXT:
- case GL_INTENSITY16UI_EXT:
- case GL_LUMINANCE16UI_EXT:
- case GL_LUMINANCE_ALPHA16UI_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_USCALED,
- target,
- sample_count, bindings))
- return PIPE_FORMAT_R16G16B16A16_USCALED;
- return PIPE_FORMAT_NONE;
-
- case GL_RGBA32UI_EXT:
- case GL_RGB32UI_EXT:
- case GL_ALPHA32UI_EXT:
- case GL_INTENSITY32UI_EXT:
- case GL_LUMINANCE32UI_EXT:
- case GL_LUMINANCE_ALPHA32UI_EXT:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_USCALED,
- target,
- sample_count, bindings))
- return PIPE_FORMAT_R32G32B32A32_USCALED;
- return PIPE_FORMAT_NONE;
-
- /* signed normalized formats */
- case GL_RED_SNORM:
- case GL_R8_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R8_SNORM,
- PIPE_FORMAT_R8G8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_R16_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R16_SNORM,
- PIPE_FORMAT_R16G16_SNORM,
- PIPE_FORMAT_R16G16B16A16_SNORM,
- PIPE_FORMAT_R8_SNORM,
- PIPE_FORMAT_R8G8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_RG_SNORM:
- case GL_RG8_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R8G8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_RG16_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R16G16_SNORM,
- PIPE_FORMAT_R16G16B16A16_SNORM,
- PIPE_FORMAT_R8G8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_RGB_SNORM:
- case GL_RGB8_SNORM:
- case GL_RGBA_SNORM:
- case GL_RGBA8_SNORM:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SNORM,
- target,
- sample_count, bindings))
- return PIPE_FORMAT_R8G8B8A8_SNORM;
- return PIPE_FORMAT_NONE;
-
- case GL_RGB16_SNORM:
- case GL_RGBA16_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_R16G16B16A16_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
-
- case GL_ALPHA_SNORM:
- case GL_ALPHA8_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_A8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_ALPHA16_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_A16_SNORM,
- PIPE_FORMAT_R16G16B16A16_SNORM,
- PIPE_FORMAT_A8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_LUMINANCE_SNORM:
- case GL_LUMINANCE8_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_L8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_LUMINANCE16_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_L16_SNORM,
- PIPE_FORMAT_R16G16B16A16_SNORM,
- PIPE_FORMAT_L8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_LUMINANCE_ALPHA_SNORM:
- case GL_LUMINANCE8_ALPHA8_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_L8A8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_LUMINANCE16_ALPHA16_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_L16A16_SNORM,
- PIPE_FORMAT_R16G16B16A16_SNORM,
- PIPE_FORMAT_L8A8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_INTENSITY_SNORM:
- case GL_INTENSITY8_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_I8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_INTENSITY16_SNORM:
- {
- static const enum pipe_format formats[] = {
- PIPE_FORMAT_I16_SNORM,
- PIPE_FORMAT_R16G16B16A16_SNORM,
- PIPE_FORMAT_I8_SNORM,
- PIPE_FORMAT_R8G8B8A8_SNORM,
- };
- return find_supported_format(screen, formats, Elements(formats),
- target, sample_count, bindings);
- }
-
- case GL_RGB9_E5:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R9G9B9E5_FLOAT, target,
- sample_count, bindings)) {
- return PIPE_FORMAT_R9G9B9E5_FLOAT;
- }
+ /* can't render to compressed formats at this time */
+ if (_mesa_is_compressed_format(ctx, internalFormat)
+ && (bindings & ~PIPE_BIND_SAMPLER_VIEW)) {
return PIPE_FORMAT_NONE;
+ }
- case GL_R11F_G11F_B10F:
- if (screen->is_format_supported(screen, PIPE_FORMAT_R11G11B10_FLOAT, target,
- sample_count, bindings)) {
- return PIPE_FORMAT_R11G11B10_FLOAT;
+ /* search table for internalFormat */
+ for (i = 0; i < Elements(format_map); i++) {
+ const struct format_mapping *mapping = &format_map[i];
+ for (j = 0; mapping->glFormats[j]; j++) {
+ if (mapping->glFormats[j] == internalFormat) {
+ /* Found the desired internal format. Find first pipe format
+ * which is supported by the driver.
+ */
+ return find_supported_format(screen, mapping->pipeFormats,
+ target, sample_count, bindings);
+ }
}
- return PIPE_FORMAT_NONE;
-
- default:
- return PIPE_FORMAT_NONE;
}
+
+ _mesa_problem(NULL, "unhandled format!\n");
+ return PIPE_FORMAT_NONE;
}
diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c
index aea69c1b434..b0911294a7c 100644
--- a/src/mesa/state_tracker/st_gen_mipmap.c
+++ b/src/mesa/state_tracker/st_gen_mipmap.c
@@ -91,9 +91,18 @@ st_render_mipmap(struct st_context *st,
return FALSE;
}
+ /* Disable conditional rendering. */
+ if (st->render_condition) {
+ pipe->render_condition(pipe, NULL, 0);
+ }
+
util_gen_mipmap(st->gen_mipmap, psv, face, baseLevel, lastLevel,
PIPE_TEX_FILTER_LINEAR);
+ if (st->render_condition) {
+ pipe->render_condition(pipe, st->render_condition, st->condition_mode);
+ }
+
return TRUE;
}
@@ -229,12 +238,12 @@ fallback_generate_mipmap(struct gl_context *ctx, GLenum target,
ubyte *dstData;
int srcStride, dstStride;
- srcTrans = pipe_get_transfer(st_context(ctx)->pipe, pt, srcLevel,
+ srcTrans = pipe_get_transfer(pipe, pt, srcLevel,
face,
PIPE_TRANSFER_READ, 0, 0,
srcWidth, srcHeight);
- dstTrans = pipe_get_transfer(st_context(ctx)->pipe, pt, dstLevel,
+ dstTrans = pipe_get_transfer(pipe, pt, dstLevel,
face,
PIPE_TRANSFER_WRITE, 0, 0,
dstWidth, dstHeight);
diff --git a/src/mesa/swrast/s_blit.c b/src/mesa/swrast/s_blit.c
index d943e09b29f..3516a41bf41 100644
--- a/src/mesa/swrast/s_blit.c
+++ b/src/mesa/swrast/s_blit.c
@@ -568,9 +568,6 @@ _swrast_BlitFramebuffer(struct gl_context *ctx,
};
GLint i;
- if (!_mesa_check_conditional_render(ctx))
- return; /* don't clear */
-
if (!ctx->DrawBuffer->_NumColorDrawBuffers)
return;
diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c
index a49cd5017a3..5e9b2798c43 100644
--- a/src/mesa/vbo/vbo_exec_array.c
+++ b/src/mesa/vbo/vbo_exec_array.c
@@ -1045,13 +1045,37 @@ vbo_exec_DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type,
_mesa_lookup_enum_by_nr(type), indices, numInstances);
if (!_mesa_validate_DrawElementsInstanced(ctx, mode, count, type, indices,
- numInstances))
+ numInstances, 0))
return;
vbo_validated_drawrangeelements(ctx, mode, GL_FALSE, ~0, ~0,
count, type, indices, 0, numInstances);
}
+/**
+ * Called by glDrawElementsInstancedBaseVertex() in immediate mode.
+ */
+static void GLAPIENTRY
+vbo_exec_DrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type,
+ const GLvoid *indices, GLsizei numInstances,
+ GLint basevertex)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ if (MESA_VERBOSE & VERBOSE_DRAW)
+ _mesa_debug(ctx, "glDrawElementsInstancedBaseVertex(%s, %d, %s, %p, %d; %d)\n",
+ _mesa_lookup_enum_by_nr(mode), count,
+ _mesa_lookup_enum_by_nr(type), indices,
+ numInstances, basevertex);
+
+ if (!_mesa_validate_DrawElementsInstanced(ctx, mode, count, type, indices,
+ numInstances, basevertex))
+ return;
+
+ vbo_validated_drawrangeelements(ctx, mode, GL_FALSE, ~0, ~0,
+ count, type, indices, basevertex, numInstances);
+}
+
/**
* Inner support for both _mesa_MultiDrawElements() and
@@ -1260,6 +1284,7 @@ vbo_exec_array_init( struct vbo_exec_context *exec )
exec->vtxfmt.MultiDrawElementsBaseVertex = vbo_exec_MultiDrawElementsBaseVertex;
exec->vtxfmt.DrawArraysInstanced = vbo_exec_DrawArraysInstanced;
exec->vtxfmt.DrawElementsInstanced = vbo_exec_DrawElementsInstanced;
+ exec->vtxfmt.DrawElementsInstancedBaseVertex = vbo_exec_DrawElementsInstancedBaseVertex;
}