move GL_MESA_program_debug funcs to prog_debug.c
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 6.5.2
|
* Version: 6.5.3
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
@@ -32,25 +32,13 @@
|
|||||||
#include "glheader.h"
|
#include "glheader.h"
|
||||||
#include "context.h"
|
#include "context.h"
|
||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
#include "imports.h"
|
|
||||||
#include "macros.h"
|
|
||||||
#include "mtypes.h"
|
|
||||||
#include "nvfragparse.h"
|
|
||||||
#include "program.h"
|
#include "program.h"
|
||||||
#include "prog_parameter.h"
|
#include "prog_parameter.h"
|
||||||
#include "prog_instruction.h"
|
#include "prog_instruction.h"
|
||||||
#include "prog_statevars.h"
|
|
||||||
#include "nvvertparse.h"
|
|
||||||
#include "atifragshader.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
/**********************************************************************/
|
* A pointer to this dummy program is put into the hash table when
|
||||||
/* Utility functions */
|
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* A pointer to this dummy program is put into the hash table when
|
|
||||||
* glGenPrograms is called.
|
* glGenPrograms is called.
|
||||||
*/
|
*/
|
||||||
struct gl_program _mesa_DummyProgram;
|
struct gl_program _mesa_DummyProgram;
|
||||||
@@ -629,233 +617,3 @@ _mesa_GenPrograms(GLsizei n, GLuint *ids)
|
|||||||
ids[i] = first + i;
|
ids[i] = first + i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
/* 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;
|
|
||||||
}
|
|
||||||
#if 0 /* FIX ME */
|
|
||||||
ctx->Driver.GetVertexProgramRegister(ctx, PROGRAM_TEMPORARY, i, v);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
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) {
|
|
||||||
#if 0 /* FIX ME */
|
|
||||||
ctx->Driver.GetVertexProgramRegister(ctx, PROGRAM_INPUT,
|
|
||||||
i, v);
|
|
||||||
#endif
|
|
||||||
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.GetFragmentProgramRegister(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.GetFragmentProgramRegister(ctx,
|
|
||||||
PROGRAM_INPUT, i, v);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
|
||||||
"glGetProgramRegisterfvMESA(registerName)");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (_mesa_strcmp(reg, "o[COLR]") == 0) {
|
|
||||||
/* Fragment output color */
|
|
||||||
ctx->Driver.GetFragmentProgramRegister(ctx, PROGRAM_OUTPUT,
|
|
||||||
FRAG_RESULT_COLR, v);
|
|
||||||
}
|
|
||||||
else if (_mesa_strcmp(reg, "o[COLH]") == 0) {
|
|
||||||
/* Fragment output color */
|
|
||||||
ctx->Driver.GetFragmentProgramRegister(ctx, PROGRAM_OUTPUT,
|
|
||||||
FRAG_RESULT_COLH, v);
|
|
||||||
}
|
|
||||||
else if (_mesa_strcmp(reg, "o[DEPR]") == 0) {
|
|
||||||
/* Fragment output depth */
|
|
||||||
ctx->Driver.GetFragmentProgramRegister(ctx, PROGRAM_OUTPUT,
|
|
||||||
FRAG_RESULT_DEPR, 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 6.5.2
|
* Version: 6.5.3
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
@@ -103,17 +103,4 @@ _mesa_GenPrograms(GLsizei n, GLuint *ids);
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 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 /* PROGRAM_H */
|
#endif /* PROGRAM_H */
|
||||||
|
Reference in New Issue
Block a user