| Index: gpu/ipc/service/direct_composition_surface_win.h
|
| diff --git a/gpu/ipc/service/direct_composition_surface_win.h b/gpu/ipc/service/direct_composition_surface_win.h
|
| index 28fbc76dbc9950c3a4cec2c6d37cc211cd4e5a4d..9ba4f415358933548f68bf7ea7c5a1c94e40ee8f 100644
|
| --- a/gpu/ipc/service/direct_composition_surface_win.h
|
| +++ b/gpu/ipc/service/direct_composition_surface_win.h
|
| @@ -45,16 +45,20 @@ class GPU_EXPORT DirectCompositionSurfaceWin : public gl::GLSurfaceEGL {
|
| gl::GLImage* image,
|
| const gfx::Rect& bounds_rect,
|
| const gfx::RectF& crop_rect) override;
|
| + bool SetEnableDCLayers(bool enable) override;
|
| bool FlipsVertically() const override;
|
| bool SupportsPostSubBuffer() override;
|
| bool OnMakeCurrent(gl::GLContext* context) override;
|
| - bool SupportsSetDrawRectangle() const override;
|
| + bool SupportsDCLayers() const override;
|
| bool SetDrawRectangle(const gfx::Rect& rect) override;
|
| gfx::Vector2d GetDrawOffset() const override;
|
|
|
| bool Initialize(std::unique_ptr<gfx::VSyncProvider> vsync_provider);
|
|
|
| scoped_refptr<base::TaskRunner> GetWindowTaskRunnerForTesting();
|
| + base::win::ScopedComPtr<IDXGISwapChain1> swap_chain() const {
|
| + return swap_chain_;
|
| + }
|
|
|
| protected:
|
| ~DirectCompositionSurfaceWin() override;
|
| @@ -78,8 +82,12 @@ class GPU_EXPORT DirectCompositionSurfaceWin : public gl::GLSurfaceEGL {
|
| };
|
|
|
| bool CommitAndClearPendingOverlays();
|
| + void ReleaseCurrentSurface();
|
| void InitializeSurface();
|
| - void ReleaseDrawTexture();
|
| + // Release the texture that's currently being drawn to. If will_discard is
|
| + // true then the surface should be discarded without swapping any contents
|
| + // to it.
|
| + void ReleaseDrawTexture(bool will_discard);
|
|
|
| ChildWindowWin child_window_;
|
|
|
| @@ -93,8 +101,10 @@ class GPU_EXPORT DirectCompositionSurfaceWin : public gl::GLSurfaceEGL {
|
| EGLSurface real_surface_ = 0;
|
| gfx::Size size_ = gfx::Size(1, 1);
|
| bool first_swap_ = true;
|
| + bool enable_dc_layers_ = false;
|
| std::unique_ptr<gfx::VSyncProvider> vsync_provider_;
|
| std::vector<Overlay> pending_overlays_;
|
| + gfx::Rect swap_rect_;
|
|
|
| gfx::Vector2d draw_offset_;
|
|
|
| @@ -103,6 +113,7 @@ class GPU_EXPORT DirectCompositionSurfaceWin : public gl::GLSurfaceEGL {
|
| base::win::ScopedComPtr<IDCompositionTarget> dcomp_target_;
|
| base::win::ScopedComPtr<IDCompositionVisual2> visual_;
|
| base::win::ScopedComPtr<IDCompositionSurface> dcomp_surface_;
|
| + base::win::ScopedComPtr<IDXGISwapChain1> swap_chain_;
|
| base::win::ScopedComPtr<ID3D11Texture2D> draw_texture_;
|
|
|
| // Keep track of whether the texture has been rendered to, as the first draw
|
|
|