summaryrefslogtreecommitdiffstats
path: root/src/test/native/mesa-demos-patched
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/native/mesa-demos-patched')
-rw-r--r--src/test/native/mesa-demos-patched/EGL/egl.h329
-rw-r--r--src/test/native/mesa-demos-patched/EGL/eglext.h398
-rw-r--r--src/test/native/mesa-demos-patched/EGL/eglplatform.h132
-rw-r--r--src/test/native/mesa-demos-patched/eglut/eglut.c400
-rw-r--r--src/test/native/mesa-demos-patched/eglut/eglut.h96
-rw-r--r--src/test/native/mesa-demos-patched/eglut/eglut_screen.c180
-rw-r--r--src/test/native/mesa-demos-patched/eglut/eglut_x11.c252
-rw-r--r--src/test/native/mesa-demos-patched/eglut/eglutint.h104
-rw-r--r--src/test/native/mesa-demos-patched/es2gears.c751
-rw-r--r--src/test/native/mesa-demos-patched/es2redsquare.c611
-rw-r--r--src/test/native/mesa-demos-patched/loop.sh5
-rw-r--r--src/test/native/mesa-demos-patched/make.sh17
-rw-r--r--src/test/native/mesa-demos-patched/shell_loop.sh11
13 files changed, 0 insertions, 3286 deletions
diff --git a/src/test/native/mesa-demos-patched/EGL/egl.h b/src/test/native/mesa-demos-patched/EGL/egl.h
deleted file mode 100644
index 99ea342a4..000000000
--- a/src/test/native/mesa-demos-patched/EGL/egl.h
+++ /dev/null
@@ -1,329 +0,0 @@
-/* -*- mode: c; tab-width: 8; -*- */
-/* vi: set sw=4 ts=8: */
-/* Reference version of egl.h for EGL 1.4.
- * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $
- */
-
-/*
-** Copyright (c) 2007-2009 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-#ifndef __egl_h_
-#define __egl_h_
-
-/* All platform-dependent types and macro boilerplate (such as EGLAPI
- * and EGLAPIENTRY) should go in eglplatform.h.
- */
-#include <EGL/eglplatform.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* EGL Types */
-/* EGLint is defined in eglplatform.h */
-typedef unsigned int EGLBoolean;
-typedef unsigned int EGLenum;
-typedef void *EGLConfig;
-typedef void *EGLContext;
-typedef void *EGLDisplay;
-typedef void *EGLSurface;
-typedef void *EGLClientBuffer;
-
-/* EGL Versioning */
-#define EGL_VERSION_1_0 1
-#define EGL_VERSION_1_1 1
-#define EGL_VERSION_1_2 1
-#define EGL_VERSION_1_3 1
-#define EGL_VERSION_1_4 1
-
-/* EGL Enumerants. Bitmasks and other exceptional cases aside, most
- * enums are assigned unique values starting at 0x3000.
- */
-
-/* EGL aliases */
-#define EGL_FALSE 0
-#define EGL_TRUE 1
-
-/* Out-of-band handle values */
-#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0)
-#define EGL_NO_CONTEXT ((EGLContext)0)
-#define EGL_NO_DISPLAY ((EGLDisplay)0)
-#define EGL_NO_SURFACE ((EGLSurface)0)
-
-/* Out-of-band attribute value */
-#define EGL_DONT_CARE ((EGLint)-1)
-
-/* Errors / GetError return values */
-#define EGL_SUCCESS 0x3000
-#define EGL_NOT_INITIALIZED 0x3001
-#define EGL_BAD_ACCESS 0x3002
-#define EGL_BAD_ALLOC 0x3003
-#define EGL_BAD_ATTRIBUTE 0x3004
-#define EGL_BAD_CONFIG 0x3005
-#define EGL_BAD_CONTEXT 0x3006
-#define EGL_BAD_CURRENT_SURFACE 0x3007
-#define EGL_BAD_DISPLAY 0x3008
-#define EGL_BAD_MATCH 0x3009
-#define EGL_BAD_NATIVE_PIXMAP 0x300A
-#define EGL_BAD_NATIVE_WINDOW 0x300B
-#define EGL_BAD_PARAMETER 0x300C
-#define EGL_BAD_SURFACE 0x300D
-#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */
-
-/* Reserved 0x300F-0x301F for additional errors */
-
-/* Config attributes */
-#define EGL_BUFFER_SIZE 0x3020
-#define EGL_ALPHA_SIZE 0x3021
-#define EGL_BLUE_SIZE 0x3022
-#define EGL_GREEN_SIZE 0x3023
-#define EGL_RED_SIZE 0x3024
-#define EGL_DEPTH_SIZE 0x3025
-#define EGL_STENCIL_SIZE 0x3026
-#define EGL_CONFIG_CAVEAT 0x3027
-#define EGL_CONFIG_ID 0x3028
-#define EGL_LEVEL 0x3029
-#define EGL_MAX_PBUFFER_HEIGHT 0x302A
-#define EGL_MAX_PBUFFER_PIXELS 0x302B
-#define EGL_MAX_PBUFFER_WIDTH 0x302C
-#define EGL_NATIVE_RENDERABLE 0x302D
-#define EGL_NATIVE_VISUAL_ID 0x302E
-#define EGL_NATIVE_VISUAL_TYPE 0x302F
-#define EGL_SAMPLES 0x3031
-#define EGL_SAMPLE_BUFFERS 0x3032
-#define EGL_SURFACE_TYPE 0x3033
-#define EGL_TRANSPARENT_TYPE 0x3034
-#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
-#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
-#define EGL_TRANSPARENT_RED_VALUE 0x3037
-#define EGL_NONE 0x3038 /* Attrib list terminator */
-#define EGL_BIND_TO_TEXTURE_RGB 0x3039
-#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
-#define EGL_MIN_SWAP_INTERVAL 0x303B
-#define EGL_MAX_SWAP_INTERVAL 0x303C
-#define EGL_LUMINANCE_SIZE 0x303D
-#define EGL_ALPHA_MASK_SIZE 0x303E
-#define EGL_COLOR_BUFFER_TYPE 0x303F
-#define EGL_RENDERABLE_TYPE 0x3040
-#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */
-#define EGL_CONFORMANT 0x3042
-
-/* Reserved 0x3041-0x304F for additional config attributes */
-
-/* Config attribute values */
-#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
-#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
-#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
-#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
-#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
-
-/* More config attribute values, for EGL_TEXTURE_FORMAT */
-#define EGL_NO_TEXTURE 0x305C
-#define EGL_TEXTURE_RGB 0x305D
-#define EGL_TEXTURE_RGBA 0x305E
-#define EGL_TEXTURE_2D 0x305F
-
-/* Config attribute mask bits */
-#define EGL_PBUFFER_BIT 0x0001 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_PIXMAP_BIT 0x0002 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_WINDOW_BIT 0x0004 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 /* EGL_SURFACE_TYPE mask bits */
-
-#define EGL_OPENGL_ES_BIT 0x0001 /* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENVG_BIT 0x0002 /* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENGL_ES2_BIT 0x0004 /* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENGL_BIT 0x0008 /* EGL_RENDERABLE_TYPE mask bits */
-
-/* QueryString targets */
-#define EGL_VENDOR 0x3053
-#define EGL_VERSION 0x3054
-#define EGL_EXTENSIONS 0x3055
-#define EGL_CLIENT_APIS 0x308D
-
-/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */
-#define EGL_HEIGHT 0x3056
-#define EGL_WIDTH 0x3057
-#define EGL_LARGEST_PBUFFER 0x3058
-#define EGL_TEXTURE_FORMAT 0x3080
-#define EGL_TEXTURE_TARGET 0x3081
-#define EGL_MIPMAP_TEXTURE 0x3082
-#define EGL_MIPMAP_LEVEL 0x3083
-#define EGL_RENDER_BUFFER 0x3086
-#define EGL_VG_COLORSPACE 0x3087
-#define EGL_VG_ALPHA_FORMAT 0x3088
-#define EGL_HORIZONTAL_RESOLUTION 0x3090
-#define EGL_VERTICAL_RESOLUTION 0x3091
-#define EGL_PIXEL_ASPECT_RATIO 0x3092
-#define EGL_SWAP_BEHAVIOR 0x3093
-#define EGL_MULTISAMPLE_RESOLVE 0x3099
-
-/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
-#define EGL_BACK_BUFFER 0x3084
-#define EGL_SINGLE_BUFFER 0x3085
-
-/* OpenVG color spaces */
-#define EGL_VG_COLORSPACE_sRGB 0x3089 /* EGL_VG_COLORSPACE value */
-#define EGL_VG_COLORSPACE_LINEAR 0x308A /* EGL_VG_COLORSPACE value */
-
-/* OpenVG alpha formats */
-#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
-#define EGL_VG_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
-
-/* Constant scale factor by which fractional display resolutions &
- * aspect ratio are scaled when queried as integer values.
- */
-#define EGL_DISPLAY_SCALING 10000
-
-/* Unknown display resolution/aspect ratio */
-#define EGL_UNKNOWN ((EGLint)-1)
-
-/* Back buffer swap behaviors */
-#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */
-#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */
-
-/* CreatePbufferFromClientBuffer buffer types */
-#define EGL_OPENVG_IMAGE 0x3096
-
-/* QueryContext targets */
-#define EGL_CONTEXT_CLIENT_TYPE 0x3097
-
-/* CreateContext attributes */
-#define EGL_CONTEXT_CLIENT_VERSION 0x3098
-
-/* Multisample resolution behaviors */
-#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A /* EGL_MULTISAMPLE_RESOLVE value */
-#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B /* EGL_MULTISAMPLE_RESOLVE value */
-
-/* BindAPI/QueryAPI targets */
-#define EGL_OPENGL_ES_API 0x30A0
-#define EGL_OPENVG_API 0x30A1
-#define EGL_OPENGL_API 0x30A2
-
-/* GetCurrentSurface targets */
-#define EGL_DRAW 0x3059
-#define EGL_READ 0x305A
-
-/* WaitNative engines */
-#define EGL_CORE_NATIVE_ENGINE 0x305B
-
-/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */
-#define EGL_COLORSPACE EGL_VG_COLORSPACE
-#define EGL_ALPHA_FORMAT EGL_VG_ALPHA_FORMAT
-#define EGL_COLORSPACE_sRGB EGL_VG_COLORSPACE_sRGB
-#define EGL_COLORSPACE_LINEAR EGL_VG_COLORSPACE_LINEAR
-#define EGL_ALPHA_FORMAT_NONPRE EGL_VG_ALPHA_FORMAT_NONPRE
-#define EGL_ALPHA_FORMAT_PRE EGL_VG_ALPHA_FORMAT_PRE
-
-/* EGL extensions must request enum blocks from the Khronos
- * API Registrar, who maintains the enumerant registry. Submit
- * a bug in Khronos Bugzilla against task "Registry".
- */
-
-
-
-/* EGL Functions */
-
-EGLAPI EGLint EGLAPIENTRY eglGetError(void);
-
-EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id);
-EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
-EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy);
-
-EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
- EGLint config_size, EGLint *num_config);
-EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
- EGLConfig *configs, EGLint config_size,
- EGLint *num_config);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
- EGLint attribute, EGLint *value);
-
-EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
- EGLNativeWindowType win,
- const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
- const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
- EGLNativePixmapType pixmap,
- const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
- EGLint attribute, EGLint *value);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api);
-EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void);
-
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(
- EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
- EGLConfig config, const EGLint *attrib_list);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
- EGLint attribute, EGLint value);
-EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-
-
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
-
-
-EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
- EGLContext share_context,
- const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
-EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
- EGLSurface read, EGLContext ctx);
-
-EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void);
-EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw);
-EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
- EGLint attribute, EGLint *value);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine);
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
-EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
- EGLNativePixmapType target);
-
-/* This is a generic function pointer type, whose name indicates it must
- * be cast to the proper type *and calling convention* before use.
- */
-typedef void (*__eglMustCastToProperFunctionPointerType)(void);
-
-/* Now, define eglGetProcAddress using the generic function ptr. type */
-EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY
- eglGetProcAddress(const char *procname);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __egl_h_ */
diff --git a/src/test/native/mesa-demos-patched/EGL/eglext.h b/src/test/native/mesa-demos-patched/EGL/eglext.h
deleted file mode 100644
index 9915b8cab..000000000
--- a/src/test/native/mesa-demos-patched/EGL/eglext.h
+++ /dev/null
@@ -1,398 +0,0 @@
-#ifndef __eglext_h_
-#define __eglext_h_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2007-2010 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-#include <EGL/eglplatform.h>
-
-/*************************************************************/
-
-/* Header file version number */
-/* Current version at http://www.khronos.org/registry/egl/ */
-/* $Revision: 12124 $ on $Date: 2010-07-27 20:12:35 -0700 (Tue, 27 Jul 2010) $ */
-#define EGL_EGLEXT_VERSION 7
-
-#ifndef EGL_KHR_config_attribs
-#define EGL_KHR_config_attribs 1
-#define EGL_CONFORMANT_KHR 0x3042 /* EGLConfig attribute */
-#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020 /* EGL_SURFACE_TYPE bitfield */
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040 /* EGL_SURFACE_TYPE bitfield */
-#endif
-
-#ifndef EGL_KHR_lock_surface
-#define EGL_KHR_lock_surface 1
-#define EGL_READ_SURFACE_BIT_KHR 0x0001 /* EGL_LOCK_USAGE_HINT_KHR bitfield */
-#define EGL_WRITE_SURFACE_BIT_KHR 0x0002 /* EGL_LOCK_USAGE_HINT_KHR bitfield */
-#define EGL_LOCK_SURFACE_BIT_KHR 0x0080 /* EGL_SURFACE_TYPE bitfield */
-#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100 /* EGL_SURFACE_TYPE bitfield */
-#define EGL_MATCH_FORMAT_KHR 0x3043 /* EGLConfig attribute */
-#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0 /* EGL_MATCH_FORMAT_KHR value */
-#define EGL_FORMAT_RGB_565_KHR 0x30C1 /* EGL_MATCH_FORMAT_KHR value */
-#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2 /* EGL_MATCH_FORMAT_KHR value */
-#define EGL_FORMAT_RGBA_8888_KHR 0x30C3 /* EGL_MATCH_FORMAT_KHR value */
-#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4 /* eglLockSurfaceKHR attribute */
-#define EGL_LOCK_USAGE_HINT_KHR 0x30C5 /* eglLockSurfaceKHR attribute */
-#define EGL_BITMAP_POINTER_KHR 0x30C6 /* eglQuerySurface attribute */
-#define EGL_BITMAP_PITCH_KHR 0x30C7 /* eglQuerySurface attribute */
-#define EGL_BITMAP_ORIGIN_KHR 0x30C8 /* eglQuerySurface attribute */
-#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9 /* eglQuerySurface attribute */
-#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA /* eglQuerySurface attribute */
-#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB /* eglQuerySurface attribute */
-#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC /* eglQuerySurface attribute */
-#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD /* eglQuerySurface attribute */
-#define EGL_LOWER_LEFT_KHR 0x30CE /* EGL_BITMAP_ORIGIN_KHR value */
-#define EGL_UPPER_LEFT_KHR 0x30CF /* EGL_BITMAP_ORIGIN_KHR value */
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay display, EGLSurface surface);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface);
-#endif
-
-#ifndef EGL_KHR_image
-#define EGL_KHR_image 1
-#define EGL_NATIVE_PIXMAP_KHR 0x30B0 /* eglCreateImageKHR target */
-typedef void *EGLImageKHR;
-#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0)
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
-#endif
-
-#ifndef EGL_KHR_vg_parent_image
-#define EGL_KHR_vg_parent_image 1
-#define EGL_VG_PARENT_IMAGE_KHR 0x30BA /* eglCreateImageKHR target */
-#endif
-
-#ifndef EGL_KHR_gl_texture_2D_image
-#define EGL_KHR_gl_texture_2D_image 1
-#define EGL_GL_TEXTURE_2D_KHR 0x30B1 /* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC /* eglCreateImageKHR attribute */
-#endif
-
-#ifndef EGL_KHR_gl_texture_cubemap_image
-#define EGL_KHR_gl_texture_cubemap_image 1
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3 /* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4 /* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5 /* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6 /* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7 /* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8 /* eglCreateImageKHR target */
-#endif
-
-#ifndef EGL_KHR_gl_texture_3D_image
-#define EGL_KHR_gl_texture_3D_image 1
-#define EGL_GL_TEXTURE_3D_KHR 0x30B2 /* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD /* eglCreateImageKHR attribute */
-#endif
-
-#ifndef EGL_KHR_gl_renderbuffer_image
-#define EGL_KHR_gl_renderbuffer_image 1
-#define EGL_GL_RENDERBUFFER_KHR 0x30B9 /* eglCreateImageKHR target */
-#endif
-
-#ifndef EGL_MESA_drm_image
-#define EGL_MESA_drm_image 1
-#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 /* eglCreateImageKHR attribute */
-#define EGL_DRM_BUFFER_USE_MESA 0x31D1
-
-/* EGL_DRM_BUFFER_FORMAT_MESA tokens */
-#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
-
-/* EGL_DRM_BUFFER_USE_MESA bits */
-#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x0001
-#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x0002
-#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x0004
-
-#define EGL_DRM_BUFFER_MESA 0x31D3 /* eglCreateImageKHR target */
-#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 /* eglCreateImageKHR attribute */
-
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA(EGLDisplay dpy, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA(EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
-#endif
-typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESA) (EGLDisplay dpy, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESA) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
-#endif
-
-#ifndef EGL_WL_bind_wayland_display
-#define EGL_WL_bind_wayland_display 1
-
-#define EGL_WAYLAND_BUFFER_WL 0x31D5 /* eglCreateImageKHR target */
-struct wl_display;
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display);
-EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display);
-#endif
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display);
-#endif
-
-#if KHRONOS_SUPPORT_INT64 /* EGLTimeKHR requires 64-bit uint support */
-#ifndef EGL_KHR_reusable_sync
-#define EGL_KHR_reusable_sync 1
-
-typedef void* EGLSyncKHR;
-typedef khronos_utime_nanoseconds_t EGLTimeKHR;
-
-#define EGL_SYNC_STATUS_KHR 0x30F1
-#define EGL_SIGNALED_KHR 0x30F2
-#define EGL_UNSIGNALED_KHR 0x30F3
-#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
-#define EGL_CONDITION_SATISFIED_KHR 0x30F6
-#define EGL_SYNC_TYPE_KHR 0x30F7
-#define EGL_SYNC_REUSABLE_KHR 0x30FA
-#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 /* eglClientWaitSyncKHR <flags> bitfield */
-#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
-#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0)
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync);
-EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
-#endif
-#endif
-
-/* EGL_MESA_screen extension >>> PRELIMINARY <<< */
-#ifndef EGL_MESA_screen_surface
-#define EGL_MESA_screen_surface 1
-
-#define EGL_BAD_SCREEN_MESA 0x4000
-#define EGL_BAD_MODE_MESA 0x4001
-#define EGL_SCREEN_COUNT_MESA 0x4002
-#define EGL_SCREEN_POSITION_MESA 0x4003
-#define EGL_SCREEN_POSITION_GRANULARITY_MESA 0x4004
-#define EGL_MODE_ID_MESA 0x4005
-#define EGL_REFRESH_RATE_MESA 0x4006
-#define EGL_OPTIMAL_MESA 0x4007
-#define EGL_INTERLACED_MESA 0x4008
-#define EGL_SCREEN_BIT_MESA 0x08
-
-typedef khronos_uint32_t EGLScreenMESA;
-typedef khronos_uint32_t EGLModeMESA;
-
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglChooseModeMESA(EGLDisplay dpy, EGLScreenMESA screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetModesMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetModeAttribMESA(EGLDisplay dpy, EGLModeMESA mode, EGLint attribute, EGLint *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetScreensMESA(EGLDisplay dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens);
-EGLAPI EGLSurface EGLAPIENTRY eglCreateScreenSurfaceMESA(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglShowScreenSurfaceMESA(EGLDisplay dpy, EGLint screen, EGLSurface surface, EGLModeMESA mode);
-EGLAPI EGLBoolean EGLAPIENTRY eglScreenPositionMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLint x, EGLint y);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLint attribute, EGLint *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLSurface *surface);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenModeMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *mode);
-EGLAPI const char * EGLAPIENTRY eglQueryModeStringMESA(EGLDisplay dpy, EGLModeMESA mode);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCHOOSEMODEMESA) (EGLDisplay dpy, EGLScreenMESA screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMODESMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGetModeATTRIBMESA) (EGLDisplay dpy, EGLModeMESA mode, EGLint attribute, EGLint *value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSCRREENSMESA) (EGLDisplay dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESCREENSURFACEMESA) (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSHOWSCREENSURFACEMESA) (EGLDisplay dpy, EGLint screen, EGLSurface surface, EGLModeMESA mode);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSCREENPOSIITONMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLint x, EGLint y);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLint attribute, EGLint *value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENSURFACEMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLSurface *surface);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENMODEMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *mode);
-typedef const char * (EGLAPIENTRYP PFNEGLQUERYMODESTRINGMESA) (EGLDisplay dpy, EGLModeMESA mode);
-
-#endif /* EGL_MESA_screen_surface */
-
-
-#ifndef EGL_MESA_copy_context
-#define EGL_MESA_copy_context 1
-
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglCopyContextMESA(EGLDisplay dpy, EGLContext source, EGLContext dest, EGLint mask);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOPYCONTEXTMESA) (EGLDisplay dpy, EGLContext source, EGLContext dest, EGLint mask);
-
-#endif /* EGL_MESA_copy_context */
-
-#ifndef EGL_MESA_drm_display
-#define EGL_MESA_drm_display 1
-
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLDisplay EGLAPIENTRY eglGetDRMDisplayMESA(int fd);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-
-typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETDRMDISPLAYMESA) (int fd);
-
-#endif /* EGL_MESA_drm_display */
-
-#ifndef EGL_KHR_image_base
-#define EGL_KHR_image_base 1
-/* Most interfaces defined by EGL_KHR_image_pixmap above */
-#define EGL_IMAGE_PRESERVED_KHR 0x30D2 /* eglCreateImageKHR attribute */
-#endif
-
-#ifndef EGL_KHR_image_pixmap
-#define EGL_KHR_image_pixmap 1
-/* Interfaces defined by EGL_KHR_image above */
-#endif
-
-#ifndef EGL_IMG_context_priority
-#define EGL_IMG_context_priority 1
-#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
-#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
-#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
-#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
-#endif
-
-#ifndef EGL_KHR_lock_surface2
-#define EGL_KHR_lock_surface2 1
-#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
-#endif
-
-#ifndef EGL_NV_coverage_sample
-#define EGL_NV_coverage_sample 1
-#define EGL_COVERAGE_BUFFERS_NV 0x30E0
-#define EGL_COVERAGE_SAMPLES_NV 0x30E1
-#endif
-
-#ifndef EGL_NV_depth_nonlinear
-#define EGL_NV_depth_nonlinear 1
-#define EGL_DEPTH_ENCODING_NV 0x30E2
-#define EGL_DEPTH_ENCODING_NONE_NV 0
-#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
-#endif
-
-#if KHRONOS_SUPPORT_INT64 /* EGLTimeNV requires 64-bit uint support */
-#ifndef EGL_NV_sync
-#define EGL_NV_sync 1
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
-#define EGL_SYNC_STATUS_NV 0x30E7
-#define EGL_SIGNALED_NV 0x30E8
-#define EGL_UNSIGNALED_NV 0x30E9
-#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
-#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull
-#define EGL_ALREADY_SIGNALED_NV 0x30EA
-#define EGL_TIMEOUT_EXPIRED_NV 0x30EB
-#define EGL_CONDITION_SATISFIED_NV 0x30EC
-#define EGL_SYNC_TYPE_NV 0x30ED
-#define EGL_SYNC_CONDITION_NV 0x30EE
-#define EGL_SYNC_FENCE_NV 0x30EF
-#define EGL_NO_SYNC_NV ((EGLSyncNV)0)
-typedef void* EGLSyncNV;
-typedef khronos_utime_nanoseconds_t EGLTimeNV;
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLSyncNV eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
-EGLBoolean eglDestroySyncNV (EGLSyncNV sync);
-EGLBoolean eglFenceNV (EGLSyncNV sync);
-EGLint eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
-EGLBoolean eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);
-EGLBoolean eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);
-#endif
-#endif
-
-#if KHRONOS_SUPPORT_INT64 /* Dependent on EGL_KHR_reusable_sync which requires 64-bit uint support */
-#ifndef EGL_KHR_fence_sync
-#define EGL_KHR_fence_sync 1
-/* Reuses most tokens and entry points from EGL_KHR_reusable_sync */
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
-#define EGL_SYNC_CONDITION_KHR 0x30F8
-#define EGL_SYNC_FENCE_KHR 0x30F9
-#endif
-#endif
-
-#ifndef EGL_HI_clientpixmap
-#define EGL_HI_clientpixmap 1
-
-/* Surface Attribute */
-#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
-/*
- * Structure representing a client pixmap
- * (pixmap's data is in client-space memory).
- */
-struct EGLClientPixmapHI
-{
- void* pData;
- EGLint iWidth;
- EGLint iHeight;
- EGLint iStride;
-};
-
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI(EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap);
-#endif /* EGL_HI_clientpixmap */
-
-#ifndef EGL_HI_colorformats
-#define EGL_HI_colorformats 1
-/* Config Attribute */
-#define EGL_COLOR_FORMAT_HI 0x8F70
-/* Color Formats */
-#define EGL_COLOR_RGB_HI 0x8F71
-#define EGL_COLOR_RGBA_HI 0x8F72
-#define EGL_COLOR_ARGB_HI 0x8F73
-#endif /* EGL_HI_colorformats */
-
-#ifndef EGL_NOK_swap_region
-#define EGL_NOK_swap_region 1
-
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK(EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects);
-#endif
-
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOK) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects);
-#endif
-
-
-#ifndef EGL_NOK_texture_from_pixmap
-#define EGL_NOK_texture_from_pixmap 1
-
-#define EGL_Y_INVERTED_NOK 0x307F
-#endif /* EGL_NOK_texture_from_pixmap */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/src/test/native/mesa-demos-patched/EGL/eglplatform.h b/src/test/native/mesa-demos-patched/EGL/eglplatform.h
deleted file mode 100644
index fbfdce32e..000000000
--- a/src/test/native/mesa-demos-patched/EGL/eglplatform.h
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef __eglplatform_h_
-#define __eglplatform_h_
-
-/*
-** Copyright (c) 2007-2009 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Platform-specific types and definitions for egl.h
- * $Revision: 9724 $ on $Date: 2009-12-02 02:05:33 -0800 (Wed, 02 Dec 2009) $
- *
- * Adopters may modify khrplatform.h and this file to suit their platform.
- * You are encouraged to submit all modifications to the Khronos group so that
- * they can be included in future versions of this file. Please submit changes
- * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
- * by filing a bug against product "EGL" component "Registry".
- */
-
-#include <KHR/khrplatform.h>
-
-/* Macros used in EGL function prototype declarations.
- *
- * EGL functions should be prototyped as:
- *
- * EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
- * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
- *
- * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
- */
-
-#ifndef EGLAPI
-#define EGLAPI KHRONOS_APICALL
-#endif
-
-#ifndef EGLAPIENTRY
-#define EGLAPIENTRY KHRONOS_APIENTRY
-#endif
-#define EGLAPIENTRYP EGLAPIENTRY*
-
-/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
- * are aliases of window-system-dependent types, such as X Display * or
- * Windows Device Context. They must be defined in platform-specific
- * code below. The EGL-prefixed versions of Native*Type are the same
- * types, renamed in EGL 1.3 so all types in the API start with "EGL".
- */
-
-#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#include <windows.h>
-
-typedef HDC EGLNativeDisplayType;
-typedef HBITMAP EGLNativePixmapType;
-typedef HWND EGLNativeWindowType;
-
-#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */
-
-typedef int EGLNativeDisplayType;
-typedef void *EGLNativeWindowType;
-typedef void *EGLNativePixmapType;
-
-#elif defined(WL_EGL_PLATFORM)
-
-typedef struct wl_display *EGLNativeDisplayType;
-typedef struct wl_egl_pixmap *EGLNativePixmapType;
-typedef struct wl_egl_window *EGLNativeWindowType;
-
-#elif defined(__GBM__)
-
-typedef struct gbm_device *EGLNativeDisplayType;
-typedef struct gbm_bo *EGLNativePixmapType;
-typedef void *EGLNativeWindowType;
-
-#elif defined(__unix__) || defined(__unix)
-
-#ifdef MESA_EGL_NO_X11_HEADERS
-
-typedef void *EGLNativeDisplayType;
-typedef khronos_uint32_t EGLNativePixmapType;
-typedef khronos_uint32_t EGLNativeWindowType;
-
-#else
-
-/* X11 (tentative) */
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-typedef Display *EGLNativeDisplayType;
-typedef Pixmap EGLNativePixmapType;
-typedef Window EGLNativeWindowType;
-
-#endif /* MESA_EGL_NO_X11_HEADERS */
-
-#else
-#error "Platform not recognized"
-#endif
-
-/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
-typedef EGLNativeDisplayType NativeDisplayType;
-typedef EGLNativePixmapType NativePixmapType;
-typedef EGLNativeWindowType NativeWindowType;
-
-
-/* Define EGLint. This must be a signed integral type large enough to contain
- * all legal attribute names and values passed into and out of EGL, whether
- * their type is boolean, bitmask, enumerant (symbolic constant), integer,
- * handle, or other. While in general a 32-bit integer will suffice, if
- * handles are 64 bit types, then EGLint should be defined as a signed 64-bit
- * integer type.
- */
-typedef khronos_int32_t EGLint;
-
-#endif /* __eglplatform_h */
diff --git a/src/test/native/mesa-demos-patched/eglut/eglut.c b/src/test/native/mesa-demos-patched/eglut/eglut.c
deleted file mode 100644
index eb72f6417..000000000
--- a/src/test/native/mesa-demos-patched/eglut/eglut.c
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * Copyright (C) 2010 LunarG Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Chia-I Wu <[email protected]>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <sys/time.h>
-
-#include "EGL/egl.h"
-#include "EGL/eglext.h"
-
-#include "eglutint.h"
-
-static struct eglut_state _eglut_state = {
- .api_mask = EGLUT_OPENGL_ES1_BIT,
- .window_width = 300,
- .window_height = 300,
- .verbose = 0,
- .num_windows = 0,
-};
-
-struct eglut_state *_eglut = &_eglut_state;
-
-void
-_eglutFatal(char *format, ...)
-{
- va_list args;
-
- va_start(args, format);
-
- fprintf(stderr, "EGLUT: ");
- vfprintf(stderr, format, args);
- va_end(args);
- putc('\n', stderr);
-
- exit(1);
-}
-
-/* return current time (in milliseconds) */
-int
-_eglutNow(void)
-{
- struct timeval tv;
-#ifdef __VMS
- (void) gettimeofday(&tv, NULL );
-#else
- struct timezone tz;
- (void) gettimeofday(&tv, &tz);
-#endif
- return tv.tv_sec * 1000 + tv.tv_usec / 1000;
-}
-
-static void
-_eglutDestroyWindow(struct eglut_window *win)
-{
- if (_eglut->surface_type != EGL_PBUFFER_BIT &&
- _eglut->surface_type != EGL_SCREEN_BIT_MESA)
- eglDestroySurface(_eglut->dpy, win->surface);
-
- _eglutNativeFiniWindow(win);
-
- eglDestroyContext(_eglut->dpy, win->context);
-}
-
-static EGLConfig
-_eglutChooseConfig(void)
-{
- EGLConfig config;
- EGLint config_attribs[32];
- EGLint renderable_type, num_configs, i;
- EGLint cfgid, vid;
-
- i = 0;
- config_attribs[i++] = EGL_RED_SIZE;
- config_attribs[i++] = 1;
- config_attribs[i++] = EGL_GREEN_SIZE;
- config_attribs[i++] = 1;
- config_attribs[i++] = EGL_BLUE_SIZE;
- config_attribs[i++] = 1;
- config_attribs[i++] = EGL_DEPTH_SIZE;
- config_attribs[i++] = 1;
-
- config_attribs[i++] = EGL_SURFACE_TYPE;
- config_attribs[i++] = _eglut->surface_type;
-
- config_attribs[i++] = EGL_RENDERABLE_TYPE;
- renderable_type = 0x0;
- if (_eglut->api_mask & EGLUT_OPENGL_BIT)
- renderable_type |= EGL_OPENGL_BIT;
- if (_eglut->api_mask & EGLUT_OPENGL_ES1_BIT)
- renderable_type |= EGL_OPENGL_ES_BIT;
- if (_eglut->api_mask & EGLUT_OPENGL_ES2_BIT)
- renderable_type |= EGL_OPENGL_ES2_BIT;
- if (_eglut->api_mask & EGLUT_OPENVG_BIT)
- renderable_type |= EGL_OPENVG_BIT;
- config_attribs[i++] = renderable_type;
-
- config_attribs[i] = EGL_NONE;
-
- if (!eglChooseConfig(_eglut->dpy,
- config_attribs, &config, 1, &num_configs) || !num_configs)
- _eglutFatal("failed to choose a config");
-
- if (!eglGetConfigAttrib(_eglut->dpy,
- config, EGL_CONFIG_ID, &cfgid))
- _eglutFatal("failed to get visual id");
- if (!eglGetConfigAttrib(_eglut->dpy,
- config, EGL_NATIVE_VISUAL_ID, &vid))
- _eglutFatal("failed to get visual id");
-
- fprintf(stderr, "eglChooseConfig egl-cfg-id 0x%X, vid 0x%X\n", cfgid, vid);
-
- return config;
-}
-
-static struct eglut_window *
-_eglutCreateWindow(const char *title, int x, int y, int w, int h)
-{
- struct eglut_window *win;
- EGLint context_attribs[4];
- EGLint api, i;
-
- win = calloc(1, sizeof(*win));
- if (!win)
- _eglutFatal("failed to allocate window");
-
- win->config = _eglutChooseConfig();
-
- i = 0;
- context_attribs[i] = EGL_NONE;
-
- /* multiple APIs? */
-
- api = EGL_OPENGL_ES_API;
- if (_eglut->api_mask & EGLUT_OPENGL_BIT) {
- api = EGL_OPENGL_API;
- }
- else if (_eglut->api_mask & EGLUT_OPENVG_BIT) {
- api = EGL_OPENVG_API;
- }
- else if (_eglut->api_mask & EGLUT_OPENGL_ES2_BIT) {
- context_attribs[i++] = EGL_CONTEXT_CLIENT_VERSION;
- context_attribs[i++] = 2;
- }
-
- context_attribs[i] = EGL_NONE;
-
- eglBindAPI(api);
- win->context = eglCreateContext(_eglut->dpy,
- win->config, EGL_NO_CONTEXT, context_attribs);
- if (!win->context)
- _eglutFatal("failed to create context");
-
- _eglutNativeInitWindow(win, title, x, y, w, h);
- switch (_eglut->surface_type) {
- case EGL_WINDOW_BIT:
- win->surface = eglCreateWindowSurface(_eglut->dpy,
- win->config, win->native.u.window, NULL);
- break;
- case EGL_PIXMAP_BIT:
- win->surface = eglCreatePixmapSurface(_eglut->dpy,
- win->config, win->native.u.pixmap, NULL);
- break;
- case EGL_PBUFFER_BIT:
- case EGL_SCREEN_BIT_MESA:
- win->surface = win->native.u.surface;
- break;
- default:
- break;
- }
- if (win->surface == EGL_NO_SURFACE)
- _eglutFatal("failed to create surface");
-
- return win;
-}
-
-void
-eglutInitAPIMask(int mask)
-{
- _eglut->api_mask = mask;
-}
-
-void
-eglutInitWindowSize(int width, int height)
-{
- _eglut->window_width = width;
- _eglut->window_height = height;
-}
-
-void
-eglutInit(int argc, char **argv)
-{
- int i;
-
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-display") == 0)
- _eglut->display_name = argv[++i];
- else if (strcmp(argv[i], "-info") == 0) {
- _eglut->verbose = 1;
- }
- }
-
- _eglutNativeInitDisplay();
- _eglut->dpy = eglGetDisplay(_eglut->native_dpy);
-
- if (!eglInitialize(_eglut->dpy, &_eglut->major, &_eglut->minor))
- _eglutFatal("failed to initialize EGL display");
-
- _eglut->init_time = _eglutNow();
-
- printf("EGL_VERSION = %s\n", eglQueryString(_eglut->dpy, EGL_VERSION));
- if (_eglut->verbose) {
- printf("EGL_VENDOR = %s\n", eglQueryString(_eglut->dpy, EGL_VENDOR));
- printf("EGL_EXTENSIONS = %s\n",
- eglQueryString(_eglut->dpy, EGL_EXTENSIONS));
- printf("EGL_CLIENT_APIS = %s\n",
- eglQueryString(_eglut->dpy, EGL_CLIENT_APIS));
- }
-}
-
-int
-eglutGet(int state)
-{
- int val;
-
- switch (state) {
- case EGLUT_ELAPSED_TIME:
- val = _eglutNow() - _eglut->init_time;
- break;
- default:
- val = -1;
- break;
- }
-
- return val;
-}
-
-void
-eglutIdleFunc(EGLUTidleCB func)
-{
- _eglut->idle_cb = func;
-}
-
-void
-eglutPostRedisplay(void)
-{
- _eglut->redisplay = 1;
-}
-
-void
-eglutMainLoop(void)
-{
- struct eglut_window *win = _eglut->current;
-
- if (!win)
- _eglutFatal("no window is created\n");
-
- if (win->reshape_cb)
- win->reshape_cb(win->native.width, win->native.height);
-
- _eglut->stop_loop = 0;
- _eglutNativeEventLoop();
-}
-
-void
-eglutStopMainLoop(void)
-{
- _eglut->stop_loop = 1;
-}
-
-static void
-_eglutFini(void)
-{
- eglTerminate(_eglut->dpy);
- _eglutNativeFiniDisplay();
-}
-
-void
-eglutTerminate(void)
-{
- _eglutFini();
-}
-
-void
-eglutDestroyWindow(int win)
-{
- struct eglut_window *window = _eglut->current;
-
- if (window->index != win)
- return;
-
- /* XXX it causes some bug in st/egl KMS backend */
- if ( _eglut->surface_type != EGL_SCREEN_BIT_MESA)
- eglMakeCurrent(_eglut->dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
-
- _eglutDestroyWindow(_eglut->current);
-}
-
-static void
-_eglutDefaultKeyboard(unsigned char key)
-{
- if (key == 27) {
- if (_eglut->current)
- eglutDestroyWindow(_eglut->current->index);
- _eglutFini();
-
- exit(0);
- }
-}
-
-int
-eglutCreateWindow(const char *title)
-{
- struct eglut_window *win;
-
- win = _eglutCreateWindow(title, 0, 0,
- _eglut->window_width, _eglut->window_height);
-
- win->index = _eglut->num_windows++;
- win->reshape_cb = NULL;
- win->display_cb = NULL;
- win->keyboard_cb = _eglutDefaultKeyboard;
- win->special_cb = NULL;
-
- if (!eglMakeCurrent(_eglut->dpy, win->surface, win->surface, win->context))
- _eglutFatal("failed to make window current");
- _eglut->current = win;
-
- return win->index;
-}
-
-void eglutSwapInterval(EGLint interval) {
- eglSwapInterval(_eglut->dpy, interval);
-}
-
-int
-eglutGetWindowWidth(void)
-{
- struct eglut_window *win = _eglut->current;
- return win->native.width;
-}
-
-int
-eglutGetWindowHeight(void)
-{
- struct eglut_window *win = _eglut->current;
- return win->native.height;
-}
-
-void
-eglutDisplayFunc(EGLUTdisplayCB func)
-{
- struct eglut_window *win = _eglut->current;
- win->display_cb = func;
-
-}
-
-void
-eglutReshapeFunc(EGLUTreshapeCB func)
-{
- struct eglut_window *win = _eglut->current;
- win->reshape_cb = func;
-}
-
-void
-eglutKeyboardFunc(EGLUTkeyboardCB func)
-{
- struct eglut_window *win = _eglut->current;
- win->keyboard_cb = func;
-}
-
-void
-eglutSpecialFunc(EGLUTspecialCB func)
-{
- struct eglut_window *win = _eglut->current;
- win->special_cb = func;
-}
diff --git a/src/test/native/mesa-demos-patched/eglut/eglut.h b/src/test/native/mesa-demos-patched/eglut/eglut.h
deleted file mode 100644
index b1758ff67..000000000
--- a/src/test/native/mesa-demos-patched/eglut/eglut.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2010 LunarG Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Chia-I Wu <[email protected]>
- */
-
-#ifndef EGLUT_H
-#define EGLUT_H
-
-/* used by eglutInitAPIMask */
-enum {
- EGLUT_OPENGL_BIT = 0x1,
- EGLUT_OPENGL_ES1_BIT = 0x2,
- EGLUT_OPENGL_ES2_BIT = 0x4,
- EGLUT_OPENVG_BIT = 0x8
-};
-
-/* used by EGLUTspecialCB */
-enum {
- /* function keys */
- EGLUT_KEY_F1,
- EGLUT_KEY_F2,
- EGLUT_KEY_F3,
- EGLUT_KEY_F4,
- EGLUT_KEY_F5,
- EGLUT_KEY_F6,
- EGLUT_KEY_F7,
- EGLUT_KEY_F8,
- EGLUT_KEY_F9,
- EGLUT_KEY_F10,
- EGLUT_KEY_F11,
- EGLUT_KEY_F12,
-
- /* directional keys */
- EGLUT_KEY_LEFT,
- EGLUT_KEY_UP,
- EGLUT_KEY_RIGHT,
- EGLUT_KEY_DOWN,
-};
-
-/* used by eglutGet */
-enum {
- EGLUT_ELAPSED_TIME
-};
-
-typedef void (*EGLUTidleCB)(void);
-typedef void (*EGLUTreshapeCB)(int, int);
-typedef void (*EGLUTdisplayCB)(void);
-typedef void (*EGLUTkeyboardCB)(unsigned char);
-typedef void (*EGLUTspecialCB)(int);
-
-void eglutInitAPIMask(int mask);
-void eglutInitWindowSize(int width, int height);
-void eglutInit(int argc, char **argv);
-
-int eglutGet(int state);
-
-void eglutIdleFunc(EGLUTidleCB func);
-void eglutPostRedisplay(void);
-void eglutSwapInterval(EGLint interval);
-
-void eglutMainLoop(void);
-void eglutStopMainLoop(void);
-
-int eglutCreateWindow(const char *title);
-void eglutDestroyWindow(int win);
-void eglutTerminate(void);
-
-int eglutGetWindowWidth(void);
-int eglutGetWindowHeight(void);
-
-void eglutDisplayFunc(EGLUTdisplayCB func);
-void eglutReshapeFunc(EGLUTreshapeCB func);
-void eglutKeyboardFunc(EGLUTkeyboardCB func);
-void eglutSpecialFunc(EGLUTspecialCB func);
-
-#endif /* EGLUT_H */
diff --git a/src/test/native/mesa-demos-patched/eglut/eglut_screen.c b/src/test/native/mesa-demos-patched/eglut/eglut_screen.c
deleted file mode 100644
index 727e57fbf..000000000
--- a/src/test/native/mesa-demos-patched/eglut/eglut_screen.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2010 LunarG Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Chia-I Wu <[email protected]>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/time.h>
-
-#define EGL_EGLEXT_PROTOTYPES
-#include "EGL/egl.h"
-#include "EGL/eglext.h"
-
-#include "eglutint.h"
-
-#define MAX_MODES 100
-
-static EGLScreenMESA kms_screen;
-static EGLModeMESA kms_mode;
-static EGLint kms_width, kms_height;
-
-void
-_eglutNativeInitDisplay(void)
-{
- _eglut->native_dpy = EGL_DEFAULT_DISPLAY;
- _eglut->surface_type = EGL_SCREEN_BIT_MESA;
-}
-
-void
-_eglutNativeFiniDisplay(void)
-{
- kms_screen = 0;
- kms_mode = 0;
- kms_width = 0;
- kms_height = 0;
-}
-
-static void
-init_kms(void)
-{
- EGLModeMESA modes[MAX_MODES];
- EGLint num_screens, num_modes;
- EGLint width, height, best_mode;
- EGLint i;
-
- if (!eglGetScreensMESA(_eglut->dpy, &kms_screen, 1, &num_screens) ||
- !num_screens)
- _eglutFatal("eglGetScreensMESA failed\n");
-
- if (!eglGetModesMESA(_eglut->dpy, kms_screen,
- modes, MAX_MODES, &num_modes) || !num_modes)
- _eglutFatal("eglGetModesMESA failed!\n");
-
- printf("Found %d modes:\n", num_modes);
-
- best_mode = 0;
- width = 0;
- height = 0;
- for (i = 0; i < num_modes; i++) {
- EGLint w, h;
- eglGetModeAttribMESA(_eglut->dpy, modes[i], EGL_WIDTH, &w);
- eglGetModeAttribMESA(_eglut->dpy, modes[i], EGL_HEIGHT, &h);
- printf("%3d: %d x %d\n", i, w, h);
- if (w > width && h > height) {
- width = w;
- height = h;
- best_mode = i;
- }
- }
-
- printf("Will use screen size: %d x %d\n", width, height);
-
- kms_mode = modes[best_mode];
- kms_width = width;
- kms_height = height;
-}
-
-void
-_eglutNativeInitWindow(struct eglut_window *win, const char *title,
- int x, int y, int w, int h)
-{
- EGLint surf_attribs[16];
- EGLint i;
- const char *exts;
-
- exts = eglQueryString(_eglut->dpy, EGL_EXTENSIONS);
- if (!exts || !strstr(exts, "EGL_MESA_screen_surface"))
- _eglutFatal("EGL_MESA_screen_surface is not supported\n");
-
- init_kms();
-
- i = 0;
- surf_attribs[i++] = EGL_WIDTH;
- surf_attribs[i++] = kms_width;
- surf_attribs[i++] = EGL_HEIGHT;
- surf_attribs[i++] = kms_height;
- surf_attribs[i++] = EGL_NONE;
-
- /* create surface */
- win->native.u.surface = eglCreateScreenSurfaceMESA(_eglut->dpy,
- win->config, surf_attribs);
- if (win->native.u.surface == EGL_NO_SURFACE)
- _eglutFatal("eglCreateScreenSurfaceMESA failed\n");
-
- if (!eglShowScreenSurfaceMESA(_eglut->dpy, kms_screen,
- win->native.u.surface, kms_mode))
- _eglutFatal("eglShowScreenSurfaceMESA failed\n");
-
- win->native.width = kms_width;
- win->native.height = kms_height;
-}
-
-void
-_eglutNativeFiniWindow(struct eglut_window *win)
-{
- eglShowScreenSurfaceMESA(_eglut->dpy,
- kms_screen, EGL_NO_SURFACE, 0);
- eglDestroySurface(_eglut->dpy, win->native.u.surface);
-}
-
-void
-_eglutNativeEventLoop(void)
-{
- int start = _eglutNow();
- int frames = 0;
-
- _eglut->redisplay = 1;
-
- while (!_eglut->stop_loop) {
- struct eglut_window *win = _eglut->current;
- int now = _eglutNow();
-
- if (now - start > 5000) {
- double elapsed = (double) (now - start) / 1000.0;
-
- printf("%d frames in %3.1f seconds = %6.3f FPS\n",
- frames, elapsed, frames / elapsed);
- fflush(stdout);
-
- start = now;
- frames = 0;
-
- /* send escape */
- if (win->keyboard_cb)
- win->keyboard_cb(27);
- }
-
- if (_eglut->idle_cb)
- _eglut->idle_cb();
-
- if (_eglut->redisplay) {
- _eglut->redisplay = 0;
-
- if (win->display_cb)
- win->display_cb();
- eglSwapBuffers(_eglut->dpy, win->surface);
- frames++;
- }
- }
-}
diff --git a/src/test/native/mesa-demos-patched/eglut/eglut_x11.c b/src/test/native/mesa-demos-patched/eglut/eglut_x11.c
deleted file mode 100644
index e37e52ba4..000000000
--- a/src/test/native/mesa-demos-patched/eglut/eglut_x11.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Copyright (C) 2010 LunarG Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Chia-I Wu <[email protected]>
- */
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/keysym.h>
-
-#include "eglutint.h"
-
-void
-_eglutNativeInitDisplay(void)
-{
- _eglut->native_dpy = XOpenDisplay(_eglut->display_name);
- if (!_eglut->native_dpy)
- _eglutFatal("failed to initialize native display");
-
- _eglut->surface_type = EGL_WINDOW_BIT;
-}
-
-void
-_eglutNativeFiniDisplay(void)
-{
- XCloseDisplay(_eglut->native_dpy);
-}
-
-void
-_eglutNativeInitWindow(struct eglut_window *win, const char *title,
- int x, int y, int w, int h)
-{
- XVisualInfo *visInfo, visTemplate;
- int num_visuals;
- Window root, xwin;
- XSetWindowAttributes attr;
- unsigned long mask;
- EGLint vid;
-
- if (!eglGetConfigAttrib(_eglut->dpy,
- win->config, EGL_NATIVE_VISUAL_ID, &vid))
- _eglutFatal("failed to get visual id");
-
- /* The X window visual must match the EGL config */
- visTemplate.visualid = vid;
- visInfo = XGetVisualInfo(_eglut->native_dpy,
- VisualIDMask, &visTemplate, &num_visuals);
- if (!visInfo)
- _eglutFatal("failed to get an visual of id 0x%x", vid);
-
- root = RootWindow(_eglut->native_dpy, DefaultScreen(_eglut->native_dpy));
-
- /* window attributes */
- attr.background_pixel = 0;
- attr.border_pixel = 0;
- attr.colormap = XCreateColormap(_eglut->native_dpy,
- root, visInfo->visual, AllocNone);
- attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask;
- mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask;
-
- xwin = XCreateWindow(_eglut->native_dpy, root, x, y, w, h,
- 0, visInfo->depth, InputOutput, visInfo->visual, mask, &attr);
- if (!xwin)
- _eglutFatal("failed to create a window");
-
- XFree(visInfo);
-
- /* set hints and properties */
- {
- XSizeHints sizehints;
- sizehints.x = x;
- sizehints.y = y;
- sizehints.width = w;
- sizehints.height = h;
- sizehints.flags = USSize | USPosition;
- XSetNormalHints(_eglut->native_dpy, xwin, &sizehints);
- XSetStandardProperties(_eglut->native_dpy, xwin,
- title, title, None, (char **) NULL, 0, &sizehints);
- }
-
- XMapWindow(_eglut->native_dpy, xwin);
-
- win->native.u.window = xwin;
- win->native.width = w;
- win->native.height = h;
-}
-
-void
-_eglutNativeFiniWindow(struct eglut_window *win)
-{
- XDestroyWindow(_eglut->native_dpy, win->native.u.window);
-}
-
-static int
-lookup_keysym(KeySym sym)
-{
- int special;
-
- switch (sym) {
- case XK_F1:
- special = EGLUT_KEY_F1;
- break;
- case XK_F2:
- special = EGLUT_KEY_F2;
- break;
- case XK_F3:
- special = EGLUT_KEY_F3;
- break;
- case XK_F4:
- special = EGLUT_KEY_F4;
- break;
- case XK_F5:
- special = EGLUT_KEY_F5;
- break;
- case XK_F6:
- special = EGLUT_KEY_F6;
- break;
- case XK_F7:
- special = EGLUT_KEY_F7;
- break;
- case XK_F8:
- special = EGLUT_KEY_F8;
- break;
- case XK_F9:
- special = EGLUT_KEY_F9;
- break;
- case XK_F10:
- special = EGLUT_KEY_F10;
- break;
- case XK_F11:
- special = EGLUT_KEY_F11;
- break;
- case XK_F12:
- special = EGLUT_KEY_F12;
- break;
- case XK_KP_Left:
- case XK_Left:
- special = EGLUT_KEY_LEFT;
- break;
- case XK_KP_Up:
- case XK_Up:
- special = EGLUT_KEY_UP;
- break;
- case XK_KP_Right:
- case XK_Right:
- special = EGLUT_KEY_RIGHT;
- break;
- case XK_KP_Down:
- case XK_Down:
- special = EGLUT_KEY_DOWN;
- break;
- default:
- special = -1;
- break;
- }
-
- return special;
-}
-
-static void
-next_event(struct eglut_window *win)
-{
- int redraw = 0;
- XEvent event;
-
- if (!XPending(_eglut->native_dpy)) {
- /* there is an idle callback */
- if (_eglut->idle_cb) {
- _eglut->idle_cb();
- return;
- }
-
- /* the app requests re-display */
- if (_eglut->redisplay)
- return;
- }
-
- /* block for next event */
- XNextEvent(_eglut->native_dpy, &event);
-
- switch (event.type) {
- case Expose:
- redraw = 1;
- break;
- case ConfigureNotify:
- win->native.width = event.xconfigure.width;
- win->native.height = event.xconfigure.height;
- if (win->reshape_cb)
- win->reshape_cb(win->native.width, win->native.height);
- break;
- case KeyPress:
- {
- char buffer[1];
- KeySym sym;
- int r;
-
- r = XLookupString(&event.xkey,
- buffer, sizeof(buffer), &sym, NULL);
- if (r && win->keyboard_cb) {
- win->keyboard_cb(buffer[0]);
- }
- else if (!r && win->special_cb) {
- r = lookup_keysym(sym);
- if (r >= 0)
- win->special_cb(r);
- }
- }
- redraw = 1;
- break;
- default:
- ; /*no-op*/
- }
-
- _eglut->redisplay = redraw;
-}
-
-void
-_eglutNativeEventLoop(void)
-{
- while (!_eglut->stop_loop) {
- struct eglut_window *win = _eglut->current;
-
- next_event(win);
-
- if (_eglut->redisplay) {
- _eglut->redisplay = 0;
-
- if (win->display_cb)
- win->display_cb();
- eglSwapBuffers(_eglut->dpy, win->surface);
- }
- }
-}
diff --git a/src/test/native/mesa-demos-patched/eglut/eglutint.h b/src/test/native/mesa-demos-patched/eglut/eglutint.h
deleted file mode 100644
index 449df28ed..000000000
--- a/src/test/native/mesa-demos-patched/eglut/eglutint.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2010 LunarG Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Chia-I Wu <[email protected]>
- */
-
-#ifndef _EGLUTINT_H_
-#define _EGLUTINT_H_
-
-#include "EGL/egl.h"
-#include "eglut.h"
-
-struct eglut_window {
- EGLConfig config;
- EGLContext context;
-
- /* initialized by native display */
- struct {
- union {
- EGLNativeWindowType window;
- EGLNativePixmapType pixmap;
- EGLSurface surface; /* pbuffer or screen surface */
- } u;
- int width, height;
- } native;
-
- EGLSurface surface;
-
- int index;
-
- EGLUTreshapeCB reshape_cb;
- EGLUTdisplayCB display_cb;
- EGLUTkeyboardCB keyboard_cb;
- EGLUTspecialCB special_cb;
-};
-
-struct eglut_state {
- int api_mask;
- int window_width, window_height;
- const char *display_name;
- int verbose;
- int init_time;
-
- EGLUTidleCB idle_cb;
-
- int num_windows;
-
- /* initialized by native display */
- EGLNativeDisplayType native_dpy;
- EGLint surface_type;
-
- EGLDisplay dpy;
- EGLint major, minor;
-
- struct eglut_window *current;
-
- int redisplay;
- int stop_loop;
-};
-
-extern struct eglut_state *_eglut;
-
-void
-_eglutFatal(char *format, ...);
-
-int
-_eglutNow(void);
-
-void
-_eglutNativeInitDisplay(void);
-
-void
-_eglutNativeFiniDisplay(void);
-
-void
-_eglutNativeInitWindow(struct eglut_window *win, const char *title,
- int x, int y, int w, int h);
-
-void
-_eglutNativeFiniWindow(struct eglut_window *win);
-
-void
-_eglutNativeEventLoop(void);
-
-#endif /* _EGLUTINT_H_ */
diff --git a/src/test/native/mesa-demos-patched/es2gears.c b/src/test/native/mesa-demos-patched/es2gears.c
deleted file mode 100644
index 10d3be04f..000000000
--- a/src/test/native/mesa-demos-patched/es2gears.c
+++ /dev/null
@@ -1,751 +0,0 @@
-/*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * Ported to GLES2.
- * Kristian Høgsberg <[email protected]>
- * May 3, 2010
- *
- * Improve GLES2 port:
- * * Refactor gear drawing.
- * * Use correct normals for surfaces.
- * * Improve shader.
- * * Use perspective projection transformation.
- * * Add FPS count.
- * * Add comments.
- * Alexandros Frantzis <[email protected]>
- * Jul 13, 2010
- */
-
-#define GL_GLEXT_PROTOTYPES
-#define EGL_EGLEXT_PROTOTYPES
-
-#define _GNU_SOURCE
-
-#include <math.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <GLES2/gl2.h>
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-#include "eglut.h"
-
-static int demo_start_duration = 5000; // ms
-
-#define STRIPS_PER_TOOTH 7
-#define VERTICES_PER_TOOTH 34
-#define GEAR_VERTEX_STRIDE 6
-
-/**
- * Struct describing the vertices in triangle strip
- */
-struct vertex_strip {
- /** The first vertex in the strip */
- GLint first;
- /** The number of consecutive vertices in the strip after the first */
- GLint count;
-};
-
-/* Each vertex consist of GEAR_VERTEX_STRIDE GLfloat attributes */
-typedef GLfloat GearVertex[GEAR_VERTEX_STRIDE];
-
-/**
- * Struct representing a gear.
- */
-struct gear {
- /** The array of vertices comprising the gear */
- GearVertex *vertices;
- /** The number of vertices comprising the gear */
- int nvertices;
- /** The array of triangle strips comprising the gear */
- struct vertex_strip *strips;
- /** The number of triangle strips comprising the gear */
- int nstrips;
- /** The Vertex Buffer Object holding the vertices in the graphics card */
- GLuint vbo;
-};
-
-/** The view rotation [x, y, z] */
-static GLfloat view_rot[3] = { 20.0, 30.0, 0.0 };
-/** The gears */
-static struct gear *gear1, *gear2, *gear3;
-/** The current gear rotation angle */
-static GLfloat angle = 0.0;
-/** The location of the shader uniforms */
-static GLuint ModelViewProjectionMatrix_location,
- NormalMatrix_location,
- LightSourcePosition_location,
- MaterialColor_location;
-/** The projection matrix */
-static GLfloat ProjectionMatrix[16];
-/** The direction of the directional light for the scene */
-static const GLfloat LightSourcePosition[4] = { 5.0, 5.0, 10.0, 1.0};
-
-/**
- * Fills a gear vertex.
- *
- * @param v the vertex to fill
- * @param x the x coordinate
- * @param y the y coordinate
- * @param z the z coortinate
- * @param n pointer to the normal table
- *
- * @return the operation error code
- */
-static GearVertex *
-vert(GearVertex *v, GLfloat x, GLfloat y, GLfloat z, GLfloat n[3])
-{
- v[0][0] = x;
- v[0][1] = y;
- v[0][2] = z;
- v[0][3] = n[0];
- v[0][4] = n[1];
- v[0][5] = n[2];
-
- return v + 1;
-}
-
-/**
- * Create a gear wheel.
- *
- * @param inner_radius radius of hole at center
- * @param outer_radius radius at center of teeth
- * @param width width of gear
- * @param teeth number of teeth
- * @param tooth_depth depth of tooth
- *
- * @return pointer to the constructed struct gear
- */
-static struct gear *
-create_gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width,
- GLint teeth, GLfloat tooth_depth)
-{
- GLfloat r0, r1, r2;
- GLfloat da;
- GearVertex *v;
- struct gear *gear;
- double s[5], c[5];
- GLfloat normal[3];
- int cur_strip = 0;
- int i;
-
- /* Allocate memory for the gear */
- gear = malloc(sizeof *gear);
- if (gear == NULL)
- return NULL;
-
- /* Calculate the radii used in the gear */
- r0 = inner_radius;
- r1 = outer_radius - tooth_depth / 2.0;
- r2 = outer_radius + tooth_depth / 2.0;
-
- da = 2.0 * M_PI / teeth / 4.0;
-
- /* Allocate memory for the triangle strip information */
- gear->nstrips = STRIPS_PER_TOOTH * teeth;
- gear->strips = calloc(gear->nstrips, sizeof (*gear->strips));
-
- /* Allocate memory for the vertices */
- gear->vertices = calloc(VERTICES_PER_TOOTH * teeth, sizeof(*gear->vertices));
- v = gear->vertices;
-
- for (i = 0; i < teeth; i++) {
- /* Calculate needed sin/cos for varius angles */
- sincos(i * 2.0 * M_PI / teeth, &s[0], &c[0]);
- sincos(i * 2.0 * M_PI / teeth + da, &s[1], &c[1]);
- sincos(i * 2.0 * M_PI / teeth + da * 2, &s[2], &c[2]);
- sincos(i * 2.0 * M_PI / teeth + da * 3, &s[3], &c[3]);
- sincos(i * 2.0 * M_PI / teeth + da * 4, &s[4], &c[4]);
-
- /* A set of macros for making the creation of the gears easier */
-#define GEAR_POINT(r, da) { (r) * c[(da)], (r) * s[(da)] }
-#define SET_NORMAL(x, y, z) do { \
- normal[0] = (x); normal[1] = (y); normal[2] = (z); \
-} while(0)
-
-#define GEAR_VERT(v, point, sign) vert((v), p[(point)].x, p[(point)].y, (sign) * width * 0.5, normal)
-
-#define START_STRIP do { \
- gear->strips[cur_strip].first = v - gear->vertices; \
-} while(0);
-
-#define END_STRIP do { \
- int _tmp = (v - gear->vertices); \
- gear->strips[cur_strip].count = _tmp - gear->strips[cur_strip].first; \
- cur_strip++; \
-} while (0)
-
-#define QUAD_WITH_NORMAL(p1, p2) do { \
- SET_NORMAL((p[(p1)].y - p[(p2)].y), -(p[(p1)].x - p[(p2)].x), 0); \
- v = GEAR_VERT(v, (p1), -1); \
- v = GEAR_VERT(v, (p1), 1); \
- v = GEAR_VERT(v, (p2), -1); \
- v = GEAR_VERT(v, (p2), 1); \
-} while(0)
-
- struct point {
- GLfloat x;
- GLfloat y;
- };
-
- /* Create the 7 points (only x,y coords) used to draw a tooth */
- struct point p[7] = {
- GEAR_POINT(r2, 1), // 0
- GEAR_POINT(r2, 2), // 1
- GEAR_POINT(r1, 0), // 2
- GEAR_POINT(r1, 3), // 3
- GEAR_POINT(r0, 0), // 4
- GEAR_POINT(r1, 4), // 5
- GEAR_POINT(r0, 4), // 6
- };
-
- /* Front face */
- START_STRIP;
- SET_NORMAL(0, 0, 1.0);
- v = GEAR_VERT(v, 0, +1);
- v = GEAR_VERT(v, 1, +1);
- v = GEAR_VERT(v, 2, +1);
- v = GEAR_VERT(v, 3, +1);
- v = GEAR_VERT(v, 4, +1);
- v = GEAR_VERT(v, 5, +1);
- v = GEAR_VERT(v, 6, +1);
- END_STRIP;
-
- /* Inner face */
- START_STRIP;
- QUAD_WITH_NORMAL(4, 6);
- END_STRIP;
-
- /* Back face */
- START_STRIP;
- SET_NORMAL(0, 0, -1.0);
- v = GEAR_VERT(v, 6, -1);
- v = GEAR_VERT(v, 5, -1);
- v = GEAR_VERT(v, 4, -1);
- v = GEAR_VERT(v, 3, -1);
- v = GEAR_VERT(v, 2, -1);
- v = GEAR_VERT(v, 1, -1);
- v = GEAR_VERT(v, 0, -1);
- END_STRIP;
-
- /* Outer face */
- START_STRIP;
- QUAD_WITH_NORMAL(0, 2);
- END_STRIP;
-
- START_STRIP;
- QUAD_WITH_NORMAL(1, 0);
- END_STRIP;
-
- START_STRIP;
- QUAD_WITH_NORMAL(3, 1);
- END_STRIP;
-
- START_STRIP;
- QUAD_WITH_NORMAL(5, 3);
- END_STRIP;
- }
-
- gear->nvertices = (v - gear->vertices);
-
- /* Store the vertices in a vertex buffer object (VBO) */
- glGenBuffers(1, &gear->vbo);
- glBindBuffer(GL_ARRAY_BUFFER, gear->vbo);
- glBufferData(GL_ARRAY_BUFFER, gear->nvertices * sizeof(GearVertex),
- gear->vertices, GL_STATIC_DRAW);
-
- return gear;
-}
-
-/**
- * Multiplies two 4x4 matrices.
- *
- * The result is stored in matrix m.
- *
- * @param m the first matrix to multiply
- * @param n the second matrix to multiply
- */
-static void
-multiply(GLfloat *m, const GLfloat *n)
-{
- GLfloat tmp[16];
- const GLfloat *row, *column;
- div_t d;
- int i, j;
-
- for (i = 0; i < 16; i++) {
- tmp[i] = 0;
- d = div(i, 4);
- row = n + d.quot * 4;
- column = m + d.rem;
- for (j = 0; j < 4; j++)
- tmp[i] += row[j] * column[j * 4];
- }
- memcpy(m, &tmp, sizeof tmp);
-}
-
-/**
- * Rotates a 4x4 matrix.
- *
- * @param[in,out] m the matrix to rotate
- * @param angle the angle to rotate
- * @param x the x component of the direction to rotate to
- * @param y the y component of the direction to rotate to
- * @param z the z component of the direction to rotate to
- */
-static void
-rotate(GLfloat *m, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
-{
- double s, c;
-
- sincos(angle, &s, &c);
- GLfloat r[16] = {
- x * x * (1 - c) + c, y * x * (1 - c) + z * s, x * z * (1 - c) - y * s, 0,
- x * y * (1 - c) - z * s, y * y * (1 - c) + c, y * z * (1 - c) + x * s, 0,
- x * z * (1 - c) + y * s, y * z * (1 - c) - x * s, z * z * (1 - c) + c, 0,
- 0, 0, 0, 1
- };
-
- multiply(m, r);
-}
-
-
-/**
- * Translates a 4x4 matrix.
- *
- * @param[in,out] m the matrix to translate
- * @param x the x component of the direction to translate to
- * @param y the y component of the direction to translate to
- * @param z the z component of the direction to translate to
- */
-static void
-translate(GLfloat *m, GLfloat x, GLfloat y, GLfloat z)
-{
- GLfloat t[16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1 };
-
- multiply(m, t);
-}
-
-/**
- * Creates an identity 4x4 matrix.
- *
- * @param m the matrix make an identity matrix
- */
-static void
-identity(GLfloat *m)
-{
- GLfloat t[16] = {
- 1.0, 0.0, 0.0, 0.0,
- 0.0, 1.0, 0.0, 0.0,
- 0.0, 0.0, 1.0, 0.0,
- 0.0, 0.0, 0.0, 1.0,
- };
-
- memcpy(m, t, sizeof(t));
-}
-
-/**
- * Transposes a 4x4 matrix.
- *
- * @param m the matrix to transpose
- */
-static void
-transpose(GLfloat *m)
-{
- GLfloat t[16] = {
- m[0], m[4], m[8], m[12],
- m[1], m[5], m[9], m[13],
- m[2], m[6], m[10], m[14],
- m[3], m[7], m[11], m[15]};
-
- memcpy(m, t, sizeof(t));
-}
-
-/**
- * Inverts a 4x4 matrix.
- *
- * This function can currently handle only pure translation-rotation matrices.
- * Read http://www.gamedev.net/community/forums/topic.asp?topic_id=425118
- * for an explanation.
- */
-static void
-invert(GLfloat *m)
-{
- GLfloat t[16];
- identity(t);
-
- // Extract and invert the translation part 't'. The inverse of a
- // translation matrix can be calculated by negating the translation
- // coordinates.
- t[12] = -m[12]; t[13] = -m[13]; t[14] = -m[14];
-
- // Invert the rotation part 'r'. The inverse of a rotation matrix is
- // equal to its transpose.
- m[12] = m[13] = m[14] = 0;
- transpose(m);
-
- // inv(m) = inv(r) * inv(t)
- multiply(m, t);
-}
-
-/**
- * Calculate a perspective projection transformation.
- *
- * @param m the matrix to save the transformation in
- * @param fovy the field of view in the y direction
- * @param aspect the view aspect ratio
- * @param zNear the near clipping plane
- * @param zFar the far clipping plane
- */
-void perspective(GLfloat *m, GLfloat fovy, GLfloat aspect, GLfloat zNear, GLfloat zFar)
-{
- GLfloat tmp[16];
- identity(tmp);
-
- double sine, cosine, cotangent, deltaZ;
- GLfloat radians = fovy / 2 * M_PI / 180;
-
- deltaZ = zFar - zNear;
- sincos(radians, &sine, &cosine);
-
- if ((deltaZ == 0) || (sine == 0) || (aspect == 0))
- return;
-
- cotangent = cosine / sine;
-
- tmp[0] = cotangent / aspect;
- tmp[5] = cotangent;
- tmp[10] = -(zFar + zNear) / deltaZ;
- tmp[11] = -1;
- tmp[14] = -2 * zNear * zFar / deltaZ;
- tmp[15] = 0;
-
- memcpy(m, tmp, sizeof(tmp));
-}
-
-/**
- * Draws a gear.
- *
- * @param gear the gear to draw
- * @param transform the current transformation matrix
- * @param x the x position to draw the gear at
- * @param y the y position to draw the gear at
- * @param angle the rotation angle of the gear
- * @param color the color of the gear
- */
-static void
-draw_gear(struct gear *gear, GLfloat *transform,
- GLfloat x, GLfloat y, GLfloat angle, const GLfloat color[4])
-{
- GLfloat model_view[16];
- GLfloat normal_matrix[16];
- GLfloat model_view_projection[16];
-
- /* Translate and rotate the gear */
- memcpy(model_view, transform, sizeof (model_view));
- translate(model_view, x, y, 0);
- rotate(model_view, 2 * M_PI * angle / 360.0, 0, 0, 1);
-
- /* Create and set the ModelViewProjectionMatrix */
- memcpy(model_view_projection, ProjectionMatrix, sizeof(model_view_projection));
- multiply(model_view_projection, model_view);
-
- glUniformMatrix4fv(ModelViewProjectionMatrix_location, 1, GL_FALSE,
- model_view_projection);
-
- /*
- * Create and set the NormalMatrix. It's the inverse transpose of the
- * ModelView matrix.
- */
- memcpy(normal_matrix, model_view, sizeof (normal_matrix));
- invert(normal_matrix);
- transpose(normal_matrix);
- glUniformMatrix4fv(NormalMatrix_location, 1, GL_FALSE, normal_matrix);
-
- /* Set the gear color */
- glUniform4fv(MaterialColor_location, 1, color);
-
- /* Set the vertex buffer object to use */
- glBindBuffer(GL_ARRAY_BUFFER, gear->vbo);
-
- /* Set up the position of the attributes in the vertex buffer object */
- glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE,
- 6 * sizeof(GLfloat), NULL);
- glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE,
- 6 * sizeof(GLfloat), (GLfloat *) 0 + 3);
-
- /* Enable the attributes */
- glEnableVertexAttribArray(0);
- glEnableVertexAttribArray(1);
-
- /* Draw the triangle strips that comprise the gear */
- int n;
- for (n = 0; n < gear->nstrips; n++)
- glDrawArrays(GL_TRIANGLE_STRIP, gear->strips[n].first, gear->strips[n].count);
-
- /* Disable the attributes */
- glDisableVertexAttribArray(1);
- glDisableVertexAttribArray(0);
-}
-
-/**
- * Draws the gears.
- */
-static void
-gears_draw(void)
-{
- const static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 };
- const static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 };
- const static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 };
- GLfloat transform[16];
- identity(transform);
-
- glClearColor(0.0, 0.0, 0.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- /* Translate and rotate the view */
- translate(transform, 0, 0, -20);
- rotate(transform, 2 * M_PI * view_rot[0] / 360.0, 1, 0, 0);
- rotate(transform, 2 * M_PI * view_rot[1] / 360.0, 0, 1, 0);
- rotate(transform, 2 * M_PI * view_rot[2] / 360.0, 0, 0, 1);
-
- /* Draw the gears */
- draw_gear(gear1, transform, -3.0, -2.0, angle, red);
- draw_gear(gear2, transform, 3.1, -2.0, -2 * angle - 9.0, green);
- draw_gear(gear3, transform, -3.1, 4.2, -2 * angle - 25.0, blue);
-}
-
-/**
- * Handles a new window size or exposure.
- *
- * @param width the window width
- * @param height the window height
- */
-static void
-gears_reshape(int width, int height)
-{
- /* Update the projection matrix */
- perspective(ProjectionMatrix, 60.0, width / (float)height, 1.0, 1024.0);
-
- /* Set the viewport */
- glViewport(0, 0, (GLint) width, (GLint) height);
-}
-
-/**
- * Handles special eglut events.
- *
- * @param special the event to handle.
- */
-static void
-gears_special(int special)
-{
- switch (special) {
- case EGLUT_KEY_LEFT:
- view_rot[1] += 5.0;
- break;
- case EGLUT_KEY_RIGHT:
- view_rot[1] -= 5.0;
- break;
- case EGLUT_KEY_UP:
- view_rot[0] += 5.0;
- break;
- case EGLUT_KEY_DOWN:
- view_rot[0] -= 5.0;
- break;
- }
-}
-
-static void
-gears_idle(void)
-{
- static int frames = 0;
- static double tRot0 = -1.0, tRate0 = -1.0;
- int tms = eglutGet(EGLUT_ELAPSED_TIME);
- double dt, t = tms / 1000.0;
-
-
- if(tms>demo_start_duration) {
- eglutStopMainLoop();
- return;
- }
-
- if (tRot0 < 0.0)
- tRot0 = t;
- dt = t - tRot0;
- tRot0 = t;
-
- /* advance rotation for next frame */
- angle += 70.0 * dt; /* 70 degrees per second */
- if (angle > 3600.0)
- angle -= 3600.0;
-
- eglutPostRedisplay();
- frames++;
-
- if (tRate0 < 0.0)
- tRate0 = t;
- if (t - tRate0 >= 5.0) {
- GLfloat seconds = t - tRate0;
- GLfloat fps = frames / seconds;
- printf("%d frames in %3.1f seconds = %6.3f FPS\n", frames, seconds,
- fps);
- tRate0 = t;
- frames = 0;
- }
-}
-
-static const char vertex_shader[] =
-"attribute vec3 position;\n"
-"attribute vec3 normal;\n"
-"\n"
-"uniform mat4 ModelViewProjectionMatrix;\n"
-"uniform mat4 NormalMatrix;\n"
-"uniform vec4 LightSourcePosition;\n"
-"uniform vec4 MaterialColor;\n"
-"\n"
-"varying vec4 Color;\n"
-"\n"
-"void main(void)\n"
-"{\n"
-" // Transform the normal to eye coordinates\n"
-" vec3 N = normalize(vec3(NormalMatrix * vec4(normal, 1.0)));\n"
-"\n"
-" // The LightSourcePosition is actually its direction for directional light\n"
-" vec3 L = normalize(LightSourcePosition.xyz);\n"
-"\n"
-" // Multiply the diffuse value by the vertex color (which is fixed in this case)\n"
-" // to get the actual color that we will use to draw this vertex with\n"
-" float diffuse = max(dot(N, L), 0.0);\n"
-" Color = diffuse * MaterialColor;\n"
-"\n"
-" // Transform the position to clip coordinates\n"
-" gl_Position = ModelViewProjectionMatrix * vec4(position, 1.0);\n"
-"}";
-
-static const char fragment_shader[] =
-"precision mediump float;\n"
-"varying vec4 Color;\n"
-"\n"
-"void main(void)\n"
-"{\n"
-" gl_FragColor = Color;\n"
-"}";
-
-static void
-gears_init(void)
-{
- GLuint v, f, program;
- const char *p;
- char msg[512];
-
- glEnable(GL_CULL_FACE);
- glEnable(GL_DEPTH_TEST);
-
- /* Compile the vertex shader */
- p = vertex_shader;
- v = glCreateShader(GL_VERTEX_SHADER);
- glShaderSource(v, 1, &p, NULL);
- glCompileShader(v);
- glGetShaderInfoLog(v, sizeof msg, NULL, msg);
- printf("vertex shader info: %s\n", msg);
-
- /* Compile the fragment shader */
- p = fragment_shader;
- f = glCreateShader(GL_FRAGMENT_SHADER);
- glShaderSource(f, 1, &p, NULL);
- glCompileShader(f);
- glGetShaderInfoLog(f, sizeof msg, NULL, msg);
- printf("fragment shader info: %s\n", msg);
-
- /* Create and link the shader program */
- program = glCreateProgram();
- glAttachShader(program, v);
- glAttachShader(program, f);
- glBindAttribLocation(program, 0, "position");
- glBindAttribLocation(program, 1, "normal");
-
- glLinkProgram(program);
- glGetProgramInfoLog(program, sizeof msg, NULL, msg);
- printf("info: %s\n", msg);
-
- /* Enable the shaders */
- glUseProgram(program);
-
- /* Get the locations of the uniforms so we can access them */
- ModelViewProjectionMatrix_location = glGetUniformLocation(program, "ModelViewProjectionMatrix");
- NormalMatrix_location = glGetUniformLocation(program, "NormalMatrix");
- LightSourcePosition_location = glGetUniformLocation(program, "LightSourcePosition");
- MaterialColor_location = glGetUniformLocation(program, "MaterialColor");
-
- /* Set the LightSourcePosition uniform which is constant throught the program */
- glUniform4fv(LightSourcePosition_location, 1, LightSourcePosition);
-
- /* make the gears */
- gear1 = create_gear(1.0, 4.0, 1.0, 20, 0.7);
- gear2 = create_gear(0.5, 2.0, 2.0, 10, 0.7);
- gear3 = create_gear(1.3, 2.0, 0.5, 10, 0.7);
-}
-
-int
-main(int argc, char *argv[])
-{
- int demo_loops = 1;
- int i;
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-time") == 0) {
- demo_start_duration = atoi(argv[++i]);
- } else if (strcmp(argv[i], "-loops") == 0) {
- demo_loops = atoi(argv[++i]);
- }
- }
- fprintf(stderr, "duration: %d\n", demo_start_duration);
- fprintf(stderr, "loops: %d\n", demo_loops);
-
- for(i=0; i<demo_loops; i++) {
- fprintf(stderr, "Loop: %d/%d\n", i, demo_loops);
-
- /* Initialize the window */
- eglutInitWindowSize(300, 300);
- eglutInitAPIMask(EGLUT_OPENGL_ES2_BIT);
- eglutInit(argc, argv);
-
- int winid = eglutCreateWindow("es2gears");
-
- /* Set up eglut callback functions */
- eglutIdleFunc(gears_idle);
- eglutReshapeFunc(gears_reshape);
- eglutDisplayFunc(gears_draw);
- eglutSpecialFunc(gears_special);
-
- /* Initialize the gears */
- gears_init();
-
- eglutMainLoop();
-
- eglutDestroyWindow(winid);
- eglutTerminate();
- }
-
- return 0;
-}
diff --git a/src/test/native/mesa-demos-patched/es2redsquare.c b/src/test/native/mesa-demos-patched/es2redsquare.c
deleted file mode 100644
index 886bdd3d2..000000000
--- a/src/test/native/mesa-demos-patched/es2redsquare.c
+++ /dev/null
@@ -1,611 +0,0 @@
-/*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * Ported to GLES2.
- * Kristian Høgsberg <[email protected]>
- * May 3, 2010
- *
- * Improve GLES2 port:
- * * Refactor gear drawing.
- * * Use correct normals for surfaces.
- * * Improve shader.
- * * Use perspective projection transformation.
- * * Add FPS count.
- * * Add comments.
- * Alexandros Frantzis <[email protected]>
- * Jul 13, 2010
- */
-
-#define GL_GLEXT_PROTOTYPES
-#define EGL_EGLEXT_PROTOTYPES
-
-#define _GNU_SOURCE
-
-#include <math.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <assert.h>
-#include <GLES2/gl2.h>
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-#include "eglut.h"
-
-static int demo_start_duration = 5000; // ms
-
-#define OBJECT_VERTEX_STRIDE 3
-#define OBJECT_COLOR_STRIDE 4
-
-typedef GLfloat ObjectVertex[OBJECT_VERTEX_STRIDE];
-typedef GLfloat ObjectColor[OBJECT_COLOR_STRIDE];
-
-/**
- * Struct representing an object.
- */
-struct object {
- ObjectVertex *vertices;
- int nvertices;
- ObjectColor *colors;
- int ncolors;
-
- GLuint vbo;
- GLuint cbo;
-};
-
-static struct object *obj;
-/** The location of the shader uniforms */
-static GLuint ModelViewProjectionMatrix_location;
-/** The projection matrix */
-static GLfloat ProjectionMatrix[16];
-
-GLuint vertextCode=0, fragmentCode=0;
-GLuint program = 0;
-
-/**
- * Fills an object vertex.
- *
- * @param v the vertex to fill
- * @param x the x coordinate
- * @param y the y coordinate
- * @param z the z coortinate
- *
- * @return the operation error code
- */
-static ObjectVertex *
-vert(ObjectVertex *v, GLfloat x, GLfloat y, GLfloat z)
-{
- v[0][0] = x;
- v[0][1] = y;
- v[0][2] = z;
-
- return v + 1;
-}
-
-static ObjectColor *
-color(ObjectColor *v, GLfloat r, GLfloat g, GLfloat b, GLfloat a)
-{
- v[0][0] = r;
- v[0][1] = g;
- v[0][2] = b;
- v[0][3] = a;
-
- return v + 1;
-}
-
-static struct object *
-create_object()
-{
- ObjectVertex *v;
- ObjectColor *c;
- struct object *object;
-
- /* Allocate memory for the object */
- object = malloc(sizeof *object);
- if (object == NULL)
- return NULL;
-
- /* Allocate memory for the vertices */
- object->vertices = calloc(4, sizeof(*object->vertices));
- v = object->vertices;
- v = vert(v, -2, 2, 0);
- v = vert(v, 2, 2, 0);
- v = vert(v, -2, -2, 0);
- v = vert(v, 2, -2, 0);
- object->nvertices = (v - object->vertices);
- assert(4 == object->nvertices);
-
- object->colors = calloc(4, sizeof(*object->colors));
- c = object->colors;
- c = color(c, 1.0, 0.0, 0.0, 1.0);
- c = color(c, 0.0, 0.0, 1.0, 1.0);
- c = color(c, 1.0, 0.0, 0.0, 1.0);
- c = color(c, 1.0, 0.0, 0.0, 1.0);
- object->ncolors = (c - object->colors);
- assert(4 == object->ncolors);
-
- /* Store the vertices in a vertex buffer object (VBO) */
- glGenBuffers(1, &object->vbo);
- glBindBuffer(GL_ARRAY_BUFFER, object->vbo);
- glBufferData(GL_ARRAY_BUFFER, object->nvertices * sizeof(ObjectVertex),
- object->vertices, GL_STATIC_DRAW);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
-
- glGenBuffers(1, &object->cbo);
- glBindBuffer(GL_ARRAY_BUFFER, object->cbo);
- glBufferData(GL_ARRAY_BUFFER, object->ncolors * sizeof(ObjectColor),
- object->colors, GL_STATIC_DRAW);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
-
- return object;
-}
-
-static void destroy_object(struct object *object)
-{
- glDeleteBuffers(1, &object->cbo);
- glDeleteBuffers(1, &object->vbo);
- free(object->colors);
- free(object->vertices);
- free(object);
-}
-
-/**
- * Multiplies two 4x4 matrices.
- *
- * The result is stored in matrix m.
- *
- * @param m the first matrix to multiply
- * @param n the second matrix to multiply
- */
-static void
-multiply(GLfloat *m, const GLfloat *n)
-{
- GLfloat tmp[16];
- const GLfloat *row, *column;
- div_t d;
- int i, j;
-
- for (i = 0; i < 16; i++) {
- tmp[i] = 0;
- d = div(i, 4);
- row = n + d.quot * 4;
- column = m + d.rem;
- for (j = 0; j < 4; j++)
- tmp[i] += row[j] * column[j * 4];
- }
- memcpy(m, &tmp, sizeof tmp);
-}
-
-/**
- * Rotates a 4x4 matrix.
- *
- * @param[in,out] m the matrix to rotate
- * @param angle the angle to rotate
- * @param x the x component of the direction to rotate to
- * @param y the y component of the direction to rotate to
- * @param z the z component of the direction to rotate to
- */
-static void
-rotate(GLfloat *m, GLfloat _angle, GLfloat x, GLfloat y, GLfloat z)
-{
- double s, c;
-
- sincos(_angle, &s, &c);
- GLfloat r[16] = {
- x * x * (1 - c) + c, y * x * (1 - c) + z * s, x * z * (1 - c) - y * s, 0,
- x * y * (1 - c) - z * s, y * y * (1 - c) + c, y * z * (1 - c) + x * s, 0,
- x * z * (1 - c) + y * s, y * z * (1 - c) - x * s, z * z * (1 - c) + c, 0,
- 0, 0, 0, 1
- };
-
- multiply(m, r);
-}
-
-
-/**
- * Translates a 4x4 matrix.
- *
- * @param[in,out] m the matrix to translate
- * @param x the x component of the direction to translate to
- * @param y the y component of the direction to translate to
- * @param z the z component of the direction to translate to
- */
-static void
-translate(GLfloat *m, GLfloat x, GLfloat y, GLfloat z)
-{
- GLfloat t[16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1 };
-
- multiply(m, t);
-}
-
-/**
- * Creates an identity 4x4 matrix.
- *
- * @param m the matrix make an identity matrix
- */
-static void
-identity(GLfloat *m)
-{
- GLfloat t[16] = {
- 1.0, 0.0, 0.0, 0.0,
- 0.0, 1.0, 0.0, 0.0,
- 0.0, 0.0, 1.0, 0.0,
- 0.0, 0.0, 0.0, 1.0,
- };
-
- memcpy(m, t, sizeof(t));
-}
-
-/**
- * Transposes a 4x4 matrix.
- *
- * @param m the matrix to transpose
- */
-static void
-transpose(GLfloat *m)
-{
- GLfloat t[16] = {
- m[0], m[4], m[8], m[12],
- m[1], m[5], m[9], m[13],
- m[2], m[6], m[10], m[14],
- m[3], m[7], m[11], m[15]};
-
- memcpy(m, t, sizeof(t));
-}
-
-/**
- * Inverts a 4x4 matrix.
- *
- * This function can currently handle only pure translation-rotation matrices.
- * Read http://www.gamedev.net/community/forums/topic.asp?topic_id=425118
- * for an explanation.
- */
-static void
-invert(GLfloat *m)
-{
- GLfloat t[16];
- identity(t);
-
- // Extract and invert the translation part 't'. The inverse of a
- // translation matrix can be calculated by negating the translation
- // coordinates.
- t[12] = -m[12]; t[13] = -m[13]; t[14] = -m[14];
-
- // Invert the rotation part 'r'. The inverse of a rotation matrix is
- // equal to its transpose.
- m[12] = m[13] = m[14] = 0;
- transpose(m);
-
- // inv(m) = inv(r) * inv(t)
- multiply(m, t);
-}
-
-/**
- * Calculate a perspective projection transformation.
- *
- * @param m the matrix to save the transformation in
- * @param fovy the field of view in the y direction
- * @param aspect the view aspect ratio
- * @param zNear the near clipping plane
- * @param zFar the far clipping plane
- */
-void perspective(GLfloat *m, GLfloat fovy, GLfloat aspect, GLfloat zNear, GLfloat zFar)
-{
- GLfloat tmp[16];
- identity(tmp);
-
- double sine, cosine, cotangent, deltaZ;
- GLfloat radians = fovy / 2 * M_PI / 180;
-
- deltaZ = zFar - zNear;
- sincos(radians, &sine, &cosine);
-
- if ((deltaZ == 0) || (sine == 0) || (aspect == 0))
- return;
-
- cotangent = cosine / sine;
-
- tmp[0] = cotangent / aspect;
- tmp[5] = cotangent;
- tmp[10] = -(zFar + zNear) / deltaZ;
- tmp[11] = -1;
- tmp[14] = -2 * zNear * zFar / deltaZ;
- tmp[15] = 0;
-
- memcpy(m, tmp, sizeof(tmp));
-}
-
-/**
- * Draws
- *
- * @param transform the current transformation matrix
- * @param x the x position to draw the gear at
- * @param y the y position to draw the gear at
- * @param _angle the rotation angle
- */
-static void
-draw_object(GLfloat *transform)
-{
- GLfloat model_view[16];
- GLfloat model_view_projection[16];
- int tms = eglutGet(EGLUT_ELAPSED_TIME);
- GLfloat angle = ( tms * 360.0 ) / 4000.0;
- GLfloat grad = 2 * M_PI * angle / 360.0;
-
- // fprintf(stderr, "td %d, angle %f\n", tms, angle);
-
- /* Translate and rotate the gear */
- memcpy(model_view, transform, sizeof (model_view));
- translate(model_view, 0, 0, -10);
- rotate(model_view, grad, 0.0, 0.0, 1.0);
- rotate(model_view, grad, 0.0, 1.0, 0.0);
-
- /* Create and set the ModelViewProjectionMatrix */
- memcpy(model_view_projection, ProjectionMatrix, sizeof(model_view_projection));
- multiply(model_view_projection, model_view);
-
- glUniformMatrix4fv(ModelViewProjectionMatrix_location, 1, GL_FALSE,
- model_view_projection);
-
- /* Set the vertex buffer object to use */
- glBindBuffer(GL_ARRAY_BUFFER, obj->vbo);
- glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE,
- 3 * sizeof(GLfloat), NULL);
- glEnableVertexAttribArray(0);
-
- glBindBuffer(GL_ARRAY_BUFFER, obj->cbo);
- glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE,
- 4 * sizeof(GLfloat), NULL);
- glEnableVertexAttribArray(1);
-
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-
- /* Disable the attributes */
- glDisableVertexAttribArray(1);
- glDisableVertexAttribArray(0);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
-}
-
-/**
- * Draws the object.
- */
-static void
-object_draw(void)
-{
- const static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 };
- const static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 };
- const static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 };
- GLfloat transform[16];
- identity(transform);
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glUseProgram(program);
-
- /* Draw the object */
- draw_object(transform);
-
- glUseProgram(0);
-}
-
-/**
- * Handles a new window size or exposure.
- *
- * @param width the window width
- * @param height the window height
- */
-static void
-object_reshape(int width, int height)
-{
- /* Update the projection matrix */
- perspective(ProjectionMatrix, 45.0, (float)width / (float)height, 1.0, 100.0);
-
- /* Set the viewport */
- glViewport(0, 0, (GLint) width, (GLint) height);
-
- glClearColor(0.0, 0.0, 0.0, 1.0);
-}
-
-/**
- * Handles special eglut events.
- *
- * @param special the event to handle.
- */
-static void
-object_special(int special)
-{
- switch (special) {
- case EGLUT_KEY_LEFT:
- break;
- case EGLUT_KEY_RIGHT:
- break;
- case EGLUT_KEY_UP:
- break;
- case EGLUT_KEY_DOWN:
- break;
- }
-}
-
-static void
-object_idle(void)
-{
- static int frames = 0;
- static double tRate0 = -1.0;
- int tms = eglutGet(EGLUT_ELAPSED_TIME);
- double t = tms / 1000.0;
-
- if(tms>demo_start_duration) {
- eglutStopMainLoop();
- return;
- }
-
- eglutPostRedisplay();
- frames++;
-
- if (tRate0 < 0.0)
- tRate0 = t;
- if (t - tRate0 >= 1.0) {
- GLfloat seconds = t - tRate0;
- GLfloat fps = frames / seconds;
- printf("%d frames in %3.1f seconds = %6.3f FPS\n", frames, seconds,
- fps);
- tRate0 = t;
- frames = 0;
- }
-}
-
-static const char vertex_shader[] =
- " #ifdef GL_ES\n"
- " precision mediump float;\n"
- " precision mediump int;\n"
- "#endif\n"
- "\n"
- "uniform mat4 mgl_PMVMatrix;\n"
- "attribute vec3 mgl_Vertex;\n"
- "attribute vec4 mgl_Color;\n"
- "varying vec4 frontColor;\n"
- "\n"
- "void main(void)\n"
- "{\n"
- " frontColor=mgl_Color;\n"
- " gl_Position = mgl_PMVMatrix * vec4(mgl_Vertex, 1.0);\n"
- "}\n" ;
-
-static const char fragment_shader[] =
- " #ifdef GL_ES\n"
- " precision mediump float;\n"
- " precision mediump int;\n"
- "#endif\n"
- "\n"
- "varying vec4 frontColor;\n"
- "\n"
- "void main (void)\n"
- "{\n"
- " gl_FragColor = frontColor;\n"
- "}\n" ;
-
-
-static void
-object_init(void)
-{
- const char *p;
- char msg[512];
-
- glEnable(GL_DEPTH_TEST);
-
- /* Compile the vertex shader */
- p = vertex_shader;
- vertextCode = glCreateShader(GL_VERTEX_SHADER);
- glShaderSource(vertextCode, 1, &p, NULL);
- glCompileShader(vertextCode);
- glGetShaderInfoLog(vertextCode, sizeof msg, NULL, msg);
- printf("vertex shader info: %s\n", msg);
-
- /* Compile the fragment shader */
- p = fragment_shader;
- fragmentCode = glCreateShader(GL_FRAGMENT_SHADER);
- glShaderSource(fragmentCode, 1, &p, NULL);
- glCompileShader(fragmentCode);
- glGetShaderInfoLog(fragmentCode, sizeof msg, NULL, msg);
- printf("fragment shader info: %s\n", msg);
-
- /* Create and link the shader program */
- program = glCreateProgram();
- glAttachShader(program, vertextCode);
- glAttachShader(program, fragmentCode);
- glBindAttribLocation(program, 0, "mgl_Vertex");
- glBindAttribLocation(program, 1, "mgl_Color");
-
- glLinkProgram(program);
- glGetProgramInfoLog(program, sizeof msg, NULL, msg);
- printf("info: %s\n", msg);
-
- /* Enable the shaders */
- glUseProgram(program);
-
- /* Get the locations of the uniforms so we can access them */
- ModelViewProjectionMatrix_location = glGetUniformLocation(program, "mgl_PMVMatrix");
-
- /* make the object */
- obj = create_object();
-
- glUseProgram(0);
- // eglutSwapInterval(1);
-}
-
-static void
-object_release(void)
-{
- destroy_object(obj);
- obj = NULL;
-
- glDetachShader(program, vertextCode);
- glDeleteShader(vertextCode);
- glDetachShader(program, fragmentCode);
- glDeleteShader(fragmentCode);
- glDeleteProgram(program);
-}
-
-int
-main(int argc, char *argv[])
-{
- int demo_loops = 1;
- int i;
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-time") == 0) {
- demo_start_duration = atoi(argv[++i]);
- } else if (strcmp(argv[i], "-loops") == 0) {
- demo_loops = atoi(argv[++i]);
- }
- }
- fprintf(stderr, "duration: %d\n", demo_start_duration);
- fprintf(stderr, "loops: %d\n", demo_loops);
-
- for(i=0; i<demo_loops; i++) {
- fprintf(stderr, "Loop: %d/%d\n", i, demo_loops);
-
- /* Initialize the window */
- eglutInitWindowSize(512, 512);
- eglutInitAPIMask(EGLUT_OPENGL_ES2_BIT);
- eglutInit(argc, argv);
-
- int winid = eglutCreateWindow("es2object");
-
- /* Set up eglut callback functions */
- eglutIdleFunc(object_idle);
- eglutReshapeFunc(object_reshape);
- eglutDisplayFunc(object_draw);
- eglutSpecialFunc(object_special);
-
- /* Initialize the object */
- object_init();
-
- eglutMainLoop();
-
- object_release();
-
- eglutDestroyWindow(winid);
- eglutTerminate();
- }
-
- return 0;
-}
diff --git a/src/test/native/mesa-demos-patched/loop.sh b/src/test/native/mesa-demos-patched/loop.sh
deleted file mode 100644
index 747957cff..000000000
--- a/src/test/native/mesa-demos-patched/loop.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#! /bin/sh
-
-#./es2gears -loops 500 -time 100
-./es2redsquare -loops 500 -time 100
-
diff --git a/src/test/native/mesa-demos-patched/make.sh b/src/test/native/mesa-demos-patched/make.sh
deleted file mode 100644
index a7926f560..000000000
--- a/src/test/native/mesa-demos-patched/make.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-
-THISDIR=`pwd`
-
-#eglut/eglut_x11.c \
-#eglut/eglut_screen.c \
-
-#DEMO_C=es2gears.c
-#DEMO_C=es2redsquare.c
-DEMO_C=$1
-
-gcc -I$THISDIR -I$THISDIR/eglut -o `basename $DEMO_C .c` \
-eglut/eglut.c \
-eglut/eglut_x11.c \
-$DEMO_C \
--lX11 \
--lEGL \
--lGLESv2 \
diff --git a/src/test/native/mesa-demos-patched/shell_loop.sh b/src/test/native/mesa-demos-patched/shell_loop.sh
deleted file mode 100644
index c95d04b7e..000000000
--- a/src/test/native/mesa-demos-patched/shell_loop.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#! /bin/sh
-
-let i=0
-
-while true ; do
- let i=$i+1
- echo TEST RUN $i
- #./es2gears -loops 1 -time 100
- ./es2redsquare -loops 1 -time 100
-done
-