1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2016 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker // ProgramNULL.cpp:
7*8975f5c5SAndroid Build Coastguard Worker // Implements the class methods for ProgramNULL.
8*8975f5c5SAndroid Build Coastguard Worker //
9*8975f5c5SAndroid Build Coastguard Worker
10*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/null/ProgramNULL.h"
11*8975f5c5SAndroid Build Coastguard Worker
12*8975f5c5SAndroid Build Coastguard Worker #include "common/debug.h"
13*8975f5c5SAndroid Build Coastguard Worker
14*8975f5c5SAndroid Build Coastguard Worker namespace rx
15*8975f5c5SAndroid Build Coastguard Worker {
16*8975f5c5SAndroid Build Coastguard Worker namespace
17*8975f5c5SAndroid Build Coastguard Worker {
18*8975f5c5SAndroid Build Coastguard Worker class LinkTaskNULL : public LinkTask
19*8975f5c5SAndroid Build Coastguard Worker {
20*8975f5c5SAndroid Build Coastguard Worker public:
LinkTaskNULL(const gl::ProgramState * state)21*8975f5c5SAndroid Build Coastguard Worker LinkTaskNULL(const gl::ProgramState *state) : mState(state) {}
22*8975f5c5SAndroid Build Coastguard Worker ~LinkTaskNULL() override = default;
link(const gl::ProgramLinkedResources & resources,const gl::ProgramMergedVaryings & mergedVaryings,std::vector<std::shared_ptr<LinkSubTask>> * linkSubTasksOut,std::vector<std::shared_ptr<LinkSubTask>> * postLinkSubTasksOut)23*8975f5c5SAndroid Build Coastguard Worker void link(const gl::ProgramLinkedResources &resources,
24*8975f5c5SAndroid Build Coastguard Worker const gl::ProgramMergedVaryings &mergedVaryings,
25*8975f5c5SAndroid Build Coastguard Worker std::vector<std::shared_ptr<LinkSubTask>> *linkSubTasksOut,
26*8975f5c5SAndroid Build Coastguard Worker std::vector<std::shared_ptr<LinkSubTask>> *postLinkSubTasksOut) override
27*8975f5c5SAndroid Build Coastguard Worker {
28*8975f5c5SAndroid Build Coastguard Worker ASSERT(linkSubTasksOut && linkSubTasksOut->empty());
29*8975f5c5SAndroid Build Coastguard Worker ASSERT(postLinkSubTasksOut && postLinkSubTasksOut->empty());
30*8975f5c5SAndroid Build Coastguard Worker
31*8975f5c5SAndroid Build Coastguard Worker const gl::SharedCompiledShaderState &fragmentShader =
32*8975f5c5SAndroid Build Coastguard Worker mState->getAttachedShader(gl::ShaderType::Fragment);
33*8975f5c5SAndroid Build Coastguard Worker if (fragmentShader != nullptr)
34*8975f5c5SAndroid Build Coastguard Worker {
35*8975f5c5SAndroid Build Coastguard Worker resources.pixelLocalStorageLinker.link(fragmentShader->pixelLocalStorageFormats);
36*8975f5c5SAndroid Build Coastguard Worker }
37*8975f5c5SAndroid Build Coastguard Worker
38*8975f5c5SAndroid Build Coastguard Worker return;
39*8975f5c5SAndroid Build Coastguard Worker }
getResult(const gl::Context * context,gl::InfoLog & infoLog)40*8975f5c5SAndroid Build Coastguard Worker angle::Result getResult(const gl::Context *context, gl::InfoLog &infoLog) override
41*8975f5c5SAndroid Build Coastguard Worker {
42*8975f5c5SAndroid Build Coastguard Worker return angle::Result::Continue;
43*8975f5c5SAndroid Build Coastguard Worker }
44*8975f5c5SAndroid Build Coastguard Worker
45*8975f5c5SAndroid Build Coastguard Worker private:
46*8975f5c5SAndroid Build Coastguard Worker const gl::ProgramState *mState;
47*8975f5c5SAndroid Build Coastguard Worker };
48*8975f5c5SAndroid Build Coastguard Worker } // anonymous namespace
49*8975f5c5SAndroid Build Coastguard Worker
ProgramNULL(const gl::ProgramState & state)50*8975f5c5SAndroid Build Coastguard Worker ProgramNULL::ProgramNULL(const gl::ProgramState &state) : ProgramImpl(state) {}
51*8975f5c5SAndroid Build Coastguard Worker
~ProgramNULL()52*8975f5c5SAndroid Build Coastguard Worker ProgramNULL::~ProgramNULL() {}
53*8975f5c5SAndroid Build Coastguard Worker
load(const gl::Context * context,gl::BinaryInputStream * stream,std::shared_ptr<LinkTask> * loadTaskOut,egl::CacheGetResult * resultOut)54*8975f5c5SAndroid Build Coastguard Worker angle::Result ProgramNULL::load(const gl::Context *context,
55*8975f5c5SAndroid Build Coastguard Worker gl::BinaryInputStream *stream,
56*8975f5c5SAndroid Build Coastguard Worker std::shared_ptr<LinkTask> *loadTaskOut,
57*8975f5c5SAndroid Build Coastguard Worker egl::CacheGetResult *resultOut)
58*8975f5c5SAndroid Build Coastguard Worker {
59*8975f5c5SAndroid Build Coastguard Worker *loadTaskOut = {};
60*8975f5c5SAndroid Build Coastguard Worker *resultOut = egl::CacheGetResult::Success;
61*8975f5c5SAndroid Build Coastguard Worker return angle::Result::Continue;
62*8975f5c5SAndroid Build Coastguard Worker }
63*8975f5c5SAndroid Build Coastguard Worker
save(const gl::Context * context,gl::BinaryOutputStream * stream)64*8975f5c5SAndroid Build Coastguard Worker void ProgramNULL::save(const gl::Context *context, gl::BinaryOutputStream *stream) {}
65*8975f5c5SAndroid Build Coastguard Worker
setBinaryRetrievableHint(bool retrievable)66*8975f5c5SAndroid Build Coastguard Worker void ProgramNULL::setBinaryRetrievableHint(bool retrievable) {}
67*8975f5c5SAndroid Build Coastguard Worker
setSeparable(bool separable)68*8975f5c5SAndroid Build Coastguard Worker void ProgramNULL::setSeparable(bool separable) {}
69*8975f5c5SAndroid Build Coastguard Worker
link(const gl::Context * contextImpl,std::shared_ptr<LinkTask> * linkTaskOut)70*8975f5c5SAndroid Build Coastguard Worker angle::Result ProgramNULL::link(const gl::Context *contextImpl,
71*8975f5c5SAndroid Build Coastguard Worker std::shared_ptr<LinkTask> *linkTaskOut)
72*8975f5c5SAndroid Build Coastguard Worker {
73*8975f5c5SAndroid Build Coastguard Worker *linkTaskOut = std::shared_ptr<LinkTask>(new LinkTaskNULL(&mState));
74*8975f5c5SAndroid Build Coastguard Worker return angle::Result::Continue;
75*8975f5c5SAndroid Build Coastguard Worker }
76*8975f5c5SAndroid Build Coastguard Worker
validate(const gl::Caps & caps)77*8975f5c5SAndroid Build Coastguard Worker GLboolean ProgramNULL::validate(const gl::Caps &caps)
78*8975f5c5SAndroid Build Coastguard Worker {
79*8975f5c5SAndroid Build Coastguard Worker return GL_TRUE;
80*8975f5c5SAndroid Build Coastguard Worker }
81*8975f5c5SAndroid Build Coastguard Worker
82*8975f5c5SAndroid Build Coastguard Worker } // namespace rx
83