Mesa (arb_geometry_shader4): gs: fixup paths for programparameteri

Zack Rusin zack at kemper.freedesktop.org
Fri May 29 16:46:20 UTC 2009


Module: Mesa
Branch: arb_geometry_shader4
Commit: 9f3199e2939e11c931c336bb5ec1af067ec2aff8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9f3199e2939e11c931c336bb5ec1af067ec2aff8

Author: Zack Rusin <zackr at vmware.com>
Date:   Fri May 29 12:41:17 2009 -0400

gs: fixup paths for programparameteri

---

 src/mesa/main/dd.h                                 |    2 +
 src/mesa/main/shaders.c                            |   56 +------------------
 src/mesa/shader/shader_api.c                       |   60 ++++++++++++++++++++
 .../shader/slang/library/slang_geometry_builtin.gc |    2 +-
 4 files changed, 65 insertions(+), 55 deletions(-)

diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index 32b1d4e..5ff2fb9 100644
--- a/src/mesa/main/dd.h
+++ b/src/mesa/main/dd.h
@@ -915,6 +915,8 @@ struct dd_function_table {
                          GLboolean transpose, const GLfloat *values);
    void (*UseProgram)(GLcontext *ctx, GLuint program);
    void (*ValidateProgram)(GLcontext *ctx, GLuint program);
+   void (*ProgramParameteri)(GLcontext *ctx, GLuint program,
+                             GLenum pname, GLint value);
    /* XXX many more to come */
    /*@}*/
 
diff --git a/src/mesa/main/shaders.c b/src/mesa/main/shaders.c
index 31caede..d6bf8ae 100644
--- a/src/mesa/main/shaders.c
+++ b/src/mesa/main/shaders.c
@@ -728,61 +728,9 @@ _mesa_ValidateProgramARB(GLhandleARB program)
    ctx->Driver.ValidateProgram(ctx, program);
 }
 
-static struct gl_geometry_program *_mesa_geometryFromShader(GLuint program)
-{
-   GET_CURRENT_CONTEXT(ctx);
-   struct gl_shader_program *shProg = NULL;
-   struct gl_shader *sh = NULL;
-   GLuint i;
-
-   shProg = _mesa_lookup_shader_program(ctx, program);
-
-   if (!ctx->Extensions.ARB_geometry_shader4) {
-      _mesa_error(ctx, GL_INVALID_OPERATION, "glProgramParameteriARB");
-      return NULL;
-   }
-
-   if (!shProg) {
-      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramParameteriARB");
-      return NULL;
-   }
-   for (i = 0; i < shProg->NumShaders; ++i) {
-      if (shProg->Shaders[i]->Type == GL_GEOMETRY_SHADER_ARB) {
-         sh = shProg->Shaders[i];
-      }
-   }
-   if (!sh || !sh->Program) {
-      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramParameteriARB");
-      return NULL;
-   }
-   return (struct gl_geometry_program *) sh->Program;
-}
-
 void GLAPIENTRY
 _mesa_ProgramParameteriARB(GLuint program, GLenum pname, GLint value)
 {
-   struct gl_geometry_program *gprog;
-   GET_CURRENT_CONTEXT(ctx);
-   ASSERT_OUTSIDE_BEGIN_END(ctx);
-
-   switch (pname) {
-   case GL_GEOMETRY_VERTICES_OUT_ARB:
-      gprog = _mesa_geometryFromShader(program);
-      if (gprog)
-         gprog->VerticesOut = value;
-      break;
-   case GL_GEOMETRY_INPUT_TYPE_ARB:
-      gprog = _mesa_geometryFromShader(program);
-      if (gprog)
-         gprog->InputType = value;
-      break;
-   case GL_GEOMETRY_OUTPUT_TYPE_ARB:
-      gprog = _mesa_geometryFromShader(program);
-      if (gprog)
-         gprog->OutputType = value;
-      break;
-   default:
-      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramParameteriARB");
-      break;
-   }
+   GET_CURRENT_CONTEXT(ctx);
+   ctx->Driver.ProgramParameteri(ctx, program, pname, value);
 }
diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c
index 0ac40d0..a121a72 100644
--- a/src/mesa/shader/shader_api.c
+++ b/src/mesa/shader/shader_api.c
@@ -1068,6 +1068,65 @@ _mesa_get_programiv(GLcontext *ctx, GLuint program,
    }
 }
 
+static struct gl_geometry_program *
+_mesa_geometry_from_shader(GLuint program)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   struct gl_shader_program *shProg = NULL;
+   struct gl_shader *sh = NULL;
+   GLuint i;
+
+   shProg = _mesa_lookup_shader_program(ctx, program);
+
+   if (!ctx->Extensions.ARB_geometry_shader4) {
+      _mesa_error(ctx, GL_INVALID_OPERATION, "glProgramParameteriARB");
+      return NULL;
+   }
+
+   if (!shProg) {
+      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramParameteriARB");
+      return NULL;
+   }
+   for (i = 0; i < shProg->NumShaders; ++i) {
+      if (shProg->Shaders[i]->Type == GL_GEOMETRY_SHADER_ARB) {
+         sh = shProg->Shaders[i];
+      }
+   }
+   if (!sh || !sh->Program) {
+      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramParameteriARB");
+      return NULL;
+   }
+   return (struct gl_geometry_program *) sh->Program;
+}
+
+static void
+_mesa_program_parameteri(GLcontext *ctx, GLuint program,
+                         GLenum pname, GLint value)
+{
+   struct gl_geometry_program *gprog;
+   ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+   switch (pname) {
+   case GL_GEOMETRY_VERTICES_OUT_ARB:
+      gprog = _mesa_geometryFromShader(program);
+      if (gprog)
+         gprog->VerticesOut = value;
+      break;
+   case GL_GEOMETRY_INPUT_TYPE_ARB:
+      gprog = _mesa_geometryFromShader(program);
+      if (gprog)
+         gprog->InputType = value;
+      break;
+   case GL_GEOMETRY_OUTPUT_TYPE_ARB:
+      gprog = _mesa_geometryFromShader(program);
+      if (gprog)
+         gprog->OutputType = value;
+      break;
+   default:
+      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramParameteriARB");
+      break;
+   }
+}
 
 static void
 _mesa_get_shaderiv(GLcontext *ctx, GLuint name, GLenum pname, GLint *params)
@@ -2062,4 +2121,5 @@ _mesa_init_glsl_driver_functions(struct dd_function_table *driver)
    driver->UniformMatrix = _mesa_uniform_matrix;
    driver->UseProgram = _mesa_use_program;
    driver->ValidateProgram = _mesa_validate_program;
+   driver->ProgramParameteri = _mesa_program_parameteri;
 }
diff --git a/src/mesa/shader/slang/library/slang_geometry_builtin.gc b/src/mesa/shader/slang/library/slang_geometry_builtin.gc
index 3f1adba..b3d8c82 100644
--- a/src/mesa/shader/slang/library/slang_geometry_builtin.gc
+++ b/src/mesa/shader/slang/library/slang_geometry_builtin.gc
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  7.5
+ * Version:  7.6
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),




More information about the mesa-commit mailing list