Bug 73862

Summary: [i965 Bisected]Piglit/many piglit cases fail
Product: Mesa Reporter: lu hua <huax.lu>
Component: Drivers/DRI/i965Assignee: Kristian Høgsberg <krh>
Status: VERIFIED FIXED QA Contact: Intel 3D Bugs Mailing List <intel-3d-bugs>
Severity: major    
Priority: high CC: chadversary, idr
Version: unspecified   
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description lu hua 2014-01-21 05:52:46 UTC
System Environment:
--------------------------
Platform: Ironlake/Sandybridge/Ivybridge/Haswell/Baytrail
Libdrm:		(master)libdrm-2.4.51-7-gcb4bc8ead63cb213a26bcc8d14b2b44d9fb967da
Mesa:		(master)05da4a7a5e7d5bd988cb31f94ed8e1f053d9ee39
Xserver:	(master)xorg-server-1.15.0-1-ga92c6406e7f6c0b74fb1cb9361ad904facc0f722
Xf86_video_intel:(master)2.99.907-30-g50a45a1cdd4d8319ba9358974d241069689591c5
Cairo:		(master)2a7f133639bed86a29dd9693cb78c0aa42eaff30
Libva:		(staging)6f906532ff7792e26c605d4c7c8e7400dc430347
Libva_intel_driver:(staging)6736a39fce442a8e5abb2a2e99adf56e3965d35f
Kernel:	(drm-intel-nightly) 164a4cb4c1431a0689f85507868356fae24da638

Bug detailed description:
-----------------------------
It fails on Ironlake/Sandybridge/Ivybridge/Haswell/Baytrail with mesa master branch. It doesn't happen on 10.0 branch.
Following cases fail with same commit:
glean_fragProg1-ABS_test
glean_fragProg1-ADD_an_immediate
glean_fragProg1-ADD_negative_immediate
glean_fragProg1-ADD_negative_immediate_(2)
glean_fragProg1-ADD_test
glean_fragProg1-ADD_with_saturation
glean_fragProg1-ARB_fog_exp2_test
glean_fragProg1-ARB_fog_exp_test
glean_fragProg1-ARB_fog_linear_test
glean_fragProg1-CMP_test
glean_fragProg1-Computed_fog_exp2_test
glean_fragProg1-Computed_fog_exp_test
glean_fragProg1-Computed_fog_linear_test
glean_fragProg1-COS_test
glean_fragProg1-COS_test_2
glean_fragProg1-DP3_test
glean_fragProg1-DP3_test_(2)
glean_fragProg1-DP4_test
glean_fragProg1-DPH_test
glean_fragProg1-DST_test
glean_fragProg1-EX2_test
glean_fragProg1-FLR_test
glean_fragProg1-FRC_test
glean_fragProg1-LG2_test
glean_fragProg1-LIT_test_1
glean_fragProg1-LIT_test_2_(degenerate_case:_0_^_0_->_1)
glean_fragProg1-LIT_test_3_(case_x_<_0)
glean_fragProg1-MAD_test
glean_fragProg1-masked_MUL_test
glean_fragProg1-MAX_test
glean_fragProg1-MIN_test
glean_fragProg1-MOV_test
glean_fragProg1-MUL_test
glean_fragProg1-POW_test_(exponentiation)
glean_fragProg1-RCP_test_(reciprocal)
glean_fragProg1-RCP_test_2_(reciprocal)
glean_fragProg1-RSQ_test_1_(reciprocal_square_root)
glean_fragProg1-RSQ_test_2_(reciprocal_square_root_of_negative_value)
glean_fragProg1-SCS_test
glean_fragProg1-SGE_test
glean_fragProg1-SIN_test
glean_fragProg1-SIN_test_2
glean_fragProg1-SLT_test
glean_fragProg1-SUB_test_(with_swizzle)
glean_fragProg1-SUB_with_saturation
glean_fragProg1-swizzled_add_test
glean_fragProg1-swizzled_move_test
glean_fragProg1-SWZ_test
glean_fragProg1-XPD_test_1
glean_fragProg1-Z-write_test
glean_makeCurrent
glean_occluquery
glean_orthoPosHLines
glean_orthoPosPoints
glean_orthoPosRandRects
glean_orthoPosRandTris
glean_orthoPosTinyQuads
glean_orthoPosVLines
glean_pbo
glean_pixelFormats
glean_pointAtten
glean_readPixSanity
glean_texCombine4
glean_texEnv
glean_vertProg1-ABS_test
glean_vertProg1-ADD_test
glean_vertProg1-ARL_test
glean_vertProg1-DP3_test
glean_vertProg1-DP4_test
glean_vertProg1-DPH_test
glean_vertProg1-DST_test
glean_vertProg1-EX2_test
glean_vertProg1-EXP_test
glean_vertProg1-FLR_test
glean_vertProg1-FRC_test
glean_vertProg1-LG2_test
glean_vertProg1-LIT_test_1
glean_vertProg1-LIT_test_2_(degenerate_case:_0_^_0_->_1)
glean_vertProg1-LIT_test_3_(case_x_<_0)
glean_vertProg1-LOG_test
glean_vertProg1-MAD_test
glean_vertProg1-MAX_test
glean_vertProg1-MIN_test
glean_vertProg1-MOV_test_(with_swizzle)
glean_vertProg1-MUL_test_(with_swizzle_and_masking)
glean_vertProg1-Position_write_test_(compute_position_from_texcoord)
glean_vertProg1-POW_test_(exponentiation)
glean_vertProg1-RCP_test_(reciprocal)
glean_vertProg1-RSQ_test_1_(reciprocal_square_root)
glean_vertProg1-RSQ_test_2_(reciprocal_square_root_of_negative_value)
glean_vertProg1-SGE_test
glean_vertProg1-SLT_test
glean_vertProg1-State_reference_test_1_(material_ambient)
glean_vertProg1-State_reference_test_2_(light_products)
glean_vertProg1-State_reference_test_3_(fog_params)
glean_vertProg1-SUB_test_(with_swizzle)
glean_vertProg1-SWZ_test_1
glean_vertProg1-SWZ_test_2
glean_vertProg1-SWZ_test_3
glean_vertProg1-SWZ_test_4
glean_vertProg1-SWZ_test_5
glean_vertProg1-XPD_test_1
glean_vertProg1-XPD_test_2_(same_src_and_dst_arg)
glx_glx-swap-singlebuffer
glx_glx-visuals-depth
glx_glx-visuals-depth_-pixmap
glx_glx-visuals-stencil
glx_glx-visuals-stencil_-pixmap
hiz_hiz-depth-read-window-stencil0
hiz_hiz-depth-read-window-stencil1
hiz_hiz-depth-test-window-stencil0
hiz_hiz-depth-test-window-stencil1
hiz_hiz-stencil-read-window-depth0
hiz_hiz-stencil-read-window-depth1
hiz_hiz-stencil-test-window-depth0
hiz_hiz-stencil-test-window-depth1
spec_ARB_fragment_program_fp-indirections2
spec_ARB_fragment_program_fp-long-alu
spec_ARB_robustness_arb_robustness_client-mem-bounds
spec_OpenGL_1.1_depthfunc
spec_OpenGL_1.1_fdo10370
spec_OpenGL_1.2_tex3d
spec_OpenGL_1.2_teximage-errors
spec_OpenGL_2.0_tex3d-npot

