Bug 104742

Summary: [swrast] piglit gl-1.4-dlist-multidrawarrays regression
Product: Mesa Reporter: Vinson Lee <vlee>
Component: Mesa coreAssignee: mesa-dev
Status: RESOLVED FIXED QA Contact: mesa-dev
Severity: normal    
Priority: medium CC: brianp, idr
Version: gitKeywords: bisected, regression
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Bug Depends on:    
Bug Blocks: 104757    

Description Vinson Lee 2018-01-22 22:44:48 UTC
$ ./bin/gl-1.4-dlist-multidrawarrays -auto
Probe color at (0,0)
  Expected: 255 255 255
  Observed: 0 0 0
Calling glMultiDrawArrays in display list failed for GL_COMPILE_AND_EXECUTE mode
Probe color at (0,0)
  Expected: 255 255 255
  Observed: 0 0 0
Calling glMultiDrawElements in display list failed for GL_COMPILE mode
Probe color at (0,0)
  Expected: 255 255 255
  Observed: 0 0 0
Calling glMultiDrawElements in display list failed for GL_COMPILE_AND_EXECUTE mode
Probe color at (0,0)
  Expected: 255 255 255
  Observed: 0 0 0
Calling glMultiModeDrawArraysIBM in display list failed for GL_COMPILE mode
Probe color at (0,0)
  Expected: 255 255 255
  Observed: 0 0 0
Calling glMultiModeDrawArraysIBM in display list failed for GL_COMPILE_AND_EXECUTE mode
Probe color at (0,0)
  Expected: 255 255 255
  Observed: 0 0 0
Calling glMultiModeDrawElementsIBM in display list failed for GL_COMPILE mode
Probe color at (0,0)
  Expected: 255 255 255
  Observed: 0 0 0
Calling glMultiModeDrawElementsIBM in display list failed for GL_COMPILE_AND_EXECUTE mode
PIGLIT: {"result": "fail" }


8e4efdc895eacca931b94a0c1fa01aae5c34463b is the first bad commit
commit 8e4efdc895eacca931b94a0c1fa01aae5c34463b
Author: Brian Paul <brianp@vmware.com>
Date:   Fri Jan 12 13:18:25 2018 -0700

    vbo: optimize some display list drawing (v2)
    
    The vbo_save_vertex_list structure records one or more glBegin/End
    primitives which all have the same vertex format.
    
    To draw these primitives, we setup the vertex array state, then
    issue the drawing command.  Before, the 'start' vertex was typically
    zero and we used the vertex array pointer to indicate where the
    vertex data starts.
    
    This patch checks if the vertex buffer offset is an exact multiple of
    the vertex size.  If so, that means we can use zero-based vertex array
    pointers and use the draw's start value to indicate where the vertex
    data starts.
    
    This means a series of display list drawing commands may have
    identical vertex array state.  This will get filtered out by the
    Gallium CSO module so we can issue a tight series of drawing commands
    without state changes to the device.
    
    Note that this also works for a series of glCallList commands (not
    just one list that contains multiple glBegin/End pairs).
    
    No Piglit or conform changes.
    
    v2: minor fixes suggested by Ian.
    
    Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>

:040000 040000 0757be5a58241cc12ce136e700a08e8dcd3071e5 ca3edf842285f642bc07a5126dd6a23d5b0cbc3c M	src
bisect run success
Comment 1 Brian Paul 2018-01-23 18:46:33 UTC
Vinson, I posted a patch to mesa-dev to which fixes this and 104746.  If you can test too, that'd be helpful.
Comment 2 Brian Paul 2018-01-24 17:20:21 UTC
Fixed with commit 365a48abddcabf6596c2e34a784d91c8ab929918

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.