Bug 77553

Summary: [ILK] piglit.spec.arb_texture_cube_map.copyteximage cube fails
Product: Mesa Reporter: lu hua <huax.lu>
Component: Drivers/DRI/i965Assignee: Intel 3D Bugs Mailing List <intel-3d-bugs>
Status: RESOLVED MOVED QA Contact: Intel 3D Bugs Mailing List <intel-3d-bugs>
Severity: major    
Priority: lowest CC: brad.king, christophe.prigent, idr, rhyskidd
Version: unspecifiedKeywords: bisected, regression
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description lu hua 2014-04-17 02:58:22 UTC
System Environment:
--------------------------
Platform: Ironlake/Sandybridge
Libdrm:		(master)libdrm-2.4.53
Mesa:		(master)6d0e30c6a332de9ea7ab00e1fd303df2fb337c64
Xserver:	(master)xorg-server-1.15.99.902-2-g3028ae6c9aa37168e249e0d847b29f8e3efb05b2
Xf86_video_intel:(master)2.99.911-80-gfd0579016be9e0385c0cdd07a9f9e17f93b93a4f
Cairo:		(master)bb17403622e9ea474017e0039af8ee48b2b285db
Libva:		(staging)960352aaf1e11891a533ce2c98b16edde24d6851
Libva_intel_driver:(staging)782b8afdda14f000874d8acf51c3e8c490d55773
Kernel:	(drm-intel-nightly) 45912bd2d9d3d8f8e78e81bbab25251c6b17c5f8

Bug detailed description:
-----------------------------
It fails on Ironlake and Sandybrisge with mesa master branch, works well on 10.1 branch,
spec_EXT_texture_array_copyteximage_1D_ARRAY and spec_EXT_texture_array_copyteximage_2D_ARRAY also fail with same bisect commit.

Bisect shows: 234db609544ee521458ce8b648e70cffe2fda6f9 is the first bad commit.
commit 234db609544ee521458ce8b648e70cffe2fda6f9
Author:     Eric Anholt <eric@anholt.net>
AuthorDate: Fri Feb 28 13:23:25 2014 -0800
Commit:     Eric Anholt <eric@anholt.net>
CommitDate: Tue Apr 15 14:34:22 2014 -0700

    meta: Add an accelerated glCopyTexSubImage using glBlitFramebuffer.

    You'll note from the previous commits that there's something of a loop
    here: You call CTSI, which calls BlitFB, then if things go wrong that
    falls back to CTSI.  As a result, meta CTSI reaches over into blitfb to
    tell it "no, don't try that fallback".

    v2: Drop the _mesa_update_state(), which was only necessary due to use of
        _mesa_clip_blit() in _mesa_meta_BlitFramebuffer() in another patch
        series.
    v3: Drop an _EXT suffix I copy-and-pasted.

    Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (v2)
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>

output:
Testing GL_TEXTURE_CUBE_MAP
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RED
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RG
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB8
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB16
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB16F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB32F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA8
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA16
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA16F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA32F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RED
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RG
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RGB
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RGBA
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_LUMINANCE
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_LUMINANCE_ALPHA
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_INTENSITY
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT16
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT24
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT32F
WARNING: Depth/stencil buffer needs alignment to 8-pixel boundaries.
Truncating offset, bad rendering may occur.
WARNING: Depth/stencil buffer needs alignment to 8-pixel boundaries.
Truncating offset, bad rendering may occur.
Probe color at (336,12)
  Expected: 0.637500 0.637500 0.637500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (348,0)
  Expected: 0.412500 0.412500 0.412500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (336,12)
  Expected: 0.187500 0.187500 0.187500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH24_STENCIL8
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH32F_STENCIL8
Probe color at (368,12)
  Expected: 0.637500 0.637500 0.637500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (380,0)
  Expected: 0.412500 0.412500 0.412500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (368,12)
  Expected: 0.187500 0.187500 0.187500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
PIGLIT: {'result': 'fail' }


