Index: gpu/command_buffer/client/gles2_implementation.cc |
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc |
index 892d565ea12117cedbb7bbd027537acaebce4163..953f87f44dcd1dd371838a3b1ba57c2ab7406ef2 100644 |
--- a/gpu/command_buffer/client/gles2_implementation.cc |
+++ b/gpu/command_buffer/client/gles2_implementation.cc |
@@ -1162,6 +1162,17 @@ void GLES2Implementation::BindAttribLocation( |
helper_->SetBucketSize(kResultBucketId, 0); |
} |
+void GLES2Implementation::BindUniformLocationCHROMIUM( |
+ GLuint program, GLint location, const char* name) { |
+ GPU_CLIENT_SINGLE_THREAD_CHECK(); |
+ GPU_CLIENT_LOG("[" << this << "] glBindUniformLocationCHROMIUM(" |
+ << program << ", " << location << ", " << name << ")"); |
+ SetBucketAsString(kResultBucketId, name); |
+ helper_->BindUniformLocationCHROMIUMBucket( |
+ program, location, kResultBucketId); |
+ helper_->SetBucketSize(kResultBucketId, 0); |
+} |
+ |
void GLES2Implementation::GetVertexAttribPointerv( |
GLuint index, GLenum pname, void** ptr) { |
GPU_CLIENT_SINGLE_THREAD_CHECK(); |
@@ -2091,7 +2102,6 @@ const GLubyte* GLES2Implementation::GetStringHelper(GLenum name) { |
str += std::string(str.empty() ? "" : " ") + |
"GL_CHROMIUM_map_sub " |
"GL_CHROMIUM_flipy " |
- "GL_CHROMIUM_consistent_uniform_locations " |
"GL_EXT_unpack_subimage"; |
break; |
default: |
@@ -3278,95 +3288,5 @@ void GLES2Implementation::GenMailboxCHROMIUM( |
std::copy(result.begin(), result.end(), mailbox); |
} |
-namespace { |
- |
-class GLUniformDefinitionComparer { |
- public: |
- explicit GLUniformDefinitionComparer( |
- const GLUniformDefinitionCHROMIUM* uniforms) |
- : uniforms_(uniforms) { |
- } |
- |
- bool operator()(const GLint lhs, const GLint rhs) const { |
- return strcmp(uniforms_[lhs].name, uniforms_[rhs].name) < 0; |
- } |
- |
- private: |
- const GLUniformDefinitionCHROMIUM* uniforms_; |
-}; |
- |
- |
- |
-} // anonymous namespace. |
- |
-void GLES2Implementation::GetUniformLocationsCHROMIUM( |
- GLuint program, |
- const GLUniformDefinitionCHROMIUM* uniforms, |
- GLsizei count, |
- GLsizei max_locations, |
- GLint* locations) { |
- (void)program; // To keep the compiler happy as it's unused in release. |
- |
- GPU_CLIENT_SINGLE_THREAD_CHECK(); |
- GPU_CLIENT_LOG("[" << this << "] glGenUniformLocationsCHROMIUM(" |
- << static_cast<const void*>(uniforms) << ", " << count << ", " |
- << max_locations << ", " << static_cast<const void*>(locations) << ")"); |
- |
- if (count <= 0) { |
- SetGLError(GL_INVALID_VALUE, "glGetUniformLocationsCHROMIUM", "count <= 0"); |
- return; |
- } |
- |
- for (GLsizei ii = 0; ii < count; ++ii) { |
- const GLUniformDefinitionCHROMIUM& def = uniforms[ii]; |
- if (def.size <= 0) { |
- SetGLError( |
- GL_INVALID_VALUE, "glGetUniformLocationsCHROMIUM", "size <= 0"); |
- return; |
- } |
- } |
- |
- scoped_array<GLint> indices(new GLint[count]); |
- for (GLint ii = 0; ii < count; ++ii) { |
- indices[ii] = ii; |
- } |
- |
- std::sort(&indices[0], &indices[count], |
- GLUniformDefinitionComparer(uniforms)); |
- |
- scoped_array<GLint> reverse_map(new GLint[count]); |
- |
- for (GLint ii = 0; ii < count; ++ii) { |
- reverse_map[indices[ii]] = ii; |
- } |
- |
- for (GLsizei ii = 0; ii < count; ++ii) { |
- const GLUniformDefinitionCHROMIUM& def = uniforms[ii]; |
- GLint base_location = reverse_map[ii]; |
- for (GLsizei jj = 0; jj < def.size; ++jj) { |
- if (max_locations <= 0) { |
- return; |
- } |
- GLint location = GLES2Util::SwizzleLocation( |
- GLES2Util::MakeFakeLocation(base_location, jj)); |
- *locations++ = location; |
- #if defined(GPU_CLIENT_DEBUG) |
- std::string name(def.name); |
- if (jj > 0) { |
- char buf[20]; |
- sprintf(buf, "%d", jj); |
- name = name + "[" + buf + "]"; |
- } |
- GPU_DCHECK_EQ( |
- location, |
- share_group_->program_info_manager()->GetUniformLocation( |
- this, program, name.c_str())); |
- #endif |
- --max_locations; |
- |
- } |
- } |
-} |
- |
} // namespace gles2 |
} // namespace gpu |