aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/vl/vl_idct.h
diff options
context:
space:
mode:
authorChristian König <[email protected]>2011-04-25 01:20:15 +0200
committerChristian König <[email protected]>2011-04-25 01:20:15 +0200
commit7f04fe5338d0846ec9a6003033da5357d2785c8b (patch)
tree7dbae6579199dc1b1add607088a2782a6b3942e1 /src/gallium/auxiliary/vl/vl_idct.h
parent104ac0066394f8246d18c833bca4bcce271b5eef (diff)
[g3dvl] merge idct stage 2 and mc ycbcr stage into a single draw
Diffstat (limited to 'src/gallium/auxiliary/vl/vl_idct.h')
-rw-r--r--src/gallium/auxiliary/vl/vl_idct.h52
1 files changed, 35 insertions, 17 deletions
diff --git a/src/gallium/auxiliary/vl/vl_idct.h b/src/gallium/auxiliary/vl/vl_idct.h
index 96933b9d889..f5a1e5d9b73 100644
--- a/src/gallium/auxiliary/vl/vl_idct.h
+++ b/src/gallium/auxiliary/vl/vl_idct.h
@@ -30,6 +30,8 @@
#include <pipe/p_state.h>
+#include <tgsi/tgsi_ureg.h>
+
/* shader based inverse distinct cosinus transformation
* expect usage of vl_vertex_buffers as a todo list
*/
@@ -46,8 +48,7 @@ struct vl_idct
void *samplers[2];
- void *matrix_vs, *transpose_vs;
- void *matrix_fs, *transpose_fs;
+ void *vs, *fs;
struct pipe_sampler_view *matrix;
struct pipe_sampler_view *transpose;
@@ -56,8 +57,8 @@ struct vl_idct
/* a set of buffers to work with */
struct vl_idct_buffer
{
- struct pipe_viewport_state viewport[2];
- struct pipe_framebuffer_state fb_state[2];
+ struct pipe_viewport_state viewport;
+ struct pipe_framebuffer_state fb_state;
union
{
@@ -71,28 +72,45 @@ struct vl_idct_buffer
};
/* upload the idct matrix, which can be shared by all idct instances of a pipe */
-struct pipe_sampler_view *vl_idct_upload_matrix(struct pipe_context *pipe, float scale);
+struct pipe_sampler_view *
+vl_idct_upload_matrix(struct pipe_context *pipe, float scale);
+
+void
+vl_idct_stage2_vert_shader(struct vl_idct *idct, struct ureg_program *shader,
+ unsigned first_output, struct ureg_dst tex);
+
+void
+vl_idct_stage2_frag_shader(struct vl_idct *idct, struct ureg_program *shader,
+ unsigned first_input, struct ureg_dst fragment);
/* init an idct instance */
-bool vl_idct_init(struct vl_idct *idct, struct pipe_context *pipe,
- unsigned buffer_width, unsigned buffer_height,
- unsigned nr_of_render_targets,
- struct pipe_sampler_view *matrix,
- struct pipe_sampler_view *transpose);
+bool
+vl_idct_init(struct vl_idct *idct, struct pipe_context *pipe,
+ unsigned buffer_width, unsigned buffer_height,
+ unsigned nr_of_render_targets,
+ struct pipe_sampler_view *matrix,
+ struct pipe_sampler_view *transpose);
/* destroy an idct instance */
-void vl_idct_cleanup(struct vl_idct *idct);
+void
+vl_idct_cleanup(struct vl_idct *idct);
/* init a buffer assosiated with agiven idct instance */
-bool vl_idct_init_buffer(struct vl_idct *idct, struct vl_idct_buffer *buffer,
- struct pipe_sampler_view *source,
- struct pipe_sampler_view *intermediate,
- struct pipe_surface *destination);
+bool
+vl_idct_init_buffer(struct vl_idct *idct, struct vl_idct_buffer *buffer,
+ struct pipe_sampler_view *source,
+ struct pipe_sampler_view *intermediate,
+ struct pipe_surface *destination);
/* cleanup a buffer of an idct instance */
-void vl_idct_cleanup_buffer(struct vl_idct *idct, struct vl_idct_buffer *buffer);
+void
+vl_idct_cleanup_buffer(struct vl_idct *idct, struct vl_idct_buffer *buffer);
/* flush the buffer and start rendering, vertex buffers needs to be setup before calling this */
-void vl_idct_flush(struct vl_idct *idct, struct vl_idct_buffer *buffer, unsigned num_verts);
+void
+vl_idct_flush(struct vl_idct *idct, struct vl_idct_buffer *buffer, unsigned num_verts);
+
+void
+vl_idct_prepare_stage2(struct vl_idct *idct, struct vl_idct_buffer *buffer);
#endif