diff options
author | Sven Gothel <[email protected]> | 2012-03-17 21:18:18 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-03-17 21:18:18 +0100 |
commit | b048c2458b53eb012d15e21dde9e8ec0b1406d0b (patch) | |
tree | 52998b76cde5cab0479f5a002157af9fbfcc6a5e /src/test/native/mesa-demos-patched | |
parent | a40e22a58e0c71a95f11b7c7e83247fbd4a4d94f (diff) |
move src/test/native -> src/test-native - allowing better exclusion for archive scripts
Diffstat (limited to 'src/test/native/mesa-demos-patched')
-rw-r--r-- | src/test/native/mesa-demos-patched/EGL/egl.h | 329 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/EGL/eglext.h | 398 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/EGL/eglplatform.h | 132 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/eglut/eglut.c | 400 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/eglut/eglut.h | 96 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/eglut/eglut_screen.c | 180 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/eglut/eglut_x11.c | 252 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/eglut/eglutint.h | 104 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/es2gears.c | 751 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/es2redsquare.c | 611 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/loop.sh | 5 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/make.sh | 17 | ||||
-rw-r--r-- | src/test/native/mesa-demos-patched/shell_loop.sh | 11 |
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 - |