Index: gpu/gles2_conform_support/native/egl_native_linux.cc |
=================================================================== |
--- gpu/gles2_conform_support/native/egl_native_linux.cc (revision 86314) |
+++ gpu/gles2_conform_support/native/egl_native_linux.cc (working copy) |
@@ -1,121 +0,0 @@ |
-// 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 <EGL/egl.h> |
-#include <EGL/eglext.h> |
-#include <gdk/gdkx.h> |
-#include <gtk/gtk.h> |
- |
-extern "C" { |
-#if defined(GLES2_CONFORM_SUPPORT_ONLY) |
-#include "gpu/gles2_conform_support/gtf/gtf_stubs.h" |
-#else |
-#include "third_party/gles2_conform/GTF_ES/glsl/GTF/Source/eglNative.h" |
-#endif |
-} |
- |
- |
-GTFbool GTFNativeCreateDisplay(EGLNativeDisplayType *pNativeDisplay) { |
- int argc = 0; |
- char **argv = NULL; |
- gtk_init(&argc, &argv); |
- *pNativeDisplay = GDK_DISPLAY();; |
- return *pNativeDisplay ? GTFtrue : GTFfalse; |
-} |
- |
-void GTFNativeDestroyDisplay(EGLNativeDisplayType nativeDisplay) { |
- gtk_exit(0); |
-} |
- |
-GTFbool GTFNativeCreateWindow(EGLNativeDisplayType nativeDisplay, |
- EGLDisplay eglDisplay, EGLConfig eglConfig, |
- const char* title, int width, int height, |
- EGLNativeWindowType *pNativeWindow) { |
-#ifdef CHROMEOS_GLES2_CONFORMANCE |
- // Due to the behavior of ChromeOS window manager, which always resize the |
- // top level window etc, we had to create a popup window. |
- GtkWidget* hwnd = gtk_window_new(GTK_WINDOW_POPUP); |
-#else |
- GtkWidget* hwnd = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
-#endif |
- |
- gtk_window_set_title(GTK_WINDOW(hwnd), title); |
- gtk_window_set_default_size(GTK_WINDOW(hwnd), width, height); |
- gtk_widget_set_double_buffered(hwnd, FALSE); |
- gtk_widget_set_app_paintable(hwnd, TRUE); |
- |
- // We had to enter gtk main loop to realize the window on ChromeOS. |
- gtk_widget_show_now(hwnd); |
- |
- *pNativeWindow = GDK_WINDOW_XWINDOW(hwnd->window); |
- |
- return GTFtrue; |
-} |
- |
-void GTFNativeDestroyWindow(EGLNativeDisplayType nativeDisplay, |
- EGLNativeWindowType nativeWindow) { |
- GdkWindow* window = gdk_window_lookup(nativeWindow); |
- gpointer widget = NULL; |
- gdk_window_get_user_data(window, &widget); |
- gtk_widget_destroy(GTK_WIDGET(widget)); |
-} |
- |
-EGLImageKHR GTFCreateEGLImage(int width, int height, |
- GLenum format, GLenum type) { |
- PFNEGLCREATEIMAGEKHRPROC egl_create_image_khr_; |
- egl_create_image_khr_ = reinterpret_cast<PFNEGLCREATEIMAGEKHRPROC> |
- (eglGetProcAddress("eglCreateImageKHR")); |
- |
- static const EGLint attrib[] = { |
- EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, |
- EGL_GL_TEXTURE_LEVEL_KHR, 0, |
- EGL_NONE |
- }; |
- |
- if (format != GL_RGBA && format != GL_RGB) |
- return static_cast<EGLImageKHR>(NULL); |
- |
- if (type != GL_UNSIGNED_BYTE) |
- return static_cast<EGLImageKHR>(NULL); |
- |
- GLuint texture; |
- glGenTextures(1, &texture); |
- glBindTexture(GL_TEXTURE_2D, texture); |
- glTexImage2D(GL_TEXTURE_2D, |
- 0, |
- format, |
- width, |
- height, |
- 0, |
- format, |
- type, |
- NULL); |
- |
- // Disable mip-maps because we do not require it. |
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); |
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
- |
- if(glGetError() != GL_NO_ERROR) |
- return static_cast<EGLImageKHR>(NULL); |
- |
- EGLImageKHR egl_image = |
- egl_create_image_khr_(eglGetCurrentDisplay(), |
- eglGetCurrentContext(), |
- EGL_GL_TEXTURE_2D_KHR, |
- reinterpret_cast<EGLClientBuffer>(texture), |
- attrib); |
- |
- if (eglGetError() == EGL_SUCCESS) |
- return egl_image; |
- else |
- return static_cast<EGLImageKHR>(NULL); |
-} |
- |
-void GTFDestroyEGLImage(EGLImageKHR image) { |
- PFNEGLDESTROYIMAGEKHRPROC egl_destroy_image_khr_; |
- egl_destroy_image_khr_ = reinterpret_cast<PFNEGLDESTROYIMAGEKHRPROC> |
- (eglGetProcAddress("eglDestroyImageKHR")); |
- |
- egl_destroy_image_khr_(eglGetCurrentDisplay(), image); |
-} |