[Cogl] [PATCH 1/2] Add a test for cogl_framebuffer_push_path_clip

Robert Bragg robert at sixbynine.org
Mon Dec 2 12:12:12 PST 2013


This looks good to land to me:

Reviewed-by: Robert Bragg <robert at linux.intel.com>

thanks,
Robert


On Mon, Dec 2, 2013 at 6:56 PM, Neil Roberts <neil at linux.intel.com> wrote:
> The test makes an L-shaped path that fills the whole framebuffer
> except for the top right quadrant. It then clips to that and tries to
> fill the framebuffer with a rectangle. Then it verifies that all of
> the quadrants have the expected colour.
>
> This is currently failing due to a bug in the primitive clipping.
> ---
>  tests/conform/Makefile.am         |  4 ++-
>  tests/conform/test-conform-main.c |  1 +
>  tests/conform/test-path-clip.c    | 67 +++++++++++++++++++++++++++++++++++++++
>  3 files changed, 71 insertions(+), 1 deletion(-)
>  create mode 100644 tests/conform/test-path-clip.c
>
> diff --git a/tests/conform/Makefile.am b/tests/conform/Makefile.am
> index a54f0e7..e3493a9 100644
> --- a/tests/conform/Makefile.am
> +++ b/tests/conform/Makefile.am
> @@ -75,7 +75,9 @@ test_sources += test-fence.c
>  endif
>
>  if BUILD_COGL_PATH
> -test_sources += test-path.c
> +test_sources += \
> +       test-path.c \
> +       test-path-clip.c
>  endif
>
>  test_conformance_SOURCES = $(common_sources) $(test_sources)
> diff --git a/tests/conform/test-conform-main.c b/tests/conform/test-conform-main.c
> index dae98b5..572235b 100644
> --- a/tests/conform/test-conform-main.c
> +++ b/tests/conform/test-conform-main.c
> @@ -58,6 +58,7 @@ main (int argc, char **argv)
>    UNPORTED_TEST (test_readpixels);
>  #ifdef COGL_HAS_COGL_PATH_SUPPORT
>    ADD_TEST (test_path, 0, 0);
> +  ADD_TEST (test_path_clip, 0, TEST_KNOWN_FAILURE);
>  #endif
>    ADD_TEST (test_depth_test, 0, 0);
>    ADD_TEST (test_color_mask, 0, 0);
> diff --git a/tests/conform/test-path-clip.c b/tests/conform/test-path-clip.c
> new file mode 100644
> index 0000000..18f4339
> --- /dev/null
> +++ b/tests/conform/test-path-clip.c
> @@ -0,0 +1,67 @@
> +#include <cogl/cogl.h>
> +#include <cogl-path/cogl-path.h>
> +
> +#include <string.h>
> +
> +#include "test-utils.h"
> +
> +void
> +test_path_clip (void)
> +{
> +  CoglPath *path;
> +  CoglPipeline *pipeline;
> +  int fb_width, fb_height;
> +
> +  fb_width = cogl_framebuffer_get_width (test_fb);
> +  fb_height = cogl_framebuffer_get_height (test_fb);
> +
> +  cogl_framebuffer_orthographic (test_fb,
> +                                 0, 0, fb_width, fb_height, -1, 100);
> +
> +  path = cogl_path_new (test_ctx);
> +
> +  cogl_framebuffer_clear4f (test_fb,
> +                            COGL_BUFFER_BIT_COLOR,
> +                            1.0f, 0.0f, 0.0f, 1.0f);
> +
> +  /* Make an L-shape with the top right corner left untouched */
> +  cogl_path_move_to (path, 0, fb_height);
> +  cogl_path_line_to (path, fb_width, fb_height);
> +  cogl_path_line_to (path, fb_width, fb_height / 2);
> +  cogl_path_line_to (path, fb_width / 2, fb_height / 2);
> +  cogl_path_line_to (path, fb_width / 2, 0);
> +  cogl_path_line_to (path, 0, 0);
> +  cogl_path_close (path);
> +
> +  cogl_framebuffer_push_path_clip (test_fb, path);
> +
> +  /* Try to fill the framebuffer with a blue rectangle. This should be
> +   * clipped to leave the top right quadrant as is */
> +  pipeline = cogl_pipeline_new (test_ctx);
> +  cogl_pipeline_set_color4ub (pipeline, 0, 0, 255, 255);
> +  cogl_framebuffer_draw_rectangle (test_fb,
> +                                   pipeline,
> +                                   0, 0, fb_width, fb_height);
> +
> +  cogl_framebuffer_pop_clip (test_fb);
> +
> +  cogl_object_unref (pipeline);
> +  cogl_object_unref (path);
> +
> +  /* Check each of the four quadrants */
> +  test_utils_check_pixel (test_fb,
> +                          fb_width / 4, fb_height / 4,
> +                          0x0000ffff);
> +  test_utils_check_pixel (test_fb,
> +                          fb_width * 3 / 4, fb_height / 4,
> +                          0xff0000ff);
> +  test_utils_check_pixel (test_fb,
> +                          fb_width / 4, fb_height * 3 / 4,
> +                          0x0000ffff);
> +  test_utils_check_pixel (test_fb,
> +                          fb_width * 3 / 4, fb_height * 3 / 4,
> +                          0x0000ffff);
> +
> +  if (cogl_test_verbose ())
> +    g_print ("OK\n");
> +}
> --
> 1.8.3.1
>
> _______________________________________________
> Cogl mailing list
> Cogl at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/cogl


More information about the Cogl mailing list