=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: wined3d: Add support for seamless cube map filtering.

Alexandre Julliard julliard at winehq.org
Wed Mar 8 16:01:39 CST 2017


Module: wine
Branch: master
Commit: c7f3308db7a6c5ff92a43095fdc260460f3b4d7d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c7f3308db7a6c5ff92a43095fdc260460f3b4d7d

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Wed Mar  8 12:07:23 2017 +0100

wined3d: Add support for seamless cube map filtering.

Seamless cube map filtering should always be enabled in D3D10+.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/d3d8/directx.c        | 3 ++-
 dlls/d3d9/directx.c        | 2 +-
 dlls/ddraw/ddraw_private.h | 3 ++-
 dlls/wined3d/context.c     | 8 +++++++-
 dlls/wined3d/directx.c     | 2 ++
 dlls/wined3d/wined3d_gl.h  | 1 +
 include/wine/wined3d.h     | 1 +
 7 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/dlls/d3d8/directx.c b/dlls/d3d8/directx.c
index f91e4af..107e32d 100644
--- a/dlls/d3d8/directx.c
+++ b/dlls/d3d8/directx.c
@@ -411,7 +411,8 @@ BOOL d3d8_init(struct d3d8 *d3d8)
 {
     DWORD flags = WINED3D_LEGACY_DEPTH_BIAS | WINED3D_VIDMEM_ACCOUNTING
             | WINED3D_HANDLE_RESTORE | WINED3D_PIXEL_CENTER_INTEGER
-            | WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR | WINED3D_NO_PRIMITIVE_RESTART;
+            | WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR | WINED3D_NO_PRIMITIVE_RESTART
+            | WINED3D_LEGACY_CUBEMAP_FILTERING;
 
     d3d8->IDirect3D8_iface.lpVtbl = &d3d8_vtbl;
     d3d8->refcount = 1;
diff --git a/dlls/d3d9/directx.c b/dlls/d3d9/directx.c
index cdbe2fc..fe7163f 100644
--- a/dlls/d3d9/directx.c
+++ b/dlls/d3d9/directx.c
@@ -580,7 +580,7 @@ BOOL d3d9_init(struct d3d9 *d3d9, BOOL extended)
 {
     DWORD flags = WINED3D_PRESENT_CONVERSION | WINED3D_HANDLE_RESTORE | WINED3D_PIXEL_CENTER_INTEGER
             | WINED3D_SRGB_READ_WRITE_CONTROL | WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR
-            | WINED3D_NO_PRIMITIVE_RESTART;
+            | WINED3D_NO_PRIMITIVE_RESTART | WINED3D_LEGACY_CUBEMAP_FILTERING;
 
     if (!extended)
         flags |= WINED3D_VIDMEM_ACCOUNTING;
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
index 1737ce6..48b6c70 100644
--- a/dlls/ddraw/ddraw_private.h
+++ b/dlls/ddraw/ddraw_private.h
@@ -61,7 +61,8 @@ struct FvfToDecl
 
 #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_LEGACY_UNBOUND_RESOURCE_COLOR | WINED3D_NO_PRIMITIVE_RESTART \
+        | WINED3D_LEGACY_CUBEMAP_FILTERING)
 
 enum ddraw_device_state
 {
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 8fac19e..a423fac 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -1969,13 +1969,19 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain,
         if (gl_info->supported[ARB_ES3_COMPATIBILITY])
         {
             gl_info->gl_ops.gl.p_glEnable(GL_PRIMITIVE_RESTART_FIXED_INDEX);
-            checkGLcall("Enable GL_PRIMITIVE_RESTART_FIXED_INDEX");
+            checkGLcall("enable GL_PRIMITIVE_RESTART_FIXED_INDEX");
         }
         else
         {
             FIXME("OpenGL implementation does not support GL_PRIMITIVE_RESTART_FIXED_INDEX.\n");
         }
     }
+    if (!(d3d_info->wined3d_creation_flags & WINED3D_LEGACY_CUBEMAP_FILTERING)
+            && gl_info->supported[ARB_SEAMLESS_CUBE_MAP])
+    {
+        gl_info->gl_ops.gl.p_glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
+        checkGLcall("enable seamless cube map filtering");
+    }
     if (gl_info->supported[ARB_CLIP_CONTROL])
         GL_EXTCALL(glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, GL_LOWER_LEFT));
     device->shader_backend->shader_init_context_state(ret);
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 425d1fd..51c6ad2 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -147,6 +147,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
     {"GL_ARB_point_sprite",                 ARB_POINT_SPRITE              },
     {"GL_ARB_provoking_vertex",             ARB_PROVOKING_VERTEX          },
     {"GL_ARB_sampler_objects",              ARB_SAMPLER_OBJECTS           },
+    {"GL_ARB_seamless_cube_map",            ARB_SEAMLESS_CUBE_MAP         },
     {"GL_ARB_shader_atomic_counters",       ARB_SHADER_ATOMIC_COUNTERS    },
     {"GL_ARB_shader_bit_encoding",          ARB_SHADER_BIT_ENCODING       },
     {"GL_ARB_shader_image_load_store",      ARB_SHADER_IMAGE_LOAD_STORE   },
@@ -3765,6 +3766,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
          * extension for core-only support. */
         {ARB_FRAGMENT_COORD_CONVENTIONS,   MAKEDWORD_VERSION(3, 2)},
         {ARB_PROVOKING_VERTEX,             MAKEDWORD_VERSION(3, 2)},
+        {ARB_SEAMLESS_CUBE_MAP,            MAKEDWORD_VERSION(3, 2)},
         {ARB_SYNC,                         MAKEDWORD_VERSION(3, 2)},
         {ARB_VERTEX_ARRAY_BGRA,            MAKEDWORD_VERSION(3, 2)},
 
diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h
index 00fb7cb..99930c4 100644
--- a/dlls/wined3d/wined3d_gl.h
+++ b/dlls/wined3d/wined3d_gl.h
@@ -80,6 +80,7 @@ enum wined3d_gl_extension
     ARB_POINT_SPRITE,
     ARB_PROVOKING_VERTEX,
     ARB_SAMPLER_OBJECTS,
+    ARB_SEAMLESS_CUBE_MAP,
     ARB_SHADER_ATOMIC_COUNTERS,
     ARB_SHADER_BIT_ENCODING,
     ARB_SHADER_IMAGE_LOAD_STORE,
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 0fcf07c..acdb4f3 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -1279,6 +1279,7 @@ enum wined3d_shader_byte_code_format
 #define WINED3D_SRGB_READ_WRITE_CONTROL                         0x00000200
 #define WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR                   0x00000400
 #define WINED3D_NO_PRIMITIVE_RESTART                            0x00000800
+#define WINED3D_LEGACY_CUBEMAP_FILTERING                        0x00001000
 
 #define WINED3D_RESZ_CODE                                       0x7fa05000
 




More information about the wine-cvs mailing list