Module: wine Branch: refs/heads/master Commit: 4d6cfb63512ea7dd6c986856b6f5bfbfd06e71e5 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=4d6cfb63512ea7dd6c986856...
Author: Jan Zerebecki jan.wine@zerebecki.de Date: Tue Aug 8 00:03:06 2006 +0200
wined3d: Registry setting for the amount of simulated texture memory.
Set VideoMemorySize under HKCU\Software\Wine\Direct3D to amount in MB as string.
---
dlls/wined3d/device.c | 20 ++++++++++---------- dlls/wined3d/wined3d_main.c | 14 ++++++++++++++ dlls/wined3d/wined3d_private.h | 2 ++ 3 files changed, 26 insertions(+), 10 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 7429512..7af7151 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -70,9 +70,6 @@ inline static Display *get_display( HDC return display; }
-/* Memory tracking and object counting */ -static unsigned int emulated_textureram = 64*1024*1024; - /* TODO: setup some flags in the regestry to enable, disable pbuffer support */ /* enable pbuffer support for offscreen textures */ BOOL pbuffer_support = FALSE; @@ -2264,19 +2261,22 @@ static HRESULT WINAPI IWineD3DDeviceImpl static UINT WINAPI IWineD3DDeviceImpl_GetAvailableTextureMem(IWineD3DDevice *iface) { /** NOTE: There's a probably a hack-around for this one by putting as many pbuffers, VBO's (or whatever) * Into the video ram as possible and seeing how many fit - * you can also get the correct initial value from via X and ATI's driver + * you can also get the correct initial value from nvidia and ATI's driver via X + * texture memory is video memory + AGP memory *******************/ IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; static BOOL showfixmes = TRUE; if (showfixmes) { - FIXME("(%p) : stub, emulating %dMB for now, returning %dMB\n", This, (emulated_textureram/(1024*1024)), - ((emulated_textureram - wineD3DGlobalStatistics->glsurfaceram) / (1024*1024))); + FIXME("(%p) : stub, simulating %dMB for now, returning %dMB left\n", This, + (wined3d_settings.emulated_textureram/(1024*1024)), + ((wined3d_settings.emulated_textureram - wineD3DGlobalStatistics->glsurfaceram) / (1024*1024))); showfixmes = FALSE; } - TRACE("(%p) : emulating %dMB for now, returning %dMB\n", This, (emulated_textureram/(1024*1024)), - ((emulated_textureram - wineD3DGlobalStatistics->glsurfaceram) / (1024*1024))); - /* videomemory is simulated videomemory + AGP memory left */ - return (emulated_textureram - wineD3DGlobalStatistics->glsurfaceram); + TRACE("(%p) : simulating %dMB, returning %dMB left\n", This, + (wined3d_settings.emulated_textureram/(1024*1024)), + ((wined3d_settings.emulated_textureram - wineD3DGlobalStatistics->glsurfaceram) / (1024*1024))); + /* return simulated texture memory left */ + return (wined3d_settings.emulated_textureram - wineD3DGlobalStatistics->glsurfaceram); }
diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c index 1021932..6b43995 100644 --- a/dlls/wined3d/wined3d_main.c +++ b/dlls/wined3d/wined3d_main.c @@ -100,6 +100,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, HKEY hkey = 0; HKEY appkey = 0; DWORD len; + wined3d_settings.emulated_textureram = 64*1024*1024;
DisableThreadLibraryCalls(hInstDLL);
@@ -225,6 +226,19 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, wined3d_settings.rendertargetlock_mode = RTL_TEXTEX; } } + if ( !get_config_key( hkey, appkey, "VideoMemorySize", buffer, size) ) + { + int TmpVideoMemorySize = atoi(buffer); + if(TmpVideoMemorySize > 0) + { + wined3d_settings.emulated_textureram = TmpVideoMemorySize *1024*1024; + TRACE("Use %iMB = %d byte for emulated_textureram\n", + TmpVideoMemorySize, + wined3d_settings.emulated_textureram); + } + else + ERR("VideoMemorySize is %i but must be >0\n", TmpVideoMemorySize); + } } if (wined3d_settings.vs_mode == VS_HW) TRACE("Allow HW vertex shaders\n"); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index a87439b..0010062 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -159,6 +159,8 @@ typedef struct wined3d_settings_s { /* nonpower 2 function */ int nonpower2_mode; int rendertargetlock_mode; +/* Memory tracking and object counting */ + unsigned int emulated_textureram; } wined3d_settings_t;
extern wined3d_settings_t wined3d_settings;