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

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

Issue 2067503003: Add a new command buffer function glScheduleCALayerInUseQueryCHROMIUM. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Include gl_image.h Created 4 years, 6 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.h
diff --git a/gpu/ipc/service/image_transport_surface_overlay_mac.h b/gpu/ipc/service/image_transport_surface_overlay_mac.h
index 75264cb179b260863170654b71de4aae1e3733d9..d5c34d4787eda03d0cfa6c7c739762bff9f6c599 100644
--- a/gpu/ipc/service/image_transport_surface_overlay_mac.h
+++ b/gpu/ipc/service/image_transport_surface_overlay_mac.h
@@ -66,6 +66,8 @@ class ImageTransportSurfaceOverlayMac : public gl::GLSurface,
const gfx::Transform& transform,
int sorting_context_id,
unsigned filter) override;
+ void ScheduleCALayerInUseQuery(
+ std::vector<CALayerInUseQuery> queries) override;
bool IsSurfaceless() const override;
// ui::GpuSwitchingObserver implementation.
@@ -98,6 +100,21 @@ class ImageTransportSurfaceOverlayMac : public gl::GLSurface,
gfx::Size pixel_size_;
float scale_factor_;
+ struct IOSurfaceInUseQuery {
+ IOSurfaceInUseQuery();
+ explicit IOSurfaceInUseQuery(const IOSurfaceInUseQuery&);
+ explicit IOSurfaceInUseQuery(IOSurfaceInUseQuery&&);
+ ~IOSurfaceInUseQuery();
+
+ // It's possible that the client will have destroyed the texture before
+ // SwapBuffersInternal is called. It's important that |texture| is only used
+ // as an opaque identifier, since it may no longer point to the same
+ // texture.
+ unsigned texture = 0;
+ base::ScopedCFTypeRef<IOSurfaceRef> io_surface;
+ };
+ std::vector<IOSurfaceInUseQuery> io_surface_in_use_queries_;
+
// A GLFence marking the end of the previous frame. Must only be accessed
// while in a ScopedSetGLToRealGLApi, and while the associated
// |previous_frame_context_| is bound.

Powered by Google App Engine
This is Rietveld 408576698