Bug 56791 - [Bisected ILK]Piglit spec_glsl-1.20_execution_clipping_fixed-clip-enables fails
Summary: [Bisected ILK]Piglit spec_glsl-1.20_execution_clipping_fixed-clip-enables fails
Status: VERIFIED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: git
Hardware: All Linux (All)
: high major
Assignee: Kenneth Graunke
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-11-06 02:23 UTC by lu hua
Modified: 2012-11-15 01:22 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description lu hua 2012-11-06 02:23:34 UTC
System Environment:
--------------------------
Arch:             i386
Platform:         Ironlake
Libdrm:	(master)libdrm-2.4.39-22-ge32fff8e9ea8d522679eaab21a9555cab134fb36
Mesa:	(master)ccbfe3dde94cd50a4e6468cfeabf95c79c9d8072
Xserver:(master)xorg-server-1.13.0-107-ga194630f7f7b287cb4ea4a459df0745f4c0d4c1a
Xf86_video_intel:(master)2.20.12-25-ge62b0cbf958d1ad95e4522973253a1ae5c1a4da9
Cairo:	(master)fab6958eff35a94cf46e38f19a7e75e10aa2b182
Libva:	(staging)c59c512df262cdc44fb6e9101621f246eda176df
Libva_intel_driver:(staging)3bd6f3b3611dd9a39a3075f82cf938fa08e22884
Kernel:	(drm-intel-nightly) 030c686fe3b33b651883d58c1bb7b59e506968ce

Bug detailed description:
------------------------------
It fails on ironlake with mesa master branch.It doesn't happen on mesa 9.0 branch.

Bisect shows: 66c8473e028d416a87783da45de34454e4e9f6b8 is the first bad commit.
commit 66c8473e028d416a87783da45de34454e4e9f6b8
Author:     Kenneth Graunke <kenneth@whitecape.org>
AuthorDate: Mon Oct 8 10:21:30 2012 -0700
Commit:     Kenneth Graunke <kenneth@whitecape.org>
CommitDate: Thu Nov 1 14:29:23 2012 -0700

    i965/vs: Replace brw_vs_emit.c with dumping code into the vec4_visitor.

    Rather than having two separate backends, just create a small layer that
    translates the subset of Mesa IR used for ARB_vertex_program and fixed
    function programs to the Vec4 IR.  This allows us to use the same
    optimization passes, code generator, register allocator as for GLSL.

    v2: Incorporate Eric's review comments.
    - Fix use of uninitialized src_swiz[] values in the SWIZZLE_ZERO/ONE
      case: just initialize it to 0 (.x) since the value doesn't matter
      (those channels get writemasked out anyway).
    - Properly reswizzle source register's swizzles, rather than overwriting
      the swizzle.
    - Port the old brw_vs_emit code for computing .x of the EXP2 opcode.
    - Update comments, removing mention of NV_vertex_program, etc.
    - Delete remaining #warning lines and debug comments.

    Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>

output:
Probe at (50,174)
  Expected: 0.000000 0.000000 0.000000 0.000000
  Observed: 1.000000 1.000000 1.000000 1.000000
Probe at (50,174)
  Expected: 0.000000 0.000000 0.000000 0.000000
  Observed: 1.000000 1.000000 1.000000 1.000000
Probe at (50,75)
  Expected: 0.000000 0.000000 0.000000 0.000000
  Observed: 1.000000 1.000000 1.000000 1.000000
Probe at (50,174)
  Expected: 0.000000 0.000000 0.000000 0.000000
  Observed: 1.000000 1.000000 1.000000 1.000000
Probe at (50,75)
  Expected: 0.000000 0.000000 0.000000 0.000000
  Observed: 1.000000 1.000000 1.000000 1.000000
PIGLIT: {'result': 'fail' }

Reproduce steps:
----------------------------
1. start x
2. ./bin/shader_runner tests/spec/glsl-1.20/execution/clipping/fixed-clip-enables.shader_test -auto -fbo
Comment 1 lu hua 2012-11-06 02:31:40 UTC
Oglc case mustpass(basic.clip) and userclip(basic.allCases) also fail on ILK, have some bisect result.
Comment 3 lu hua 2012-11-13 07:26:15 UTC
Ogles1conform case userclip.c also fails on ironlake and has same bisect commit.
Comment 4 Kenneth Graunke 2012-11-13 09:45:17 UTC
commit fe2ef4b810ad1c2e712881742000bc0950b72660
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Tue Nov 6 22:23:05 2012 -0800

    i965/vs: Fix user clip plane setup on Gen4-5.
    
    On Gen6-7, we don't compact clip planes, and nr_userclip_plane_consts
    is the last bit set, so iterating from i = 0..nr_userclip_plane_consts
    covers all active clip planes and is the right thing to do.
    works and is the right thing to do.
    
    However, that doesn't work at all on Gen4-5.  Since we don't compact
    clip planes, we skip over ones which aren't active (via the continue
    statement).  We also set set nr_userclip_plane_consts to the number of
    active clip planes, which means that we end the loop after checking that
    many bits.  If the set of clip planes wasn't contiguous, this means we'd
    fail to find the last few.
    
    By changing the iteration to MAX_CLIP_PLANES, we correctly find all of
    the active clip planes.
    
    Fixes regressions since 66c8473e028d (replacing the old VS backend) in
    Piglit's spec/glsl-1.20/execution/clipping/fixed-clip-enables and
    oglconform's mustpass(basic.clip) and userclip(basic.allCases).
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56791
    Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
Comment 5 lu hua 2012-11-15 01:22:45 UTC
Verified.Fixed by commit fe2ef4b810ad1c2e712881742000bc0950b72660.


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.