diff options
| author | Ian Romanick <idr@us.ibm.com> | 2005-01-07 02:29:42 +0000 | 
|---|---|---|
| committer | Ian Romanick <idr@us.ibm.com> | 2005-01-07 02:29:42 +0000 | 
| commit | 3385d7cec3308129f6f1fc5990023417e4e4be47 (patch) | |
| tree | 944a3633e511b03e5f2e63eb816c1584955db236 | |
| parent | ba5ceda7e0f55fb59a674a5439a44464cae4b28d (diff) | |
The generic_*_byte functions did not rount the command size to a
multiple of 4 correctly in some cases.
| -rw-r--r-- | src/glx/x11/indirect.c | 8 | ||||
| -rw-r--r-- | src/mesa/glapi/glX_proto_send.py | 3 | 
2 files changed, 6 insertions, 5 deletions
diff --git a/src/glx/x11/indirect.c b/src/glx/x11/indirect.c index e8f716f90d..a9b52e2aa2 100644 --- a/src/glx/x11/indirect.c +++ b/src/glx/x11/indirect.c @@ -119,10 +119,10 @@ static FASTCALL NOINLINE void  generic_3_byte( GLint rop, const void * ptr )  {      __GLXcontext * const gc = __glXGetCurrentContext(); -    const GLuint cmdlen = 7; +    const GLuint cmdlen = 8;      emit_header(gc->pc, rop, cmdlen); -    (void) memcpy((void *)(gc->pc + 4), ptr, 3); +    (void) memcpy((void *)(gc->pc + 4), ptr, 4);      gc->pc += cmdlen;      if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }  } @@ -143,10 +143,10 @@ static FASTCALL NOINLINE void  generic_6_byte( GLint rop, const void * ptr )  {      __GLXcontext * const gc = __glXGetCurrentContext(); -    const GLuint cmdlen = 10; +    const GLuint cmdlen = 12;      emit_header(gc->pc, rop, cmdlen); -    (void) memcpy((void *)(gc->pc + 4), ptr, 6); +    (void) memcpy((void *)(gc->pc + 4), ptr, 8);      gc->pc += cmdlen;      if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }  } diff --git a/src/mesa/glapi/glX_proto_send.py b/src/mesa/glapi/glX_proto_send.py index 15d1fa69fd..7a93ef10b6 100644 --- a/src/mesa/glapi/glX_proto_send.py +++ b/src/mesa/glapi/glX_proto_send.py @@ -142,6 +142,7 @@ setup_vendor_request( __GLXcontext * gc, GLint code, GLint vop, GLint cmdlen )  			print "/* Missing GLX protocol for %s. */" % (f.name)  	def print_generic_function(self, n): +		size = (n + 3) & ~3  		print """static FASTCALL NOINLINE void  generic_%u_byte( GLint rop, const void * ptr )  { @@ -153,7 +154,7 @@ generic_%u_byte( GLint rop, const void * ptr )      gc->pc += cmdlen;      if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }  } -""" % (n, n + 4, n) +""" % (n, size + 4, size)  	def common_emit_one_arg(self, p, offset, pc, indent, adjust):  | 
