[PATCH 7/7] wined3d: Make total video memory limit optional.
Józef Kucia
jkucia at codeweavers.com
Thu Dec 15 06:45:11 CST 2016
It's enough to enable this workaround for ddraw.
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
This isn't strictly required.
---
dlls/ddraw/ddraw_private.h | 4 ++--
dlls/wined3d/directx.c | 7 ++++---
include/wine/wined3d.h | 19 ++++++++++---------
3 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
index 731d441..af27cd3 100644
--- a/dlls/ddraw/ddraw_private.h
+++ b/dlls/ddraw/ddraw_private.h
@@ -60,8 +60,8 @@ struct FvfToDecl
#define DDRAW_STRIDE_ALIGNMENT 8
#define DDRAW_WINED3D_FLAGS (WINED3D_LEGACY_DEPTH_BIAS | WINED3D_VIDMEM_ACCOUNTING \
- | WINED3D_RESTORE_MODE_ON_ACTIVATE | WINED3D_FOCUS_MESSAGES | WINED3D_PIXEL_CENTER_INTEGER \
- | WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR | WINED3D_NO_PRIMITIVE_RESTART)
+ | WINED3D_LIMIT_TOTAL_VIDMEM | WINED3D_RESTORE_MODE_ON_ACTIVATE | WINED3D_FOCUS_MESSAGES \
+ | WINED3D_PIXEL_CENTER_INTEGER | WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR | WINED3D_NO_PRIMITIVE_RESTART)
enum ddraw_device_state
{
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 857d8e3..dbb0355 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1529,7 +1529,7 @@ static const struct gpu_description *query_gpu_description(const struct wined3d_
}
static void init_driver_info(struct wined3d_driver_info *driver_info,
- const struct gpu_description *gpu_desc, UINT64 vram_bytes)
+ const struct gpu_description *gpu_desc, UINT64 vram_bytes, unsigned int wined3d_creation_flags)
{
OSVERSIONINFOW os_version;
WORD driver_os_version;
@@ -1616,7 +1616,8 @@ static void init_driver_info(struct wined3d_driver_info *driver_info,
* with newer GPUs we limit the amount of video memory for older Windows
* versions.
*/
- if (driver_model < DRIVER_MODEL_NT6X && driver_info->vram_bytes > LONG_MAX - MAX_FRAMEBUFFER_VIDMEM)
+ if (driver_model < DRIVER_MODEL_NT6X && wined3d_creation_flags & WINED3D_LIMIT_TOTAL_VIDMEM
+ && driver_info->vram_bytes > LONG_MAX - MAX_FRAMEBUFFER_VIDMEM)
{
driver_info->vram_bytes = LONG_MAX - MAX_FRAMEBUFFER_VIDMEM;
TRACE("Limiting amount of video memory to %s bytes for OS version older than Vista.\n",
@@ -4106,7 +4107,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter, DWORD
}
}
fixup_extensions(gl_info, gl_renderer_str, gl_vendor, gpu_description->vendor, gpu_description->card);
- init_driver_info(driver_info, gpu_description, vram_bytes);
+ init_driver_info(driver_info, gpu_description, vram_bytes, wined3d_creation_flags);
gl_ext_emul_mask = adapter->vertex_pipe->vp_get_emul_mask(gl_info)
| adapter->fragment_pipe->get_emul_mask(gl_info);
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 7271ec0..528003b 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -1259,15 +1259,16 @@ enum wined3d_display_rotation
#define WINED3D_LEGACY_DEPTH_BIAS 0x00000001
#define WINED3D_NO3D 0x00000002
#define WINED3D_VIDMEM_ACCOUNTING 0x00000004
-#define WINED3D_PRESENT_CONVERSION 0x00000008
-#define WINED3D_RESTORE_MODE_ON_ACTIVATE 0x00000010
-#define WINED3D_FOCUS_MESSAGES 0x00000020
-#define WINED3D_HANDLE_RESTORE 0x00000040
-#define WINED3D_PIXEL_CENTER_INTEGER 0x00000080
-#define WINED3D_LEGACY_FFP_LIGHTING 0x00000100
-#define WINED3D_SRGB_READ_WRITE_CONTROL 0x00000200
-#define WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR 0x00000400
-#define WINED3D_NO_PRIMITIVE_RESTART 0x00000800
+#define WINED3D_LIMIT_TOTAL_VIDMEM 0x00000008
+#define WINED3D_PRESENT_CONVERSION 0x00000010
+#define WINED3D_RESTORE_MODE_ON_ACTIVATE 0x00000020
+#define WINED3D_FOCUS_MESSAGES 0x00000040
+#define WINED3D_HANDLE_RESTORE 0x00000080
+#define WINED3D_PIXEL_CENTER_INTEGER 0x00000100
+#define WINED3D_LEGACY_FFP_LIGHTING 0x00000200
+#define WINED3D_SRGB_READ_WRITE_CONTROL 0x00000400
+#define WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR 0x00000800
+#define WINED3D_NO_PRIMITIVE_RESTART 0x00001000
#define WINED3D_RESZ_CODE 0x7fa05000
--
2.7.3
More information about the wine-patches
mailing list