gl::Error Framebuffer11::clearImpl(const gl::Context *context, const ClearParameters &clearParams) { Clear11 *clearer = mRenderer->getClearer(); const gl::FramebufferAttachment *colorAttachment = mState.getFirstColorAttachment(); if (clearParams.scissorEnabled == true && colorAttachment != nullptr && UsePresentPathFast(mRenderer, colorAttachment)) { // If the current framebuffer is using the default colorbuffer, and present path fast is // active, and the scissor rect is enabled, then we should invert the scissor rect // vertically ClearParameters presentPathFastClearParams = clearParams; gl::Extents framebufferSize = colorAttachment->getSize(); presentPathFastClearParams.scissor.y = framebufferSize.height - presentPathFastClearParams.scissor.y - presentPathFastClearParams.scissor.height; ANGLE_TRY(clearer->clearFramebuffer(context, presentPathFastClearParams, mState)); } else { ANGLE_TRY(clearer->clearFramebuffer(context, clearParams, mState)); } ANGLE_TRY(markAttachmentsDirty(context)); return gl::NoError(); }
gl::Error Framebuffer11::clear(const gl::State &state, const ClearParameters &clearParams) { Clear11 *clearer = mRenderer->getClearer(); gl::Error error = clearer->clearFramebuffer(clearParams, mData); if (error.isError()) { return error; } error = invalidateSwizzles(); if (error.isError()) { return error; } return gl::Error(GL_NO_ERROR); }
gl::Error Framebuffer11::clear(const gl::Data &data, const ClearParameters &clearParams) { Clear11 *clearer = mRenderer->getClearer(); gl::Error error(GL_NO_ERROR); const gl::FramebufferAttachment *colorAttachment = mData.getFirstColorAttachment(); if (clearParams.scissorEnabled == true && colorAttachment != nullptr && UsePresentPathFast(mRenderer, colorAttachment)) { // If the current framebuffer is using the default colorbuffer, and present path fast is // active, and the scissor rect is enabled, then we should invert the scissor rect // vertically ClearParameters presentPathFastClearParams = clearParams; gl::Extents framebufferSize = colorAttachment->getSize(); presentPathFastClearParams.scissor.y = framebufferSize.height - presentPathFastClearParams.scissor.y - presentPathFastClearParams.scissor.height; error = clearer->clearFramebuffer(presentPathFastClearParams, mData); } else { error = clearer->clearFramebuffer(clearParams, mData); } if (error.isError()) { return error; } error = invalidateSwizzles(); if (error.isError()) { return error; } return gl::Error(GL_NO_ERROR); }