2 Replies Latest reply on Jun 12, 2013 8:26 PM by reidm

    Isoline tessellation does not match OpenGL 4.1 spec

    reidm

      On my Radeon HD 7770 with 13.4 drivers I get the following behavior with isoline tessellation:

       

      gl_TessLevelOuter[0] = stripCount

      gl_TessLevelOuter[1] = segmentCount

       

      This does not match the OpenGL 4.1 specification which states:

       

      The number of segments in each strip is derived from the first outer tessellation level; the number of line strips drawn is derived from the second outer tessellation level.

       

      I also tested 12.4 drivers, and behavior in this case matches the specification.

        • Re: Isoline tessellation does not match OpenGL 4.1 spec
          gsellers

          Hi,

           

          This was a spec bug in the 4.1 specification and was subsequently fixed in later versions of the OpenGL specification. The current OpenGL 4.3 specification says:

           

          The number of isolines generated is derived from the first outer tessellation level; the number of segments in each isoline is derived from the second outer tessellation level.

           

          I don't believe the fix was back-ported to the older version of the specification. Our implementation matches the 4.3 specification. We would recommend always referring to the most recent version of the specification, even if you are writing an application designed to run on older hardware or drivers.

           

          Thanks,

           

          Graham

            • Re: Isoline tessellation does not match OpenGL 4.1 spec
              reidm

              Thanks for clarifying this. It looks like the latest 4.3 spec has been corrected in one place, but there's still a bug further on in the spec.

               

              At first it says:

              The number of isolines generated is derived from the first outer tessellation level; the number of segments in each isoline is derived from the second outer tessellation level.


              But then says:

              The u = 0 and u = 1 edges of the rectangle are subdivided according to the second outer tessellation level...Each of the n lines is then subdivided according to the first outer tessellation level.