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 */
-- 
2.7.4

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

Reply via email to