Commit Diff


commit - 02d01148853952868eddec2455c4872c9179d545
commit + efe8cf5500dd7096efb67fe3507dd0b860effa7c
blob - /dev/null
blob + 7babb975a6296cbfc6159efb4caa829bdb5d5f23 (mode 644)
--- /dev/null
+++ tests/atomics/2d.cc
@@ -0,0 +1,93 @@
+
+/* Copyright (c) Mark J. Kilgard, 1997. */
+
+/* This program is freely distributable without licensing fees 
+   and is provided without guarantee or warrantee expressed or 
+   implied. This program is -not- in the public domain. */
+
+/* This program was requested by Patrick Earl; hopefully someone else
+   will write the equivalent Direct3D immediate mode program. */
+
+#include <GL/glut.h>
+
+GLfloat light_diffuse[] = {1.0, 0.0, 0.0, 1.0};  /* Red diffuse light. */
+GLfloat light_position[] = {1.0, 1.0, 1.0, 0.0};  /* Infinite light location. */
+GLfloat n[6][3] = {  /* Normals for the 6 faces of a cube. */
+  {-1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {1.0, 0.0, 0.0},
+  {0.0, -1.0, 0.0}, {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0} };
+GLint faces[6][4] = {  /* Vertex indices for the 6 faces of a cube. */
+  {0, 1, 2, 3}, {3, 2, 6, 7}, {7, 6, 5, 4},
+  {4, 5, 1, 0}, {5, 6, 2, 1}, {7, 4, 0, 3} };
+GLfloat v[8][3];  /* Will be filled in with X,Y,Z vertexes. */
+
+void
+drawBox(void)
+{
+  int i;
+
+  for (i = 0; i < 6; i++) {
+    glBegin(GL_QUADS);
+    glNormal3fv(&n[i][0]);
+    glVertex3fv(&v[faces[i][0]][0]);
+    glVertex3fv(&v[faces[i][1]][0]);
+    glVertex3fv(&v[faces[i][2]][0]);
+    glVertex3fv(&v[faces[i][3]][0]);
+    glEnd();
+  }
+}
+
+void
+display(void)
+{
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+  drawBox();
+  glutSwapBuffers();
+}
+
+void
+init(void)
+{
+  /* Setup cube vertex data. */
+  v[0][0] = v[1][0] = v[2][0] = v[3][0] = -1;
+  v[4][0] = v[5][0] = v[6][0] = v[7][0] = 1;
+  v[0][1] = v[1][1] = v[4][1] = v[5][1] = -1;
+  v[2][1] = v[3][1] = v[6][1] = v[7][1] = 1;
+  v[0][2] = v[3][2] = v[4][2] = v[7][2] = 1;
+  v[1][2] = v[2][2] = v[5][2] = v[6][2] = -1;
+
+  /* Enable a single OpenGL light. */
+  glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
+  glLightfv(GL_LIGHT0, GL_POSITION, light_position);
+  glEnable(GL_LIGHT0);
+  glEnable(GL_LIGHTING);
+
+  /* Use depth buffering for hidden surface elimination. */
+  glEnable(GL_DEPTH_TEST);
+
+  /* Setup the view of the cube. */
+  glMatrixMode(GL_PROJECTION);
+  gluPerspective( /* field of view in degree */ 40.0,
+    /* aspect ratio */ 1.0,
+    /* Z near */ 1.0, /* Z far */ 10.0);
+  glMatrixMode(GL_MODELVIEW);
+  gluLookAt(0.0, 0.0, 5.0,  /* eye is at (0,0,5) */
+    0.0, 0.0, 0.0,      /* center is at (0,0,0) */
+    0.0, 1.0, 0.);      /* up is in positive Y direction */
+
+  /* Adjust cube position to be asthetic angle. */
+  glTranslatef(0.0, 0.0, -1.0);
+  glRotatef(60, 1.0, 0.0, 0.0);
+  glRotatef(-20, 0.0, 0.0, 1.0);
+}
+
+int
+main(int argc, char **argv)
+{
+  glutInit(&argc, argv);
+  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
+  glutCreateWindow("red 3D lighted cube");
+  glutDisplayFunc(display);
+  init();
+  glutMainLoop();
+  return 0;             /* ANSI C requires main to return int. */
+}
blob - /dev/null
blob + 1d6319a90a2da2c594ae4e4887c7003fe493fc46 (mode 644)
--- /dev/null
+++ tests/atomics/at_2d.cc
@@ -0,0 +1,13 @@
+#include "benchmark/benchmark.h"
+
+void perf_2d() {
+
+}
+
+void BM_2d(benchmark::State& state) {
+	while (state.KeepRunning()) perf_2d();
+}
+
+BENCHMARK(BM_2d);
+
+BENCHMARK_MAIN()
blob - /dev/null
blob + 2dfacfdc89b6c6ff63b26f44945c6123f42e4037 (mode 644)
--- /dev/null
+++ tests/atomics/at_3d.cc
@@ -0,0 +1,15 @@
+#include "benchmark/benchmark.h"
+
+// https://www.opengl.org/archives/resources/code/samples/glut_examples/examples/examples.html
+
+void perf_3d() {
+
+}
+
+void BM_3d(benchmark::State& state) {
+	while (state.KeepRunning()) perf_3d();
+}
+
+BENCHMARK(BM_3d);
+
+BENCHMARK_MAIN()
blob - /dev/null
blob + 6bb5e9f292f407d98527bd3054c12b1d91a02fbc (mode 644)
--- /dev/null
+++ tests/atomics/sigbus.c
@@ -0,0 +1,17 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/mman.h>
+
+int main (int argc, char** argv) {
+       	int fd = open("test", O_WRONLY | O_CREAT, 0644);
+       	write(fd, "abcd\n", 5);
+       	close(fd);
+
+       	fd = open("test", O_RDONLY);
+       	char* ptr = (char*)mmap(0, 102400, PROT_READ, MAP_SHARED, fd, 0);
+       	char z = ptr[4097];
+       	write(1, &z, 1);
+       	return 0;
+}