Commit dd8930f8 authored by Jonathan Backer's avatar Jonathan Backer Committed by Commit Bot

Reland 1917622: Use Skia API for Vulkan readback

This CL switches to using new Skia API for GPU accelerated readback
with the Vulkan backend. Subsequent CL will also switch over GL
backend from (GLRendererCopier).

Bug: 1022495
Change-Id: I0b9a3556ef1610e3520bd5caef105f732d925312
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1949180
Commit-Queue: Jonathan Backer <backer@chromium.org>
Reviewed-by: default avatarSean Gilhuly <sgilhuly@chromium.org>
Reviewed-by: default avatarkylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#723484}
parent 30078019
...@@ -210,6 +210,11 @@ class SkiaOutputSurfaceImplOnGpu : public gpu::ImageTransportSurfaceDelegate, ...@@ -210,6 +210,11 @@ class SkiaOutputSurfaceImplOnGpu : public gpu::ImageTransportSurfaceDelegate,
dependency_->PostTaskToClientThread(std::move(closure)); dependency_->PostTaskToClientThread(std::move(closure));
} }
void ReadbackDone() {
DCHECK_GT(num_readbacks_pending_, 0);
num_readbacks_pending_--;
}
private: private:
class ScopedPromiseImageAccess; class ScopedPromiseImageAccess;
class OffscreenSurface; class OffscreenSurface;
...@@ -246,6 +251,8 @@ class SkiaOutputSurfaceImplOnGpu : public gpu::ImageTransportSurfaceDelegate, ...@@ -246,6 +251,8 @@ class SkiaOutputSurfaceImplOnGpu : public gpu::ImageTransportSurfaceDelegate,
return scoped_output_device_paint_->sk_surface(); return scoped_output_device_paint_->sk_surface();
} }
void CheckReadbackCompletion();
SkiaOutputSurfaceDependency* const dependency_; SkiaOutputSurfaceDependency* const dependency_;
scoped_refptr<gpu::gles2::FeatureInfo> feature_info_; scoped_refptr<gpu::gles2::FeatureInfo> feature_info_;
scoped_refptr<gpu::SyncPointClientState> sync_point_client_state_; scoped_refptr<gpu::SyncPointClientState> sync_point_client_state_;
...@@ -300,6 +307,9 @@ class SkiaOutputSurfaceImplOnGpu : public gpu::ImageTransportSurfaceDelegate, ...@@ -300,6 +307,9 @@ class SkiaOutputSurfaceImplOnGpu : public gpu::ImageTransportSurfaceDelegate,
const gpu::ContextUrl copier_active_url_; const gpu::ContextUrl copier_active_url_;
int num_readbacks_pending_ = 0;
bool readback_poll_pending_ = false;
THREAD_CHECKER(thread_checker_); THREAD_CHECKER(thread_checker_);
base::WeakPtr<SkiaOutputSurfaceImplOnGpu> weak_ptr_; base::WeakPtr<SkiaOutputSurfaceImplOnGpu> weak_ptr_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment