mesa: remove GL_MESA_program_debug extension

This was never fully fleshed out and hasn't been used.
This commit is contained in:
Brian Paul 2009-03-07 11:53:18 -07:00
parent 34e77493ce
commit 69e07bdeb4
23 changed files with 1 additions and 516 deletions

View File

@ -13,7 +13,7 @@ Contact
Status
XXX - Not complete yet!!!
Obsolete.
Version

View File

@ -189,7 +189,6 @@ if env['platform'] != 'winddk':
'shader/nvvertparse.c',
'shader/program.c',
'shader/prog_cache.c',
'shader/prog_debug.c',
'shader/prog_execute.c',
'shader/prog_instruction.c',
'shader/prog_noise.c',

View File

@ -134,9 +134,6 @@ _mesa_init_driver_functions(struct dd_function_table *driver)
driver->BindProgram = NULL;
driver->NewProgram = _mesa_new_program;
driver->DeleteProgram = _mesa_delete_program;
#if FEATURE_MESA_program_debug
driver->GetProgramRegister = _mesa_get_program_register;
#endif /* FEATURE_MESA_program_debug */
/* simple state commands */
driver->AlphaFunc = NULL;

View File

@ -67,7 +67,6 @@
#define need_GL_EXT_fog_coord
#define need_GL_EXT_paletted_texture
/* #define need_GL_EXT_secondary_color */
/* #define need_GL_MESA_program_debug */
/* #define need_GL_NV_vertex_program */
#include "extension_helper.h"
@ -101,9 +100,6 @@ const struct dri_extension card_extensions[] =
#ifdef need_GL_NV_vertex_program
{ "GL_NV_vertex_program", GL_NV_vertex_program_functions }
{ "GL_NV_vertex_program1_1", NULL },
#endif
#ifdef need_GL_MESA_program_debug
{ "GL_MESA_program_debug", GL_MESA_program_debug_functions },
#endif
{ NULL, NULL }
};

View File

@ -1922,7 +1922,6 @@ fxDDInitExtensions(GLcontext * ctx)
_mesa_enable_extension(ctx, "GL_ARB_vertex_program");
_mesa_enable_extension(ctx, "GL_NV_vertex_program");
_mesa_enable_extension(ctx, "GL_NV_vertex_program1_1");
_mesa_enable_extension(ctx, "GL_MESA_program_debug");
}
#if 0
/* this requires _tnl_vertex_cull_stage in the pipeline */

View File