Bisect shows: 05da4a7a5e7d5bd988cb31f94ed8e1f053d9ee39 is the first bad commit.
commit 05da4a7a5e7d5bd988cb31f94ed8e1f053d9ee39
Author:     Kristian Høgsberg <krh@bitplanet.net>
AuthorDate: Fri Jan 17 16:55:31 2014 -0800
Commit:     Kristian Høgsberg <krh@bitplanet.net>
CommitDate: Sun Jan 19 20:48:19 2014 -0800

    i965: Only update renderbuffers on initial intelMakeCurrent

    We call intel_prepare_render() in intelMakeCurrent() to make sure we have
    renderbuffers before calling _mesa_make_current().  The only reason we
    do this is so that we can have valid defaults for width and height.
    If we already have buffers for the drawable we're making current, we
    don't need this step.

    In itself, this is a small optimization, but it also avoids a round trip
    that could block on the display server in a unexpected place.

    https://bugs.freedesktop.org/show_bug.cgi?id=72540
    https://bugs.freedesktop.org/show_bug.cgi?id=72612

    Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
    Reviewed-by: Chad Versace <chad.versace@linux.intel.com>

run case spec_OpenGL_1.1_depthfunc
bin/depthfunc -auto 
output:
Probe color at (15,15) 
Expected: 0.000000 1.000000 0.000000 
Observed: 0.000000 0.000000 0.000000 
PIGLIT: {'result': 'fail' }

Reproduce steps:
----------------------------
1. xinit
2. bin/depthfunc -auto
Comment 1 Kristian Høgsberg 2014-01-22 20:38:20 UTC
Fix pushed to master:

commit 11baad35088dfd4bdabc1710df650dbfb413e7a3
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Tue Jan 21 12:17:03 2014 -0800

    intel: Fix initial MakeCurrent for single-buffer drawables
    
    Commit 05da4a7a5e7d5bd988cb31f94ed8e1f053d9ee39 attempts to eliminate the
    call to intel_update_renderbuffer() in the case where we already have a
    drawbuffer for the drawable.  Unfortunately this only checks the
    back left renderbuffer, which breaks in case of single buffer drawables.
    
    This means that the initial viewport will not be set in that case.  Instead,
    we now check whether the initial viewport has not been set, in which case
    we call out to intel_update_renderbuffer().
    
    https://bugs.freedesktop.org/show_bug.cgi?id=73862
    
    Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
Comment 2 lu hua 2014-01-24 07:11:59 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.