blob: b8ee78c3a371575a33b9bbb8fa4d02678bf01333 [file] [log] [blame]
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/gl/gl_image_egl.h"
#include "ui/gl/gl_surface_egl.h"
namespace gfx {
GLImageEGL::GLImageEGL(const gfx::Size& size)
: egl_image_(EGL_NO_IMAGE_KHR), size_(size) {
}
GLImageEGL::~GLImageEGL() {
DCHECK_EQ(EGL_NO_IMAGE_KHR, egl_image_);
}
bool GLImageEGL::Initialize(EGLenum target,
EGLClientBuffer buffer,
const EGLint* attrs) {
DCHECK_EQ(EGL_NO_IMAGE_KHR, egl_image_);
egl_image_ = eglCreateImageKHR(GLSurfaceEGL::GetHardwareDisplay(),
EGL_NO_CONTEXT,
target,
buffer,
attrs);
if (egl_image_ == EGL_NO_IMAGE_KHR) {
EGLint error = eglGetError();
LOG(ERROR) << "Error creating EGLImage: " << error;
return false;
}
return true;
}
void GLImageEGL::Destroy(bool have_context) {
if (egl_image_ != EGL_NO_IMAGE_KHR) {
eglDestroyImageKHR(GLSurfaceEGL::GetHardwareDisplay(), egl_image_);
egl_image_ = EGL_NO_IMAGE_KHR;
}
}
gfx::Size GLImageEGL::GetSize() { return size_; }
bool GLImageEGL::BindTexImage(unsigned target) {
DCHECK_NE(EGL_NO_IMAGE_KHR, egl_image_);
glEGLImageTargetTexture2DOES(target, egl_image_);
DCHECK_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
return true;
}
bool GLImageEGL::CopyTexImage(unsigned target) {
return false;
}
bool GLImageEGL::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
int z_order,
OverlayTransform transform,
const Rect& bounds_rect,
const RectF& crop_rect) {
return false;
}
} // namespace gfx