[Piglit] [PATCH] drawoverhead: use GL_TRIANGLES instead of GL_POINTS

Marek Olšák maraeo at gmail.com
Thu Jun 8 10:35:47 UTC 2017


From: Marek Olšák <marek.olsak at amd.com>

Triangles are degenerate and therefore culled. Points weren't.
This decreases the likelihood of being GPU-bound.

I might re-do the radeonsi vs i965 comparison with this.
---
 tests/perf/drawoverhead.c | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/tests/perf/drawoverhead.c b/tests/perf/drawoverhead.c
index 9dd110f..76aed20 100644
--- a/tests/perf/drawoverhead.c
+++ b/tests/perf/drawoverhead.c
@@ -196,187 +196,187 @@ setup_shaders_and_resources(unsigned num_vbos,
 	}
 	glActiveTexture(GL_TEXTURE0);
 }
 
 static void
 draw(unsigned count)
 {
 	unsigned i;
 	if (indexed) {
 		for (i = 0; i < count; i++)
-			glDrawElements(GL_POINTS, 4, GL_UNSIGNED_INT, NULL);
+			glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL);
 	} else {
 		for (i = 0; i < count; i++)
-			glDrawArrays(GL_POINTS, 0, 4);
+			glDrawArrays(GL_TRIANGLES, 0, 3);
 	}
 }
 
 static void
 draw_shader_change(unsigned count)
 {
 	unsigned i;
 	if (indexed) {
 		for (i = 0; i < count; i++) {
 			glUseProgram(prog[i & 1]);
-			glDrawElements(GL_POINTS, 4, GL_UNSIGNED_INT, NULL);
+			glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL);
 		}
 	} else {
 		for (i = 0; i < count; i++) {
 			glUseProgram(prog[i & 1]);
-			glDrawArrays(GL_POINTS, 0, 4);
+			glDrawArrays(GL_TRIANGLES, 0, 3);
 		}
 	}
 	glUseProgram(prog[0]);
 }
 
 static void
 draw_uniform_change(unsigned count)
 {
 	unsigned i;
 	if (indexed) {
 		for (i = 0; i < count; i++) {
 			glUniform4f(uniform_loc, i & 1, 0, 0, 0);
-			glDrawElements(GL_POINTS, 4, GL_UNSIGNED_INT, NULL);
+			glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL);
 		}
 	} else {
 		for (i = 0; i < count; i++) {
 			glUniform4f(uniform_loc, i & 1, 0, 0, 0);
-			glDrawArrays(GL_POINTS, 0, 4);
+			glDrawArrays(GL_TRIANGLES, 0, 3);
 		}
 	}
 }
 
 static void
 draw_one_texture_change(unsigned count)
 {
 	unsigned i;
 	if (indexed) {
 		for (i = 0; i < count; i++) {
 			glBindTexture(GL_TEXTURE_2D, tex[i & 1]);
-			glDrawElements(GL_POINTS, 4, GL_UNSIGNED_INT, NULL);
+			glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL);
 		}
 	} else {
 		for (i = 0; i < count; i++) {
 			glBindTexture(GL_TEXTURE_2D, tex[i & 1]);
-			glDrawArrays(GL_POINTS, 0, 4);
+			glDrawArrays(GL_TRIANGLES, 0, 3);
 		}
 	}
 }
 
 static void
 draw_many_texture_change(unsigned count)
 {
 	unsigned i,j;
 	if (indexed) {
 		for (i = 0; i < count; i++) {
 			for (j = 0; j < 8; j++) {
 				glActiveTexture(GL_TEXTURE0 + j);
 				glBindTexture(GL_TEXTURE_2D, tex[(i + j) % 8]);
 			}
 			glActiveTexture(GL_TEXTURE0);
-			glDrawElements(GL_POINTS, 4, GL_UNSIGNED_INT, NULL);
+			glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL);
 		}
 	} else {
 		for (i = 0; i < count; i++) {
 			for (j = 0; j < 8; j++) {
 				glActiveTexture(GL_TEXTURE0 + j);
 				glBindTexture(GL_TEXTURE_2D, tex[(i + j) % 8]);
 			}
 			glActiveTexture(GL_TEXTURE0);
-			glDrawArrays(GL_POINTS, 0, 4);
+			glDrawArrays(GL_TRIANGLES, 0, 3);
 		}
 	}
 }
 
 static void
 draw_one_ubo_change(unsigned count)
 {
 	unsigned i;
 	if (indexed) {
 		for (i = 0; i < count; i++) {
 			glBindBufferBase(GL_UNIFORM_BUFFER, 0, ubo[i & 1]);
-			glDrawElements(GL_POINTS, 4, GL_UNSIGNED_INT, NULL);
+			glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL);
 		}
 	} else {
 		for (i = 0; i < count; i++) {
 			glBindBufferBase(GL_UNIFORM_BUFFER, 0, ubo[i & 1]);
-			glDrawArrays(GL_POINTS, 0, 4);
+			glDrawArrays(GL_TRIANGLES, 0, 3);
 		}
 	}
 }
 
 static void
 draw_many_ubo_change(unsigned count)
 {
 	unsigned i,j;
 	if (indexed) {
 		for (i = 0; i < count; i++) {
 			for (j = 0; j < 4; j++)
 				glBindBufferBase(GL_UNIFORM_BUFFER, 0, ubo[(i + j) % 4]);
-			glDrawElements(GL_POINTS, 4, GL_UNSIGNED_INT, NULL);
+			glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL);
 		}
 	} else {
 		for (i = 0; i < count; i++) {
 			for (j = 0; j < 4; j++)
 				glBindBufferBase(GL_UNIFORM_BUFFER, 0, ubo[(i + j) % 4]);
-			glDrawArrays(GL_POINTS, 0, 4);
+			glDrawArrays(GL_TRIANGLES, 0, 3);
 		}
 	}
 }
 
 static void
 draw_state_change(unsigned count)
 {
 	unsigned i;
 	if (indexed) {
 		for (i = 0; i < count; i++) {
 			if (i & 1)
 				glEnable(enable_enum);
 			else
 				glDisable(enable_enum);
-			glDrawElements(GL_POINTS, 4, GL_UNSIGNED_INT, NULL);
+			glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL);
 		}
 	} else {
 		for (i = 0; i < count; i++) {
 			if (i & 1)
 				glEnable(enable_enum);
 			else
 				glDisable(enable_enum);
-			glDrawArrays(GL_POINTS, 0, 4);
+			glDrawArrays(GL_TRIANGLES, 0, 3);
 		}
 	}
 	glDisable(enable_enum);
 }
 
 static void
 draw_vertex_attrib_change(unsigned count)
 {
 	unsigned i;
 	if (indexed) {
 		for (i = 0; i < count; i++) {
 			if (i & 1)
 				glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE,
 						      3 * sizeof(float), NULL);
 			else
 				glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE,
 						      3 * sizeof(float), NULL);
-			glDrawElements(GL_POINTS, 4, GL_UNSIGNED_INT, NULL);
+			glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL);
 		}
 	} else {
 		for (i = 0; i < count; i++) {
 			if (i & 1)
 				glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE,
 						      3 * sizeof(float), NULL);
 			else
 				glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE,
 						      3 * sizeof(float), NULL);
-			glDrawArrays(GL_POINTS, 0, 4);
+			glDrawArrays(GL_TRIANGLES, 0, 3);
 		}
 	}
 }
 
 #define COLOR_RESET	"\033[0m"
 #define COLOR_RED	"\033[31m"
 #define COLOR_GREEN	"\033[1;32m"
 #define COLOR_YELLOW	"\033[1;33m"
 #define COLOR_CYAN	"\033[1;36m"
 
-- 
2.7.4



More information about the Piglit mailing list