The problem is that this our decoders is old code that we have added a DirectX pipeline to , so that stuff like post processing runs hardware
accelerated no matter the hardware.
I do think that it is kind off messy mixing RT and driver API, but rewriting the decoder isn’t really an option right now. If we were to rewrite
the decoder, I would probably insist that we do decoding through DirectX so that all decoders are the same, which would mean that all hardware would work the same and our code base would be so much easier to maintain
But whether we use runtime or driver API, or mixing them, seems a bit moot since the problem persist in my sandbox code whether I use one API
or the other, so until I have something that work in either runtime or driver API I can’t really ask management for time to refactor one way or another
Regarding the use of cudaGetLastError and our workaround, we already do and it isn’t a problem that needs solving , it was just extra information
that might help you guys figure out what goes wrong in the registerresource call.
Our workaround involves copying frames from Nvidia surfaces to sysmem and then back to DirectX surfaces and with multiple 4K streams the performance
decrease with a factor of approximately 4 , depending on the hardware off course, so we really want the registerresource thing to work.
Imagine the customers bewilderment when they have 2 equal Nvidia cards in their machines and are running 16 4K streams, 8 streams on each,
and one card is delivering 30 fps as it should, and the other is delivering 7-8 fps , they will call our support asking what the heck is wrong, especially since we’ve told them that if they want better performance they should buy some more GPUs.
To be fair, the performance hit they will take on the GPUs that fail aren’t that big compared to the old code, as the old code copied to sysmem
already, but the performance gains on the GPUs that use registerresource will make the difference to the GPUs that fail, will confuse the customers, just as it working on some computers and others not, is very confusing to us.