slang: add some comments related to geometry shaders
authorZack Rusin <zackr@vmware.com>
Wed, 7 Jul 2010 20:41:01 +0000 (16:41 -0400)
committerZack Rusin <zackr@vmware.com>
Thu, 8 Jul 2010 04:28:29 +0000 (00:28 -0400)
src/mesa/slang/slang_codegen.c
src/mesa/slang/slang_link.c

index b2fe5b1f8635e7f4c0da784efc1167b017cd988f..8ebe2980767a5ecf0e8d813ef07ed756fdfd5d6a 100644 (file)
@@ -4191,6 +4191,9 @@ _slang_gen_variable(slang_assemble_ctx * A, slang_operation *oper)
    slang_variable *var = _slang_variable_locate(oper->locals, name, GL_TRUE);
    slang_ir_node *n;
    if (!var || !var->declared) {
+      /* Geometry shader set gl_VerticesIn at link time
+       * so we need to way with resolving this variable
+       * until then */
       if (A->program->Target == MESA_GEOMETRY_PROGRAM &&
           !strcmp((char*)name, "gl_VerticesIn") ){
          A->UnresolvedRefs = GL_TRUE;
index c89ab8b9f665249ff9c90fb57a1b43674949f934..bc2bd31fda5f18272a3990e8d2d5ada17ca06535 100644 (file)
@@ -810,6 +810,12 @@ remove_extra_version_directives(GLchar *source)
    }
 }
 
+/* Returns the number of vertices per geometry shader
+ * input primitive.
+ * XXX: duplicated in Gallium in u_vertices_per_prim
+ * method. Once Mesa core will start using Gallium
+ * this should be removed
+ */
 static int
 vertices_per_prim(int prim)
 {
@@ -865,6 +871,8 @@ concat_shaders(struct gl_shader_program *shProg, GLenum shaderType)
       return NULL;
    }
 
+   /* Geometry shader will inject definition of
+    * const int gl_VerticesIn */
    if (shaderType == GL_GEOMETRY_SHADER_ARB) {
       totalLen += 32;
    }
@@ -883,6 +891,10 @@ concat_shaders(struct gl_shader_program *shProg, GLenum shaderType)
          len += shaderLengths[i];
       }
    }
+   /* if it's geometry shader we need to inject definition
+    * of "const int gl_VerticesIn = X;" where X is the number
+    * of vertices per input primitive
+    */
    if (shaderType == GL_GEOMETRY_SHADER_ARB) {
       GLchar gs_pre[32];
       GLuint num_verts = vertices_per_prim(shProg->Geom.InputType);