---
 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

Reply via email to