EVO CLASSES

The NVIDIA "EVO" Display Engine was introduced in NV50, and has been
incrementally updated in GPUs since then.

EVO consists of several channels:

    "core": This channel is used to perform modesets, as well as things
            such as manage the LUT, and cursor properties (other than
            position).  It has GPU scope.
    "base": This channel is intended to be used for OpenGL SwapBuffers
            flipping.  There is one base channel per head.
    "overlay": This channel is intended to be used for flipping the
            overlay.  There is one overlay channel per head.
    "overlay immediate": This channel is intended to be used to position
            the overlay within the raster of the head.  There is one
            overlay immediate channel per head.  Originally, it was
            conceived that a display driver would position the overlay
            in response to a window move, using the "overlay immediate"
            channel, and a video driver would flip buffers using the
            overlay channel.
    "cursor": This channel is used to position the cursor.  There is
            one cursor channel per head.  The cursor format and buffer
            is specified through the core channel.  It was originally
            conceived that the management of cursor would be distributed
            between the core and cursor channels in the same way that
            overlay management is distributed between overlay and overlay
            immediate channels.  The cursor channel allows low-latency
            cursor position updates, asynchronously to the core channel.

The "NVDisplay" Engine is new in Volta, and is a major improvement upon EVO.
The software interface consists of a set of channels as in EVO, but how those
channels can be used is more flexible.

    "core": This channel is similar to EVO's core channel, except it does not
            support programming a surface as a base layer.
    "window": This channel replaces EVO's base and overlay channels.  It is
            designed support a superset of the capabilities of the earlier
            channels, but in addition supports scaling, alpha blending, and
            blend order, among other improvements.  Windows are not inherently
            bound to a head and must be bound explicitly with core channel
            methods.
    "window immediate": Like EVO's overlay immediate, this can be used to
            position the corresponding window channel on the raster.  Unlike
            EVO's overlay immediate, this is a DMA channel to support
            enqueuing more than one update at a time.
    "cursor": This is similar to EVO's cursor channel.  There is one cursor
            per head.

There is a per-channel header file that defines the method interface to
each channel.

There are both a "class name" and a software class number that are
used to describe the combination of channel versions used together.

Also, many GPUs have a "DISP_SF_USER" class.  This software construct
exposes a mappable region of the Serial Frontend (SF) registers which
can be used to program infoframe data.

The table below describes which class name is used with which GPU,
and which channel header files are used with that class.

__________________________________________________________________________

Class Name:                 DISP010X
Software Class Number:      5070
Cursor Channel:             cl507a.h
Overlay Immediate Channel:  cl507b.h
Base Channel:               cl507c.h
Core Channel:               cl507d.h
Overlay Channel:            cl507e.h
GPUs:                       nv50
__________________________________________________________________________

Class Name:                 DISP011X
Software Class Number:      8270
Cursor Channel:             cl827a.h
Overlay Immediate Channel:  cl827b.h
Base Channel:               cl827c.h
Core Channel:               cl827d.h
Overlay Channel:            cl827e.h
GPUs:                       g84, g86, g92
__________________________________________________________________________

Class Name:                 DISP012X
Software Class Number:      8370
Cursor Channel:             cl827a.h
Overlay Immediate Channel:  cl827b.h
Base Channel:               cl837c.h
Core Channel:               cl837d.h
Overlay Channel:            cl837e.h
GPUs:                       gt200
__________________________________________________________________________

Class Name:                 DISP014X
Software Class Number:      8870
Cursor Channel:             cl827a.h
Overlay Immediate Channel:  cl827b.h
Base Channel:               cl837c.h
Core Channel:               cl887d.h
Overlay Channel:            cl837e.h
GPUs:                       g94, g96, g98, mcp7x
__________________________________________________________________________

Class Name:                 DISP015X
Software Class Number:      8570
Cursor Channel:             cl857a.h
Overlay Immediate Channel:  cl857b.h
Base Channel:               cl857c.h
Core Channel:               cl857d.h
Overlay Channel:            cl857e.h
GPUs:                       gt215, gt216, gt218, mcp89
                            gf100, gf104, gf106, gf114, gf116, gf108
__________________________________________________________________________

Class Name:                 DISP020X
Software Class Number:      9070
Cursor Channel:             cl907a.h
Overlay Immediate Channel:  cl907b.h
Base Channel:               cl907c.h
Core Channel:               cl907d.h
Overlay Channel:            cl907e.h
CRC notifier definitions:   cl907dcrcnotif.h
GPUs:                       gf119
__________________________________________________________________________

