Bug 42255

Summary: [bisected] olgc misctest(basic.textureBorderIgnore) segfaults
Product: Mesa Reporter: fangxun <xunx.fang>
Component: Drivers/DRI/i965Assignee: Ian Romanick <idr>
Status: CLOSED WONTFIX QA Contact:
Severity: normal    
Priority: high CC: brianp
Version: git   
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description fangxun 2011-10-25 23:33:14 UTC
System Environment:
--------------------------
Arch:           i386
Platform:       huronriver
Libdrm: (master)cc088f1721eaa5f8f1ba1932723882f92e34c39a
Mesa:           (master)faa16dc456f1f910eef24eaa23889be806b513b7
Xserver:  (master)fb84be47db7cdaff406792c08e34670e8e0cbda9
Xf86_video_intel: (master)2.16.0-205-ga18f559961135fa288dda3b94207abb0b6d4d302
Kernel:  (drm-intel-next)64a742fac3a22f57303d8f1b7e347350a1c48254

Bug detailed description:
------------------------- 
It segfaults on Ironlake and Sandybirdge. Oglc texedge(basic.allCases), sRGB(Environment.Border) and float-texture(border.basic) also fail on Ironlake and Sandybirdge. 
Backtrace:
Breakpoint 1 at 0xb7c2c904: file swrast/s_texfetch_tmp.h, line 655

Bisect shows 68da4b50e9b6aa72a9b155f650952620063e1b94 is the first bad commit.
commit 68da4b50e9b6aa72a9b155f650952620063e1b94
Author:     Brian Paul <brianp@vmware.com>
AuthorDate: Sun Oct 23 10:44:47 2011 -0600
Commit:     Brian Paul <brianp@vmware.com>
CommitDate: Sun Oct 23 10:44:47 2011 -0600

    mesa: add swrast_texture_image::Buffer

    In the past, swrast_texture_image::Data has been overloaded.  It could
    either point to malloc'd memory storing texture data, or it could point
    to a current mapping of GPU memory.

    Now, Buffer always points to malloc'd memory (if we're not using GPU
    memory) and Data always points to mapped memory.  The next step would
    be to rename Data -> Map.

    This change also involves adding swrast functions for mapping textures
    and renderbuffers prior to rendering to setup the Data pointer.  Plus,
    corresponding functions to unmap texures and renderbuffers.  This is
    very much like similar code in the dri drivers.


Reproduce steps:
----------------
1. start X
2. ./oglconform  -z -s -suite all -v 2 -D 115 -test misctest basic.textureBorderIgnore
Comment 1 Eric Anholt 2012-01-31 13:05:18 UTC
Works for me on 8.0 and master on snb.
Comment 2 Ian Romanick 2012-02-01 09:04:42 UTC
It looks like texedge basic.allCases and texedge basic.allCases pass.  However, misctest basic.textureBorderIgnore and float-texture border.basic still fail.

misctest basic.textureBorderIgnore fails because it tries to read the texture back (using glGetTexImage) and doesn't get the border data back.

float-texture border.basic fails because it tries to use a texture border.  From the test output:

"Test creates a texture with a border (glTexImage*D). A quad is drawn with texture coordinates outside of (0-1) range with GL_CLAMP_TO_BORDER clamping behavior. glReadPixels is used to verify correctness of border color."

The failure in misctest basic.textureBorderIgnore should be fixed at some point, but it is not a blocker.  We explicitly do not care about the failure in 
float-texture border.basic.  The hardware does not support texture borders, and falling back to software is not useful to anyone.

I'm removing this bug from the release tracker.
Comment 3 Eric Anholt 2012-03-02 11:36:38 UTC
We won't support returning the border data that was submitted -- that would require storing it, which would require a bunch of logic we were trying to avoid.

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.