Bug 43999

Summary: [SNB] oglc glsl-bif-tex-grad(basic.textureProjGradOffset.2D.float.vec4) fails with -u vs
Product: Mesa Reporter: Guang Yang <guang.a.yang>
Component: Drivers/DRI/i965Assignee: Kenneth Graunke <kenneth>
Status: CLOSED WONTFIX QA Contact: Intel 3D Bugs Mailing List <intel-3d-bugs>
Severity: normal    
Priority: medium CC: idr, yangweix.shui
Version: git   
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: output

Description Guang Yang 2011-12-20 23:13:27 UTC
System Environment:
--------------------------
Arch:           i386
Platform:       Sandybridge
Libdrm:		(master)2.4.29-3-gef20301a11afae50bfe127002913dbd0b81ddccc
Mesa:		(master)67e6a40605c482617afa9bd698003ea15e8f8f6e
Xserver:		
(master)xorg-server-1.11.99.2-10-ge4b4d83fad37bb737e25f7226dbcd15b892f9528
Xf86_video_intel:		
(master)2.17.0-179-g4c2a97e9d2b1073f0e4b3f7b6670939e1b1c5121
Kernel:	(drm-intel-next)097354eb14fa94d31a09c64d640643f58e4a5a9a

Bug detailed description:
------------------------- 
It failed only on SNB, the same failure as below cases:
glsl-bif-tex-grad(basic.textureGradOffset.2D.float)
glsl-bif-tex-grad(basic.textureProjGrad.2D.float.vec3)
glsl-bif-tex-grad(basic.textureProjGrad.2D.float.vec4)
glsl-bif-tex-grad(basic.textureProjGradOffset.2D.float.vec3)
glsl-bif-tex-grad(basic.textureProjGradOffset.2D.float.vec4)
glsl-bif-tex-grad(advanced.textureGrad.1D.float)
glsl-bif-tex-grad(advanced.textureGradOffset.1D.float)
glsl-bif-tex-grad(advanced.textureProjGrad.1D.float.vec2)
glsl-bif-tex-grad(advanced.textureProjGrad.1D.float.vec4)
glsl-bif-tex-grad(advanced.textureProjGradOffset.1D.float.vec2)
glsl-bif-tex-grad(advanced.textureProjGradOffset.1D.float.vec4)
glsl-bif-tex-grad(advanced.textureProjGradOffset.3D.float)

Bisect shows 37d24a70daa41bbad9c7a85dd432f561a172e858 is the first bad commit
commit 37d24a70daa41bbad9c7a85dd432f561a172e858
Author:     Kenneth Graunke <kenneth@whitecape.org>
AuthorDate: Thu Oct 27 21:57:48 2011 -0700
Commit:     Kenneth Graunke <kenneth@whitecape.org>
CommitDate: Mon Dec 19 16:33:11 2011 -0800

    i965: Advertise our vertex shader texture units.
    
    Previously, we advertised 0 VS texture units.  Now that we have proper
    support for using the sampling engine in the VS, we can advertise 16,
    which is conveniently the number required for OpenGL 3.0.
    
    v2: Enable on Gen4.  I hacked up my tests to not use flat ivec varyings
        and they pass.
    
    Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>

Reproduce steps:
----------------
1. start X
2. ./oglconform -z -s -suite all -v 2 -test glsl-bif-tex-grad basic.textureGrad.2D.float
Comment 1 Kenneth Graunke 2011-12-20 23:24:49 UTC
Thanks for the report.  I'll look into it ASAP.
Comment 2 Guang Yang 2011-12-21 01:21:42 UTC
The below cases are segfault on SNB/ILK:
shad-compiler(advanced.TestTexture2D_VertShader)
shad-compiler(advanced.TestTexture2DProj_vec3_VertShader)
shad-compiler(advanced.TestTexture2DProj_vec4_VertShader)
shad-compiler(advanced.TestTexture2DLod_VertShader)
shad-compiler(advanced.TestTexture2DProjLod_vec3_VertShader)
shad-compiler(advanced.TestTexture2DProjLod_vec4_VertShader)
shad-compiler(advanced.TestTexture3DProj_VertShader)
shad-compiler(advanced.TestTexture3DLod_VertShader)
shad-compiler(advanced.TestTexture3DProjLod_VertShader)
shad-compiler(advanced.TestTextureCube_VertShader)
shad-compiler(advanced.TestTextureCubeLod_VertShader)
shad-compiler(advanced.TestShadow2D_VertShader)
shad-compiler(advanced.TestShadow2DProj_VertShader)
shad-compiler(advanced.TestShadow2DLod_VertShader)
shad-compiler(advanced.TestShadow2DProjLod_VertShader)