Class Name:                 DISP021X
Software Class Number:      9170
Cursor Channel:             cl917a.h
Overlay Immediate Channel:  cl917b.h
Base Channel:               cl917c.h
Core Channel:               cl917d.h
Overlay Channel:            cl917e.h
CRC notifier definitions:   cl917dcrcnotif.h
DISP_SF_USER:               cl9171.h
GPUs:                       gk104, gk106, gk107
__________________________________________________________________________

Class Name:                 DISP022X
Software Class Number:      9270
Cursor Channel:             cl917a.h
Overlay Immediate Channel:  cl917b.h
Base Channel:               cl927c.h
Core Channel:               cl927d.h
Overlay Channel:            cl917e.h
CRC notifier definitions:   cl927dcrcnotif.h
DISP_SF_USER:               cl9271.h
GPUs:                       gk110, gk208
__________________________________________________________________________

Class Name:                 DISP024X
Software Class Number:      9470
Cursor Channel:             cl917a.h
Overlay Immediate Channel:  cl917b.h
Base Channel:               cl927c.h
Core Channel:               cl947d.h
Overlay Channel:            cl917e.h
CRC notifier definitions:   cl927dcrcnotif.h
DISP_SF_USER:               cl9471.h
GPUs:                       gm107, gm108
__________________________________________________________________________

Class Name:                 DISP025X
Software Class Number:      9570
Cursor Channel:             cl917a.h
Overlay Immediate Channel:  cl917b.h
Base Channel:               cl927c.h
Core Channel:               cl957d.h
Overlay Channel:            cl917e.h
CRC notifier definitions:   cl927dcrcnotif.h
DISP_SF_USER:               cl9571.h
GPUs:                       gm200, gm204, gm206
__________________________________________________________________________

Class Name:                 DISP027X
Software Class Number:      9770
Cursor Channel:             cl917a.h
Overlay Immediate Channel:  cl917b.h
Base Channel:               cl927c.h
Core Channel:               cl977d.h
Overlay Channel:            cl917e.h
CRC notifier definitions:   cl927dcrcnotif.h
DISP_SF_USER:               cl9571.h
GPUs:                       gp100
__________________________________________________________________________

Class Name:                 DISP028X
Software Class Number:      9870
Cursor Channel:             cl917a.h
Overlay Immediate Channel:  cl917b.h
Base Channel:               cl927c.h
Core Channel:               cl987d.h
Overlay Channel:            cl917e.h
CRC notifier definitions:   cl927dcrcnotif.h
DISP_SF_USER:               cl9571.h
GPUs:                       gp102, gp104, gp106, gp107, gp108
__________________________________________________________________________

Class Name:                 NVD_20
Software Class Number:      C370
Cursor Channel:             clc37a.h
Window Immediate Channel:   clc37b.h
Core Channel:               clc37d.h
Window Channel:             clc37e.h
CRC notifier definitions:   clc37dcrcnotif.h
DISP_SF_USER:               clc371.h
GPUs:                       gv100
__________________________________________________________________________

Class Name:                 NVD_30
Software Class Number:      C570
Cursor Channel:             clc57a.h
Window Immediate Channel:   clc57b.h
Core Channel:               clc57d.h
Window Channel:             clc57e.h
CRC notifier definitions:   clc37dcrcnotif.h
DISP_SF_USER:               clc571.h
GPUs:                       tu102, tu104, tu106, tu116, tu117
__________________________________________________________________________

Class Name:                 NVD_40
Software Class Number:      C670
Cursor Channel:             clc67a.h
Window Immediate Channel:   clc67b.h
Core Channel:               clc67d.h
Window Channel:             clc67e.h
CRC notifier definitions:   clc37dcrcnotif.h
DISP_SF_USER:               clc671.h
GPUs:                       ga102,ga103,ga104,ga106,ga107
__________________________________________________________________________

Class Name:                 NVD_40
Software Class Number:      C770
Cursor Channel:             clc67a.h
Window Immediate Channel:   clc67b.h
Core Channel:               clc77d.h
Window Channel:             clc67e.h
CRC notifier definitions:   clc37dcrcnotif.h
DISP_SF_USER:               clc771.h
GPUs:                       ad102,ad103,ad104,ad106,ad107
__________________________________________________________________________

Class Name:                 NVD_50
Software Class Number:      CA70
Cursor Channel:             clca7a.h
Window Immediate Channel:   clca7b.h
Core Channel:               clca7d.h
Window Channel:             clca7e.h
CRC notifier definitions:   clc37dcrcnotif.h
DISP_SF_USER:               clca71.h
GPUs:                       gb202,gb203,gb205,gb206,gb207
__________________________________________________________________________

