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 1ced5d09fe883c99e9e6531bd40af9c9056e4e24..37641575e714bb43de0e93320ca5a36876e0f161 100644 |
--- a/gpu/ipc/service/image_transport_surface_overlay_mac.mm |
+++ b/gpu/ipc/service/image_transport_surface_overlay_mac.mm |
@@ -158,6 +158,16 @@ void ImageTransportSurfaceOverlayMac::SendAcceleratedSurfaceBuffersSwapped( |
params.scale_factor = scale_factor; |
params.latency_info = std::move(latency_info); |
params.result = gfx::SwapResult::SWAP_ACK; |
+ |
+ for (auto& query : io_surface_in_use_queries_) { |
+ uint32_t texture = query.texture; |
+ bool in_use = |
+ query.io_surface.get() && IOSurfaceIsInUse(query.io_surface.get()); |
+ auto response = std::make_pair(texture, in_use); |
+ params.in_use_queries.push_back(response); |
+ } |
+ io_surface_in_use_queries_.clear(); |
+ |
stub_->SendSwapBuffersCompleted(params); |
} |
@@ -326,6 +336,20 @@ bool ImageTransportSurfaceOverlayMac::ScheduleCALayer( |
edge_aa_mask, opacity, filter); |
} |
+void ImageTransportSurfaceOverlayMac::ScheduleCALayerInUseQuery( |
+ std::vector<CALayerInUseQuery> queries) { |
+ for (auto& query : queries) { |
+ IOSurfaceInUseQuery io_surface_query; |
+ io_surface_query.texture = query.texture; |
+ if (query.image) { |
+ gl::GLImageIOSurface* io_surface_image = |
+ static_cast<gl::GLImageIOSurface*>(query.image); |
+ io_surface_query.io_surface = io_surface_image->io_surface(); |
+ } |
+ io_surface_in_use_queries_.push_back(std::move(io_surface_query)); |
+ } |
+} |
+ |
bool ImageTransportSurfaceOverlayMac::IsSurfaceless() const { |
return true; |
} |
@@ -361,4 +385,13 @@ void ImageTransportSurfaceOverlayMac::OnGpuSwitched() { |
FROM_HERE, base::Bind(&IOSurfaceContextNoOp, context_on_new_gpu)); |
} |
+ImageTransportSurfaceOverlayMac::IOSurfaceInUseQuery::IOSurfaceInUseQuery() = |
+ default; |
+ImageTransportSurfaceOverlayMac::IOSurfaceInUseQuery::IOSurfaceInUseQuery( |
+ IOSurfaceInUseQuery&) = default; |
+ImageTransportSurfaceOverlayMac::IOSurfaceInUseQuery::IOSurfaceInUseQuery( |
+ IOSurfaceInUseQuery&&) = default; |
+ImageTransportSurfaceOverlayMac::IOSurfaceInUseQuery::~IOSurfaceInUseQuery() = |
+ default; |
+ |
} // namespace gpu |