| 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
|
|
|