summaryrefslogtreecommitdiffstats
path: root/src/mesa/swrast/s_tcc.c
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2005-11-08 22:54:22 +0000
committerIan Romanick <[email protected]>2005-11-08 22:54:22 +0000
commit5374e4ba7eaca2ee0ca73863ffbe9e639d090e3e (patch)
tree272c6a2aa4d9c0309e47f091134b23a627d07e58 /src/mesa/swrast/s_tcc.c
parent4884db6eb29d30a16e5bf72da08ea6095ecd3339 (diff)
At keithw's request, remove all traces of the "fragment program to C" and
TCC experiment.
Diffstat (limited to 'src/mesa/swrast/s_tcc.c')
-rw-r--r--src/mesa/swrast/s_tcc.c185
1 files changed, 0 insertions, 185 deletions
diff --git a/src/mesa/swrast/s_tcc.c b/src/mesa/swrast/s_tcc.c
deleted file mode 100644
index 9e6f4f26b7d..00000000000
--- a/src/mesa/swrast/s_tcc.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2005 Brian Paul 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, sublicense,
- * 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 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 NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL 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.
- */
-
-/* An attempt to hook s_fragprog_to_c.c up to libtcc.a to try &
- * generate some real code.
- *
- * TCC isn't threadsafe, so it will need additional locking help if we
- * end up using it as a backend in mesa.
- */
-
-#include "glheader.h"
-#include "imports.h"
-#include "colormac.h"
-#include "context.h"
-#include "program_instruction.h"
-#include "macros.h"
-#include "program.h"
-
-#include "s_nvfragprog.h"
-
-#ifdef USE_TCC
-
-#include <libtcc.h>
-
-typedef int (*cfunc)( void *ctx,
- const GLfloat (*local_param)[4],
- const GLfloat (*env_param)[4],
- const struct program_parameter *state_param,
- const GLfloat (*interp)[4],
- GLfloat (*outputs)[4]);
-
-
-static cfunc current_func;
-static struct fragment_program *current_program;
-static TCCState *current_tcc_state;
-
-
-static void TEX( void *cc, const float *texcoord, int unit, float *result )
-{
- GLcontext *ctx = (GLcontext *)cc;
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- GLfloat lambda = 1.0; /* hack */
- GLchan rgba[4];
-
- swrast->TextureSample[unit](ctx, ctx->Texture.Unit[unit]._Current,
- 1, (const GLfloat (*)[4]) texcoord,
- &lambda, &rgba);
-
- result[0] = CHAN_TO_FLOAT(rgba[0]);
- result[1] = CHAN_TO_FLOAT(rgba[1]);
- result[2] = CHAN_TO_FLOAT(rgba[2]);
- result[3] = CHAN_TO_FLOAT(rgba[3]);
-}
-
-
-static void TXB( void *cc, const float *texcoord, int unit, float *result )
-{
- GLcontext *ctx = (GLcontext *)cc;
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- GLfloat lambda = 1.0; /* hack */
- GLchan rgba[4];
-
- /* texcoord[3] is the bias to add to lambda */
- lambda += texcoord[3];
-
-
- /* Is it necessary to reset texcoord[3] to 1 at this point?
- */
- swrast->TextureSample[unit](ctx, ctx->Texture.Unit[unit]._Current,
- 1, (const GLfloat (*)[4]) texcoord,
- &lambda, &rgba);
-
- result[0] = CHAN_TO_FLOAT(rgba[0]);
- result[1] = CHAN_TO_FLOAT(rgba[1]);
- result[2] = CHAN_TO_FLOAT(rgba[2]);
- result[3] = CHAN_TO_FLOAT(rgba[3]);
-}
-
-
-static void TXP( void *cc, const float *texcoord, int unit, float *result )
-{
- /* I think that TEX needs to undo the perspective divide which has
- * already occurred. In the meantime, TXP is correct to do this:
- */
- TEX( cc, texcoord, unit, result );
-}
-
-
-static cfunc codegen( TCCState *s, const char *prog, const char *fname )
-{
- unsigned long val;
-
- if (s)
- tcc_delete(s);
-
- s = tcc_new();
- if (!s)
- return 0;
-
- tcc_set_output_type(s, TCC_OUTPUT_MEMORY);
- tcc_compile_string(s, prog);
-
-/* tcc_add_dll("/usr/lib/libm.so"); */
-
- tcc_add_symbol(s, "TEX", (unsigned long)&TEX);
- tcc_add_symbol(s, "TXB", (unsigned long)&TXB);
- tcc_add_symbol(s, "TXP", (unsigned long)&TXP);
-
-
- tcc_relocate(s);
- tcc_get_symbol(s, &val, fname);
- return (cfunc) val;
-}
-
-/* TCC isn't threadsafe and even seems not to like having more than
- * one TCCState created or used at any one time in a single threaded
- * environment. So, this code is all for investigation only and can't
- * currently be used in Mesa proper.
- *
- * I've taken some liberties with globals myself, now.
- */
-GLboolean
-_swrast_execute_codegen_program( GLcontext *ctx,
- const struct fragment_program *program, GLuint maxInst,
- struct fp_machine *machine, const struct sw_span *span,
- GLuint column )
-{
- if (program != current_program) {
-
- _swrast_translate_program( ctx );
-
- fprintf(stderr, "%s: compiling:\n%s\n", __FUNCTION__, program->c_str);
-
- current_program = program;
- current_func = codegen( current_tcc_state, program->c_str,
- "run_program" );
- }
-
- assert(current_func);
-
- return current_func( ctx,
- program->Base.LocalParams,
- (const GLfloat (*)[4])ctx->FragmentProgram.Parameters,
- program->Parameters->Parameters,
- (const GLfloat (*)[4])machine->Inputs,
- machine->Outputs );
-}
-
-#else /* USE_TCC */
-
-GLboolean
-_swrast_execute_codegen_program( GLcontext *ctx,
- const struct fragment_program *program, GLuint maxInst,
- struct fp_machine *machine, const struct sw_span *span,
- GLuint column )
-{
- (void) ctx;
- (void) program; (void) maxInst;
- (void) machine; (void) span;
- (void) column;
- return 0;
-}
-
-#endif