Index: media/gpu/ipc/service/gpu_video_decode_accelerator.cc |
diff --git a/media/gpu/ipc/service/gpu_video_decode_accelerator.cc b/media/gpu/ipc/service/gpu_video_decode_accelerator.cc |
index 1470a1254cd4bf9c8357878c246c693058ca7704..cdc67c2e7540bd8710dbfdea6e8739219fe6c7c6 100644 |
--- a/media/gpu/ipc/service/gpu_video_decode_accelerator.cc |
+++ b/media/gpu/ipc/service/gpu_video_decode_accelerator.cc |
@@ -519,8 +519,14 @@ void GpuVideoDecodeAccelerator::SetTextureCleared(const Picture& picture) { |
GLenum target = texture_ref->texture()->target(); |
gpu::gles2::TextureManager* texture_manager = |
stub_->decoder()->GetContextGroup()->texture_manager(); |
- DCHECK(!texture_ref->texture()->IsLevelCleared(target, 0)); |
- texture_manager->SetLevelCleared(texture_ref.get(), target, 0, true); |
+ |
+ // External textures are a special case and expected to already be cleared. |
+ if (target == GL_TEXTURE_EXTERNAL_OES) { |
+ DCHECK(texture_ref->texture()->IsLevelCleared(target, 0)); |
+ } else { |
+ DCHECK(!texture_ref->texture()->IsLevelCleared(target, 0)); |
+ texture_manager->SetLevelCleared(texture_ref.get(), target, 0, true); |
+ } |
} |
uncleared_textures_.erase(it); |
} |