OLD | NEW |
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 #if defined(OS_ANDROID) | 7 #if defined(OS_ANDROID) |
8 #include <android/native_window_jni.h> | 8 #include <android/native_window_jni.h> |
9 #endif | 9 #endif |
10 | 10 |
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
654 } | 654 } |
655 } | 655 } |
656 return config_; | 656 return config_; |
657 #endif | 657 #endif |
658 } | 658 } |
659 | 659 |
660 bool NativeViewGLSurfaceEGL::IsOffscreen() { | 660 bool NativeViewGLSurfaceEGL::IsOffscreen() { |
661 return false; | 661 return false; |
662 } | 662 } |
663 | 663 |
664 bool NativeViewGLSurfaceEGL::SwapBuffers() { | 664 gfx::SwapResult NativeViewGLSurfaceEGL::SwapBuffers() { |
665 TRACE_EVENT2("gpu", "NativeViewGLSurfaceEGL:RealSwapBuffers", | 665 TRACE_EVENT2("gpu", "NativeViewGLSurfaceEGL:RealSwapBuffers", |
666 "width", GetSize().width(), | 666 "width", GetSize().width(), |
667 "height", GetSize().height()); | 667 "height", GetSize().height()); |
668 | 668 |
669 #if defined(OS_WIN) | 669 #if defined(OS_WIN) |
670 if (swap_interval_ != 0) { | 670 if (swap_interval_ != 0) { |
671 // This code is a simple way of enforcing that we only vsync if one surface | 671 // This code is a simple way of enforcing that we only vsync if one surface |
672 // is swapping per frame. This provides single window cases a stable refresh | 672 // is swapping per frame. This provides single window cases a stable refresh |
673 // while allowing multi-window cases to not slow down due to multiple syncs | 673 // while allowing multi-window cases to not slow down due to multiple syncs |
674 // on a single thread. A better way to fix this problem would be to have | 674 // on a single thread. A better way to fix this problem would be to have |
(...skipping 22 matching lines...) Expand all Loading... |
697 vsync_override_ = false; | 697 vsync_override_ = false; |
698 } | 698 } |
699 | 699 |
700 swaps_this_generation_++; | 700 swaps_this_generation_++; |
701 } | 701 } |
702 #endif | 702 #endif |
703 | 703 |
704 if (!eglSwapBuffers(GetDisplay(), surface_)) { | 704 if (!eglSwapBuffers(GetDisplay(), surface_)) { |
705 DVLOG(1) << "eglSwapBuffers failed with error " | 705 DVLOG(1) << "eglSwapBuffers failed with error " |
706 << GetLastEGLErrorString(); | 706 << GetLastEGLErrorString(); |
707 return false; | 707 return gfx::SwapResult::SWAP_FAILED; |
708 } | 708 } |
709 | 709 |
710 return true; | 710 return gfx::SwapResult::SWAP_ACK; |
711 } | 711 } |
712 | 712 |
713 gfx::Size NativeViewGLSurfaceEGL::GetSize() { | 713 gfx::Size NativeViewGLSurfaceEGL::GetSize() { |
714 EGLint width; | 714 EGLint width; |
715 EGLint height; | 715 EGLint height; |
716 if (!eglQuerySurface(GetDisplay(), surface_, EGL_WIDTH, &width) || | 716 if (!eglQuerySurface(GetDisplay(), surface_, EGL_WIDTH, &width) || |
717 !eglQuerySurface(GetDisplay(), surface_, EGL_HEIGHT, &height)) { | 717 !eglQuerySurface(GetDisplay(), surface_, EGL_HEIGHT, &height)) { |
718 NOTREACHED() << "eglQuerySurface failed with error " | 718 NOTREACHED() << "eglQuerySurface failed with error " |
719 << GetLastEGLErrorString(); | 719 << GetLastEGLErrorString(); |
720 return gfx::Size(); | 720 return gfx::Size(); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
759 } | 759 } |
760 | 760 |
761 EGLSurface NativeViewGLSurfaceEGL::GetHandle() { | 761 EGLSurface NativeViewGLSurfaceEGL::GetHandle() { |
762 return surface_; | 762 return surface_; |
763 } | 763 } |
764 | 764 |
765 bool NativeViewGLSurfaceEGL::SupportsPostSubBuffer() { | 765 bool NativeViewGLSurfaceEGL::SupportsPostSubBuffer() { |
766 return supports_post_sub_buffer_; | 766 return supports_post_sub_buffer_; |
767 } | 767 } |
768 | 768 |
769 bool NativeViewGLSurfaceEGL::PostSubBuffer( | 769 gfx::SwapResult NativeViewGLSurfaceEGL::PostSubBuffer(int x, |
770 int x, int y, int width, int height) { | 770 int y, |
| 771 int width, |
| 772 int height) { |
771 DCHECK(supports_post_sub_buffer_); | 773 DCHECK(supports_post_sub_buffer_); |
772 if (!eglPostSubBufferNV(GetDisplay(), surface_, x, y, width, height)) { | 774 if (!eglPostSubBufferNV(GetDisplay(), surface_, x, y, width, height)) { |
773 DVLOG(1) << "eglPostSubBufferNV failed with error " | 775 DVLOG(1) << "eglPostSubBufferNV failed with error " |
774 << GetLastEGLErrorString(); | 776 << GetLastEGLErrorString(); |
775 return false; | 777 return gfx::SwapResult::SWAP_FAILED; |
776 } | 778 } |
777 return true; | 779 return gfx::SwapResult::SWAP_ACK; |
778 } | 780 } |
779 | 781 |
780 VSyncProvider* NativeViewGLSurfaceEGL::GetVSyncProvider() { | 782 VSyncProvider* NativeViewGLSurfaceEGL::GetVSyncProvider() { |
781 return vsync_provider_.get(); | 783 return vsync_provider_.get(); |
782 } | 784 } |
783 | 785 |
784 void NativeViewGLSurfaceEGL::OnSetSwapInterval(int interval) { | 786 void NativeViewGLSurfaceEGL::OnSetSwapInterval(int interval) { |
785 swap_interval_ = interval; | 787 swap_interval_ = interval; |
786 } | 788 } |
787 | 789 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
848 } | 850 } |
849 | 851 |
850 EGLConfig PbufferGLSurfaceEGL::GetConfig() { | 852 EGLConfig PbufferGLSurfaceEGL::GetConfig() { |
851 return g_config; | 853 return g_config; |
852 } | 854 } |
853 | 855 |
854 bool PbufferGLSurfaceEGL::IsOffscreen() { | 856 bool PbufferGLSurfaceEGL::IsOffscreen() { |
855 return true; | 857 return true; |
856 } | 858 } |
857 | 859 |
858 bool PbufferGLSurfaceEGL::SwapBuffers() { | 860 gfx::SwapResult PbufferGLSurfaceEGL::SwapBuffers() { |
859 NOTREACHED() << "Attempted to call SwapBuffers on a PbufferGLSurfaceEGL."; | 861 NOTREACHED() << "Attempted to call SwapBuffers on a PbufferGLSurfaceEGL."; |
860 return false; | 862 return gfx::SwapResult::SWAP_FAILED; |
861 } | 863 } |
862 | 864 |
863 gfx::Size PbufferGLSurfaceEGL::GetSize() { | 865 gfx::Size PbufferGLSurfaceEGL::GetSize() { |
864 return size_; | 866 return size_; |
865 } | 867 } |
866 | 868 |
867 bool PbufferGLSurfaceEGL::Resize(const gfx::Size& size) { | 869 bool PbufferGLSurfaceEGL::Resize(const gfx::Size& size) { |
868 if (size == size_) | 870 if (size == size_) |
869 return true; | 871 return true; |
870 | 872 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
934 } | 936 } |
935 | 937 |
936 bool SurfacelessEGL::IsOffscreen() { | 938 bool SurfacelessEGL::IsOffscreen() { |
937 return true; | 939 return true; |
938 } | 940 } |
939 | 941 |
940 bool SurfacelessEGL::IsSurfaceless() const { | 942 bool SurfacelessEGL::IsSurfaceless() const { |
941 return true; | 943 return true; |
942 } | 944 } |
943 | 945 |
944 bool SurfacelessEGL::SwapBuffers() { | 946 gfx::SwapResult SurfacelessEGL::SwapBuffers() { |
945 LOG(ERROR) << "Attempted to call SwapBuffers with SurfacelessEGL."; | 947 LOG(ERROR) << "Attempted to call SwapBuffers with SurfacelessEGL."; |
946 return false; | 948 return gfx::SwapResult::SWAP_FAILED; |
947 } | 949 } |
948 | 950 |
949 gfx::Size SurfacelessEGL::GetSize() { | 951 gfx::Size SurfacelessEGL::GetSize() { |
950 return size_; | 952 return size_; |
951 } | 953 } |
952 | 954 |
953 bool SurfacelessEGL::Resize(const gfx::Size& size) { | 955 bool SurfacelessEGL::Resize(const gfx::Size& size) { |
954 size_ = size; | 956 size_ = size; |
955 return true; | 957 return true; |
956 } | 958 } |
957 | 959 |
958 EGLSurface SurfacelessEGL::GetHandle() { | 960 EGLSurface SurfacelessEGL::GetHandle() { |
959 return EGL_NO_SURFACE; | 961 return EGL_NO_SURFACE; |
960 } | 962 } |
961 | 963 |
962 void* SurfacelessEGL::GetShareHandle() { | 964 void* SurfacelessEGL::GetShareHandle() { |
963 return NULL; | 965 return NULL; |
964 } | 966 } |
965 | 967 |
966 SurfacelessEGL::~SurfacelessEGL() { | 968 SurfacelessEGL::~SurfacelessEGL() { |
967 } | 969 } |
968 | 970 |
969 } // namespace gfx | 971 } // namespace gfx |
OLD | NEW |