I've re-tested radeonsi vs i965. radeonsi is 7.21x faster now, but there may be other GPU overheads (e.g. draw rate, command buffer fetch rate, etc.)
Marek On Thu, Jun 8, 2017 at 12:35 PM, Marek Olšák <mar...@gmail.com> wrote: > From: Marek Olšák <marek.ol...@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 > _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit