st/nine: Implement SPHEREMAP
[mesa.git] / src / gallium / state_trackers / nine / vertexdeclaration9.h
index 6590f460f67ceab1d625778a65feaa897f7f6dc6..7b94f846fe749e0c6b355b1ca833c56679be0843 100644 (file)
@@ -31,6 +31,7 @@ struct pipe_vertex_element;
 struct pipe_stream_output_info;
 struct NineDevice9;
 struct NineVertexBuffer9;
+struct nine_vs_output_info;
 
 struct NineVertexDeclaration9
 {
@@ -40,14 +41,16 @@ struct NineVertexDeclaration9
     struct pipe_vertex_element *elems;
     unsigned nelems;
 
-    /* DECLUSAGE -> element index, for selecting the vertex element
+    /* index -> DECLUSAGE, for selecting the vertex element
      * for each VS input */
-    uint8_t usage_map[NINE_DECLUSAGE_COUNT];
+    uint16_t *usage_map;
 
     D3DVERTEXELEMENT9 *decls;
     DWORD fvf;
+
+    BOOL position_t;
 };
-static INLINE struct NineVertexDeclaration9 *
+static inline struct NineVertexDeclaration9 *
 NineVertexDeclaration9( void *data )
 {
     return (struct NineVertexDeclaration9 *)data;
@@ -71,11 +74,18 @@ NineVertexDeclaration9_ctor( struct NineVertexDeclaration9 *This,
 void
 NineVertexDeclaration9_dtor( struct NineVertexDeclaration9 *This );
 
-HRESULT WINAPI
+HRESULT NINE_WINAPI
 NineVertexDeclaration9_GetDeclaration( struct NineVertexDeclaration9 *This,
                                        D3DVERTEXELEMENT9 *pElement,
                                        UINT *pNumElements );
 
+void
+NineVertexDeclaration9_FillStreamOutputInfo(
+    struct NineVertexDeclaration9 *This,
+    struct nine_vs_output_info *ShaderOutputsInfo,
+    unsigned numOutputs,
+    struct pipe_stream_output_info *so );
+
 /* Convert stream output data to the vertex declaration's format. */
 HRESULT
 NineVertexDeclaration9_ConvertStreamOutput(
@@ -83,7 +93,7 @@ NineVertexDeclaration9_ConvertStreamOutput(
     struct NineVertexBuffer9 *pDstBuf,
     UINT DestIndex,
     UINT VertexCount,
-    struct pipe_resource *pSrcBuf,
+    void *pSrcBuf,
     const struct pipe_stream_output_info *so );
 
 #endif /* _NINE_VERTEXDECLARATION9_H_ */