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