[PATCH] In the default backbuffer based renderer in WineD3D the front and backbuffer share the same pixel format while D3D itself decouples them. A lot of applications use alpha on the backbuffer, so make sure we have alpha. This change is needed because the single pixel format which we had before always had alpha.

Roderick Colenbrander thunderbird2k at gmx.net
Fri Feb 22 17:27:38 CST 2008


---
 dlls/wined3d/context.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 19d2f30..769949a 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -210,6 +210,7 @@ WineD3DContext *CreateContext(IWineD3DDeviceImpl *This, IWineD3DSurfaceImpl *tar
         int attribs[256];
         int nAttribs = 0;
         unsigned int nFormats;
+        WINED3DFORMAT fmt = target->resource.format;
 
         hdc = GetDC(win_handle);
         if(hdc == NULL) {
@@ -224,7 +225,15 @@ WineD3DContext *CreateContext(IWineD3DDeviceImpl *This, IWineD3DSurfaceImpl *tar
         PUSH2(WGL_SUPPORT_OPENGL_ARB, GL_TRUE);
         PUSH2(WGL_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB); /* Make sure we receive an accelerated format. On windows (at least on ATI) this is not always the case */
 
-        if(!getColorBits(target->resource.format, &redBits, &greenBits, &blueBits, &alphaBits, &colorBits)) {
+        /* In case of ORM_BACKBUFFER, make sure to request an alpha component for X4R4G4B4/X8R8G8B8 as we might need it for the backbuffer. */
+        if(wined3d_settings.offscreen_rendering_mode == ORM_BACKBUFFER) {
+            if(target->resource.format == WINED3DFMT_X4R4G4B4)
+                fmt = WINED3DFMT_A4R4G4B4;
+            else if(target->resource.format == WINED3DFMT_X8R8G8B8)
+                fmt = WINED3DFMT_A8R8G8B8;
+        }
+
+        if(!getColorBits(fmt, &redBits, &greenBits, &blueBits, &alphaBits, &colorBits)) {
             ERR("Unable to get color bits for format %#x!\n", target->resource.format);
             return FALSE;
         }
-- 
1.5.3.8


--========GMX62941203764564617748--



More information about the wine-patches mailing list