[2/2] teximage-colors: Improve --benchmark option

Submitted by Jason Ekstrand on Jan. 9, 2015, 10:53 p.m.

Details

Message ID 1420844006-5009-2-git-send-email-jason.ekstrand@intel.com
State New
Headers show

Not browsing as part of any series.

Commit Message

Jason Ekstrand Jan. 9, 2015, 10:53 p.m.
This commit does a couple of things.  First, we increase the size of the
texture uploaded while benchmarking to 1024 square to reduce the affect of
set-up overhead.  Second, we do a render and then call glFinish at the end
of the upload loop to ensure that things actually get flushed through the
GPU and GPU time is included in the test.
---
 tests/texturing/teximage-colors.c | 35 +++++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 12 deletions(-)

Patch hide | download patch | download mbox

diff --git a/tests/texturing/teximage-colors.c b/tests/texturing/teximage-colors.c
index 5944137..ff2b174 100644
--- a/tests/texturing/teximage-colors.c
+++ b/tests/texturing/teximage-colors.c
@@ -29,6 +29,9 @@  PIGLIT_GL_TEST_CONFIG_BEGIN
 
 	config.supports_gl_compat_version = 13;
 
+	config.window_width = 1024;
+	config.window_height = 1024;
+
 	config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE;
 
 PIGLIT_GL_TEST_CONFIG_END
@@ -475,7 +478,7 @@  piglit_init(int argc, char **argv)
 			srand(seed);
 		} else if (strcmp(argv[i], "--benchmark") == 0) {
 			benchmark = true;
-			texture_size = 128;
+			texture_size = 1024;
 		} else if (strcmp(argv[i], "--pbo") == 0) {
 			use_pbo = true;
 		} else if (i == argc - 1) {
@@ -754,33 +757,41 @@  run_test(GLenum test_format, GLenum test_type, float *time_out)
 		to_expected(test_format, test_type, (GLubyte *)data + (i * Bpp),
 			    expected + 4 * i);
 
+	if (is_format_signed(format->internal_format)) {
+		glUseProgram(signed_prog);
+
+		for (i = 0; i < texture_size * texture_size * 4; ++i)
+			expected[i] = 0.5 + 0.5 * expected[i];
+	} else {
+		glUseProgram(unsigned_prog);
+	}
+
 	if (benchmark) {
 		time = piglit_time_get_nano();
+
 		for (i = 0; i < BENCHMARK_ITERATIONS; ++i)
 			glTexImage2D(GL_TEXTURE_2D, 0, format->internal_format,
 				     texture_size, texture_size, 0,
 				     test_format, test_type, teximage_ptr);
+
+		piglit_draw_rect_tex(0, 0, texture_size, texture_size,
+				     0, 0, 1, 1);
+		glFinish();
+
 		time = piglit_time_get_nano() - time;
 		*time_out = (double)time / (double)(BENCHMARK_ITERATIONS*1000);
 	} else {
 		glTexImage2D(GL_TEXTURE_2D, 0, format->internal_format,
 			     texture_size, texture_size, 0,
 			     test_format, test_type, teximage_ptr);
-	}
-	pass &= piglit_check_gl_error(GL_NO_ERROR);
 
-	glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
-
-	if (is_format_signed(format->internal_format)) {
-		glUseProgram(signed_prog);
+		pass &= piglit_check_gl_error(GL_NO_ERROR);
 
-		for (i = 0; i < texture_size * texture_size * 4; ++i)
-			expected[i] = 0.5 + 0.5 * expected[i];
-	} else {
-		glUseProgram(unsigned_prog);
+		piglit_draw_rect_tex(0, 0, texture_size, texture_size,
+				     0, 0, 1, 1);
 	}
 
-	piglit_draw_rect_tex(0, 0, texture_size, texture_size, 0, 0, 1, 1);
+	glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
 
 	observed = malloc(texture_size * texture_size * 4 * sizeof(float));
 	glReadPixels(0, 0, texture_size, texture_size,