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

Unified Diff: gpu/ipc/service/image_transport_surface_overlay_mac.mm

Issue 1962493002: Make Mac swap code like other platforms (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Incorporate review feedback Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: gpu/ipc/service/image_transport_surface_overlay_mac.mm
diff --git a/gpu/ipc/service/image_transport_surface_overlay_mac.mm b/gpu/ipc/service/image_transport_surface_overlay_mac.mm
index b75f200523d5e8375bd2973a056acc321db21e75..2d2b3011aad6660aa1a88b9241f0a1551f6723a3 100644
--- a/gpu/ipc/service/image_transport_surface_overlay_mac.mm
+++ b/gpu/ipc/service/image_transport_surface_overlay_mac.mm
@@ -24,6 +24,7 @@
#include "base/bind_helpers.h"
#include "base/mac/scoped_cftyperef.h"
#include "base/trace_event/trace_event.h"
+#include "gpu/ipc/common/gpu_messages.h"
#include "gpu/ipc/service/gpu_channel_manager.h"
#include "gpu/ipc/service/gpu_channel_manager_delegate.h"
#include "ui/accelerated_widget_mac/ca_layer_tree_coordinator.h"
@@ -31,6 +32,7 @@
#include "ui/base/cocoa/animation_utils.h"
#include "ui/base/cocoa/remote_layer_api.h"
#include "ui/gfx/geometry/rect_conversions.h"
+#include "ui/gfx/swap_result.h"
#include "ui/gfx/transform.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/gl_fence.h"
@@ -59,23 +61,17 @@ void IOSurfaceContextNoOp(scoped_refptr<ui::IOSurfaceContext>) {
GpuChannelManager* manager,
GpuCommandBufferStub* stub,
SurfaceHandle handle) {
- return new ImageTransportSurfaceOverlayMac(manager, stub, handle);
+ return new ImageTransportSurfaceOverlayMac(stub, handle);
}
ImageTransportSurfaceOverlayMac::ImageTransportSurfaceOverlayMac(
- GpuChannelManager* manager,
GpuCommandBufferStub* stub,
SurfaceHandle handle)
- : manager_(manager),
- stub_(stub->AsWeakPtr()),
+ : stub_(stub->AsWeakPtr()),
handle_(handle),
use_remote_layer_api_(ui::RemoteLayerAPISupported()),
scale_factor_(1),
- gl_renderer_id_(0),
- vsync_parameters_valid_(false) {
- manager_->AddBufferPresentedCallback(
- handle_, base::Bind(&ImageTransportSurfaceOverlayMac::BufferPresented,
- base::Unretained(this)));
+ gl_renderer_id_(0) {
ui::GpuSwitchingManager::GetInstance()->AddObserver(this);
ca_layer_tree_coordinator_.reset(
new ui::CALayerTreeCoordinator(use_remote_layer_api_));
@@ -88,7 +84,6 @@ void IOSurfaceContextNoOp(scoped_refptr<ui::IOSurfaceContext>) {
base::Callback<void(const std::vector<ui::LatencyInfo>&)>());
}
Destroy();
- manager_->RemoveBufferPresentedCallback(handle_);
}
bool ImageTransportSurfaceOverlayMac::Initialize(
@@ -130,22 +125,6 @@ void IOSurfaceContextNoOp(scoped_refptr<ui::IOSurfaceContext>) {
latency_info.end());
}
-void ImageTransportSurfaceOverlayMac::BufferPresented(
- gpu::SurfaceHandle surface_handle,
- const base::TimeTicks& vsync_timebase,
- const base::TimeDelta& vsync_interval) {
- vsync_timebase_ = vsync_timebase;
- vsync_interval_ = vsync_interval;
- vsync_parameters_valid_ = !vsync_interval_.is_zero();
-
- // Compute |vsync_timebase_| to be the first vsync after time zero.
- if (vsync_parameters_valid_) {
- vsync_timebase_ -=
- vsync_interval_ *
- ((vsync_timebase_ - base::TimeTicks()) / vsync_interval_);
- }
-}
-
void ImageTransportSurfaceOverlayMac::SendAcceleratedSurfaceBuffersSwapped(
gpu::SurfaceHandle surface_handle,
CAContextID ca_context_id,
@@ -159,10 +138,20 @@ void IOSurfaceContextNoOp(scoped_refptr<ui::IOSurfaceContext>) {
TRACE_EVENT_INSTANT2("test_gpu", "SwapBuffers", TRACE_EVENT_SCOPE_THREAD,
"GLImpl", static_cast<int>(gfx::GetGLImplementation()),
"width", size.width());
- manager_->delegate()->SendAcceleratedSurfaceBuffersSwapped(
- surface_handle, ca_context_id, fullscreen_low_power_ca_context_valid,
- fullscreen_low_power_ca_context_id, io_surface, size, scale_factor,
- std::move(latency_info));
+
+ GpuCommandBufferMsg_SwapBuffersCompleted_Params params;
+ params.surface_handle = surface_handle;
+ params.ca_context_id = ca_context_id;
+ params.fullscreen_low_power_ca_context_valid =
+ fullscreen_low_power_ca_context_valid;
+ params.fullscreen_low_power_ca_context_id =
+ fullscreen_low_power_ca_context_id;
+ params.io_surface = io_surface;
+ params.pixel_size = size;
+ params.scale_factor = scale_factor;
+ params.latency_info = std::move(latency_info);
+ params.result = gfx::SwapResult::SWAP_ACK;
+ stub_->SendSwapBuffersCompleted(params);
}
gfx::SwapResult ImageTransportSurfaceOverlayMac::SwapBuffersInternal(
« no previous file with comments | « gpu/ipc/service/image_transport_surface_overlay_mac.h ('k') | gpu/ipc/service/pass_through_image_transport_surface.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698