Module: wine Branch: master Commit: b882a70282a766dd51ac68d5c88d5198c0d942a4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b882a70282a766dd51ac68d5c8...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Thu Jan 24 11:37:39 2013 +0100
wined3d: Properly set WINED3DFMT_FLAG_VTF in init_format_texture_info().
---
dlls/wined3d/directx.c | 24 +++--------------------- dlls/wined3d/utils.c | 5 +++++ 2 files changed, 8 insertions(+), 21 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 5b3de2e..33871c6 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -3877,24 +3877,6 @@ static BOOL CheckSurfaceCapability(const struct wined3d_adapter *adapter, return FALSE; }
-static BOOL CheckVertexTextureCapability(const struct wined3d_adapter *adapter, - const struct wined3d_format *format) -{ - const struct wined3d_gl_info *gl_info = &adapter->gl_info; - - if (!gl_info->limits.vertex_samplers || !(format->flags & WINED3DFMT_FLAG_VTF)) - return FALSE; - - switch (format->id) - { - case WINED3DFMT_R32G32B32A32_FLOAT: - case WINED3DFMT_R32_FLOAT: - return TRUE; - default: - return !(gl_info->quirks & WINED3D_QUIRK_LIMITED_TEX_FILTERING); - } -} - HRESULT CDECL wined3d_check_device_format(const struct wined3d *wined3d, UINT adapter_idx, enum wined3d_device_type device_type, enum wined3d_format_id adapter_format_id, DWORD usage, enum wined3d_resource_type resource_type, enum wined3d_format_id check_format_id) @@ -4014,7 +3996,7 @@ HRESULT CDECL wined3d_check_device_format(const struct wined3d *wined3d, UINT ad
if (usage & WINED3DUSAGE_QUERY_VERTEXTEXTURE) { - if (!CheckVertexTextureCapability(adapter, format)) + if (!(format->flags & WINED3DFMT_FLAG_VTF)) { TRACE("[FAILED] - No vertex texture support.\n"); return WINED3DERR_NOTAVAILABLE; @@ -4180,7 +4162,7 @@ HRESULT CDECL wined3d_check_device_format(const struct wined3d *wined3d, UINT ad
if (usage & WINED3DUSAGE_QUERY_VERTEXTEXTURE) { - if (!CheckVertexTextureCapability(adapter, format)) + if (!(format->flags & WINED3DFMT_FLAG_VTF)) { TRACE("[FAILED] - No vertex texture support.\n"); return WINED3DERR_NOTAVAILABLE; @@ -4348,7 +4330,7 @@ HRESULT CDECL wined3d_check_device_format(const struct wined3d *wined3d, UINT ad
if (usage & WINED3DUSAGE_QUERY_VERTEXTEXTURE) { - if (!CheckVertexTextureCapability(adapter, format)) + if (!(format->flags & WINED3DFMT_FLAG_VTF)) { TRACE("[FAILED] - No vertex texture support.\n"); return WINED3DERR_NOTAVAILABLE; diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 39309ae..c1f6125 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -1287,8 +1287,13 @@ static BOOL init_format_texture_info(struct wined3d_adapter *adapter, struct win format->height_scale.numerator = 1; format->height_scale.denominator = 1;
+ if (!gl_info->limits.vertex_samplers) + format->flags &= ~WINED3DFMT_FLAG_VTF; + if (!(gl_info->quirks & WINED3D_QUIRK_LIMITED_TEX_FILTERING)) format->flags |= WINED3DFMT_FLAG_FILTERING; + else if (format->id != WINED3DFMT_R32G32B32A32_FLOAT && format->id != WINED3DFMT_R32_FLOAT) + format->flags &= ~WINED3DFMT_FLAG_VTF;
if (format->glGammaInternal != format->glInternal) {