Bug 70820 - [IVB/HSW Bisected]Piglit spec/glsl-1.50/execution/geometry/core-inputs fails
Summary: [IVB/HSW Bisected]Piglit spec/glsl-1.50/execution/geometry/core-inputs fails
Status: VERIFIED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: unspecified
Hardware: All Linux (All)
: high major
Assignee: Paul Berry
QA Contact: Intel 3D Bugs Mailing List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-10-24 01:46 UTC by lu hua
Modified: 2013-10-28 08:11 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description lu hua 2013-10-24 01:46:25 UTC
System Environment:
--------------------------
Platform: Ivybridge/Haswell
Libdrm:		(master)2.4.47
Mesa:		(master)63974c0f5b26e369a790505af6820d4bbcf451b2
Xserver:	(master)xorg-server-1.14.99.3-1-g7ecfab47eb221dbb996ea6c033348b8eceaeb893
Xf86_video_intel:(master)2.99.904-65-g11e8b299e11ff846e1c8090f7cbd34b2af850d85
Cairo:		(master)98fef3cef2d0f7f463a2e4f9f1b35b09f7b6ea77
Libva:		(staging)1a011ce5bb0b80506797a25a988854f3f81ce909
Libva_intel_driver:(staging)1cee858036a87837deddc87586701ed869f96261
Kernel:	(drm-intel-nightly) 164a4cb4c1431a0689f85507868356fae24da638

Bug detailed description:
-----------------------------
It fails on Ivybridge and Haswell with mesa master branch. It's not support on 9.2 branch.
Following cases also fail with same bisect commit:
spec_glsl-1.50_execution_geometry_clip-distance-bulk-copy	
spec_glsl-1.50_execution_geometry_clip-distance-in-bulk-read	
spec_glsl-1.50_execution_geometry_clip-distance-in-explicitly-sized	
spec_glsl-1.50_execution_geometry_clip-distance-in-param	
spec_glsl-1.50_execution_geometry_clip-distance-in-values	
spec_glsl-1.50_execution_geometry_core-inputs	
spec_glsl-1.50_execution_gs-redeclares-both-pervertex-blocks	
spec_glsl-1.50_execution_redeclare-pervertex-subset-vs-to-gs	
spec_glsl-1.50_execution_unsized-in-named-interface-block-gs	
spec_glsl-1.50_execution_unsized-in-named-interface-block-multiple	
spec_glsl-1.50_execution_unsized-in-unnamed-interface-block-gs	
spec_glsl-1.50_execution_unsized-in-unnamed-interface-block-multiple	

Bisect shows: 63974c0f5b26e369a790505af6820d4bbcf451b2 is the first bad commit.
commit 63974c0f5b26e369a790505af6820d4bbcf451b2
Author:     Ian Romanick <ian.d.romanick@intel.com>
AuthorDate: Fri Oct 4 10:46:29 2013 -0700
Commit:     Ian Romanick <ian.d.romanick@intel.com>
CommitDate: Tue Oct 22 15:23:30 2013 -0700

    glsl: Simplify the interface to link_invalidate_variable_locations

    The unit tests added in the previous commits prove some things about the
    state of some internal data structures.  The most important of these is
    that all built-in input and output variables have explicit_location
    set.  This means that link_invalidate_variable_locations doesn't need to
    know the range of non-generic shader inputs or outputs.  It can simply
    reset location state depending on whether explicit_location is set.

    There are two additional assumptions that were already implicit in the
    code that comments now document.

      - ir_variable::is_unmatched_generic_inout is only used by the linker
        when connecting outputs from one shader stage to inputs of another
        shader stage.

      - Any varying that has explicit_location set must be a built-in.  This
        will be true until GL_ARB_separate_shader_objects is supported.

    As a result, the input_base and output_base parameters to
    link_invalidate_variable_locations are no longer necessary, and the code
    for resetting locations and setting is_unmatched_generic_inout can be
    simplified.

    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
    Reviewed-by: Paul Berry <stereotype441@gmail.com>

output:
Probe color at (0,0)
  Expected: 0.000000 1.000000 0.000000 1.000000
  Observed: 1.000000 0.000000 0.000000 1.000000
PIGLIT: {'result': 'fail' }

Reproduce steps:
----------------------------
1. xinit&
2. ./bin/shader_runner tests/spec/glsl-1.50/execution/geometry/core-inputs.shader_test -auto
Comment 1 Paul Berry 2013-10-25 14:17:22 UTC
Fixed by commit 172aec281d3d4eb0709977e0748d137e56aacd90
Author: Paul Berry <stereotype441@gmail.com>
Date:   Wed Oct 23 07:55:09 2013 -0700

    glsl: set explicit_location correctly in lower_named_interface_blocks.
    
    When lower_named_interface_blocks lowers a built-in interface block
    member to an ir_variable, it needs to set explicit_location in the
    ir_variable.  Otherwise the linker gets confused and treats the
    variable as a generic varying.
    
    Fixes the following piglit tests, which were regressed by commit
    63974c0 (glsl: Simplify the interface to
    link_invalidate_variable_locations):
    - clip-distance-bulk-copy
    - clip-distance-in-bulk-read
    - clip-distance-in-explicitly-sized
    - clip-distance-in-param
    - clip-distance-in-values
    - core-inputs
    - gs-redeclares-both-pervertex-blocks
    - gs-redeclares-pervertex-in-only
    - redeclare-pervertex-subset-vs-to-gs
    - unsized-in-named-interface-block-gs
    - unsized-in-named-interface-block-multiple
    - unsized-in-unnamed-interface-block-gs
    - unsized-in-unnamed-interface-block-multiple
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70820
    
    Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
    Reviewed-by: Matt Turner <mattst88@gmail.com>
Comment 2 lu hua 2013-10-28 08:11:44 UTC
Verified.Fixed.


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.