--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_NV_half_float" number="283">
+
+ <function name="Vertex2hNV" exec="dynamic" deprecated="3.1">
+ <param name="x" type="GLhalfNV"/>
+ <param name="y" type="GLhalfNV"/>
+ </function>
+
+ <function name="Vertex2hvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="Vertex3hNV" exec="dynamic" deprecated="3.1">
+ <param name="x" type="GLhalfNV"/>
+ <param name="y" type="GLhalfNV"/>
+ <param name="z" type="GLhalfNV"/>
+ </function>
+
+ <function name="Vertex3hvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="Vertex4hNV" exec="dynamic" deprecated="3.1">
+ <param name="x" type="GLhalfNV"/>
+ <param name="y" type="GLhalfNV"/>
+ <param name="z" type="GLhalfNV"/>
+ <param name="w" type="GLhalfNV"/>
+ </function>
+
+ <function name="Vertex4hvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="Normal3hNV" exec="dynamic" deprecated="3.1">
+ <param name="nx" type="GLhalfNV"/>
+ <param name="ny" type="GLhalfNV"/>
+ <param name="nz" type="GLhalfNV"/>
+ </function>
+
+ <function name="Normal3hvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *" count="3"/>
+ </function>
+
+ <function name="Color3hNV" exec="dynamic" deprecated="3.1">
+ <param name="red" type="GLhalfNV"/>
+ <param name="green" type="GLhalfNV"/>
+ <param name="blue" type="GLhalfNV"/>
+ </function>
+
+ <function name="Color3hvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *" count="3"/>
+ </function>
+
+ <function name="Color4hNV" exec="dynamic" deprecated="3.1">
+ <param name="red" type="GLhalfNV"/>
+ <param name="green" type="GLhalfNV"/>
+ <param name="blue" type="GLhalfNV"/>
+ <param name="alpha" type="GLhalfNV"/>
+ </function>
+
+ <function name="Color4hvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *" count="4"/>
+ </function>
+
+ <function name="TexCoord1hNV" exec="dynamic" deprecated="3.1">
+ <param name="s" type="GLhalfNV"/>
+ </function>
+
+ <function name="TexCoord1hvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="TexCoord2hNV" exec="dynamic" deprecated="3.1">
+ <param name="s" type="GLhalfNV"/>
+ <param name="t" type="GLhalfNV"/>
+ </function>
+
+ <function name="TexCoord2hvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="TexCoord3hNV" exec="dynamic" deprecated="3.1">
+ <param name="s" type="GLhalfNV"/>
+ <param name="t" type="GLhalfNV"/>
+ <param name="r" type="GLhalfNV"/>
+ </function>
+
+ <function name="TexCoord3hvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="TexCoord4hNV" exec="dynamic" deprecated="3.1">
+ <param name="s" type="GLhalfNV"/>
+ <param name="t" type="GLhalfNV"/>
+ <param name="r" type="GLhalfNV"/>
+ <param name="q" type="GLhalfNV"/>
+ </function>
+
+ <function name="TexCoord4hvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="MultiTexCoord1hNV" exec="dynamic" deprecated="3.1">
+ <param name="target" type="GLenum"/>
+ <param name="s" type="GLhalfNV"/>
+ </function>
+
+ <function name="MultiTexCoord1hvNV" exec="dynamic" deprecated="3.1">
+ <param name="target" type="GLenum"/>
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="MultiTexCoord2hNV" exec="dynamic" deprecated="3.1">
+ <param name="target" type="GLenum"/>
+ <param name="s" type="GLhalfNV"/>
+ <param name="t" type="GLhalfNV"/>
+ </function>
+
+ <function name="MultiTexCoord2hvNV" exec="dynamic" deprecated="3.1">
+ <param name="target" type="GLenum"/>
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="MultiTexCoord3hNV" exec="dynamic" deprecated="3.1">
+ <param name="target" type="GLenum"/>
+ <param name="s" type="GLhalfNV"/>
+ <param name="t" type="GLhalfNV"/>
+ <param name="r" type="GLhalfNV"/>
+ </function>
+
+ <function name="MultiTexCoord3hvNV" exec="dynamic" deprecated="3.1">
+ <param name="target" type="GLenum"/>
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="MultiTexCoord4hNV" exec="dynamic" deprecated="3.1">
+ <param name="target" type="GLenum"/>
+ <param name="s" type="GLhalfNV"/>
+ <param name="t" type="GLhalfNV"/>
+ <param name="r" type="GLhalfNV"/>
+ <param name="q" type="GLhalfNV"/>
+ </function>
+
+ <function name="MultiTexCoord4hvNV" exec="dynamic" deprecated="3.1">
+ <param name="target" type="GLenum"/>
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="FogCoordhNV" exec="dynamic" deprecated="3.1">
+ <param name="x" type="GLhalfNV"/>
+ </function>
+
+ <function name="FogCoordhvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+ <function name="SecondaryColor3hNV" exec="dynamic" deprecated="3.1">
+ <param name="red" type="GLhalfNV"/>
+ <param name="green" type="GLhalfNV"/>
+ <param name="blue" type="GLhalfNV"/>
+ </function>
+
+ <function name="SecondaryColor3hvNV" exec="dynamic" deprecated="3.1">
+ <param name="v" type="const GLhalfNV *"/>
+ </function>
+
+</category>
+
+</OpenGLAPI>
<type name="double" size="8" float="true" glx_name="FLOAT64"/>
<type name="clampd" size="8" float="true" glx_name="FLOAT64"/>
+ <type name="halfNV" size="2" float="true" glx_name="FLOAT16"/>
<type name="float" size="4" float="true" glx_name="FLOAT32"/>
<type name="clampf" size="4" float="true" glx_name="FLOAT32"/>
<xi:include href="NV_viewport_swizzle.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+<xi:include href="NV_half_float.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="GL4x.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
</OpenGLAPI>
'GLubyte': 1,
'GLshort': 2,
'GLushort': 2,
+ 'GLhalfNV': 2,
'GLenum': 4,
'GLint': 4,
'GLuint': 4,
"ViewportSwizzleNV": 1608,
"AlphaToCoverageDitherControlNV": 1609,
"InternalBufferSubDataCopyMESA": 1610,
+ "Vertex2hNV": 1611,
+ "Vertex2hvNV": 1612,
+ "Vertex3hNV": 1613,
+ "Vertex3hvNV": 1614,
+ "Vertex4hNV": 1615,
+ "Vertex4hvNV": 1616,
+ "Normal3hNV": 1617,
+ "Normal3hvNV": 1618,
+ "Color3hNV": 1619,
+ "Color3hvNV": 1620,
+ "Color4hNV": 1621,
+ "Color4hvNV": 1622,
+ "TexCoord1hNV": 1623,
+ "TexCoord1hvNV": 1624,
+ "TexCoord2hNV": 1625,
+ "TexCoord2hvNV": 1626,
+ "TexCoord3hNV": 1627,
+ "TexCoord3hvNV": 1628,
+ "TexCoord4hNV": 1629,
+ "TexCoord4hvNV": 1630,
+ "MultiTexCoord1hNV": 1631,
+ "MultiTexCoord1hvNV": 1632,
+ "MultiTexCoord2hNV": 1633,
+ "MultiTexCoord2hvNV": 1634,
+ "MultiTexCoord3hNV": 1635,
+ "MultiTexCoord3hvNV": 1636,
+ "MultiTexCoord4hNV": 1637,
+ "MultiTexCoord4hvNV": 1638,
+ "FogCoordhNV": 1639,
+ "FogCoordhvNV": 1640,
+ "SecondaryColor3hNV": 1641,
+ "SecondaryColor3hvNV": 1642,
}
functions = [
void (GLAPIENTRYP VertexAttribL1ui64ARB)( GLuint index, GLuint64EXT x);
void (GLAPIENTRYP VertexAttribL1ui64vARB)( GLuint index, const GLuint64EXT *v);
+
+ /* GL_NV_half_float */
+ void (GLAPIENTRYP Vertex2hNV)( GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP Vertex2hvNV)( const GLhalfNV * );
+ void (GLAPIENTRYP Vertex3hNV)( GLhalfNV, GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP Vertex3hvNV)( const GLhalfNV * );
+ void (GLAPIENTRYP Vertex4hNV)( GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP Vertex4hvNV)( const GLhalfNV * );
+ void (GLAPIENTRYP Normal3hNV)( GLhalfNV, GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP Normal3hvNV)( const GLhalfNV * );
+ void (GLAPIENTRYP Color3hNV)( GLhalfNV, GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP Color3hvNV)( const GLhalfNV * );
+ void (GLAPIENTRYP Color4hNV)( GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP Color4hvNV)( const GLhalfNV * );
+ void (GLAPIENTRYP TexCoord1hNV)( GLhalfNV );
+ void (GLAPIENTRYP TexCoord1hvNV)( const GLhalfNV * );
+ void (GLAPIENTRYP TexCoord2hNV)( GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP TexCoord2hvNV)( const GLhalfNV * );
+ void (GLAPIENTRYP TexCoord3hNV)( GLhalfNV, GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP TexCoord3hvNV)( const GLhalfNV * );
+ void (GLAPIENTRYP TexCoord4hNV)( GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP TexCoord4hvNV)( const GLhalfNV * );
+ void (GLAPIENTRYP MultiTexCoord1hNV)( GLenum, GLhalfNV );
+ void (GLAPIENTRYP MultiTexCoord1hvNV)( GLenum, const GLhalfNV * );
+ void (GLAPIENTRYP MultiTexCoord2hNV)( GLenum, GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP MultiTexCoord2hvNV)( GLenum, const GLhalfNV * );
+ void (GLAPIENTRYP MultiTexCoord3hNV)( GLenum, GLhalfNV, GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP MultiTexCoord3hvNV)( GLenum, const GLhalfNV * );
+ void (GLAPIENTRYP MultiTexCoord4hNV)( GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP MultiTexCoord4hvNV)( GLenum, const GLhalfNV * );
+ void (GLAPIENTRYP FogCoordhNV)( GLhalfNV );
+ void (GLAPIENTRYP FogCoordhvNV)( const GLhalfNV * );
+ void (GLAPIENTRYP SecondaryColor3hNV)( GLhalfNV, GLhalfNV, GLhalfNV );
+ void (GLAPIENTRYP SecondaryColor3hvNV)( const GLhalfNV * );
+
} GLvertexformat;
EXT(NV_fill_rectangle , NV_fill_rectangle , GLL, GLC, x , x , 2015)
EXT(NV_fog_distance , NV_fog_distance , GLL, x , x , x , 2001)
EXT(NV_fragment_shader_interlock , ARB_fragment_shader_interlock , GLL, GLC, x , 31, 2015)
+EXT(NV_half_float , ARB_half_float_vertex , GLL, x, x , x, 2001)
EXT(NV_image_formats , ARB_shader_image_load_store , x , x , x , 31, 2014)
EXT(NV_light_max_exponent , dummy_true , GLL, x , x , x , 1999)
EXT(NV_packed_depth_stencil , dummy_true , GLL, GLC, x , x , 2000)
{ "glProgramLocalParameters4fvEXT", 10, -1 },
{ "glPrimitiveRestartNV", 10, -1 },
+ /* GL_NV_half_float */
+ { "glVertex2hNV", 13, -1 },
+ { "glVertex2hvNV", 13, -1 },
+ { "glVertex3hNV", 13, -1 },
+ { "glVertex3hvNV", 13, -1 },
+ { "glVertex4hNV", 13, -1 },
+ { "glVertex4hvNV", 13, -1 },
+ { "glNormal3hNV", 13, -1 },
+ { "glNormal3hvNV", 13, -1 },
+ { "glColor3hNV", 13, -1 },
+ { "glColor3hvNV", 13, -1 },
+ { "glColor4hNV", 13, -1 },
+ { "glColor4hvNV", 13, -1 },
+ { "glTexCoord1hNV", 13, -1 },
+ { "glTexCoord1hvNV", 13, -1 },
+ { "glTexCoord2hNV", 13, -1 },
+ { "glTexCoord2hvNV", 13, -1 },
+ { "glTexCoord3hNV", 13, -1 },
+ { "glTexCoord3hvNV", 13, -1 },
+ { "glTexCoord4hNV", 13, -1 },
+ { "glTexCoord4hvNV", 13, -1 },
+ { "glMultiTexCoord1hNV", 13, -1 },
+ { "glMultiTexCoord1hvNV", 13, -1 },
+ { "glMultiTexCoord2hNV", 13, -1 },
+ { "glMultiTexCoord2hvNV", 13, -1 },
+ { "glMultiTexCoord3hNV", 13, -1 },
+ { "glMultiTexCoord3hvNV", 13, -1 },
+ { "glMultiTexCoord4hNV", 13, -1 },
+ { "glMultiTexCoord4hvNV", 13, -1 },
+ { "glFogCoordhNV", 13, -1 },
+ { "glFogCoordhvNV", 13, -1 },
+ { "glSecondaryColor3hNV", 13, -1 },
+ { "glSecondaryColor3hvNV", 13, -1 },
+
{ NULL, 0, -1 }
};
SET_SecondaryColorP3ui(tab, vfmt->SecondaryColorP3ui);
SET_SecondaryColorP3uiv(tab, vfmt->SecondaryColorP3uiv);
+
+ /* GL_NV_half_float */
+ SET_Vertex2hNV(tab, vfmt->Vertex2hNV);
+ SET_Vertex2hvNV(tab, vfmt->Vertex2hvNV);
+ SET_Vertex3hNV(tab, vfmt->Vertex3hNV);
+ SET_Vertex3hvNV(tab, vfmt->Vertex3hvNV);
+ SET_Vertex4hNV(tab, vfmt->Vertex4hNV);
+ SET_Vertex4hvNV(tab, vfmt->Vertex4hvNV);
+ SET_Normal3hNV(tab, vfmt->Normal3hNV);
+ SET_Normal3hvNV(tab, vfmt->Normal3hvNV);
+ SET_Color3hNV(tab, vfmt->Color3hNV);
+ SET_Color3hvNV(tab, vfmt->Color4hvNV);
+ SET_Color4hNV(tab, vfmt->Color4hNV);
+ SET_Color4hvNV(tab, vfmt->Color3hvNV);
+ SET_TexCoord1hNV(tab, vfmt->TexCoord1hNV);
+ SET_TexCoord1hvNV(tab, vfmt->TexCoord1hvNV);
+ SET_TexCoord2hNV(tab, vfmt->TexCoord2hNV);
+ SET_TexCoord2hvNV(tab, vfmt->TexCoord2hvNV);
+ SET_TexCoord3hNV(tab, vfmt->TexCoord3hNV);
+ SET_TexCoord3hvNV(tab, vfmt->TexCoord3hvNV);
+ SET_TexCoord4hNV(tab, vfmt->TexCoord4hNV);
+ SET_TexCoord4hvNV(tab, vfmt->TexCoord4hvNV);
+ SET_MultiTexCoord1hNV(tab, vfmt->MultiTexCoord1hNV);
+ SET_MultiTexCoord1hvNV(tab, vfmt->MultiTexCoord1hvNV);
+ SET_MultiTexCoord2hNV(tab, vfmt->MultiTexCoord2hNV);
+ SET_MultiTexCoord2hvNV(tab, vfmt->MultiTexCoord2hvNV);
+ SET_MultiTexCoord3hNV(tab, vfmt->MultiTexCoord3hNV);
+ SET_MultiTexCoord3hvNV(tab, vfmt->MultiTexCoord3hvNV);
+ SET_MultiTexCoord4hNV(tab, vfmt->MultiTexCoord4hNV);
+ SET_MultiTexCoord4hvNV(tab, vfmt->MultiTexCoord4hvNV);
+ SET_FogCoordhNV(tab, vfmt->FogCoordhNV);
+ SET_FogCoordhvNV(tab, vfmt->FogCoordhvNV);
+ SET_SecondaryColor3hNV(tab, vfmt->SecondaryColor3hNV);
+ SET_SecondaryColor3hvNV(tab, vfmt->SecondaryColor3hvNV);
}
if (_mesa_is_desktop_gl(ctx)) {
#include "util/format_r11g11b10f.h"
#include "main/varray.h"
#include "vbo_util.h"
+#include "util/u_half.h"
/* ATTR */
#define ATTR4F( A, X, Y, Z, W ) ATTRF( A, 4, X, Y, Z, W )
+/* half */
+#define ATTR1HV( A, V ) ATTRF( A, 1, util_half_to_float((uint16_t)(V)[0]), \
+ 0, 0, 1 )
+#define ATTR2HV( A, V ) ATTRF( A, 2, util_half_to_float((uint16_t)(V)[0]), \
+ util_half_to_float((uint16_t)(V)[1]), 0, 1 )
+#define ATTR3HV( A, V ) ATTRF( A, 3, util_half_to_float((uint16_t)(V)[0]), \
+ util_half_to_float((uint16_t)(V)[1]), \
+ util_half_to_float((uint16_t)(V)[2]), 1 )
+#define ATTR4HV( A, V ) ATTRF( A, 4, util_half_to_float((uint16_t)(V)[0]), \
+ util_half_to_float((uint16_t)(V)[1]), \
+ util_half_to_float((uint16_t)(V)[2]), \
+ util_half_to_float((uint16_t)(V)[3]) )
+
+#define ATTR1H( A, X ) ATTRF( A, 1, util_half_to_float(X), 0, 0, 1 )
+#define ATTR2H( A, X, Y ) ATTRF( A, 2, util_half_to_float(X), \
+ util_half_to_float(Y), 0, 1 )
+#define ATTR3H( A, X, Y, Z ) ATTRF( A, 3, util_half_to_float(X), \
+ util_half_to_float(Y), \
+ util_half_to_float(Z), 1 )
+#define ATTR4H( A, X, Y, Z, W ) ATTRF( A, 4, util_half_to_float(X), \
+ util_half_to_float(Y), \
+ util_half_to_float(Z), \
+ util_half_to_float(W) )
+
+
/* int */
#define ATTR2IV( A, V ) ATTRI( A, 2, (V)[0], (V)[1], 0, 1 )
#define ATTR3IV( A, V ) ATTRI( A, 3, (V)[0], (V)[1], (V)[2], 1 )
ERROR(GL_INVALID_VALUE);
}
+/* GL_NV_half_float */
+static void GLAPIENTRY
+TAG(Vertex2hNV)(GLhalfNV x, GLhalfNV y)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR2H(VBO_ATTRIB_POS, x, y);
+}
+
+static void GLAPIENTRY
+TAG(Vertex2hvNV)(const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR2HV(VBO_ATTRIB_POS, v);
+}
+
+static void GLAPIENTRY
+TAG(Vertex3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3H(VBO_ATTRIB_POS, x, y, z);
+}
+
+static void GLAPIENTRY
+TAG(Vertex3hvNV)(const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3HV(VBO_ATTRIB_POS, v);
+}
+
+static void GLAPIENTRY
+TAG(Vertex4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4H(VBO_ATTRIB_POS, x, y, z, w);
+}
+
+static void GLAPIENTRY
+TAG(Vertex4hvNV)(const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4HV(VBO_ATTRIB_POS, v);
+}
+
+
+
+static void GLAPIENTRY
+TAG(Normal3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3H(VBO_ATTRIB_NORMAL, x, y, z);
+}
+
+static void GLAPIENTRY
+TAG(Normal3hvNV)(const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3HV(VBO_ATTRIB_NORMAL, v);
+}
+
+
+
+static void GLAPIENTRY
+TAG(Color3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3H(VBO_ATTRIB_COLOR0, x, y, z);
+}
+
+static void GLAPIENTRY
+TAG(Color3hvNV)(const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3HV(VBO_ATTRIB_COLOR0, v);
+}
+
+static void GLAPIENTRY
+TAG(Color4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4H(VBO_ATTRIB_COLOR0, x, y, z, w);
+}
+
+static void GLAPIENTRY
+TAG(Color4hvNV)(const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4HV(VBO_ATTRIB_COLOR0, v);
+}
+
+
+
+static void GLAPIENTRY
+TAG(TexCoord1hNV)(GLhalfNV x)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR1H(VBO_ATTRIB_TEX0, x);
+}
+
+static void GLAPIENTRY
+TAG(TexCoord1hvNV)(const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR1HV(VBO_ATTRIB_TEX0, v);
+}
+
+static void GLAPIENTRY
+TAG(TexCoord2hNV)(GLhalfNV x, GLhalfNV y)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR2H(VBO_ATTRIB_TEX0, x, y);
+}
+
+static void GLAPIENTRY
+TAG(TexCoord2hvNV)(const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR2HV(VBO_ATTRIB_TEX0, v);
+}
+
+static void GLAPIENTRY
+TAG(TexCoord3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3H(VBO_ATTRIB_TEX0, x, y, z);
+}
+
+static void GLAPIENTRY
+TAG(TexCoord3hvNV)(const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3HV(VBO_ATTRIB_TEX0, v);
+}
+
+static void GLAPIENTRY
+TAG(TexCoord4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4H(VBO_ATTRIB_TEX0, x, y, z, w);
+}
+
+static void GLAPIENTRY
+TAG(TexCoord4hvNV)(const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4HV(VBO_ATTRIB_TEX0, v);
+}
+
+
+
+static void GLAPIENTRY
+TAG(MultiTexCoord1hNV)(GLenum target, GLhalfNV x)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
+ ATTR1H(attr, x);
+}
+
+static void GLAPIENTRY
+TAG(MultiTexCoord1hvNV)(GLenum target, const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
+ ATTR1HV(attr, v);
+}
+
+static void GLAPIENTRY
+TAG(MultiTexCoord2hNV)(GLenum target, GLhalfNV x, GLhalfNV y)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
+ ATTR2H(attr, x, y);
+}
+
+static void GLAPIENTRY
+TAG(MultiTexCoord2hvNV)(GLenum target, const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
+ ATTR2HV(attr, v);
+}
+
+static void GLAPIENTRY
+TAG(MultiTexCoord3hNV)(GLenum target, GLhalfNV x, GLhalfNV y, GLhalfNV z)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
+ ATTR3H(attr, x, y, z);
+}
+
+static void GLAPIENTRY
+TAG(MultiTexCoord3hvNV)(GLenum target, const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
+ ATTR3HV(attr, v);
+}
+
+static void GLAPIENTRY
+TAG(MultiTexCoord4hNV)(GLenum target, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
+ ATTR4H(attr, x, y, z, w);
+}
+
+static void GLAPIENTRY
+TAG(MultiTexCoord4hvNV)(GLenum target, const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
+ ATTR4HV(attr, v);
+}
+
+
+
+static void GLAPIENTRY
+TAG(FogCoordhNV)(GLhalf x)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR1H(VBO_ATTRIB_FOG, x);
+}
+
+static void GLAPIENTRY
+TAG(FogCoordhvNV)(const GLhalf * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR1HV(VBO_ATTRIB_FOG, v);
+}
+
+
+
+static void GLAPIENTRY
+TAG(SecondaryColor3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3H(VBO_ATTRIB_COLOR1, x, y, z);
+}
+
+static void GLAPIENTRY
+TAG(SecondaryColor3hvNV)(const GLhalfNV * v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3HV(VBO_ATTRIB_COLOR1, v);
+}
+
#undef ATTR1FV
#undef ATTR2FV
#undef ATTR3FV
vfmt->VertexAttrib4fvARB = NAME(VertexAttrib4fvARB);
}
+/* half float */
+vfmt->Vertex2hNV = NAME(Vertex2hNV);
+vfmt->Vertex2hvNV = NAME(Vertex2hvNV);
+vfmt->Vertex3hNV = NAME(Vertex3hNV);
+vfmt->Vertex3hvNV = NAME(Vertex3hvNV);
+vfmt->Vertex4hNV = NAME(Vertex4hNV);
+vfmt->Vertex4hvNV = NAME(Vertex4hvNV);
+vfmt->Normal3hNV = NAME(Normal3hNV);
+vfmt->Normal3hvNV = NAME(Normal3hvNV);
+vfmt->Color3hNV = NAME(Color3hNV);
+vfmt->Color3hvNV = NAME(Color3hvNV);
+vfmt->Color4hNV = NAME(Color4hNV);
+vfmt->Color4hvNV = NAME(Color4hvNV);
+vfmt->TexCoord1hNV = NAME(TexCoord1hNV);
+vfmt->TexCoord1hvNV = NAME(TexCoord1hvNV);
+vfmt->TexCoord2hNV = NAME(TexCoord2hNV);
+vfmt->TexCoord2hvNV = NAME(TexCoord2hvNV);
+vfmt->TexCoord3hNV = NAME(TexCoord3hNV);
+vfmt->TexCoord3hvNV = NAME(TexCoord3hvNV);
+vfmt->TexCoord4hNV = NAME(TexCoord4hNV);
+vfmt->TexCoord4hvNV = NAME(TexCoord4hvNV);
+vfmt->MultiTexCoord1hNV = NAME(MultiTexCoord1hNV);
+vfmt->MultiTexCoord1hvNV = NAME(MultiTexCoord1hvNV);
+vfmt->MultiTexCoord2hNV = NAME(MultiTexCoord2hNV);
+vfmt->MultiTexCoord2hvNV = NAME(MultiTexCoord2hvNV);
+vfmt->MultiTexCoord3hNV = NAME(MultiTexCoord3hNV);
+vfmt->MultiTexCoord3hvNV = NAME(MultiTexCoord3hvNV);
+vfmt->MultiTexCoord4hNV = NAME(MultiTexCoord4hNV);
+vfmt->MultiTexCoord4hvNV = NAME(MultiTexCoord4hvNV);
+vfmt->FogCoordhNV = NAME(FogCoordhNV);
+vfmt->FogCoordhvNV = NAME(FogCoordhvNV);
+vfmt->SecondaryColor3hNV = NAME(SecondaryColor3hNV);
+vfmt->SecondaryColor3hvNV = NAME(SecondaryColor3hvNV);
+
/* Note that VertexAttrib4fNV is used from dlist.c and api_arrayelt.c so
* they can have a single entrypoint for updating any of the legacy
* attribs.