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

Brian Paul brianp at vmware.com
Thu Jun 8 19:55:42 UTC 2017


LGTM.  Reviewed-by: Brian Paul <brianp at vmware.com>

On 06/08/2017 04:35 AM, Marek Olšák wrote:
> 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"
>
>



More information about the Piglit mailing list