Limits of nVidia PDR (pixel data range)mode

I need to transfer data by the help of the PDR asynchronous mode inside a very large texture.
If I use 2048x2048 textures everything works O.K. …
But I need to use now 4096x2048 or even 4096x4096 textures .
When I try to do this the transfer is even more slow than without PDR :mad: .
In nVidia PDR specification I found foolowing

The following additional restrictions apply to glTex[Sub]Image2D:
- The texture must fit in video memory.
- The texture must have a border size of zero.
- The stride (in bytes) between two lines of source data must not
  exceed 65535.
- For non-rectangle textures, the width and height of the destination
  mipmap level must not exceed 2048, nor be below 2; also, the
  destination mipmap level must not be 2x2 (for 16-bit textures) or
  2x2, 4x2, or 2x4 (for 8-bit textures).

Does it meant that I can use maximaly 2048x2048
output texture for PDR accelerated data transfer ?

Does exist some trick how to cross the limit :wink: ?

Try to call glTexSubImage several times with smaller
parts of texture.

I have another problem with PDR… Im using it for
streaming video. Application is quite simple… Upload decompressed frame to texture and render texture to screen. But before I try to render texure, I’ll have to call glFlushPixelDataRangeNV(GL_WRITE_…)
which cause too much CPU usage. How to avoid this?

What workaround you use with PDR?


Calling glTextSubImage2D multiple times does not help at all . The restiction is the target texture size not the transfered amount of data. According your problem - as you long as you will use the mentioned command benefit from PDR mode usage will be strongly reduced due to sub optimal operations timing.