Actually *use* the count_scale value associated with a parameter.
authorIan Romanick <idr@us.ibm.com>
Sun, 6 Mar 2005 08:55:39 +0000 (08:55 +0000)
committerIan Romanick <idr@us.ibm.com>
Sun, 6 Mar 2005 08:55:39 +0000 (08:55 +0000)
src/glx/x11/indirect.c
src/mesa/glapi/gl_XML.py

index b81811cdb80c1784032d54130df874b16919bfb6..c654c93939552ace3104ff3941d5d1c854631a51 100644 (file)
@@ -6062,13 +6062,13 @@ void
 __indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint num, const GLdouble * params)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 16 + __GLX_PAD((num * 8));
+    const GLuint cmdlen = 16 + __GLX_PAD(((num * 4) * 8));
     if (__builtin_expect(num >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_ProgramParameters4dvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 12), (void *)(&num), 4);
-        (void) memcpy((void *)(gc->pc + 16), (void *)(params), (num * 8));
+        (void) memcpy((void *)(gc->pc + 16), (void *)(params), ((num * 4) * 8));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6079,13 +6079,13 @@ void
 __indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLuint num, const GLfloat * params)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 16 + __GLX_PAD((num * 4));
+    const GLuint cmdlen = 16 + __GLX_PAD(((num * 4) * 4));
     if (__builtin_expect(num >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_ProgramParameters4fvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 12), (void *)(&num), 4);
-        (void) memcpy((void *)(gc->pc + 16), (void *)(params), (num * 4));
+        (void) memcpy((void *)(gc->pc + 16), (void *)(params), ((num * 4) * 4));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6533,12 +6533,12 @@ void
 __indirect_glVertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD((n * 8));
+    const GLuint cmdlen = 12 + __GLX_PAD(((n * 2) * 8));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs2dvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 8));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 2) * 8));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6549,12 +6549,12 @@ void
 __indirect_glVertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD((n * 4));
+    const GLuint cmdlen = 12 + __GLX_PAD(((n * 2) * 4));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs2fvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 4));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 2) * 4));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6565,12 +6565,12 @@ void
 __indirect_glVertexAttribs2svNV(GLuint index, GLsizei n, const GLshort * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD((n * 2));
+    const GLuint cmdlen = 12 + __GLX_PAD(((n * 2) * 2));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs2svNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 2));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 2) * 2));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6581,12 +6581,12 @@ void
 __indirect_glVertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD((n * 8));
+    const GLuint cmdlen = 12 + __GLX_PAD(((n * 3) * 8));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs3dvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 8));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 3) * 8));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6597,12 +6597,12 @@ void
 __indirect_glVertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD((n * 4));
+    const GLuint cmdlen = 12 + __GLX_PAD(((n * 3) * 4));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs3fvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 4));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 3) * 4));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6613,12 +6613,12 @@ void
 __indirect_glVertexAttribs3svNV(GLuint index, GLsizei n, const GLshort * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD((n * 2));
+    const GLuint cmdlen = 12 + __GLX_PAD(((n * 3) * 2));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs3svNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 2));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 3) * 2));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6629,12 +6629,12 @@ void
 __indirect_glVertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD((n * 8));
+    const GLuint cmdlen = 12 + __GLX_PAD(((n * 4) * 8));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs4dvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 8));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 4) * 8));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6645,12 +6645,12 @@ void
 __indirect_glVertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD((n * 4));
+    const GLuint cmdlen = 12 + __GLX_PAD(((n * 4) * 4));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs4fvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 4));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 4) * 4));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6661,12 +6661,12 @@ void
 __indirect_glVertexAttribs4svNV(GLuint index, GLsizei n, const GLshort * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD((n * 2));
+    const GLuint cmdlen = 12 + __GLX_PAD(((n * 4) * 2));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs4svNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 2));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 4) * 2));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6677,12 +6677,12 @@ void
 __indirect_glVertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD((n * 1));
+    const GLuint cmdlen = 12 + __GLX_PAD(((n * 4) * 1));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs4ubvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 1));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 4) * 1));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
index 03aa982ac283c91bef79af42ea8015c776913ecd..3f87a5712a34c7f3136b86b9fed693f55980aded 100644 (file)
@@ -175,6 +175,8 @@ class glParameter( glItem ):
                        self.p_count = 0
                        self.counter = c
 
+               self.count_scale = int(attrs.get('count_scale', "1"))
+                       
                if attrs.get('counter', "false") == "true":
                        self.is_counter = 1
                else:
@@ -296,7 +298,7 @@ class glParameter( glItem ):
                elif self.p_count == 0:
                        return self.p_type.size
                else:
-                       return self.p_type.size * self.p_count
+                       return self.p_type.size * self.p_count * self.count_scale
 
        def size_string(self):
                s = self.size()
@@ -310,11 +312,17 @@ class glParameter( glItem ):
                        if b_prod == 0: b_prod = 1
 
                        if not self.count_parameter_list and self.counter != None:
-                               a_prod = self.counter
+                               if self.count_scale > 1:
+                                       a_prod = '(%s * %u)' % (self.counter, self.count_scale)
+                               else:
+                                       a_prod = self.counter
                        elif self.count_parameter_list and self.counter == None:
                                pass
                        elif self.count_parameter_list and self.counter != None:
-                               b_prod = self.counter
+                               if self.count_scale > 1:
+                                       b_prod = '(%s * %u)' % (self.counter, self.count_scale)
+                               else:
+                                       b_prod = self.counter
                        elif self.width:
                                return "compsize"
                        else: