Bug 45921

Summary: [r300g, bisected] Multiple piglit regressions after glsl_to_tgsi changes
Product: Mesa Reporter: Pavel Ondračka <pavel.ondracka>
Component: Drivers/Gallium/r300Assignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: bryancain3+fdo, maraeo
Version: gitKeywords: regression
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Pavel Ondračka 2012-02-11 02:08:43 UTC
Found while comparing piglit results between 7.11 and 8.0

1e3c81a068c4ae04cd1c6b18c687d5be69b7b8c4 is the first bad commit
commit 1e3c81a068c4ae04cd1c6b18c687d5be69b7b8c4
Author: Marek Olšák <maraeo@gmail.com>
Date:   Sun Aug 7 19:04:37 2011 +0200

    winsys/radeon: hook up the new DRM_RADEON_GEM_WAIT ioctl
    
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

Regressed tests:
glsl1-inequality (vec2, pass)
glsl-fs-discard-02
glsl-max-varyings
glsl-vs-loop-redundant-condition
fs-any-bvec2-using-if
fs-op-ne-bvec2-bvec2-using-if
fs-op-ne-ivec2-ivec2-using-if
fs-op-ne-mat2-mat2-using-if
fs-op-ne-vec2-vec2-using-if
fs-op-ne-mat2x3-mat2x3-using-if
fs-op-ne-mat2x4-mat2x4-using-if
and probably some others

All those tests pass on 7.11 and fail in both 8.0 and master branch.

GPU: RV530
Kernel: 3.2.3
Libdrm: 2.4.31
Mesa: d5a6c172547d8964f4d4bb79637651decaf9deee
Comment 1 Marek Olšák 2012-02-11 03:21:46 UTC
I am sure the commit in question is not the cause. I prematurely added the code for the new ioctl and disabled it later on, because my kernel code the commit was supposed to interact with wasn't accepted.

The problem when bisecting is that now it tries to call a non-existing ioctl if the DRM minor version is >=12, which makes some tests fail. Could you please check dmesg to see if that's the case? There should be some error messages from DRM.

I think that some of those piglit failures are caused by the glsl-to-tgsi translator. You can disable glsl-to-tgsi by commenting out:

  functions->LinkShader = st_link_shader;

at the end of src/mesa/state_tracker/st_cb_program.c.

Anyway, sorry, I won't probably help you with this bug anytime soon.
Comment 2 Pavel Ondračka 2012-02-11 03:59:26 UTC
(In reply to comment #1)
> I am sure the commit in question is not the cause. I prematurely added the code for the new ioctl and disabled it later on, because my kernel code the commit
> was supposed to interact with wasn't accepted.
> 
> The problem when bisecting is that now it tries to call a non-existing ioctl if the DRM minor version is >=12, which makes some tests fail. Could you please
> check dmesg to see if that's the case? There should be some error messages from DRM.

None of the tests produce any output in dmesg.
> 
> I think that some of those piglit failures are caused by the glsl-to-tgsi translator. You can disable glsl-to-tgsi by commenting out:
> 
>   functions->LinkShader = st_link_shader;
> 
> at the end of src/mesa/state_tracker/st_cb_program.c.

From all the mentioned tests only glsl-fs-discard-02 pass when I disable glsl-to-tgsi.

BTW in which commit was the new ioctl disabled? I mean, I can understand that if I don't have kernel with support for the new ioctl it breaks the tests, however if the ioctl was disabled later shouldn't be current git working unless another regression happened?
 
> Anyway, sorry, I won't probably help you with this bug anytime soon.

Well, I don't care much for piglit, I just want to make sure r300g don't get too rusty now when the development has moved to new drivers.
Comment 3 Marek Olšák 2012-02-11 04:19:27 UTC
(In reply to comment #2)
> (In reply to comment #1)
> > I am sure the commit in question is not the cause. I prematurely added the code for the new ioctl and disabled it later on, because my kernel code the commit
> > was supposed to interact with wasn't accepted.
> > 
> > The problem when bisecting is that now it tries to call a non-existing ioctl if the DRM minor version is >=12, which makes some tests fail. Could you please
> > check dmesg to see if that's the case? There should be some error messages from DRM.
> 
> None of the tests produce any output in dmesg.

Okay.

> > 
> > I think that some of those piglit failures are caused by the glsl-to-tgsi translator. You can disable glsl-to-tgsi by commenting out:
> > 
> >   functions->LinkShader = st_link_shader;
> > 
> > at the end of src/mesa/state_tracker/st_cb_program.c.
> 
> From all the mentioned tests only glsl-fs-discard-02 pass when I disable glsl-to-tgsi.
> 
> BTW in which commit was the new ioctl disabled?

In this one: ef64da8f013691c66744064769db379e57ef95de

> I mean, I can understand that if I don't have kernel with support for the new ioctl it breaks the tests,
> however if the ioctl was disabled later shouldn't be current git working unless another regression happened?

Yes, it should.
Comment 4 Pavel Ondračka 2012-02-11 04:51:23 UTC
OK, I can finally see whats going on. ef64da8f013691c66744064769db379e57ef95de fails however 1e3c81a068c4ae04cd1c6b18c687d5be69b7b8c4 + manually applied ef64da8f013691c66744064769db379e57ef95de pass. So indeed a second regression happened :-( Running second bisect right now.
Comment 5 Pavel Ondračka 2012-02-11 05:59:42 UTC
Marek you were right with the glsl_to_tgsi cause. It indeed seems majority of the commits fails due to some glsl_to_tgsi changes. 

fs-any-bvec2-using-if
fs-op-ne-mat2-mat2-using-if
fs-op-ne-mat2x3-mat2x3-using-if
fs-op-ne-mat2x4-mat2x4-using-if
regressed with:
a43f68810a347f3e952a0bc401be6edb91e1baea is the first bad commit
commit a43f68810a347f3e952a0bc401be6edb91e1baea
Author: Bryan Cain <bryancain3@gmail.com>
Date:   Sat Aug 20 13:26:12 2011 -0500

    glsl_to_tgsi: implement ir_unop_any using DP4 w/saturate or DP4 w/SLT
    
    This is a port of commit 92ca560d68e8 to glsl_to_tgsi, with integer support
    added.



glsl1-inequality (vec2, pass)
fs-op-ne-bvec2-bvec2-using-if
fs-op-ne-ivec2-ivec2-using-if
fs-op-ne-vec2-vec2-using-if
regressed with:
f3dce133f0422c42ca61f07f488237107efc30e6 is the first bad commit
commit f3dce133f0422c42ca61f07f488237107efc30e6
Author: Bryan Cain <bryancain3@gmail.com>
Date:   Sat Aug 20 13:56:06 2011 -0500

    glsl_to_tgsi: implement ir_binop_any_nequal using DP4 w/saturate or DP4 w/SLT
    
    Implement the any() part of the operation the same way regular ir_unop_any
    is implemented.
    
    This is a port of commit e7bf096e8b04 to glsl_to_tgsi, with added integer
    support.


The rest of the tests (glsl-fs-discard-02, glsl-max-varyings and glsl-vs-loop-redundant-condition) regressed in another (probably 3 different) places. I'll get to them later.  BTW this may be the worst bisect I've ever done.
Comment 6 Tom Stellard 2012-04-14 08:16:15 UTC
(In reply to comment #0)
> 
> Regressed tests:
> glsl1-inequality (vec2, pass)
Fixed by commit 73249239cf71e3595ee19f3c1a02b8b0f58994cd

> glsl-fs-discard-02
Fixed by commit b2df031a959f36743527b9abc89913ce4f895de3

> glsl-max-varyings
Duplicate: https://bugs.freedesktop.org/show_bug.cgi?id=46006

> glsl-vs-loop-redundant-condition
Fixed by commit b2df031a959f36743527b9abc89913ce4f895de3
> fs-any-bvec2-using-if
> fs-op-ne-bvec2-bvec2-using-if
> fs-op-ne-ivec2-ivec2-using-if
> fs-op-ne-mat2-mat2-using-if
> fs-op-ne-vec2-vec2-using-if
> fs-op-ne-mat2x3-mat2x3-using-if
> fs-op-ne-mat2x4-mat2x4-using-if
Fixed by commit 73249239cf71e3595ee19f3c1a02b8b0f58994cd

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.