diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c
index 13349de3cf956834c095dd4db164a09c0e2e865e..e50bf8f8e7f1d2ae90c6f9f74cad0bcad195178d 100644
--- a/dlls/wined3d/vertexshader.c
+++ b/dlls/wined3d/vertexshader.c
@@ -691,6 +691,10 @@ static inline BOOL swizzled_attribs_differ(IWineD3DVertexShaderImpl *This, IWine
     DWORD usage_idx;
 
     for(i = 0; i < vdecl->declarationWNumElements; i++) {
+        /* Ignore tesselated streams and the termination entry(position0, stream 255, unused) */
+        if(vdecl->pDeclarationWine[i].Stream >= MAX_STREAMS ||
+           vdecl->pDeclarationWine[i].Type == WINED3DDECLTYPE_UNUSED) continue;
+
         for(j = 0; j < MAX_ATTRIBS; j++) {
             if(!This->baseShader.reg_maps.attributes[j]) continue;