Added arbprogram.c to Makefiles.
Added display list support for GL_NV_fragment_program. Assorted clean-ups.
This commit is contained in:
parent
af0c247021
commit
5960105ca3
|
@ -1,8 +1,8 @@
|
|||
# $Id: Makefile.X11,v 1.78 2003/04/07 14:45:55 brianp Exp $
|
||||
# $Id: Makefile.X11,v 1.79 2003/04/17 02:33:11 brianp Exp $
|
||||
|
||||
# Mesa 3-D graphics library
|
||||
# Version: 5.0
|
||||
# Copyright (C) 1995-2002 Brian Paul
|
||||
# Version: 5.1
|
||||
# Copyright (C) 1995-2003 Brian Paul
|
||||
|
||||
# Makefile for core library
|
||||
|
||||
|
@ -26,6 +26,7 @@ CORE_SOURCES = \
|
|||
api_noop.c \
|
||||
api_validate.c \
|
||||
accum.c \
|
||||
arbprogram.c \
|
||||
attrib.c \
|
||||
blend.c \
|
||||
bufferobj.c \
|
||||
|
|
|
@ -61,6 +61,7 @@ MESA_CORE_SRCS = \
|
|||
api_noop.c \
|
||||
api_validate.c \
|
||||
accum.c \
|
||||
arbprogram.c \
|
||||
attrib.c \
|
||||
blend.c \
|
||||
bufferobj.c \
|
||||
|
|
|
@ -103,6 +103,7 @@ CORE_SOURCES = \
|
|||
api_noop.c \
|
||||
api_validate.c \
|
||||
accum.c \
|
||||
arbprogram.c \
|
||||
attrib.c \
|
||||
blend.c \
|
||||
bufferobj.c \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: Makefile.OSMesa16,v 1.14 2003/03/29 17:01:02 brianp Exp $
|
||||
# $Id: Makefile.OSMesa16,v 1.15 2003/04/17 02:33:11 brianp Exp $
|
||||
|
||||
# Mesa 3-D graphics library
|
||||
# Version: 5.1
|
||||
|
@ -27,6 +27,7 @@ CORE_SOURCES = \
|
|||
api_noop.c \
|
||||
api_validate.c \
|
||||
accum.c \
|
||||
arbprogram.c \
|
||||
attrib.c \
|
||||
blend.c \
|
||||
bufferobj.c \
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# $Id: Makefile.X11,v 1.78 2003/04/07 14:45:55 brianp Exp $
|
||||
# $Id: Makefile.X11,v 1.79 2003/04/17 02:33:11 brianp Exp $
|
||||
|
||||
# Mesa 3-D graphics library
|
||||
# Version: 5.0
|
||||
# Copyright (C) 1995-2002 Brian Paul
|
||||
# Version: 5.1
|
||||
# Copyright (C) 1995-2003 Brian Paul
|
||||
|
||||
# Makefile for core library
|
||||
|
||||
|
@ -26,6 +26,7 @@ CORE_SOURCES = \
|
|||
api_noop.c \
|
||||
api_validate.c \
|
||||
accum.c \
|
||||
arbprogram.c \
|
||||
attrib.c \
|
||||
blend.c \
|
||||
bufferobj.c \
|
||||
|
|
|
@ -56,6 +56,7 @@ GL_SOURCES = \
|
|||
api_noop.c \
|
||||
api_validate.c \
|
||||
accum.c \
|
||||
arbprogram.c \
|
||||
attrib.c \
|
||||
blend.c \
|
||||
bufferobj.c \
|
||||
|
|
|
@ -16,6 +16,7 @@ CORE_SRCS = \
|
|||
api_noop.c \
|
||||
api_validate.c \
|
||||
accum.c \
|
||||
arbprogram.c \
|
||||
attrib.c \
|
||||
blend.c \
|
||||
bufferobj.c \
|
||||
|
|
|
@ -40,13 +40,21 @@
|
|||
|
||||
|
||||
/* XXX temporary */
|
||||
extern void _mesa_parse_arb_vertex_program(GLcontext *ctx, GLenum target,
|
||||
const GLubyte *string, GLsizei len,
|
||||
struct vertex_program *prog);
|
||||
static void
|
||||
_mesa_parse_arb_vertex_program(GLcontext *ctx, GLenum target,
|
||||
const GLubyte *string, GLsizei len,
|
||||
struct vertex_program *prog)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_mesa_parse_arb_fragment_program(GLcontext *ctx, GLenum target,
|
||||
const GLubyte *string, GLsizei len,
|
||||
struct fragment_program *prog)
|
||||
{
|
||||
}
|
||||
|
||||
extern void _mesa_parse_arb_fragment_program(GLcontext *ctx, GLenum target,
|
||||
const GLubyte *string, GLsizei len,
|
||||
struct fragment_program *prog);
|
||||
|
||||
|
||||
void
|
||||
|
@ -448,7 +456,7 @@ _mesa_BindProgramARB(GLenum target, GLuint program)
|
|||
*/
|
||||
if (program == 0) {
|
||||
/* default program */
|
||||
if (target == GL_VERTEX_PROGRAM_NV)
|
||||
if (target == GL_VERTEX_PROGRAM_ARB)
|
||||
prog = ctx->Shared->DefaultVertexProgram;
|
||||
else
|
||||
prog = ctx->Shared->DefaultFragmentProgram;
|
||||
|
@ -471,10 +479,11 @@ _mesa_BindProgramARB(GLenum target, GLuint program)
|
|||
}
|
||||
|
||||
/* bind now */
|
||||
if (target == GL_VERTEX_PROGRAM_NV) {
|
||||
if (target == GL_VERTEX_PROGRAM_ARB) {
|
||||
ctx->VertexProgram.Current = (struct vertex_program *) prog;
|
||||
}
|
||||
else if (target == GL_FRAGMENT_PROGRAM_NV) {
|
||||
else {
|
||||
ASSERT(target == GL_FRAGMENT_PROGRAM_ARB);
|
||||
ctx->FragmentProgram.Current = (struct fragment_program *) prog;
|
||||
}
|
||||
|
||||
|
@ -528,7 +537,7 @@ _mesa_ProgramEnvParameter4fARB(GLenum target, GLuint index,
|
|||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_BEGIN_END(ctx);
|
||||
|
||||
if (target == GL_FRAGMENT_PROGRAM_NV
|
||||
if (target == GL_FRAGMENT_PROGRAM_ARB
|
||||
&& ctx->Extensions.ARB_fragment_program) {
|
||||
if (index >= ctx->Const.MaxFragmentProgramEnvParams) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glProgramEnvParameter(index)");
|
||||
|
@ -537,7 +546,7 @@ _mesa_ProgramEnvParameter4fARB(GLenum target, GLuint index,
|
|||
index += MAX_NV_FRAGMENT_PROGRAM_TEMPS; /* XXX fix */
|
||||
ASSIGN_4V(ctx->FragmentProgram.Machine.Registers[index], x, y, z, w);
|
||||
}
|
||||
if (target == GL_VERTEX_PROGRAM_NV
|
||||
if (target == GL_VERTEX_PROGRAM_ARB
|
||||
&& ctx->Extensions.ARB_vertex_program) {
|
||||
if (index >= ctx->Const.MaxVertexProgramEnvParams) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glProgramEnvParameter(index)");
|
||||
|
@ -586,7 +595,7 @@ _mesa_GetProgramEnvParameterfvARB(GLenum target, GLuint index,
|
|||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_BEGIN_END(ctx);
|
||||
|
||||
if (target == GL_FRAGMENT_PROGRAM_NV
|
||||
if (target == GL_FRAGMENT_PROGRAM_ARB
|
||||
&& ctx->Extensions.ARB_fragment_program) {
|
||||
if (index >= ctx->Const.MaxFragmentProgramEnvParams) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glGetProgramEnvParameter(index)");
|
||||
|
@ -595,7 +604,7 @@ _mesa_GetProgramEnvParameterfvARB(GLenum target, GLuint index,
|
|||
index += MAX_NV_FRAGMENT_PROGRAM_TEMPS; /* XXX fix */
|
||||
COPY_4V(params, ctx->FragmentProgram.Machine.Registers[index]);
|
||||
}
|
||||
if (target == GL_VERTEX_PROGRAM_NV
|
||||
if (target == GL_VERTEX_PROGRAM_ARB
|
||||
&& ctx->Extensions.ARB_vertex_program) {
|
||||
if (index >= ctx->Const.MaxVertexProgramEnvParams) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glGetProgramEnvParameter(index)");
|
||||
|
@ -611,8 +620,9 @@ _mesa_GetProgramEnvParameterfvARB(GLenum target, GLuint index,
|
|||
}
|
||||
|
||||
|
||||
#if 111 /* from nvprogram.c */
|
||||
|
||||
/**
|
||||
* Note, this function is also used by the GL_NV_fragment_program extension.
|
||||
*/
|
||||
void
|
||||
_mesa_ProgramLocalParameter4fARB(GLenum target, GLuint index,
|
||||
GLfloat x, GLfloat y, GLfloat z, GLfloat w)
|
||||
|
@ -661,6 +671,9 @@ _mesa_ProgramLocalParameter4fARB(GLenum target, GLuint index,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Note, this function is also used by the GL_NV_fragment_program extension.
|
||||
*/
|
||||
void
|
||||
_mesa_ProgramLocalParameter4fvARB(GLenum target, GLuint index,
|
||||
const GLfloat *params)
|
||||
|
@ -670,6 +683,9 @@ _mesa_ProgramLocalParameter4fvARB(GLenum target, GLuint index,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Note, this function is also used by the GL_NV_fragment_program extension.
|
||||
*/
|
||||
void
|
||||
_mesa_ProgramLocalParameter4dARB(GLenum target, GLuint index,
|
||||
GLdouble x, GLdouble y,
|
||||
|
@ -680,6 +696,9 @@ _mesa_ProgramLocalParameter4dARB(GLenum target, GLuint index,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Note, this function is also used by the GL_NV_fragment_program extension.
|
||||
*/
|
||||
void
|
||||
_mesa_ProgramLocalParameter4dvARB(GLenum target, GLuint index,
|
||||
const GLdouble *params)
|
||||
|
@ -690,6 +709,9 @@ _mesa_ProgramLocalParameter4dvARB(GLenum target, GLuint index,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Note, this function is also used by the GL_NV_fragment_program extension.
|
||||
*/
|
||||
void
|
||||
_mesa_GetProgramLocalParameterfvARB(GLenum target, GLuint index,
|
||||
GLfloat *params)
|
||||
|
@ -704,13 +726,16 @@ _mesa_GetProgramLocalParameterfvARB(GLenum target, GLuint index,
|
|||
prog = &(ctx->VertexProgram.Current->Base);
|
||||
maxParams = ctx->Const.MaxVertexProgramLocalParams;
|
||||
}
|
||||
else if ((target == GL_FRAGMENT_PROGRAM_ARB
|
||||
&& ctx->Extensions.ARB_fragment_program) ||
|
||||
(target == GL_FRAGMENT_PROGRAM_NV
|
||||
&& ctx->Extensions.NV_fragment_program)) {
|
||||
else if (target == GL_FRAGMENT_PROGRAM_ARB
|
||||
&& ctx->Extensions.ARB_fragment_program) {
|
||||
prog = &(ctx->FragmentProgram.Current->Base);
|
||||
maxParams = ctx->Const.MaxFragmentProgramLocalParams;
|
||||
}
|
||||
else if (target == GL_FRAGMENT_PROGRAM_NV
|
||||
&& ctx->Extensions.NV_fragment_program) {
|
||||
prog = &(ctx->FragmentProgram.Current->Base);
|
||||
maxParams = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
|
||||
}
|
||||
else {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||
"glGetProgramLocalParameterARB(target)");
|
||||
|
@ -728,60 +753,21 @@ _mesa_GetProgramLocalParameterfvARB(GLenum target, GLuint index,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Note, this function is also used by the GL_NV_fragment_program extension.
|
||||
*/
|
||||
void
|
||||
_mesa_GetProgramLocalParameterdvARB(GLenum target, GLuint index,
|
||||
GLdouble *params)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLfloat floatParams[4];
|
||||
_mesa_GetProgramLocalParameterfvARB(target, index, floatParams);
|
||||
COPY_4V(params, floatParams);
|
||||
if (ctx->ErrorValue == GL_NO_ERROR) {
|
||||
COPY_4V(params, floatParams);
|
||||
}
|
||||
}
|
||||
|
||||
#else /* stubs */
|
||||
|
||||
void
|
||||
_mesa_ProgramLocalParameter4dARB(GLenum target, GLuint index,
|
||||
GLdouble x, GLdouble y,
|
||||
GLdouble z, GLdouble w)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_mesa_ProgramLocalParameter4dvARB(GLenum target, GLuint index,
|
||||
const GLdouble *params)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_mesa_ProgramLocalParameter4fARB(GLenum target, GLuint index,
|
||||
GLfloat x, GLfloat y, GLfloat z, GLfloat w)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_mesa_ProgramLocalParameter4fvARB(GLenum target, GLuint index,
|
||||
const GLfloat *params)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
_mesa_GetProgramLocalParameterdvARB(GLenum target, GLuint index,
|
||||
GLdouble *params)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_mesa_GetProgramLocalParameterfvARB(GLenum target, GLuint index,
|
||||
GLfloat *params)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* stubs */
|
||||
|
||||
|
||||
void
|
||||
_mesa_GetProgramivARB(GLenum target, GLenum pname, GLint *params)
|
||||
|
|
|
@ -19,6 +19,7 @@ CORE_SOURCES =accum.c \
|
|||
api_loopback.c \
|
||||
api_noop.c \
|
||||
api_validate.c \
|
||||
arbprogram.c \
|
||||
attrib.c \
|
||||
blend.c \
|
||||
bufferobj.c \
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
/* $Id: dlist.c,v 1.103 2003/03/03 15:37:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 5.0
|
||||
* Version: 5.1
|
||||
*
|
||||
* Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2003 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"),
|
||||
|
@ -27,6 +25,10 @@
|
|||
#include "glheader.h"
|
||||
#include "imports.h"
|
||||
#include "api_loopback.h"
|
||||
#include "config.h"
|
||||
#if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
|
||||
#include "arbprogram.h"
|
||||
#endif
|
||||
#include "attrib.h"
|
||||
#include "blend.h"
|
||||
#include "buffers.h"
|
||||
|
@ -61,7 +63,7 @@
|
|||
#include "texstate.h"
|
||||
#include "mtypes.h"
|
||||
#include "varray.h"
|
||||
#if FEATURE_NV_vertex_program
|
||||
#if FEATURE_NV_vertex_program || FEATURE_NV_fragment_program
|
||||
#include "nvprogram.h"
|
||||
#endif
|
||||
|
||||
|
@ -248,6 +250,9 @@ typedef enum {
|
|||
OPCODE_LOAD_PROGRAM_NV,
|
||||
OPCODE_PROGRAM_PARAMETER4F_NV,
|
||||
OPCODE_TRACK_MATRIX_NV,
|
||||
/* GL_NV_fragment_program */
|
||||
OPCODE_PROGRAM_LOCAL_PARAMETER_ARB,
|
||||
OPCODE_PROGRAM_NAMED_PARAMETER_NV,
|
||||
/* GL_EXT_stencil_two_side */
|
||||
OPCODE_ACTIVE_STENCIL_FACE_EXT,
|
||||
/* The following three are meta instructions */
|
||||
|
@ -336,6 +341,7 @@ void _mesa_destroy_list( GLcontext *ctx, GLuint list )
|
|||
}
|
||||
else {
|
||||
switch (n[0].opcode) {
|
||||
/* for some commands, we need to free malloc'd memory */
|
||||
case OPCODE_MAP1:
|
||||
FREE(n[6].data);
|
||||
n += InstSize[n[0].opcode];
|
||||
|
@ -420,6 +426,12 @@ void _mesa_destroy_list( GLcontext *ctx, GLuint list )
|
|||
FREE(n[11].data);
|
||||
n += InstSize[n[0].opcode];
|
||||
break;
|
||||
#if FEATURE_NV_fragment_program
|
||||
case OPCODE_PROGRAM_NAMED_PARAMETER_NV:
|
||||
FREE(n[3].data);
|
||||
n += InstSize[n[0].opcode];
|
||||
break;
|
||||
#endif
|
||||
case OPCODE_CONTINUE:
|
||||
n = (Node *) n[1].next;
|
||||
FREE( block );
|
||||
|
@ -644,6 +656,9 @@ void _mesa_init_lists( void )
|
|||
InstSize[OPCODE_LOAD_PROGRAM_NV] = 4;
|
||||
InstSize[OPCODE_PROGRAM_PARAMETER4F_NV] = 7;
|
||||
InstSize[OPCODE_TRACK_MATRIX_NV] = 5;
|
||||
/* GL_NV_fragment_program */
|
||||
InstSize[OPCODE_PROGRAM_LOCAL_PARAMETER_ARB] = 7;
|
||||
InstSize[OPCODE_PROGRAM_NAMED_PARAMETER_NV] = 8;
|
||||
/* GL_EXT_stencil_two_side */
|
||||
InstSize[OPCODE_ACTIVE_STENCIL_FACE_EXT] = 2;
|
||||
}
|
||||
|
@ -4119,6 +4134,160 @@ save_TrackMatrixNV(GLenum target, GLuint address,
|
|||
#endif /* FEATURE_NV_vertex_program */
|
||||
|
||||
|
||||
/*
|
||||
* GL_NV_fragment_program
|
||||
*/
|
||||
#if FEATURE_NV_fragment_program
|
||||
static void
|
||||
save_ProgramLocalParameter4fARB(GLenum target, GLuint index,
|
||||
GLfloat x, GLfloat y, GLfloat z, GLfloat w)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = ALLOC_INSTRUCTION( ctx, OPCODE_PROGRAM_LOCAL_PARAMETER_ARB, 6 );
|
||||
if (n) {
|
||||
n[1].e = target;
|
||||
n[2].ui = index;
|
||||
n[3].f = x;
|
||||
n[4].f = y;
|
||||
n[5].f = z;
|
||||
n[6].f = w;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
(*ctx->Exec->ProgramLocalParameter4fARB)(target, index, x, y, z, w);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
save_ProgramLocalParameter4fvARB(GLenum target, GLuint index,
|
||||
const GLfloat *params)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = ALLOC_INSTRUCTION( ctx, OPCODE_PROGRAM_LOCAL_PARAMETER_ARB, 6 );
|
||||
if (n) {
|
||||
n[1].e = target;
|
||||
n[2].ui = index;
|
||||
n[3].f = params[0];
|
||||
n[4].f = params[1];
|
||||
n[5].f = params[2];
|
||||
n[6].f = params[3];
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
(*ctx->Exec->ProgramLocalParameter4fvARB)(target, index, params);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
save_ProgramLocalParameter4dARB(GLenum target, GLuint index,
|
||||
GLdouble x, GLdouble y,
|
||||
GLdouble z, GLdouble w)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = ALLOC_INSTRUCTION( ctx, OPCODE_PROGRAM_LOCAL_PARAMETER_ARB, 6 );
|
||||
if (n) {
|
||||
n[1].e = target;
|
||||
n[2].ui = index;
|
||||
n[3].f = x;
|
||||
n[4].f = y;
|
||||
n[5].f = z;
|
||||
n[6].f = w;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
(*ctx->Exec->ProgramLocalParameter4dARB)(target, index, x, y, z, w);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
save_ProgramLocalParameter4dvARB(GLenum target, GLuint index,
|
||||
const GLdouble *params)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = ALLOC_INSTRUCTION( ctx, OPCODE_PROGRAM_LOCAL_PARAMETER_ARB, 6 );
|
||||
if (n) {
|
||||
n[1].e = target;
|
||||
n[2].ui = index;
|
||||
n[3].f = params[0];
|
||||
n[4].f = params[1];
|
||||
n[5].f = params[2];
|
||||
n[6].f = params[3];
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
(*ctx->Exec->ProgramLocalParameter4dvARB)(target, index, params);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
save_ProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte *name,
|
||||
GLfloat x, GLfloat y, GLfloat z, GLfloat w)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
GLubyte *nameCopy;
|
||||
|
||||
nameCopy = _mesa_malloc(len);
|
||||
if (!nameCopy) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glProgramNamedParameter4fNV");
|
||||
return;
|
||||
}
|
||||
_mesa_memcpy(nameCopy, name, len);
|
||||
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = ALLOC_INSTRUCTION( ctx, OPCODE_PROGRAM_NAMED_PARAMETER_NV, 6 );
|
||||
if (n) {
|
||||
n[1].ui = id;
|
||||
n[2].i = len;
|
||||
n[3].data = nameCopy;
|
||||
n[4].f = x;
|
||||
n[5].f = y;
|
||||
n[6].f = z;
|
||||
n[7].f = w;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
(*ctx->Exec->ProgramNamedParameter4fNV)(id, len, name, x, y, z, w);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
save_ProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte *name,
|
||||
const float v[])
|
||||
{
|
||||
save_ProgramNamedParameter4fNV(id, len, name, v[0], v[1], v[2], v[3]);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
save_ProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte *name,
|
||||
GLdouble x, GLdouble y, GLdouble z, GLdouble w)
|
||||
{
|
||||
save_ProgramNamedParameter4fNV(id, len, name, (GLfloat) x, (GLfloat) y,
|
||||
(GLfloat) z,(GLfloat) w);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
save_ProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte *name,
|
||||
const double v[])
|
||||
{
|
||||
save_ProgramNamedParameter4fNV(id, len, name, (GLfloat) v[0],
|
||||
(GLfloat) v[1], (GLfloat) v[2],
|
||||
(GLfloat) v[3]);
|
||||
}
|
||||
|
||||
#endif /* FEATURE_NV_fragment_program */
|
||||
|
||||
|
||||
|
||||
/* GL_EXT_stencil_two_side */
|
||||
static void save_ActiveStencilFaceEXT( GLenum face )
|
||||
{
|
||||
|
@ -4836,6 +5005,7 @@ execute_list( GLcontext *ctx, GLuint list )
|
|||
case OPCODE_WINDOW_POS_ARB: /* GL_ARB_window_pos */
|
||||
(*ctx->Exec->WindowPos3fMESA)( n[1].f, n[2].f, n[3].f );
|
||||
break;
|
||||
#if FEATURE_NV_vertex_program
|
||||
case OPCODE_BIND_PROGRAM_NV: /* GL_NV_vertex_program */
|
||||
(*ctx->Exec->BindProgramNV)( n[1].e, n[2].ui );
|
||||
break;
|
||||
|
@ -4866,6 +5036,18 @@ execute_list( GLcontext *ctx, GLuint list )
|
|||
case OPCODE_TRACK_MATRIX_NV:
|
||||
(*ctx->Exec->TrackMatrixNV)(n[1].e, n[2].ui, n[3].e, n[4].e);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if FEATURE_NV_fragment_program
|
||||
case OPCODE_PROGRAM_LOCAL_PARAMETER_ARB:
|
||||
(*ctx->Exec->ProgramLocalParameter4fARB)(n[1].e, n[2].ui, n[3].f,
|
||||
n[4].f, n[5].f, n[6].f);
|
||||
break;
|
||||
case OPCODE_PROGRAM_NAMED_PARAMETER_NV:
|
||||
(*ctx->Exec->ProgramNamedParameter4fNV)(n[1].ui, n[2].i, n[3].data,
|
||||
n[4].f, n[5].f, n[6].f, n[7].f);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case OPCODE_CONTINUE:
|
||||
n = (Node *) n[1].next;
|
||||
|
@ -6230,6 +6412,22 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
|
|||
table->VertexAttribPointerNV = _mesa_VertexAttribPointerNV;
|
||||
#endif
|
||||
|
||||
/* 282. GL_NV_fragment_program */
|
||||
#if FEATURE_NV_fragment_program
|
||||
table->ProgramNamedParameter4fNV = save_ProgramNamedParameter4fNV;
|
||||
table->ProgramNamedParameter4dNV = save_ProgramNamedParameter4dNV;
|
||||
table->ProgramNamedParameter4fvNV = save_ProgramNamedParameter4fvNV;
|
||||
table->ProgramNamedParameter4dvNV = save_ProgramNamedParameter4dvNV;
|
||||
table->GetProgramNamedParameterfvNV = _mesa_GetProgramNamedParameterfvNV;
|
||||
table->GetProgramNamedParameterdvNV = _mesa_GetProgramNamedParameterdvNV;
|
||||
table->ProgramLocalParameter4dARB = save_ProgramLocalParameter4dARB;
|
||||
table->ProgramLocalParameter4dvARB = save_ProgramLocalParameter4dvARB;
|
||||
table->ProgramLocalParameter4fARB = save_ProgramLocalParameter4fARB;
|
||||
table->ProgramLocalParameter4fvARB = save_ProgramLocalParameter4fvARB;
|
||||
table->GetProgramLocalParameterdvARB = _mesa_GetProgramLocalParameterdvARB;
|
||||
table->GetProgramLocalParameterfvARB = _mesa_GetProgramLocalParameterfvARB;
|
||||
#endif
|
||||
|
||||
/* 262. GL_NV_point_sprite */
|
||||
table->PointParameteriNV = save_PointParameteriNV;
|
||||
table->PointParameterivNV = save_PointParameterivNV;
|
||||
|
@ -6260,10 +6458,17 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
|
|||
table->GetCompressedTexImageARB = exec_GetCompressedTexImageARB;
|
||||
|
||||
/* ARB 14. GL_ARB_point_parameters */
|
||||
/* re-use EXT_point_parameters functions */
|
||||
/* aliased with EXT_point_parameters functions */
|
||||
|
||||
/* ARB 25. GL_ARB_window_pos */
|
||||
/* re-use MESA_window_pos functions */
|
||||
/* aliased with MESA_window_pos functions */
|
||||
|
||||
/* ARB 26. GL_ARB_vertex_program */
|
||||
/* XXX todo */
|
||||
/* ARB 27. GL_ARB_vertex_program */
|
||||
/* XXX todo */
|
||||
/* ARB 28. GL_ARB_vertex_buffer_object */
|
||||
/* XXX todo */
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1183,7 +1183,7 @@ _mesa_GetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte *name,
|
|||
}
|
||||
|
||||
|
||||
/* XXX move into arbprogram.c */
|
||||
#if 000
|
||||
void
|
||||
_mesa_ProgramLocalParameter4fARB(GLenum target, GLuint index,
|
||||
GLfloat x, GLfloat y, GLfloat z, GLfloat w)
|
||||
|
@ -1284,3 +1284,4 @@ _mesa_GetProgramLocalParameterdvARB(GLenum target, GLuint index,
|
|||
_mesa_GetProgramLocalParameterfvARB(target, index, floatParams);
|
||||
COPY_4V(params, floatParams);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
/* $Id: nvprogram.h,v 1.7 2003/04/17 01:48:20 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 5.1
|
||||
|
@ -147,6 +145,7 @@ extern void
|
|||
_mesa_GetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte *name,
|
||||
GLdouble *params);
|
||||
|
||||
#if 0
|
||||
extern void
|
||||
_mesa_ProgramLocalParameter4fARB(GLenum target, GLuint index,
|
||||
GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
|
@ -171,6 +170,7 @@ _mesa_GetProgramLocalParameterfvARB(GLenum target, GLuint index,
|
|||
extern void
|
||||
_mesa_GetProgramLocalParameterdvARB(GLenum target, GLuint index,
|
||||
GLdouble *params);
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: state.c,v 1.103 2003/04/08 02:27:16 brianp Exp $ */
|
||||
/* $Id: state.c,v 1.104 2003/04/17 02:33:09 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
@ -34,6 +34,9 @@
|
|||
#include "glheader.h"
|
||||
#include "accum.h"
|
||||
#include "api_loopback.h"
|
||||
#if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
|
||||
#include "arbprogram.h"
|
||||
#endif
|
||||
#include "attrib.h"
|
||||
#include "blend.h"
|
||||
#if FEATURE_ARB_vertex_buffer_object
|
||||
|
@ -510,6 +513,7 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
|
|||
exec->VertexAttribPointerNV = _mesa_VertexAttribPointerNV;
|
||||
#endif
|
||||
|
||||
/* 282. GL_NV_fragment_program */
|
||||
#if FEATURE_NV_fragment_program
|
||||
exec->ProgramNamedParameter4fNV = _mesa_ProgramNamedParameter4fNV;
|
||||
exec->ProgramNamedParameter4dNV = _mesa_ProgramNamedParameter4dNV;
|
||||
|
@ -557,6 +561,73 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
|
|||
/* ARB 14. GL_ARB_point_parameters */
|
||||
/* reuse EXT_point_parameters functions */
|
||||
|
||||
/* ARB 26. GL_ARB_vertex_program */
|
||||
/* ARB 27. GL_ARB_fragment_program */
|
||||
#if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
|
||||
exec->VertexAttrib1sARB = _mesa_VertexAttrib1sARB;
|
||||
exec->VertexAttrib1fARB = _mesa_VertexAttrib1fARB;
|
||||
exec->VertexAttrib1dARB = _mesa_VertexAttrib1dARB;
|
||||
exec->VertexAttrib2sARB = _mesa_VertexAttrib2sARB;
|
||||
exec->VertexAttrib2fARB = _mesa_VertexAttrib2fARB;
|
||||
exec->VertexAttrib2dARB = _mesa_VertexAttrib2dARB;
|
||||
exec->VertexAttrib3sARB = _mesa_VertexAttrib3sARB;
|
||||
exec->VertexAttrib3fARB = _mesa_VertexAttrib3fARB;
|
||||
exec->VertexAttrib3dARB = _mesa_VertexAttrib3dARB;
|
||||
exec->VertexAttrib4sARB = _mesa_VertexAttrib4sARB;
|
||||
exec->VertexAttrib4fARB = _mesa_VertexAttrib4fARB;
|
||||
exec->VertexAttrib4dARB = _mesa_VertexAttrib4dARB;
|
||||
exec->VertexAttrib4NubARB = _mesa_VertexAttrib4NubARB;
|
||||
exec->VertexAttrib1svARB = _mesa_VertexAttrib1svARB;
|
||||
exec->VertexAttrib1fvARB = _mesa_VertexAttrib1fvARB;
|
||||
exec->VertexAttrib1dvARB = _mesa_VertexAttrib1dvARB;
|
||||
exec->VertexAttrib2svARB = _mesa_VertexAttrib2svARB;
|
||||
exec->VertexAttrib2fvARB = _mesa_VertexAttrib2fvARB;
|
||||
exec->VertexAttrib2dvARB = _mesa_VertexAttrib2dvARB;
|
||||
exec->VertexAttrib3svARB = _mesa_VertexAttrib3svARB;
|
||||
exec->VertexAttrib3fvARB = _mesa_VertexAttrib3fvARB;
|
||||
exec->VertexAttrib3dvARB = _mesa_VertexAttrib3dvARB;
|
||||
exec->VertexAttrib4bvARB = _mesa_VertexAttrib4bvARB;
|
||||
exec->VertexAttrib4svARB = _mesa_VertexAttrib4svARB;
|
||||
exec->VertexAttrib4ivARB = _mesa_VertexAttrib4ivARB;
|
||||
exec->VertexAttrib4ubvARB = _mesa_VertexAttrib4ubvARB;
|
||||
exec->VertexAttrib4usvARB = _mesa_VertexAttrib4usvARB;
|
||||
exec->VertexAttrib4uivARB = _mesa_VertexAttrib4uivARB;
|
||||
exec->VertexAttrib4fvARB = _mesa_VertexAttrib4fvARB;
|
||||
exec->VertexAttrib4dvARB = _mesa_VertexAttrib4dvARB;
|
||||
exec->VertexAttrib4NbvARB = _mesa_VertexAttrib4NbvARB;
|
||||
exec->VertexAttrib4NsvARB = _mesa_VertexAttrib4NsvARB;
|
||||
exec->VertexAttrib4NivARB = _mesa_VertexAttrib4NivARB;
|
||||
exec->VertexAttrib4NubvARB = _mesa_VertexAttrib4NubvARB;
|
||||
exec->VertexAttrib4NusvARB = _mesa_VertexAttrib4NusvARB;
|
||||
exec->VertexAttrib4NuivARB = _mesa_VertexAttrib4NuivARB;
|
||||
exec->VertexAttribPointerARB = _mesa_VertexAttribPointerARB;
|
||||
exec->EnableVertexAttribArrayARB = _mesa_EnableVertexAttribArrayARB;
|
||||
exec->DisableVertexAttribArrayARB = _mesa_DisableVertexAttribArrayARB;
|
||||
exec->ProgramStringARB = _mesa_ProgramStringARB;
|
||||
exec->BindProgramARB = _mesa_BindProgramARB;
|
||||
exec->DeleteProgramsARB = _mesa_DeleteProgramsARB;
|
||||
exec->GenProgramsARB = _mesa_GenProgramsARB;
|
||||
exec->ProgramEnvParameter4dARB = _mesa_ProgramEnvParameter4dARB;
|
||||
exec->ProgramEnvParameter4dvARB = _mesa_ProgramEnvParameter4dvARB;
|
||||
exec->ProgramEnvParameter4fARB = _mesa_ProgramEnvParameter4fARB;
|
||||
exec->ProgramEnvParameter4fvARB = _mesa_ProgramEnvParameter4fvARB;
|
||||
exec->ProgramLocalParameter4dARB = _mesa_ProgramLocalParameter4dARB;
|
||||
exec->ProgramLocalParameter4dvARB = _mesa_ProgramLocalParameter4dvARB;
|
||||
exec->ProgramLocalParameter4fARB = _mesa_ProgramLocalParameter4fARB;
|
||||
exec->ProgramLocalParameter4fvARB = _mesa_ProgramLocalParameter4fvARB;
|
||||
exec->GetProgramEnvParameterdvARB = _mesa_GetProgramEnvParameterdvARB;
|
||||
exec->GetProgramEnvParameterfvARB = _mesa_GetProgramEnvParameterfvARB;
|
||||
exec->GetProgramLocalParameterdvARB = _mesa_GetProgramLocalParameterdvARB;
|
||||
exec->GetProgramLocalParameterfvARB = _mesa_GetProgramLocalParameterfvARB;
|
||||
exec->GetProgramivARB = _mesa_GetProgramivARB;
|
||||
exec->GetProgramStringARB = _mesa_GetProgramStringARB;
|
||||
exec->GetVertexAttribdvARB = _mesa_GetVertexAttribdvARB;
|
||||
exec->GetVertexAttribfvARB = _mesa_GetVertexAttribfvARB;
|
||||
exec->GetVertexAttribivARB = _mesa_GetVertexAttribivARB;
|
||||
exec->GetVertexAttribPointervARB = _mesa_GetVertexAttribPointervARB;
|
||||
exec->IsProgramARB = _mesa_IsProgramARB;
|
||||
#endif
|
||||
|
||||
/* ARB 28. GL_ARB_vertex_buffer_object */
|
||||
#if FEATURE_ARB_vertex_buffer_object
|
||||
exec->BindBufferARB = _mesa_BindBufferARB;
|
||||
|
|
Loading…
Reference in New Issue