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:
@ -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 {
|
||||
|
Reference in New Issue
Block a user