here is a backtrace with shad-compiler(advanced.TestTexture2D_VertShader)
(gdb) bt
#0  0xb7b7faa0 in extract_float_rgba (n=128, rgba=0xa0daa58, srcFormat=6408, srcType=5126, src=0xa366d00, swapBytes=0 '\000')
    at main/pack.c:2525
#1  0xb7b818ff in _mesa_unpack_color_span_ubyte (ctx=0x9cb8158, n=128, dstFormat=6408, dest=0xa0ad080 "\245R)?\350\363y?", srcFormat=6408, 
    srcType=5126, source=0xa366d00, srcPacking=0xbfffdee0, transferOps=<value optimized out>) at main/pack.c:3665
#2  0xb7ba8c18 in _mesa_make_temp_ubyte_image (ctx=0x9cb8158, dims=3, logicalBaseFormat=6408, textureBaseFormat=6408, srcWidth=128, 
    srcHeight=128, srcDepth=1, srcFormat=6408, srcType=5126, srcAddr=0xa306d50, srcPacking=0xbfffdee0) at main/texstore.c:609
#3  0xb7baae86 in _mesa_texstore_argb8888 (ctx=0x9cb8158, dims=3, baseInternalFormat=6408, dstFormat=MESA_FORMAT_ARGB8888, dstXoffset=0, 
    dstYoffset=0, dstZoffset=0, dstRowStride=2048, dstSlices=0xa0d2348, srcWidth=128, srcHeight=128, srcDepth=1, srcFormat=6408, 
    srcType=5126, srcAddr=0xa306d50, srcPacking=0xbfffdee0) at main/texstore.c:1540
#4  0xb7ba52d9 in _mesa_texstore (ctx=0x9cb8158, dims=3, baseInternalFormat=6408, dstFormat=MESA_FORMAT_ARGB8888, dstXoffset=0, 
    dstYoffset=0, dstZoffset=0, dstRowStride=2048, dstSlices=0xa0d2348, srcWidth=128, srcHeight=128, srcDepth=1, srcFormat=6408, 
    srcType=5126, srcAddr=0xa306d50, srcPacking=0xbfffdee0) at main/texstore.c:4541
#5  0xb7ba5e72 in _mesa_store_teximage3d (ctx=0x9cb8158, target=3553, level=2, internalFormat=6408, width=128, height=128, depth=1, 
    border=0, format=6408, type=5126, pixels=0xa306d50, packing=0xbfffdee0, texObj=0x9cad3e0, texImage=0x9ff9530) at main/texstore.c:4798
#6  0xb7aa4261 in intelTexImage (ctx=0x9cb8158, dims=<value optimized out>, target=3553, level=2, internalFormat=6408, width=128, 
    height=128, depth=1, format=6408, type=5126, pixels=0xa306d50, unpack=0xbfffdee0, texObj=0x9cad3e0, texImage=0x9ff9530, imageSize=0)
    at intel_tex_image.c:225
#7  0xb7b9f655 in teximage (ctx=0xbffef3fc, dims=2, target=3553, level=2, internalFormat=6408, width=128, height=128, depth=1, border=0, 
    format=6408, type=5126, pixels=0xa306d50) at main/teximage.c:2489
