Skip to content
  • Colin McDonald's avatar
    glx: Fix indirect multi-texture GL_DOUBLE coordinate arrays. · b36644ba
    Colin McDonald authored and Matt Turner's avatar Matt Turner committed
    
    
    There is no draw arrays protocol support for multi-texture coordinate
    arrays, so it is implemented by sending batches of immediate mode
    commands from emit_element_none in indirect_vertex_array.c.  This sends
    the target texture unit (which has been previously setup in the
    array_state header field), followed by the texture coordinates.  But for
    GL_DOUBLE coordinates the texture unit must be sent *after* the texture
    coordinates. This is documented in the glx protocol description, and can
    also be seen in the indirect.c immediate mode commands generated from
    gl_API.xml. Sending the target texture unit in the wrong place can crash
    the remote X server.
    
    To fix this required some more extensive changes to
    indirect_vertex_array.c and indirect_vertex_array_priv.h, in order to
    remove the texture unit value out of the array_state "header" field, and
    send it separately.
    
    Reviewed-by: default avatarMatt Turner <mattst88@gmail.com>
    Reviewed-by: default avatarIan Romanick <ian.d.romanick@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61907
    b36644ba