1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# Gen7/Ivy Bridge: Primitive ID (GLSL 1.50+) is incorrect when using software primitive restart.
Ivy Bridge hardware doesn't support primitive restart under the following circumstances:
- When the primitive type is GL_LINE_LOOP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, or GL_POLYGON.
- When the primitive restart is not equal to -1 (0xff, 0xffff, or 0xffffffff, depending whether the type passed to glDrawElements() is GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT, or GL_UNSIGNED_INT).
In these circumstances, the driver emulates primitive restart using a software mechanism. When this software mechanism is used, and GLSL 1.50 is in use:
- If a geometry shader is present, the values received by the geometry shader's gl_PrimitiveIDIn input will be incorrect.
- If a geometry shader is not present, the values received by the fragment shader's gl_PrimitiveID input will be incorrect.
Gen7/Haswell is not affected.
Experimental code which partially fixes this problem can be found in branch "prim-id-in-with-sw-prim-restart" of https://github.com/stereotype441/mesa.git.
# Gen7/Ivy Bridge: Triangle strips have incorrect vertex order when geometry shaders in use.
When primitives are drawn using GL_TRIANGLE_STRIP or
GL_TRIANGLE_STRIP_ADJACENCY, alternate triangles are delivered to
the geometry shader with their vertices in the wrong order.
For example, if a triangle strip is drawn using 6 vertices, then
according to the GL spec, the triangles received by the geometry
shader should consist of:
- Vertices 1, 2, and 3
- Vertices 3, 2, and 4
- Vertices 3, 4, and 5
- Vertices 5, 4, and 6
Ivy Bridge hardware delivers the correct triangles to the
geometry shader, but not in the right order. The order used is:
- Vertices 1, 2, and 3
- Vertices 2, 4, and 3
- Vertices 3, 4, and 5
- Vertices 4, 6, and 5
Note that triangle orientation is still correct.
Gen7/Haswell is not affected.
Experimental code which partially fixes this problem can be found in branch "gs-reorder-triangle-vertices" of https://github.com/stereotype441/mesa.git.
# All platforms: Trigonometric instructions (sin, cos) do not handle large inputs.
See <https://lists.freedesktop.org/archives/mesa-dev/2014-December/072429.html> for more information.
Issues known to be a result:
- Some dEQP tests fail due to this problem. See <https://bugs.freedesktop.org/show_bug.cgi?id=89634>
- The jellyfish demo in [glmark2](https://github.com/glmark2/glmark2) misrenders. See <https://bugs.freedesktop.org/show_bug.cgi?id=86755>
|