#8  0xb7ba007e in _mesa_TexImage2D (target=3553, level=2, internalFormat=6408, width=130, height=130, border=1, format=6408, type=5126, 
    pixels=0xa306d50) at main/teximage.c:2543
#9  0x083c45a4 in Tex2DDrawLoop(char*, float*, float*, float*, unsigned char, unsigned char) ()
#10 0x083c5eec in TestTexture2D_VertShader() ()
#11 0x083c73c7 in ShaderCompilerExec(testParameters*) ()
#12 0x08d8d668 in callFunctionHandleExceptionsInner(long (*)(testParameters*), testParameters*, char*) ()
#13 0x08d8d7b7 in callFunctionHandleExceptions(long (*)(testParameters*), testParameters*) ()
#14 0x08d8c2d9 in DriverExec(long (*)(testParameters*), testParameters*) ()
#15 0x08d71d41 in Driver(std::vector<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<driverRec*, std::allocator<driverRec*> > const&, std::vector<boost::shared_ptr<PrePostTestAction>, std::allocator<boost::shared_ptr<PrePostTestAction> > > const&, std::vector<boost::shared_ptr<PrePostTestcaseAction>, std::allocator<boost::shared_ptr<PrePostTestcaseAction> > > const&) ()
#16 0x08d720fe in (anonymous namespace)::MyMessagePump::idle() ()
#17 0x08d45dfa in MessagePump::process_messages() ()
Comment 3 Gordon Jin 2012-01-12 00:59:56 UTC
Ken
Comment 4 Kenneth Graunke 2012-01-16 10:29:21 UTC
The shad-compiler segfaults are a separate issue; could you please split those into a separate bug report?  Thanks.
Comment 5 Kenneth Graunke 2012-01-27 16:14:19 UTC
The shad-compiler tests work fine on SNB with Mesa master.  Some of them fail due to unrelated PushAttrib/PopAttrib issues with stencil parameters, but OGLconform ignores that issue for nVidia and the Intel Windows driver, so it's unclear whether it's actually a driver bug or not.

That said, none of those segfault on SNB.  Since there are no crashes and, as far as I can tell, no regressions in the fragment shader texturing support, I'm removing this from the release blocker list.  We can figure out why the tex-grad VS tests fail later.
Comment 6 Gordon Jin 2012-03-31 18:06:03 UTC
Guang, can you update the test result, to confirm there's no crash?
Comment 7 Guang Yang 2012-04-05 18:30:46 UTC
System Environment:
--------------------------
Arch:           i386
Platform:       SandyBridge
Libdrm:         (master)2.4.32-2-g617213357e94299a5e9a3cb1342de55de949d156
Mesa:           (master)9cb777eb71dde895ca0ad3454a9b44252e9b402e
Xserver:   (master)xorg-server-1.12.0-47-g7f3997b01a8813c1d7055317eb06111aed8572c9
Xf86_video_intel:   (master)2.18.0-151-g2e7b5f7eafbf452c781e50eba7dc8323260af59e
Cairo:          (master)fba21ef2a4c4eb343668267fda713aedbb6af2a4
Libva:          (vaapi-ext)f8be4a5477e58c4a27170f0c87eeedac8de60aef
Libva_intel_driver:   (vaapi-ext)82fa52510a37ab645daaa3bb7091ff5096a20d0b
Kernel_unstable: (drm-intel-next-queued)e7e58eb5c0d1d7d1a42fcb2b5a247d28ec08b47e

Detailed description:
------------------------- 
The segemault cases run with a pass result.
these cases were segemault before,but pass now:

