Mesa (arb_geometry_shader4): gs: support for geometry shaders in the glslcompiler

Zack Rusin zack at kemper.freedesktop.org
Sat Feb 14 05:46:41 UTC 2009


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

Author: Zack Rusin <zackr at vmware.com>
Date:   Sat Feb 14 00:44:13 2009 -0500

gs: support for geometry shaders in the glslcompiler

---

 src/mesa/drivers/glslcompiler/glslcompiler.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/glslcompiler/glslcompiler.c b/src/mesa/drivers/glslcompiler/glslcompiler.c
index 918ec41..9654bb9 100644
--- a/src/mesa/drivers/glslcompiler/glslcompiler.c
+++ b/src/mesa/drivers/glslcompiler/glslcompiler.c
@@ -71,6 +71,7 @@ struct options {
    gl_prog_print_mode Mode;
    const char *VertFile;
    const char *FragFile;
+   const char *GeoFile;
    const char *OutputFile;
 };
 
@@ -237,7 +238,8 @@ CompileShader(const char *filename, GLenum type)
    GLuint shader;
 
    assert(type == GL_FRAGMENT_SHADER ||
-          type == GL_VERTEX_SHADER);
+          type == GL_VERTEX_SHADER ||
+          type == GL_GEOMETRY_SHADER_ARB);
 
    shader = _mesa_CreateShader(type);
    ReadShader(shader, filename);
@@ -253,6 +255,7 @@ Usage(void)
    printf("Usage:\n");
    printf("  --vs FILE          vertex shader input filename\n");
    printf("  --fs FILE          fragment shader input filename\n");
+   printf("  --gs FILE          geometry shader input filename\n");
    printf("  --arb              emit ARB-style instructions (the default)\n");
    printf("  --nv               emit NV-style instructions\n");
    printf("  --debug            emit debug-style instructions\n");
@@ -271,6 +274,7 @@ ParseOptions(int argc, char *argv[])
    Options.Mode = PROG_PRINT_ARB;
    Options.VertFile = NULL;
    Options.FragFile = NULL;
+   Options.GeoFile = NULL;
    Options.OutputFile = NULL;
 
    if (argc == 1) {
@@ -287,6 +291,10 @@ ParseOptions(int argc, char *argv[])
          Options.FragFile = argv[i + 1];
          i++;
       }
+      else if (strcmp(argv[i], "--gs") == 0) {
+         Options.GeoFile = argv[i + 1];
+         i++;
+      }
       else if (strcmp(argv[i], "--arb") == 0) {
          Options.Mode = PROG_PRINT_ARB;
       }
@@ -336,6 +344,9 @@ main(int argc, char *argv[])
    else if (Options.FragFile) {
       shader = CompileShader(Options.FragFile, GL_FRAGMENT_SHADER);
    }
+   else if (Options.GeoFile) {
+      shader = CompileShader(Options.GeoFile, GL_GEOMETRY_SHADER_ARB);
+   }
 
    if (shader) {
       if (Options.OutputFile) {




More information about the mesa-commit mailing list