Mesa (asm-shader-rework-3): NV vp3: Add tracking for GL_NV_vertex_program3

Ian Romanick idr at kemper.freedesktop.org
Thu Oct 1 22:32:21 UTC 2009


Module: Mesa
Branch: asm-shader-rework-3
Commit: e90c9152e516bd7d3981192e120b54a206cc8d35
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e90c9152e516bd7d3981192e120b54a206cc8d35

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Wed Sep 30 21:37:51 2009 -0700

NV vp3: Add tracking for GL_NV_vertex_program3

The last bit of NV_vp2 (i.e., clip distance) isn't finished yet, but
NV_vp3 is a pretty small addition.

---

 src/mesa/main/extensions.c            |    1 +
 src/mesa/main/mtypes.h                |    1 +
 src/mesa/shader/program_parse_extra.c |   25 ++++++++++++++++++++++---
 src/mesa/shader/program_parser.h      |    1 +
 4 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index a250395..d6b6002 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -176,6 +176,7 @@ static const struct {
    { OFF, "GL_NV_vertex_program",              F(NV_vertex_program) },
    { OFF, "GL_NV_vertex_program1_1",           F(NV_vertex_program1_1) },
    { OFF, "GL_NV_vertex_program2_option",      F(NV_vertex_program2_option) },
+   { OFF, "GL_NV_vertex_program3",             F(NV_vertex_program3) },
    { ON,  "GL_OES_read_format",                F(OES_read_format) },
    { OFF, "GL_SGI_color_matrix",               F(SGI_color_matrix) },
    { OFF, "GL_SGI_color_table",                F(SGI_color_table) },
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 92a1567..9f78116 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2617,6 +2617,7 @@ struct gl_extensions
    GLboolean NV_vertex_program;
    GLboolean NV_vertex_program1_1;
    GLboolean NV_vertex_program2_option;
+   GLboolean NV_vertex_program3;
    GLboolean OES_read_format;
    GLboolean SGI_color_matrix;
    GLboolean SGI_color_table;
diff --git a/src/mesa/shader/program_parse_extra.c b/src/mesa/shader/program_parse_extra.c
index d432cb2..ae9c680 100644
--- a/src/mesa/shader/program_parse_extra.c
+++ b/src/mesa/shader/program_parse_extra.c
@@ -151,9 +151,22 @@ _mesa_parse_cc(const char *s)
 int
 _mesa_ARBvp_parse_option(struct asm_parser_state *state, const char *option)
 {
-   if (strcmp(option, "ARB_position_invariant") == 0) {
-      state->option.PositionInvariant = 1;
-      return 1;
+   if (strncmp(option, "ARB_", 4) == 0) {
+      /* Advance the pointer past the "ARB_" prefix.
+       */
+      option += 4;
+
+      if (strcmp(option, "position_invariant") == 0) {
+	 state->option.PositionInvariant = 1;
+	 return 1;
+      } else if (strcmp(option, "fragment_program_shadow") == 0) {
+	 if (state->ctx->Extensions.ARB_fragment_program_shadow
+	     && state->ctx->Extensions.NV_vertex_program3
+	     && state->option.NV_vertex3) {
+	    state->option.Shadow = 1;
+	    return 1;
+	 }
+      }
    } else if (strncmp(option, "NV_vertex_program", 17) == 0) {
       option += 17;
 
@@ -164,6 +177,12 @@ _mesa_ARBvp_parse_option(struct asm_parser_state *state, const char *option)
 	    state->option.NV_vertex2 = 1;
 	    return 1;
 	 }
+      } else if ((option[0] == '3') && (option[1] == '\0')) {
+	 if (state->ctx->Extensions.NV_vertex_program3) {
+	    state->option.NV_vertex2 = 1;
+	    state->option.NV_vertex3 = 1;
+	    return 1;
+	 }
       }
    }
 
diff --git a/src/mesa/shader/program_parser.h b/src/mesa/shader/program_parser.h
index 8d86333..023a19c 100644
--- a/src/mesa/shader/program_parser.h
+++ b/src/mesa/shader/program_parser.h
@@ -216,6 +216,7 @@ struct asm_parser_state {
       unsigned TexArray:1;
       unsigned NV_fragment:1;
       unsigned NV_vertex2:1;
+      unsigned NV_vertex3:1;
    } option;
 
    struct {




More information about the mesa-commit mailing list