Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Side by Side Diff: media/renderers/skcanvas_video_renderer_unittest.cc

Issue 1819663002: Bind GrContext to GLES2Interfaces in tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@function
Patch Set: Minimal GetString impl for TestGLES2Interface in skcanvas_video_renderer_unittest.cc Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "gpu/GLES2/gl2extchromium.h" 9 #include "gpu/GLES2/gl2extchromium.h"
10 #include "gpu/command_buffer/client/gles2_interface_stub.h" 10 #include "gpu/command_buffer/client/gles2_interface_stub.h"
11 #include "gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h"
11 #include "media/base/timestamp_constants.h" 12 #include "media/base/timestamp_constants.h"
12 #include "media/base/video_frame.h" 13 #include "media/base/video_frame.h"
13 #include "media/base/video_util.h" 14 #include "media/base/video_util.h"
14 #include "media/renderers/skcanvas_video_renderer.h" 15 #include "media/renderers/skcanvas_video_renderer.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 #include "third_party/libyuv/include/libyuv/convert.h" 17 #include "third_party/libyuv/include/libyuv/convert.h"
17 #include "third_party/skia/include/core/SkCanvas.h" 18 #include "third_party/skia/include/core/SkCanvas.h"
18 #include "third_party/skia/include/gpu/GrContext.h" 19 #include "third_party/skia/include/gpu/GrContext.h"
19 #include "third_party/skia/include/gpu/gl/GrGLInterface.h" 20 #include "third_party/skia/include/gpu/gl/GrGLInterface.h"
20 #include "ui/gfx/geometry/rect_f.h" 21 #include "ui/gfx/geometry/rect_f.h"
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 GetColorAt(target_canvas(), kWidth * 3 / 8, kHeight * 3 / 6)); 506 GetColorAt(target_canvas(), kWidth * 3 / 8, kHeight * 3 / 6));
506 } 507 }
507 508
508 namespace { 509 namespace {
509 class TestGLES2Interface : public gpu::gles2::GLES2InterfaceStub { 510 class TestGLES2Interface : public gpu::gles2::GLES2InterfaceStub {
510 public: 511 public:
511 void GenTextures(GLsizei n, GLuint* textures) override { 512 void GenTextures(GLsizei n, GLuint* textures) override {
512 DCHECK_EQ(1, n); 513 DCHECK_EQ(1, n);
513 *textures = 1; 514 *textures = 1;
514 } 515 }
516 const GLubyte* GetString(GLenum name) override {
517 switch (name) {
518 case GL_EXTENSIONS:
519 return reinterpret_cast<const GLubyte*>("");
520 case GL_SHADING_LANGUAGE_VERSION:
521 return reinterpret_cast<const GLubyte*>("OpenGL ES GLSL ES 1.00");
522 case GL_VERSION:
523 return reinterpret_cast<const GLubyte*>("OpenGL ES 2.0");
524 default:
525 return nullptr;
526 }
527 }
515 }; 528 };
516 void MailboxHoldersReleased(const gpu::SyncToken& sync_token) {} 529 void MailboxHoldersReleased(const gpu::SyncToken& sync_token) {}
517 } // namespace 530 } // namespace
518 531
519 // Test that SkCanvasVideoRendererTest::Paint doesn't crash when GrContext is 532 // Test that SkCanvasVideoRendererTest::Paint doesn't crash when GrContext is
520 // abandoned. 533 // abandoned.
521 TEST_F(SkCanvasVideoRendererTest, ContextLost) { 534 TEST_F(SkCanvasVideoRendererTest, ContextLost) {
522 skia::RefPtr<const GrGLInterface> null_interface =
523 skia::AdoptRef(GrGLCreateNullInterface());
524 auto gr_context = skia::AdoptRef(GrContext::Create(
525 kOpenGL_GrBackend,
526 reinterpret_cast<GrBackendContext>(null_interface.get())));
527 gr_context->abandonContext();
528
529 SkCanvas canvas(AllocBitmap(kWidth, kHeight)); 535 SkCanvas canvas(AllocBitmap(kWidth, kHeight));
530 536
531 TestGLES2Interface gles2; 537 TestGLES2Interface gles2;
538
539 skia::RefPtr<GrGLInterface> gl_interface = skia::AdoptRef(new GrGLInterface);
540 skia_bindings::InitGLES2InterfaceBindings(gl_interface.get(), &gles2);
541 auto gr_context = skia::AdoptRef(GrContext::Create(
542 kOpenGL_GrBackend,
543 reinterpret_cast<GrBackendContext>(gl_interface.get())));
544 gr_context->abandonContext();
545
532 Context3D context_3d(&gles2, gr_context.get()); 546 Context3D context_3d(&gles2, gr_context.get());
533 gfx::Size size(kWidth, kHeight); 547 gfx::Size size(kWidth, kHeight);
534 gpu::MailboxHolder mailbox(gpu::Mailbox::Generate(), gpu::SyncToken(), 548 gpu::MailboxHolder mailbox(gpu::Mailbox::Generate(), gpu::SyncToken(),
535 GL_TEXTURE_RECTANGLE_ARB); 549 GL_TEXTURE_RECTANGLE_ARB);
536 auto video_frame = VideoFrame::WrapNativeTexture( 550 auto video_frame = VideoFrame::WrapNativeTexture(
537 PIXEL_FORMAT_UYVY, mailbox, base::Bind(MailboxHoldersReleased), size, 551 PIXEL_FORMAT_UYVY, mailbox, base::Bind(MailboxHoldersReleased), size,
538 gfx::Rect(size), size, kNoTimestamp()); 552 gfx::Rect(size), size, kNoTimestamp());
539 553
540 renderer_.Paint(video_frame, &canvas, kNaturalRect, 0xFF, 554 renderer_.Paint(video_frame, &canvas, kNaturalRect, 0xFF,
541 SkXfermode::kSrcOver_Mode, VIDEO_ROTATION_90, context_3d); 555 SkXfermode::kSrcOver_Mode, VIDEO_ROTATION_90, context_3d);
542 } 556 }
543 } // namespace media 557 } // namespace media
OLDNEW
« no previous file with comments | « media/media.gyp ('k') | third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698