OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "ui/gfx/surface/accelerated_surface_wayland.h" | |
6 | |
7 #include <wayland-egl.h> | |
8 | |
9 #include "third_party/angle/include/EGL/egl.h" | |
10 #include "third_party/angle/include/EGL/eglext.h" | |
11 #include "ui/gfx/gl/gl_bindings.h" | |
12 #include "ui/gfx/gl/gl_surface_egl.h" | |
13 #include "ui/wayland/wayland_display.h" | |
14 | |
15 AcceleratedSurface::AcceleratedSurface(const gfx::Size& size) | |
16 : size_(size), | |
17 image_(NULL), | |
18 pixmap_(NULL), | |
19 texture_(0) { | |
20 EGLDisplay edpy = gfx::GLSurfaceEGL::GetHardwareDisplay(); | |
21 | |
22 pixmap_ = wl_egl_pixmap_create(size_.width(), | |
23 size_.height(), | |
24 0); | |
25 | |
26 image_ = eglCreateImageKHR( | |
27 edpy, EGL_NO_CONTEXT, EGL_NATIVE_PIXMAP_KHR, (void*) pixmap_, NULL); | |
28 | |
29 glGenTextures(1, &texture_); | |
30 | |
31 GLint current_texture = 0; | |
32 glGetIntegerv(GL_TEXTURE_BINDING_2D, ¤t_texture); | |
33 | |
34 glBindTexture(GL_TEXTURE_2D, texture_); | |
35 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); | |
36 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); | |
37 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); | |
38 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); | |
39 glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image_); | |
40 | |
41 glBindTexture(GL_TEXTURE_2D, current_texture); | |
42 } | |
43 | |
44 AcceleratedSurface::~AcceleratedSurface() { | |
45 glDeleteTextures(1, &texture_); | |
46 eglDestroyImageKHR(gfx::GLSurfaceEGL::GetHardwareDisplay(), image_); | |
47 wl_egl_pixmap_destroy(pixmap_); | |
48 } | |
OLD | NEW |