Bug 104710

Summary: [swrast] piglit draw-batch 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-20 01:01:25 UTC
$ ./bin/draw-batch -auto
From bottom to top:
DrawElements
DrawArrays
Begin/End
CallList
Probe color at (35,105)
  Expected: 1.000000 0.200000 0.200000
  Observed: 0.000000 0.000000 0.000000
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 Emil Velikov 2018-01-25 16:56:58 UTC
Vinson I'm suspecting that this should be fixed with 365a48abddcabf6596c2e34a784d91c8ab929918. Can you please confirm?
Comment 2 Vinson Lee 2018-01-25 18:27:09 UTC
commit 365a48abddcabf6596c2e34a784d91c8ab929918
Author: Brian Paul <brianp@vmware.com>
Date:   Tue Jan 23 10:48:51 2018 -0700

    vbo: fix incorrect min/max_index values in display list draw call
    
    This fixes another regression from commit 8e4efdc895ea ("vbo: optimize
    some display list drawing").  The problem was the min_index, max_index
    values passed to the vbo drawing function were not computed to compensate
    for the biased prim::start values.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=104746
    https://bugs.freedesktop.org/show_bug.cgi?id=104742
    https://bugs.freedesktop.org/show_bug.cgi?id=104690
    Tested-by: Clayton Craft <clayton.a.craft@intel.com>
    Fixes: 8e4efdc895ea ("vbo: optimize some display list drawing")
    Reviewed-by: Emil Velikov <emil.velikov@collabora.co.uk>

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.