softpipe: reformatting, comments, minor clean-ups

This commit is contained in:
Brian Paul 2009-03-22 18:11:12 -06:00
parent 0f82aa5f15
commit bab6d6bfe9
4 changed files with 47 additions and 30 deletions

View file

@ -25,22 +25,29 @@
*
**************************************************************************/
/**
* Execute fragment shader using the TGSI interpreter.
*/
#include "sp_context.h"
#include "sp_state.h"
#include "sp_fs.h"
#include "sp_quad.h"
#include "pipe/p_state.h"
#include "pipe/p_defines.h"
#include "util/u_memory.h"
#include "tgsi/tgsi_exec.h"
#include "tgsi/tgsi_parse.h"
/**
* Subclass of sp_fragment_shader
*/
struct sp_exec_fragment_shader
{
struct sp_fragment_shader base;
/* No other members for now */
};
@ -106,8 +113,6 @@ exec_prepare( const struct sp_fragment_shader *base,
}
/* TODO: hide the machine struct in here somewhere, remove from this
* interface:
*/
@ -116,7 +121,6 @@ exec_run( const struct sp_fragment_shader *base,
struct tgsi_exec_machine *machine,
struct quad_header *quad )
{
/* Compute X, Y, Z, W vals for this quad */
sp_setup_pos_vector(quad->posCoef,
(float)quad->input.x0, (float)quad->input.y0,
@ -126,7 +130,6 @@ exec_run( const struct sp_fragment_shader *base,
}
static void
exec_delete( struct sp_fragment_shader *base )
{
@ -135,9 +138,6 @@ exec_delete( struct sp_fragment_shader *base )
}
struct sp_fragment_shader *
softpipe_create_fs_exec(struct softpipe_context *softpipe,
const struct pipe_shader_state *templ)
@ -160,4 +160,3 @@ softpipe_create_fs_exec(struct softpipe_context *softpipe,
return &shader->base;
}

View file

@ -25,7 +25,9 @@
*
**************************************************************************/
/* Authors:
/**
* Execute fragment shader using LLVM code generation.
* Authors:
* Zack Rusin
*/
@ -33,7 +35,6 @@
#include "sp_state.h"
#include "sp_fs.h"
#include "pipe/p_state.h"
#include "pipe/p_defines.h"
#include "util/u_memory.h"
@ -41,11 +42,16 @@
#if 0
struct sp_llvm_fragment_shader {
/**
* Subclass of sp_fragment_shader
*/
struct sp_llvm_fragment_shader
{
struct sp_fragment_shader base;
struct gallivm_prog *llvm_prog;
};
static void
shade_quad_llvm(struct quad_stage *qs,
struct quad_header *quad)
@ -160,7 +166,7 @@ delete_llvm_fs( struct sp_fragment_shader *base )
struct sp_fragment_shader *
softpipe_create_fs_llvm(struct softpipe_context *softpipe,
const struct pipe_shader_state *templ)
const struct pipe_shader_state *templ)
{
struct sp_llvm_fragment_shader *shader = NULL;

View file

@ -25,13 +25,15 @@
*
**************************************************************************/
/**
* Execute fragment shader using runtime SSE code generation.
*/
#include "sp_context.h"
#include "sp_state.h"
#include "sp_fs.h"
#include "sp_quad.h"
#include "pipe/p_state.h"
#include "pipe/p_defines.h"
#include "util/u_memory.h"
@ -56,14 +58,25 @@ typedef void (PIPE_CDECL *codegen_function)(
);
struct sp_sse_fragment_shader {
/**
* Subclass of sp_fragment_shader
*/
struct sp_sse_fragment_shader
{
struct sp_fragment_shader base;
struct x86_function sse2_program;
struct x86_function sse2_program;
codegen_function func;
float immediates[TGSI_EXEC_NUM_IMMEDIATES][4];
};
/** cast wrapper */
static INLINE struct sp_sse_fragment_shader *
sp_sse_fragment_shader(const struct sp_fragment_shader *base)
{
return (struct sp_sse_fragment_shader *) base;
}
static void
fs_sse_prepare( const struct sp_fragment_shader *base,
@ -83,7 +96,7 @@ fs_sse_run( const struct sp_fragment_shader *base,
struct tgsi_exec_machine *machine,
struct quad_header *quad )
{
struct sp_sse_fragment_shader *shader = (struct sp_sse_fragment_shader *) base;
struct sp_sse_fragment_shader *shader = sp_sse_fragment_shader(base);
/* Compute X, Y, Z, W vals for this quad -- place in temp[0] for now */
sp_setup_pos_vector(quad->posCoef,
@ -110,7 +123,7 @@ fs_sse_run( const struct sp_fragment_shader *base,
static void
fs_sse_delete( struct sp_fragment_shader *base )
{
struct sp_sse_fragment_shader *shader = (struct sp_sse_fragment_shader *) base;
struct sp_sse_fragment_shader *shader = sp_sse_fragment_shader(base);
x86_release_func( &shader->sse2_program );
FREE(shader);
@ -156,7 +169,7 @@ softpipe_create_fs_sse(struct softpipe_context *softpipe,
#else
/* Maybe put this varient in the header file.
/* Maybe put this variant in the header file.
*/
struct sp_fragment_shader *
softpipe_create_fs_sse(struct softpipe_context *softpipe,

View file

@ -65,14 +65,11 @@ quad_shade_stage(struct quad_stage *qs)
}
/**
* Execute fragment shader for the four fragments in the quad.
*/
static void
shade_quad(
struct quad_stage *qs,
struct quad_header *quad )
shade_quad(struct quad_stage *qs, struct quad_header *quad)
{
struct quad_shade_stage *qss = quad_shade_stage( qs );
struct softpipe_context *softpipe = qs->softpipe;
@ -85,9 +82,7 @@ shade_quad(
machine->InterpCoefs = quad->coef;
/* run shader */
quad->inout.mask &= softpipe->fs->run( softpipe->fs,
&qss->machine,
quad );
quad->inout.mask &= softpipe->fs->run( softpipe->fs, machine, quad );
/* store outputs */
z_written = FALSE;
@ -135,15 +130,17 @@ shade_quad(
}
/* shader may cull fragments */
if( quad->inout.mask ) {
if (quad->inout.mask) {
qs->next->run( qs->next, quad );
}
}
/**
* Per-primitive (or per-begin?) setup
*/
static void shade_begin(struct quad_stage *qs)
static void
shade_begin(struct quad_stage *qs)
{
struct quad_shade_stage *qss = quad_shade_stage(qs);
struct softpipe_context *softpipe = qs->softpipe;
@ -157,7 +154,8 @@ static void shade_begin(struct quad_stage *qs)
}
static void shade_destroy(struct quad_stage *qs)
static void
shade_destroy(struct quad_stage *qs)
{
struct quad_shade_stage *qss = (struct quad_shade_stage *) qs;
@ -168,7 +166,8 @@ static void shade_destroy(struct quad_stage *qs)
}
struct quad_stage *sp_quad_shade_stage( struct softpipe_context *softpipe )
struct quad_stage *
sp_quad_shade_stage( struct softpipe_context *softpipe )
{
struct quad_shade_stage *qss = CALLOC_STRUCT(quad_shade_stage);