Module: wine Branch: master Commit: ad4c2bdb696fec1dc8e5a9e7603ccd9de487a7d9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ad4c2bdb696fec1dc8e5a9e760...
Author: H. Verbeet hverbeet@gmail.com Date: Fri Nov 17 13:23:53 2006 +0100
wined3d: Make the offscreen render mode a registry setting.
---
dlls/wined3d/device.c | 5 +---- dlls/wined3d/wined3d_main.c | 14 ++++++++++++++ dlls/wined3d/wined3d_private.h | 4 ++++ 3 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index ab529a9..239d15d 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -71,9 +71,6 @@ inline static Display *get_display( HDC return display; }
-/* TODO: setup some flags in the regestry to enable, disable pbuffer support */ -/* enable pbuffer support for offscreen textures */ -BOOL pbuffer_support = FALSE; /* allocate one pbuffer per surface */ BOOL pbuffer_per_surface = FALSE;
@@ -7414,7 +7411,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl
/* Offscreen rendering: PBuffers (currently disabled). * Also note that this path is never reached if FBOs are supported */ - } else if (pbuffer_support && + } else if (wined3d_settings.offscreen_rendering_mode == ORM_PBUFFER && (cfgs = device_find_fbconfigs(This, implicitSwapchainImpl, RenderSurface)) != NULL) {
/** ******************************************************************** diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c index 6fe6a68..e339815 100644 --- a/dlls/wined3d/wined3d_main.c +++ b/dlls/wined3d/wined3d_main.c @@ -41,6 +41,7 @@ wined3d_settings_t wined3d_settings = VBO_HW, /* Hardware by default */ FALSE, /* Use of GLSL disabled by default */ NP2_NATIVE, /* Use native NPOT textures, when available */ + ORM_BACKBUFFER, /* Use the backbuffer to do offscreen rendering */ RTL_AUTO, /* Automatically determine best locking method */ 64*1024*1024 /* 64MB texture memory by default */ }; @@ -202,6 +203,19 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, } /* There will be a couple of other choices for nonpow2, they are: TextureRecrangle and OpenGL 2 */ } + if ( !get_config_key( hkey, appkey, "OffscreenRenderingMode", buffer, size) ) + { + if (!strcmp(buffer,"backbuffer")) + { + TRACE("Using the backbuffer for offscreen rendering\n"); + wined3d_settings.offscreen_rendering_mode = ORM_BACKBUFFER; + } + else if (!strcmp(buffer,"pbuffer")) + { + TRACE("Using PBuffers for offscreen rendering\n"); + wined3d_settings.offscreen_rendering_mode = ORM_PBUFFER; + } + } if ( !get_config_key( hkey, appkey, "RenderTargetLockMode", buffer, size) ) { if (!strcmp(buffer,"disabled")) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index aa38261..b3465a8 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -135,6 +135,9 @@ static WINED3DGLTYPE const glTypeLookup[ #define NP2_REPACK 1 #define NP2_NATIVE 2
+#define ORM_BACKBUFFER 0 +#define ORM_PBUFFER 1 + #define SHADER_SW 0 #define SHADER_ARB 1 #define SHADER_GLSL 2 @@ -160,6 +163,7 @@ typedef struct wined3d_settings_s { BOOL glslRequested; /* nonpower 2 function */ int nonpower2_mode; + int offscreen_rendering_mode; int rendertargetlock_mode; /* Memory tracking and object counting */ unsigned int emulated_textureram;