- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
We are using PBO to async read back pixels GPU -> CPU (for hardware feedback in virtual texture).
Unfortunately, both glReadPixels and glGetTexImage causes stall (instead of immediate return).
PBO read Code is looking like that:
//init
glGenBuffers(1, &delayedPBO);
glBindBuffer(GL_PIXEL_PACK_BUFFER, delayedPBO);
glBufferData(GL_PIXEL_PACK_BUFFER, width*height*4, NULL, GL_STREAM_READ);
glGenTextures(1, &textureId);
glBindTexture(GL_TEXTURE_2D, textureId);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 0);
glBindTexture(GL_TEXTURE_2D, 0);
glGenFramebuffers(1, &fboId);
//render
glBindFramebuffer(GL_FRAMEBUFFER, fboId);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureId, 0);
glBindFramebuffer(GL_FRAMEBUFFER, 0);
//...render something...
//usage
glBindBuffer(GL_PIXEL_PACK_BUFFER, delayedPBO);
glBindTexture(GL_TEXTURE_2D, textureId);
glGetTexImage( GL_TEXTURE_2D, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 0 );//<< causes stall!
//readpixels
//glBindFramebuffer(GL_FRAMEBUFFER, fboId);
//glReadBuffer( GL_COLOR_ATTACHMENT0 );
//glReadPixels( 0, 0, width, height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 0 );
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
Any ideas? Works fine on NVIDIA.
OS: Windows 7,
Video: Intel 4600
Driver: 10.18.10.3345
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am also having a similar problem. I am using a FrameBuffer object for selection and want to read back from the FrameBuffer. I can read back from the default buffer (GL_BACK) but not from the frame buffer. I have also tried the PACK_BUFFER approach which also fails.
I have an Intel HD 4600 with the latest drivers. I am getting an OpenGL Debug message back from the ig75icd32.dll of a GL_INVALID_OPERATION and a GLError 1282 is on the error stack.
I have this posted in https://communities.intel.com/message/263941. My code snippets have been reviewed as OK.
This code also works fine with NVIDEA and AMD cards.
I would like my code to work on Intel hardware so I can recommend this hardware for users of our software.
There has been no feedback on this Have you resolved it??
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The very recent beta driver seem not stalling in that case.
According to what I see in your snippet, everything is correct.
I would suggest to experiment with glReadPixels format/type. Previous Intel drivers were very sensitive to it Try use GL_BGRA instead of GL_RGBA, or GL_RGBA32F, instead of GL_FLOAT.
Also, pixel buffer object (PBO) should work more correctly/stable, since this way you are not passing format in two different ways (both internal and general), like glReadPixels

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page