0

gpu: Support overlay representation from GL SharedImageBacking.

R=vikassoni@chromium.org

Bug: 1019751
Change-Id: Icdb44b7233bd0aa3bea432b68bfb50f0e033afcc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2149640
Commit-Queue: Khushal <khushalsagar@chromium.org>
Auto-Submit: Khushal <khushalsagar@chromium.org>
Reviewed-by: vikas soni <vikassoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759904}
This commit is contained in:
Khushal
2020-04-17 02:04:28 +00:00
committed by Commit Bot
parent 0871a6a9c3
commit b0e6f04b51

@ -357,6 +357,31 @@ class SharedImageRepresentationGLTexturePassthroughImpl
scoped_refptr<gles2::TexturePassthrough> texture_passthrough_;
};
class SharedImageRepresentationOverlayImpl
: public SharedImageRepresentationOverlay {
public:
SharedImageRepresentationOverlayImpl(SharedImageManager* manager,
SharedImageBacking* backing,
MemoryTypeTracker* tracker,
gl::GLImage* gl_image)
: SharedImageRepresentationOverlay(manager, backing, tracker),
gl_image_(gl_image) {}
~SharedImageRepresentationOverlayImpl() override = default;
#if defined(OS_ANDROID)
void NotifyOverlayPromotion(bool promotion,
const gfx::Rect& bounds) override {
NOTIMPLEMENTED() << "Promotion hints are only required for media overlays";
}
#endif
bool BeginReadAccess() override { return true; }
void EndReadAccess() override {}
gl::GLImage* GetGLImage() override { return gl_image_; }
private:
gl::GLImage* gl_image_;
};
class SharedImageBackingWithReadAccess : public SharedImageBacking {
public:
SharedImageBackingWithReadAccess(const Mailbox& mailbox,
@ -610,6 +635,20 @@ class SharedImageBackingGLTexture : public SharedImageBackingWithReadAccess {
manager, this, tracker, texture_);
}
std::unique_ptr<SharedImageRepresentationOverlay> ProduceOverlay(
SharedImageManager* manager,
MemoryTypeTracker* tracker) override {
gl::GLImage* image =
texture_->GetLevelImage(texture_->target(), 0, nullptr);
if (!image) {
LOG(ERROR)
<< "Trying to create overlay representation from a native GL texture";
return nullptr;
}
return std::make_unique<SharedImageRepresentationOverlayImpl>(
manager, this, tracker, image);
}
std::unique_ptr<SharedImageRepresentationGLTexture>
ProduceRGBEmulationGLTexture(SharedImageManager* manager,
MemoryTypeTracker* tracker) override {