wined3d: Reverse semantics maps for shaders.
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index b8a7c03..0f6d85e 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1283,6 +1283,11 @@
 #define MAX_CONST_I 16
 #define MAX_CONST_B 16
 
+typedef struct semantic {
+    DWORD usage;
+    DWORD reg;
+} semantic;
+
 typedef struct shader_reg_maps {
 
     char texcoord[MAX_REG_TEXCRD];          /* pixel < 3.0 */
@@ -1367,6 +1372,16 @@
     IWineD3DBaseShader *iface, 
     const DWORD code);
 
+/* Vertex shader utility functions */
+extern BOOL vshader_get_input(
+    IWineD3DVertexShader* iface,
+    BYTE usage_req, BYTE usage_idx_req,
+    unsigned int* regnum);
+
+extern BOOL vshader_input_is_color(
+    IWineD3DVertexShader* iface,
+    unsigned int regnum);
+
 /* ARB_[vertex/fragment]_program helper functions */
 extern void shader_arb_load_constants(
     IWineD3DStateBlock* iface,
@@ -1437,12 +1452,12 @@
 extern void pshader_glsl_dp2add(SHADER_OPCODE_ARG* arg);
 extern void pshader_glsl_input_pack(
    SHADER_BUFFER* buffer,
-   DWORD* semantics_out);
+   semantic* semantics_out);
 
 /** GLSL Vertex Shader Prototypes */
 extern void vshader_glsl_output_unpack(
    SHADER_BUFFER* buffer,
-   DWORD* semantics_out);
+   semantic* semantics_out);
 
 /*****************************************************************************
  * IDirect3DBaseShader implementation structure
@@ -1474,8 +1489,8 @@
 extern void shader_get_registers_used(
     IWineD3DBaseShader *iface,
     shader_reg_maps* reg_maps,
-    DWORD* semantics_in,
-    DWORD* semantics_out,
+    semantic* semantics_in,
+    semantic* semantics_out,
     CONST DWORD* pToken);
 
 extern void shader_generate_glsl_declarations(
@@ -1558,8 +1573,8 @@
     DWORD usage;
 
     /* Vertex shader input and output semantics */
-    DWORD semantics_in [WINED3DSHADERDECLUSAGE_MAX_USAGE];
-    DWORD semantics_out [WINED3DSHADERDECLUSAGE_MAX_USAGE];
+    semantic semantics_in [MAX_ATTRIBS];
+    semantic semantics_out [MAX_REG_OUTPUT];
 
     /* run time datas...  */
     VSHADERDATA                *data;
@@ -1589,7 +1604,7 @@
     IWineD3DDeviceImpl         *wineD3DDevice;
 
     /* Pixel shader input semantics */
-    DWORD semantics_in [WINED3DSHADERDECLUSAGE_MAX_USAGE];
+    semantic semantics_in [MAX_REG_INPUT];
 
     /* run time data */
     PSHADERDATA                *data;