mesa: fix some minor texstore comments
[mesa.git] / src / mesa / main / api_loopback.c
index d1789069cc1e014f1dd9fac27dd2f01e1c226f09..c438307d84cebe336ea31b9520a12958ac2cdc14 100644 (file)
@@ -34,9 +34,9 @@
 #include "api_loopback.h"
 #include "mtypes.h"
 #include "glapi/glapi.h"
-#include "glapi/glapitable.h"
 #include "glapi/glthread.h"
 #include "main/dispatch.h"
+#include "mfeatures.h"
 
 /* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
  * calls to a smaller set of driver-provided formats.  Currently just
 #define MATERIALFV(a,b,c)           CALL_Materialfv(GET_DISPATCH(), (a,b,c))
 #define RECTF(a,b,c,d)              CALL_Rectf(GET_DISPATCH(), (a,b,c,d))
 
+#define FOGCOORDF(x)                CALL_FogCoordfEXT(GET_DISPATCH(), (x))
+#define SECONDARYCOLORF(a,b,c)      CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c))
+
 #define ATTRIB1NV(index,x)          CALL_VertexAttrib1fNV(GET_DISPATCH(), (index,x))
 #define ATTRIB2NV(index,x,y)        CALL_VertexAttrib2fNV(GET_DISPATCH(), (index,x,y))
 #define ATTRIB3NV(index,x,y,z)      CALL_VertexAttrib3fNV(GET_DISPATCH(), (index,x,y,z))
 #define ATTRIB4NV(index,x,y,z,w)    CALL_VertexAttrib4fNV(GET_DISPATCH(), (index,x,y,z,w))
+
 #define ATTRIB1ARB(index,x)         CALL_VertexAttrib1fARB(GET_DISPATCH(), (index,x))
 #define ATTRIB2ARB(index,x,y)       CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,x,y))
 #define ATTRIB3ARB(index,x,y,z)     CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,x,y,z))
 #define ATTRIB4ARB(index,x,y,z,w)   CALL_VertexAttrib4fARB(GET_DISPATCH(), (index,x,y,z,w))
-#define FOGCOORDF(x)                CALL_FogCoordfEXT(GET_DISPATCH(), (x))
-#define SECONDARYCOLORF(a,b,c)      CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c))
+
+#define ATTRIBI_1I(index,x)   CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index,x))
+#define ATTRIBI_1UI(index,x)   CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index,x))
+#define ATTRIBI_4I(index,x,y,z,w)   CALL_VertexAttribI4iEXT(GET_DISPATCH(), (index,x,y,z,w))
+
+#define ATTRIBI_4UI(index,x,y,z,w)   CALL_VertexAttribI4uiEXT(GET_DISPATCH(), (index,x,y,z,w))
 
 
 #if FEATURE_beginend
@@ -1041,6 +1049,7 @@ loopback_SecondaryColor3ubvEXT_f( const GLubyte *v )
 /*
  * GL_NV_vertex_program:
  * Always loop-back to one of the VertexAttrib[1234]f[v]NV functions.
+ * Note that attribute indexes DO alias conventional vertex attributes.
  */
 
 static void GLAPIENTRY
@@ -1263,6 +1272,7 @@ loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
 /*
  * GL_ARB_vertex_program
  * Always loop-back to one of the VertexAttrib[1234]f[v]ARB functions.
+ * Note that attribute indexes do NOT alias conventional attributes.
  */
 
 static void GLAPIENTRY
@@ -1443,136 +1453,50 @@ loopback_VertexAttrib4NuivARB(GLuint index, const GLuint * v)
 
 
 
