22593ff9bbc9210ec8f407d9e27634ac8b83a7a8
[mesa.git] / src / gallium / drivers / nouveau / nouveau_video.h
1 #ifndef __NOUVEAU_VIDEO_H__
2 #define __NOUVEAU_SCREEN_H__
3
4 #include "nv17_mpeg.xml.h"
5 #include "nv31_mpeg.xml.h"
6
7 struct nouveau_video_buffer {
8 struct pipe_video_buffer base;
9 unsigned num_planes;
10 struct pipe_resource *resources[3];
11 struct pipe_sampler_view *sampler_view_planes[3];
12 struct pipe_sampler_view *sampler_view_components[3];
13 struct pipe_surface *surfaces[3];
14 };
15
16 struct nouveau_decoder {
17 struct pipe_video_decoder base;
18 struct nouveau_screen *screen;
19 struct nouveau_grobj *mpeg;
20 struct nouveau_bo *cmd_bo, *data_bo, *fence_bo;
21
22 unsigned *fence_map;
23 unsigned fence_seq;
24
25 unsigned ofs;
26 unsigned *cmds;
27
28 unsigned *data;
29 unsigned data_pos;
30 unsigned picture_structure;
31
32 unsigned past, future, current;
33 unsigned num_surfaces;
34 struct nouveau_video_buffer *surfaces[8];
35 };
36
37 static INLINE void
38 nouveau_vpe_write(struct nouveau_decoder *dec, unsigned data) {
39 dec->cmds[dec->ofs++] = data;
40 }
41
42 #endif