struct pipe_stream_output_info;
struct NineDevice9;
struct NineVertexBuffer9;
+struct nine_vs_output_info;
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;
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(
struct NineVertexBuffer9 *pDstBuf,
UINT DestIndex,
UINT VertexCount,
- struct pipe_resource *pSrcBuf,
+ void *pSrcBuf,
const struct pipe_stream_output_info *so );
#endif /* _NINE_VERTEXDECLARATION9_H_ */