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 49f4fc74411d1b356bb200102ce74d7f6bac8861..2d8cfa0898d25b55432d11520c13022691bb46d6 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
@@ -9668,7 +9668,11 @@ void GLES2DecoderImpl::DoCopyTexImageIfNeeded(Texture* texture, |
ScopedGLErrorSuppressor suppressor( |
"GLES2DecoderImpl::DoCopyTexImageIfNeeded", GetErrorState()); |
glBindTexture(textarget, texture->service_id()); |
- DoCopyTexImage(texture, textarget, image); |
+ if (image->BindTexImage(textarget)) { |
+ image_state = Texture::BOUND; |
+ } else { |
+ DoCopyTexImage(texture, textarget, image); |
+ } |
RestoreCurrentTextureBindings(&state_, textarget); |
} |
} |
@@ -9733,9 +9737,13 @@ bool GLES2DecoderImpl::PrepareTexturesForRender() { |
!texture->IsAttachedToFramebuffer()) { |
ScopedGLErrorSuppressor suppressor( |
"GLES2DecoderImpl::PrepareTexturesForRender", GetErrorState()); |
- textures_set = true; |
glActiveTexture(GL_TEXTURE0 + texture_unit_index); |
- DoCopyTexImage(texture, textarget, image); |
+ if (image->BindTexImage(textarget)) { |
sandersd (OOO until July 31)
2017/05/23 23:23:31
This is same as the core of DoCopyTexImageIfNeeded
|
+ image_state = Texture::BOUND; |
+ } else { |
+ DoCopyTexImage(texture, textarget, image); |
+ } |
+ textures_set = true; |
continue; |
} |
} |