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_;
|
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 {
|
class SharedImageBackingWithReadAccess : public SharedImageBacking {
|
||||||
public:
|
public:
|
||||||
SharedImageBackingWithReadAccess(const Mailbox& mailbox,
|
SharedImageBackingWithReadAccess(const Mailbox& mailbox,
|
||||||
@@ -610,6 +635,20 @@ class SharedImageBackingGLTexture : public SharedImageBackingWithReadAccess {
|
|||||||
manager, this, tracker, texture_);
|
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>
|
std::unique_ptr<SharedImageRepresentationGLTexture>
|
||||||
ProduceRGBEmulationGLTexture(SharedImageManager* manager,
|
ProduceRGBEmulationGLTexture(SharedImageManager* manager,
|
||||||
MemoryTypeTracker* tracker) override {
|
MemoryTypeTracker* tracker) override {
|
||||||
|
Reference in New Issue
Block a user