Module: wine Branch: stable Commit: 447e483ff216d163c7f77c64f16965b1577cd5f5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=447e483ff216d163c7f77c64f1...
Author: Rico Schüller kgbricola@web.de Date: Tue Nov 5 23:08:30 2013 +0100
wined3d: Use GL_ARB_texture_mirror_clamp_to_edge when available.
(cherry picked from commit de9e1cdcae3ededfa20fb6d85f1785fe01b454de)
---
dlls/wined3d/directx.c | 12 +++++++++--- dlls/wined3d/wined3d_gl.h | 1 + 2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index ae3f0db..aa4d710 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -133,6 +133,7 @@ static const struct wined3d_extension_map gl_extension_map[] = {"GL_ARB_texture_env_dot3", ARB_TEXTURE_ENV_DOT3 }, {"GL_ARB_texture_float", ARB_TEXTURE_FLOAT }, {"GL_ARB_texture_mirrored_repeat", ARB_TEXTURE_MIRRORED_REPEAT }, + {"GL_ARB_texture_mirror_clamp_to_edge", ARB_TEXTURE_MIRROR_CLAMP_TO_EDGE}, {"GL_ARB_texture_non_power_of_two", ARB_TEXTURE_NON_POWER_OF_TWO }, {"GL_ARB_texture_rectangle", ARB_TEXTURE_RECTANGLE }, {"GL_ARB_texture_rg", ARB_TEXTURE_RG }, @@ -2947,6 +2948,11 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter) if (!counter_bits) gl_info->supported[ARB_OCCLUSION_QUERY] = FALSE; } + if (!gl_info->supported[ARB_TEXTURE_MIRROR_CLAMP_TO_EDGE] && gl_info->supported[ATI_TEXTURE_MIRROR_ONCE]) + { + TRACE(" IMPLIED: ARB_texture_mirror_clamp_to_edge support (by ATI_texture_mirror_once).\n"); + gl_info->supported[ARB_TEXTURE_MIRROR_CLAMP_TO_EDGE] = TRUE; + }
wined3d_adapter_init_limits(gl_info);
@@ -3064,7 +3070,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter) gl_info->wrap_lookup[WINED3D_TADDRESS_BORDER - WINED3D_TADDRESS_WRAP] = gl_info->supported[ARB_TEXTURE_BORDER_CLAMP] ? GL_CLAMP_TO_BORDER_ARB : GL_REPEAT; gl_info->wrap_lookup[WINED3D_TADDRESS_MIRROR_ONCE - WINED3D_TADDRESS_WRAP] = - gl_info->supported[ATI_TEXTURE_MIRROR_ONCE] ? GL_MIRROR_CLAMP_TO_EDGE_ATI : GL_REPEAT; + gl_info->supported[ARB_TEXTURE_MIRROR_CLAMP_TO_EDGE] ? GL_MIRROR_CLAMP_TO_EDGE : GL_REPEAT;
adapter->d3d_info.valid_rt_mask = 0; for (i = 0; i < gl_info->limits.buffers; ++i) @@ -4376,7 +4382,7 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d *wined3d, UINT adapte { caps->TextureAddressCaps |= WINED3DPTADDRESSCAPS_MIRROR; } - if (gl_info->supported[ATI_TEXTURE_MIRROR_ONCE]) + if (gl_info->supported[ARB_TEXTURE_MIRROR_CLAMP_TO_EDGE]) { caps->TextureAddressCaps |= WINED3DPTADDRESSCAPS_MIRRORONCE; } @@ -4394,7 +4400,7 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d *wined3d, UINT adapte { caps->VolumeTextureAddressCaps |= WINED3DPTADDRESSCAPS_MIRROR; } - if (gl_info->supported[ATI_TEXTURE_MIRROR_ONCE]) + if (gl_info->supported[ARB_TEXTURE_MIRROR_CLAMP_TO_EDGE]) { caps->VolumeTextureAddressCaps |= WINED3DPTADDRESSCAPS_MIRRORONCE; } diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h index 9c4af05..50d9bab 100644 --- a/dlls/wined3d/wined3d_gl.h +++ b/dlls/wined3d/wined3d_gl.h @@ -84,6 +84,7 @@ enum wined3d_gl_extension ARB_TEXTURE_ENV_DOT3, ARB_TEXTURE_FLOAT, ARB_TEXTURE_MIRRORED_REPEAT, + ARB_TEXTURE_MIRROR_CLAMP_TO_EDGE, ARB_TEXTURE_NON_POWER_OF_TWO, ARB_TEXTURE_RECTANGLE, ARB_TEXTURE_RG,