| Index: media/renderers/skcanvas_video_renderer.cc
|
| diff --git a/media/renderers/skcanvas_video_renderer.cc b/media/renderers/skcanvas_video_renderer.cc
|
| index 3c7cfb9b9202a3674cd377d0576517c60959bb2e..0dd4ed313e0e14bd8dee48ea8de4b577c2cc9fcc 100644
|
| --- a/media/renderers/skcanvas_video_renderer.cc
|
| +++ b/media/renderers/skcanvas_video_renderer.cc
|
| @@ -204,7 +204,8 @@ sk_sp<SkImage> NewSkImageFromVideoFrameNative(VideoFrame* video_frame,
|
| SkCanvasVideoRenderer::CopyVideoFrameSingleTextureToGLTexture(
|
| gl, video_frame,
|
| SkCanvasVideoRenderer::SingleFrameForVideoElementOrCanvas,
|
| - source_texture, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, true, false);
|
| + GL_TEXTURE_2D, source_texture, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 0,
|
| + true, false);
|
| context_3d.gr_context->resetContext(kTextureBinding_GrGLBackendState);
|
| } else {
|
| gl->WaitSyncTokenCHROMIUM(mailbox_holder.sync_token.GetConstData());
|
| @@ -805,10 +806,12 @@ void SkCanvasVideoRenderer::CopyVideoFrameSingleTextureToGLTexture(
|
| gpu::gles2::GLES2Interface* gl,
|
| VideoFrame* video_frame,
|
| SingleFrameCopyMode copy_mode,
|
| + unsigned int target,
|
| unsigned int texture,
|
| unsigned int internal_format,
|
| unsigned int format,
|
| unsigned int type,
|
| + int level,
|
| bool premultiply_alpha,
|
| bool flip_y) {
|
| DCHECK(video_frame);
|
| @@ -834,7 +837,7 @@ void SkCanvasVideoRenderer::CopyVideoFrameSingleTextureToGLTexture(
|
| if (copy_mode == SingleFrameForVideoElementOrCanvas ||
|
| !VideoTextureNeedsClipping(video_frame)) {
|
| // No need to clip the source video texture.
|
| - gl->CopyTextureCHROMIUM(source_texture, 0, GL_TEXTURE_2D, texture, 0,
|
| + gl->CopyTextureCHROMIUM(source_texture, 0, target, texture, level,
|
| internal_format, type, flip_y, premultiply_alpha,
|
| false);
|
| } else {
|
| @@ -852,12 +855,12 @@ void SkCanvasVideoRenderer::CopyVideoFrameSingleTextureToGLTexture(
|
| DCHECK_LE(dest_rect.width(), video_frame->coded_size().width());
|
| DCHECK_LE(dest_rect.height(), video_frame->coded_size().height());
|
| #endif
|
| - gl->TexImage2D(GL_TEXTURE_2D, 0, internal_format, dest_rect.width(),
|
| + gl->TexImage2D(target, level, internal_format, dest_rect.width(),
|
| dest_rect.height(), 0, format, type, nullptr);
|
| - gl->CopySubTextureCHROMIUM(source_texture, 0, GL_TEXTURE_2D, texture, 0, 0,
|
| - 0, dest_rect.x(), dest_rect.y(),
|
| - dest_rect.width(), dest_rect.height(), flip_y,
|
| - premultiply_alpha, false);
|
| + gl->CopySubTextureCHROMIUM(source_texture, 0, target, texture, level, 0, 0,
|
| + dest_rect.x(), dest_rect.y(), dest_rect.width(),
|
| + dest_rect.height(), flip_y, premultiply_alpha,
|
| + false);
|
| }
|
|
|
| gl->DeleteTextures(1, &source_texture);
|
| @@ -871,10 +874,12 @@ bool SkCanvasVideoRenderer::CopyVideoFrameTexturesToGLTexture(
|
| const Context3D& context_3d,
|
| gpu::gles2::GLES2Interface* destination_gl,
|
| const scoped_refptr<VideoFrame>& video_frame,
|
| + unsigned int target,
|
| unsigned int texture,
|
| unsigned int internal_format,
|
| unsigned int format,
|
| unsigned int type,
|
| + int level,
|
| bool premultiply_alpha,
|
| bool flip_y) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| @@ -927,17 +932,17 @@ bool SkCanvasVideoRenderer::CopyVideoFrameTexturesToGLTexture(
|
| DCHECK_LE(dest_rect.width(), video_frame->coded_size().width());
|
| DCHECK_LE(dest_rect.height(), video_frame->coded_size().height());
|
| #endif
|
| - destination_gl->TexImage2D(GL_TEXTURE_2D, 0, internal_format,
|
| + destination_gl->TexImage2D(target, level, internal_format,
|
| dest_rect.width(), dest_rect.height(), 0,
|
| format, type, nullptr);
|
| destination_gl->CopySubTextureCHROMIUM(
|
| - intermediate_texture, 0, GL_TEXTURE_2D, texture, 0, 0, 0,
|
| - dest_rect.x(), dest_rect.y(), dest_rect.width(), dest_rect.height(),
|
| - flip_y, premultiply_alpha, false);
|
| + intermediate_texture, 0, target, texture, level, 0, 0, dest_rect.x(),
|
| + dest_rect.y(), dest_rect.width(), dest_rect.height(), flip_y,
|
| + premultiply_alpha, false);
|
| } else {
|
| - destination_gl->CopyTextureCHROMIUM(
|
| - intermediate_texture, 0, GL_TEXTURE_2D, texture, 0, internal_format,
|
| - type, flip_y, premultiply_alpha, false);
|
| + destination_gl->CopyTextureCHROMIUM(intermediate_texture, 0, target,
|
| + texture, level, internal_format, type,
|
| + flip_y, premultiply_alpha, false);
|
| }
|
|
|
| destination_gl->DeleteTextures(1, &intermediate_texture);
|
| @@ -955,8 +960,8 @@ bool SkCanvasVideoRenderer::CopyVideoFrameTexturesToGLTexture(
|
| video_frame->UpdateReleaseSyncToken(&client);
|
| } else {
|
| CopyVideoFrameSingleTextureToGLTexture(
|
| - destination_gl, video_frame.get(), SingleFrameForWebGL, texture,
|
| - internal_format, format, type, premultiply_alpha, flip_y);
|
| + destination_gl, video_frame.get(), SingleFrameForWebGL, target, texture,
|
| + internal_format, format, type, level, premultiply_alpha, flip_y);
|
| }
|
|
|
| return true;
|
|
|