summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Roberts <neil@linux.intel.com>2012-12-13 15:27:52 +0000
committerRobert Bragg <robert@linux.intel.com>2013-01-21 14:20:47 +0000
commit2d6676052024fdfe70c2ba297a64b5bfc05eaeb5 (patch)
tree03e08f088e652356c6ef4b9646bf01239854845f
parent809f7f1610dcf2baf6f77bb19e8f3f21d635ae3d (diff)
downloadcogl-2d6676052024fdfe70c2ba297a64b5bfc05eaeb5.tar.gz
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)
-rw-r--r--tests/conform/Makefile.am1
-rw-r--r--tests/conform/test-conform-main.c3
-rw-r--r--tests/conform/test-framebuffer-get-bits.c40
-rw-r--r--tests/conform/test-utils.c6
-rw-r--r--tests/conform/test-utils.h3
5 files changed, 52 insertions, 1 deletions
diff --git a/tests/conform/Makefile.am b/tests/conform/Makefile.am
index 3cc1e144..90d972ec 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 b0aaebdd..21df8512 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 00000000..ac7ab529
--- /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 6062ec64..b39dd113 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 ec96913d..e698f324 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;