-/** GL 3.0 Integer-valued attributes **/
-
-static void GLAPIENTRY
-loopback_VertexAttribI1i(GLuint index, GLint x)
-{
-   ATTRIB1ARB(index, (GLfloat) x);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI2i(GLuint index, GLint x, GLint y)
-{
-   ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI3i(GLuint index, GLint x, GLint y, GLint z)
-{
-   ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
-{
-   ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI1ui(GLuint index, GLuint x)
-{
-   ATTRIB1ARB(index, (GLfloat) x);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI2ui(GLuint index, GLuint x, GLuint y)
-{
-   ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z)
-{
-   ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
-{
-   ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
+/**
+ * GL_EXT_gpu_shader / GL 3.0 signed/unsigned integer-valued attributes.
+ * Note that attribute indexes do NOT alias conventional attributes.
+ */
 
 static void GLAPIENTRY
 loopback_VertexAttribI1iv(GLuint index, const GLint *v)
 {
-   ATTRIB1ARB(index, (GLfloat) v[0]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI2iv (GLuint index, const GLint *v)
-{
-   ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI3iv(GLuint index, const GLint *v)
-{
-   ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4iv(GLuint index, const GLint *v)
-{
-   ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
-              (GLfloat) v[2], (GLfloat) v[3]);
+   ATTRIBI_1I(index, v[0]);
 }
 
 static void GLAPIENTRY
 loopback_VertexAttribI1uiv(GLuint index, const GLuint *v)
 {
-   ATTRIB1ARB(index, (GLfloat) v[0]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI2uiv(GLuint index, const GLuint *v)
-{
-   ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI3uiv(GLuint index, const GLuint *v)
-{
-   ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4uiv(GLuint index, const GLuint *v)
-{
-   ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
-              (GLfloat) v[2], (GLfloat) v[3]);
+   ATTRIBI_1UI(index, v[0]);
 }
 
 static void GLAPIENTRY
 loopback_VertexAttribI4bv(GLuint index, const GLbyte *v)
 {
-   ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
-              (GLfloat) v[2], (GLfloat) v[3]);
+   ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
 }
 
 static void GLAPIENTRY
 loopback_VertexAttribI4sv(GLuint index, const GLshort *v)
 {
-   ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
-              (GLfloat) v[2], (GLfloat) v[3]);
+   ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
 }
 
 static void GLAPIENTRY
 loopback_VertexAttribI4ubv(GLuint index, const GLubyte *v)
 {
-   ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
-              (GLfloat) v[2], (GLfloat) v[3]);
+   ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
 }
 
 static void GLAPIENTRY
 loopback_VertexAttribI4usv(GLuint index, const GLushort *v)
 {
-   ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
-              (GLfloat) v[2], (GLfloat) v[3]);
+   ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
 }
 
 
 
+
 /*
  * This code never registers handlers for any of the entry points
  * listed in vtxfmt.h.
@@ -1788,50 +1712,13 @@ _mesa_loopback_init_api_table( struct _glapi_table *dest )
    SET_VertexAttrib4NusvARB(dest, loopback_VertexAttrib4NusvARB);
    SET_VertexAttrib4NuivARB(dest, loopback_VertexAttrib4NuivARB);
 
-   /* GL 3.0 */
-#if 0
-   SET_VertexAttribI1i(dest, loopback_VertexAttribI1i);
-   SET_VertexAttribI2i(dest, loopback_VertexAttribI2i);
-   SET_VertexAttribI3i(dest, loopback_VertexAttribI3i);
-   SET_VertexAttribI4i(dest, loopback_VertexAttribI4i);
-   SET_VertexAttribI1ui(dest, loopback_VertexAttribI1ui);
-   SET_VertexAttribI2ui(dest, loopback_VertexAttribI2ui);
-   SET_VertexAttribI3ui(dest, loopback_VertexAttribI3ui);
-   SET_VertexAttribI4ui(dest, loopback_VertexAttribI4ui);
-   SET_VertexAttribI1iv(dest, loopback_VertexAttribI1iv);
-   SET_VertexAttribI2iv(dest, loopback_VertexAttribI2iv);
-   SET_VertexAttribI3iv(dest, loopback_VertexAttribI3iv);
-   SET_VertexAttribI4iv(dest, loopback_VertexAttribI4iv);
-   SET_VertexAttribI1uiv(dest, loopback_VertexAttribI1uiv);
-   SET_VertexAttribI2uiv(dest, loopback_VertexAttribI2uiv);
-   SET_VertexAttribI3uiv(dest, loopback_VertexAttribI3uiv);
-   SET_VertexAttribI4uiv(dest, loopback_VertexAttribI4uiv);
-   SET_VertexAttribI4bv(dest, loopback_VertexAttribI4bv);
-   SET_VertexAttribI4sv(dest, loopback_VertexAttribI4sv);
-   SET_VertexAttribI4ubv(dest, loopback_VertexAttribI4ubv);
-   SET_VertexAttribI4usv(dest, loopback_VertexAttribI4usv);
-#else
-   (void) loopback_VertexAttribI1i;
-   (void) loopback_VertexAttribI2i;
-   (void) loopback_VertexAttribI3i;
-   (void) loopback_VertexAttribI4i;
-   (void) loopback_VertexAttribI1ui;
-   (void) loopback_VertexAttribI2ui;
-   (void) loopback_VertexAttribI3ui;
-   (void) loopback_VertexAttribI4ui;
-   (void) loopback_VertexAttribI1iv;
-   (void) loopback_VertexAttribI2iv;
-   (void) loopback_VertexAttribI3iv;
-   (void) loopback_VertexAttribI4iv;
-   (void) loopback_VertexAttribI1uiv;
-   (void) loopback_VertexAttribI2uiv;
-   (void) loopback_VertexAttribI3uiv;
-   (void) loopback_VertexAttribI4uiv;
-   (void) loopback_VertexAttribI4bv;
-   (void) loopback_VertexAttribI4sv;
-   (void) loopback_VertexAttribI4ubv;
-   (void) loopback_VertexAttribI4usv;
-#endif
+   /* GL_EXT_gpu_shader4, GL 3.0 */
+   SET_VertexAttribI1ivEXT(dest, loopback_VertexAttribI1iv);
+   SET_VertexAttribI1uivEXT(dest, loopback_VertexAttribI1uiv);
+   SET_VertexAttribI4bvEXT(dest, loopback_VertexAttribI4bv);
+   SET_VertexAttribI4svEXT(dest, loopback_VertexAttribI4sv);
+   SET_VertexAttribI4ubvEXT(dest, loopback_VertexAttribI4ubv);
+   SET_VertexAttribI4usvEXT(dest, loopback_VertexAttribI4usv);
 }