shad-compiler(advanced.TestTexture2D_VertShader)
shad-compiler(advanced.TestTexture2DProj_vec3_VertShader)
shad-compiler(advanced.TestTexture2DProj_vec4_VertShader)
shad-compiler(advanced.TestTexture2DLod_VertShader)
shad-compiler(advanced.TestTexture2DProjLod_vec3_VertShader)
shad-compiler(advanced.TestTexture2DProjLod_vec4_VertShader)
shad-compiler(advanced.TestTexture3DProj_VertShader)
shad-compiler(advanced.TestTexture3DLod_VertShader)
shad-compiler(advanced.TestTexture3DProjLod_VertShader)
shad-compiler(advanced.TestTextureCube_VertShader)
shad-compiler(advanced.TestTextureCubeLod_VertShader)
shad-compiler(advanced.TestShadow2D_VertShader)
shad-compiler(advanced.TestShadow2DProj_VertShader)
shad-compiler(advanced.TestShadow2DLod_VertShader)
shad-compiler(advanced.TestShadow2DProjLod_VertShader)

And the fail cases reported at this bug still fail now.
Comment 8 Kenneth Graunke 2012-08-02 21:27:57 UTC
While we want to fix the glsl-bif-tex bugs, I've spent weeks working on these and made no progress.  Many of them produce random results.  Lowering the priority; there are plenty of oglconform failures left to fix.
Comment 9 lu hua 2012-08-07 08:12:40 UTC
system environment:
Mesa:  (master)61b62c007a7941e9b45e83440e932160a597e0e1
Kernel:(drm-intel-next-queued) ab3951eb74e7c33a2f5b7b64d72e82f1eea61571

glsl-bif-tex-grad(basic.textureGrad.2D.float) becomes pass, I run it 20 cycles.

Following cases still fail, I run them 20 cycles. they fail all 20 runs.
glsl-bif-tex-grad(basic.textureProjGradOffset.2D.float.vec4)
glsl-bif-tex-grad(advanced.textureProjGradOffset.1D.float.vec4)
glsl-bif-tex-grad(advanced.textureProjGradOffset.3D.float)

run: ./oglconform -z -suite all -v 2 -D 141 -test glsl-bif-tex-grad \ basic.textureProjGradOffset.2D.float.vec4

Visual Report for ID 141 (32 bits).
ID      |ACCELERA|DB      |REND_T  |SURF_T  |C_BUF_T |BUF_S   |RED_S   |
     141|       1|       1|      gl|  wipbpx|    rgba|      32|       8|

GREEN_S |BLUE_S  |ALPHA_S |DEPTH_S |STENC_S |ACCUM_S |SPL_BUF |SAMPLES |
       8|       8|       8|      24|       8|      64|       0|       0|

SRGB    |TEX_RGB |TEX_RGBA|CAVEAT  |SWAP    |M_PBUF_W|M_PBUF_H|M_PBUF_P
      -1|       0|       0|    slow|   undef|       0|       0|       0
Comment 10 lu hua 2012-08-07 08:14:08 UTC
Created attachment 65223 [details]
output
Comment 11 Kenneth Graunke 2012-08-07 09:04:55 UTC
(In reply to comment #9)
> Following cases still fail, I run them 20 cycles. they fail all 20 runs.
> glsl-bif-tex-grad(basic.textureProjGradOffset.2D.float.vec4)
> glsl-bif-tex-grad(advanced.textureProjGradOffset.1D.float.vec4)
> glsl-bif-tex-grad(advanced.textureProjGradOffset.3D.float)
> 
> run: ./oglconform -z -suite all -v 2 -D 141 -test glsl-bif-tex-grad \
> basic.textureProjGradOffset.2D.float.vec4

You're right, basic.textureProjGradOffset.2D.float.vec4 does seem to fail consistently.  Running it with -u fs (fragment shader only), it seems to pass every time, while running it with -u vs (vertex shader only), it fails every time.
Comment 12 Gordon Jin 2012-08-09 00:39:54 UTC
Ken, so shall we consider this as true regression, and put it back to high priority?
Comment 13 Kenneth Graunke 2012-08-09 02:09:47 UTC
No...it's not really a regression.  The existing fragment shader implementation continues to work fine (running the test with -u fs passes).  The new vertex shader support doesn't (it fails with -u vs).

textureProjGradOffset in the VS is an extremely obscure case.  I'd actually be surprised to see anyone use it.
Comment 14 Gordon Jin 2015-06-16 07:03:28 UTC
closing as won't fix.

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.