Henri Verbeet : wined3d: Avoid the position_float4() fixup if the vertex pipe can handle pre-transformed vertices itself.
Alexandre Julliard
julliard at winehq.org
Mon Jun 17 14:07:47 CDT 2013
Module: wine
Branch: master
Commit: 4272d92f93fc9d458822da0b738f2a084e405c2a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4272d92f93fc9d458822da0b738f2a084e405c2a
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Mon Jun 17 09:07:48 2013 +0200
wined3d: Avoid the position_float4() fixup if the vertex pipe can handle pre-transformed vertices itself.
---
dlls/wined3d/directx.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index c97225c..760fa34 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -4682,12 +4682,18 @@ static void WINE_GLAPI warn_no_specular_func(const void *data)
WARN("GL_EXT_secondary_color not supported\n");
}
-static void fillGLAttribFuncs(const struct wined3d_gl_info *gl_info)
+static void wined3d_adapter_init_ffp_attrib_ops(const struct wined3d_adapter *adapter)
{
+ const struct wined3d_d3d_info *d3d_info = &adapter->d3d_info;
+ const struct wined3d_gl_info *gl_info = &adapter->gl_info;
+
position_funcs[WINED3D_FFP_EMIT_FLOAT1] = invalid_func;
position_funcs[WINED3D_FFP_EMIT_FLOAT2] = invalid_func;
position_funcs[WINED3D_FFP_EMIT_FLOAT3] = (glAttribFunc)gl_info->gl_ops.gl.p_glVertex3fv;
- position_funcs[WINED3D_FFP_EMIT_FLOAT4] = position_float4;
+ if (!d3d_info->xyzrhw)
+ position_funcs[WINED3D_FFP_EMIT_FLOAT4] = position_float4;
+ else
+ position_funcs[WINED3D_FFP_EMIT_FLOAT4] = (glAttribFunc)gl_info->gl_ops.gl.p_glVertex4fv;
position_funcs[WINED3D_FFP_EMIT_D3DCOLOR] = position_d3dcolor;
position_funcs[WINED3D_FFP_EMIT_UBYTE4] = invalid_func;
position_funcs[WINED3D_FFP_EMIT_SHORT2] = invalid_func;
@@ -5031,7 +5037,7 @@ static BOOL wined3d_adapter_init(struct wined3d_adapter *adapter, UINT ordinal)
WineD3D_ReleaseFakeGLContext(&fake_gl_ctx);
- fillGLAttribFuncs(&adapter->gl_info);
+ wined3d_adapter_init_ffp_attrib_ops(adapter);
return TRUE;
}
More information about the wine-cvs
mailing list