diff options
author | José Fonseca <[email protected]> | 2012-03-22 12:16:17 +0000 |
---|---|---|
committer | Jose Fonseca <[email protected]> | 2015-11-09 11:08:27 +0000 |
commit | e524df5ef32fe8fada0695417bd86413d836a6bb (patch) | |
tree | a24edbce802aa4d4f411133a299ea2346ba14fad | |
parent | 24abbaff9ad177624c2b4906c7d94f5d91ac3cc0 (diff) |
st/wgl: Don't rely on GDI to bookkeep pixelformat for us.
This allows to use apitrace's retracediff script on Windows to retrace and
compare two builds of a Mesa based opengl32.dll/ICD side-by-side.
See also https://github.com/apitrace/apitrace/commit/e4a4f15f5b92e0abbd24d7d053da25f8278c9f64
-rw-r--r-- | src/gallium/state_trackers/wgl/stw_context.c | 9 | ||||
-rw-r--r-- | src/gallium/state_trackers/wgl/stw_framebuffer.c | 4 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/gallium/state_trackers/wgl/stw_context.c b/src/gallium/state_trackers/wgl/stw_context.c index 3e99cc44db7..19f06203e91 100644 --- a/src/gallium/state_trackers/wgl/stw_context.c +++ b/src/gallium/state_trackers/wgl/stw_context.c @@ -160,21 +160,18 @@ stw_create_context_attribs(HDC hdc, INT iLayerPlane, DHGLRC hShareContext, if (iLayerPlane != 0) return 0; - iPixelFormat = GetPixelFormat(hdc); - if(!iPixelFormat) - return 0; - /* * GDI only knows about displayable pixel formats, so determine the pixel * format from the framebuffer. * - * TODO: Remove the GetPixelFormat() above, and stop relying on GDI. + * This also allows to use a OpenGL DLL / ICD without installing. */ fb = stw_framebuffer_from_hdc( hdc ); if (fb) { - assert(iPixelFormat == fb->iDisplayablePixelFormat); iPixelFormat = fb->iPixelFormat; stw_framebuffer_release(fb); + } else { + return 0; } pfi = stw_pixelformat_get_info( iPixelFormat ); diff --git a/src/gallium/state_trackers/wgl/stw_framebuffer.c b/src/gallium/state_trackers/wgl/stw_framebuffer.c index 7b34fcbb5ed..cd8990d54f1 100644 --- a/src/gallium/state_trackers/wgl/stw_framebuffer.c +++ b/src/gallium/state_trackers/wgl/stw_framebuffer.c @@ -466,7 +466,9 @@ DrvSetPixelFormat(HDC hdc, LONG iPixelFormat) * avoid opengl32.dll's wglCreateContext to fail */ if (GetPixelFormat(hdc) == 0) { BOOL bRet = SetPixelFormat(hdc, iPixelFormat, NULL); - assert(bRet); + if (!bRet) { + debug_printf("SetPixelFormat failed\n"); + } } return TRUE; |