diff options
author | Jerome Glisse <jglisse@redhat.com> | 2012-12-12 11:26:56 -0500 |
---|---|---|
committer | Jerome Glisse <jglisse@redhat.com> | 2012-12-12 11:21:19 -0500 |
commit | b1a0fd819df78a9d1ba0f1f83a07645ab1edbfa3 (patch) | |
tree | 6a18df2b6debee4257c27cf4de9211b3739e9a71 | |
parent | 7bbb9550e4f3a784c68e36b0a813112ab3750740 (diff) |
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
-rw-r--r-- | Makefile | 2 | ||||
-rwxr-xr-x | analyze.sh | 2 | ||||
-rw-r--r-- | glclear-depth3.c | 163 | ||||
-rw-r--r-- | gltri.c | 132 |
4 files changed, 297 insertions, 2 deletions
@@ -3,7 +3,7 @@ CFLAGS = -I . -g -O0 -Wall -std=c99 -lGL -lGLU -lm -D_BSD_SOURCE TARGETS = amd-gpu-name glgears glgears-box glgears-box-cstrealloc \ gltransformfeedback glclear-depth glgears-box-msaa glbigshader \ - glgears-box2 glclear-depth2 glquery + glgears-box2 glclear-depth2 glclear-depth3 glquery gltri all: $(TARGETS) @@ -1,4 +1,4 @@ #!/bin/sh for i in `ls hd*txt` ; do - ~/git/rdb/rdb_analyze $i 2> aa$i + ~/code/rdb/rdb_analyze $i 2> aa$i done diff --git a/glclear-depth3.c b/glclear-depth3.c new file mode 100644 index 0000000..967a94f --- /dev/null +++ b/glclear-depth3.c @@ -0,0 +1,163 @@ +/* + * Copyright (C) 2012 Red Hat, Inc. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * author: Jerome Glisse + */ +#define MAXFRAME 5 +#define PFINISH 1 +#define MAX_PARTICLES 256 + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> +#define GL_GLEXT_PROTOTYPES +#include <GL/glew.h> +#include <GL/glut.h> + +static GLuint win_width = 1024; +static GLuint win_height = 1024; + +void vsimple_probe(void) +{ + GLfloat *pixels = malloc(256*256*sizeof(float)); + glReadPixels(0, 0, 256, 256, GL_DEPTH_COMPONENT, GL_FLOAT, pixels); + fprintf(stderr, "probed %f\n", pixels[100]); + free(pixels); +} + +static void draw(void) +{ +#if PFINISH + fprintf(stderr, "EE FRAME -----------------------------------------------------\n"); +#endif +#if PFINISH + fprintf(stderr, "EE CLEAR 0.5 -------------------------------------------------\n"); +#endif + glClearColor(0.2, 0.4, 0.6, 1.0); + glClearDepth(0.5); + glClearStencil(0x7a); + glClear(GL_DEPTH_BUFFER_BIT); +#if PFINISH + fprintf(stderr, "EE CLEAR 0.5 _________________________________________________\n"); +#endif + +#if PFINISH + fprintf(stderr, "EE CLEAR PROBE -----------------------------------------------\n"); +#endif + vsimple_probe(); +#if PFINISH + fprintf(stderr, "EE CLEAR PROBE _______________________________________________\n"); +#endif + +#if PFINISH + fprintf(stderr, "EE CLEAR 0.8 -------------------------------------------------\n"); +#endif + glClearColor(0.2, 0.4, 0.6, 1.0); + glClearDepth(0.8); + glClearStencil(0x7a); + glClear(GL_DEPTH_BUFFER_BIT); +#if PFINISH + fprintf(stderr, "EE CLEAR 0.8 _________________________________________________\n"); +#endif +#if PFINISH + glFinish(); + fprintf(stderr, "EE FRAME _____________________________________________________\n"); +#endif + +#if PFINISH + fprintf(stderr, "EE CLEAR PROBE -----------------------------------------------\n"); +#endif + vsimple_probe(); +#if PFINISH + fprintf(stderr, "EE CLEAR PROBE _______________________________________________\n"); +#endif + + exit(0); +} + +static void idle(void) +{ +} + +/* new window size or exposure */ +static void reshape(int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport(0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -40.0); + + win_width = width; + win_height = height; +} + +static void init(void) +{ +} + +static void key(unsigned char k, int x, int y) +{ + switch (k) { + case 27: /* Escape */ + exit(0); + break; + default: + return; + } + glutPostRedisplay(); +} + +int main(int argc, char *argv[]) +{ + glutInit(&argc, argv); + glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE | GLUT_STENCIL); + glutInitWindowSize(win_width, win_height); + glutCreateWindow("glgears"); + + GLenum err = glewInit(); + if (GLEW_OK != err) { + fprintf(stderr, "Error: %s\n", glewGetErrorString(err)); + return -1; + } + + glutKeyboardFunc(key); + glutIdleFunc(idle); + glutReshapeFunc(reshape); + glutDisplayFunc(draw); + + init(); + reshape(win_width, win_height); + glutMainLoop(); + return 0; +} @@ -0,0 +1,132 @@ +/* + * 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. + */ + +/* + * This is a port of the infamous "glxgears" demo to straight EGL + * Port by Dane Rushton 10 July 2005 + * + * No command line options. + * Program runs for 5 seconds then exits, outputing framerate to console + */ +#define MAXFRAME 5 +#define PFINISH 1 + +#include <stdio.h> +#include <math.h> +#include <GL/gl.h> +#include <GL/glut.h> + +static GLuint win_width = 256; +static GLuint win_height = 230; +static GLuint frames = 0; + +static void draw(void) +{ +#if PFINISH + fprintf(stderr, "EE CLEAR -----------------------------------------------------\n"); +#endif + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +#if PFINISH + glFinish(); + fprintf(stderr, "EE CLEAR _____________________________________________________\n"); +#endif + +#if PFINISH + fprintf(stderr, "EE DRAW ------------------------------------------------------\n"); +#endif + glBegin(GL_TRIANGLES); + glColor3f(0,0,1); + glVertex3f( 0.9, -0.9, -30.0); + glColor3f(1,0,0); + glVertex3f( 0.9, 0.9, -30.0); + glColor3f(0,1,0); + glVertex3f(-0.9, 0.0, -30.0); + glEnd(); +#if PFINISH + glFinish(); + fprintf(stderr, "EE DRAW ______________________________________________________\n"); +#endif + + glutSwapBuffers(); + + frames++; + if (frames >= MAXFRAME) { + glFinish(); + exit(0); + } +} + +static void idle(void) +{ + static double t0 = -1.; + double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0; + if (t0 < 0.0) + t0 = t; + dt = t - t0; + t0 = t; + + glutPostRedisplay(); +} + +/* new window size or exposure */ +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); + glLoadIdentity(); +} + + +static void init(void) +{ + static GLfloat pos[4] = { 5.0, 5.0, 10.0, 0.0 }; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); +} + +int main(int argc, char *argv[]) +{ + glutInit(&argc, argv); + glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE | GLUT_STENCIL); + glutInitWindowSize(win_width, win_height); + + glutCreateWindow("glgears"); + + glutIdleFunc(idle); + glutReshapeFunc(reshape); + glutDisplayFunc(draw); + + init(); + reshape(win_width, win_height); + glDrawBuffer(GL_BACK); + glutMainLoop(); + + return 0; +} |