mirror of
https://github.com/brl/mutter.git
synced 2024-12-26 21:02:14 +00:00
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)
This commit is contained in:
parent
fe3aa8b8b3
commit
41612bfc74
@ -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)
|
||||
|
@ -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,
|
||||
|
40
tests/conform/test-framebuffer-get-bits.c
Normal file
40
tests/conform/test-framebuffer-get-bits.c
Normal file
@ -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);
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user