Henri Verbeet : wined3d: Properly check if an attribute is used in streamsrc().
Alexandre Julliard
julliard at winehq.org
Tue Aug 25 08:44:30 CDT 2009
Module: wine
Branch: master
Commit: bda89180e15c861ce64993fceefcef85737b8000
URL: http://source.winehq.org/git/wine.git/?a=commit;h=bda89180e15c861ce64993fceefcef85737b8000
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Tue Aug 25 08:17:11 2009 +0200
wined3d: Properly check if an attribute is used in streamsrc().
---
dlls/wined3d/state.c | 27 ++++++++++++++++-----------
1 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 0bbd917..8e05464 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -4426,18 +4426,23 @@ static void streamsrc(DWORD state, IWineD3DStateBlockImpl *stateblock, struct wi
device->useDrawStridedSlow = FALSE;
}
}
- else if (fixup || (!dataLocations->elements[WINED3D_FFP_PSIZE].data
- && !dataLocations->position_transformed
- && (GL_SUPPORT(EXT_VERTEX_ARRAY_BGRA)
- || (!dataLocations->elements[WINED3D_FFP_DIFFUSE].data
- && !dataLocations->elements[WINED3D_FFP_SPECULAR].data))))
+ else
{
- /* Load the vertex data using named arrays */
- load_named = TRUE;
- device->useDrawStridedSlow = FALSE;
- } else {
- TRACE("Not loading vertex data\n");
- device->useDrawStridedSlow = TRUE;
+ WORD slow_mask = (1 << WINED3D_FFP_PSIZE);
+ slow_mask |= -!GL_SUPPORT(EXT_VERTEX_ARRAY_BGRA) & ((1 << WINED3D_FFP_DIFFUSE) | (1 << WINED3D_FFP_SPECULAR));
+
+ if (fixup || (!dataLocations->position_transformed
+ && !(dataLocations->use_map & slow_mask)))
+ {
+ /* Load the vertex data using named arrays */
+ load_named = TRUE;
+ device->useDrawStridedSlow = FALSE;
+ }
+ else
+ {
+ TRACE("Not loading vertex data\n");
+ device->useDrawStridedSlow = TRUE;
+ }
}
if (context->numberedArraysLoaded && !load_numbered)
More information about the wine-cvs
mailing list