mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
[g3dvl] cleanup and documentation
This commit is contained in:
parent
0f07da0a1c
commit
e87bd8c957
9 changed files with 82 additions and 40 deletions
38
src/gallium/auxiliary/vl/vl_defines.h
Normal file
38
src/gallium/auxiliary/vl/vl_defines.h
Normal file
|
|
@ -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
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -36,13 +36,7 @@
|
|||
#include <util/u_rect.h>
|
||||
#include <util/u_video.h>
|
||||
#include <util/u_surface.h>
|
||||
#include "sp_public.h"
|
||||
#include "sp_texture.h"
|
||||
|
||||
#define MACROBLOCK_WIDTH 16
|
||||
#define MACROBLOCK_HEIGHT 16
|
||||
#define BLOCK_WIDTH 8
|
||||
#define BLOCK_HEIGHT 8
|
||||
#include <vl/vl_defines.h>
|
||||
|
||||
#define NUM_BUFFERS 2
|
||||
|
||||
|
|
|
|||
|
|
@ -29,29 +29,13 @@
|
|||
#define SP_VIDEO_CONTEXT_H
|
||||
|
||||
#include <pipe/p_video_context.h>
|
||||
#include <vl/vl_idct.h>
|
||||
#include <vl/vl_mpeg12_mc_renderer.h>
|
||||
#include <vl/vl_compositor.h>
|
||||
|
||||
struct pipe_screen;
|
||||
struct pipe_context;
|
||||
|
||||
struct sp_mpeg12_buffer
|
||||
{
|
||||
struct vl_vertex_buffer vertex_stream;
|
||||
|
||||
union
|
||||
{
|
||||
struct pipe_vertex_buffer all[2];
|
||||
struct {
|
||||
struct pipe_vertex_buffer quad, stream;
|
||||
} individual;
|
||||
} vertex_bufs;
|
||||
|
||||
struct vl_idct_buffer idct_y, idct_cb, idct_cr;
|
||||
|
||||
struct vl_mpeg12_mc_buffer mc;
|
||||
};
|
||||
|
||||
struct sp_mpeg12_context
|
||||
{
|
||||
struct pipe_video_context base;
|
||||
|
|
@ -76,6 +60,23 @@ struct sp_mpeg12_context
|
|||
enum pipe_format decode_format;
|
||||
};
|
||||
|
||||
struct sp_mpeg12_buffer
|
||||
{
|
||||
struct vl_vertex_buffer vertex_stream;
|
||||
|
||||
union
|
||||
{
|
||||
struct pipe_vertex_buffer all[2];
|
||||
struct {
|
||||
struct pipe_vertex_buffer quad, stream;
|
||||
} individual;
|
||||
} vertex_bufs;
|
||||
|
||||
struct vl_idct_buffer idct_y, idct_cb, idct_cr;
|
||||
|
||||
struct vl_mpeg12_mc_buffer mc;
|
||||
};
|
||||
|
||||
struct pipe_video_context *
|
||||
sp_video_create(struct pipe_screen *screen, enum pipe_video_profile profile,
|
||||
enum pipe_video_chroma_format chroma_format,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue