# 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 for more information. Issues known to be a result: - Some dEQP tests fail due to this problem. See - The jellyfish demo in [glmark2](https://github.com/glmark2/glmark2) misrenders. See