Producer-side steps:

  1. Connect to the socket with the given IP address and the port number arguments. Set the created socketID to g_ClientID (refer to nvgldemo_main.c)
  2. Create the cross-partition EGLStream for the producer end by setting the attributes (refer to nvgldemo_main.c):
    EGL_STREAM_TYPE_NV:EGL_STREAM_CROSS_PARTITION_NV, EGL_STREAM_ENDPOINT_NV:EGL_STREAM_PRODUCER_NV,
    EGL_SOCKET_HANDLE_NV: g_ClientID
  3. Create the EGLStream surface (refer to nvgldemo_main.c):
    eglCreateStreamProducerSurfaceKHR(
                        demoState.display,
                        demoState.config,
                        demoState.stream,
                        srfAttrs)
  4. Create EGLContext and eglMakeCurrent the EGLStream surface created in step 2 (refer to nvgldemo_main.c).
  5. Start to render the frames and eglSwapBuffers (refer to eglstreamcrosspart/producer.cpp).