| 395 | |
| 396 | |
| 397 | void 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 | } |
no outgoing calls
no test coverage detected