[PATCH 2/5] wined3d: Properly check if an attribute is used in streamsrc().
Henri Verbeet
hverbeet at codeweavers.com
Tue Aug 25 01:17:11 CDT 2009
---
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)
--
1.6.0.6
More information about the wine-patches
mailing list