Roderick Colenbrander : opengl32: Drop the ChoosePixelFormat test as it is very unreliable.

Alexandre Julliard julliard at winehq.org
Wed Apr 30 06:57:41 CDT 2008


Module: wine
Branch: master
Commit: 3f89e1a0538c9b7dc6c14177c5c08b83aa6887a9
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3f89e1a0538c9b7dc6c14177c5c08b83aa6887a9

Author: Roderick Colenbrander <thunderbird2k at gmx.net>
Date:   Wed Apr 30 10:54:19 2008 +0000

opengl32: Drop the ChoosePixelFormat test as it is very unreliable.

---

 dlls/opengl32/tests/opengl.c |   75 ------------------------------------------
 1 files changed, 0 insertions(+), 75 deletions(-)

diff --git a/dlls/opengl32/tests/opengl.c b/dlls/opengl32/tests/opengl.c
index 1a3b770..db9504f 100644
--- a/dlls/opengl32/tests/opengl.c
+++ b/dlls/opengl32/tests/opengl.c
@@ -176,80 +176,6 @@ static void test_pbuffers(HDC hdc)
     else skip("Pbuffer test for offscreen pixelformat skipped as no offscreen-only format with pbuffer capabilities has been found\n");
 }
 
-static void test_choosepixelformat(HDC hdc)
-{
-    int iPixelFormat;
-    int nFormats;
-    BOOL found=FALSE;
-    PIXELFORMATDESCRIPTOR pfd = {
-        sizeof(PIXELFORMATDESCRIPTOR),
-        1,                     /* version */
-        PFD_DRAW_TO_WINDOW |
-        PFD_SUPPORT_OPENGL |
-        PFD_DOUBLEBUFFER,
-        PFD_TYPE_RGBA,
-        32,                    /* 32-bit color depth */
-        0, 0, 0, 0, 0, 0,      /* color bits */
-        0,                     /* alpha buffer */
-        0,                     /* shift bit */
-        0,                     /* accumulation buffer */
-        0, 0, 0, 0,            /* accum bits */
-        0,                     /* z-buffer */
-        0,                     /* stencil buffer */
-        0,                     /* auxiliary buffer */
-        PFD_MAIN_PLANE,        /* main layer */
-        0,                     /* reserved */
-        0, 0, 0                /* layer masks */
-    };
-
-    /* Below we test the behavior of ChoosePixelFormat. As documented on MSDN this
-     * function doesn't give any guarantees about its outcome. Programs should not
-     * rely on weird behavior of the function but unfortunately a few programs like
-     * e.g. Serious Sam TSE rely on it.
-     *
-     * MSDN documents of a few flags like double buffering / stereo that they can be set to DONTCARE.
-     * It appears that a 0 value on other options like alpha, red, .. means DONTCARE. The hypothesis
-     * is that ChoosePixelFormat returns the first available format which matches the criteria.
-     *
-     * This test tries to proof the DONTCARE behavior by passing an almost 'empty' pfd to
-     * ChoosePixelFormat. The pfd only has some really needed flags (RGBA, window, double buffer) set.
-     * Further a 32 bit color buffer has been requested. The idea is that when a format with e.g. depth or stencil bits
-     * is returned, while there are also 'better' candidates in the list without them (but located AFTER the returned one)
-     * that an option set to zero means DONTCARE. We try to proof this by checking the aux/depth/stencil bits.
-     * Proofing this behavior for the color bits isn't possible as all formats have red/green/blue/(alpha), so we assume
-     * that if it holds for aux/depth/stencil it also holds for the others.
-     *
-     * The test below passes at least on various ATI cards (rv250, r300) and Nvidia cards.
-     */
-
-    iPixelFormat = ChoosePixelFormat(hdc, &pfd);
-    if(iPixelFormat) {
-        PIXELFORMATDESCRIPTOR pfd_tmp;
-        BOOL res;
-        int i;
-
-        memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR));
-        res = DescribePixelFormat(hdc, iPixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
-
-        nFormats = DescribePixelFormat(hdc, 0, 0, NULL);
-        /* Start testing from iPixelFormat, second formats start counting from index=1, so use '<=' */
-        for(i=iPixelFormat; i<=nFormats; i++) {
-            memset(&pfd_tmp, 0, sizeof(PIXELFORMATDESCRIPTOR));
-            res = DescribePixelFormat(hdc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd_tmp);
-            if(!res)
-                continue;
-
-            /* Check if there is a format which better matches the requirements */
-            if((pfd_tmp.cAuxBuffers < pfd.cAuxBuffers) || (pfd_tmp.cDepthBits < pfd.cDepthBits) || (pfd_tmp.cStencilBits < pfd.cStencilBits))
-                found = TRUE;
-        }
-
-        /* When found=TRUE we were able to confirm our hypothesis */
-        ok(found == TRUE, "Unable to confirm DONTCARE behavior of unset pixelformatdescriptor flags\n");
-    }
-
-}
-
 static void test_setpixelformat(HDC winhdc)
 {
     int res = 0;
@@ -472,7 +398,6 @@ START_TEST(opengl)
         ok(res, "wglMakeCurrent failed!\n");
         init_functions();
 
-        test_choosepixelformat(hdc);
         test_setpixelformat(hdc);
         test_colorbits(hdc);
         test_gdi_dbuf(hdc);




More information about the wine-cvs mailing list