Reproduce steps:
---------------------------- 
1. xinit
2. ./bin/copyteximage CUBE -auto
Comment 1 Brad King 2014-04-23 13:26:35 UTC
Commit 234db609544ee521458ce8b648e70cffe2fda6f9 also regressed VTK tests that use transparency (depth peeling), with mesa configured as:

 ./autogen.sh --prefix=... --disable-dri --disable-egl --disable-shared-glapi --enable-xlib-glx --enable-osmesa --without-gallium-drivers

The problem goes away if I remove the call to copytexsubimage_using_blit_framebuffer added by that commit.  I'm happy to provide more information about the tests if needed.
Comment 2 lu hua 2014-05-09 01:53:46 UTC
It also fails on Mesa 10.2 branch.
Comment 3 Kenneth Graunke 2014-08-02 04:51:19 UTC
Previously, the Meta CopyTexSubImage path would do ReadPixels and TexImage.  The TexImage was done via CPU mappings.

With this patch, it uses Meta BlitFramebuffer, which does texturing and rendering.  Unfortunately, it hits a limitation in our Gen4-6 rendering path: the hardware ignores the low bits of the surface tile offsets.  So, we get bad rendering.

Jordan's gen6-layered series fixes this on Sandybridge.  Thus, reassigning to him.  I'm not sure what to do about Ironlake.
Comment 4 Jordan Justen 2014-09-02 20:05:41 UTC
For SNB only, this should be resolved in master
a1dca7069bd46074f43658c87d396bff8cd4dffd. Please verify.
Comment 5 lu hua 2014-09-03 05:28:31 UTC
Fixed on SNB with latest master branch.It still fails on ILK.
output on SNB:
Testing GL_TEXTURE_CUBE_MAP
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RED
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RG
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB8
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB16
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB16F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB32F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA8
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA16
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA16F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA32F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RED
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RG
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RGB
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RGBA
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_LUMINANCE
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_LUMINANCE_ALPHA
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_INTENSITY
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT16
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT24
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT32F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH24_STENCIL8
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH32F_STENCIL8
PIGLIT: {"result": "pass" }

output on ILK:
Testing GL_TEXTURE_CUBE_MAP
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RED
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RG
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB8
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB16
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB16F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGB32F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA8
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA16
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA16F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_RGBA32F
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RED
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RG
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RGB
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_COMPRESSED_RGBA
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_LUMINANCE
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_LUMINANCE_ALPHA
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_INTENSITY
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT
WARNING: Depth/stencil buffer needs alignment to 8-pixel boundaries.
Truncating offset, bad rendering may occur.
Probe color at (288,10)
  Expected: 0.637500 0.637500 0.637500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (288,12)
  Expected: 0.525000 0.525000 0.525000 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (302,0)
  Expected: 0.412500 0.412500 0.412500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (288,10)
  Expected: 0.187500 0.187500 0.187500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT16
Probe color at (304,10)
  Expected: 0.637500 0.637500 0.637500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (304,12)
  Expected: 0.525000 0.525000 0.525000 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (318,0)
  Expected: 0.412500 0.412500 0.412500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (304,10)
  Expected: 0.187500 0.187500 0.187500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT24
Probe color at (320,10)
  Expected: 0.637500 0.637500 0.637500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (320,12)
  Expected: 0.525000 0.525000 0.525000 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (334,0)
  Expected: 0.412500 0.412500 0.412500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (320,10)
  Expected: 0.187500 0.187500 0.187500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH_COMPONENT32F
Probe color at (336,10)
  Expected: 0.637500 0.637500 0.637500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (336,12)
  Expected: 0.525000 0.525000 0.525000 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (350,0)
  Expected: 0.412500 0.412500 0.412500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Probe color at (336,10)
  Expected: 0.187500 0.187500 0.187500 1.000000
  Observed: 0.000000 0.000000 0.000000 1.000000
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH24_STENCIL8
Texture target = GL_TEXTURE_CUBE_MAP, Internal format = GL_DEPTH32F_STENCIL8
PIGLIT: {"result": "fail" }
Comment 6 Kaveh 2014-10-31 21:34:13 UTC
Lowering the priority of this bug, since it only shows up on ILK.
Comment 7 GitLab Migration User 2019-09-25 18:51:20 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/1440.

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.