| Index: gpu/command_buffer/client/gles2_implementation_impl_autogen.h
 | 
| diff --git a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
 | 
| index d7a45ce1d95cc0b9dc4d7f0bb493361af2966aa8..e7ef7691755286f300146ce2abf6bd323fe4d9ab 100644
 | 
| --- a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
 | 
| +++ b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
 | 
| @@ -62,6 +62,14 @@ void GLES2Implementation::BindRenderbuffer(GLenum target, GLuint renderbuffer) {
 | 
|    CheckGLError();
 | 
|  }
 | 
|  
 | 
| +void GLES2Implementation::BindSampler(GLuint unit, GLuint sampler) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindSampler(" << unit << ", "
 | 
| +                     << sampler << ")");
 | 
| +  helper_->BindSampler(unit, sampler);
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
|  void GLES2Implementation::BindTexture(GLenum target, GLuint texture) {
 | 
|    GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
|    GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindTexture("
 | 
| @@ -75,6 +83,16 @@ void GLES2Implementation::BindTexture(GLenum target, GLuint texture) {
 | 
|    CheckGLError();
 | 
|  }
 | 
|  
 | 
| +void GLES2Implementation::BindTransformFeedback(GLenum target,
 | 
| +                                                GLuint transformfeedback) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindTransformFeedback("
 | 
| +                     << GLES2Util::GetStringTransformFeedbackBindTarget(target)
 | 
| +                     << ", " << transformfeedback << ")");
 | 
| +  helper_->BindTransformFeedback(target, transformfeedback);
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
|  void GLES2Implementation::BlendColor(GLclampf red,
 | 
|                                       GLclampf green,
 | 
|                                       GLclampf blue,
 | 
| @@ -397,6 +415,28 @@ void GLES2Implementation::DeleteRenderbuffers(GLsizei n,
 | 
|    CheckGLError();
 | 
|  }
 | 
|  
 | 
| +void GLES2Implementation::DeleteSamplers(GLsizei n, const GLuint* samplers) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteSamplers(" << n << ", "
 | 
| +                     << static_cast<const void*>(samplers) << ")");
 | 
| +  GPU_CLIENT_LOG_CODE_BLOCK({
 | 
| +    for (GLsizei i = 0; i < n; ++i) {
 | 
| +      GPU_CLIENT_LOG("  " << i << ": " << samplers[i]);
 | 
| +    }
 | 
| +  });
 | 
| +  GPU_CLIENT_DCHECK_CODE_BLOCK({
 | 
| +    for (GLsizei i = 0; i < n; ++i) {
 | 
| +      DCHECK(samplers[i] != 0);
 | 
| +    }
 | 
| +  });
 | 
| +  if (n < 0) {
 | 
| +    SetGLError(GL_INVALID_VALUE, "glDeleteSamplers", "n < 0");
 | 
| +    return;
 | 
| +  }
 | 
| +  DeleteSamplersHelper(n, samplers);
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
|  void GLES2Implementation::DeleteShader(GLuint shader) {
 | 
|    GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
|    GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteShader(" << shader << ")");
 | 
| @@ -427,6 +467,29 @@ void GLES2Implementation::DeleteTextures(GLsizei n, const GLuint* textures) {
 | 
|    CheckGLError();
 | 
|  }
 | 
|  
 | 
| +void GLES2Implementation::DeleteTransformFeedbacks(GLsizei n,
 | 
| +                                                   const GLuint* ids) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteTransformFeedbacks(" << n
 | 
| +                     << ", " << static_cast<const void*>(ids) << ")");
 | 
| +  GPU_CLIENT_LOG_CODE_BLOCK({
 | 
| +    for (GLsizei i = 0; i < n; ++i) {
 | 
| +      GPU_CLIENT_LOG("  " << i << ": " << ids[i]);
 | 
| +    }
 | 
| +  });
 | 
| +  GPU_CLIENT_DCHECK_CODE_BLOCK({
 | 
| +    for (GLsizei i = 0; i < n; ++i) {
 | 
| +      DCHECK(ids[i] != 0);
 | 
| +    }
 | 
| +  });
 | 
| +  if (n < 0) {
 | 
| +    SetGLError(GL_INVALID_VALUE, "glDeleteTransformFeedbacks", "n < 0");
 | 
| +    return;
 | 
| +  }
 | 
| +  DeleteTransformFeedbacksHelper(n, ids);
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
|  void GLES2Implementation::DepthFunc(GLenum func) {
 | 
|    GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
|    GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDepthFunc("
 | 
| @@ -588,6 +651,27 @@ void GLES2Implementation::GenRenderbuffers(GLsizei n, GLuint* renderbuffers) {
 | 
|    CheckGLError();
 | 
|  }
 | 
|  
 | 
| +void GLES2Implementation::GenSamplers(GLsizei n, GLuint* samplers) {
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenSamplers(" << n << ", "
 | 
| +                     << static_cast<const void*>(samplers) << ")");
 | 
| +  if (n < 0) {
 | 
| +    SetGLError(GL_INVALID_VALUE, "glGenSamplers", "n < 0");
 | 
| +    return;
 | 
| +  }
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GetIdHandler(id_namespaces::kSamplers)->MakeIds(this, 0, n, samplers);
 | 
| +  GenSamplersHelper(n, samplers);
 | 
| +  helper_->GenSamplersImmediate(n, samplers);
 | 
| +  if (share_group_->bind_generates_resource())
 | 
| +    helper_->CommandBufferHelper::Flush();
 | 
| +  GPU_CLIENT_LOG_CODE_BLOCK({
 | 
| +    for (GLsizei i = 0; i < n; ++i) {
 | 
| +      GPU_CLIENT_LOG("  " << i << ": " << samplers[i]);
 | 
| +    }
 | 
| +  });
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
|  void GLES2Implementation::GenTextures(GLsizei n, GLuint* textures) {
 | 
|    GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenTextures(" << n << ", "
 | 
|                       << static_cast<const void*>(textures) << ")");
 | 
| @@ -609,6 +693,27 @@ void GLES2Implementation::GenTextures(GLsizei n, GLuint* textures) {
 | 
|    CheckGLError();
 | 
|  }
 | 
|  
 | 
| +void GLES2Implementation::GenTransformFeedbacks(GLsizei n, GLuint* ids) {
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenTransformFeedbacks(" << n
 | 
| +                     << ", " << static_cast<const void*>(ids) << ")");
 | 
| +  if (n < 0) {
 | 
| +    SetGLError(GL_INVALID_VALUE, "glGenTransformFeedbacks", "n < 0");
 | 
| +    return;
 | 
| +  }
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GetIdHandler(id_namespaces::kTransformFeedbacks)->MakeIds(this, 0, n, ids);
 | 
| +  GenTransformFeedbacksHelper(n, ids);
 | 
| +  helper_->GenTransformFeedbacksImmediate(n, ids);
 | 
| +  if (share_group_->bind_generates_resource())
 | 
| +    helper_->CommandBufferHelper::Flush();
 | 
| +  GPU_CLIENT_LOG_CODE_BLOCK({
 | 
| +    for (GLsizei i = 0; i < n; ++i) {
 | 
| +      GPU_CLIENT_LOG("  " << i << ": " << ids[i]);
 | 
| +    }
 | 
| +  });
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
|  void GLES2Implementation::GetBooleanv(GLenum pname, GLboolean* params) {
 | 
|    GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
|    GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLboolean, params);
 | 
| @@ -874,6 +979,65 @@ void GLES2Implementation::GetRenderbufferParameteriv(GLenum target,
 | 
|    });
 | 
|    CheckGLError();
 | 
|  }
 | 
| +void GLES2Implementation::GetSamplerParameterfv(GLuint sampler,
 | 
| +                                                GLenum pname,
 | 
| +                                                GLfloat* params) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetSamplerParameterfv("
 | 
| +                     << sampler << ", "
 | 
| +                     << GLES2Util::GetStringSamplerParameter(pname) << ", "
 | 
| +                     << static_cast<const void*>(params) << ")");
 | 
| +  TRACE_EVENT0("gpu", "GLES2Implementation::GetSamplerParameterfv");
 | 
| +  if (GetSamplerParameterfvHelper(sampler, pname, params)) {
 | 
| +    return;
 | 
| +  }
 | 
| +  typedef cmds::GetSamplerParameterfv::Result Result;
 | 
| +  Result* result = GetResultAs<Result*>();
 | 
| +  if (!result) {
 | 
| +    return;
 | 
| +  }
 | 
| +  result->SetNumResults(0);
 | 
| +  helper_->GetSamplerParameterfv(sampler, pname, GetResultShmId(),
 | 
| +                                 GetResultShmOffset());
 | 
| +  WaitForCmd();
 | 
| +  result->CopyResult(params);
 | 
| +  GPU_CLIENT_LOG_CODE_BLOCK({
 | 
| +    for (int32_t i = 0; i < result->GetNumResults(); ++i) {
 | 
| +      GPU_CLIENT_LOG("  " << i << ": " << result->GetData()[i]);
 | 
| +    }
 | 
| +  });
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +void GLES2Implementation::GetSamplerParameteriv(GLuint sampler,
 | 
| +                                                GLenum pname,
 | 
| +                                                GLint* params) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetSamplerParameteriv("
 | 
| +                     << sampler << ", "
 | 
| +                     << GLES2Util::GetStringSamplerParameter(pname) << ", "
 | 
| +                     << static_cast<const void*>(params) << ")");
 | 
| +  TRACE_EVENT0("gpu", "GLES2Implementation::GetSamplerParameteriv");
 | 
| +  if (GetSamplerParameterivHelper(sampler, pname, params)) {
 | 
| +    return;
 | 
| +  }
 | 
| +  typedef cmds::GetSamplerParameteriv::Result Result;
 | 
| +  Result* result = GetResultAs<Result*>();
 | 
| +  if (!result) {
 | 
| +    return;
 | 
| +  }
 | 
| +  result->SetNumResults(0);
 | 
| +  helper_->GetSamplerParameteriv(sampler, pname, GetResultShmId(),
 | 
| +                                 GetResultShmOffset());
 | 
| +  WaitForCmd();
 | 
| +  result->CopyResult(params);
 | 
| +  GPU_CLIENT_LOG_CODE_BLOCK({
 | 
| +    for (int32_t i = 0; i < result->GetNumResults(); ++i) {
 | 
| +      GPU_CLIENT_LOG("  " << i << ": " << result->GetData()[i]);
 | 
| +    }
 | 
| +  });
 | 
| +  CheckGLError();
 | 
| +}
 | 
|  void GLES2Implementation::GetShaderiv(GLuint shader,
 | 
|                                        GLenum pname,
 | 
|                                        GLint* params) {
 | 
| @@ -1154,6 +1318,24 @@ GLboolean GLES2Implementation::IsRenderbuffer(GLuint renderbuffer) {
 | 
|    return result_value;
 | 
|  }
 | 
|  
 | 
| +GLboolean GLES2Implementation::IsSampler(GLuint sampler) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  TRACE_EVENT0("gpu", "GLES2Implementation::IsSampler");
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsSampler(" << sampler << ")");
 | 
| +  typedef cmds::IsSampler::Result Result;
 | 
| +  Result* result = GetResultAs<Result*>();
 | 
| +  if (!result) {
 | 
| +    return GL_FALSE;
 | 
| +  }
 | 
| +  *result = 0;
 | 
| +  helper_->IsSampler(sampler, GetResultShmId(), GetResultShmOffset());
 | 
| +  WaitForCmd();
 | 
| +  GLboolean result_value = *result != 0;
 | 
| +  GPU_CLIENT_LOG("returned " << result_value);
 | 
| +  CheckGLError();
 | 
| +  return result_value;
 | 
| +}
 | 
| +
 | 
|  GLboolean GLES2Implementation::IsShader(GLuint shader) {
 | 
|    GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
|    TRACE_EVENT0("gpu", "GLES2Implementation::IsShader");
 | 
| @@ -1190,6 +1372,26 @@ GLboolean GLES2Implementation::IsTexture(GLuint texture) {
 | 
|    return result_value;
 | 
|  }
 | 
|  
 | 
| +GLboolean GLES2Implementation::IsTransformFeedback(GLuint transformfeedback) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  TRACE_EVENT0("gpu", "GLES2Implementation::IsTransformFeedback");
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsTransformFeedback("
 | 
| +                     << transformfeedback << ")");
 | 
| +  typedef cmds::IsTransformFeedback::Result Result;
 | 
| +  Result* result = GetResultAs<Result*>();
 | 
| +  if (!result) {
 | 
| +    return GL_FALSE;
 | 
| +  }
 | 
| +  *result = 0;
 | 
| +  helper_->IsTransformFeedback(transformfeedback, GetResultShmId(),
 | 
| +                               GetResultShmOffset());
 | 
| +  WaitForCmd();
 | 
| +  GLboolean result_value = *result != 0;
 | 
| +  GPU_CLIENT_LOG("returned " << result_value);
 | 
| +  CheckGLError();
 | 
| +  return result_value;
 | 
| +}
 | 
| +
 | 
|  void GLES2Implementation::LineWidth(GLfloat width) {
 | 
|    GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
|    GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glLineWidth(" << width << ")");
 | 
| @@ -1197,6 +1399,14 @@ void GLES2Implementation::LineWidth(GLfloat width) {
 | 
|    CheckGLError();
 | 
|  }
 | 
|  
 | 
| +void GLES2Implementation::PauseTransformFeedback() {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glPauseTransformFeedback("
 | 
| +                     << ")");
 | 
| +  helper_->PauseTransformFeedback();
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
|  void GLES2Implementation::PolygonOffset(GLfloat factor, GLfloat units) {
 | 
|    GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
|    GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glPolygonOffset(" << factor << ", "
 | 
| @@ -1242,6 +1452,14 @@ void GLES2Implementation::RenderbufferStorage(GLenum target,
 | 
|    CheckGLError();
 | 
|  }
 | 
|  
 | 
| +void GLES2Implementation::ResumeTransformFeedback() {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glResumeTransformFeedback("
 | 
| +                     << ")");
 | 
| +  helper_->ResumeTransformFeedback();
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
|  void GLES2Implementation::SampleCoverage(GLclampf value, GLboolean invert) {
 | 
|    GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
|    GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glSampleCoverage(" << value << ", "
 | 
| @@ -1250,6 +1468,52 @@ void GLES2Implementation::SampleCoverage(GLclampf value, GLboolean invert) {
 | 
|    CheckGLError();
 | 
|  }
 | 
|  
 | 
| +void GLES2Implementation::SamplerParameterf(GLuint sampler,
 | 
| +                                            GLenum pname,
 | 
| +                                            GLfloat param) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glSamplerParameterf(" << sampler
 | 
| +                     << ", " << GLES2Util::GetStringSamplerParameter(pname)
 | 
| +                     << ", " << param << ")");
 | 
| +  helper_->SamplerParameterf(sampler, pname, param);
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
| +void GLES2Implementation::SamplerParameterfv(GLuint sampler,
 | 
| +                                             GLenum pname,
 | 
| +                                             const GLfloat* params) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glSamplerParameterfv(" << sampler
 | 
| +                     << ", " << GLES2Util::GetStringSamplerParameter(pname)
 | 
| +                     << ", " << static_cast<const void*>(params) << ")");
 | 
| +  GPU_CLIENT_LOG("values: " << params[0]);
 | 
| +  helper_->SamplerParameterfvImmediate(sampler, pname, params);
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
| +void GLES2Implementation::SamplerParameteri(GLuint sampler,
 | 
| +                                            GLenum pname,
 | 
| +                                            GLint param) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glSamplerParameteri(" << sampler
 | 
| +                     << ", " << GLES2Util::GetStringSamplerParameter(pname)
 | 
| +                     << ", " << param << ")");
 | 
| +  helper_->SamplerParameteri(sampler, pname, param);
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
| +void GLES2Implementation::SamplerParameteriv(GLuint sampler,
 | 
| +                                             GLenum pname,
 | 
| +                                             const GLint* params) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glSamplerParameteriv(" << sampler
 | 
| +                     << ", " << GLES2Util::GetStringSamplerParameter(pname)
 | 
| +                     << ", " << static_cast<const void*>(params) << ")");
 | 
| +  GPU_CLIENT_LOG("values: " << params[0]);
 | 
| +  helper_->SamplerParameterivImmediate(sampler, pname, params);
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
|  void GLES2Implementation::Scissor(GLint x,
 | 
|                                    GLint y,
 | 
|                                    GLsizei width,
 | 
| @@ -2391,6 +2655,23 @@ void GLES2Implementation::DeleteQueriesEXT(GLsizei n, const GLuint* queries) {
 | 
|    CheckGLError();
 | 
|  }
 | 
|  
 | 
| +void GLES2Implementation::BeginTransformFeedback(GLenum primitivemode) {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBeginTransformFeedback("
 | 
| +                     << GLES2Util::GetStringTransformFeedbackPrimitiveMode(
 | 
| +                            primitivemode) << ")");
 | 
| +  helper_->BeginTransformFeedback(primitivemode);
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
| +void GLES2Implementation::EndTransformFeedback() {
 | 
| +  GPU_CLIENT_SINGLE_THREAD_CHECK();
 | 
| +  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glEndTransformFeedback("
 | 
| +                     << ")");
 | 
| +  helper_->EndTransformFeedback();
 | 
| +  CheckGLError();
 | 
| +}
 | 
| +
 | 
|  void GLES2Implementation::GenVertexArraysOES(GLsizei n, GLuint* arrays) {
 | 
|    GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenVertexArraysOES(" << n << ", "
 | 
|                       << static_cast<const void*>(arrays) << ")");
 | 
| 
 |