[Mesa-dev] [PATCH 2/2] calibrate_rast: add command line arguments
Brian Paul
brianp at vmware.com
Wed Aug 2 19:11:23 UTC 2017
To skip swapbuffers, or only test points/lines/quads.
---
src/tests/calibrate_rast.c | 130 ++++++++++++++++++++++++++++++---------------
1 file changed, 88 insertions(+), 42 deletions(-)
diff --git a/src/tests/calibrate_rast.c b/src/tests/calibrate_rast.c
index ae9ff10..0bbbf84 100644
--- a/src/tests/calibrate_rast.c
+++ b/src/tests/calibrate_rast.c
@@ -17,15 +17,18 @@
#include <assert.h>
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <GL/glew.h>
#include "glut_wrap.h"
+static bool NoSwap = false;
static int Width = 100, Height = 100;
static int Win;
-static float Step = 0.125;
+static float Step = 1.0 / 16.0;
#if 0
/* This tiny offset fixes errors in Mesa/Xlib */
static float Xtrans = 0.5 * 0.125;
@@ -35,6 +38,15 @@ static float Xtrans = 0.0;
static float Ytrans = 0.0;
#endif
+enum prim {
+ PRIM_POINTS,
+ PRIM_LINES,
+ PRIM_QUADS,
+ PRIM_ALL
+};
+
+static enum prim TestPrim = PRIM_ALL;
+
static void
PointCalibrate(int xpos, int ypos)
@@ -64,11 +76,13 @@ PointCalibrate(int xpos, int ypos)
if (y > ymax)
ymax = y;
}
- glutSwapBuffers();
+
+ if (!NoSwap)
+ glutSwapBuffers();
}
}
- printf("Point at (%2d, %2d) drawn for x in [%6.3f, %6.3f] and y in [%6.3f, %6.3f]\n",
+ printf("Point at (%2d, %2d) drawn for x in [%7.4f, %7.4f] and y in [%7.4f, %7.4f]\n",
xpos, ypos,
xpos + xmin, xpos + xmax,
ypos + ymin, ypos + ymax);
@@ -127,10 +141,12 @@ HLineCalibrate(int xpos, int ypos, int len)
if (y > ymax)
ymax = y;
}
- glutSwapBuffers();
+
+ if (!NoSwap)
+ glutSwapBuffers();
}
- printf("H-line at Y=%2d drawn for y in [%6.3f, %6.3f]\n",
+ printf("H-line at Y=%2d drawn for y in [%7.4f, %7.4f]\n",
ypos,
ypos + ymin, ypos + ymax);
@@ -175,11 +191,13 @@ HLineCalibrate(int xpos, int ypos, int len)
if (x > xmax_right)
xmax_right = x;
}
- glutSwapBuffers();
+
+ if (!NoSwap)
+ glutSwapBuffers();
}
- printf("H-line [%d..%d) hit left end for x in [%6.3f, %6.3f] "
- "hit right end for x in [%6.3f, %6.3f]\n",
+ printf("H-line [%d..%d) hit left end for x in [%7.4f, %7.4f] "
+ "hit right end for x in [%7.4f, %7.4f]\n",
xpos, xpos + len,
xpos + xmin_left, xpos + xmax_left,
xpos + len + xmin_right, xpos + len + xmax_right);
@@ -202,10 +220,10 @@ HLineCalibrate(int xpos, int ypos, int len)
if (xmin_right < 0.0) {
printf(" => Coords should be X biased by about %f\n", xmin_right );
}
- if (xmax_left >= 1.0) {
- printf(" => Coords should be X biased by about %f\n", -xmax_right + 1.0);
+ if (xmax_left > 1.0) {
+ printf(" => Coords should be X biased by about %f\n", -xmax_left + 1.0);
}
- if (xmax_right >= 1.0) {
+ if (xmax_right > 1.0) {
printf(" => Coords should be X biased by about %f\n", -xmax_right + 1.0);
}
@@ -245,10 +263,12 @@ VLineCalibrate(int xpos, int ypos, int len)
if (x > xmax)
xmax = x;
}
- glutSwapBuffers();
+
+ if (!NoSwap)
+ glutSwapBuffers();
}
- printf("V-line at X=%d drawn for x in [%6.3f, %6.3f]\n",
+ printf("V-line at X=%d drawn for x in [%7.4f, %7.4f]\n",
xpos,
xpos + xmin, xpos + xmax);
@@ -293,11 +313,13 @@ VLineCalibrate(int xpos, int ypos, int len)
if (y > ymax_top)
ymax_top = y;
}
- glutSwapBuffers();
+
+ if (!NoSwap)
+ glutSwapBuffers();
}
- printf("V-line [%d..%d) hit bottom end for y in [%6.3f, %6.3f] "
- "hit top end for y in [%6.3f, %6.3f]\n",
+ printf("V-line [%d..%d) hit bottom end for y in [%7.4f, %7.4f] "
+ "hit top end for y in [%7.4f, %7.4f]\n",
ypos, ypos + len,
ypos + ymin_bottom, ypos + ymax_bottom,
ypos + len + ymin_top, ypos + len + ymax_top);
@@ -321,7 +343,7 @@ VLineCalibrate(int xpos, int ypos, int len)
printf(" => Coords should be Y biased by about %f\n", ymin_top );
}
if (ymax_bottom > 1.0) {
- printf(" => Coords should be Y biased by about %f\n", -ymax_top + 1.0);
+ printf(" => Coords should be Y biased by about %f\n", -ymax_bottom + 1.0);
}
if (ymax_top > 1.0) {
printf(" => Coords should be Y biased by about %f\n", -ymax_top + 1.0);
@@ -374,12 +396,13 @@ QuadCalibrate(int xpos, int ypos, int width, int height)
ymax = y;
}
- glutSwapBuffers();
+ if (!NoSwap)
+ glutSwapBuffers();
}
}
printf("Quad at (%2d, %2d)..(%2d, %2d) drawn"
- " for x in [%6.3f, %6.3f] and y in [%6.3f, %6.3f]\n",
+ " for x in [%7.4f, %7.4f] and y in [%7.4f, %7.4f]\n",
xpos, ypos,
xpos + width, ypos + height,
xpos + xmin, xpos + xmax,
@@ -441,34 +464,43 @@ Draw(void)
glPushMatrix();
glTranslatef(Xtrans, Ytrans, 0);
- PointCalibrate(1, 1);
- PointCalibrate(50, 50);
- PointCalibrate(28, 17);
- PointCalibrate(17, 18);
- printf("\n");
-
- HLineCalibrate(5, 10, 10);
- HLineCalibrate(25, 22, 12);
- HLineCalibrate(54, 33, 12);
- HLineCalibrate(54+12, 33, 12);
- printf("\n");
-
- VLineCalibrate(5, 10, 10);
- VLineCalibrate(25, 22, 12);
- VLineCalibrate(54, 33, 12);
- VLineCalibrate(54+12, 33, 12);
- printf("\n");
-
- QuadCalibrate(2, 2, 10, 10);
- QuadCalibrate(50, 50, 10, 10);
- QuadCalibrate(28, 17, 12, 12);
- QuadCalibrate(17, 28, 12, 12);
+ printf("Probe step size: %f\n", Step);
+
+ if (TestPrim == PRIM_POINTS || TestPrim == PRIM_ALL) {
+ PointCalibrate(1, 1);
+ PointCalibrate(50, 50);
+ PointCalibrate(28, 17);
+ PointCalibrate(17, 18);
+ printf("\n");
+ }
+
+ if (TestPrim == PRIM_LINES || TestPrim == PRIM_ALL) {
+ HLineCalibrate(5, 10, 10);
+ HLineCalibrate(25, 22, 12);
+ HLineCalibrate(54, 33, 12);
+ HLineCalibrate(54+12, 33, 12);
+ printf("\n");
+
+ VLineCalibrate(5, 10, 10);
+ VLineCalibrate(25, 22, 12);
+ VLineCalibrate(54, 33, 12);
+ VLineCalibrate(54+12, 33, 12);
+ printf("\n");
+ }
+
+ if (TestPrim == PRIM_QUADS || TestPrim == PRIM_ALL) {
+ QuadCalibrate(2, 2, 10, 10);
+ QuadCalibrate(50, 50, 10, 10);
+ QuadCalibrate(28, 17, 12, 12);
+ QuadCalibrate(17, 28, 12, 12);
+ }
(void) DebugTest;
glPopMatrix();
- // glutSwapBuffers();
+ if (NoSwap)
+ glutSwapBuffers();
}
@@ -513,7 +545,21 @@ Init(void)
int
main(int argc, char *argv[])
{
+ int i;
+
glutInit(&argc, argv);
+
+ for (i = 1; i < argc; i++) {
+ if (strcmp(argv[i], "--noswap") == 0)
+ NoSwap = true;
+ else if (strcmp(argv[i], "--points") == 0)
+ TestPrim = PRIM_POINTS;
+ else if (strcmp(argv[i], "--lines") == 0)
+ TestPrim = PRIM_LINES;
+ else if (strcmp(argv[i], "--quads") == 0)
+ TestPrim = PRIM_QUADS;
+ }
+
glutInitWindowPosition(0, 0);
glutInitWindowSize(Width, Height);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
--
1.9.1
More information about the mesa-dev
mailing list