On 12/05/15 15:39, Francisco Jerez wrote:
---
  tests/spec/arb_shader_image_load_store/image.c | 24 +++++++++++++++++-------
  tests/spec/arb_shader_image_load_store/image.h |  7 +++++++
  2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/tests/spec/arb_shader_image_load_store/image.c 
b/tests/spec/arb_shader_image_load_store/image.c
index 58cda9b..7a1867f 100644
--- a/tests/spec/arb_shader_image_load_store/image.c
+++ b/tests/spec/arb_shader_image_load_store/image.c
@@ -599,9 +599,9 @@ image_target_mipmapping_dimensions(const struct 
image_target_info *target)
  }
const struct image_stage_info *
-image_stages(void)
+known_image_stages(void)
  {
-        const struct image_stage_info known[] = {
+        static const struct image_stage_info known[] = {
                  { "Vertex", GL_VERTEX_SHADER, GL_VERTEX_SHADER_BIT },
                  { "Tessellation control", GL_TESS_CONTROL_SHADER,
                    GL_TESS_CONTROL_SHADER_BIT },
@@ -610,15 +610,25 @@ image_stages(void)
                  { "Geometry", GL_GEOMETRY_SHADER, GL_GEOMETRY_SHADER_BIT },
                  { "Fragment", GL_FRAGMENT_SHADER, GL_FRAGMENT_SHADER_BIT },
                  { "Compute", GL_COMPUTE_SHADER, GL_COMPUTE_SHADER_BIT },
+                { 0 }
          };
-        static struct image_stage_info supported[ARRAY_SIZE(known) + 1];
+        return known;
+}
+
+const struct image_stage_info *
+image_stages(void)
+{
+        static struct image_stage_info supported[7];
if (!supported[0].name) {
-                int i, n = 0;
+                const struct image_stage_info *stage;
+                int n = 0;
- for (i = 0; i < ARRAY_SIZE(known); ++i) {
-                        if (image_stage_max_images(&known[i]))
-                                supported[n++] = known[i];
+                for (stage = known_image_stages(); stage->stage; ++stage) {
+                        if (image_stage_max_images(stage)) {
+                                assert(n < ARRAY_SIZE(supported) - 1);
+                                supported[n++] = *stage;
+                        }
                  }
          }
diff --git a/tests/spec/arb_shader_image_load_store/image.h b/tests/spec/arb_shader_image_load_store/image.h
index f35c89f..fc43f22 100644
--- a/tests/spec/arb_shader_image_load_store/image.h
+++ b/tests/spec/arb_shader_image_load_store/image.h
@@ -264,6 +264,13 @@ struct image_stage_info {
  };
/**
+ * Get all shader stages in pipeline order regardless of whether they
+ * support image access.
+ */
+const struct image_stage_info *
+known_image_stages(void);
+
+/**
   * Get all shader stages that support image access in pipeline order.
   */
  const struct image_stage_info *

Reviewed-by: Martin Peres <[email protected]>
_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to