For both,
Reviewed-by: Brian Paul <bri...@vmware.com>

On 06/14/2017 03:37 PM, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com>

the sRGB test is unrealistic
---
  tests/perf/drawoverhead.c | 63 +++++++++++++++++++++++++++++++++++++++++++++--
  1 file changed, 61 insertions(+), 2 deletions(-)

diff --git a/tests/perf/drawoverhead.c b/tests/perf/drawoverhead.c
index 76aed20..9afd3d0 100644
--- a/tests/perf/drawoverhead.c
+++ b/tests/perf/drawoverhead.c
@@ -341,20 +341,69 @@ draw_state_change(unsigned count)
                                glEnable(enable_enum);
                        else
                                glDisable(enable_enum);
                        glDrawArrays(GL_TRIANGLES, 0, 3);
                }
        }
        glDisable(enable_enum);
  }

  static void
+draw_scissor_change(unsigned count)
+{
+       unsigned i;
+       glEnable(GL_SCISSOR_TEST);
+       if (indexed) {
+               for (i = 0; i < count; i++) {
+                       if (i & 1)
+                               glScissor(0, 0, piglit_width / 2, piglit_height 
/ 2);
+                       else
+                               glScissor(0, 0, piglit_width, piglit_height);
+                       glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL);
+               }
+       } else {
+               for (i = 0; i < count; i++) {
+                       if (i & 1)
+                               glScissor(0, 0, piglit_width / 2, piglit_height 
/ 2);
+                       else
+                               glScissor(0, 0, piglit_width, piglit_height);
+                       glDrawArrays(GL_TRIANGLES, 0, 3);
+               }
+       }
+       glDisable(GL_SCISSOR_TEST);
+}
+
+static void
+draw_viewport_change(unsigned count)
+{
+       unsigned i;
+       if (indexed) {
+               for (i = 0; i < count; i++) {
+                       if (i & 1)
+                               glViewport(0, 0, piglit_width / 2, 
piglit_height / 2);
+                       else
+                               glViewport(0, 0, piglit_width, piglit_height);
+                       glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL);
+               }
+       } else {
+               for (i = 0; i < count; i++) {
+                       if (i & 1)
+                               glViewport(0, 0, piglit_width / 2, 
piglit_height / 2);
+                       else
+                               glViewport(0, 0, piglit_width, piglit_height);
+                       glDrawArrays(GL_TRIANGLES, 0, 3);
+               }
+       }
+       glViewport(0, 0, piglit_width, piglit_height);
+}
+
+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,
@@ -384,42 +433,47 @@ static double
  perf_run(const char *call, unsigned num_vbos, unsigned num_ubos,
         unsigned num_textures, const char *change, perf_rate_func f,
         double base_rate)
  {
        double rate = perf_measure_rate(f);
        double ratio = base_rate ? rate / base_rate : 1;

        printf("   %s (%2u VBOs, %u UBOs, %2u Tex) w/ %s change:%*s"
               COLOR_CYAN "%s" COLOR_RESET " %s(%.1f%%)" COLOR_RESET "\n",
               call, num_vbos, num_ubos, num_textures, change,
-              MAX2(18 - (int)strlen(change), 0), "",
+              MAX2(24 - (int)strlen(change), 0), "",
               perf_human_float(rate),
               base_rate == 0 ? COLOR_RESET :
                                ratio > 0.7 ? COLOR_GREEN :
                                ratio > 0.4 ? COLOR_YELLOW : COLOR_RED,
               100 * ratio);
        return rate;
  }

  struct enable_state_t {
        GLenum enable;
        const char *name;
  };

  static struct enable_state_t enable_states[] = {
+       {GL_PRIMITIVE_RESTART, "primitive restart enable"},
        {GL_BLEND,      "blend enable"},
        {GL_DEPTH_TEST, "depth enable"},
+       {GL_DEPTH_CLAMP, "depth clamp enable"},
        {GL_STENCIL_TEST, "stencil enable"},
        {GL_SCISSOR_TEST, "scissor enable"},
        {GL_MULTISAMPLE, "MSAA enable"},
+       {GL_SAMPLE_MASK, "sample mask enable"},
+       {GL_SAMPLE_ALPHA_TO_COVERAGE, "alpha-to-coverage enable"},
+       {GL_SAMPLE_SHADING, "sample shading enable"},
        {GL_CULL_FACE,  "cull face enable"},
-       {GL_FRAMEBUFFER_SRGB, "FB sRGB enable"},
+       {GL_CLIP_DISTANCE0, "clip distance enable"},
  };

  static void
  perf_draw_variant(const char *call, bool is_indexed)
  {
        double base_rate = 0;
        unsigned num_vbos, num_ubos, num_textures;

        indexed = is_indexed;

@@ -467,20 +521,25 @@ perf_draw_variant(const char *call, bool is_indexed)
                uniform_loc = glGetUniformLocation(prog[0], "u");
                perf_run(call, num_vbos, num_ubos, num_textures, "few uniforms / 
1",
                         draw_uniform_change, base_rate);

                glUseProgram(prog[1]);
                uniform_loc = glGetUniformLocation(prog[1], "u");
                perf_run(call, num_vbos, num_ubos, num_textures, "many uniforms / 
1",
                         draw_uniform_change, base_rate);
                glUseProgram(prog[0]);

+               perf_run(call, num_vbos, num_ubos, num_textures, "scissor",
+                        draw_scissor_change, base_rate);
+               perf_run(call, num_vbos, num_ubos, num_textures, "viewport",
+                        draw_viewport_change, base_rate);
+
                for (int state = 0; state < ARRAY_SIZE(enable_states); state++) 
{
                        enable_enum = enable_states[state].enable;
                        perf_run(call, num_vbos, num_ubos, num_textures,
                                 enable_states[state].name,
                                 draw_state_change, base_rate);
                }
        }
  }

  /** Called from test harness/main */


_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to