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.h: 7 // Defines the class interface for ProgramNULL, implementing ProgramImpl. 8 // 9 10 #ifndef LIBANGLE_RENDERER_NULL_PROGRAMNULL_H_ 11 #define LIBANGLE_RENDERER_NULL_PROGRAMNULL_H_ 12 13 #include "libANGLE/renderer/ProgramImpl.h" 14 15 namespace rx 16 { 17 18 class ProgramNULL : public ProgramImpl 19 { 20 public: 21 ProgramNULL(const gl::ProgramState &state); 22 ~ProgramNULL() override; 23 24 std::unique_ptr<LinkEvent> load(const gl::Context *context, 25 gl::BinaryInputStream *stream, 26 gl::InfoLog &infoLog) override; 27 void save(const gl::Context *context, gl::BinaryOutputStream *stream) override; 28 void setBinaryRetrievableHint(bool retrievable) override; 29 void setSeparable(bool separable) override; 30 31 std::unique_ptr<LinkEvent> link(const gl::Context *context, 32 const gl::ProgramLinkedResources &resources, 33 gl::InfoLog &infoLog, 34 const gl::ProgramMergedVaryings &mergedVaryings) override; 35 GLboolean validate(const gl::Caps &caps, gl::InfoLog *infoLog) override; 36 37 void setUniform1fv(GLint location, GLsizei count, const GLfloat *v) override; 38 void setUniform2fv(GLint location, GLsizei count, const GLfloat *v) override; 39 void setUniform3fv(GLint location, GLsizei count, const GLfloat *v) override; 40 void setUniform4fv(GLint location, GLsizei count, const GLfloat *v) override; 41 void setUniform1iv(GLint location, GLsizei count, const GLint *v) override; 42 void setUniform2iv(GLint location, GLsizei count, const GLint *v) override; 43 void setUniform3iv(GLint location, GLsizei count, const GLint *v) override; 44 void setUniform4iv(GLint location, GLsizei count, const GLint *v) override; 45 void setUniform1uiv(GLint location, GLsizei count, const GLuint *v) override; 46 void setUniform2uiv(GLint location, GLsizei count, const GLuint *v) override; 47 void setUniform3uiv(GLint location, GLsizei count, const GLuint *v) override; 48 void setUniform4uiv(GLint location, GLsizei count, const GLuint *v) override; 49 void setUniformMatrix2fv(GLint location, 50 GLsizei count, 51 GLboolean transpose, 52 const GLfloat *value) override; 53 void setUniformMatrix3fv(GLint location, 54 GLsizei count, 55 GLboolean transpose, 56 const GLfloat *value) override; 57 void setUniformMatrix4fv(GLint location, 58 GLsizei count, 59 GLboolean transpose, 60 const GLfloat *value) override; 61 void setUniformMatrix2x3fv(GLint location, 62 GLsizei count, 63 GLboolean transpose, 64 const GLfloat *value) override; 65 void setUniformMatrix3x2fv(GLint location, 66 GLsizei count, 67 GLboolean transpose, 68 const GLfloat *value) override; 69 void setUniformMatrix2x4fv(GLint location, 70 GLsizei count, 71 GLboolean transpose, 72 const GLfloat *value) override; 73 void setUniformMatrix4x2fv(GLint location, 74 GLsizei count, 75 GLboolean transpose, 76 const GLfloat *value) override; 77 void setUniformMatrix3x4fv(GLint location, 78 GLsizei count, 79 GLboolean transpose, 80 const GLfloat *value) override; 81 void setUniformMatrix4x3fv(GLint location, 82 GLsizei count, 83 GLboolean transpose, 84 const GLfloat *value) override; 85 86 void getUniformfv(const gl::Context *context, GLint location, GLfloat *params) const override; 87 void getUniformiv(const gl::Context *context, GLint location, GLint *params) const override; 88 void getUniformuiv(const gl::Context *context, GLint location, GLuint *params) const override; 89 }; 90 91 } // namespace rx 92 93 #endif // LIBANGLE_RENDERER_NULL_PROGRAMNULL_H_ 94