// // Copyright 2016 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. // // ProgramNULL.cpp: // Implements the class methods for ProgramNULL. // #include "libANGLE/renderer/null/ProgramNULL.h" #include "common/debug.h" namespace rx { namespace { class LinkTaskNULL : public LinkTask { public: LinkTaskNULL(const gl::ProgramState *state) : mState(state) {} ~LinkTaskNULL() override = default; void link(const gl::ProgramLinkedResources &resources, const gl::ProgramMergedVaryings &mergedVaryings, std::vector> *linkSubTasksOut, std::vector> *postLinkSubTasksOut) override { ASSERT(linkSubTasksOut && linkSubTasksOut->empty()); ASSERT(postLinkSubTasksOut && postLinkSubTasksOut->empty()); const gl::SharedCompiledShaderState &fragmentShader = mState->getAttachedShader(gl::ShaderType::Fragment); if (fragmentShader != nullptr) { resources.pixelLocalStorageLinker.link(fragmentShader->pixelLocalStorageFormats); } return; } angle::Result getResult(const gl::Context *context, gl::InfoLog &infoLog) override { return angle::Result::Continue; } private: const gl::ProgramState *mState; }; } // anonymous namespace ProgramNULL::ProgramNULL(const gl::ProgramState &state) : ProgramImpl(state) {} ProgramNULL::~ProgramNULL() {} angle::Result ProgramNULL::load(const gl::Context *context, gl::BinaryInputStream *stream, std::shared_ptr *loadTaskOut, egl::CacheGetResult *resultOut) { *loadTaskOut = {}; *resultOut = egl::CacheGetResult::Success; return angle::Result::Continue; } void ProgramNULL::save(const gl::Context *context, gl::BinaryOutputStream *stream) {} void ProgramNULL::setBinaryRetrievableHint(bool retrievable) {} void ProgramNULL::setSeparable(bool separable) {} angle::Result ProgramNULL::link(const gl::Context *contextImpl, std::shared_ptr *linkTaskOut) { *linkTaskOut = std::shared_ptr(new LinkTaskNULL(&mState)); return angle::Result::Continue; } GLboolean ProgramNULL::validate(const gl::Caps &caps) { return GL_TRUE; } } // namespace rx