| Index: gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| index b66562557545b6461e3b08b28e692e9911518cb4..ffb02574c6118c2780153ff0e67b81345aa149c5 100644
|
| --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| @@ -6834,7 +6834,7 @@ error::Error GLES2DecoderImpl::ShaderSourceHelper(
|
| }
|
| // Note: We don't actually call glShaderSource here. We wait until
|
| // the call to glCompileShader.
|
| - shader->UpdateSource(str.c_str());
|
| + shader->set_source(str);
|
| return error::kNoError;
|
| }
|
|
|
| @@ -6864,11 +6864,10 @@ void GLES2DecoderImpl::DoCompileShader(GLuint client_id) {
|
| vertex_translator_.get() : fragment_translator_.get();
|
| }
|
|
|
| - program_manager()->DoCompileShader(
|
| - shader,
|
| + shader->DoCompile(
|
| translator,
|
| feature_info_->feature_flags().angle_translated_shader_source ?
|
| - ProgramManager::kANGLE : ProgramManager::kGL);
|
| + Shader::kANGLE : Shader::kGL);
|
|
|
| // CompileShader can be very slow. Exit command processing to allow for
|
| // context preemption and GPU watchdog checks.
|
| @@ -6883,17 +6882,22 @@ void GLES2DecoderImpl::DoGetShaderiv(
|
| }
|
| switch (pname) {
|
| case GL_SHADER_SOURCE_LENGTH:
|
| - *params = shader->source() ? shader->source()->size() + 1 : 0;
|
| + *params = shader->source().size();
|
| + if (*params)
|
| + ++(*params);
|
| return;
|
| case GL_COMPILE_STATUS:
|
| - *params = compile_shader_always_succeeds_ ? true : shader->IsValid();
|
| + *params = compile_shader_always_succeeds_ ? true : shader->valid();
|
| return;
|
| case GL_INFO_LOG_LENGTH:
|
| - *params = shader->log_info() ? shader->log_info()->size() + 1 : 0;
|
| + *params = shader->log_info().size();
|
| + if (*params)
|
| + ++(*params);
|
| return;
|
| case GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE:
|
| - *params = shader->translated_source() ?
|
| - shader->translated_source()->size() + 1 : 0;
|
| + *params = shader->translated_source().size();
|
| + if (*params)
|
| + ++(*params);
|
| return;
|
| default:
|
| break;
|
| @@ -6909,11 +6913,11 @@ error::Error GLES2DecoderImpl::HandleGetShaderSource(uint32 immediate_data_size,
|
| uint32 bucket_id = static_cast<uint32>(c.bucket_id);
|
| Bucket* bucket = CreateBucket(bucket_id);
|
| Shader* shader = GetShaderInfoNotProgram(shader_id, "glGetShaderSource");
|
| - if (!shader || !shader->source()) {
|
| + if (!shader || shader->source().empty()) {
|
| bucket->SetSize(0);
|
| return error::kNoError;
|
| }
|
| - bucket->SetFromString(shader->source()->c_str());
|
| + bucket->SetFromString(shader->source().c_str());
|
| return error::kNoError;
|
| }
|
|
|
| @@ -6933,8 +6937,7 @@ error::Error GLES2DecoderImpl::HandleGetTranslatedShaderSourceANGLE(
|
| return error::kNoError;
|
| }
|
|
|
| - bucket->SetFromString(shader->translated_source() ?
|
| - shader->translated_source()->c_str() : NULL);
|
| + bucket->SetFromString(shader->translated_source().c_str());
|
| return error::kNoError;
|
| }
|
|
|
| @@ -6965,11 +6968,11 @@ error::Error GLES2DecoderImpl::HandleGetShaderInfoLog(
|
| uint32 bucket_id = static_cast<uint32>(c.bucket_id);
|
| Bucket* bucket = CreateBucket(bucket_id);
|
| Shader* shader = GetShaderInfoNotProgram(shader_id, "glGetShaderInfoLog");
|
| - if (!shader || !shader->log_info()) {
|
| + if (!shader) {
|
| bucket->SetFromString("");
|
| return error::kNoError;
|
| }
|
| - bucket->SetFromString(shader->log_info()->c_str());
|
| + bucket->SetFromString(shader->log_info().c_str());
|
| return error::kNoError;
|
| }
|
|
|
|
|