From 5e92a7c7457f53fed576b65105a7a996a6044f55 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 17 Apr 2003 23:14:30 +0000 Subject: fix some glBindProgramNV/ARB details --- src/mesa/main/nvprogram.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/mesa/main/nvprogram.c') diff --git a/src/mesa/main/nvprogram.c b/src/mesa/main/nvprogram.c index af1ff36f79c..00ea579b2e8 100644 --- a/src/mesa/main/nvprogram.c +++ b/src/mesa/main/nvprogram.c @@ -227,12 +227,24 @@ _mesa_BindProgramNV(GLenum target, GLuint id) */ if (id == 0) { /* OK, the null program object */ + /* XXX use the ARB_vertex/fragment prorgram default objects??? */ prog = NULL; } else { prog = (struct program *) _mesa_HashLookup(ctx->Shared->Programs, id); - if (!prog && id > 0){ - /* allocate new program */ + if (prog) { + if (prog->Target == 0) { + /* prog was allocated with glGenProgramsNV */ + prog->Target = target; + } + else if (prog->Target != target) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glBindProgramNV(target mismatch)"); + return; + } + } + else { + /* allocate a new program now */ prog = _mesa_alloc_program(ctx, target, id); if (!prog) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindProgramNV"); -- cgit v1.2.3