Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(562)

Unified Diff: ui/gfx/surface/accelerated_surface_wayland.cc

Issue 7467007: Adding Wayland support for ui/gfx (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Adding missing WaylandDisplay include Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/surface/accelerated_surface_wayland.h ('k') | ui/gfx/surface/surface.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/surface/accelerated_surface_wayland.cc
diff --git a/ui/gfx/surface/accelerated_surface_wayland.cc b/ui/gfx/surface/accelerated_surface_wayland.cc
new file mode 100644
index 0000000000000000000000000000000000000000..29d0e7d16ce56d3c497e0ebc80baf29012bd2392
--- /dev/null
+++ b/ui/gfx/surface/accelerated_surface_wayland.cc
@@ -0,0 +1,51 @@
+// Copyright (c) 2011 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/gfx/surface/accelerated_surface_wayland.h"
+
+#include <wayland-egl.h>
+
+#include "third_party/angle/include/EGL/egl.h"
+#include "third_party/angle/include/EGL/eglext.h"
+#include "ui/gfx/gl/gl_bindings.h"
+#include "ui/gfx/gl/gl_surface_egl.h"
+#include "ui/wayland/wayland_display.h"
+
+AcceleratedSurface::AcceleratedSurface(const gfx::Size& size)
+ : size_(size),
+ image_(NULL),
+ pixmap_(NULL),
+ texture_(0) {
+ ui::WaylandDisplay* dpy = ui::WaylandDisplay::GetDisplay(
+ gfx::GLSurfaceEGL::GetNativeDisplay());
+ EGLDisplay edpy = gfx::GLSurfaceEGL::GetHardwareDisplay();
+
+ pixmap_ = wl_egl_pixmap_create(size_.width(),
+ size_.height(),
+ dpy->visual(),
+ 0);
+
+ image_ = eglCreateImageKHR(
+ edpy, EGL_NO_CONTEXT, EGL_NATIVE_PIXMAP_KHR, (void*) pixmap_, NULL);
+
+ glGenTextures(1, &texture_);
+
+ GLint current_texture = 0;
+ glGetIntegerv(GL_TEXTURE_BINDING_2D, &current_texture);
+
+ glBindTexture(GL_TEXTURE_2D, texture_);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image_);
+
+ glBindTexture(GL_TEXTURE_2D, current_texture);
+}
+
+AcceleratedSurface::~AcceleratedSurface() {
+ glDeleteTextures(1, &texture_);
+ eglDestroyImageKHR(gfx::GLSurfaceEGL::GetHardwareDisplay(), image_);
+ wl_egl_pixmap_destroy(pixmap_);
+}
« no previous file with comments | « ui/gfx/surface/accelerated_surface_wayland.h ('k') | ui/gfx/surface/surface.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698