mirror of
https://github.com/brl/mutter.git
synced 2025-06-13 16:59:30 +00:00
tests/cogl: Migrate blend test
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2555>
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
cogl_tests = [
|
||||
'test-atlas-migration',
|
||||
'test-blend-strings',
|
||||
'test-blend',
|
||||
]
|
||||
|
||||
cogl_test_conformance_includes = [
|
||||
|
67
src/tests/cogl/conform/test-blend.c
Normal file
67
src/tests/cogl/conform/test-blend.c
Normal file
@ -0,0 +1,67 @@
|
||||
#include <cogl/cogl.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "tests/cogl-test-utils.h"
|
||||
|
||||
static void
|
||||
paint (void)
|
||||
{
|
||||
CoglPipeline *pipeline = cogl_pipeline_new (test_ctx);
|
||||
int width = cogl_framebuffer_get_width (test_fb);
|
||||
int half_width = width / 2;
|
||||
int height = cogl_framebuffer_get_height (test_fb);
|
||||
CoglVertexP2 tri0_vertices[] = {
|
||||
{ 0, 0 },
|
||||
{ 0, height },
|
||||
{ half_width, height },
|
||||
};
|
||||
CoglVertexP2C4 tri1_vertices[] = {
|
||||
{ half_width, 0, 0x80, 0x80, 0x80, 0x80 },
|
||||
{ half_width, height, 0x80, 0x80, 0x80, 0x80 },
|
||||
{ width, height, 0x80, 0x80, 0x80, 0x80 },
|
||||
};
|
||||
CoglPrimitive *tri0;
|
||||
CoglPrimitive *tri1;
|
||||
|
||||
cogl_framebuffer_clear4f (test_fb, COGL_BUFFER_BIT_COLOR, 0, 0, 0, 0);
|
||||
|
||||
tri0 = cogl_primitive_new_p2 (test_ctx, COGL_VERTICES_MODE_TRIANGLES,
|
||||
3, tri0_vertices);
|
||||
tri1 = cogl_primitive_new_p2c4 (test_ctx, COGL_VERTICES_MODE_TRIANGLES,
|
||||
3, tri1_vertices);
|
||||
|
||||
/* Check that cogl correctly handles the case where we draw
|
||||
* different primitives same pipeline and switch from using the
|
||||
* opaque color associated with the pipeline and using a colour
|
||||
* attribute with an alpha component which implies blending is
|
||||
* required.
|
||||
*
|
||||
* If Cogl gets this wrong then then in all likelihood the second
|
||||
* primitive will be drawn with blending still disabled.
|
||||
*/
|
||||
|
||||
cogl_primitive_draw (tri0, test_fb, pipeline);
|
||||
cogl_primitive_draw (tri1, test_fb, pipeline);
|
||||
|
||||
test_utils_check_pixel_and_alpha (test_fb,
|
||||
half_width + 5,
|
||||
height - 5,
|
||||
0x80808080);
|
||||
}
|
||||
|
||||
static void
|
||||
test_blend (void)
|
||||
{
|
||||
cogl_framebuffer_orthographic (test_fb, 0, 0,
|
||||
cogl_framebuffer_get_width (test_fb),
|
||||
cogl_framebuffer_get_height (test_fb),
|
||||
-1,
|
||||
100);
|
||||
|
||||
paint ();
|
||||
}
|
||||
|
||||
COGL_TEST_SUITE (
|
||||
g_test_add_func ("/blend", test_blend);
|
||||
)
|
Reference in New Issue
Block a user