Index: gpu/command_buffer/service/gles2_cmd_decoder.cc |
=================================================================== |
--- gpu/command_buffer/service/gles2_cmd_decoder.cc (revision 98673) |
+++ gpu/command_buffer/service/gles2_cmd_decoder.cc (working copy) |
@@ -2672,6 +2672,12 @@ |
if (client_id != 0) { |
info = GetBufferInfo(client_id); |
if (!info) { |
+ if (!group_->bind_generates_resource()) { |
+ SetGLError(GL_INVALID_VALUE, |
+ "glBindBuffer: id not generated by glGenBuffers"); |
+ return; |
+ } |
+ |
// It's a new id so make a buffer info for it. |
glGenBuffersARB(1, &service_id); |
CreateBufferInfo(client_id, service_id); |
@@ -2751,6 +2757,12 @@ |
if (client_id != 0) { |
info = GetFramebufferInfo(client_id); |
if (!info) { |
+ if (!group_->bind_generates_resource()) { |
+ SetGLError(GL_INVALID_VALUE, |
+ "glBindFramebuffer: id not generated by glGenFramebuffers"); |
+ return; |
+ } |
+ |
// It's a new id so make a framebuffer info for it. |
glGenFramebuffersEXT(1, &service_id); |
CreateFramebufferInfo(client_id, service_id); |
@@ -2790,6 +2802,13 @@ |
if (client_id != 0) { |
info = GetRenderbufferInfo(client_id); |
if (!info) { |
+ if (!group_->bind_generates_resource()) { |
+ SetGLError( |
+ GL_INVALID_VALUE, |
+ "glBindRenderbuffer: id not generated by glGenRenderbuffers"); |
+ return; |
+ } |
+ |
// It's a new id so make a renderbuffer info for it. |
glGenRenderbuffersEXT(1, &service_id); |
CreateRenderbufferInfo(client_id, service_id); |
@@ -2812,6 +2831,12 @@ |
if (client_id != 0) { |
info = GetTextureInfo(client_id); |
if (!info) { |
+ if (!group_->bind_generates_resource()) { |
+ SetGLError(GL_INVALID_VALUE, |
+ "glBindTexture: id not generated by glGenTextures"); |
+ return; |
+ } |
+ |
// It's a new id so make a texture info for it. |
glGenTextures(1, &service_id); |
CreateTextureInfo(client_id, service_id); |
@@ -4659,7 +4684,7 @@ |
ProgramManager::ProgramInfo* info = GetProgramInfoNotShader( |
program, "glGetProgramInfoLog"); |
if (!info || !info->log_info()) { |
- bucket->SetSize(0); |
+ bucket->SetFromString(""); |
return error::kNoError; |
} |
bucket->SetFromString(info->log_info()->c_str()); |
@@ -4674,7 +4699,7 @@ |
ShaderManager::ShaderInfo* info = GetShaderInfoNotProgram( |
shader, "glGetShaderInfoLog"); |
if (!info || !info->log_info()) { |
- bucket->SetSize(0); |
+ bucket->SetFromString(""); |
return error::kNoError; |
} |
bucket->SetFromString(info->log_info()->c_str()); |
@@ -6724,17 +6749,9 @@ |
Bucket* bucket = CreateBucket(bucket_id); |
bucket->SetSize(sizeof(ProgramInfoHeader)); // in case we fail. |
ProgramManager::ProgramInfo* info = NULL; |
- if (program) { |
- info = GetProgramInfoNotShader(program, "glGetProgramInfoCHROMIUM"); |
- if (!info) { |
- return error::kNoError; |
- } |
- if (!info->IsValid()) { |
- // Program was not linked successfully. (ie, glLinkProgram) |
- SetGLError(GL_INVALID_OPERATION, |
- "glGetProgramInfoCHROMIUM: program not linked"); |
- return error::kNoError; |
- } |
+ info = GetProgramInfo(program); |
+ if (!info || !info->IsValid()) { |
+ return error::kNoError; |
} |
info->GetProgramInfo(bucket); |
return error::kNoError; |