Skip to content
  • Kenneth Graunke's avatar
    i965: Add tessellation control shaders. · 24be658d
    Kenneth Graunke authored
    
    
    The TCS is the first tessellation shader stage, and the most
    complicated.  It has access to each of the control points in the input
    patch, and computes a new output patch.  There is one logical invocation
    per output control point; all invocations run in parallel, and can
    communicate by reading and writing output variables.
    
    One of the main responsibilities of the TCS is to write the special
    gl_TessLevelOuter[] and gl_TessLevelInner[] output variables which
    control how much new geometry the hardware tessellation engine will
    produce.  Otherwise, it simply writes outputs that are passed along
    to the TES.
    
    We run in SIMD4x2 mode, handling two logical invocations per EU thread.
    The hardware doesn't properly manage the dispatch mask for us; it always
    initializes it to 0xFF.  We wrap the whole program in an IF..ENDIF block
    to handle an odd number of invocations, essentially falling back to
    SIMD4x1 on the last thread.
    
    v2: Update comments (requested by Jordan Justen).
    
    Signed-off-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
    Reviewed-by: default avatarJordan Justen <jordan.l.justen@intel.com>
    24be658d