test-cogl-materials: Run the 'all layers' test with different prims
The drawing code from test_invalid_texture_layers which draws a rectangle, a polygon and a vertex buffer has been split out to separate function. test_using_all_layers now also uses this so that it will also test the other two primitives. This causes the test to fail when all of the layers are drawn using a vertex buffer. http://bugzilla.openedhand.com/show_bug.cgi?id=2132
This commit is contained in:
parent
a59bd4cfbb
commit
ff7ce2c5b2
@ -75,9 +75,10 @@ check_pixel (TestState *state, int x, int y, guint32 color)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_invalid_texture_layers (TestState *state, int x, int y)
|
test_material_with_primitives (TestState *state,
|
||||||
|
int x, int y,
|
||||||
|
guint32 color)
|
||||||
{
|
{
|
||||||
CoglHandle material = cogl_material_new ();
|
|
||||||
CoglTextureVertex verts[4] = {
|
CoglTextureVertex verts[4] = {
|
||||||
{ .x = 0, .y = 0, .z = 0 },
|
{ .x = 0, .y = 0, .z = 0 },
|
||||||
{ .x = 0, .y = QUAD_WIDTH, .z = 0 },
|
{ .x = 0, .y = QUAD_WIDTH, .z = 0 },
|
||||||
@ -90,12 +91,6 @@ test_invalid_texture_layers (TestState *state, int x, int y)
|
|||||||
|
|
||||||
cogl_translate (x * QUAD_WIDTH, y * QUAD_WIDTH, 0);
|
cogl_translate (x * QUAD_WIDTH, y * QUAD_WIDTH, 0);
|
||||||
|
|
||||||
/* explicitly create a layer with an invalid handle. This may be desireable
|
|
||||||
* if the user also sets a texture combine string that e.g. refers to a
|
|
||||||
* constant color. */
|
|
||||||
cogl_material_set_layer (material, 0, COGL_INVALID_HANDLE);
|
|
||||||
|
|
||||||
cogl_set_source (material);
|
|
||||||
cogl_rectangle (0, 0, QUAD_WIDTH, QUAD_WIDTH);
|
cogl_rectangle (0, 0, QUAD_WIDTH, QUAD_WIDTH);
|
||||||
|
|
||||||
cogl_translate (0, QUAD_WIDTH, 0);
|
cogl_translate (0, QUAD_WIDTH, 0);
|
||||||
@ -111,19 +106,34 @@ test_invalid_texture_layers (TestState *state, int x, int y)
|
|||||||
sizeof (CoglTextureVertex), /* stride */
|
sizeof (CoglTextureVertex), /* stride */
|
||||||
verts);
|
verts);
|
||||||
cogl_vertex_buffer_draw (vbo,
|
cogl_vertex_buffer_draw (vbo,
|
||||||
COGL_VERTICES_MODE_TRIANGLE_FAN,
|
COGL_VERTICES_MODE_TRIANGLE_FAN,
|
||||||
0, /* first */
|
0, /* first */
|
||||||
4); /* count */
|
4); /* count */
|
||||||
cogl_handle_unref (vbo);
|
cogl_handle_unref (vbo);
|
||||||
|
|
||||||
cogl_pop_matrix ();
|
cogl_pop_matrix ();
|
||||||
|
|
||||||
|
check_pixel (state, x, y, color);
|
||||||
|
check_pixel (state, x, y+1, color);
|
||||||
|
check_pixel (state, x, y+2, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_invalid_texture_layers (TestState *state, int x, int y)
|
||||||
|
{
|
||||||
|
CoglHandle material = cogl_material_new ();
|
||||||
|
|
||||||
|
/* explicitly create a layer with an invalid handle. This may be desireable
|
||||||
|
* if the user also sets a texture combine string that e.g. refers to a
|
||||||
|
* constant color. */
|
||||||
|
cogl_material_set_layer (material, 0, COGL_INVALID_HANDLE);
|
||||||
|
|
||||||
|
cogl_set_source (material);
|
||||||
|
|
||||||
cogl_handle_unref (material);
|
cogl_handle_unref (material);
|
||||||
|
|
||||||
/* We expect a white fallback material to be used */
|
/* We expect a white fallback material to be used */
|
||||||
check_pixel (state, x, y, 0xffffffff);
|
test_material_with_primitives (state, x, y, 0xffffffff);
|
||||||
check_pixel (state, x, y+1, 0xffffffff);
|
|
||||||
check_pixel (state, x, y+2, 0xffffffff);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -137,10 +147,6 @@ test_using_all_layers (TestState *state, int x, int y)
|
|||||||
GLint n_layers;
|
GLint n_layers;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
cogl_push_matrix ();
|
|
||||||
|
|
||||||
cogl_translate (x * QUAD_WIDTH, y * QUAD_WIDTH, 0);
|
|
||||||
|
|
||||||
/* Create a material that uses the maximum number of layers. All but
|
/* Create a material that uses the maximum number of layers. All but
|
||||||
the last layer will use a solid white texture. The last layer
|
the last layer will use a solid white texture. The last layer
|
||||||
will use a red texture. The layers will all be modulated together
|
will use a red texture. The layers will all be modulated together
|
||||||
@ -182,16 +188,13 @@ test_using_all_layers (TestState *state, int x, int y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
cogl_set_source (material);
|
cogl_set_source (material);
|
||||||
cogl_rectangle (0, 0, QUAD_WIDTH, QUAD_WIDTH);
|
|
||||||
|
|
||||||
cogl_pop_matrix ();
|
|
||||||
|
|
||||||
cogl_handle_unref (material);
|
cogl_handle_unref (material);
|
||||||
cogl_handle_unref (white_texture);
|
cogl_handle_unref (white_texture);
|
||||||
cogl_handle_unref (red_texture);
|
cogl_handle_unref (red_texture);
|
||||||
|
|
||||||
/* We expect the final fragment to be red */
|
/* We expect the final fragment to be red */
|
||||||
check_pixel (state, x, y, 0xff0000ff);
|
test_material_with_primitives (state, x, y, 0xff0000ff);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user