Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(463)

Side by Side Diff: gpu/command_buffer/client/program_info_manager.h

Issue 906613005: Add glUniformBlockBinding to GPU command buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@uniform
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef GPU_COMMAND_BUFFER_CLIENT_PROGRAM_INFO_MANAGER_H_ 5 #ifndef GPU_COMMAND_BUFFER_CLIENT_PROGRAM_INFO_MANAGER_H_
6 #define GPU_COMMAND_BUFFER_CLIENT_PROGRAM_INFO_MANAGER_H_ 6 #define GPU_COMMAND_BUFFER_CLIENT_PROGRAM_INFO_MANAGER_H_
7 7
8 #include <GLES3/gl3.h> 8 #include <GLES3/gl3.h>
9 9
10 #include <string> 10 #include <string>
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 GLES2Implementation* gl, GLuint program, const char* name); 53 GLES2Implementation* gl, GLuint program, const char* name);
54 54
55 bool GetActiveUniformBlockName( 55 bool GetActiveUniformBlockName(
56 GLES2Implementation* gl, GLuint program, GLuint index, 56 GLES2Implementation* gl, GLuint program, GLuint index,
57 GLsizei buf_size, GLsizei* length, char* name); 57 GLsizei buf_size, GLsizei* length, char* name);
58 58
59 bool GetActiveUniformBlockiv( 59 bool GetActiveUniformBlockiv(
60 GLES2Implementation* gl, GLuint program, GLuint index, 60 GLES2Implementation* gl, GLuint program, GLuint index,
61 GLenum pname, GLint* params); 61 GLenum pname, GLint* params);
62 62
63 // Attempt to update the |index| uniform block binding.
64 // It's no op if the program does not exist, or the |index| uniform block
65 // is not in the cache, or binding >= GL_MAX_UNIFORM_BUFFER_BINDINGS.
66 void UniformBlockBinding(
67 GLES2Implementation* gl, GLuint program, GLuint index, GLuint binding);
68
63 private: 69 private:
64 friend class ProgramInfoManagerTest; 70 friend class ProgramInfoManagerTest;
65 71
66 FRIEND_TEST_ALL_PREFIXES(ProgramInfoManagerTest, UpdateES3UniformBlocks); 72 FRIEND_TEST_ALL_PREFIXES(ProgramInfoManagerTest, UpdateES3UniformBlocks);
67 73
68 enum ProgramInfoType { 74 enum ProgramInfoType {
69 kES2, 75 kES2,
70 kES3UniformBlocks, 76 kES3UniformBlocks,
71 kNone, 77 kNone,
72 }; 78 };
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 GLint GetUniformLocation(const std::string& name) const; 125 GLint GetUniformLocation(const std::string& name) const;
120 126
121 GLint GetFragDataLocation(const std::string& name) const; 127 GLint GetFragDataLocation(const std::string& name) const;
122 void CacheFragDataLocation(const std::string& name, GLint loc); 128 void CacheFragDataLocation(const std::string& name, GLint loc);
123 129
124 bool GetProgramiv(GLenum pname, GLint* params); 130 bool GetProgramiv(GLenum pname, GLint* params);
125 131
126 // Gets the index of a uniform block by name. 132 // Gets the index of a uniform block by name.
127 GLuint GetUniformBlockIndex(const std::string& name) const; 133 GLuint GetUniformBlockIndex(const std::string& name) const;
128 const UniformBlock* GetUniformBlock(GLuint index) const; 134 const UniformBlock* GetUniformBlock(GLuint index) const;
135 // Update the binding if the |index| uniform block is in the cache.
136 void UniformBlockBinding(GLuint index, GLuint binding);
129 137
130 // Updates the ES2 only program info after a successful link. 138 // Updates the ES2 only program info after a successful link.
131 void UpdateES2(const std::vector<int8>& result); 139 void UpdateES2(const std::vector<int8>& result);
132 140
133 // Updates the ES3 UniformBlock info after a successful link. 141 // Updates the ES3 UniformBlock info after a successful link.
134 void UpdateES3UniformBlocks(const std::vector<int8>& result); 142 void UpdateES3UniformBlocks(const std::vector<int8>& result);
135 143
136 bool IsCached(ProgramInfoType type) const; 144 bool IsCached(ProgramInfoType type) const;
137 145
138 private: 146 private:
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 178
171 ProgramInfoMap program_infos_; 179 ProgramInfoMap program_infos_;
172 180
173 mutable base::Lock lock_; 181 mutable base::Lock lock_;
174 }; 182 };
175 183
176 } // namespace gles2 184 } // namespace gles2
177 } // namespace gpu 185 } // namespace gpu
178 186
179 #endif // GPU_COMMAND_BUFFER_CLIENT_PROGRAM_INFO_MANAGER_H_ 187 #endif // GPU_COMMAND_BUFFER_CLIENT_PROGRAM_INFO_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698