diff options
author | Christian König <[email protected]> | 2011-03-16 23:09:52 +0100 |
---|---|---|
committer | Christian König <[email protected]> | 2011-03-16 23:09:52 +0100 |
commit | e87bd8c9578dee384ff03039aa792e1a8dae7f36 (patch) | |
tree | def2d5749cb87fb4ba1f67614dad6a59c90ee9e5 /src/gallium/auxiliary/vl | |
parent | 0f07da0a1c87e1c7b53700c33d6b1f8f03c1fe11 (diff) |
[g3dvl] cleanup and documentation
Diffstat (limited to 'src/gallium/auxiliary/vl')
-rw-r--r-- | src/gallium/auxiliary/vl/vl_defines.h | 38 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_idct.c | 8 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_idct.h | 13 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c | 7 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.h | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_vertex_buffers.c | 4 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_vertex_buffers.h | 7 |
7 files changed, 63 insertions, 16 deletions
diff --git a/src/gallium/auxiliary/vl/vl_defines.h b/src/gallium/auxiliary/vl/vl_defines.h new file mode 100644 index 00000000000..668991f904f --- /dev/null +++ b/src/gallium/auxiliary/vl/vl_defines.h @@ -0,0 +1,38 @@ +/************************************************************************** + * + * Copyright 2011 Christian König + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + **************************************************************************/ + +#ifndef vl_defines_h +#define vl_defines_h + +/* constants usually used with all known codecs */ +#define MACROBLOCK_WIDTH 16 +#define MACROBLOCK_HEIGHT 16 + +#define BLOCK_WIDTH 8 +#define BLOCK_HEIGHT 8 + +#endif diff --git a/src/gallium/auxiliary/vl/vl_idct.c b/src/gallium/auxiliary/vl/vl_idct.c index e0307376a38..6b0010a04bb 100644 --- a/src/gallium/auxiliary/vl/vl_idct.c +++ b/src/gallium/auxiliary/vl/vl_idct.c @@ -27,6 +27,7 @@ #include "vl_idct.h" #include "vl_vertex_buffers.h" +#include "vl_defines.h" #include "util/u_draw.h" #include <assert.h> #include <pipe/p_context.h> @@ -37,9 +38,6 @@ #include <tgsi/tgsi_ureg.h> #include "vl_types.h" -#define BLOCK_WIDTH 8 -#define BLOCK_HEIGHT 8 - #define SCALE_FACTOR_16_TO_9 (32768.0f / 256.0f) #define NR_RENDER_TARGETS 4 @@ -504,6 +502,8 @@ cleanup_textures(struct vl_idct *idct, struct vl_idct_buffer *buffer) struct pipe_resource * vl_idct_upload_matrix(struct pipe_context *pipe) { + const float scale = sqrtf(SCALE_FACTOR_16_TO_9); + struct pipe_resource template, *matrix; struct pipe_transfer *buf_transfer; unsigned i, j, pitch; @@ -544,7 +544,7 @@ vl_idct_upload_matrix(struct pipe_context *pipe) for(i = 0; i < BLOCK_HEIGHT; ++i) for(j = 0; j < BLOCK_WIDTH; ++j) // transpose and scale - f[i * pitch + j] = const_matrix[j][i] * sqrtf(SCALE_FACTOR_16_TO_9); + f[i * pitch + j] = const_matrix[j][i] * scale; pipe->transfer_unmap(pipe, buf_transfer); pipe->transfer_destroy(pipe, buf_transfer); diff --git a/src/gallium/auxiliary/vl/vl_idct.h b/src/gallium/auxiliary/vl/vl_idct.h index 264ad2bd226..913034e7ab4 100644 --- a/src/gallium/auxiliary/vl/vl_idct.h +++ b/src/gallium/auxiliary/vl/vl_idct.h @@ -31,6 +31,9 @@ #include <pipe/p_state.h> #include "vl_vertex_buffers.h" +/* shader based inverse distinct cosinus transformation + * expect usage of vl_vertex_buffers as a todo list + */ struct vl_idct { struct pipe_context *pipe; @@ -57,6 +60,7 @@ struct vl_idct struct pipe_resource *matrix; }; +/* a set of buffers to work with */ struct vl_idct_buffer { struct pipe_viewport_state viewport[2]; @@ -88,25 +92,34 @@ struct vl_idct_buffer short *texels; }; +/* upload the idct matrix, which can be shared by all idct instances of a pipe */ struct pipe_resource *vl_idct_upload_matrix(struct pipe_context *pipe); +/* init an idct instance */ bool vl_idct_init(struct vl_idct *idct, struct pipe_context *pipe, unsigned buffer_width, unsigned buffer_height, unsigned blocks_x, unsigned blocks_y, int color_swizzle, struct pipe_resource *matrix); +/* destroy an idct instance */ void vl_idct_cleanup(struct vl_idct *idct); +/* init a buffer assosiated with agiven idct instance */ struct pipe_resource *vl_idct_init_buffer(struct vl_idct *idct, struct vl_idct_buffer *buffer); +/* cleanup a buffer of an idct instance */ void vl_idct_cleanup_buffer(struct vl_idct *idct, struct vl_idct_buffer *buffer); +/* map a buffer for use with vl_idct_add_block */ void vl_idct_map_buffers(struct vl_idct *idct, struct vl_idct_buffer *buffer); +/* add an block of to be tranformed data a the given x and y coordinate */ void vl_idct_add_block(struct vl_idct_buffer *buffer, unsigned x, unsigned y, short *block); +/* unmaps the buffers before flushing */ void vl_idct_unmap_buffers(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); #endif diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c b/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c index 5b675349481..df3373ebd88 100644 --- a/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c +++ b/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c @@ -26,6 +26,8 @@ **************************************************************************/ #include "vl_mpeg12_mc_renderer.h" +#include "vl_vertex_buffers.h" +#include "vl_defines.h" #include "util/u_draw.h" #include <assert.h> #include <pipe/p_context.h> @@ -38,11 +40,6 @@ #include <util/u_draw.h> #include <tgsi/tgsi_ureg.h> -#define MACROBLOCK_WIDTH 16 -#define MACROBLOCK_HEIGHT 16 -#define BLOCK_WIDTH 8 -#define BLOCK_HEIGHT 8 - enum VS_OUTPUT { VS_O_VPOS, diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.h b/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.h index db8f2fff749..805fec530b0 100644 --- a/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.h +++ b/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.h @@ -32,8 +32,6 @@ #include <pipe/p_state.h> #include <pipe/p_video_state.h> #include "vl_types.h" -#include "vl_idct.h" -#include "vl_vertex_buffers.h" struct pipe_context; struct pipe_macroblock; diff --git a/src/gallium/auxiliary/vl/vl_vertex_buffers.c b/src/gallium/auxiliary/vl/vl_vertex_buffers.c index 41e9809f744..c5366e8e4fc 100644 --- a/src/gallium/auxiliary/vl/vl_vertex_buffers.c +++ b/src/gallium/auxiliary/vl/vl_vertex_buffers.c @@ -26,10 +26,6 @@ **************************************************************************/ #include <assert.h> -#include <pipe/p_context.h> -#include <pipe/p_screen.h> -#include <util/u_memory.h> -#include <util/u_inlines.h> #include <util/u_format.h> #include "vl_vertex_buffers.h" #include "vl_types.h" diff --git a/src/gallium/auxiliary/vl/vl_vertex_buffers.h b/src/gallium/auxiliary/vl/vl_vertex_buffers.h index 0f7f47f2703..88e0270c170 100644 --- a/src/gallium/auxiliary/vl/vl_vertex_buffers.h +++ b/src/gallium/auxiliary/vl/vl_vertex_buffers.h @@ -27,11 +27,16 @@ #ifndef vl_vertex_buffers_h #define vl_vertex_buffers_h -#include <assert.h> #include <pipe/p_state.h> #include <pipe/p_video_state.h> #include "vl_types.h" +/* vertex buffers act as a todo list + * uploading all the usefull informations to video ram + * so a vertex shader can work with them + */ + +/* inputs to the vertex shaders */ enum VS_INPUT { VS_I_RECT, |