[cogl/cogl-1.14: 158/174] Add a test for getting the component sizes from different fbs



commit 41612bfc7477e6c08b455ff6bbe71463c9521a2a
Author: Neil Roberts <neil linux intel com>
Date:   Thu Dec 13 15:27:52 2012 +0000

    Add a test for getting the component sizes from different fbs
    
    This adds a test which creates two offscreen framebuffers, one with
    just an alpha component texture and the other will a full RGBA
    texture. The bit sizes of both framebuffers are then checked to verify
    that they either have or haven't got bits for the RGB components.
    
    The test currently fails because the framebuffer functions don't bind
    the framebuffer before querying so they just query whichever
    framebuffer happened to be used last.
    
    Reviewed-by: Robert Bragg <robert linux intel com>
    
    (cherry picked from commit 7ca01373efe908efc9f18f2cb7f4a51c274ef677)

 tests/conform/Makefile.am                 |    1 +
 tests/conform/test-conform-main.c         |    3 ++
 tests/conform/test-framebuffer-get-bits.c |   40 +++++++++++++++++++++++++++++
 tests/conform/test-utils.c                |    6 ++++
 tests/conform/test-utils.h                |    3 +-
 5 files changed, 52 insertions(+), 1 deletions(-)
---
diff --git a/tests/conform/Makefile.am b/tests/conform/Makefile.am
index 3cc1e14..90d972e 100644
--- a/tests/conform/Makefile.am
+++ b/tests/conform/Makefile.am
@@ -62,6 +62,7 @@ test_sources = \
 	test-alpha-textures.c \
 	test-wrap-rectangle-textures.c \
 	test-texture-get-set-data.c \
+	test-framebuffer-get-bits.c \
 	$(NULL)
 
 test_conformance_SOURCES = $(common_sources) $(test_sources)
diff --git a/tests/conform/test-conform-main.c b/tests/conform/test-conform-main.c
index b0aaebd..21df851 100644
--- a/tests/conform/test-conform-main.c
+++ b/tests/conform/test-conform-main.c
@@ -98,6 +98,9 @@ main (int argc, char **argv)
   ADD_TEST (test_bitmask, 0, 0);
 
   ADD_TEST (test_offscreen, 0, 0);
+  ADD_TEST (test_framebuffer_get_bits,
+            TEST_REQUIREMENT_OFFSCREEN,
+            TEST_KNOWN_FAILURE);
 
   ADD_TEST (test_point_size, 0, 0);
   ADD_TEST (test_point_sprite,
diff --git a/tests/conform/test-framebuffer-get-bits.c b/tests/conform/test-framebuffer-get-bits.c
new file mode 100644
index 0000000..ac7ab52
--- /dev/null
+++ b/tests/conform/test-framebuffer-get-bits.c
@@ -0,0 +1,40 @@
+#include <cogl/cogl.h>
+
+#include "test-utils.h"
+
+void
+test_framebuffer_get_bits (void)
+{
+  CoglTexture2D *tex_a =
+    cogl_texture_2d_new_with_size (test_ctx,
+                                   16, 16, /* width/height */
+                                   COGL_PIXEL_FORMAT_A_8);
+  CoglOffscreen *offscreen_a =
+    cogl_offscreen_new_to_texture (COGL_TEXTURE (tex_a));
+  CoglFramebuffer *fb_a = COGL_FRAMEBUFFER (offscreen_a);
+  CoglTexture2D *tex_rgba =
+    cogl_texture_2d_new_with_size (test_ctx,
+                                   16, 16, /* width/height */
+                                   COGL_PIXEL_FORMAT_RGBA_8888);
+  CoglOffscreen *offscreen_rgba =
+    cogl_offscreen_new_to_texture (COGL_TEXTURE (tex_rgba));
+  CoglFramebuffer *fb_rgba = COGL_FRAMEBUFFER (offscreen_rgba);
+
+  cogl_framebuffer_allocate (fb_a, NULL);
+  cogl_framebuffer_allocate (fb_rgba, NULL);
+
+  g_assert_cmpint (cogl_framebuffer_get_red_bits (fb_a), ==, 0);
+  g_assert_cmpint (cogl_framebuffer_get_green_bits (fb_a), ==, 0);
+  g_assert_cmpint (cogl_framebuffer_get_blue_bits (fb_a), ==, 0);
+  g_assert_cmpint (cogl_framebuffer_get_alpha_bits (fb_a), >=, 1);
+
+  g_assert_cmpint (cogl_framebuffer_get_red_bits (fb_rgba), >=, 1);
+  g_assert_cmpint (cogl_framebuffer_get_green_bits (fb_rgba), >=, 1);
+  g_assert_cmpint (cogl_framebuffer_get_blue_bits (fb_rgba), >=, 1);
+  g_assert_cmpint (cogl_framebuffer_get_alpha_bits (fb_rgba), >=, 1);
+
+  cogl_object_unref (fb_rgba);
+  cogl_object_unref (tex_rgba);
+  cogl_object_unref (fb_a);
+  cogl_object_unref (tex_a);
+}
diff --git a/tests/conform/test-utils.c b/tests/conform/test-utils.c
index 6062ec6..b39dd11 100644
--- a/tests/conform/test-utils.c
+++ b/tests/conform/test-utils.c
@@ -65,6 +65,12 @@ check_flags (TestFlags flags,
       return FALSE;
     }
 
+  if (flags & TEST_REQUIREMENT_OFFSCREEN &&
+      !cogl_has_feature (test_ctx, COGL_FEATURE_ID_OFFSCREEN))
+    {
+      return FALSE;
+    }
+
   if (flags & TEST_KNOWN_FAILURE)
     {
       return FALSE;
diff --git a/tests/conform/test-utils.h b/tests/conform/test-utils.h
index ec96913..e698f32 100644
--- a/tests/conform/test-utils.h
+++ b/tests/conform/test-utils.h
@@ -19,7 +19,8 @@ typedef enum _TestFlags
   TEST_REQUIREMENT_POINT_SPRITE = 1<<5,
   TEST_REQUIREMENT_GLES2_CONTEXT = 1<<6,
   TEST_REQUIREMENT_MAP_WRITE = 1<<7,
-  TEST_REQUIREMENT_GLSL = 1<<8
+  TEST_REQUIREMENT_GLSL = 1<<8,
+  TEST_REQUIREMENT_OFFSCREEN = 1<<9
 } TestFlags;
 
 extern CoglContext *test_ctx;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]