Module: wine Branch: master Commit: c7f3308db7a6c5ff92a43095fdc260460f3b4d7d URL: http://source.winehq.org/git/wine.git/?a=commit;h=c7f3308db7a6c5ff92a43095fd...
Author: Józef Kucia jkucia@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@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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