[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