| 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 "content/browser/renderer_host/compositor_impl_android.h" | 5 #include "content/browser/renderer_host/compositor_impl_android.h" |
| 6 | 6 |
| 7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
| 8 #include <android/native_window_jni.h> | 8 #include <android/native_window_jni.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 #include <unordered_set> | 10 #include <unordered_set> |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 #include "gpu/ipc/common/gpu_surface_tracker.h" | 67 #include "gpu/ipc/common/gpu_surface_tracker.h" |
| 68 #include "gpu/vulkan/features.h" | 68 #include "gpu/vulkan/features.h" |
| 69 #include "gpu/vulkan/vulkan_surface.h" | 69 #include "gpu/vulkan/vulkan_surface.h" |
| 70 #include "services/ui/public/cpp/gpu/context_provider_command_buffer.h" | 70 #include "services/ui/public/cpp/gpu/context_provider_command_buffer.h" |
| 71 #include "third_party/khronos/GLES2/gl2.h" | 71 #include "third_party/khronos/GLES2/gl2.h" |
| 72 #include "third_party/khronos/GLES2/gl2ext.h" | 72 #include "third_party/khronos/GLES2/gl2ext.h" |
| 73 #include "third_party/skia/include/core/SkMallocPixelRef.h" | 73 #include "third_party/skia/include/core/SkMallocPixelRef.h" |
| 74 #include "ui/android/window_android.h" | 74 #include "ui/android/window_android.h" |
| 75 #include "ui/display/display.h" | 75 #include "ui/display/display.h" |
| 76 #include "ui/display/screen.h" | 76 #include "ui/display/screen.h" |
| 77 #include "ui/gfx/color_space_switches.h" |
| 77 #include "ui/gfx/swap_result.h" | 78 #include "ui/gfx/swap_result.h" |
| 78 | 79 |
| 79 namespace gpu { | 80 namespace gpu { |
| 80 struct GpuProcessHostedCALayerTreeParamsMac; | 81 struct GpuProcessHostedCALayerTreeParamsMac; |
| 81 } | 82 } |
| 82 | 83 |
| 83 namespace content { | 84 namespace content { |
| 84 | 85 |
| 85 namespace { | 86 namespace { |
| 86 | 87 |
| (...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 787 | 788 |
| 788 cc::SurfaceManager* manager = GetSurfaceManager(); | 789 cc::SurfaceManager* manager = GetSurfaceManager(); |
| 789 auto* task_runner = base::ThreadTaskRunnerHandle::Get().get(); | 790 auto* task_runner = base::ThreadTaskRunnerHandle::Get().get(); |
| 790 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler( | 791 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler( |
| 791 root_window_->GetBeginFrameSource(), task_runner, | 792 root_window_->GetBeginFrameSource(), task_runner, |
| 792 display_output_surface->capabilities().max_frames_pending)); | 793 display_output_surface->capabilities().max_frames_pending)); |
| 793 | 794 |
| 794 cc::RendererSettings renderer_settings; | 795 cc::RendererSettings renderer_settings; |
| 795 renderer_settings.allow_antialiasing = false; | 796 renderer_settings.allow_antialiasing = false; |
| 796 renderer_settings.highp_threshold_min = 2048; | 797 renderer_settings.highp_threshold_min = 2048; |
| 798 renderer_settings.enable_color_correct_rendering = |
| 799 base::FeatureList::IsEnabled(features::kColorCorrectRendering); |
| 797 display_.reset(new cc::Display( | 800 display_.reset(new cc::Display( |
| 798 viz::HostSharedBitmapManager::current(), | 801 viz::HostSharedBitmapManager::current(), |
| 799 BrowserGpuMemoryBufferManager::current(), renderer_settings, | 802 BrowserGpuMemoryBufferManager::current(), renderer_settings, |
| 800 frame_sink_id_, std::move(display_output_surface), std::move(scheduler), | 803 frame_sink_id_, std::move(display_output_surface), std::move(scheduler), |
| 801 base::MakeUnique<cc::TextureMailboxDeleter>(task_runner))); | 804 base::MakeUnique<cc::TextureMailboxDeleter>(task_runner))); |
| 802 | 805 |
| 803 auto layer_tree_frame_sink = | 806 auto layer_tree_frame_sink = |
| 804 vulkan_context_provider | 807 vulkan_context_provider |
| 805 ? base::MakeUnique<cc::DirectLayerTreeFrameSink>( | 808 ? base::MakeUnique<cc::DirectLayerTreeFrameSink>( |
| 806 frame_sink_id_, manager, display_.get(), | 809 frame_sink_id_, manager, display_.get(), |
| 807 vulkan_context_provider) | 810 vulkan_context_provider) |
| 808 : base::MakeUnique<cc::DirectLayerTreeFrameSink>( | 811 : base::MakeUnique<cc::DirectLayerTreeFrameSink>( |
| 809 frame_sink_id_, manager, display_.get(), context_provider, | 812 frame_sink_id_, manager, display_.get(), context_provider, |
| 810 nullptr, BrowserGpuMemoryBufferManager::current(), | 813 nullptr, BrowserGpuMemoryBufferManager::current(), |
| 811 viz::HostSharedBitmapManager::current()); | 814 viz::HostSharedBitmapManager::current()); |
| 812 | 815 |
| 813 display_->SetVisible(true); | 816 display_->SetVisible(true); |
| 814 display_->Resize(size_); | 817 display_->Resize(size_); |
| 818 const gfx::ColorSpace& display_color_space = |
| 819 display::Screen::GetScreen() |
| 820 ->GetDisplayNearestWindow(root_window_) |
| 821 .color_space(); |
| 822 display_->SetColorSpace(display_color_space, display_color_space); |
| 815 GetSurfaceManager()->RegisterBeginFrameSource( | 823 GetSurfaceManager()->RegisterBeginFrameSource( |
| 816 root_window_->GetBeginFrameSource(), frame_sink_id_); | 824 root_window_->GetBeginFrameSource(), frame_sink_id_); |
| 817 host_->SetLayerTreeFrameSink(std::move(layer_tree_frame_sink)); | 825 host_->SetLayerTreeFrameSink(std::move(layer_tree_frame_sink)); |
| 818 } | 826 } |
| 819 | 827 |
| 820 void CompositorImpl::DidSwapBuffers() { | 828 void CompositorImpl::DidSwapBuffers() { |
| 821 client_->DidSwapBuffers(); | 829 client_->DidSwapBuffers(); |
| 822 } | 830 } |
| 823 | 831 |
| 824 cc::UIResourceId CompositorImpl::CreateUIResource( | 832 cc::UIResourceId CompositorImpl::CreateUIResource( |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 898 } | 906 } |
| 899 GetSurfaceManager()->UnregisterFrameSinkHierarchy(frame_sink_id_, | 907 GetSurfaceManager()->UnregisterFrameSinkHierarchy(frame_sink_id_, |
| 900 frame_sink_id); | 908 frame_sink_id); |
| 901 } | 909 } |
| 902 | 910 |
| 903 bool CompositorImpl::HavePendingReadbacks() { | 911 bool CompositorImpl::HavePendingReadbacks() { |
| 904 return !readback_layer_tree_->children().empty(); | 912 return !readback_layer_tree_->children().empty(); |
| 905 } | 913 } |
| 906 | 914 |
| 907 } // namespace content | 915 } // namespace content |
| OLD | NEW |