Comparison with EGL
When using EGLStreams, back-and-forth coordination of buffer attributes between the endpoints is not required. Buffers are created through the producer rendering interface and are communicated to the consumer when inserted in the stream. The downsideis that, in most cases, the producer has no awareness of the consumer for which the buffers are intended. There is no way to ensure that the buffers the producer allocates are compatible with the consumer at the time they are created. If they are not, then either streaming fails when the consumer receives the buffers, or a costly conversion process must occur for every frame. The NvSciStream model puts more burden on the application when establishing the buffers but ensures optimal allocation settings for compatibility between producer and consumers.
Additionally, EGLStreams are far more restricted in the kinds of buffers they support. They allow two-dimensional image buffers rendered by the GPU and video, along with a limited set of metadata buffers generated by the CPU. NvSciStream allows multiple buffers of data rendered by either source. These buffers can contain images, arrays, tensors, or anything else the user requires.