--- tests/spec/gl-1.0/dlist-bitmap.c | 46 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-)
diff --git a/tests/spec/gl-1.0/dlist-bitmap.c b/tests/spec/gl-1.0/dlist-bitmap.c index a8c3e6d..203a9d9 100644 --- a/tests/spec/gl-1.0/dlist-bitmap.c +++ b/tests/spec/gl-1.0/dlist-bitmap.c @@ -61,11 +61,11 @@ struct bitmap_info static struct bitmap_info bitmaps[NUM_BITMAPS]; static GLuint ListBase; static GLubyte *refImage; -static const float yellow[3] = {0.7, 1, 0.5}; +static const float yellow[3] = {1, 1, 0.0}; static void -init_bitmaps(void) +create_bitmaps(void) { unsigned i, j; @@ -94,6 +94,17 @@ init_bitmaps(void) static void +free_bitmaps(void) +{ + glDeleteLists(ListBase, NUM_BITMAPS); +} + + +/** + * Draw all the bitmaps using the given drawing mode. + * \param count indicates the number of bitmaps to draw. + */ +static void draw_bitmaps(enum draw_mode mode, unsigned count) { unsigned i; @@ -182,6 +193,8 @@ piglit_display(void) glViewport(0, 0, piglit_width, piglit_height); + create_bitmaps(); + /* * draw reference image with plain glBitmap calls */ @@ -221,9 +234,37 @@ piglit_display(void) pass = false; } + /* + * Delete three of the bitmap display lists. This basically + * generates a "hole" in Mesa's bitmap texture atlas which has + * to be coped with. + */ + glDeleteLists(ListBase + 7, 3); + + /* + * Draw new reference image with separate glCallList calls. + * Calling the deleted list should be a no-op. + */ + glClear(GL_COLOR_BUFFER_BIT); + glColor3fv(yellow); + glRasterPos2f(-1, 0); + draw_bitmaps(CALL_LIST, NUM_BITMAPS); + glReadPixels(0, 0, piglit_width, piglit_height, + GL_RGBA, GL_UNSIGNED_BYTE, refImage); + + /* + * Draw bitmaps with glCallLists again. + * Calling the deleted list should be a no-op. + */ + if (!test_mode(CALL_LISTS, NUM_BITMAPS, + "glCallLists(bitmaps) after delete")) { + pass = false; + } + piglit_present_results(); free(refImage); + free_bitmaps(); return pass ? PIGLIT_PASS : PIGLIT_FAIL; } @@ -232,5 +273,4 @@ piglit_display(void) void piglit_init(int argc, char **argv) { - init_bitmaps(); } -- 1.9.1 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit