Bug 70604 - [IVB Regression]Piglit spec/glsl-1.50/glsl-1.50-geometry-primitive-id-restart GL_LINES_ADJACENCY other fails
Summary: [IVB Regression]Piglit spec/glsl-1.50/glsl-1.50-geometry-primitive-id-restart...
Status: CLOSED WONTFIX
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: unspecified
Hardware: All Linux (All)
: high major
Assignee: Intel 3D Bugs Mailing List
QA Contact: Intel 3D Bugs Mailing List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-10-18 09:00 UTC by lu hua
Modified: 2014-10-09 05:45 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description lu hua 2013-10-18 09:00:44 UTC
System Environment:
--------------------------
Platform: Ivybridge
Libdrm:		(master)2.4.47
Mesa:		(master)4ef1c8fb4c0ae8d0fa2a0e4311ef63255d8485f0
Xserver:	(master)xorg-server-1.14.99.2-14-g7cf1b595c8c8f9776a39559d2878cf90af3f2859
Xf86_video_intel:(master)2.99.904-32-gec0866e86d365ae3fd9790b1b263d49fc4981220
Cairo:		(master)6f05ecf488314e4b0c6c6b0110963c449bebe7d7
Libva:		(staging)1a011ce5bb0b80506797a25a988854f3f81ce909
Libva_intel_driver:(staging)1cee858036a87837deddc87586701ed869f96261
Kernel:	(drm-intel-nightly) 164a4cb4c1431a0689f85507868356fae24da638

Bug detailed description:
-----------------------------
It fails on Ivybridge with mesa master branch, and works well on 9.2 branch.

Following cases also fail:
spec_glsl-1.50_glsl-1.50-geometry-primitive-id-restart_GL_LINES_other	
spec_glsl-1.50_glsl-1.50-geometry-primitive-id-restart_GL_LINE_LOOP_ffs	
spec_glsl-1.50_glsl-1.50-geometry-primitive-id-restart_GL_LINE_LOOP_other	
spec_glsl-1.50_glsl-1.50-geometry-primitive-id-restart_GL_LINE_STRIP_ADJACENCY_other	
spec_glsl-1.50_glsl-1.50-geometry-primitive-id-restart_GL_LINE_STRIP_other	
spec_glsl-1.50_glsl-1.50-geometry-primitive-id-restart_GL_TRIANGLES_ADJACENCY_other	
spec_glsl-1.50_glsl-1.50-geometry-primitive-id-restart_GL_TRIANGLES_other	
spec_glsl-1.50_glsl-1.50-geometry-primitive-id-restart_GL_TRIANGLE_FAN_ffs	
spec_glsl-1.50_glsl-1.50-geometry-primitive-id-restart_GL_TRIANGLE_FAN_other	
spec_glsl-1.50_glsl-1.50-geometry-primitive-id-restart_GL_TRIANGLE_STRIP_ADJACENCY_other	
spec_glsl-1.50_glsl-1.50-geometry-primitive-id-restart_GL_TRIANGLE_STRIP_other	

The latest good commit:e6c2afa9ceacc188690deba9da7b46bf1a0a9027
The latest bad commit:4ef1c8fb4c0ae8d0fa2a0e4311ef63255d8485f0

output:
Expected primitive 1 to have gl_PrimitiveIDIn = 1, got 0 instead
Expected primitive 2 to have gl_PrimitiveIDIn = 2, got 0 instead
Expected primitive 3 to have gl_PrimitiveIDIn = 3, got 0 instead
Expected primitive 4 to have gl_PrimitiveIDIn = 4, got 0 instead
Expected primitive 5 to have gl_PrimitiveIDIn = 5, got 1 instead
Expected primitive 6 to have gl_PrimitiveIDIn = 6, got 0 instead
Expected primitive 7 to have gl_PrimitiveIDIn = 7, got 1 instead
Expected primitive 8 to have gl_PrimitiveIDIn = 8, got 0 instead
Expected primitive 9 to have gl_PrimitiveIDIn = 9, got 1 instead
Expected primitive 10 to have gl_PrimitiveIDIn = 10, got 0 instead
Expected primitive 11 to have gl_PrimitiveIDIn = 11, got 1 instead
Expected primitive 12 to have gl_PrimitiveIDIn = 12, got 0 instead
Expected primitive 13 to have gl_PrimitiveIDIn = 13, got 1 instead
Expected primitive 14 to have gl_PrimitiveIDIn = 14, got 2 instead
PIGLIT: {'result': 'fail' }


Reproduce steps:
----------------------------
1. xinit&
2. bin/glsl-1.50-geometry-primitive-id-restart GL_LINES_ADJACENCY other -auto -fbo
Comment 1 Kenneth Graunke 2013-10-19 21:38:53 UTC
It can't possibly "work well" on the 9.2 branch, since Mesa 9.2 doesn't implement GLSL 1.50.

Reassigning to Paul.
Comment 2 Paul Berry 2013-10-19 22:19:50 UTC
The following patches should fix all of the failing cases except for the GL_LINE_LOOP cases:

- vbo: Make vbo_sw_primitive_restart optionally count primitives. (http://lists.freedesktop.org/archives/mesa-dev/2013-October/046184.html)
- i965/gs: Fix gl_PrimitiveIDIn when using SW primitive restart. (http://lists.freedesktop.org/archives/mesa-dev/2013-October/046185.html)

These patches were sent to the mailing list on October 11 and are awaiting review.

Unfortunately, the GL_LINE_LOOP cases are not easily fixable due to a hardware limitation: the hardware converts GL_LINE_LOOP primitives to GL_LINE_STRIP primitives (by repeating the first vertex at the end of the loop) *before* dangling vertex removal.  As a result, a line loop consisting of a single vertex causes a single primitive to be output (a line going from that vertex to itself), whereas the GL spec says that it should cause zero primitives to be output.  I don't believe this problem is worth fixing.
Comment 3 Kenneth Graunke 2014-07-24 23:17:03 UTC
On Haswell, all of these pass.  On Ivybridge, it sounds like we've fixed everything except the line loop cases.  Based on Paul's explanation of the problem, it doesn't sound worth fixing.  The hardware works a little differently than GL expects, in a degenerate case that no real application will hit.


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.