added LoadProgramNV and RequestResidentProgramsNV
This commit is contained in:
parent
5960105ca3
commit
da74a60e4c
|
@ -246,7 +246,7 @@ typedef enum {
|
|||
/* GL_NV_vertex_program */
|
||||
OPCODE_BIND_PROGRAM_NV,
|
||||
OPCODE_EXECUTE_PROGRAM_NV,
|
||||
OPCODE_REQUEST_PROGRAMS_RESIDENT_NV,
|
||||
OPCODE_REQUEST_RESIDENT_PROGRAMS_NV,
|
||||
OPCODE_LOAD_PROGRAM_NV,
|
||||
OPCODE_PROGRAM_PARAMETER4F_NV,
|
||||
OPCODE_TRACK_MATRIX_NV,
|
||||
|
@ -426,6 +426,16 @@ void _mesa_destroy_list( GLcontext *ctx, GLuint list )
|
|||
FREE(n[11].data);
|
||||
n += InstSize[n[0].opcode];
|
||||
break;
|
||||
#if FEATURE_NV_vertex_program
|
||||
case OPCODE_LOAD_PROGRAM_NV:
|
||||
FREE(n[4].data);
|
||||
n += InstSize[n[0].opcode];
|
||||
break;
|
||||
case OPCODE_REQUEST_RESIDENT_PROGRAMS_NV:
|
||||
FREE(n[2].data);
|
||||
n += InstSize[n[0].opcode];
|
||||
break;
|
||||
#endif
|
||||
#if FEATURE_NV_fragment_program
|
||||
case OPCODE_PROGRAM_NAMED_PARAMETER_NV:
|
||||
FREE(n[3].data);
|
||||
|
@ -652,8 +662,8 @@ void _mesa_init_lists( void )
|
|||
/* GL_NV_vertex_program */
|
||||
InstSize[OPCODE_BIND_PROGRAM_NV] = 3;
|
||||
InstSize[OPCODE_EXECUTE_PROGRAM_NV] = 7;
|
||||
InstSize[OPCODE_REQUEST_PROGRAMS_RESIDENT_NV] = 2;
|
||||
InstSize[OPCODE_LOAD_PROGRAM_NV] = 4;
|
||||
InstSize[OPCODE_REQUEST_RESIDENT_PROGRAMS_NV] = 2;
|
||||
InstSize[OPCODE_LOAD_PROGRAM_NV] = 5;
|
||||
InstSize[OPCODE_PROGRAM_PARAMETER4F_NV] = 7;
|
||||
InstSize[OPCODE_TRACK_MATRIX_NV] = 5;
|
||||
/* GL_NV_fragment_program */
|
||||
|
@ -4112,6 +4122,58 @@ save_ProgramParameters4fvNV(GLenum target, GLuint index,
|
|||
}
|
||||
|
||||
|
||||
static void
|
||||
save_LoadProgramNV(GLenum target, GLuint id, GLsizei len,
|
||||
const GLubyte *program)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
GLubyte *programCopy;
|
||||
|
||||
programCopy = (GLubyte *) _mesa_malloc(len);
|
||||
if (!programCopy) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glLoadProgramNV");
|
||||
return;
|
||||
}
|
||||
_mesa_memcpy(programCopy, program, len);
|
||||
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = ALLOC_INSTRUCTION( ctx, OPCODE_LOAD_PROGRAM_NV, 4 );
|
||||
if (n) {
|
||||
n[1].e = target;
|
||||
n[2].ui = id;
|
||||
n[3].i = len;
|
||||
n[4].data = programCopy;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
(*ctx->Exec->LoadProgramNV)(target, id, len, program);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
save_RequestResidentProgramsNV(GLsizei num, const GLuint *ids)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
GLuint *idCopy;
|
||||
idCopy = _mesa_malloc(num * sizeof(GLuint));
|
||||
if (!idCopy) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glRequestResidentProgramsNV");
|
||||
return;
|
||||
}
|
||||
_mesa_memcpy(idCopy, ids, num * sizeof(GLuint));
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = ALLOC_INSTRUCTION( ctx, OPCODE_TRACK_MATRIX_NV, 2 );
|
||||
if (n) {
|
||||
n[1].i = num;
|
||||
n[2].data = idCopy;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
(*ctx->Exec->RequestResidentProgramsNV)(num, ids);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
save_TrackMatrixNV(GLenum target, GLuint address,
|
||||
|
@ -5019,15 +5081,11 @@ execute_list( GLcontext *ctx, GLuint list )
|
|||
(*ctx->Exec->ExecuteProgramNV)(n[1].e, n[2].ui, v);
|
||||
}
|
||||
break;
|
||||
case OPCODE_REQUEST_PROGRAMS_RESIDENT_NV:
|
||||
/*
|
||||
(*ctx->Exec->RequestResidentProgramsNV)();
|
||||
*/
|
||||
case OPCODE_REQUEST_RESIDENT_PROGRAMS_NV:
|
||||
(*ctx->Exec->RequestResidentProgramsNV)(n[1].ui, n[2].data);
|
||||
break;
|
||||
case OPCODE_LOAD_PROGRAM_NV:
|
||||
/*
|
||||
(*ctx->Exec->LoadProgramNV)();
|
||||
*/
|
||||
(*ctx->Exec->LoadProgramNV)(n[1].e, n[2].ui, n[3].i, n[4].data);
|
||||
break;
|
||||
case OPCODE_PROGRAM_PARAMETER4F_NV:
|
||||
(*ctx->Exec->ProgramParameter4fNV)(n[1].e, n[2].ui, n[3].f,
|
||||
|
@ -6390,7 +6448,7 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
|
|||
table->ExecuteProgramNV = save_ExecuteProgramNV;
|
||||
table->GenProgramsNV = _mesa_GenProgramsNV;
|
||||
table->AreProgramsResidentNV = _mesa_AreProgramsResidentNV;
|
||||
table->RequestResidentProgramsNV = _mesa_RequestResidentProgramsNV;
|
||||
table->RequestResidentProgramsNV = save_RequestResidentProgramsNV;
|
||||
table->GetProgramParameterfvNV = _mesa_GetProgramParameterfvNV;
|
||||
table->GetProgramParameterdvNV = _mesa_GetProgramParameterdvNV;
|
||||
table->GetProgramivNV = _mesa_GetProgramivNV;
|
||||
|
@ -6401,7 +6459,7 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
|
|||
table->GetVertexAttribivNV = _mesa_GetVertexAttribivNV;
|
||||
table->GetVertexAttribPointervNV = _mesa_GetVertexAttribPointervNV;
|
||||
table->IsProgramNV = _mesa_IsProgramNV;
|
||||
table->LoadProgramNV = _mesa_LoadProgramNV;
|
||||
table->LoadProgramNV = save_LoadProgramNV;
|
||||
table->ProgramParameter4dNV = save_ProgramParameter4dNV;
|
||||
table->ProgramParameter4dvNV = save_ProgramParameter4dvNV;
|
||||
table->ProgramParameter4fNV = save_ProgramParameter4fNV;
|
||||
|
|
Loading…
Reference in New Issue