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

Side by Side Diff: ui/gl/gl_surface_egl.cc

Issue 2801163002: Deletes NativeViewGLSurfaceEGL::Initialize(gfx::VSyncProvider). (Closed)
Patch Set: fixes formatting Created 3 years, 8 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
« no previous file with comments | « ui/gl/gl_surface_egl.h ('k') | ui/ozone/platform/cast/gl_surface_cast.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ui/gl/gl_surface_egl.h" 5 #include "ui/gl/gl_surface_egl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
11 #include <memory> 11 #include <memory>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/lazy_instance.h" 15 #include "base/lazy_instance.h"
16 #include "base/logging.h" 16 #include "base/logging.h"
17 #include "base/macros.h" 17 #include "base/macros.h"
18 #include "base/memory/ptr_util.h"
18 #include "base/message_loop/message_loop.h" 19 #include "base/message_loop/message_loop.h"
19 #include "base/metrics/histogram_macros.h" 20 #include "base/metrics/histogram_macros.h"
20 #include "base/strings/string_number_conversions.h" 21 #include "base/strings/string_number_conversions.h"
21 #include "base/sys_info.h" 22 #include "base/sys_info.h"
22 #include "base/trace_event/trace_event.h" 23 #include "base/trace_event/trace_event.h"
23 #include "build/build_config.h" 24 #include "build/build_config.h"
24 #include "ui/gfx/geometry/rect.h" 25 #include "ui/gfx/geometry/rect.h"
25 #include "ui/gl/angle_platform_impl.h" 26 #include "ui/gl/angle_platform_impl.h"
26 #include "ui/gl/egl_util.h" 27 #include "ui/gl/egl_util.h"
27 #include "ui/gl/gl_context.h" 28 #include "ui/gl/gl_context.h"
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 UMA_HISTOGRAM_ENUMERATION("GPU.EGLDisplayType", display_type, 702 UMA_HISTOGRAM_ENUMERATION("GPU.EGLDisplayType", display_type,
702 DISPLAY_TYPE_MAX); 703 DISPLAY_TYPE_MAX);
703 g_display = display; 704 g_display = display;
704 break; 705 break;
705 } 706 }
706 } 707 }
707 708
708 return g_display; 709 return g_display;
709 } 710 }
710 711
711 NativeViewGLSurfaceEGL::NativeViewGLSurfaceEGL(EGLNativeWindowType window) 712 NativeViewGLSurfaceEGL::NativeViewGLSurfaceEGL(
713 EGLNativeWindowType window,
714 std::unique_ptr<gfx::VSyncProvider> vsync_provider)
712 : window_(window), 715 : window_(window),
713 size_(1, 1), 716 size_(1, 1),
714 enable_fixed_size_angle_(false), 717 enable_fixed_size_angle_(false),
715 surface_(NULL), 718 surface_(NULL),
716 supports_post_sub_buffer_(false), 719 supports_post_sub_buffer_(false),
717 supports_swap_buffer_with_damage_(false), 720 supports_swap_buffer_with_damage_(false),
718 flips_vertically_(false), 721 flips_vertically_(false),
722 vsync_provider_external_(std::move(vsync_provider)),
719 swap_interval_(1) { 723 swap_interval_(1) {
720 #if defined(OS_ANDROID) 724 #if defined(OS_ANDROID)
721 if (window) 725 if (window)
722 ANativeWindow_acquire(window); 726 ANativeWindow_acquire(window);
723 #endif 727 #endif
724 728
725 #if defined(OS_WIN) 729 #if defined(OS_WIN)
726 vsync_override_ = false; 730 vsync_override_ = false;
727 swap_generation_ = 0; 731 swap_generation_ = 0;
728 RECT windowRect; 732 RECT windowRect;
729 if (GetClientRect(window_, &windowRect)) 733 if (GetClientRect(window_, &windowRect))
730 size_ = gfx::Rect(windowRect).size(); 734 size_ = gfx::Rect(windowRect).size();
731 #endif 735 #endif
732 } 736 }
733 737
734 bool NativeViewGLSurfaceEGL::Initialize(GLSurfaceFormat format) { 738 bool NativeViewGLSurfaceEGL::Initialize(GLSurfaceFormat format) {
739 DCHECK(!surface_);
735 format_ = format; 740 format_ = format;
736 return Initialize(nullptr);
737 }
738
739 bool NativeViewGLSurfaceEGL::Initialize(
740 std::unique_ptr<gfx::VSyncProvider> sync_provider) {
741 DCHECK(!surface_);
742 741
743 if (!GetDisplay()) { 742 if (!GetDisplay()) {
744 LOG(ERROR) << "Trying to create surface with invalid display."; 743 LOG(ERROR) << "Trying to create surface with invalid display.";
745 return false; 744 return false;
746 } 745 }
747 746
748 // We need to make sure that window_ is correctly initialized with all 747 // We need to make sure that window_ is correctly initialized with all
749 // the platform-dependant quirks, if any, before creating the surface. 748 // the platform-dependant quirks, if any, before creating the surface.
750 if (!InitializeNativeWindow()) { 749 if (!InitializeNativeWindow()) {
751 LOG(ERROR) << "Error trying to initialize the native window."; 750 LOG(ERROR) << "Error trying to initialize the native window.";
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 if (g_driver_egl.ext.b_EGL_NV_post_sub_buffer) { 802 if (g_driver_egl.ext.b_EGL_NV_post_sub_buffer) {
804 EGLint surfaceVal; 803 EGLint surfaceVal;
805 EGLBoolean retVal = eglQuerySurface( 804 EGLBoolean retVal = eglQuerySurface(
806 GetDisplay(), surface_, EGL_POST_SUB_BUFFER_SUPPORTED_NV, &surfaceVal); 805 GetDisplay(), surface_, EGL_POST_SUB_BUFFER_SUPPORTED_NV, &surfaceVal);
807 supports_post_sub_buffer_ = (surfaceVal && retVal) == EGL_TRUE; 806 supports_post_sub_buffer_ = (surfaceVal && retVal) == EGL_TRUE;
808 } 807 }
809 808
810 supports_swap_buffer_with_damage_ = 809 supports_swap_buffer_with_damage_ =
811 g_driver_egl.ext.b_EGL_KHR_swap_buffers_with_damage; 810 g_driver_egl.ext.b_EGL_KHR_swap_buffers_with_damage;
812 811
813 if (sync_provider) 812 if (!vsync_provider_external_ && EGLSyncControlVSyncProvider::IsSupported()) {
jbauman 2017/04/07 23:29:44 DCHECK(!vsync_provider_internal_);
814 vsync_provider_ = std::move(sync_provider); 813 vsync_provider_internal_ =
815 else if (EGLSyncControlVSyncProvider::IsSupported()) 814 base::MakeUnique<EGLSyncControlVSyncProvider>(surface_);
816 vsync_provider_.reset(new EGLSyncControlVSyncProvider(surface_)); 815 }
817 return true; 816 return true;
818 } 817 }
819 818
820 bool NativeViewGLSurfaceEGL::InitializeNativeWindow() { 819 bool NativeViewGLSurfaceEGL::InitializeNativeWindow() {
821 return true; 820 return true;
822 } 821 }
823 822
824 void NativeViewGLSurfaceEGL::Destroy() { 823 void NativeViewGLSurfaceEGL::Destroy() {
824 vsync_provider_internal_ = nullptr;
825
825 if (surface_) { 826 if (surface_) {
826 if (!eglDestroySurface(GetDisplay(), surface_)) { 827 if (!eglDestroySurface(GetDisplay(), surface_)) {
827 LOG(ERROR) << "eglDestroySurface failed with error " 828 LOG(ERROR) << "eglDestroySurface failed with error "
828 << GetLastEGLErrorString(); 829 << GetLastEGLErrorString();
829 } 830 }
830 surface_ = NULL; 831 surface_ = NULL;
831 } 832 }
832 } 833 }
833 834
834 bool NativeViewGLSurfaceEGL::IsOffscreen() { 835 bool NativeViewGLSurfaceEGL::IsOffscreen() {
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 gfx::SwapResult NativeViewGLSurfaceEGL::CommitOverlayPlanes() { 1016 gfx::SwapResult NativeViewGLSurfaceEGL::CommitOverlayPlanes() {
1016 DCHECK(SupportsCommitOverlayPlanes()); 1017 DCHECK(SupportsCommitOverlayPlanes());
1017 // Here we assume that the overlays scheduled on this surface will display 1018 // Here we assume that the overlays scheduled on this surface will display
1018 // themselves to the screen right away in |CommitAndClearPendingOverlays|, 1019 // themselves to the screen right away in |CommitAndClearPendingOverlays|,
1019 // rather than being queued and waiting for a "swap" signal. 1020 // rather than being queued and waiting for a "swap" signal.
1020 return CommitAndClearPendingOverlays() ? gfx::SwapResult::SWAP_ACK 1021 return CommitAndClearPendingOverlays() ? gfx::SwapResult::SWAP_ACK
1021 : gfx::SwapResult::SWAP_FAILED; 1022 : gfx::SwapResult::SWAP_FAILED;
1022 } 1023 }
1023 1024
1024 gfx::VSyncProvider* NativeViewGLSurfaceEGL::GetVSyncProvider() { 1025 gfx::VSyncProvider* NativeViewGLSurfaceEGL::GetVSyncProvider() {
1025 return vsync_provider_.get(); 1026 return vsync_provider_external_ ? vsync_provider_external_.get()
1027 : vsync_provider_internal_.get();
1026 } 1028 }
1027 1029
1028 bool NativeViewGLSurfaceEGL::ScheduleOverlayPlane( 1030 bool NativeViewGLSurfaceEGL::ScheduleOverlayPlane(
1029 int z_order, 1031 int z_order,
1030 gfx::OverlayTransform transform, 1032 gfx::OverlayTransform transform,
1031 GLImage* image, 1033 GLImage* image,
1032 const gfx::Rect& bounds_rect, 1034 const gfx::Rect& bounds_rect,
1033 const gfx::RectF& crop_rect) { 1035 const gfx::RectF& crop_rect) {
1034 #if !defined(OS_ANDROID) 1036 #if !defined(OS_ANDROID)
1035 NOTIMPLEMENTED(); 1037 NOTIMPLEMENTED();
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 } 1246 }
1245 1247
1246 void* SurfacelessEGL::GetShareHandle() { 1248 void* SurfacelessEGL::GetShareHandle() {
1247 return NULL; 1249 return NULL;
1248 } 1250 }
1249 1251
1250 SurfacelessEGL::~SurfacelessEGL() { 1252 SurfacelessEGL::~SurfacelessEGL() {
1251 } 1253 }
1252 1254
1253 } // namespace gl 1255 } // namespace gl
OLDNEW
« no previous file with comments | « ui/gl/gl_surface_egl.h ('k') | ui/ozone/platform/cast/gl_surface_cast.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698