// // Copyright 2022 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // FramebufferImpl.cpp: Implements the class methods for FramebufferImpl. #include "libANGLE/renderer/FramebufferImpl.h" namespace rx { namespace { angle::Result InitAttachment(const gl::Context *context, const gl::FramebufferAttachment *attachment) { ASSERT(attachment->isAttached()); if (attachment->initState() == gl::InitState::MayNeedInit) { ANGLE_TRY(attachment->initializeContents(context)); } return angle::Result::Continue; } } // namespace angle::Result FramebufferImpl::onLabelUpdate(const gl::Context *context) { return angle::Result::Continue; } angle::Result FramebufferImpl::ensureAttachmentsInitialized( const gl::Context *context, const gl::DrawBufferMask &colorAttachments, bool depth, bool stencil) { // Default implementation iterates over the attachments and individually initializes them for (auto colorIndex : colorAttachments) { ANGLE_TRY(InitAttachment(context, mState.getColorAttachment(colorIndex))); } if (depth) { ANGLE_TRY(InitAttachment(context, mState.getDepthAttachment())); } if (stencil) { ANGLE_TRY(InitAttachment(context, mState.getStencilAttachment())); } return angle::Result::Continue; } } // namespace rx