mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
The opcode and command length fields of RenderLarge commands were
mistakenly emitted in the wrong order.
This commit is contained in:
parent
dd1a817c50
commit
3276c192b7
2 changed files with 19 additions and 13 deletions
|
|
@ -276,8 +276,8 @@ __indirect_glCallLists(GLsizei n, GLenum type, const GLvoid * lists)
|
|||
const GLint op = X_GLrop_CallLists;
|
||||
const GLuint cmdlenLarge = cmdlen + 4;
|
||||
GLubyte * const pc = __glXFlushRenderBuffer(gc, gc->pc);
|
||||
(void) memcpy((void *)(pc + 0), (void *)(&op), 4);
|
||||
(void) memcpy((void *)(pc + 4), (void *)(&cmdlenLarge), 4);
|
||||
(void) memcpy((void *)(pc + 0), (void *)(&cmdlenLarge), 4);
|
||||
(void) memcpy((void *)(pc + 4), (void *)(&op), 4);
|
||||
(void) memcpy((void *)(pc + 8), (void *)(&n), 4);
|
||||
(void) memcpy((void *)(pc + 12), (void *)(&type), 4);
|
||||
__glXSendLargeCommand(gc, pc, 16, lists, (compsize * n));
|
||||
|
|
@ -2992,8 +2992,8 @@ __indirect_glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat * values)
|
|||
const GLint op = X_GLrop_PixelMapfv;
|
||||
const GLuint cmdlenLarge = cmdlen + 4;
|
||||
GLubyte * const pc = __glXFlushRenderBuffer(gc, gc->pc);
|
||||
(void) memcpy((void *)(pc + 0), (void *)(&op), 4);
|
||||
(void) memcpy((void *)(pc + 4), (void *)(&cmdlenLarge), 4);
|
||||
(void) memcpy((void *)(pc + 0), (void *)(&cmdlenLarge), 4);
|
||||
(void) memcpy((void *)(pc + 4), (void *)(&op), 4);
|
||||
(void) memcpy((void *)(pc + 8), (void *)(&map), 4);
|
||||
(void) memcpy((void *)(pc + 12), (void *)(&mapsize), 4);
|
||||
__glXSendLargeCommand(gc, pc, 16, values, (mapsize * 4));
|
||||
|
|
@ -3023,8 +3023,8 @@ __indirect_glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint * values)
|
|||
const GLint op = X_GLrop_PixelMapuiv;
|
||||
const GLuint cmdlenLarge = cmdlen + 4;
|
||||
GLubyte * const pc = __glXFlushRenderBuffer(gc, gc->pc);
|
||||
(void) memcpy((void *)(pc + 0), (void *)(&op), 4);
|
||||
(void) memcpy((void *)(pc + 4), (void *)(&cmdlenLarge), 4);
|
||||
(void) memcpy((void *)(pc + 0), (void *)(&cmdlenLarge), 4);
|
||||
(void) memcpy((void *)(pc + 4), (void *)(&op), 4);
|
||||
(void) memcpy((void *)(pc + 8), (void *)(&map), 4);
|
||||
(void) memcpy((void *)(pc + 12), (void *)(&mapsize), 4);
|
||||
__glXSendLargeCommand(gc, pc, 16, values, (mapsize * 4));
|
||||
|
|
@ -3054,8 +3054,8 @@ __indirect_glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort * values)
|
|||
const GLint op = X_GLrop_PixelMapusv;
|
||||
const GLuint cmdlenLarge = cmdlen + 4;
|
||||
GLubyte * const pc = __glXFlushRenderBuffer(gc, gc->pc);
|
||||
(void) memcpy((void *)(pc + 0), (void *)(&op), 4);
|
||||
(void) memcpy((void *)(pc + 4), (void *)(&cmdlenLarge), 4);
|
||||
(void) memcpy((void *)(pc + 0), (void *)(&cmdlenLarge), 4);
|
||||
(void) memcpy((void *)(pc + 4), (void *)(&op), 4);
|
||||
(void) memcpy((void *)(pc + 8), (void *)(&map), 4);
|
||||
(void) memcpy((void *)(pc + 12), (void *)(&mapsize), 4);
|
||||
__glXSendLargeCommand(gc, pc, 16, values, (mapsize * 2));
|
||||
|
|
|
|||
|
|
@ -181,6 +181,15 @@ generic_%u_byte( GLint rop, const void * ptr )
|
|||
return offset
|
||||
|
||||
|
||||
def large_emit_begin(self, indent, f):
|
||||
print '%s const GLint op = %s;' % (indent, f.opcode_real_name())
|
||||
print '%s const GLuint cmdlenLarge = cmdlen + 4;' % (indent)
|
||||
print '%s GLubyte * const pc = __glXFlushRenderBuffer(gc, gc->pc);' % (indent)
|
||||
print '%s (void) memcpy((void *)(pc + 0), (void *)(&cmdlenLarge), 4);' % (indent)
|
||||
print '%s (void) memcpy((void *)(pc + 4), (void *)(&op), 4);' % (indent)
|
||||
return
|
||||
|
||||
|
||||
def common_func_print_just_header(self, f):
|
||||
print '#define %s %d' % (f.opcode_name(), f.opcode_value())
|
||||
|
||||
|
|
@ -316,11 +325,8 @@ generic_%u_byte( GLint rop, const void * ptr )
|
|||
if f.can_be_large:
|
||||
print '%s}' % (indent)
|
||||
print '%selse {' % (indent)
|
||||
print '%s const GLint op = %s;' % (indent, f.opcode_real_name())
|
||||
print '%s const GLuint cmdlenLarge = cmdlen + 4;' % (indent)
|
||||
print '%s GLubyte * const pc = __glXFlushRenderBuffer(gc, gc->pc);' % (indent)
|
||||
print '%s (void) memcpy((void *)(pc + 0), (void *)(&op), 4);' % (indent)
|
||||
print '%s (void) memcpy((void *)(pc + 4), (void *)(&cmdlenLarge), 4);' % (indent)
|
||||
|
||||
self.large_emit_begin(indent, f)
|
||||
offset = self.common_emit_args(f, "pc", indent, 8, 1)
|
||||
|
||||
p = f.variable_length_parameter()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue