From: José Fonseca Date: Sun, 16 Oct 2011 15:55:38 +0000 (+0100) Subject: Start compiling apps for regression testing. X-Git-Url: https://git.cworth.org/git?p=apitrace-tests;a=commitdiff_plain;h=1902daf4c77939649b15ad49cdecd475c33264c0 Start compiling apps for regression testing. Vanilla mesa demos and other apps don't really meet the requirements given they are interactive. --- diff --git a/.gitignore b/.gitignore index e337c86..7c2ddbe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ .*.sw? *.pyc +CMakeCache.txt +CMakeFiles +Makefile +cmake_install.cmake results diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..32c3029 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,55 @@ +cmake_minimum_required (VERSION 2.8) + +project (apitrace-tests) + +find_package (OpenGL REQUIRED) +find_package (GLUT) + +find_library (GLEW_glew_LIBRARY GLEW + /usr/lib +) + +find_path (GLEW_INCLUDE_DIR GL/glew.h + /usr/include/GL +) + +if (UNIX) + link_libraries(m) +endif (UNIX) + +if (WIN32) + # Nobody likes to include windows.h: + # - Microsoft's GL/gl.h header depends on windows.h but doesn't include it; + # - GLEW temporarily defines the necessary defines but undefines them later + # - certain GLUT distributions don't include it; + # - most of our programs are meant to be portable so don't include it. + # + # We could try to replicate the windows.h definitions required by + # GL/gl.h, but the build time savings don't compensate the constant + # headaches that brings, so instead we force windows.h to be included + # on every file. + if (MSVC) + add_definitions (-FIwindows.h) + else (MSVC) + add_definitions (--include windows.h) + endif (MSVC) + + # Don't define min/max macros + add_definitions (-DNOMINMAX) + + # MSVC & MinGW only define & use APIENTRY + add_definitions (-DGLAPIENTRY=__stdcall) +endif () + +if (MSVC) + # Enable math constants defines + add_definitions (-D_USE_MATH_DEFINES) + + # Silence several MSVC pedantic warnings + add_definitions (-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS) + add_definitions (-D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS) + add_definitions (-wd4244) # conversion' conversion from 'type1' to 'type2', possible loss of data +endif () + +add_subdirectory (apps) + diff --git a/apps/.gitignore b/apps/.gitignore new file mode 100644 index 0000000..3ee985b --- /dev/null +++ b/apps/.gitignore @@ -0,0 +1 @@ +*.trace diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt new file mode 100644 index 0000000..895ace9 --- /dev/null +++ b/apps/CMakeLists.txt @@ -0,0 +1,3 @@ +if (OPENGL_FOUND) + add_subdirectory (gl) +endif () diff --git a/apps/gl/.gitignore b/apps/gl/.gitignore new file mode 100644 index 0000000..0c42c31 --- /dev/null +++ b/apps/gl/.gitignore @@ -0,0 +1 @@ +tri diff --git a/apps/gl/CMakeLists.txt b/apps/gl/CMakeLists.txt new file mode 100644 index 0000000..a6be3d0 --- /dev/null +++ b/apps/gl/CMakeLists.txt @@ -0,0 +1,24 @@ +include_directories ( + ${OPENGL_INCLUDE_PATH} + ${GLUT_INCLUDE_DIR} + ${GLEW_INCLUDE_DIR} +) + +link_libraries ( + ${GLUT_glut_LIBRARY} + ${GLEW_glew_LIBRARY} + ${OPENGL_glu_LIBRARY} + ${OPENGL_gl_LIBRARY} +) + +set (subdir gl) + +set (targets + tri +) + +foreach (target ${targets}) + add_executable (${subdir}_${target} ${target}.c) + set_target_properties (${subdir}_${target} PROPERTIES OUTPUT_NAME ${target}) + install (TARGETS ${subdir}_${target} DESTINATION ${subdir}) +endforeach (target) diff --git a/apps/gl/tri.c b/apps/gl/tri.c new file mode 100644 index 0000000..005c227 --- /dev/null +++ b/apps/gl/tri.c @@ -0,0 +1,136 @@ +/* + * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that (i) the above copyright notices and this permission notice appear in + * all copies of the software and related documentation, and (ii) the name of + * Silicon Graphics may not be used in any advertising or + * publicity relating to the software without the specific, prior written + * permission of Silicon Graphics. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF + * ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR + * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, + * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + + +#ifdef _WIN32 +#include +#endif + +#include +#include +#include + +#ifdef __APPLE__ +# include +#else +# include +#endif + + +#define CI_OFFSET_1 16 +#define CI_OFFSET_2 32 + + +static GLboolean doubleBuffer = GL_TRUE; +static int win; + +static void Init(void) +{ + fprintf(stdout, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); + fprintf(stdout, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); + fprintf(stdout, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); + fflush(stdout); + + glClearColor(0.3, 0.1, 0.3, 0.0); +} + +static void Reshape(int width, int height) +{ + + glViewport(0, 0, (GLint)width, (GLint)height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); + glMatrixMode(GL_MODELVIEW); +} + +static void Draw(void) +{ + glClear(GL_COLOR_BUFFER_BIT); + + glBegin(GL_TRIANGLES); + glColor3f(.8,0,0); + glVertex3f(-0.9, -0.9, -30.0); + glColor3f(0,.9,0); + glVertex3f( 0.9, -0.9, -30.0); + glColor3f(0,0,.7); + glVertex3f( 0.0, 0.9, -30.0); + glEnd(); + + glFlush(); + + if (doubleBuffer) { + glutSwapBuffers(); + } + + glutDestroyWindow(win); +} + +static GLenum Args(int argc, char **argv) +{ + GLint i; + + for (i = 1; i < argc; i++) { + if (strcmp(argv[i], "-sb") == 0) { + doubleBuffer = GL_FALSE; + } else if (strcmp(argv[i], "-db") == 0) { + doubleBuffer = GL_TRUE; + } else { + fprintf(stderr, "%s (Bad option).\n", argv[i]); + return GL_FALSE; + } + } + return GL_TRUE; +} + +int main(int argc, char **argv) +{ + GLenum type; + + glutInit(&argc, argv); + + if (Args(argc, argv) == GL_FALSE) { + exit(1); + } + + glutInitWindowPosition(0, 0); + glutInitWindowSize( 250, 250); + + type = GLUT_RGB | GLUT_ALPHA; + type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; + glutInitDisplayMode(type); + + win = glutCreateWindow(*argv); + if (!win) { + exit(1); + } + + Init(); + + glutReshapeFunc(Reshape); + glutDisplayFunc(Draw); + glutMainLoop(); + return 0; +}