[Mesa-dev] [PATCH 2/6] mesa: Move _mesa_GetActiveUniformARB to uniform_query.cpp

Ian Romanick idr at freedesktop.org
Fri Oct 7 17:06:48 PDT 2011


From: Ian Romanick <ian.d.romanick at intel.com>

Fold _mesa_get_active_uniform into its only caller in the process.
More changes are coming soon.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
---
 src/mesa/main/uniform_query.cpp |   78 +++++++++++++++++++++++++++++++++++++++
 src/mesa/main/uniforms.c        |   61 +------------------------------
 src/mesa/main/uniforms.h        |    3 +
 src/mesa/sources.mak            |    3 +-
 4 files changed, 84 insertions(+), 61 deletions(-)
 create mode 100644 src/mesa/main/uniform_query.cpp

diff --git a/src/mesa/main/uniform_query.cpp b/src/mesa/main/uniform_query.cpp
new file mode 100644
index 0000000..3164d72
--- /dev/null
+++ b/src/mesa/main/uniform_query.cpp
@@ -0,0 +1,78 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 2004-2008  Brian Paul   All Rights Reserved.
+ * Copyright (C) 2009-2010  VMware, Inc.  All Rights Reserved.
+ * Copyright © 2010, 2011 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include "main/core.h"
+#include "ir.h"
+#include "../glsl/program.h"
+
+extern "C" {
+#include "main/shaderapi.h"
+#include "main/shaderobj.h"
+#include "uniforms.h"
+}
+
+extern "C" void GLAPIENTRY
+_mesa_GetActiveUniformARB(GLhandleARB program, GLuint index,
+                          GLsizei maxLength, GLsizei *length, GLint *size,
+                          GLenum *type, GLcharARB *nameOut)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   struct gl_shader_program *shProg =
+      _mesa_lookup_shader_program_err(ctx, program, "glGetActiveUniform");
+   const struct gl_program_parameter *param;
+
+   if (!shProg)
+      return;
+
+   if (!shProg->Uniforms || index >= shProg->Uniforms->NumUniforms) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveUniform(index)");
+      return;
+   }
+
+   param = get_uniform_parameter(shProg, index);
+   if (!param)
+      return;
+
+   if (nameOut) {
+      _mesa_copy_string(nameOut, maxLength, length, param->Name);
+   }
+
+   if (size) {
+      GLint typeSize = _mesa_sizeof_glsl_type(param->DataType);
+      if ((GLint) param->Size > typeSize) {
+         /* This is an array.
+          * Array elements are placed on vector[4] boundaries so they're
+          * a multiple of four floats.  We round typeSize up to next multiple
+          * of four to get the right size below.
+          */
+         typeSize = (typeSize + 3) & ~3;
+      }
+      /* Note that the returned size is in units of the <type>, not bytes */
+      *size = param->Size / typeSize;
+   }
+
+   if (type) {
+      *type = param->DataType;
+   }
+}
diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c
index 7252c09..ccaedf9 100644
--- a/src/mesa/main/uniforms.c
+++ b/src/mesa/main/uniforms.c
@@ -211,7 +211,7 @@ find_uniform_parameter_pos(struct gl_shader_program *shProg, GLint index,
  * \param index  the uniform index in [0, NumUniforms-1]
  * \return gl_program_parameter point or NULL if index is invalid
  */
-static const struct gl_program_parameter *
+const struct gl_program_parameter *
 get_uniform_parameter(struct gl_shader_program *shProg, GLint index)
 {
    struct gl_program *prog;
@@ -224,54 +224,6 @@ get_uniform_parameter(struct gl_shader_program *shProg, GLint index)
 }
 
 
-/**
- * Called by glGetActiveUniform().
- */
-static void
-_mesa_get_active_uniform(struct gl_context *ctx, GLuint program, GLuint index,
-                         GLsizei maxLength, GLsizei *length, GLint *size,
-                         GLenum *type, GLchar *nameOut)
-{
-   struct gl_shader_program *shProg =
-      _mesa_lookup_shader_program_err(ctx, program, "glGetActiveUniform");
-   const struct gl_program_parameter *param;
-
-   if (!shProg)
-      return;
-
-   if (!shProg->Uniforms || index >= shProg->Uniforms->NumUniforms) {
-      _mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveUniform(index)");
-      return;
-   }
-
-   param = get_uniform_parameter(shProg, index);
-   if (!param)
-      return;
-
-   if (nameOut) {
-      _mesa_copy_string(nameOut, maxLength, length, param->Name);
-   }
-
-   if (size) {
-      GLint typeSize = _mesa_sizeof_glsl_type(param->DataType);
-      if ((GLint) param->Size > typeSize) {
-         /* This is an array.
-          * Array elements are placed on vector[4] boundaries so they're
-          * a multiple of four floats.  We round typeSize up to next multiple
-          * of four to get the right size below.
-          */
-         typeSize = (typeSize + 3) & ~3;
-      }
-      /* Note that the returned size is in units of the <type>, not bytes */
-      *size = param->Size / typeSize;
-   }
-
-   if (type) {
-      *type = param->DataType;
-   }
-}
-
-
 static unsigned
 get_vector_elements(GLenum type)
 {
@@ -1479,17 +1431,6 @@ _mesa_GetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name)
 }
 
 
-void GLAPIENTRY
-_mesa_GetActiveUniformARB(GLhandleARB program, GLuint index,
-                          GLsizei maxLength, GLsizei * length, GLint * size,
-                          GLenum * type, GLcharARB * name)
-{
-   GET_CURRENT_CONTEXT(ctx);
-   _mesa_get_active_uniform(ctx, program, index, maxLength, length, size,
-                            type, name);
-}
-
-
 /**
  * Plug in shader uniform-related functions into API dispatch table.
  */
diff --git a/src/mesa/main/uniforms.h b/src/mesa/main/uniforms.h
index b024cb3..77f55d4 100644
--- a/src/mesa/main/uniforms.h
+++ b/src/mesa/main/uniforms.h
@@ -191,6 +191,9 @@ _mesa_update_shader_textures_used(struct gl_program *prog);
 extern void
 _mesa_init_shader_uniform_dispatch(struct _glapi_table *exec);
 
+extern const struct gl_program_parameter *
+get_uniform_parameter(struct gl_shader_program *shProg, GLint index);
+
 struct gl_builtin_uniform_element {
    const char *field;
    int tokens[STATE_LENGTH];
diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak
index f29213e..aedee3d 100644
--- a/src/mesa/sources.mak
+++ b/src/mesa/sources.mak
@@ -105,7 +105,8 @@ MAIN_SOURCES = \
 
 MAIN_CXX_SOURCES = \
 	main/ff_fragment_shader.cpp \
-	main/shader_query.cpp
+	main/shader_query.cpp \
+	main/uniform_query.cpp
 
 MATH_SOURCES = \
 	math/m_debug_clip.c \
-- 
1.7.6



More information about the mesa-dev mailing list