@ -602,9 +602,6 @@ struct dd_function_table {
/** Notify driver that a program string has been specified. */
void (*ProgramStringNotify)(GLcontext *ctx, GLenum target,
struct gl_program *prog);
/** Get value of a program register during program execution. */
void (*GetProgramRegister)(GLcontext *ctx, enum register_file file,
GLuint index, GLfloat val[4]);
/** Query if program can be loaded onto hardware */
GLboolean (*IsProgramNative)(GLcontext *ctx, GLenum target,

View File

@ -944,18 +944,6 @@ _mesa_set_enable(GLcontext *ctx, GLenum cap, GLboolean state)
ctx->Depth.BoundsTest = state;
break;
/* GL_MESA_program_debug */
#if FEATURE_MESA_program_debug
case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
CHECK_EXTENSION(MESA_program_debug, cap);
ctx->FragmentProgram.CallbackEnabled = state;
break;
case GL_VERTEX_PROGRAM_CALLBACK_MESA:
CHECK_EXTENSION(MESA_program_debug, cap);
ctx->VertexProgram.CallbackEnabled = state;
break;
#endif
#if FEATURE_ATI_fragment_shader
case GL_FRAGMENT_SHADER_ATI:
CHECK_EXTENSION(ATI_fragment_shader, cap);
@ -1398,16 +1386,6 @@ _mesa_IsEnabled( GLenum cap )
CHECK_EXTENSION(EXT_depth_bounds_test);
return ctx->Depth.BoundsTest;
/* GL_MESA_program_debug */
#if FEATURE_MESA_program_debug
case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
CHECK_EXTENSION(MESA_program_debug);
return ctx->FragmentProgram.CallbackEnabled;
case GL_VERTEX_PROGRAM_CALLBACK_MESA:
CHECK_EXTENSION(MESA_program_debug);
return ctx->VertexProgram.CallbackEnabled;
#endif
#if FEATURE_ATI_fragment_shader
case GL_FRAGMENT_SHADER_ATI:
CHECK_EXTENSION(ATI_fragment_shader);

View File

@ -147,7 +147,6 @@ static const struct {
{ OFF, "GL_INGR_blend_func_separate", F(EXT_blend_func_separate) },
{ OFF, "GL_MESA_pack_invert", F(MESA_pack_invert) },
{ OFF, "GL_MESA_packed_depth_stencil", F(MESA_packed_depth_stencil) },
{ OFF, "GL_MESA_program_debug", F(MESA_program_debug) },
{ OFF, "GL_MESA_resize_buffers", F(MESA_resize_buffers) },
{ OFF, "GL_MESA_texture_array", F(MESA_texture_array) },
{ OFF, "GL_MESA_ycbcr_texture", F(MESA_ycbcr_texture) },
@ -276,9 +275,6 @@ _mesa_enable_sw_extensions(GLcontext *ctx)
ctx->Extensions.EXT_vertex_array_bgra = GL_TRUE;
/*ctx->Extensions.IBM_multimode_draw_arrays = GL_TRUE;*/
ctx->Extensions.MESA_pack_invert = GL_TRUE;
#if FEATURE_MESA_program_debug
ctx->Extensions.MESA_program_debug = GL_TRUE;
#endif
ctx->Extensions.MESA_resize_buffers = GL_TRUE;
ctx->Extensions.MESA_texture_array = GL_TRUE;
ctx->Extensions.MESA_ycbcr_texture = GL_TRUE;

View File

@ -655,7 +655,6 @@ static void emit_op3fn(struct tnl_program *p,
inst = &p->program->Base.Instructions[nr];
inst->Opcode = (enum prog_opcode) op;
inst->StringPos = 0;
inst->Data = 0;
emit_arg( &inst->SrcReg[0], src0 );

View File

@ -1715,22 +1715,6 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMin);
params[1] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMax);
break;
case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
CHECK_EXT1(MESA_program_debug, "GetBooleanv");
params[0] = ctx->FragmentProgram.CallbackEnabled;
break;
case GL_VERTEX_PROGRAM_CALLBACK_MESA:
CHECK_EXT1(MESA_program_debug, "GetBooleanv");
params[0] = ctx->VertexProgram.CallbackEnabled;
break;
case GL_FRAGMENT_PROGRAM_POSITION_MESA:
CHECK_EXT1(MESA_program_debug, "GetBooleanv");
params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.CurrentPosition);
break;
case GL_VERTEX_PROGRAM_POSITION_MESA:
CHECK_EXT1(MESA_program_debug, "GetBooleanv");
params[0] = INT_TO_BOOLEAN(ctx->VertexProgram.CurrentPosition);
break;
case GL_MAX_DRAW_BUFFERS_ARB:
params[0] = INT_TO_BOOLEAN(ctx->Const.MaxDrawBuffers);
break;
@ -3541,22 +3525,6 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
params[0] = ctx->Depth.BoundsMin;
params[1] = ctx->Depth.BoundsMax;
break;
case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
CHECK_EXT1(MESA_program_debug, "GetFloatv");
params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.CallbackEnabled);
break;
case GL_VERTEX_PROGRAM_CALLBACK_MESA:
CHECK_EXT1(MESA_program_debug, "GetFloatv");
params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.CallbackEnabled);
break;
case GL_FRAGMENT_PROGRAM_POSITION_MESA:
CHECK_EXT1(MESA_program_debug, "GetFloatv");
params[0] = (GLfloat)(ctx->FragmentProgram.CurrentPosition);
break;
case GL_VERTEX_PROGRAM_POSITION_MESA:
CHECK_EXT1(MESA_program_debug, "GetFloatv");
params[0] = (GLfloat)(ctx->VertexProgram.CurrentPosition);
break;
case GL_MAX_DRAW_BUFFERS_ARB:
params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers);
break;
@ -5367,22 +5335,6 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
params[0] = IROUND(ctx->Depth.BoundsMin);
params[1] = IROUND(ctx->Depth.BoundsMax);
break;
case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
CHECK_EXT1(MESA_program_debug, "GetIntegerv");
params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.CallbackEnabled);
break;
case GL_VERTEX_PROGRAM_CALLBACK_MESA:
CHECK_EXT1(MESA_program_debug, "GetIntegerv");
params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.CallbackEnabled);
break;
case GL_FRAGMENT_PROGRAM_POSITION_MESA:
CHECK_EXT1(MESA_program_debug, "GetIntegerv");
params[0] = ctx->FragmentProgram.CurrentPosition;
break;
case GL_VERTEX_PROGRAM_POSITION_MESA:
CHECK_EXT1(MESA_program_debug, "GetIntegerv");
params[0] = ctx->VertexProgram.CurrentPosition;
break;
case GL_MAX_DRAW_BUFFERS_ARB:
params[0] = ctx->Const.MaxDrawBuffers;
break;

