Hi DaneLLL, thanks for the reply.
ISSUE 1:
I have done more experiments, the EGL stream FIFO is 4, and initially present 10 frames to the EGL stream FIFO, then wait for some time, and then examine the returned frames. But no matter how many frames I present initially and how long I wait, only the first 3 frames returned on the first 3 return_Frame calls, and I can’t see the latter frames returned, for example, the 4th, 7th, etc.
nvidia@tegra-ubuntu:~/program/nveglstreamsrctest$ ./nveglstreamsrctest
CUDA producer initializing EGL display.
EGL API: 1.5
CUDA producer initializing EGL stream.
EGL Stream consumer - Mode: FIFO, Length: 4, latency 0.
NvEglStreamSrcInitializeEgl: Load library: libEGL.so
Connect EGL stream to cuda producer.
CUDA producer present frame: 0x5c2600000 used time 0 ms.
CUDA producer present frame: 0x5c2800000 used time 0 ms.
CUDA producer present frame: 0x5c2a00000 used time 0 ms.
CUDA producer present frame: 0x5c2c00000 used time 0 ms.
CUDA producer present frame: 0x5c2e00000 used time 0 ms.
CUDA producer present frame: 0x5c3000000 used time 0 ms.
CUDA producer present frame: 0x5c3200000 used time 0 ms.
CUDA producer present frame: 0x5c3400000 used time 0 ms.
CUDA producer present frame: 0x5c3600000 used time 0 ms.
CUDA producer present frame: 0x5c3800000 used time 0 ms.
============= wait some time =============
Returned frame 0x5c2600000 used time 0 ms.
Present a new frame 1.
CUDA producer present frame: 0x5c2600000 used time 0 ms.
Returned frame 0x5c2800000 used time 0 ms.
Present a new frame 2.
CUDA producer present frame: 0x5c2800000 used time 0 ms.
Returned frame 0x5c2a00000 used time 0 ms.
Present a new frame 3.
CUDA producer present frame: 0x5c2a00000 used time 0 ms.
Returned frame 0x5c2600000 used time 0 ms.
Present a new frame 4.
CUDA producer present frame: 0x5c2600000 used time 5 ms.
Returned frame 0x5c2800000 used time 0 ms.
Present a new frame 5.
CUDA producer present frame: 0x5c2800000 used time 0 ms.
Returned frame 0x5c2a00000 used time 0 ms.
Present a new frame 6.
CUDA producer present frame: 0x5c2a00000 used time 1 ms.
Returned frame 0x5c2600000 used time 0 ms.
Present a new frame 7.
CUDA producer present frame: 0x5c2600000 used time 0 ms.
Returned frame 0x5c2800000 used time 0 ms.
Present a new frame 8.
CUDA producer present frame: 0x5c2800000 used time 0 ms.
Returned frame 0x5c2a00000 used time 0 ms.
Present a new frame 9.
CUDA producer present frame: 0x5c2a00000 used time 0 ms.
Returned frame 0x5c2600000 used time 0 ms.
Present a new frame 10.
CUDA producer present frame: 0x5c2600000 used time 0 ms.
ISSUE 2:
The test case (see attachment) sometimes return error 999 (CUDA_ERROR_UNKNOWN) on the initially present frames, and then return_Frame always return 702 (CUDA_ERROR_LAUNCH_TIMEOUT).
nvidia@tegra-ubuntu:~/program/nveglstreamsrctest$ ./nveglstreamsrctest
CUDA producer initializing EGL display.
EGL API: 1.5
CUDA producer initializing EGL stream.
EGL Stream consumer - Mode: FIFO, Length: 4, latency 0.
NvEglStreamSrcInitializeEgl: Load library: libEGL.so
Connect EGL stream to cuda producer.
CUDA producer present frame: 0x5c2600000 used time 0 ms.
CUDA producer present frame: 0x5c2800000 used time 0 ms.
CUDA producer present frame: 0x5c2a00000 used time 0 ms.
CUDA producer present frame: 0x5c2c00000 used time 0 ms.
CUDA producer present frame: 0x5c2e00000 used time 0 ms.
CUDA producer present frame: 0x5c3000000 used time 0 ms.
CUDA producer present frame: 0x5c3200000 used time 0 ms.
CUDA producer present frame: 0x5c3400000 used time 0 ms.
CUDA producer present frame: 0x5c3600000 used time 0 ms.
CUDA producer present frame failed: 999.
============= wait some time =============
Returned frame 0x5c2600000 used time 0 ms.
Present a new frame 1.
CUDA producer present frame: 0x5c2600000 used time 1 ms.
Returned frame 0x5c2800000 used time 0 ms.
Present a new frame 2.
CUDA producer present frame: 0x5c2800000 used time 0 ms.
^C //<-- "ctrl + c", block on cuEGLStreamProducerReturnFrame, always return CUDA_ERROR_LAUNCH_TIMEOUT
nvidia@tegra-ubuntu:~/program/nveglstreamsrctest$
ISSUE 3:
When I post this thread, I find the out of order issue in my project. To illustrate the issue, i build the test case, but can’t completely reproduce the issue.
The steps is the same as the test case, first present 4 frames to the EGL stream FIFO, and then do return_Frame to get the buffer, and then present_Frame to EGL stream FIFO. Since the first 4 return_Frame calls only return the 1th and 2nd buffers, it should not return the 3th and 4th buffer later any more. But later on at some point, the 3th and 4th buffers return.
Here is the key log, for the whole output log, please refer to the attachment, For clearly, I have replace the 4 different addresses with 1, 2, 3 and 4 respectively.
<../Project/eglframeproducer.cpp, 112>: Return frame 1
<../Project/eglframeproducer.cpp, 112>: Return frame 2
<../Project/eglframeproducer.cpp, 112>: Return frame 1
<../Project/eglframeproducer.cpp, 112>: Return frame 2
<../Project/eglframeproducer.cpp, 112>: Return frame 1
<../Project/eglframeproducer.cpp, 112>: Return frame 2
<../Project/eglframeproducer.cpp, 112>: Return frame 1
<../Project/eglframeproducer.cpp, 112>: Return frame 2
<../Project/eglframeproducer.cpp, 112>: Return frame 1
<../Project/eglframeproducer.cpp, 112>: Return frame 2
...
some time later
<../Project/eglframeproducer.cpp, 112>: Return frame 1
<../Project/eglframeproducer.cpp, 112>: Return frame 2
<../Project/eglframeproducer.cpp, 112>: Return frame 3
<../Project/eglframeproducer.cpp, 112>: Return frame 4
...
There seems to be have some bugs, is there any known bugs, and how can i cope with these issues, thanks.
nveglstreamsrctest.tar.gz (5.11 KB)
log.txt (113 KB)