-
- /* NOTE: binding to a non-existant program is not an error.
- * That's supposed to be caught in glBegin.
- * NOTE: program number 0 is legal here.
- */
- if (program == 0) {
- /* default program */
- if (target == GL_VERTEX_PROGRAM_ARB)
- prog = ctx->Shared->DefaultVertexProgram;
- else
- prog = ctx->Shared->DefaultFragmentProgram;
- }
- else {
- prog = (struct program *) _mesa_HashLookup(ctx->Shared->Programs, program);
- if (prog) {
- if (prog->Target == 0) {
- /* prog was allocated with glGenProgramsARB */
- prog->Target = target;
- }
- else if (prog->Target != target) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glBindProgramARB(target mismatch)");
- return;
- }
- }
- else {
- /* allocate a new program now */
- prog = _mesa_alloc_program(ctx, target, program);
- if (!prog) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindProgramARB");
- return;
- }
- prog->Id = program;
- prog->Target = target;
- prog->Resident = GL_TRUE;
- prog->RefCount = 1;
- _mesa_HashInsert(ctx->Shared->Programs, program, prog);
- }
- }
-
- /* bind now */
- if (target == GL_VERTEX_PROGRAM_ARB) {
- ctx->VertexProgram.Current = (struct vertex_program *) prog;
- }
- else {
- ASSERT(target == GL_FRAGMENT_PROGRAM_ARB);
- ctx->FragmentProgram.Current = (struct fragment_program *) prog;
- }
-
- if (prog)
- prog->RefCount++;
-}
-
-
-void
-_mesa_DeleteProgramsARB(GLsizei n, const GLuint *programs)
-{
- _mesa_DeleteProgramsNV(n, programs);
-}
-
-
-void
-_mesa_GenProgramsARB(GLsizei n, GLuint *programs)
-{
- _mesa_GenProgramsNV(n, programs);
-}
-
-
-GLboolean
-_mesa_IsProgramARB(GLuint program)
-{
- return _mesa_IsProgramNV(program);