MCPcopy Create free account
hub / github.com/VirtualGL/virtualgl / setReadBuffer

Method setReadBuffer

server/FakePbuffer.cpp:397–429  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

395
396
397void FakePbuffer::setReadBuffer(GLenum readBuf, bool deferred)
398{
399 if(((readBuf == GL_FRONT_RIGHT || readBuf == GL_RIGHT)
400 && !config->attr.stereo)
401 || ((readBuf == GL_BACK_LEFT || readBuf == GL_BACK)
402 && !config->attr.doubleBuffer)
403 || (readBuf == GL_BACK_RIGHT
404 && (!config->attr.stereo || !config->attr.doubleBuffer))
405 || (readBuf >= GL_COLOR_ATTACHMENT0 && readBuf <= GL_DEPTH_ATTACHMENT))
406 {
407 // Trigger GL_INVALID_OPERATION by passing an FBO-incompatible value to
408 // the real glReadBuffer() function.
409 _glReadBuffer(GL_FRONT_LEFT);
410 return;
411 }
412
413 // 0 = front left, 1 = back left, 2 = front right, 3 = back right
414 GLenum actualReadBuf = readBuf;
415 if(readBuf == GL_FRONT_LEFT || readBuf == GL_FRONT || readBuf == GL_LEFT
416 || readBuf == GL_FRONT_AND_BACK)
417 actualReadBuf = GL_COLOR_ATTACHMENT0;
418 else if(readBuf == GL_FRONT_RIGHT || readBuf == GL_RIGHT)
419 actualReadBuf = GL_COLOR_ATTACHMENT2;
420 else if(readBuf == GL_BACK_LEFT || readBuf == GL_BACK)
421 actualReadBuf = GL_COLOR_ATTACHMENT1;
422 else if(readBuf == GL_BACK_RIGHT)
423 actualReadBuf = GL_COLOR_ATTACHMENT3;
424 if(deferred)
425 _glNamedFramebufferReadBuffer(fbo, actualReadBuf);
426 else
427 _glReadBuffer(actualReadBuf);
428 CTXHASHEGL.setReadBuffer(_eglGetCurrentContext(), readBuf);
429}

Callers 4

bindFramebufferFunction · 0.45
makeCurrentFunction · 0.45
readBufferFunction · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected