blob: 1dac8d959e7a0a60b36241af570e03d79962dabe [file] [log] [blame]
egdaniel7ea439b2015-12-03 09:20:44 -08001/*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef GrGLUniformHandler_DEFINED
9#define GrGLUniformHandler_DEFINED
10
11#include "glsl/GrGLSLUniformHandler.h"
12
13#include "gl/GrGLProgramDataManager.h"
14
15class GrGLCaps;
16
egdaniel7ea439b2015-12-03 09:20:44 -080017class GrGLUniformHandler : public GrGLSLUniformHandler {
18public:
jvanverth633b3562016-03-23 11:01:22 -070019 static const int kUniformsPerBlock = 8;
20
egdaniel7ea439b2015-12-03 09:20:44 -080021 const GrGLSLShaderVar& getUniformVariable(UniformHandle u) const override {
22 return fUniforms[u.toIndex()].fVariable;
23 }
24
25 const char* getUniformCStr(UniformHandle u) const override {
26 return this->getUniformVariable(u).c_str();
27 }
28private:
29 explicit GrGLUniformHandler(GrGLSLProgramBuilder* program)
30 : INHERITED(program)
31 , fUniforms(kUniformsPerBlock) {}
32
33 UniformHandle internalAddUniformArray(uint32_t visibility,
34 GrSLType type,
35 GrSLPrecision precision,
36 const char* name,
37 bool mangleName,
38 int arrayCount,
39 const char** outName) override;
40
cdalton5e58cee2016-02-11 12:49:47 -080041 void appendUniformDecls(GrShaderFlags visibility, SkString*) const override;
egdaniel7ea439b2015-12-03 09:20:44 -080042
43 // Manually set uniform locations for all our uniforms.
44 void bindUniformLocations(GrGLuint programID, const GrGLCaps& caps);
45
46 // Updates the loction of the Uniforms if we cannot bind uniform locations manually
47 void getUniformLocations(GrGLuint programID, const GrGLCaps& caps);
48
49 const GrGLGpu* glGpu() const;
50
51 typedef GrGLProgramDataManager::UniformInfo UniformInfo;
52 typedef GrGLProgramDataManager::UniformInfoArray UniformInfoArray;
53
54 UniformInfoArray fUniforms;
55
56 friend class GrGLProgramBuilder;
57
halcanary9d524f22016-03-29 09:03:52 -070058 typedef GrGLSLUniformHandler INHERITED;
egdaniel7ea439b2015-12-03 09:20:44 -080059};
60
61#endif