ui: Add ScheduleOverlayPlane API to GLImage.
This makes it possible to use GLImage instances as overlay planes. BUG= Review URL: https://codereview.chromium.org/415283002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287093 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
content/common/gpu
gpu/command_buffer/service
gles2_cmd_decoder_unittest_textures.ccstream_texture_manager_in_process_android.cctexture_definition.cc
ui/gl
@ -202,4 +202,13 @@ void StreamTexture::ReleaseTexImage(unsigned target) {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
bool StreamTexture::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
gfx::OverlayTransform transform,
|
||||
const gfx::Rect& bounds_rect,
|
||||
const gfx::RectF& crop_rect) {
|
||||
NOTREACHED();
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace content
|
||||
|
@ -41,6 +41,11 @@ class StreamTexture : public gfx::GLImage,
|
||||
virtual void DidUseTexImage() OVERRIDE {}
|
||||
virtual void WillModifyTexImage() OVERRIDE {}
|
||||
virtual void DidModifyTexImage() OVERRIDE {}
|
||||
virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
gfx::OverlayTransform transform,
|
||||
const gfx::Rect& bounds_rect,
|
||||
const gfx::RectF& crop_rect) OVERRIDE;
|
||||
|
||||
// GpuCommandBufferStub::DestructionObserver implementation.
|
||||
virtual void OnWillDestroyStub() OVERRIDE;
|
||||
|
@ -2283,6 +2283,11 @@ class MockGLImage : public gfx::GLImage {
|
||||
MOCK_METHOD0(DidUseTexImage, void());
|
||||
MOCK_METHOD0(WillModifyTexImage, void());
|
||||
MOCK_METHOD0(DidModifyTexImage, void());
|
||||
MOCK_METHOD5(ScheduleOverlayPlane, bool(gfx::AcceleratedWidget,
|
||||
int,
|
||||
gfx::OverlayTransform,
|
||||
const gfx::Rect&,
|
||||
const gfx::RectF&));
|
||||
|
||||
protected:
|
||||
virtual ~MockGLImage() {}
|
||||
|
@ -31,6 +31,11 @@ class GLImageImpl : public gfx::GLImage {
|
||||
virtual void DidUseTexImage() OVERRIDE {}
|
||||
virtual void WillModifyTexImage() OVERRIDE {}
|
||||
virtual void DidModifyTexImage() OVERRIDE {}
|
||||
virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
gfx::OverlayTransform transform,
|
||||
const gfx::Rect& bounds_rect,
|
||||
const gfx::RectF& crop_rect) OVERRIDE;
|
||||
|
||||
private:
|
||||
virtual ~GLImageImpl();
|
||||
@ -54,8 +59,8 @@ void GLImageImpl::Destroy(bool have_context) {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
void GLImageImpl::WillUseTexImage() {
|
||||
surface_texture_->UpdateTexImage();
|
||||
gfx::Size GLImageImpl::GetSize() {
|
||||
return gfx::Size();
|
||||
}
|
||||
|
||||
bool GLImageImpl::BindTexImage(unsigned target) {
|
||||
@ -67,8 +72,17 @@ void GLImageImpl::ReleaseTexImage(unsigned target) {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
gfx::Size GLImageImpl::GetSize() {
|
||||
return gfx::Size();
|
||||
void GLImageImpl::WillUseTexImage() {
|
||||
surface_texture_->UpdateTexImage();
|
||||
}
|
||||
|
||||
bool GLImageImpl::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
gfx::OverlayTransform transform,
|
||||
const gfx::Rect& bounds_rect,
|
||||
const gfx::RectF& crop_rect) {
|
||||
NOTREACHED();
|
||||
return false;
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
@ -37,8 +37,12 @@ class GLImageSync : public gfx::GLImage {
|
||||
virtual void WillUseTexImage() OVERRIDE;
|
||||
virtual void WillModifyTexImage() OVERRIDE;
|
||||
virtual void DidModifyTexImage() OVERRIDE;
|
||||
|
||||
virtual void DidUseTexImage() OVERRIDE;
|
||||
virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
gfx::OverlayTransform transform,
|
||||
const gfx::Rect& bounds_rect,
|
||||
const gfx::RectF& crop_rect) OVERRIDE;
|
||||
virtual void SetReleaseAfterUse() OVERRIDE;
|
||||
|
||||
protected:
|
||||
@ -99,6 +103,15 @@ void GLImageSync::DidModifyTexImage() {
|
||||
buffer_->DidWrite(this);
|
||||
}
|
||||
|
||||
bool GLImageSync::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
gfx::OverlayTransform transform,
|
||||
const gfx::Rect& bounds_rect,
|
||||
const gfx::RectF& crop_rect) {
|
||||
NOTREACHED();
|
||||
return false;
|
||||
}
|
||||
|
||||
void GLImageSync::SetReleaseAfterUse() {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
@ -6,6 +6,10 @@
|
||||
#define UI_GL_GL_IMAGE_H_
|
||||
|
||||
#include "base/memory/ref_counted.h"
|
||||
#include "ui/gfx/native_widget_types.h"
|
||||
#include "ui/gfx/overlay_transform.h"
|
||||
#include "ui/gfx/rect.h"
|
||||
#include "ui/gfx/rect_f.h"
|
||||
#include "ui/gfx/size.h"
|
||||
#include "ui/gl/gl_export.h"
|
||||
|
||||
@ -41,6 +45,13 @@ class GL_EXPORT GLImage : public base::RefCounted<GLImage> {
|
||||
// Called after the texture image data has been modified.
|
||||
virtual void DidModifyTexImage() = 0;
|
||||
|
||||
// Schedule image as an overlay plane to be shown at swap time for |widget|.
|
||||
virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) = 0;
|
||||
|
||||
// Indicate that image should be released after use.
|
||||
// (For an Android work-around only).
|
||||
virtual void SetReleaseAfterUse();
|
||||
|
@ -116,6 +116,15 @@ void GLImageAndroidNativeBuffer::DidUseTexImage() {
|
||||
DCHECK_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
|
||||
}
|
||||
|
||||
bool GLImageAndroidNativeBuffer::ScheduleOverlayPlane(
|
||||
gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void GLImageAndroidNativeBuffer::SetReleaseAfterUse() {
|
||||
release_after_use_ = true;
|
||||
}
|
||||
|
@ -21,6 +21,11 @@ class GL_EXPORT GLImageAndroidNativeBuffer : public GLImageEGL {
|
||||
virtual void WillUseTexImage() OVERRIDE;
|
||||
virtual void DidUseTexImage() OVERRIDE;
|
||||
virtual void SetReleaseAfterUse() OVERRIDE;
|
||||
virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~GLImageAndroidNativeBuffer();
|
||||
|
@ -50,4 +50,12 @@ bool GLImageEGL::BindTexImage(unsigned target) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GLImageEGL::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) {
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace gfx
|
||||
|
@ -25,6 +25,11 @@ class GL_EXPORT GLImageEGL : public GLImage {
|
||||
virtual void DidUseTexImage() OVERRIDE {}
|
||||
virtual void WillModifyTexImage() OVERRIDE {}
|
||||
virtual void DidModifyTexImage() OVERRIDE {}
|
||||
virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~GLImageEGL();
|
||||
|
@ -190,4 +190,12 @@ void GLImageGLX::ReleaseTexImage(unsigned target) {
|
||||
glXReleaseTexImageEXT(gfx::GetXDisplay(), glx_pixmap_, GLX_FRONT_LEFT_EXT);
|
||||
}
|
||||
|
||||
bool GLImageGLX::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) {
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace gfx
|
||||
|
@ -27,6 +27,11 @@ class GL_EXPORT GLImageGLX : public GLImage {
|
||||
virtual void DidUseTexImage() OVERRIDE {}
|
||||
virtual void WillModifyTexImage() OVERRIDE {}
|
||||
virtual void DidModifyTexImage() OVERRIDE {}
|
||||
virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~GLImageGLX();
|
||||
|
@ -64,4 +64,12 @@ bool GLImageIOSurface::BindTexImage(unsigned target) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GLImageIOSurface::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) {
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace gfx
|
||||
|
@ -28,6 +28,11 @@ class GL_EXPORT GLImageIOSurface : public GLImage {
|
||||
virtual void DidUseTexImage() OVERRIDE {}
|
||||
virtual void WillModifyTexImage() OVERRIDE {}
|
||||
virtual void DidModifyTexImage() OVERRIDE {}
|
||||
virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~GLImageIOSurface();
|
||||
|
@ -203,4 +203,12 @@ size_t GLImageMemory::Bytes() const {
|
||||
return size_.GetArea() * BytesPerPixel(internalformat_);
|
||||
}
|
||||
|
||||
bool GLImageMemory::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) {
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace gfx
|
||||
|
@ -30,6 +30,11 @@ class GL_EXPORT GLImageMemory : public GLImage {
|
||||
virtual void DidUseTexImage() OVERRIDE {}
|
||||
virtual void WillModifyTexImage() OVERRIDE {}
|
||||
virtual void DidModifyTexImage() OVERRIDE {}
|
||||
virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~GLImageMemory();
|
||||
|
@ -14,4 +14,12 @@ gfx::Size GLImageStub::GetSize() { return gfx::Size(1, 1); }
|
||||
|
||||
bool GLImageStub::BindTexImage(unsigned target) { return true; }
|
||||
|
||||
bool GLImageStub::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) {
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace gfx
|
||||
|
@ -23,6 +23,11 @@ class GL_EXPORT GLImageStub : public GLImage {
|
||||
virtual void DidUseTexImage() OVERRIDE {}
|
||||
virtual void WillModifyTexImage() OVERRIDE {}
|
||||
virtual void DidModifyTexImage() OVERRIDE {}
|
||||
virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~GLImageStub();
|
||||
|
@ -77,4 +77,12 @@ bool GLImageSurfaceTexture::BindTexImage(unsigned target) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GLImageSurfaceTexture::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) {
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace gfx
|
||||
|
@ -29,6 +29,11 @@ class GL_EXPORT GLImageSurfaceTexture : public GLImage {
|
||||
virtual void DidUseTexImage() OVERRIDE {}
|
||||
virtual void WillModifyTexImage() OVERRIDE {}
|
||||
virtual void DidModifyTexImage() OVERRIDE {}
|
||||
virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
|
||||
int z_order,
|
||||
OverlayTransform transform,
|
||||
const Rect& bounds_rect,
|
||||
const RectF& crop_rect) OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~GLImageSurfaceTexture();
|
||||
|
Reference in New Issue
Block a user