- Posts: 7
- Joined: Wed Aug 11, 2021 6:30 am
- Real Name: King Tissy
Hi,
I downloaded the latest DeckLink SDK 12.2 and MODIFIED the sample named LoopThroughWithOpenGLCompositing to meet my requirement. As my capture card (decklink QUAD HDMI Recorder) supports only simplex mode and my target is to apply the input video as textures in my realtime 3D rendering scene. I removed all the output logic and added the drawing logic to make it works as expected. All the things gone as expected except that the latency is a litter bit higher.
I debug it and found that my NVIDIA RTX A5000 "Do Not support GPUDirect" in the sdk and finally I found that in the following code:
#71 at VideoFrameTransfer.cpp
NVIDIA has changed its GL_RENDERER name rules and no "Quadro" in new Ampere quadro serial cards. My RTX A5000 show that renderer = "NVIDIA RTX A5000/PCIe/SSE2".
RTX-A5000 supports GPUDirect according to NVIDIA's official data sheet, ref: https://www.nvidia.com/content/dam/en-z ... asheet.pdf
It's not hard to make it correct like this:
BUT I finally failed to make the sample work as I got BLACK textures via dvp transfer.
Any Idea?
Thank you in advance.
I downloaded the latest DeckLink SDK 12.2 and MODIFIED the sample named LoopThroughWithOpenGLCompositing to meet my requirement. As my capture card (decklink QUAD HDMI Recorder) supports only simplex mode and my target is to apply the input video as textures in my realtime 3D rendering scene. I removed all the output logic and added the drawing logic to make it works as expected. All the things gone as expected except that the latency is a litter bit higher.
I debug it and found that my NVIDIA RTX A5000 "Do Not support GPUDirect" in the sdk and finally I found that in the following code:
#71 at VideoFrameTransfer.cpp
- Code: Select all
bool VideoFrameTransfer::isNvidiaDvpAvailable()
{
// Look for supported graphics boards
const GLubyte* renderer = glGetString(GL_RENDERER);
bool hasDvp = (strstr((char*)renderer, "Quadro") != NULL);
return hasDvp;
}
NVIDIA has changed its GL_RENDERER name rules and no "Quadro" in new Ampere quadro serial cards. My RTX A5000 show that renderer = "NVIDIA RTX A5000/PCIe/SSE2".
RTX-A5000 supports GPUDirect according to NVIDIA's official data sheet, ref: https://www.nvidia.com/content/dam/en-z ... asheet.pdf
It's not hard to make it correct like this:
- Code: Select all
bool VideoFrameTransfer::isNvidiaDvpAvailable()
{
// Look for supported graphics boards
const GLubyte* renderer = glGetString(GL_RENDERER);
bool hasDvp = (strstr((char*)renderer, "Quadro") != NULL ||
strstr((char*)renderer, "NVIDIA RTX A") != NULL ); // add for Ampere GPUs
return hasDvp;
}
BUT I finally failed to make the sample work as I got BLACK textures via dvp transfer.
Any Idea?
Thank you in advance.