wined3d: Move register count pass to SetFunction.

Move semantics pointers out of the reg_maps, make them persistent data
in the shader (again, for future software shaders).
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 0f354c1..a71539a 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1297,11 +1297,6 @@
     char constantsI[MAX_CONST_I];           /* pixel & vertex >= 2.0 */
     char constantsB[MAX_CONST_B];           /* pixel & vertex >= 2.0 */
     
-    /* Semantics maps (semantic -> reg_token)
-     * Use 0 as default (bit 31 is always 1 on a valid token) */
-    DWORD* semantics_in;                    /* vertex, pixel */
-    DWORD* semantics_out;                   /* vertex */
-
     /* Sampler usage tokens 
      * Use 0 as default (bit 31 is always 1 on a valid token) */
     DWORD samplers[MAX_SAMPLERS];
@@ -1480,6 +1475,8 @@
 extern void shader_get_registers_used(
     IWineD3DBaseShader *iface,
     shader_reg_maps* reg_maps,
+    DWORD* semantics_in,
+    DWORD* semantics_out,
     CONST DWORD* pToken);
 
 extern void shader_generate_glsl_declarations(
@@ -1561,9 +1558,10 @@
 
     DWORD usage;
 
-    /* vertex declaration array mapping */
-    DWORD arrayUsageMap[WINED3DSHADERDECLUSAGE_MAX_USAGE];
- 
+    /* Vertex shader input and output semantics */
+    DWORD semantics_in [WINED3DSHADERDECLUSAGE_MAX_USAGE];
+    DWORD semantics_out [WINED3DSHADERDECLUSAGE_MAX_USAGE];
+
     /* run time datas...  */
     VSHADERDATA                *data;
     IWineD3DVertexDeclaration  *vertexDeclaration;
@@ -1591,6 +1589,9 @@
     IUnknown                   *parent;
     IWineD3DDeviceImpl         *wineD3DDevice;
 
+    /* Pixel shader input semantics */
+    DWORD semantics_in [WINED3DSHADERDECLUSAGE_MAX_USAGE];
+
     /* run time data */
     PSHADERDATA                *data;