View File

@ -902,16 +902,6 @@ StateVars = [
["ctx->Depth.BoundsMin", "ctx->Depth.BoundsMax"],
"", ["EXT_depth_bounds_test"] ),
# GL_MESA_program_debug
( "GL_FRAGMENT_PROGRAM_CALLBACK_MESA", GLboolean,
["ctx->FragmentProgram.CallbackEnabled"], "", ["MESA_program_debug"] ),
( "GL_VERTEX_PROGRAM_CALLBACK_MESA", GLboolean,
["ctx->VertexProgram.CallbackEnabled"], "", ["MESA_program_debug"] ),
( "GL_FRAGMENT_PROGRAM_POSITION_MESA", GLint,
["ctx->FragmentProgram.CurrentPosition"], "", ["MESA_program_debug"] ),
( "GL_VERTEX_PROGRAM_POSITION_MESA", GLint,
["ctx->VertexProgram.CurrentPosition"], "", ["MESA_program_debug"] ),
# GL_ARB_draw_buffers
( "GL_MAX_DRAW_BUFFERS_ARB", GLint,
["ctx->Const.MaxDrawBuffers"], "", None ),

View File

@ -242,36 +242,6 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params )
case GL_SELECTION_BUFFER_POINTER:
*params = ctx->Select.Buffer;
break;
#if FEATURE_MESA_program_debug
case GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA:
if (!ctx->Extensions.MESA_program_debug) {
_mesa_error(ctx, GL_INVALID_ENUM, "glGetPointerv");
return;
}
*params = *(GLvoid **) &ctx->FragmentProgram.Callback;
break;
case GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA:
if (!ctx->Extensions.MESA_program_debug) {
_mesa_error(ctx, GL_INVALID_ENUM, "glGetPointerv");
return;
}
*params = ctx->FragmentProgram.CallbackData;
break;
case GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA:
if (!ctx->Extensions.MESA_program_debug) {
_mesa_error(ctx, GL_INVALID_ENUM, "glGetPointerv");
return;
}
*params = *(GLvoid **) &ctx->VertexProgram.Callback;
break;
case GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA:
if (!ctx->Extensions.MESA_program_debug) {
_mesa_error(ctx, GL_INVALID_ENUM, "glGetPointerv");
return;
}
*params = ctx->VertexProgram.CallbackData;
break;
#endif
default:
_mesa_error( ctx, GL_INVALID_ENUM, "glGetPointerv" );
return;

View File

@ -75,7 +75,6 @@
#define FEATURE_EXT_texture_sRGB _HAVE_FULL_GL
#define FEATURE_EXT_timer_query _HAVE_FULL_GL
#define FEATURE_ATI_fragment_shader _HAVE_FULL_GL
#define FEATURE_MESA_program_debug _HAVE_FULL_GL
#define FEATURE_NV_fence _HAVE_FULL_GL
#define FEATURE_NV_fragment_program _HAVE_FULL_GL
#define FEATURE_NV_vertex_program _HAVE_FULL_GL

View File

