[PATCH] wined3d: Add quirk for Nvidia viewport subpixel bits bug.

Józef Kucia jkucia at codeweavers.com
Sun Feb 26 12:55:36 CST 2017


Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 dlls/wined3d/directx.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 5b1605d..ab3b103 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -899,6 +899,12 @@ static BOOL match_broken_arb_fog(const struct wined3d_gl_info *gl_info, const ch
     return data[0] != 0x00ff0000 || data[3] != 0x0000ff00;
 }
 
+static BOOL match_nvidia_viewport_subpixel_bits(const struct wined3d_gl_info *gl_info, const char *gl_renderer,
+        enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
+{
+    return gl_vendor == GL_VENDOR_NVIDIA && gl_info->supported[ARB_VIEWPORT_ARRAY];
+}
+
 static void quirk_apple_glsl_constants(struct wined3d_gl_info *gl_info)
 {
     /* MacOS needs uniforms for relative addressing offsets. This can accumulate to quite a few uniforms.
@@ -1027,6 +1033,17 @@ static void quirk_broken_arb_fog(struct wined3d_gl_info *gl_info)
     gl_info->quirks |= WINED3D_QUIRK_BROKEN_ARB_FOG;
 }
 
+static void quirk_broken_viewport_subpixel_bits(struct wined3d_gl_info *gl_info)
+{
+    TRACE("Disabling ARB_viewport_array.\n");
+    gl_info->supported[ARB_VIEWPORT_ARRAY] = FALSE;
+    if (gl_info->supported[ARB_CLIP_CONTROL])
+    {
+        TRACE("Disabling ARB_clip_control because ARB_viewport_array is not supported.\n");
+        gl_info->supported[ARB_CLIP_CONTROL] = FALSE;
+    }
+}
+
 struct driver_quirk
 {
     BOOL (*match)(const struct wined3d_gl_info *gl_info, const char *gl_renderer,
@@ -1117,6 +1134,11 @@ static const struct driver_quirk quirk_table[] =
         quirk_broken_arb_fog,
         "ARBfp fogstart == fogend workaround"
     },
+    {
+        match_nvidia_viewport_subpixel_bits,
+        quirk_broken_viewport_subpixel_bits,
+        "Nvidia viewport subpixel bits bug",
+    }
 };
 
 /* Certain applications (Steam) complain if we report an outdated driver version. In general,
-- 
2.10.2




More information about the wine-patches mailing list