Bug 72619 - [llvmpipe] piglit copyteximage 2D regression
Summary: [llvmpipe] piglit copyteximage 2D regression
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Other (show other bugs)
Version: git
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: mesa-dev
QA Contact:
URL:
Whiteboard:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2013-12-12 00:46 UTC by Vinson Lee
Modified: 2013-12-31 07:36 UTC (History)
3 users (show)

See Also:
i915 platform:
i915 features:


Attachments
use i8 ptr instead of i32 ptr for load/store of mxcsr (1.40 KB, patch)
2013-12-13 02:58 UTC, Roland Scheidegger
Details | Splinter Review

Description Vinson Lee 2013-12-12 00:46:10 UTC
mesa: e84a1ab3c400f819408a7ebe01c2325cd59d94d3 (master)

$ ./bin/copyteximage 2D -auto

Testing GL_TEXTURE_2D
Texture target = GL_TEXTURE_2D, Internal format = GL_RED
Illegal sampler view creation without bind flag
Texture target = GL_TEXTURE_2D, Internal format = GL_RG
Illegal sampler view creation without bind flag
Texture target = GL_TEXTURE_2D, Internal format = GL_RGB8
Illegal sampler view creation without bind flag
Texture target = GL_TEXTURE_2D, Internal format = GL_RGB16
Illegal sampler view creation without bind flag
Texture target = GL_TEXTURE_2D, Internal format = GL_RGB16F
Illegal sampler view creation without bind flag
Intrinsic has incorrect argument type!
void (i32*)* @llvm.x86.sse.stmxcsr
Intrinsic has incorrect argument type!
void (i32*)* @llvm.x86.sse.stmxcsr
Intrinsic has incorrect argument type!
void (i32*)* @llvm.x86.sse.ldmxcsr
Intrinsic has incorrect argument type!
void (i32*)* @llvm.x86.sse.ldmxcsr
Broken module found, verification continues.


155139059ba588da1161eaa692515cacdead9f4e is the first bad commit
commit 155139059ba588da1161eaa692515cacdead9f4e
Author: Zack Rusin <zackr@vmware.com>
Date:   Fri Dec 6 01:28:25 2013 -0500

    llvmpipe: fix blending with half-float formats
    
    The fact that we flush denorms to zero breaks our half-float
    conversion and blending. This patches enables denorms for
    blending. It's a little tricky due to the llvm bug that makes
    it incorrectly reorder the mxcsr intrinsics:
    http://llvm.org/bugs/show_bug.cgi?id=6393
    
    Signed-off-by: Zack Rusin <zackr@vmware.com>
    Reviewed-by: José Fonseca <jfonseca@vmware.com>
    Reviewed-by: Roland Scheidegger <sroland@vmware.com>
    Signed-off-by: Zack Rusin <zackr@vmware.com>

:040000 040000 5564b14ae9b7870ae8f4845f2069878c0752d5bc 84eb2a43a71956a57817e373117c2e2952a058d2 M	src
bisect run success
Comment 1 Roland Scheidegger 2013-12-12 01:18:34 UTC
Hmm works for me, with llvm 3.1
Though looking at the intrinsics code I believe the pointer should be i8 type, not i32. Hence should probably allocate i32 var then cast the pointer to i8* type for stmxcsr/ldmxcsr.
I suspect newer llvm versions are more strict with using right pointer type.
Comment 2 Roland Scheidegger 2013-12-13 02:58:50 UTC
Created attachment 90688 [details] [review]
use i8 ptr instead of i32 ptr for load/store of mxcsr

Could you try this patch? Still works with llvm 3.1 with this, and I don't know what llvm versions are affected.
Comment 3 Vinson Lee 2013-12-13 06:06:44 UTC
The bug can be reproduced with llvm 3.2 and newer.
Comment 4 Vinson Lee 2013-12-31 07:36:29 UTC
commit 27d47bd42f417db96842c9453092acf68944a4c8
Author: Roland Scheidegger <sroland@vmware.com>
Date:   Fri Dec 13 21:20:05 2013 +0100

    gallivm: fix pointer type for stmxcsr/ldmxcsr
    
    The argument is a i8 pointer not a i32 pointer (even though the value actually
    stored/loaded IS i32). Older llvm versions didn't care but 3.2 and newer do
    leading to crashes.
    
    Reviewed-by: Zack Rusin <zackr@vmware.com>


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.