From 0c265526626c91aa4a54923e5eab7d12b668739a Mon Sep 17 00:00:00 2001 From: Gregory Hainaut Date: Fri, 28 Jun 2013 14:00:13 -0700 Subject: [PATCH] mesa/sso: Implement _mesa_GenProgramPipelines Implement GenProgramPipelines based on the VAO code. This was originally included in another patch, but it was split out by Ian Romanick. Reviewed-by: Ian Romanick Reviewed-by: Jordan Justen --- src/mesa/main/pipelineobj.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/mesa/main/pipelineobj.c b/src/mesa/main/pipelineobj.c index 810c6fd1081..9f1cefc883c 100644 --- a/src/mesa/main/pipelineobj.c +++ b/src/mesa/main/pipelineobj.c @@ -285,6 +285,36 @@ _mesa_DeleteProgramPipelines(GLsizei n, const GLuint *pipelines) void GLAPIENTRY _mesa_GenProgramPipelines(GLsizei n, GLuint *pipelines) { + GET_CURRENT_CONTEXT(ctx); + + GLuint first; + GLint i; + + if (n < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGenProgramPipelines(n<0)"); + return; + } + + if (!pipelines) { + return; + } + + first = _mesa_HashFindFreeKeyBlock(ctx->Pipeline.Objects, n); + + for (i = 0; i < n; i++) { + struct gl_pipeline_object *obj; + GLuint name = first + i; + + obj = _mesa_new_pipeline_object(ctx, name); + if (!obj) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenProgramPipelines"); + return; + } + + save_pipeline_object(ctx, obj); + pipelines[i] = first + i; + } + } /** -- 2.30.2