@ -1856,13 +1856,6 @@ struct gl_vertex_program_state
/** Cache of fixed-function programs */
struct gl_program_cache *Cache;
#if FEATURE_MESA_program_debug
GLprogramcallbackMESA Callback;
GLvoid *CallbackData;
GLboolean CallbackEnabled;
GLuint CurrentPosition;
#endif
GLboolean _Overriden;
};
@ -1892,13 +1885,6 @@ struct gl_fragment_program_state
/** Cache of fixed-function programs */
struct gl_program_cache *Cache;
#if FEATURE_MESA_program_debug
GLprogramcallbackMESA Callback;
GLvoid *CallbackData;
GLboolean CallbackEnabled;
GLuint CurrentPosition;
#endif
};
@ -2502,7 +2488,6 @@ struct gl_extensions
GLboolean IBM_multimode_draw_arrays;
GLboolean MESA_pack_invert;
GLboolean MESA_packed_depth_stencil;
GLboolean MESA_program_debug;
GLboolean MESA_resize_buffers;
GLboolean MESA_ycbcr_texture;
GLboolean MESA_texture_array;

View File

@ -2752,9 +2752,6 @@ parse_fp_instruction (GLcontext * ctx, const GLubyte ** inst,
_mesa_init_instructions(fp, 1);
/* Record the position in the program string for debugging */
fp->StringPos = Program->Position;
/* OP_ALU_INST or OP_TEX_INST */
instClass = *(*inst)++;
@ -3194,8 +3191,6 @@ parse_vp_instruction (GLcontext * ctx, const GLubyte ** inst,
code = *(*inst)++;
_mesa_init_instructions(vp, 1);
/* Record the position in the program string for debugging */
vp->StringPos = Program->Position;
switch (type) {
/* XXX: */
@ -3557,10 +3552,6 @@ parse_instructions(GLcontext * ctx, const GLubyte * inst,
const GLuint numInst = Program->Base.NumInstructions;
_mesa_init_instructions(Program->Base.Instructions + numInst, 1);
Program->Base.Instructions[numInst].Opcode = OPCODE_END;
/* YYY Wrong Position in program, whatever, at least not random -> crash
Program->Position = parse_position (&inst);
*/
Program->Base.Instructions[numInst].StringPos = Program->Position;
}
Program->Base.NumInstructions++;

View File

@ -1311,8 +1311,6 @@ Parse_InstructionSequence(struct parse_state *parseState,
}
else if (Parse_String(parseState, "END")) {
inst->Opcode = OPCODE_END;
inst->StringPos = parseState->curLine - parseState->start;
assert(inst->StringPos >= 0);
parseState->numInst++;
if (Parse_Token(parseState, token)) {
RETURN_ERROR1("Code after END opcode.");
@ -1339,8 +1337,6 @@ Parse_InstructionSequence(struct parse_state *parseState,
inst->SaturateMode = (instMatch.suffixes & (_S))
? SATURATE_ZERO_ONE : SATURATE_OFF;
inst->CondUpdate = (instMatch.suffixes & (_C)) ? GL_TRUE : GL_FALSE;
inst->StringPos = parseState->curLine - parseState->start;
assert(inst->StringPos >= 0);
/*
* parse the input and output operands

View File

@ -799,7 +799,6 @@ Parse_UnaryOpInstruction(struct parse_state *parseState,
RETURN_ERROR1("ABS illegal for vertex program 1.0");
inst->Opcode = opcode;
inst->StringPos = parseState->curLine - parseState->start;
/* dest reg */
if (!Parse_MaskedDstReg(parseState, &inst->DstReg))
@ -832,7 +831,6 @@ Parse_BiOpInstruction(struct parse_state *parseState,
RETURN_ERROR1("SUB illegal for vertex program 1.0");
inst->Opcode = opcode;
inst->StringPos = parseState->curLine - parseState->start;
/* dest reg */
if (!Parse_MaskedDstReg(parseState, &inst->DstReg))
@ -880,7 +878,6 @@ Parse_TriOpInstruction(struct parse_state *parseState,
enum prog_opcode opcode)
{
inst->Opcode = opcode;
inst->StringPos = parseState->curLine - parseState->start;
/* dest reg */
if (!Parse_MaskedDstReg(parseState, &inst->DstReg))
@ -951,7 +948,6 @@ Parse_ScalarInstruction(struct parse_state *parseState,
RETURN_ERROR1("RCC illegal for vertex program 1.0");
inst->Opcode = opcode;
inst->StringPos = parseState->curLine - parseState->start;
/* dest reg */
if (!Parse_MaskedDstReg(parseState, &inst->DstReg))
@ -977,7 +973,6 @@ static GLboolean
Parse_AddressInstruction(struct parse_state *parseState, struct prog_instruction *inst)
{
inst->Opcode = OPCODE_ARL;
inst->StringPos = parseState->curLine - parseState->start;
/* Make ARB_vp backends happy */
inst->DstReg.File = PROGRAM_ADDRESS;
@ -1010,7 +1005,6 @@ Parse_EndInstruction(struct parse_state *parseState, struct prog_instruction *in
GLubyte token[100];
inst->Opcode = OPCODE_END;
inst->StringPos = parseState->curLine - parseState->start;
/* this should fail! */
if (Parse_Token(parseState, token))
@ -1044,7 +1038,6 @@ Parse_PrintInstruction(struct parse_state *parseState, struct prog_instruction *
GLint idx;
inst->Opcode = OPCODE_PRINT;
inst->StringPos = parseState->curLine - parseState->start;
/* The first argument is a literal string 'just like this' */
if (!Parse_String(parseState, "'"))

View File

@ -1,255 +0,0 @@
/*
* Mesa 3-D graphics library
* Version: 6.5.3
*
* Copyright (C) 1999-2007 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.
*/
#include "main/glheader.h"
#include "main/context.h"
#include "main/macros.h"
#include "nvfragparse.h"
#include "nvvertparse.h"
#include "program.h"
#include "prog_debug.h"
#include "prog_parameter.h"
#include "prog_instruction.h"
/**
* Functions for the experimental GL_MESA_program_debug extension.
*/
/* XXX temporary */
GLAPI void GLAPIENTRY
glProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback,
GLvoid *data)
{
_mesa_ProgramCallbackMESA(target, callback, data);
}
void
_mesa_ProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback,
GLvoid *data)
{
GET_CURRENT_CONTEXT(ctx);
switch (target) {
case GL_FRAGMENT_PROGRAM_ARB:
if (!ctx->Extensions.ARB_fragment_program) {
_mesa_error(ctx, GL_INVALID_ENUM, "glProgramCallbackMESA(target)");
return;
}
ctx->FragmentProgram.Callback = callback;
ctx->FragmentProgram.CallbackData = data;
break;
case GL_FRAGMENT_PROGRAM_NV:
if (!ctx->Extensions.NV_fragment_program) {
_mesa_error(ctx, GL_INVALID_ENUM, "glProgramCallbackMESA(target)");
return;
}
ctx->FragmentProgram.Callback = callback;
ctx->FragmentProgram.CallbackData = data;
break;
case GL_VERTEX_PROGRAM_ARB: /* == GL_VERTEX_PROGRAM_NV */
if (!ctx->Extensions.ARB_vertex_program &&
!ctx->Extensions.NV_vertex_program) {
_mesa_error(ctx, GL_INVALID_ENUM, "glProgramCallbackMESA(target)");
return;
}
ctx->VertexProgram.Callback = callback;
ctx->VertexProgram.CallbackData = data;
break;
default:
_mesa_error(ctx, GL_INVALID_ENUM, "glProgramCallbackMESA(target)");
return;
}
}
/* XXX temporary */
GLAPI void GLAPIENTRY
glGetProgramRegisterfvMESA(GLenum target,
GLsizei len, const GLubyte *registerName,
GLfloat *v)
{
_mesa_GetProgramRegisterfvMESA(target, len, registerName, v);
}
void
_mesa_GetProgramRegisterfvMESA(GLenum target,
GLsizei len, const GLubyte *registerName,
GLfloat *v)
{
char reg[1000];
GET_CURRENT_CONTEXT(ctx);
/* We _should_ be inside glBegin/glEnd */
#if 0
if (ctx->Driver.CurrentExecPrimitive == PRIM_OUTSIDE_BEGIN_END) {
_mesa_error(ctx, GL_INVALID_OPERATION, "glGetProgramRegisterfvMESA");
return;
}
#endif
/* make null-terminated copy of registerName */
len = MIN2((unsigned int) len, sizeof(reg) - 1);
_mesa_memcpy(reg, registerName, len);
reg[len] = 0;
switch (target) {
case GL_VERTEX_PROGRAM_ARB: /* == GL_VERTEX_PROGRAM_NV */
if (!ctx->Extensions.ARB_vertex_program &&
!ctx->Extensions.NV_vertex_program) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glGetProgramRegisterfvMESA(target)");
return;
}
if (!ctx->VertexProgram._Enabled) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glGetProgramRegisterfvMESA");
return;
}
/* GL_NV_vertex_program */
if (reg[0] == 'R') {
/* Temp register */
GLint i = _mesa_atoi(reg + 1);
if (i >= (GLint)ctx->Const.VertexProgram.MaxTemps) {
_mesa_error(ctx, GL_INVALID_VALUE,
"glGetProgramRegisterfvMESA(registerName)");
return;
}
ctx->Driver.GetProgramRegister(ctx, PROGRAM_TEMPORARY, i, v);
}
else if (reg[0] == 'v' && reg[1] == '[') {
/* Vertex Input attribute */
GLuint i;
for (i = 0; i < ctx->Const.VertexProgram.MaxAttribs; i++) {
const char *name = _mesa_nv_vertex_input_register_name(i);
char number[10];
_mesa_sprintf(number, "%d", i);
if (_mesa_strncmp(reg + 2, name, 4) == 0 ||
_mesa_strncmp(reg + 2, number, _mesa_strlen(number)) == 0) {
ctx->Driver.GetProgramRegister(ctx, PROGRAM_INPUT, i, v);
return;
}
}
_mesa_error(ctx, GL_INVALID_VALUE,
"glGetProgramRegisterfvMESA(registerName)");
return;
}
else if (reg[0] == 'o' && reg[1] == '[') {
/* Vertex output attribute */
}
/* GL_ARB_vertex_program */
else if (_mesa_strncmp(reg, "vertex.", 7) == 0) {
}
else {
_mesa_error(ctx, GL_INVALID_VALUE,
"glGetProgramRegisterfvMESA(registerName)");
return;
}
break;
case GL_FRAGMENT_PROGRAM_ARB:
if (!ctx->Extensions.ARB_fragment_program) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glGetProgramRegisterfvMESA(target)");
return;
}
if (!ctx->FragmentProgram._Enabled) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glGetProgramRegisterfvMESA");
return;
}
/* XXX to do */
break;
case GL_FRAGMENT_PROGRAM_NV:
if (!ctx->Extensions.NV_fragment_program) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glGetProgramRegisterfvMESA(target)");
return;
}
if (!ctx->FragmentProgram._Enabled) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glGetProgramRegisterfvMESA");
return;
}
if (reg[0] == 'R') {
/* Temp register */
GLint i = _mesa_atoi(reg + 1);
if (i >= (GLint)ctx->Const.FragmentProgram.MaxTemps) {
_mesa_error(ctx, GL_INVALID_VALUE,
"glGetProgramRegisterfvMESA(registerName)");
return;
}
ctx->Driver.GetProgramRegister(ctx, PROGRAM_TEMPORARY,
i, v);
}
else if (reg[0] == 'f' && reg[1] == '[') {
/* Fragment input attribute */
GLuint i;
for (i = 0; i < ctx->Const.FragmentProgram.MaxAttribs; i++) {
const char *name = _mesa_nv_fragment_input_register_name(i);
if (_mesa_strncmp(reg + 2, name, 4) == 0) {
ctx->Driver.GetProgramRegister(ctx, PROGRAM_INPUT, i, v);
return;
}
}
_mesa_error(ctx, GL_INVALID_VALUE,
"glGetProgramRegisterfvMESA(registerName)");
return;
}
else if (_mesa_strcmp(reg, "o[COLR]") == 0 ||
_mesa_strcmp(reg, "o[COLH]") == 0) {
/* Fragment output color */
ctx->Driver.GetProgramRegister(ctx, PROGRAM_OUTPUT,
FRAG_RESULT_COLOR, v);
}
else if (_mesa_strcmp(reg, "o[DEPR]") == 0) {
/* Fragment output depth */
ctx->Driver.GetProgramRegister(ctx, PROGRAM_OUTPUT,
FRAG_RESULT_DEPTH, v);
}
else {
/* try user-defined identifiers */
const GLfloat *value = _mesa_lookup_parameter_value(
ctx->FragmentProgram.Current->Base.Parameters, -1, reg);
if (value) {
COPY_4V(v, value);
}
else {
_mesa_error(ctx, GL_INVALID_VALUE,
"glGetProgramRegisterfvMESA(registerName)");
return;
}
}
break;
default:
_mesa_error(ctx, GL_INVALID_ENUM,
"glGetProgramRegisterfvMESA(target)");
return;
}
}

View File

@ -1,44 +0,0 @@
/*
* Mesa 3-D graphics library
* Version: 6.5.3
*
* Copyright (C) 1999-2007 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.
*/
#ifndef PROG_DEBUG_H
#define PROG_DEBUG_H 1
/*
* GL_MESA_program_debug
*/
extern void
_mesa_ProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback,
GLvoid *data);
extern void
_mesa_GetProgramRegisterfvMESA(GLenum target, GLsizei len,
const GLubyte *registerName, GLfloat *v);
#endif /* PROG_DEBUG_H */

View File

@ -186,30 +186,6 @@ get_dst_register_pointer(const struct prog_dst_register *dest,
#if FEATURE_MESA_program_debug
static struct gl_program_machine *CurrentMachine = NULL;
/**
* For GL_MESA_program_debug.
* Return current value (4*GLfloat) of a program register.
* Called via ctx->Driver.GetProgramRegister().
*/
void
_mesa_get_program_register(GLcontext *ctx, enum register_file file,
GLuint index, GLfloat val[4])
{
if (CurrentMachine) {
struct prog_src_register srcReg;
const GLfloat *src;
srcReg.File = file;
srcReg.Index = index;
src = get_src_register_pointer(&srcReg, CurrentMachine);
COPY_4V(val, src);
}
}
#endif /* FEATURE_MESA_program_debug */
/**
* Fetch a 4-element float vector from the given source register.
* Apply swizzling and negating as needed.
@ -633,10 +609,6 @@ _mesa_execute_program(GLcontext * ctx,
printf("execute program %u --------------------\n", program->Id);
}
#if FEATURE_MESA_program_debug
CurrentMachine = machine;
#endif
if (program->Target == GL_VERTEX_PROGRAM_ARB) {
machine->EnvParams = ctx->VertexProgram.Parameters;
}
@ -647,15 +619,6 @@ _mesa_execute_program(GLcontext * ctx,
for (pc = 0; pc < numInst; pc++) {
const struct prog_instruction *inst = program->Instructions + pc;
#if FEATURE_MESA_program_debug
if (ctx->FragmentProgram.CallbackEnabled &&
ctx->FragmentProgram.Callback) {
ctx->FragmentProgram.CurrentPosition = inst->StringPos;
ctx->FragmentProgram.Callback(program->Target,
ctx->FragmentProgram.CallbackData);
}
#endif
if (DEBUG_PROG) {
_mesa_print_instruction(inst);
}
@ -1780,9 +1743,5 @@ _mesa_execute_program(GLcontext * ctx,
} /* for pc */
#if FEATURE_MESA_program_debug
CurrentMachine = NULL;
#endif
return GL_TRUE;
}

View File

@ -421,11 +421,6 @@ struct prog_instruction
/** for driver use (try to remove someday) */
GLint Aux;
/* XXX obsolete - remove someday */
#if FEATURE_MESA_program_debug
GLshort StringPos;
#endif
};

View File

@ -220,7 +220,6 @@ SHADER_SOURCES = \
shader/nvvertparse.c \
shader/program.c \
shader/prog_cache.c \
shader/prog_debug.c \
shader/prog_execute.c \
shader/prog_instruction.c \
shader/prog_noise.c \

View File

@ -266,12 +266,6 @@ extern void
_swrast_eject_texture_images(GLcontext *ctx);
#if FEATURE_MESA_program_debug
extern void
_swrast_get_program_register(GLcontext *, enum register_file file,
GLuint index, GLfloat val[4]);
#endif /* FEATURE_MESA_program_debug */
/**
* The driver interface for the software rasterizer.