Updates for array texture shadow targets.
authorIan Romanick <idr@us.ibm.com>
Tue, 5 Jun 2007 16:24:27 +0000 (09:24 -0700)
committerIan Romanick <idr@us.ibm.com>
Tue, 5 Jun 2007 16:24:40 +0000 (09:24 -0700)
src/mesa/shader/arbprogparse.c
src/mesa/shader/arbprogram.syn
src/mesa/shader/arbprogram_syn.h

index 7da3c19a89a4bc09aaca93b384558796d978e07b..9af3fd0764da078f8ca26669166fa8faea70fd35 100644 (file)
@@ -374,6 +374,8 @@ LONGSTRING static char arb_grammar_text[] =
 /* GL_MESA_texture_array */
 #define  TEXTARGET_1D_ARRAY                         0x09
 #define  TEXTARGET_2D_ARRAY                         0x0a
+#define  TEXTARGET_SHADOW1D_ARRAY                   0x0b
+#define  TEXTARGET_SHADOW2D_ARRAY                   0x0c
 
 /* face type */
 #define  FACE_FRONT                                 0x00
@@ -2991,11 +2993,13 @@ parse_fp_instruction (GLcontext * ctx, const GLubyte ** inst,
             case TEXTARGET_CUBE:
                fp->TexSrcTarget = TEXTURE_CUBE_INDEX;
                break;
-           case TEXTARGET_SHADOW1D:
-           case TEXTARGET_SHADOW2D:
-           case TEXTARGET_SHADOWRECT:
-              /* TODO ARB_fragment_program_shadow code */
-              break;
+            case TEXTARGET_SHADOW1D:
+            case TEXTARGET_SHADOW2D:
+            case TEXTARGET_SHADOW1D_ARRAY:
+            case TEXTARGET_SHADOW2D_ARRAY:
+            case TEXTARGET_SHADOWRECT:
+               /* TODO ARB_fragment_program_shadow code */
+               break;
             case TEXTARGET_1D_ARRAY:
                fp->TexSrcTarget = TEXTURE_1D_ARRAY_INDEX;
                break;
index 4f82717873e1574f72b3a647b6f1ef6aa5bdc1e7..1746a876c301ada0b757e4f355d201dcef25633a 100644 (file)
  * 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.
  */
+
  /**
  * \file arbprogram.syn
  * ARB_fragment/vertex_program syntax
  * \author Michal Krol
  */
+
 .syntax program;
 
 /*
 .emtcode TEXTARGET_SHADOW1D                         0x06
 .emtcode TEXTARGET_SHADOW2D                         0x07
 .emtcode TEXTARGET_SHADOWRECT                       0x08
+/* GL_MESA_texture_array */
 .emtcode TEXTARGET_1D_ARRAY                         0x09
 .emtcode TEXTARGET_2D_ARRAY                         0x0a
+.emtcode TEXTARGET_SHADOW1D_ARRAY                   0x0b
+.emtcode TEXTARGET_SHADOW2D_ARRAY                   0x0c
 
 /* face type */
 .emtcode FACE_FRONT                                 0x00
@@ -912,6 +915,7 @@ fragment program
                              | "CUBE"
                              | "RECT"
                              | <shadowTarget> (if option ARB_fragment_program_shadow present)
+                             | <arrayTarget> (if option MESA_texture_array present)
 */
 texTarget
     "1D" .emit TEXTARGET_1D .or
@@ -920,19 +924,38 @@ texTarget
     .if (texture_rectangle != 0x00) "RECT" .emit TEXTARGET_RECT .or
     "CUBE" .emit TEXTARGET_CUBE .or
     .if (ARB_fragment_program_shadow != 0x00) shadowTarget .or
-    .if (MESA_texture_array != 0x00) "ARRAY1D" .emit TEXTARGET_1D_ARRAY .or
-    .if (MESA_texture_array != 0x00) "ARRAY2D" .emit TEXTARGET_2D_ARRAY;
+    .if (MESA_texture_array != 0x00) arrayTarget;
 
 /*
 GL_ARB_fragment_program_shadow
     <shadowTarget>         ::= "SHADOW1D"
                              | "SHADOW2D"
                              | "SHADOWRECT"
+                             | <shadowArrayTarget> (if option MESA_texture_array present)
 */
 shadowTarget
     "SHADOW1D" .emit TEXTARGET_SHADOW1D .or
     "SHADOW2D" .emit TEXTARGET_SHADOW2D .or
-    .if (texture_rectangle != 0x00) "SHADOWRECT" .emit TEXTARGET_SHADOWRECT;
+    .if (texture_rectangle != 0x00) "SHADOWRECT" .emit TEXTARGET_SHADOWRECT .or
+    .if (MESA_texture_array != 0x00) shadowArrayTarget;
+
+/*
+GL_MESA_texture_array
+
+    <arrayTarget>         ::= "ARRAY1D"
+                             | "ARRAY2D"
+
+    <shadowArrayTarget>   ::= "SHADOWARRAY1D"
+                             | "SHADOWARRAY2D"
+*/
+
+arrayTarget
+    "ARRAY1D" .emit TEXTARGET_1D_ARRAY .or
+    "ARRAY2D" .emit TEXTARGET_2D_ARRAY;
+
+shadowArrayTarget
+    "SHADOWARRAY1D" .emit TEXTARGET_SHADOW1D_ARRAY .or
+    "SHADOWARRAY2D" .emit TEXTARGET_SHADOW2D_ARRAY;
 
 /*
 fragment program
index 30dc9f4594e29a1dfc3b3fa66e89c36bfdcdb482..5f3f7d6cf4641b0233d13953ba5b87463be4cd79 100644 (file)
@@ -1,3 +1,7 @@
+
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE .syn FILE */
+
+" \n"
 ".syntax program;\n"
 ".emtcode REVISION 0x0a\n"
 ".emtcode FRAGMENT_PROGRAM 0x01\n"
 ".emtcode TEXTARGET_SHADOW2D 0x07\n"
 ".emtcode TEXTARGET_SHADOWRECT 0x08\n"
 ".emtcode TEXTARGET_1D_ARRAY 0x09\n"
-".emtcode TEXTARGET_2D_ARRAY 0x0A\n"
+".emtcode TEXTARGET_2D_ARRAY 0x0a\n"
+".emtcode TEXTARGET_SHADOW1D_ARRAY 0x0b\n"
+".emtcode TEXTARGET_SHADOW2D_ARRAY 0x0c\n"
 ".emtcode FACE_FRONT 0x00\n"
 ".emtcode FACE_BACK 0x01\n"
 ".emtcode COLOR_PRIMARY 0x00\n"
 " .if (texture_rectangle != 0x00) \"RECT\" .emit TEXTARGET_RECT .or\n"
 " \"CUBE\" .emit TEXTARGET_CUBE .or\n"
 " .if (ARB_fragment_program_shadow != 0x00) shadowTarget .or\n"
-" .if (MESA_texture_array != 0x00) \"ARRAY1D\" .emit TEXTARGET_1D_ARRAY .or\n"
-" .if (MESA_texture_array != 0x00) \"ARRAY2D\" .emit TEXTARGET_2D_ARRAY;\n"
+" .if (MESA_texture_array != 0x00) arrayTarget;\n"
 "shadowTarget\n"
 " \"SHADOW1D\" .emit TEXTARGET_SHADOW1D .or\n"
 " \"SHADOW2D\" .emit TEXTARGET_SHADOW2D .or\n"
-" .if (texture_rectangle != 0x00) \"SHADOWRECT\" .emit TEXTARGET_SHADOWRECT;\n"
+" .if (texture_rectangle != 0x00) \"SHADOWRECT\" .emit TEXTARGET_SHADOWRECT .or\n"
+" .if (MESA_texture_array != 0x00) shadowArrayTarget;\n"
+"arrayTarget\n"
+" \"ARRAY1D\" .emit TEXTARGET_1D_ARRAY .or\n"
+" \"ARRAY2D\" .emit TEXTARGET_2D_ARRAY;\n"
+"shadowArrayTarget\n"
+" \"SHADOWARRAY1D\" .emit TEXTARGET_SHADOW1D_ARRAY .or\n"
+" \"SHADOWARRAY2D\" .emit TEXTARGET_SHADOW2D_ARRAY;\n"
 "optTexImageUnitNum\n"
 " optTexImageUnitNum_1 .or .true .emit 0x00;\n"
 "optTexImageUnitNum_1\n"