[Mesa-dev] [PATCH] indices: fix provoking vertex for quads/quadstrips

Roland Scheidegger sroland at vmware.com
Tue Apr 7 08:06:59 PDT 2015


It will look different with llvmpipe if you use the right debug
variables (GALLIVM_DEBUG=no_brilinear,no_quad_lod,no_rho_approx), though
still fail.
I think the test may not be really valid. This is because if you use
texgrad, the driver/hw probably will (or should) use per-pixel lod. But
if you don't, it is of course per-quad. For the smallest mip it will
only give the same results here if you pick the "right" (top/bottom,
left/right) values for doing the lod calculations with implicit lod
(that is, the one from the actually active pixel in the quad, so if the
active pixel was top/left you must calculate ddx with the top values,
and ddy with the left values). And I don't think that is a requirement
anywhere. At least that's what I remember...
And the cube test is probably not quite right neither (though llvmpipe
passes it with those mentioned variables, that is more due to the
implementation of cube mapping though - the cube face selection must be
done per pixel and not per quad and there's tons of code to get lods
right be it implicit or explicit).
Don't know though why the test would regress this, as it shouldn't
affect it at all with last provoking vertex.

Am 07.04.2015 um 16:28 schrieb Ilia Mirkin:
> Oh fun, those tests also fail with nvc0 and llvmpipe. But pass on
> softpipe. (The llvmpipe fail is visually different from the nvc0 and
> freedreno/a3xx one though.)
> 
> On Tue, Apr 7, 2015 at 10:25 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>> Weird, this seems to regress
>>
>> bin/arb_shader_texture_lod-texgrad
>> bin/arb_shader_texture_lod-texgradcube
>>
>> Visually they look the same, but piglit finds small differences.
>>
>> On Tue, Apr 7, 2015 at 2:20 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>>> On Tue, Apr 7, 2015 at 1:44 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>>>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>>>> ---
>>>>
>>>> Pushing this through a complete piglit run, but it seems to fix
>>>>
>>>>   bin/arb-provoking-vertex-render
>>>>
>>>> on a3xx. Please take special care to double-check that I didn't mess
>>>> up cw/ccw order or something. I'm especially weak on the quadstrip
>>>> case.
>>>>
>>>>  src/gallium/auxiliary/indices/u_indices_gen.py | 13 ++++++++++---
>>>>  1 file changed, 10 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/src/gallium/auxiliary/indices/u_indices_gen.py b/src/gallium/auxiliary/indices/u_indices_gen.py
>>>> index 687a717..b17d132 100644
>>>> --- a/src/gallium/auxiliary/indices/u_indices_gen.py
>>>> +++ b/src/gallium/auxiliary/indices/u_indices_gen.py
>>>> @@ -142,8 +142,12 @@ def do_tri( intype, outtype, ptr, v0, v1, v2, inpv, outpv ):
>>>>              tri( intype, outtype, ptr, v2, v0, v1 )
>>>>
>>>>  def do_quad( intype, outtype, ptr, v0, v1, v2, v3, inpv, outpv ):
>>>> -    do_tri( intype, outtype, ptr+'+0',  v0, v1, v3, inpv, outpv );
>>>> -    do_tri( intype, outtype, ptr+'+3',  v1, v2, v3, inpv, outpv );
>>>> +    if inpv == LAST:
>>>> +        do_tri( intype, outtype, ptr+'+0',  v0, v1, v3, inpv, outpv );
>>>> +        do_tri( intype, outtype, ptr+'+3',  v1, v2, v3, inpv, outpv );
>>>> +    else:
>>>> +        do_tri( intype, outtype, ptr+'+0',  v0, v1, v3, inpv, outpv );
>>>> +        do_tri( intype, outtype, ptr+'+3',  v0, v3, v2, inpv, outpv );
>>>
>>> Erm, make that v0, v1, v2; v0, v2, v3. Oops :)
>>>
>>>>
>>>>  def name(intype, outtype, inpv, outpv, pr, prim):
>>>>      if intype == GENERATE:
>>>> @@ -331,7 +335,10 @@ def quadstrip(intype, outtype, inpv, outpv, pr):
>>>>          print '         i += 4;'
>>>>          print '         goto restart;'
>>>>          print '      }'
>>>> -    do_quad( intype, outtype, 'out+j', 'i+2', 'i+0', 'i+1', 'i+3', inpv, outpv );
>>>> +    if inpv == LAST:
>>>> +        do_quad( intype, outtype, 'out+j', 'i+2', 'i+0', 'i+1', 'i+3', inpv, outpv );
>>>> +    else:
>>>> +        do_quad( intype, outtype, 'out+j', 'i+0', 'i+1', 'i+3', 'i+2', inpv, outpv );
>>>>      print '   }'
>>>>      postamble()
>>>>
>>>> --
>>>> 2.0.5
>>>>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=Vjtt0vs_iqoI31UfJxBl7yv9I2FeiaeAYgMTLKRBc_I&m=WCe6lxrKqxKgvrVHuTpgj1fH76sE-mwWzExbv9DnLQs&s=R37n-HrF-x56UKswGlBbLHCIlZvTk6p-Z99737VvlS8&e= 
> 



More information about the mesa-dev mailing list