Texture Rectangle implementation
This adds support for GL_ARB_texture_rectangle, as it is used in Chromium.
This is required in order to use EGL/GLES on MacOS using IOSurface,
in order to be able to run Chromium on top of SwiftShader on MacOS.
Change-Id: I3c0b6a137892583bbfbc68149874d5bec3026b4a
Reviewed-on: https://swiftshader-review.googlesource.com/16368
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/OpenGL/compiler/BaseTypes.h b/src/OpenGL/compiler/BaseTypes.h
index 01f9948..67b465d 100644
--- a/src/OpenGL/compiler/BaseTypes.h
+++ b/src/OpenGL/compiler/BaseTypes.h
@@ -64,6 +64,7 @@
EbtSampler3D,
EbtSamplerCube,
EbtSampler2DArray,
+ EbtSampler2DRect, // Only valid if ARB_texture_rectangle exists.
EbtSamplerExternalOES, // Only valid if OES_EGL_image_external exists.
EbtISampler2D,
EbtISampler3D,
@@ -113,6 +114,7 @@
case EbtBool: return "bool";
case EbtSampler2D: return "sampler2D";
case EbtSamplerCube: return "samplerCube";
+ case EbtSampler2DRect: return "sampler2DRect";
case EbtSamplerExternalOES: return "samplerExternalOES";
case EbtSampler3D: return "sampler3D";
case EbtStruct: return "structure";
@@ -164,6 +166,7 @@
case EbtSampler2D:
case EbtSampler3D:
case EbtSamplerCube:
+ case EbtSampler2DRect:
case EbtSamplerExternalOES:
case EbtSampler2DArray:
case EbtSampler2DShadow:
@@ -187,6 +190,7 @@
case EbtSampler2DArray:
case EbtISampler2DArray:
case EbtUSampler2DArray:
+ case EbtSampler2DRect:
case EbtSamplerExternalOES:
case EbtSampler2DShadow:
case EbtSampler2DArrayShadow:
@@ -217,6 +221,7 @@
return true;
case EbtSampler2D:
case EbtSampler3D:
+ case EbtSampler2DRect:
case EbtSamplerExternalOES:
case EbtSampler2DArray:
case EbtISampler2D:
@@ -245,6 +250,7 @@
return true;
case EbtSampler2D:
case EbtSamplerCube:
+ case EbtSampler2DRect:
case EbtSamplerExternalOES:
case EbtSampler2DArray:
case EbtISampler2D:
@@ -276,6 +282,7 @@
case EbtSampler2D:
case EbtISampler2D:
case EbtUSampler2D:
+ case EbtSampler2DRect:
case EbtSamplerExternalOES:
case EbtSampler3D:
case EbtISampler3D:
@@ -312,6 +319,7 @@
case EbtSampler2D:
case EbtSampler3D:
case EbtSamplerCube:
+ case EbtSampler2DRect:
case EbtSamplerExternalOES:
case EbtSampler2DArray:
return false;
diff --git a/src/OpenGL/compiler/Compiler.h b/src/OpenGL/compiler/Compiler.h
index 8cdc755..ae04071 100644
--- a/src/OpenGL/compiler/Compiler.h
+++ b/src/OpenGL/compiler/Compiler.h
@@ -58,6 +58,7 @@
int OES_fragment_precision_high;
int OES_EGL_image_external;
int EXT_draw_buffers;
+ int ARB_texture_rectangle;
unsigned int MaxCallStackDepth;
};
@@ -66,6 +67,24 @@
#define GL_FRAGMENT_SHADER 0x8B30
#define GL_VERTEX_SHADER 0x8B31
+// Note: GL_ARB_texture_rectangle is part of gl2extchromium.h in the Chromium repo
+// GL_ARB_texture_rectangle
+#ifndef GL_ARB_texture_rectangle
+#define GL_ARB_texture_rectangle 1
+
+#ifndef GL_SAMPLER_2D_RECT_ARB
+#define GL_SAMPLER_2D_RECT_ARB 0x8B63
+#endif
+
+#ifndef GL_TEXTURE_BINDING_RECTANGLE_ARB
+#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
+#endif
+
+#ifndef GL_TEXTURE_RECTANGLE_ARB
+#define GL_TEXTURE_RECTANGLE_ARB 0x84F5
+#endif
+#endif // GL_ARB_texture_rectangle
+
//
// The base class for the machine dependent compiler to derive from
// for managing object code from the compile.
diff --git a/src/OpenGL/compiler/Initialize.cpp b/src/OpenGL/compiler/Initialize.cpp
index 87ea6ef..57ba870 100644
--- a/src/OpenGL/compiler/Initialize.cpp
+++ b/src/OpenGL/compiler/Initialize.cpp
@@ -243,6 +243,15 @@
symbolTable.insertBuiltIn(ESSL1_BUILTINS, float4, "textureCube", samplerCube, float3);
symbolTable.insertBuiltIn(ESSL1_BUILTINS, float4, "texture3D", sampler3D, float3);
+ if(resources.ARB_texture_rectangle)
+ {
+ TType *sampler2DRect = new TType(EbtSampler2DRect);
+
+ symbolTable.insertBuiltIn(ESSL1_BUILTINS, float4, "texture2DRect", sampler2DRect, float2);
+ symbolTable.insertBuiltIn(ESSL1_BUILTINS, float4, "texture2DRectProj", sampler2DRect, float3);
+ symbolTable.insertBuiltIn(ESSL1_BUILTINS, float4, "texture2DRectProj", sampler2DRect, float4);
+ }
+
if(resources.OES_EGL_image_external)
{
TType *samplerExternalOES = new TType(EbtSamplerExternalOES);
@@ -503,4 +512,6 @@
extBehavior["GL_OES_EGL_image_external"] = EBhUndefined;
if(resources.EXT_draw_buffers)
extBehavior["GL_EXT_draw_buffers"] = EBhUndefined;
+ if(resources.ARB_texture_rectangle)
+ extBehavior["GL_ARB_texture_rectangle"] = EBhUndefined;
}
diff --git a/src/OpenGL/compiler/OutputASM.cpp b/src/OpenGL/compiler/OutputASM.cpp
index fbdc113..76a177a 100644
--- a/src/OpenGL/compiler/OutputASM.cpp
+++ b/src/OpenGL/compiler/OutputASM.cpp
@@ -139,6 +139,8 @@
return GL_UNSIGNED_INT_SAMPLER_2D;
case EbtSamplerCube:
return GL_SAMPLER_CUBE;
+ case EbtSampler2DRect:
+ return GL_SAMPLER_2D_RECT_ARB;
case EbtISamplerCube:
return GL_INT_SAMPLER_CUBE;
case EbtUSamplerCube:
@@ -497,6 +499,15 @@
proj = true;
offset = true;
}
+ else if(name == "texture2DRect")
+ {
+ method = RECT;
+ }
+ else if(name == "texture2DRectProj")
+ {
+ method = RECT;
+ proj = true;
+ }
else UNREACHABLE(0);
}
@@ -1464,6 +1475,9 @@
}
else UNREACHABLE(argumentCount);
break;
+ case TextureFunction::RECT:
+ emit(sw::Shader::OPCODE_TEXRECT, result, &coord, s);
+ break;
case TextureFunction::SIZE:
emit(sw::Shader::OPCODE_TEXSIZE, result, arg[1], s);
break;
diff --git a/src/OpenGL/compiler/OutputASM.h b/src/OpenGL/compiler/OutputASM.h
index c315ef1..f6fd184 100644
--- a/src/OpenGL/compiler/OutputASM.h
+++ b/src/OpenGL/compiler/OutputASM.h
@@ -246,7 +246,8 @@
LOD,
SIZE, // textureSize()
FETCH,
- GRAD
+ GRAD,
+ RECT,
};
Method method;
diff --git a/src/OpenGL/compiler/SymbolTable.cpp b/src/OpenGL/compiler/SymbolTable.cpp
index 22bf292..5d7ad33 100644
--- a/src/OpenGL/compiler/SymbolTable.cpp
+++ b/src/OpenGL/compiler/SymbolTable.cpp
@@ -64,6 +64,7 @@
case EbtSampler3D: mangledName += "s3"; break;
case EbtSamplerCube: mangledName += "sC"; break;
case EbtSampler2DArray: mangledName += "s2a"; break;
+ case EbtSampler2DRect: mangledName += "s2r"; break;
case EbtSamplerExternalOES: mangledName += "sext"; break;
case EbtISampler2D: mangledName += "is2"; break;
case EbtISampler3D: mangledName += "is3"; break;
diff --git a/src/OpenGL/compiler/glslang.l b/src/OpenGL/compiler/glslang.l
index 663db3b..cc40dc2 100644
--- a/src/OpenGL/compiler/glslang.l
+++ b/src/OpenGL/compiler/glslang.l
@@ -171,6 +171,7 @@
"sampler2D" { context->lexAfterType = true; return SAMPLER2D; }
"samplerCube" { context->lexAfterType = true; return SAMPLERCUBE; }
+"sampler2DRect" { context->lexAfterType = true; return SAMPLER2DRECT; }
"samplerExternalOES" { context->lexAfterType = true; return SAMPLER_EXTERNAL_OES; }
"sampler3D" { context->lexAfterType = true; return SAMPLER3D; }
"sampler3DRect" { return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); }
@@ -312,7 +313,6 @@
"sampler1D" |
"sampler1DShadow" |
-"sampler2DRect" |
"sampler2DRectShadow" |
"sizeof" |
diff --git a/src/OpenGL/compiler/glslang.y b/src/OpenGL/compiler/glslang.y
index 083745e..cd0daff 100644
--- a/src/OpenGL/compiler/glslang.y
+++ b/src/OpenGL/compiler/glslang.y
@@ -1222,7 +1222,7 @@
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtSamplerCube, qual, @1);
}
- | SAMPLER_EXTERNAL_OES {
+ | SAMPLER_EXTERNAL_OES {
if (!context->supportsExtension("GL_OES_EGL_image_external")) {
context->error(@1, "unsupported type", "samplerExternalOES", "");
context->recover();
@@ -1231,6 +1231,15 @@
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtSamplerExternalOES, qual, @1);
}
+ | SAMPLER2DRECT {
+ if (!context->supportsExtension("GL_ARB_texture_rectangle")) {
+ context->error(@1, "unsupported type", "sampler2DRect", "");
+ context->recover();
+ }
+ FRAG_VERT_ONLY("sampler2DRect", @1);
+ TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
+ $$.setBasic(EbtSampler2DRect, qual, @1);
+ }
| SAMPLER3D {
FRAG_VERT_ONLY("sampler3D", @1);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
diff --git a/src/OpenGL/compiler/glslang_lex.cpp b/src/OpenGL/compiler/glslang_lex.cpp
index f9785cc..55b6ffb 100644
--- a/src/OpenGL/compiler/glslang_lex.cpp
+++ b/src/OpenGL/compiler/glslang_lex.cpp
@@ -545,7 +545,7 @@
177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
177, 177, 199, 203, 235, 0, 189, 185, 0, 188,
- 182, 0, 184, 178, 195, 196, 177, 135, 177, 177,
+ 182, 0, 184, 178, 195, 196, 177, 136, 177, 177,
177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
177, 13, 177, 177, 177, 177, 177, 177, 177, 177,
@@ -557,67 +557,67 @@
177, 177, 177, 177, 177, 177, 177, 177, 177, 0,
186, 0, 185, 187, 181, 177, 177, 177, 30, 177,
177, 18, 174, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 16, 138, 177, 177, 177, 177, 21,
- 177, 177, 142, 154, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 151, 4, 35, 36,
+ 177, 177, 177, 16, 139, 177, 177, 177, 177, 21,
+ 177, 177, 143, 155, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 152, 4, 35, 36,
37, 177, 177, 177, 177, 177, 177, 177, 177, 177,
177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 141, 31, 177, 177, 28,
+ 177, 177, 177, 177, 177, 142, 31, 177, 177, 28,
177, 177, 177, 177, 177, 177, 177, 47, 48, 49,
29, 177, 177, 177, 177, 177, 177, 10, 56, 57,
- 58, 177, 136, 177, 177, 7, 177, 177, 177, 177,
- 163, 164, 165, 177, 32, 177, 155, 26, 166, 167,
- 168, 2, 160, 161, 162, 177, 177, 177, 25, 158,
+ 58, 177, 137, 177, 177, 7, 177, 177, 177, 177,
+ 164, 165, 166, 177, 32, 177, 156, 26, 167, 168,
+ 169, 2, 161, 162, 163, 177, 177, 177, 25, 159,
177, 177, 177, 50, 51, 52, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 85, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 86, 177, 177,
- 177, 177, 177, 177, 177, 152, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 137, 177, 177,
- 176, 53, 54, 55, 177, 177, 14, 177, 90, 177,
- 177, 177, 177, 88, 177, 177, 177, 153, 148, 91,
- 177, 177, 177, 177, 177, 177, 143, 177, 177, 177,
- 77, 38, 41, 43, 42, 39, 45, 44, 46, 40,
- 177, 177, 177, 177, 159, 134, 177, 177, 146, 177,
- 177, 177, 34, 86, 173, 22, 147, 76, 177, 157,
+ 177, 177, 177, 177, 177, 153, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 138, 177, 177,
+ 176, 53, 54, 55, 177, 177, 14, 177, 91, 177,
+ 177, 177, 177, 89, 177, 177, 177, 154, 149, 92,
+ 177, 177, 177, 177, 177, 177, 144, 177, 177, 177,
+ 78, 38, 41, 43, 42, 39, 45, 44, 46, 40,
+ 177, 177, 177, 177, 160, 135, 177, 177, 147, 177,
+ 177, 177, 34, 87, 173, 22, 148, 77, 177, 158,
17, 177, 177, 177, 177, 177, 177, 177, 177, 177,
177, 177, 177, 177, 177, 19, 33, 177, 177, 177,
- 177, 177, 177, 92, 93, 94, 177, 177, 177, 177,
+ 177, 177, 177, 93, 94, 95, 177, 177, 177, 177,
177, 3, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 139, 177, 177, 177, 177, 177, 8,
- 177, 177, 9, 177, 177, 177, 177, 20, 78, 11,
- 149, 96, 97, 98, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 144, 177, 177, 177,
- 80, 82, 79, 177, 177, 177, 177, 177, 177, 177,
- 140, 100, 101, 102, 177, 177, 156, 177, 145, 177,
+ 177, 177, 177, 140, 177, 177, 177, 177, 177, 8,
+ 177, 177, 9, 177, 177, 177, 177, 20, 79, 11,
+ 150, 97, 98, 99, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 145, 177, 177, 177,
+ 81, 83, 80, 177, 177, 177, 177, 177, 177, 177,
+ 141, 101, 102, 103, 177, 177, 157, 177, 146, 177,
177, 6, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 95, 150, 1, 177, 177, 177, 177, 177, 175,
+ 177, 96, 151, 1, 177, 177, 177, 177, 177, 175,
- 177, 89, 5, 169, 59, 62, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 81,
- 177, 177, 177, 177, 99, 177, 177, 177, 177, 177,
- 119, 65, 66, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 87, 177, 177, 177,
- 103, 121, 69, 70, 177, 177, 83, 177, 177, 177,
- 177, 177, 177, 177, 114, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 128, 177, 177, 177, 177,
+ 177, 90, 5, 170, 59, 63, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 82,
+ 177, 177, 177, 177, 100, 177, 177, 177, 177, 177,
+ 120, 66, 67, 177, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 88, 177, 177, 177,
+ 104, 122, 70, 71, 177, 177, 84, 177, 177, 177,
+ 177, 177, 177, 177, 115, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 129, 177, 177, 177, 177,
60, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 115, 104, 177, 105, 177, 177, 177,
+ 177, 177, 177, 116, 105, 177, 106, 177, 177, 177,
- 129, 177, 177, 67, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 116, 177, 177,
- 130, 177, 177, 71, 106, 107, 177, 110, 177, 111,
- 177, 177, 177, 177, 177, 84, 177, 177, 177, 177,
- 171, 177, 63, 125, 177, 177, 108, 109, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 123, 126,
- 117, 177, 64, 177, 177, 177, 177, 177, 177, 177,
- 177, 124, 127, 177, 177, 120, 68, 177, 177, 170,
- 177, 177, 177, 73, 177, 177, 122, 72, 177, 177,
- 177, 177, 177, 177, 131, 177, 177, 177, 177, 177,
+ 130, 177, 177, 68, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 117, 177, 177,
+ 131, 177, 177, 72, 107, 108, 177, 111, 177, 112,
+ 177, 177, 177, 177, 177, 85, 177, 177, 177, 177,
+ 61, 177, 64, 126, 177, 177, 109, 110, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 124, 127,
+ 118, 177, 65, 177, 177, 177, 177, 177, 177, 177,
+ 177, 125, 128, 177, 177, 121, 69, 177, 177, 171,
+ 177, 177, 177, 74, 177, 177, 123, 73, 177, 177,
+ 177, 177, 177, 177, 132, 177, 177, 177, 177, 177,
- 177, 132, 177, 177, 177, 74, 177, 133, 112, 113,
- 177, 177, 177, 61, 177, 177, 172, 118, 75, 0
+ 177, 133, 177, 177, 177, 75, 177, 134, 113, 114,
+ 177, 177, 177, 62, 177, 177, 172, 119, 76, 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -1891,74 +1891,77 @@
YY_BREAK
case 61:
YY_RULE_SETUP
-{ context->lexAfterType = true; return SAMPLER_EXTERNAL_OES; }
+{ context->lexAfterType = true; return SAMPLER2DRECT; }
YY_BREAK
case 62:
YY_RULE_SETUP
-{ context->lexAfterType = true; return SAMPLER3D; }
+{ context->lexAfterType = true; return SAMPLER_EXTERNAL_OES; }
YY_BREAK
case 63:
YY_RULE_SETUP
-{ return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); }
+{ context->lexAfterType = true; return SAMPLER3D; }
YY_BREAK
case 64:
YY_RULE_SETUP
-{ return ES2_identifier_ES3_keyword(context, SAMPLER2DARRAY); }
+{ return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); }
YY_BREAK
case 65:
YY_RULE_SETUP
-{ return ES2_identifier_ES3_keyword(context, ISAMPLER2D); }
+{ return ES2_identifier_ES3_keyword(context, SAMPLER2DARRAY); }
YY_BREAK
case 66:
YY_RULE_SETUP
-{ return ES2_identifier_ES3_keyword(context, ISAMPLER3D); }
+{ return ES2_identifier_ES3_keyword(context, ISAMPLER2D); }
YY_BREAK
case 67:
YY_RULE_SETUP
-{ return ES2_identifier_ES3_keyword(context, ISAMPLERCUBE); }
+{ return ES2_identifier_ES3_keyword(context, ISAMPLER3D); }
YY_BREAK
case 68:
YY_RULE_SETUP
-{ return ES2_identifier_ES3_keyword(context, ISAMPLER2DARRAY); }
+{ return ES2_identifier_ES3_keyword(context, ISAMPLERCUBE); }
YY_BREAK
case 69:
YY_RULE_SETUP
-{ return ES2_identifier_ES3_keyword(context, USAMPLER2D); }
+{ return ES2_identifier_ES3_keyword(context, ISAMPLER2DARRAY); }
YY_BREAK
case 70:
YY_RULE_SETUP
-{ return ES2_identifier_ES3_keyword(context, USAMPLER3D); }
+{ return ES2_identifier_ES3_keyword(context, USAMPLER2D); }
YY_BREAK
case 71:
YY_RULE_SETUP
-{ return ES2_identifier_ES3_keyword(context, USAMPLERCUBE); }
+{ return ES2_identifier_ES3_keyword(context, USAMPLER3D); }
YY_BREAK
case 72:
YY_RULE_SETUP
-{ return ES2_identifier_ES3_keyword(context, USAMPLER2DARRAY); }
+{ return ES2_identifier_ES3_keyword(context, USAMPLERCUBE); }
YY_BREAK
case 73:
YY_RULE_SETUP
-{ return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); }
+{ return ES2_identifier_ES3_keyword(context, USAMPLER2DARRAY); }
YY_BREAK
case 74:
YY_RULE_SETUP
-{ return ES2_identifier_ES3_keyword(context, SAMPLERCUBESHADOW); }
+{ return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); }
YY_BREAK
case 75:
YY_RULE_SETUP
-{ return ES2_identifier_ES3_keyword(context, SAMPLER2DARRAYSHADOW); }
+{ return ES2_identifier_ES3_keyword(context, SAMPLERCUBESHADOW); }
YY_BREAK
case 76:
YY_RULE_SETUP
-{ context->lexAfterType = true; return(STRUCT); }
+{ return ES2_identifier_ES3_keyword(context, SAMPLER2DARRAYSHADOW); }
YY_BREAK
case 77:
YY_RULE_SETUP
+{ context->lexAfterType = true; return(STRUCT); }
+ YY_BREAK
+case 78:
+YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, LAYOUT); }
YY_BREAK
/* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */
-case 78:
case 79:
case 80:
case 81:
@@ -2014,6 +2017,7 @@
case 131:
case 132:
case 133:
+case 134:
YY_RULE_SETUP
{
if (context->getShaderVersion() < 300) {
@@ -2024,7 +2028,7 @@
}
YY_BREAK
/* Reserved keywords in GLSL ES 1.00 that are not reserved in GLSL ES 3.00 */
-case 134:
+case 135:
YY_RULE_SETUP
{
if (context->getShaderVersion() >= 300)
@@ -2037,7 +2041,6 @@
}
YY_BREAK
/* Reserved keywords */
-case 135:
case 136:
case 137:
case 138:
diff --git a/src/OpenGL/compiler/glslang_tab.cpp b/src/OpenGL/compiler/glslang_tab.cpp
index 17f40e8..811da14 100644
--- a/src/OpenGL/compiler/glslang_tab.cpp
+++ b/src/OpenGL/compiler/glslang_tab.cpp
@@ -634,18 +634,18 @@
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 112
+#define YYFINAL 113
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2525
+#define YYLAST 2530
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 128
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 93
/* YYNRULES -- Number of rules. */
-#define YYNRULES 272
+#define YYNRULES 273
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 413
+#define YYNSTATES 414
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
@@ -722,16 +722,16 @@
1037, 1040, 1046, 1049, 1052, 1058, 1061, 1066, 1081, 1085,
1089, 1093, 1097, 1101, 1106, 1111, 1116, 1121, 1126, 1131,
1136, 1141, 1146, 1151, 1156, 1161, 1167, 1173, 1179, 1185,
- 1191, 1197, 1203, 1209, 1215, 1220, 1225, 1234, 1239, 1244,
- 1249, 1254, 1259, 1264, 1269, 1274, 1279, 1284, 1289, 1294,
- 1299, 1304, 1317, 1317, 1320, 1320, 1326, 1329, 1345, 1348,
- 1357, 1361, 1367, 1374, 1389, 1393, 1397, 1398, 1404, 1405,
- 1406, 1407, 1408, 1409, 1410, 1414, 1415, 1415, 1415, 1425,
- 1426, 1430, 1430, 1431, 1431, 1436, 1439, 1449, 1452, 1458,
- 1459, 1463, 1471, 1475, 1482, 1482, 1489, 1492, 1499, 1504,
- 1519, 1519, 1524, 1524, 1531, 1531, 1539, 1542, 1548, 1551,
- 1557, 1561, 1568, 1571, 1574, 1577, 1580, 1589, 1593, 1600,
- 1603, 1609, 1609
+ 1191, 1197, 1203, 1209, 1215, 1220, 1225, 1234, 1243, 1248,
+ 1253, 1258, 1263, 1268, 1273, 1278, 1283, 1288, 1293, 1298,
+ 1303, 1308, 1313, 1326, 1326, 1329, 1329, 1335, 1338, 1354,
+ 1357, 1366, 1370, 1376, 1383, 1398, 1402, 1406, 1407, 1413,
+ 1414, 1415, 1416, 1417, 1418, 1419, 1423, 1424, 1424, 1424,
+ 1434, 1435, 1439, 1439, 1440, 1440, 1445, 1448, 1458, 1461,
+ 1467, 1468, 1472, 1480, 1484, 1491, 1491, 1498, 1501, 1508,
+ 1513, 1528, 1528, 1533, 1533, 1540, 1540, 1548, 1551, 1557,
+ 1560, 1566, 1570, 1577, 1580, 1583, 1586, 1589, 1598, 1602,
+ 1609, 1612, 1618, 1618
};
#endif
@@ -820,12 +820,12 @@
};
# endif
-#define YYPACT_NINF -334
+#define YYPACT_NINF -344
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-334)))
+ (!!((Yystate) == (-344)))
-#define YYTABLE_NINF -232
+#define YYTABLE_NINF -233
#define yytable_value_is_error(Yytable_value) \
0
@@ -834,48 +834,48 @@
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 2163, 10, -334, -334, -334, 169, -334, -334, -334, -334,
- -334, -334, -334, -334, -334, -334, -334, -334, -334, -334,
- -334, -334, -334, -334, -334, -334, -334, -334, -334, -334,
- -334, -334, -334, -334, -334, -334, -334, 69, -334, -334,
- -48, -334, -334, -334, -334, -334, -334, -334, -334, -334,
- -334, -334, -334, -334, -334, -334, -334, -334, -82, -334,
- -334, -78, -73, -71, 1, -59, -334, -32, 113, 1182,
- -334, -334, 2448, 113, -334, -23, -334, 2088, -334, -334,
- -334, -334, 113, -334, 2448, -334, -334, 11, -334, 9,
- -334, 20, -334, 121, -334, -334, -334, -334, -334, 2312,
- 150, 22, -334, -79, -334, 37, -334, 2238, -334, -334,
- -334, 1252, -334, -334, -334, 62, -334, 2238, 44, -41,
- -334, 410, -334, -334, -334, -334, 105, 2312, -76, -334,
- 1350, 1641, -334, 107, 2312, 117, 1833, -334, 91, -334,
- -334, -334, -334, -334, 1641, 1641, 1641, -334, -334, -334,
- -334, -334, -334, -334, 19, -334, -334, -334, 103, -24,
- 1736, 120, -334, 1641, 80, -42, -36, 15, 43, 99,
- 108, 104, 141, 142, -69, -334, 127, -334, -334, 2238,
- 1918, 87, -334, 9, 122, 124, -334, 135, 136, 129,
- 1448, 140, 1641, 133, 143, 137, -334, -334, 118, -334,
- -334, 12, -334, -78, 145, -334, -334, -334, -334, 526,
- -334, -334, -334, -334, -334, -334, 144, -334, -334, 1543,
- 1641, 138, 148, -334, -334, 117, 146, 28, -334, -58,
- -334, -334, -334, -15, -334, -334, 1641, 2380, -334, -334,
- 1641, 154, -334, -334, -334, 1641, 1641, 1641, 1641, 1641,
- 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641,
- 1641, 1641, 1641, 1641, 1641, -334, 2003, -334, -334, -334,
- -334, -334, -334, 152, -334, 1641, -334, -334, 41, 1641,
- 149, -334, -334, -334, 642, -334, -334, -334, -334, -334,
- -334, -334, -334, -334, -334, -334, 1641, 1641, -334, -334,
- -334, 1641, 151, 155, -334, 1641, 157, 57, 1641, 117,
- -334, -85, -334, -334, 156, 160, -334, 161, -334, -334,
- -334, -334, -334, 80, 80, -42, -42, -36, -36, -36,
- -36, 15, 15, 43, 99, 108, 104, 141, 142, 72,
- -334, 211, 20, 874, 990, -10, -334, 3, -334, 1087,
- 642, -334, -334, 165, 1641, 163, -334, 1641, -334, 166,
- -334, 1641, -334, -334, 1641, 164, -334, -334, -334, -334,
- 1087, 152, -334, 160, 198, 2312, 172, 170, -334, -334,
- 1641, -334, -334, 171, -334, 1641, -334, 167, 175, 265,
- -334, 178, 174, 758, -334, -334, 176, 13, 1641, 758,
- 152, -334, 1641, -334, -334, -334, -334, 177, 160, -334,
- -334, -334, -334
+ 2168, 120, -344, -344, -344, 146, -344, -344, -344, -344,
+ -344, -344, -344, -344, -344, -344, -344, -344, -344, -344,
+ -344, -344, -344, -344, -344, -344, -344, -344, -344, -344,
+ -344, -344, -344, -344, -344, -344, -344, 127, -344, -344,
+ -41, -344, -344, -344, -344, -344, -344, -344, -344, -344,
+ -344, -344, -344, -344, -344, -344, -344, -344, -344, -84,
+ -344, -344, -68, -57, -39, 1, -89, -344, 41, 14,
+ 1187, -344, -344, 2453, 14, -344, 15, -344, 2093, -344,
+ -344, -344, -344, 14, -344, 2453, -344, -344, 18, -344,
+ 47, -344, 26, -344, 10, -344, -344, -344, -344, -344,
+ 2317, 113, 60, -344, -66, -344, 31, -344, 2243, -344,
+ -344, -344, 1257, -344, -344, -344, -45, -344, 2243, 46,
+ -21, -344, 415, -344, -344, -344, -344, 68, 2317, -42,
+ -344, 1355, 1646, -344, 188, 2317, 89, 1838, -344, 85,
+ -344, -344, -344, -344, -344, 1646, 1646, 1646, -344, -344,
+ -344, -344, -344, -344, -344, 39, -344, -344, -344, 74,
+ -17, 1741, 96, -344, 1646, 37, -37, 91, -61, 87,
+ 65, 81, 71, 116, 115, -64, -344, 102, -344, -344,
+ 2243, 1923, 105, -344, 47, 97, 99, -344, 110, 131,
+ 124, 1453, 138, 1646, 132, 142, 140, -344, -344, 123,
+ -344, -344, -77, -344, -68, 143, -344, -344, -344, -344,
+ 531, -344, -344, -344, -344, -344, -344, 144, -344, -344,
+ 1548, 1646, 141, 148, -344, -344, 89, 145, -9, -344,
+ -58, -344, -344, -344, -13, -344, -344, 1646, 2385, -344,
+ -344, 1646, 152, -344, -344, -344, 1646, 1646, 1646, 1646,
+ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646,
+ 1646, 1646, 1646, 1646, 1646, 1646, -344, 2008, -344, -344,
+ -344, -344, -344, -344, 150, -344, 1646, -344, -344, -7,
+ 1646, 147, -344, -344, -344, 647, -344, -344, -344, -344,
+ -344, -344, -344, -344, -344, -344, -344, 1646, 1646, -344,
+ -344, -344, 1646, 149, 153, -344, 1646, 151, 5, 1646,
+ 89, -344, -70, -344, -344, 158, 157, -344, 165, -344,
+ -344, -344, -344, -344, 37, 37, -37, -37, 91, 91,
+ 91, 91, -61, -61, 87, 65, 81, 71, 116, 115,
+ 75, -344, 214, 26, 879, 995, -8, -344, 4, -344,
+ 1092, 647, -344, -344, 164, 1646, 159, -344, 1646, -344,
+ 166, -344, 1646, -344, -344, 1646, 170, -344, -344, -344,
+ -344, 1092, 150, -344, 157, 200, 2317, 172, 169, -344,
+ -344, 1646, -344, -344, 173, -344, 1646, -344, 167, 174,
+ 265, -344, 175, 171, 763, -344, -344, 177, 9, 1646,
+ 763, 150, -344, 1646, -344, -344, -344, -344, 178, 157,
+ -344, -344, -344, -344
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -887,74 +887,74 @@
160, 161, 166, 167, 168, 169, 170, 171, 163, 164,
165, 172, 173, 174, 175, 176, 177, 139, 140, 143,
129, 178, 179, 180, 181, 182, 183, 0, 126, 125,
- 0, 158, 184, 185, 186, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 187, 197, 198, 199, 0, 201,
- 270, 271, 0, 95, 105, 0, 110, 116, 133, 0,
- 131, 123, 0, 134, 144, 155, 200, 0, 267, 269,
- 130, 122, 0, 136, 0, 141, 142, 0, 204, 0,
- 86, 0, 93, 105, 127, 106, 107, 108, 96, 0,
- 105, 0, 87, 117, 132, 0, 92, 0, 124, 145,
- 135, 0, 1, 268, 137, 0, 202, 0, 152, 0,
- 150, 0, 272, 97, 102, 104, 109, 0, 111, 98,
- 0, 0, 85, 0, 0, 0, 0, 206, 2, 6,
- 4, 5, 7, 28, 0, 0, 0, 156, 35, 34,
- 36, 33, 3, 9, 29, 11, 16, 17, 0, 0,
- 22, 0, 37, 0, 41, 44, 47, 52, 55, 57,
- 59, 61, 63, 65, 67, 84, 0, 26, 88, 0,
- 0, 0, 149, 0, 0, 0, 252, 0, 0, 0,
- 0, 0, 0, 0, 0, 226, 235, 239, 37, 69,
- 82, 0, 215, 0, 144, 218, 237, 217, 216, 0,
- 219, 220, 221, 222, 223, 224, 99, 101, 103, 0,
- 0, 0, 0, 214, 121, 0, 212, 0, 210, 0,
- 207, 30, 31, 0, 13, 14, 0, 0, 20, 19,
- 0, 158, 23, 25, 32, 0, 0, 0, 0, 0,
+ 0, 158, 184, 185, 186, 187, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 188, 198, 199, 200, 0,
+ 202, 271, 272, 0, 95, 105, 0, 110, 116, 133,
+ 0, 131, 123, 0, 134, 144, 155, 201, 0, 268,
+ 270, 130, 122, 0, 136, 0, 141, 142, 0, 205,
+ 0, 86, 0, 93, 105, 127, 106, 107, 108, 96,
+ 0, 105, 0, 87, 117, 132, 0, 92, 0, 124,
+ 145, 135, 0, 1, 269, 137, 0, 203, 0, 152,
+ 0, 150, 0, 273, 97, 102, 104, 109, 0, 111,
+ 98, 0, 0, 85, 0, 0, 0, 0, 207, 2,
+ 6, 4, 5, 7, 28, 0, 0, 0, 156, 35,
+ 34, 36, 33, 3, 9, 29, 11, 16, 17, 0,
+ 0, 22, 0, 37, 0, 41, 44, 47, 52, 55,
+ 57, 59, 61, 63, 65, 67, 84, 0, 26, 88,
+ 0, 0, 0, 149, 0, 0, 0, 253, 0, 0,
+ 0, 0, 0, 0, 0, 0, 227, 236, 240, 37,
+ 69, 82, 0, 216, 0, 144, 219, 238, 218, 217,
+ 0, 220, 221, 222, 223, 224, 225, 99, 101, 103,
+ 0, 0, 0, 0, 215, 121, 0, 213, 0, 211,
+ 0, 208, 30, 31, 0, 13, 14, 0, 0, 20,
+ 19, 0, 158, 23, 25, 32, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 157, 0, 205, 153, 154,
- 151, 263, 262, 233, 254, 0, 266, 264, 0, 0,
- 0, 247, 250, 225, 0, 72, 73, 75, 74, 77,
- 78, 79, 80, 81, 76, 71, 0, 0, 240, 236,
- 238, 0, 0, 0, 115, 0, 118, 0, 0, 0,
- 208, 0, 89, 8, 0, 15, 27, 12, 18, 24,
- 38, 39, 40, 43, 42, 45, 46, 50, 51, 48,
- 49, 53, 54, 56, 58, 60, 62, 64, 66, 0,
- 203, 0, 0, 0, 0, 0, 265, 0, 246, 0,
- 227, 70, 83, 0, 0, 112, 119, 0, 209, 0,
- 211, 0, 90, 10, 0, 0, 232, 234, 257, 256,
- 259, 233, 244, 248, 0, 0, 0, 0, 100, 113,
- 0, 120, 213, 0, 68, 0, 258, 0, 0, 243,
- 241, 0, 0, 0, 228, 114, 0, 0, 260, 0,
- 233, 245, 0, 230, 251, 229, 91, 0, 261, 255,
- 242, 249, 253
+ 0, 0, 0, 0, 0, 0, 157, 0, 206, 153,
+ 154, 151, 264, 263, 234, 255, 0, 267, 265, 0,
+ 0, 0, 248, 251, 226, 0, 72, 73, 75, 74,
+ 77, 78, 79, 80, 81, 76, 71, 0, 0, 241,
+ 237, 239, 0, 0, 0, 115, 0, 118, 0, 0,
+ 0, 209, 0, 89, 8, 0, 15, 27, 12, 18,
+ 24, 38, 39, 40, 43, 42, 45, 46, 50, 51,
+ 48, 49, 53, 54, 56, 58, 60, 62, 64, 66,
+ 0, 204, 0, 0, 0, 0, 0, 266, 0, 247,
+ 0, 228, 70, 83, 0, 0, 112, 119, 0, 210,
+ 0, 212, 0, 90, 10, 0, 0, 233, 235, 258,
+ 257, 260, 234, 245, 249, 0, 0, 0, 0, 100,
+ 113, 0, 120, 214, 0, 68, 0, 259, 0, 0,
+ 244, 242, 0, 0, 0, 229, 114, 0, 0, 261,
+ 0, 234, 246, 0, 231, 252, 230, 91, 0, 262,
+ 256, 243, 250, 254
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -334, -334, -334, -334, -334, -334, -334, 46, -334, -334,
- -334, -334, 66, -334, -46, -44, -67, -34, 30, 33,
- 29, 32, 34, 31, -334, -104, -127, -334, -144, -119,
- -334, 14, 17, -334, -334, -334, 168, 204, 199, 173,
- -334, -334, -325, 8, -334, -101, 7, -68, 293, -334,
- -334, 119, 0, -334, -334, -334, -334, -97, -123, 76,
- -6, -208, -40, -206, -328, -83, -334, -334, -94, -333,
- -334, -334, -86, 25, -38, -334, -334, -334, -334, -334,
- -60, -334, -334, -334, -334, -334, -334, -334, -334, -334,
- 253, -334, -334
+ -344, -344, -344, -344, -344, -344, -344, 48, -344, -344,
+ -344, -344, 70, -344, -56, -49, -123, -53, 28, 29,
+ 27, 32, 30, 33, -344, -110, -128, -344, -138, -119,
+ -344, 11, 17, -344, -344, -344, 168, 201, 197, 176,
+ -344, -344, -326, 7, -344, -105, 13, -69, 294, -344,
+ -344, 117, 0, -344, -344, -344, -344, -103, -121, 76,
+ -10, -215, -40, -203, -314, -86, -344, -344, -97, -343,
+ -344, -344, -87, 23, -36, -344, -344, -344, -344, -344,
+ -60, -344, -344, -344, -344, -344, -344, -344, -344, -344,
+ 232, -344, -344
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 152, 153, 154, 314, 155, 156, 157, 158, 159,
- 160, 161, 198, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 199, 200, 296, 201, 176,
- 107, 202, 203, 62, 63, 64, 124, 98, 99, 125,
- 65, 66, 67, 68, 100, 69, 70, 71, 72, 73,
- 119, 120, 177, 75, 76, 179, 117, 136, 137, 227,
- 228, 224, 205, 206, 207, 208, 284, 377, 404, 341,
- 342, 343, 405, 209, 210, 211, 390, 212, 391, 213,
- 376, 214, 349, 273, 344, 370, 387, 388, 215, 77,
- 78, 79, 91
+ -1, 153, 154, 155, 315, 156, 157, 158, 159, 160,
+ 161, 162, 199, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 200, 201, 297, 202, 177,
+ 108, 203, 204, 63, 64, 65, 125, 99, 100, 126,
+ 66, 67, 68, 69, 101, 70, 71, 72, 73, 74,
+ 120, 121, 178, 76, 77, 180, 118, 137, 138, 228,
+ 229, 225, 206, 207, 208, 209, 285, 378, 405, 342,
+ 343, 344, 406, 210, 211, 212, 391, 213, 392, 214,
+ 377, 215, 350, 274, 345, 371, 388, 389, 216, 78,
+ 79, 80, 92
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -962,461 +962,454 @@
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 74, 108, 233, 300, 223, 122, 134, 175, 83, 82,
- 94, 222, 304, 230, 60, 367, 134, 61, 311, 7,
- 180, 361, 89, 263, 374, 129, 175, 130, 87, 362,
- 219, 126, 92, 242, 131, 134, 90, 220, 389, 135,
- 93, 95, 96, 97, 103, 374, 278, 250, 251, 135,
- 27, 28, 101, 29, 80, 102, 312, 230, 264, 126,
- 88, 37, 38, 39, 182, 403, 225, 410, 135, 74,
- 183, 403, 109, 280, 248, 104, 249, 74, 134, 134,
- 110, 239, 266, 111, 115, 118, 81, 240, 175, 114,
- 313, 60, 315, 223, 61, 371, 297, 356, 128, 74,
- 303, 297, 252, 253, 234, 235, -94, 74, 372, 85,
- 86, 135, 135, 319, 297, 175, 7, 74, 407, 116,
- 339, 204, 7, 297, 297, 236, 298, 74, 121, 237,
- 94, 345, 256, 257, 74, 347, 74, 254, 255, 309,
- 83, 82, 310, 230, 300, 132, 379, 27, 28, 381,
- 29, 80, 297, 27, 28, 346, 29, 181, 37, 38,
- 39, 95, 96, 97, 37, 134, 268, 269, 309, 351,
- 352, 358, 395, 2, 3, 4, 178, 162, 223, 74,
- 74, 216, 353, 297, 364, 327, 328, 329, 330, 359,
- 95, 96, 97, 226, 411, -27, 162, 175, 135, 245,
- 246, 247, 323, 324, 175, 373, 325, 326, 238, 204,
- 231, 232, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 331, 332, 243, 258, 373, 223, 260, 244,
- 223, 295, 261, 259, 265, 262, 271, 384, 272, 274,
- 275, 397, 383, 276, 279, 281, 283, 282, 375, -26,
- 301, 305, 308, 223, 408, 306, 366, 175, 162, -21,
- -231, 348, 355, 363, 354, -28, 74, 365, 385, 375,
- 357, 297, 378, 382, 392, 223, 380, 393, 396, 394,
- 399, 398, 400, 318, 204, 162, 195, 402, 333, 335,
- 406, 412, 334, 336, 338, 217, 337, 123, 84, 127,
- 218, 307, 270, 360, 368, 409, 369, 108, 401, 350,
- 386, 320, 321, 322, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
- 113, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 204, 204, 0, 0, 0, 0, 204,
- 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 162, 0, 0,
- 204, 0, 0, 0, 162, 74, 0, 0, 0, 0,
+ 75, 109, 176, 135, 224, 123, 305, 301, 83, 234,
+ 95, 61, 223, 135, 84, 181, 231, 62, 312, 95,
+ 90, 176, 102, 7, 375, 103, 253, 254, 264, 390,
+ 368, 127, 135, 243, 298, 88, 362, 299, 130, 136,
+ 131, 96, 97, 98, 363, 375, 91, 132, 93, 136,
+ 96, 97, 98, 279, 27, 28, 313, 29, 411, 127,
+ 231, 255, 256, 265, 220, 37, 226, 89, 136, 179,
+ 75, 221, 94, 110, 281, 135, 135, 267, 75, 249,
+ 404, 250, 105, 176, 183, 116, 404, 111, 240, 61,
+ 184, 357, 314, 224, 241, 62, 115, 372, 298, 316,
+ 75, 304, 310, 298, 298, 311, -94, 347, 75, 373,
+ 176, 136, 136, 320, 408, 298, 310, 104, 75, 359,
+ 298, 112, 205, 119, 235, 236, 117, 340, 75, 7,
+ 328, 329, 330, 331, 122, 75, 129, 75, 346, 133,
+ 380, 83, 348, 382, 217, 237, 231, 84, 301, 238,
+ 2, 3, 4, 96, 97, 98, 246, 247, 248, 182,
+ 27, 28, 135, 29, 81, 227, 396, 86, 87, 352,
+ 353, 37, 38, 39, 251, 252, 257, 258, 224, 239,
+ 75, 75, 163, 354, 269, 270, 298, 365, 412, -27,
+ 360, 259, 176, 324, 325, 261, 82, 7, 136, 176,
+ 244, 163, 326, 327, 332, 333, 260, 262, 263, 266,
+ 205, 272, 374, 273, 275, 232, 233, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 224, 27, 28,
+ 224, 29, 81, 374, 245, 276, 296, 385, 277, 37,
+ 38, 39, 280, 384, 282, 376, 283, -26, 398, 284,
+ 302, 309, 176, 224, 306, 307, 367, -21, -232, 349,
+ 356, 409, 355, 163, 358, 364, 376, 75, 298, -28,
+ 366, 379, 381, 383, 386, 224, 393, 394, 395, 400,
+ 397, 399, 401, 196, 403, 205, 319, 334, 336, 335,
+ 163, 407, 413, 338, 337, 124, 218, 339, 128, 85,
+ 361, 271, 308, 410, 219, 369, 402, 109, 351, 370,
+ 114, 387, 0, 0, 0, 0, 321, 322, 323, 163,
+ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
+ 163, 163, 163, 163, 163, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 205, 205, 0, 0, 0, 0,
+ 205, 205, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 204, 0, 0, 0, 0, 0, 204,
+ 0, 205, 163, 0, 0, 0, 75, 0, 0, 163,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 184, 185, 186, 162, 187, 188,
- 189, 190, 191, 192, 193, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 0, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 194, 42, 43, 44,
- 0, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 0, 55, 56, 57, 58, 138, 59, 139, 140,
- 141, 142, 143, 0, 0, 144, 145, 0, 0, 0,
+ 0, 0, 0, 0, 205, 0, 0, 0, 0, 0,
+ 205, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 185,
+ 186, 187, 163, 188, 189, 190, 191, 192, 193, 194,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 0, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 195, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 0, 56, 57, 58,
+ 59, 139, 60, 140, 141, 142, 143, 144, 0, 0,
+ 145, 146, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 147,
+ 0, 0, 0, 196, 197, 0, 0, 0, 0, 198,
+ 149, 150, 151, 152, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 185, 186, 187, 0, 188,
+ 189, 190, 191, 192, 193, 194, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 0, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 195, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 0, 56, 57, 58, 59, 139, 60, 140,
+ 141, 142, 143, 144, 0, 0, 145, 146, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 146, 0, 0, 0, 195, 196,
- 0, 0, 0, 0, 197, 148, 149, 150, 151, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 184, 185, 186, 0, 187, 188, 189, 190, 191, 192,
- 193, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 0, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 194, 42, 43, 44, 0, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 0, 55, 56,
- 57, 58, 138, 59, 139, 140, 141, 142, 143, 0,
- 0, 144, 145, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 146, 0, 0, 0, 195, 299, 0, 0, 0, 0,
- 197, 148, 149, 150, 151, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 184, 185, 186, 0,
- 187, 188, 189, 190, 191, 192, 193, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 0, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 194, 42,
- 43, 44, 0, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 0, 55, 56, 57, 58, 138, 59,
- 139, 140, 141, 142, 143, 0, 0, 144, 145, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 146, 0, 0, 0,
- 195, 0, 0, 0, 0, 0, 197, 148, 149, 150,
- 151, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 184, 185, 186, 0, 187, 188, 189, 190,
- 191, 192, 193, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 0, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 194, 42, 43, 44, 0, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 0,
- 55, 56, 57, 58, 138, 59, 139, 140, 141, 142,
- 143, 0, 0, 144, 145, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 146, 0, 0, 0, 121, 0, 0, 0,
- 0, 0, 197, 148, 149, 150, 151, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 184, 185,
- 186, 0, 187, 188, 189, 190, 191, 192, 193, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 0, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 194, 42, 43, 44, 0, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 0, 55, 56, 57, 58,
- 138, 59, 139, 140, 141, 142, 143, 0, 0, 144,
- 145, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 146, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 197, 148,
- 149, 150, 151, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 0, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 0, 42, 43, 44,
- 0, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 0, 55, 56, 57, 58, 138, 59, 139, 140,
- 141, 142, 143, 0, 0, 144, 145, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 133, 2, 3, 4, 146, 6, 7, 8, 9, 10,
- 11, 0, 0, 0, 197, 148, 149, 150, 151, 0,
- 0, 0, 12, 13, 14, 15, 16, 17, 18, 19,
+ 0, 0, 0, 0, 0, 147, 0, 0, 0, 196,
+ 300, 0, 0, 0, 0, 198, 149, 150, 151, 152,
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 185, 186, 187, 0, 188, 189, 190, 191, 192,
+ 193, 194, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 0,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 0, 42, 43, 44, 0, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 0, 55,
- 56, 57, 58, 138, 59, 139, 140, 141, 142, 143,
- 0, 0, 144, 145, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2, 3, 4, 0,
- 0, 146, 8, 9, 10, 11, 0, 0, 0, 0,
- 0, 0, 148, 149, 150, 151, 0, 12, 13, 14,
+ 39, 40, 41, 195, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 0, 56,
+ 57, 58, 59, 139, 60, 140, 141, 142, 143, 144,
+ 0, 0, 145, 146, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 147, 0, 0, 0, 196, 0, 0, 0, 0,
+ 0, 198, 149, 150, 151, 152, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 185, 186, 187,
+ 0, 188, 189, 190, 191, 192, 193, 194, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 0, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 195,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 0, 56, 57, 58, 59, 139,
+ 60, 140, 141, 142, 143, 144, 0, 0, 145, 146,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 147, 0, 0,
+ 0, 122, 0, 0, 0, 0, 0, 198, 149, 150,
+ 151, 152, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 185, 186, 187, 0, 188, 189, 190,
+ 191, 192, 193, 194, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 0, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 195, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 0, 56, 57, 58, 59, 139, 60, 140, 141, 142,
+ 143, 144, 0, 0, 145, 146, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 147, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 198, 149, 150, 151, 152, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 0, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 0, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 0, 56, 57, 58,
+ 59, 139, 60, 140, 141, 142, 143, 144, 0, 0,
+ 145, 146, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 134, 2, 3, 4, 147,
+ 6, 7, 8, 9, 10, 11, 0, 0, 0, 198,
+ 149, 150, 151, 152, 0, 0, 0, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 0, 0, 0, 0, 0, 31, 32, 33,
- 34, 35, 36, 0, 0, 0, 40, 41, 0, 42,
- 43, 44, 0, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 0, 55, 56, 57, 0, 105, 59,
- 0, 0, 8, 9, 10, 11, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 0, 0, 0, 0, 106, 31, 32, 33,
- 34, 35, 36, 0, 0, 0, 40, 41, 0, 42,
- 43, 44, 0, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 0, 55, 56, 57, 0, 138, 59,
- 139, 140, 141, 142, 143, 0, 0, 144, 145, 0,
+ 25, 26, 27, 28, 0, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 0, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 0, 56, 57, 58, 59, 139, 60,
+ 140, 141, 142, 143, 144, 0, 0, 145, 146, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 146, 0, 0, 147,
- 8, 9, 10, 11, 0, 0, 0, 148, 149, 150,
- 151, 0, 0, 0, 0, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 0, 0, 0, 0, 0, 31, 32, 33, 34, 35,
- 36, 0, 0, 0, 40, 41, 0, 42, 43, 44,
- 0, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 0, 55, 56, 57, 0, 138, 59, 139, 140,
- 141, 142, 143, 0, 0, 144, 145, 0, 0, 0,
+ 0, 2, 3, 4, 0, 0, 147, 8, 9, 10,
+ 11, 0, 0, 0, 0, 0, 0, 149, 150, 151,
+ 152, 0, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 0, 0, 0,
+ 0, 0, 31, 32, 33, 34, 35, 36, 0, 0,
+ 0, 40, 41, 0, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 0, 56,
+ 57, 58, 0, 106, 60, 0, 0, 8, 9, 10,
+ 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 0, 0, 0,
+ 0, 107, 31, 32, 33, 34, 35, 36, 0, 0,
+ 0, 40, 41, 0, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 0, 56,
+ 57, 58, 0, 139, 60, 140, 141, 142, 143, 144,
+ 0, 0, 145, 146, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 146, 0, 0, 221, 8, 9,
- 10, 11, 0, 0, 0, 148, 149, 150, 151, 0,
- 0, 0, 0, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
- 0, 0, 0, 31, 32, 33, 34, 35, 36, 0,
- 0, 0, 40, 41, 0, 42, 43, 44, 0, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 0,
- 55, 56, 57, 0, 138, 59, 139, 140, 141, 142,
- 143, 0, 0, 144, 145, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 146, 8, 9, 10, 11, 0, 0, 0,
- 0, 0, 277, 148, 149, 150, 151, 0, 12, 13,
+ 0, 147, 0, 0, 148, 8, 9, 10, 11, 0,
+ 0, 0, 149, 150, 151, 152, 0, 0, 0, 0,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 0, 0, 0, 0, 0,
+ 31, 32, 33, 34, 35, 36, 0, 0, 0, 40,
+ 41, 0, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 0, 56, 57, 58,
+ 0, 139, 60, 140, 141, 142, 143, 144, 0, 0,
+ 145, 146, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 147,
+ 0, 0, 222, 8, 9, 10, 11, 0, 0, 0,
+ 149, 150, 151, 152, 0, 0, 0, 0, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 0, 0, 0, 0, 0, 31, 32,
33, 34, 35, 36, 0, 0, 0, 40, 41, 0,
- 42, 43, 44, 0, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 0, 55, 56, 57, 0, 138,
- 59, 139, 140, 141, 142, 143, 0, 0, 144, 145,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 0, 56, 57, 58, 0, 139,
+ 60, 140, 141, 142, 143, 144, 0, 0, 145, 146,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 146, 0, 0,
- 302, 8, 9, 10, 11, 0, 0, 0, 148, 149,
- 150, 151, 0, 0, 0, 0, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 0, 0, 0, 0, 0, 31, 32, 33, 34,
- 35, 36, 0, 0, 0, 40, 41, 0, 42, 43,
- 44, 0, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 0, 55, 56, 57, 0, 138, 59, 139,
- 140, 141, 142, 143, 0, 0, 144, 145, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 147, 8, 9,
+ 10, 11, 0, 0, 0, 0, 0, 278, 149, 150,
+ 151, 152, 0, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
+ 0, 0, 0, 31, 32, 33, 34, 35, 36, 0,
+ 0, 0, 40, 41, 0, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 0,
+ 56, 57, 58, 0, 139, 60, 140, 141, 142, 143,
+ 144, 0, 0, 145, 146, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 146, 8, 9, 10, 11,
- 0, 0, 0, 0, 0, 0, 148, 149, 150, 151,
+ 0, 0, 147, 0, 0, 303, 8, 9, 10, 11,
+ 0, 0, 0, 149, 150, 151, 152, 0, 0, 0,
0, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 0, 0, 0, 0,
0, 31, 32, 33, 34, 35, 36, 0, 0, 0,
- 40, 241, 0, 42, 43, 44, 0, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 0, 55, 56,
- 57, 0, 138, 59, 139, 140, 141, 142, 143, 0,
- 0, 144, 145, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 133, 2, 3, 4,
- 146, 6, 7, 8, 9, 10, 11, 0, 0, 0,
- 0, 148, 149, 150, 151, 0, 0, 0, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 0, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 0,
- 42, 43, 44, 0, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 0, 55, 56, 57, 58, 0,
- 59, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 133, 2, 3, 4, 0, 6, 7, 8, 9,
- 10, 11, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 229, 12, 13, 14, 15, 16, 17, 18,
+ 40, 41, 0, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 0, 56, 57,
+ 58, 0, 139, 60, 140, 141, 142, 143, 144, 0,
+ 0, 145, 146, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 147, 8, 9, 10, 11, 0, 0, 0, 0, 0,
+ 0, 149, 150, 151, 152, 0, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 0, 0, 0, 0, 0, 31, 32, 33, 34,
+ 35, 36, 0, 0, 0, 40, 242, 0, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 0, 56, 57, 58, 0, 139, 60, 140,
+ 141, 142, 143, 144, 0, 0, 145, 146, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 134, 2, 3, 4, 147, 6, 7, 8, 9,
+ 10, 11, 0, 0, 0, 0, 149, 150, 151, 152,
+ 0, 0, 0, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
0, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 0, 42, 43, 44, 0, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 0,
- 55, 56, 57, 58, 0, 59, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 133, 2, 3, 4,
+ 38, 39, 40, 41, 0, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 0,
+ 56, 57, 58, 59, 0, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 134, 2, 3, 4,
0, 6, 7, 8, 9, 10, 11, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 267, 12, 13,
+ 0, 0, 0, 0, 0, 0, 0, 230, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 0, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 0,
- 42, 43, 44, 0, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 0, 55, 56, 57, 58, 0,
- 59, 0, 0, 0, 0, 0, 0, 0, 112, 0,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 0, 56, 57, 58, 59, 0,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 134, 2, 3, 4, 0, 6, 7, 8, 9,
10, 11, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 340, 12, 13, 14, 15, 16, 17, 18,
+ 0, 0, 268, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
0, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 0, 42, 43, 44, 0, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 0,
- 55, 56, 57, 58, 0, 59, 1, 2, 3, 4,
+ 38, 39, 40, 41, 0, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 0,
+ 56, 57, 58, 59, 0, 60, 0, 0, 0, 0,
+ 0, 0, 0, 113, 0, 0, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 341, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 0, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 0,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 0, 56, 57, 58, 59, 0,
+ 60, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 0, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 0, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 0,
+ 56, 57, 58, 59, 0, 60, 134, 2, 3, 4,
+ 0, 6, 7, 8, 9, 10, 11, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 0, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 0,
- 42, 43, 44, 0, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 0, 55, 56, 57, 58, 0,
- 59, 133, 2, 3, 4, 0, 6, 7, 8, 9,
- 10, 11, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 0, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 0, 42, 43, 44, 0, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 0,
- 55, 56, 57, 58, 0, 59, 2, 3, 4, 0,
- 0, 0, 8, 9, 10, 11, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 0, 0, 0, 0, 0, 31, 32, 33,
- 34, 35, 36, 0, 0, 0, 40, 41, 0, 42,
- 43, 44, 0, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 0, 55, 56, 57, 0, 0, 59,
- 8, 9, 10, 11, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 0, 0, 0, 0, 0, 31, 32, 33, 34, 35,
- 36, 0, 0, 0, 40, 41, 0, 42, 43, 44,
- 0, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 0, 55, 56, 57, 0, 316, 59, 8, 9,
- 10, 11, 317, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
- 0, 0, 0, 31, 32, 33, 34, 35, 36, 0,
- 0, 0, 40, 41, 0, 42, 43, 44, 0, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 0,
- 55, 56, 57, 0, 0, 59
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 0, 56, 57, 58, 59, 0,
+ 60, 2, 3, 4, 0, 0, 0, 8, 9, 10,
+ 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 0, 0, 0,
+ 0, 0, 31, 32, 33, 34, 35, 36, 0, 0,
+ 0, 40, 41, 0, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 0, 56,
+ 57, 58, 0, 0, 60, 8, 9, 10, 11, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 0, 0, 0, 0, 0,
+ 31, 32, 33, 34, 35, 36, 0, 0, 0, 40,
+ 41, 0, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 0, 56, 57, 58,
+ 0, 317, 60, 8, 9, 10, 11, 318, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 0, 0, 0, 0, 0, 31, 32,
+ 33, 34, 35, 36, 0, 0, 0, 40, 41, 0,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 0, 56, 57, 58, 0, 0,
+ 60
};
static const yytype_int16 yycheck[] =
{
- 0, 69, 146, 209, 131, 91, 107, 111, 1, 1,
- 9, 130, 220, 136, 0, 343, 117, 0, 76, 9,
- 117, 106, 104, 92, 349, 104, 130, 106, 76, 114,
- 106, 99, 105, 160, 113, 136, 114, 113, 371, 107,
- 111, 40, 41, 42, 76, 370, 190, 83, 84, 117,
- 40, 41, 111, 43, 44, 114, 114, 180, 127, 127,
- 108, 51, 52, 53, 105, 393, 134, 400, 136, 69,
- 111, 399, 72, 192, 116, 68, 118, 77, 179, 180,
- 73, 105, 179, 106, 84, 76, 76, 111, 192, 82,
- 105, 77, 236, 220, 77, 105, 111, 305, 76, 99,
- 219, 111, 87, 88, 85, 86, 105, 107, 105, 40,
- 41, 179, 180, 240, 111, 219, 9, 117, 105, 108,
- 264, 121, 9, 111, 111, 106, 114, 127, 108, 110,
- 9, 275, 89, 90, 134, 279, 136, 122, 123, 111,
- 133, 133, 114, 266, 350, 108, 354, 40, 41, 357,
- 43, 44, 111, 40, 41, 114, 43, 113, 51, 52,
- 53, 40, 41, 42, 51, 266, 79, 80, 111, 296,
- 297, 114, 380, 4, 5, 6, 114, 111, 305, 179,
- 180, 76, 301, 111, 112, 252, 253, 254, 255, 308,
- 40, 41, 42, 76, 402, 104, 130, 301, 266, 119,
- 120, 121, 248, 249, 308, 349, 250, 251, 105, 209,
- 144, 145, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 256, 257, 104, 126, 370, 354, 124, 163,
- 357, 113, 91, 125, 107, 93, 114, 364, 114, 104,
- 104, 385, 361, 114, 104, 112, 109, 104, 349, 104,
- 106, 113, 106, 380, 398, 107, 342, 361, 192, 105,
- 108, 112, 107, 107, 113, 104, 266, 56, 104, 370,
- 113, 111, 107, 107, 76, 402, 113, 105, 107, 109,
- 105, 114, 17, 237, 284, 219, 108, 113, 258, 260,
- 114, 114, 259, 261, 263, 127, 262, 93, 5, 100,
- 127, 225, 183, 309, 344, 399, 344, 375, 391, 284,
- 370, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 343, 344, -1, -1, -1, -1, 349,
- 350, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 301, -1, -1,
- 370, -1, -1, -1, 308, 375, -1, -1, -1, -1,
+ 0, 70, 112, 108, 132, 92, 221, 210, 1, 147,
+ 9, 0, 131, 118, 1, 118, 137, 0, 76, 9,
+ 104, 131, 111, 9, 350, 114, 87, 88, 92, 372,
+ 344, 100, 137, 161, 111, 76, 106, 114, 104, 108,
+ 106, 40, 41, 42, 114, 371, 114, 113, 105, 118,
+ 40, 41, 42, 191, 40, 41, 114, 43, 401, 128,
+ 181, 122, 123, 127, 106, 51, 135, 108, 137, 114,
+ 70, 113, 111, 73, 193, 180, 181, 180, 78, 116,
+ 394, 118, 69, 193, 105, 85, 400, 74, 105, 78,
+ 111, 306, 105, 221, 111, 78, 83, 105, 111, 237,
+ 100, 220, 111, 111, 111, 114, 105, 114, 108, 105,
+ 220, 180, 181, 241, 105, 111, 111, 76, 118, 114,
+ 111, 106, 122, 76, 85, 86, 108, 265, 128, 9,
+ 253, 254, 255, 256, 108, 135, 76, 137, 276, 108,
+ 355, 134, 280, 358, 76, 106, 267, 134, 351, 110,
+ 4, 5, 6, 40, 41, 42, 119, 120, 121, 113,
+ 40, 41, 267, 43, 44, 76, 381, 40, 41, 297,
+ 298, 51, 52, 53, 83, 84, 89, 90, 306, 105,
+ 180, 181, 112, 302, 79, 80, 111, 112, 403, 104,
+ 309, 126, 302, 249, 250, 124, 76, 9, 267, 309,
+ 104, 131, 251, 252, 257, 258, 125, 91, 93, 107,
+ 210, 114, 350, 114, 104, 145, 146, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 355, 40, 41,
+ 358, 43, 44, 371, 164, 104, 113, 365, 114, 51,
+ 52, 53, 104, 362, 112, 350, 104, 104, 386, 109,
+ 106, 106, 362, 381, 113, 107, 343, 105, 108, 112,
+ 107, 399, 113, 193, 113, 107, 371, 267, 111, 104,
+ 56, 107, 113, 107, 104, 403, 76, 105, 109, 105,
+ 107, 114, 17, 108, 113, 285, 238, 259, 261, 260,
+ 220, 114, 114, 263, 262, 94, 128, 264, 101, 5,
+ 310, 184, 226, 400, 128, 345, 392, 376, 285, 345,
+ 78, 371, -1, -1, -1, -1, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 344, 345, -1, -1, -1, -1,
+ 350, 351, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 393, -1, -1, -1, -1, -1, 399,
+ -1, 371, 302, -1, -1, -1, 376, -1, -1, 309,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 361, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, -1, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- -1, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, -1, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, -1, -1, 85, 86, -1, -1, -1,
+ -1, -1, -1, -1, 394, -1, -1, -1, -1, -1,
+ 400, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 362, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, -1, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, -1, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, -1, -1,
+ 85, 86, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 104,
+ -1, -1, -1, 108, 109, -1, -1, -1, -1, 114,
+ 115, 116, 117, 118, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, -1, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, -1, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, -1, -1, 85, 86, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 104, -1, -1, -1, 108, 109,
- -1, -1, -1, -1, 114, 115, 116, 117, 118, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, -1, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, -1, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, -1, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, -1, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, -1,
- -1, 85, 86, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 104, -1, -1, -1, 108, 109, -1, -1, -1, -1,
- 114, 115, 116, 117, 118, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, -1,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, -1, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, -1, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, -1, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, -1, -1, 85, 86, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 104, -1, -1, -1,
- 108, -1, -1, -1, -1, -1, 114, 115, 116, 117,
- 118, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, -1, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- -1, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, -1, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, -1,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, -1, -1, 85, 86, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 104, -1, -1, -1, 108, -1, -1, -1,
- -1, -1, 114, 115, 116, 117, 118, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, -1, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, -1, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, -1, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, -1, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, -1, -1, 85,
- 86, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 104, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 114, 115,
- 116, 117, 118, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, -1, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, -1, 57, 58, 59,
- -1, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, -1, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, -1, -1, 85, 86, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 3, 4, 5, 6, 104, 8, 9, 10, 11, 12,
- 13, -1, -1, -1, 114, 115, 116, 117, 118, -1,
- -1, -1, 25, 26, 27, 28, 29, 30, 31, 32,
+ -1, -1, -1, -1, -1, 104, -1, -1, -1, 108,
+ 109, -1, -1, -1, -1, 114, 115, 116, 117, 118,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, -1,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, -1, 57, 58, 59, -1, 61, 62,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, 66, 67, 68, 69, 70, -1, 72,
73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
-1, -1, 85, 86, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4, 5, 6, -1,
- -1, 104, 10, 11, 12, 13, -1, -1, -1, -1,
- -1, -1, 115, 116, 117, 118, -1, 25, 26, 27,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 104, -1, -1, -1, 108, -1, -1, -1, -1,
+ -1, 114, 115, 116, 117, 118, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ -1, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, -1, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, -1, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, -1, -1, 85, 86,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 104, -1, -1,
+ -1, 108, -1, -1, -1, -1, -1, 114, 115, 116,
+ 117, 118, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, -1, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ -1, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, -1, -1, 85, 86, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 104, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 114, 115, 116, 117, 118, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, -1, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, -1, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, -1, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, -1, -1,
+ 85, 86, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, 4, 5, 6, 104,
+ 8, 9, 10, 11, 12, 13, -1, -1, -1, 114,
+ 115, 116, 117, 118, -1, -1, -1, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
- 48, 49, 50, -1, -1, -1, 54, 55, -1, 57,
- 58, 59, -1, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, -1, 72, 73, 74, -1, 76, 77,
- -1, -1, 10, 11, 12, 13, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, -1, -1, -1, -1, 114, 45, 46, 47,
- 48, 49, 50, -1, -1, -1, 54, 55, -1, 57,
- 58, 59, -1, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, -1, 72, 73, 74, -1, 76, 77,
+ 38, 39, 40, 41, -1, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, -1, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, -1, 72, 73, 74, 75, 76, 77,
78, 79, 80, 81, 82, -1, -1, 85, 86, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 104, -1, -1, 107,
- 10, 11, 12, 13, -1, -1, -1, 115, 116, 117,
- 118, -1, -1, -1, -1, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
- 50, -1, -1, -1, 54, 55, -1, 57, 58, 59,
- -1, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, -1, 72, 73, 74, -1, 76, 77, 78, 79,
- 80, 81, 82, -1, -1, 85, 86, -1, -1, -1,
+ -1, 4, 5, 6, -1, -1, 104, 10, 11, 12,
+ 13, -1, -1, -1, -1, -1, -1, 115, 116, 117,
+ 118, -1, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
+ -1, -1, 45, 46, 47, 48, 49, 50, -1, -1,
+ -1, 54, 55, -1, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, -1, 72,
+ 73, 74, -1, 76, 77, -1, -1, 10, 11, 12,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
+ -1, 114, 45, 46, 47, 48, 49, 50, -1, -1,
+ -1, 54, 55, -1, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, -1, 72,
+ 73, 74, -1, 76, 77, 78, 79, 80, 81, 82,
+ -1, -1, 85, 86, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 104, -1, -1, 107, 10, 11,
- 12, 13, -1, -1, -1, 115, 116, 117, 118, -1,
- -1, -1, -1, 25, 26, 27, 28, 29, 30, 31,
+ -1, 104, -1, -1, 107, 10, 11, 12, 13, -1,
+ -1, -1, 115, 116, 117, 118, -1, -1, -1, -1,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
+ 45, 46, 47, 48, 49, 50, -1, -1, -1, 54,
+ 55, -1, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, -1, 72, 73, 74,
+ -1, 76, 77, 78, 79, 80, 81, 82, -1, -1,
+ 85, 86, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 104,
+ -1, -1, 107, 10, 11, 12, 13, -1, -1, -1,
+ 115, 116, 117, 118, -1, -1, -1, -1, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
+ 47, 48, 49, 50, -1, -1, -1, 54, 55, -1,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, -1, 72, 73, 74, -1, 76,
+ 77, 78, 79, 80, 81, 82, -1, -1, 85, 86,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 104, 10, 11,
+ 12, 13, -1, -1, -1, -1, -1, 114, 115, 116,
+ 117, 118, -1, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
-1, -1, -1, 45, 46, 47, 48, 49, 50, -1,
- -1, -1, 54, 55, -1, 57, 58, 59, -1, 61,
+ -1, -1, 54, 55, -1, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, 67, 68, 69, 70, -1,
72, 73, 74, -1, 76, 77, 78, 79, 80, 81,
82, -1, -1, 85, 86, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 104, 10, 11, 12, 13, -1, -1, -1,
- -1, -1, 114, 115, 116, 117, 118, -1, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
- 47, 48, 49, 50, -1, -1, -1, 54, 55, -1,
- 57, 58, 59, -1, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, -1, 72, 73, 74, -1, 76,
- 77, 78, 79, 80, 81, 82, -1, -1, 85, 86,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 104, -1, -1,
- 107, 10, 11, 12, 13, -1, -1, -1, 115, 116,
- 117, 118, -1, -1, -1, -1, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
- 49, 50, -1, -1, -1, 54, 55, -1, 57, 58,
- 59, -1, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, -1, 72, 73, 74, -1, 76, 77, 78,
- 79, 80, 81, 82, -1, -1, 85, 86, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 104, 10, 11, 12, 13,
- -1, -1, -1, -1, -1, -1, 115, 116, 117, 118,
+ -1, -1, 104, -1, -1, 107, 10, 11, 12, 13,
+ -1, -1, -1, 115, 116, 117, 118, -1, -1, -1,
-1, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, -1, -1, -1, -1,
-1, 45, 46, 47, 48, 49, 50, -1, -1, -1,
- 54, 55, -1, 57, 58, 59, -1, 61, 62, 63,
+ 54, 55, -1, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, -1, 72, 73,
74, -1, 76, 77, 78, 79, 80, 81, 82, -1,
-1, 85, 86, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3, 4, 5, 6,
- 104, 8, 9, 10, 11, 12, 13, -1, -1, -1,
- -1, 115, 116, 117, 118, -1, -1, -1, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, -1, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, -1,
- 57, 58, 59, -1, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, -1, 72, 73, 74, 75, -1,
- 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3, 4, 5, 6, -1, 8, 9, 10, 11,
- 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 109, 25, 26, 27, 28, 29, 30, 31,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 104, 10, 11, 12, 13, -1, -1, -1, -1, -1,
+ -1, 115, 116, 117, 118, -1, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, -1, -1, -1, 54, 55, -1, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, -1, 72, 73, 74, -1, 76, 77, 78,
+ 79, 80, 81, 82, -1, -1, 85, 86, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, 4, 5, 6, 104, 8, 9, 10, 11,
+ 12, 13, -1, -1, -1, -1, 115, 116, 117, 118,
+ -1, -1, -1, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
-1, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, -1, 57, 58, 59, -1, 61,
+ 52, 53, 54, 55, -1, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, 67, 68, 69, 70, -1,
72, 73, 74, 75, -1, 77, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 3, 4, 5, 6,
@@ -1425,53 +1418,62 @@
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, -1, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, -1,
- 57, 58, 59, -1, 61, 62, 63, 64, 65, 66,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
67, 68, 69, 70, -1, 72, 73, 74, 75, -1,
- 77, -1, -1, -1, -1, -1, -1, -1, 0, -1,
- -1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, 4, 5, 6, -1, 8, 9, 10, 11,
12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 109, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
-1, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, -1, 57, 58, 59, -1, 61,
+ 52, 53, 54, 55, -1, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, 67, 68, 69, 70, -1,
- 72, 73, 74, 75, -1, 77, 3, 4, 5, 6,
+ 72, 73, 74, 75, -1, 77, -1, -1, -1, -1,
+ -1, -1, -1, 0, -1, -1, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 25, 26,
+ -1, -1, -1, -1, -1, -1, -1, 109, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, -1, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, -1,
- 57, 58, 59, -1, 61, 62, 63, 64, 65, 66,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
67, 68, 69, 70, -1, 72, 73, 74, 75, -1,
- 77, 3, 4, 5, 6, -1, 8, 9, 10, 11,
+ 77, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
-1, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, -1, 57, 58, 59, -1, 61,
+ 52, 53, 54, 55, -1, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, 67, 68, 69, 70, -1,
- 72, 73, 74, 75, -1, 77, 4, 5, 6, -1,
- -1, -1, 10, 11, 12, 13, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
- 48, 49, 50, -1, -1, -1, 54, 55, -1, 57,
- 58, 59, -1, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, -1, 72, 73, 74, -1, -1, 77,
- 10, 11, 12, 13, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
- 50, -1, -1, -1, 54, 55, -1, 57, 58, 59,
- -1, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, -1, 72, 73, 74, -1, 76, 77, 10, 11,
- 12, 13, 82, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
- -1, -1, -1, 45, 46, 47, 48, 49, 50, -1,
- -1, -1, 54, 55, -1, 57, 58, 59, -1, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, -1,
- 72, 73, 74, -1, -1, 77
+ 72, 73, 74, 75, -1, 77, 3, 4, 5, 6,
+ -1, 8, 9, 10, 11, 12, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, -1, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, -1,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, -1, 72, 73, 74, 75, -1,
+ 77, 4, 5, 6, -1, -1, -1, 10, 11, 12,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
+ -1, -1, 45, 46, 47, 48, 49, 50, -1, -1,
+ -1, 54, 55, -1, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, -1, 72,
+ 73, 74, -1, -1, 77, 10, 11, 12, 13, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
+ 45, 46, 47, 48, 49, 50, -1, -1, -1, 54,
+ 55, -1, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, -1, 72, 73, 74,
+ -1, 76, 77, 10, 11, 12, 13, 82, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
+ 47, 48, 49, 50, -1, -1, -1, 54, 55, -1,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, -1, 72, 73, 74, -1, -1,
+ 77
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1482,44 +1484,44 @@
12, 13, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 43,
44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 57, 58, 59, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 72, 73, 74, 75, 77,
- 159, 160, 161, 162, 163, 168, 169, 170, 171, 173,
- 174, 175, 176, 177, 180, 181, 182, 217, 218, 219,
- 44, 76, 171, 174, 176, 40, 41, 76, 108, 104,
- 114, 220, 105, 111, 9, 40, 41, 42, 165, 166,
- 172, 111, 114, 76, 174, 76, 114, 158, 175, 180,
- 174, 106, 0, 218, 174, 180, 108, 184, 76, 178,
- 179, 108, 200, 165, 164, 167, 175, 166, 76, 104,
- 106, 113, 108, 3, 173, 175, 185, 186, 76, 78,
- 79, 80, 81, 82, 85, 86, 104, 107, 115, 116,
- 117, 118, 129, 130, 131, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 157, 180, 114, 183,
- 185, 113, 105, 111, 14, 15, 16, 18, 19, 20,
- 21, 22, 23, 24, 56, 108, 109, 114, 140, 153,
- 154, 156, 159, 160, 180, 190, 191, 192, 193, 201,
- 202, 203, 205, 207, 209, 216, 76, 164, 167, 106,
- 113, 107, 157, 154, 189, 175, 76, 187, 188, 109,
- 186, 140, 140, 156, 85, 86, 106, 110, 105, 105,
- 111, 55, 154, 104, 140, 119, 120, 121, 116, 118,
- 83, 84, 87, 88, 122, 123, 89, 90, 126, 125,
- 124, 91, 93, 92, 127, 107, 185, 109, 79, 80,
- 179, 114, 114, 211, 104, 104, 114, 114, 156, 104,
- 157, 112, 104, 109, 194, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 113, 155, 111, 114, 109,
- 191, 106, 107, 157, 189, 113, 107, 187, 106, 111,
- 114, 76, 114, 105, 132, 156, 76, 82, 135, 154,
- 140, 140, 140, 142, 142, 143, 143, 144, 144, 144,
- 144, 145, 145, 146, 147, 148, 149, 150, 151, 156,
- 109, 197, 198, 199, 212, 156, 114, 156, 112, 210,
- 201, 154, 154, 157, 113, 107, 189, 113, 114, 157,
- 188, 106, 114, 107, 112, 56, 200, 192, 190, 202,
- 213, 105, 105, 156, 170, 173, 208, 195, 107, 189,
- 113, 189, 107, 157, 154, 104, 208, 214, 215, 197,
- 204, 206, 76, 105, 109, 189, 107, 156, 114, 105,
- 17, 193, 113, 192, 196, 200, 114, 105, 156, 196,
- 197, 189, 114
+ 54, 55, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 72, 73, 74, 75,
+ 77, 159, 160, 161, 162, 163, 168, 169, 170, 171,
+ 173, 174, 175, 176, 177, 180, 181, 182, 217, 218,
+ 219, 44, 76, 171, 174, 176, 40, 41, 76, 108,
+ 104, 114, 220, 105, 111, 9, 40, 41, 42, 165,
+ 166, 172, 111, 114, 76, 174, 76, 114, 158, 175,
+ 180, 174, 106, 0, 218, 174, 180, 108, 184, 76,
+ 178, 179, 108, 200, 165, 164, 167, 175, 166, 76,
+ 104, 106, 113, 108, 3, 173, 175, 185, 186, 76,
+ 78, 79, 80, 81, 82, 85, 86, 104, 107, 115,
+ 116, 117, 118, 129, 130, 131, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 157, 180, 114,
+ 183, 185, 113, 105, 111, 14, 15, 16, 18, 19,
+ 20, 21, 22, 23, 24, 56, 108, 109, 114, 140,
+ 153, 154, 156, 159, 160, 180, 190, 191, 192, 193,
+ 201, 202, 203, 205, 207, 209, 216, 76, 164, 167,
+ 106, 113, 107, 157, 154, 189, 175, 76, 187, 188,
+ 109, 186, 140, 140, 156, 85, 86, 106, 110, 105,
+ 105, 111, 55, 154, 104, 140, 119, 120, 121, 116,
+ 118, 83, 84, 87, 88, 122, 123, 89, 90, 126,
+ 125, 124, 91, 93, 92, 127, 107, 185, 109, 79,
+ 80, 179, 114, 114, 211, 104, 104, 114, 114, 156,
+ 104, 157, 112, 104, 109, 194, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 113, 155, 111, 114,
+ 109, 191, 106, 107, 157, 189, 113, 107, 187, 106,
+ 111, 114, 76, 114, 105, 132, 156, 76, 82, 135,
+ 154, 140, 140, 140, 142, 142, 143, 143, 144, 144,
+ 144, 144, 145, 145, 146, 147, 148, 149, 150, 151,
+ 156, 109, 197, 198, 199, 212, 156, 114, 156, 112,
+ 210, 201, 154, 154, 157, 113, 107, 189, 113, 114,
+ 157, 188, 106, 114, 107, 112, 56, 200, 192, 190,
+ 202, 213, 105, 105, 156, 170, 173, 208, 195, 107,
+ 189, 113, 189, 107, 157, 154, 104, 208, 214, 215,
+ 197, 204, 206, 76, 105, 109, 189, 107, 156, 114,
+ 105, 17, 193, 113, 192, 196, 200, 114, 105, 156,
+ 196, 197, 189, 114
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
@@ -1545,14 +1547,14 @@
181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 183, 182, 184, 182, 185, 185, 186, 186,
- 187, 187, 188, 188, 189, 190, 191, 191, 192, 192,
- 192, 192, 192, 192, 192, 193, 194, 195, 193, 196,
- 196, 198, 197, 199, 197, 200, 200, 201, 201, 202,
- 202, 203, 204, 204, 206, 205, 207, 207, 208, 208,
- 210, 209, 211, 209, 212, 209, 213, 213, 214, 214,
- 215, 215, 216, 216, 216, 216, 216, 217, 217, 218,
- 218, 220, 219
+ 181, 181, 181, 183, 182, 184, 182, 185, 185, 186,
+ 186, 187, 187, 188, 188, 189, 190, 191, 191, 192,
+ 192, 192, 192, 192, 192, 192, 193, 194, 195, 193,
+ 196, 196, 198, 197, 199, 197, 200, 200, 201, 201,
+ 202, 202, 203, 204, 204, 206, 205, 207, 207, 208,
+ 208, 210, 209, 211, 209, 212, 209, 213, 213, 214,
+ 214, 215, 215, 216, 216, 216, 216, 216, 217, 217,
+ 218, 218, 220, 219
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
@@ -1578,14 +1580,14 @@
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 0, 6, 0, 5, 1, 2, 3, 4,
- 1, 3, 1, 4, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 0, 0, 5, 1,
- 1, 0, 2, 0, 2, 2, 3, 1, 2, 1,
- 2, 5, 3, 1, 0, 6, 3, 2, 1, 4,
- 0, 6, 0, 8, 0, 7, 1, 1, 1, 0,
- 2, 3, 2, 2, 2, 3, 2, 1, 2, 1,
- 1, 0, 3
+ 1, 1, 1, 0, 6, 0, 5, 1, 2, 3,
+ 4, 1, 3, 1, 4, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 2, 0, 0, 5,
+ 1, 1, 0, 2, 0, 2, 2, 3, 1, 2,
+ 1, 2, 5, 3, 1, 0, 6, 3, 2, 1,
+ 4, 0, 6, 0, 8, 0, 7, 1, 1, 1,
+ 0, 2, 3, 2, 2, 2, 3, 2, 1, 2,
+ 1, 1, 0, 3
};
@@ -4124,6 +4126,20 @@
case 187:
{
+ if (!context->supportsExtension("GL_ARB_texture_rectangle")) {
+ context->error((yylsp[0]), "unsupported type", "sampler2DRect", "");
+ context->recover();
+ }
+ FRAG_VERT_ONLY("sampler2DRect", (yylsp[0]));
+ TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
+ (yyval.interm.type).setBasic(EbtSampler2DRect, qual, (yylsp[0]));
+ }
+
+ break;
+
+ case 188:
+
+ {
FRAG_VERT_ONLY("sampler3D", (yylsp[0]));
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
(yyval.interm.type).setBasic(EbtSampler3D, qual, (yylsp[0]));
@@ -4131,7 +4147,7 @@
break;
- case 188:
+ case 189:
{
FRAG_VERT_ONLY("sampler2DArray", (yylsp[0]));
@@ -4141,7 +4157,7 @@
break;
- case 189:
+ case 190:
{
FRAG_VERT_ONLY("isampler2D", (yylsp[0]));
@@ -4151,7 +4167,7 @@
break;
- case 190:
+ case 191:
{
FRAG_VERT_ONLY("isampler3D", (yylsp[0]));
@@ -4161,7 +4177,7 @@
break;
- case 191:
+ case 192:
{
FRAG_VERT_ONLY("isamplerCube", (yylsp[0]));
@@ -4171,7 +4187,7 @@
break;
- case 192:
+ case 193:
{
FRAG_VERT_ONLY("isampler2DArray", (yylsp[0]));
@@ -4181,7 +4197,7 @@
break;
- case 193:
+ case 194:
{
FRAG_VERT_ONLY("usampler2D", (yylsp[0]));
@@ -4191,7 +4207,7 @@
break;
- case 194:
+ case 195:
{
FRAG_VERT_ONLY("usampler3D", (yylsp[0]));
@@ -4201,7 +4217,7 @@
break;
- case 195:
+ case 196:
{
FRAG_VERT_ONLY("usamplerCube", (yylsp[0]));
@@ -4211,7 +4227,7 @@
break;
- case 196:
+ case 197:
{
FRAG_VERT_ONLY("usampler2DArray", (yylsp[0]));
@@ -4221,7 +4237,7 @@
break;
- case 197:
+ case 198:
{
FRAG_VERT_ONLY("sampler2DShadow", (yylsp[0]));
@@ -4231,7 +4247,7 @@
break;
- case 198:
+ case 199:
{
FRAG_VERT_ONLY("samplerCubeShadow", (yylsp[0]));
@@ -4241,7 +4257,7 @@
break;
- case 199:
+ case 200:
{
FRAG_VERT_ONLY("sampler2DArrayShadow", (yylsp[0]));
@@ -4251,7 +4267,7 @@
break;
- case 200:
+ case 201:
{
FRAG_VERT_ONLY("struct", (yylsp[0]));
@@ -4261,7 +4277,7 @@
break;
- case 201:
+ case 202:
{
//
@@ -4276,13 +4292,13 @@
break;
- case 202:
+ case 203:
{ if (context->enterStructDeclaration((yylsp[-1]), *(yyvsp[-1].lex).string)) context->recover(); }
break;
- case 203:
+ case 204:
{
(yyval.interm.type) = context->addStructure((yylsp[-5]), (yylsp[-4]), (yyvsp[-4].lex).string, (yyvsp[-1].interm.fieldList));
@@ -4290,13 +4306,13 @@
break;
- case 204:
+ case 205:
{ if (context->enterStructDeclaration((yylsp[0]), *(yyvsp[0].lex).string)) context->recover(); }
break;
- case 205:
+ case 206:
{
(yyval.interm.type) = context->addStructure((yylsp[-4]), (yylsp[-4]), NewPoolTString(""), (yyvsp[-1].interm.fieldList));
@@ -4304,7 +4320,7 @@
break;
- case 206:
+ case 207:
{
(yyval.interm.fieldList) = (yyvsp[0].interm.fieldList);
@@ -4312,7 +4328,7 @@
break;
- case 207:
+ case 208:
{
(yyval.interm.fieldList) = (yyvsp[-1].interm.fieldList);
@@ -4330,7 +4346,7 @@
break;
- case 208:
+ case 209:
{
(yyval.interm.fieldList) = context->addStructDeclaratorList((yyvsp[-2].interm.type), (yyvsp[-1].interm.fieldList));
@@ -4338,7 +4354,7 @@
break;
- case 209:
+ case 210:
{
// ES3 Only, but errors should be handled elsewhere
@@ -4349,7 +4365,7 @@
break;
- case 210:
+ case 211:
{
(yyval.interm.fieldList) = NewPoolTFieldList();
@@ -4358,7 +4374,7 @@
break;
- case 211:
+ case 212:
{
(yyval.interm.fieldList)->push_back((yyvsp[0].interm.field));
@@ -4366,7 +4382,7 @@
break;
- case 212:
+ case 213:
{
if (context->reservedErrorCheck((yylsp[0]), *(yyvsp[0].lex).string))
@@ -4378,7 +4394,7 @@
break;
- case 213:
+ case 214:
{
if (context->reservedErrorCheck((yylsp[-3]), *(yyvsp[-3].lex).string))
@@ -4395,27 +4411,21 @@
break;
- case 214:
+ case 215:
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
break;
- case 215:
-
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-
- break;
-
case 216:
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermAggregate); }
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
case 217:
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermAggregate); }
break;
@@ -4439,19 +4449,19 @@
case 221:
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermSwitch); }
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
case 222:
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermCase); }
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermSwitch); }
break;
case 223:
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermCase); }
break;
@@ -4463,24 +4473,30 @@
case 225:
- { (yyval.interm.intermAggregate) = 0; }
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
case 226:
- { context->symbolTable.push(); }
+ { (yyval.interm.intermAggregate) = 0; }
break;
case 227:
- { context->symbolTable.pop(); }
+ { context->symbolTable.push(); }
break;
case 228:
+ { context->symbolTable.pop(); }
+
+ break;
+
+ case 229:
+
{
if ((yyvsp[-2].interm.intermAggregate) != 0) {
(yyvsp[-2].interm.intermAggregate)->setOp(EOpSequence);
@@ -4491,51 +4507,51 @@
break;
- case 229:
+ case 230:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermAggregate); }
break;
- case 230:
+ case 231:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
- case 231:
-
- { context->symbolTable.push(); }
-
- break;
-
case 232:
- { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[0].interm.intermAggregate); }
+ { context->symbolTable.push(); }
break;
case 233:
- { context->symbolTable.push(); }
+ { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[0].interm.intermAggregate); }
break;
case 234:
- { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+ { context->symbolTable.push(); }
break;
case 235:
+ { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+
+ break;
+
+ case 236:
+
{
(yyval.interm.intermAggregate) = 0;
}
break;
- case 236:
+ case 237:
{
if ((yyvsp[-1].interm.intermAggregate)) {
@@ -4547,7 +4563,7 @@
break;
- case 237:
+ case 238:
{
(yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[0].interm.intermNode), (yyloc));
@@ -4555,7 +4571,7 @@
break;
- case 238:
+ case 239:
{
(yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[-1].interm.intermAggregate), (yyvsp[0].interm.intermNode), (yyloc));
@@ -4563,19 +4579,19 @@
break;
- case 239:
+ case 240:
{ (yyval.interm.intermNode) = 0; }
break;
- case 240:
+ case 241:
{ (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
break;
- case 241:
+ case 242:
{
if (context->boolErrorCheck((yylsp[-4]), (yyvsp[-2].interm.intermTypedNode)))
@@ -4585,7 +4601,7 @@
break;
- case 242:
+ case 243:
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
@@ -4594,7 +4610,7 @@
break;
- case 243:
+ case 244:
{
(yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
@@ -4603,13 +4619,13 @@
break;
- case 244:
+ case 245:
{ context->incrSwitchNestingLevel(); }
break;
- case 245:
+ case 246:
{
(yyval.interm.intermSwitch) = context->addSwitch((yyvsp[-3].interm.intermTypedNode), (yyvsp[0].interm.intermAggregate), (yylsp[-5]));
@@ -4618,7 +4634,7 @@
break;
- case 246:
+ case 247:
{
(yyval.interm.intermCase) = context->addCase((yyvsp[-1].interm.intermTypedNode), (yylsp[-2]));
@@ -4626,7 +4642,7 @@
break;
- case 247:
+ case 248:
{
(yyval.interm.intermCase) = context->addDefault((yylsp[-1]));
@@ -4634,7 +4650,7 @@
break;
- case 248:
+ case 249:
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
@@ -4644,7 +4660,7 @@
break;
- case 249:
+ case 250:
{
TIntermNode *intermNode;
@@ -4661,13 +4677,13 @@
break;
- case 250:
+ case 251:
{ context->symbolTable.push(); context->incrLoopNestingLevel(); }
break;
- case 251:
+ case 252:
{
context->symbolTable.pop();
@@ -4677,13 +4693,13 @@
break;
- case 252:
+ case 253:
{ context->incrLoopNestingLevel(); }
break;
- case 253:
+ case 254:
{
if (context->boolErrorCheck((yylsp[0]), (yyvsp[-2].interm.intermTypedNode)))
@@ -4695,26 +4711,18 @@
break;
- case 254:
-
- { context->symbolTable.push(); context->incrLoopNestingLevel(); }
-
- break;
-
case 255:
- {
- context->symbolTable.pop();
- (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopFor, (yyvsp[-3].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node2), (yyvsp[0].interm.intermNode), (yylsp[-6]));
- context->decrLoopNestingLevel();
- }
+ { context->symbolTable.push(); context->incrLoopNestingLevel(); }
break;
case 256:
{
- (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+ context->symbolTable.pop();
+ (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopFor, (yyvsp[-3].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node2), (yyvsp[0].interm.intermNode), (yylsp[-6]));
+ context->decrLoopNestingLevel();
}
break;
@@ -4730,7 +4738,7 @@
case 258:
{
- (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
break;
@@ -4738,7 +4746,7 @@
case 259:
{
- (yyval.interm.intermTypedNode) = 0;
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
break;
@@ -4746,13 +4754,21 @@
case 260:
{
+ (yyval.interm.intermTypedNode) = 0;
+ }
+
+ break;
+
+ case 261:
+
+ {
(yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = 0;
}
break;
- case 261:
+ case 262:
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
@@ -4761,7 +4777,7 @@
break;
- case 262:
+ case 263:
{
(yyval.interm.intermNode) = context->addBranch(EOpContinue, (yylsp[-1]));
@@ -4769,7 +4785,7 @@
break;
- case 263:
+ case 264:
{
(yyval.interm.intermNode) = context->addBranch(EOpBreak, (yylsp[-1]));
@@ -4777,7 +4793,7 @@
break;
- case 264:
+ case 265:
{
(yyval.interm.intermNode) = context->addBranch(EOpReturn, (yylsp[-1]));
@@ -4785,7 +4801,7 @@
break;
- case 265:
+ case 266:
{
(yyval.interm.intermNode) = context->addBranch(EOpReturn, (yyvsp[-1].interm.intermTypedNode), (yylsp[-2]));
@@ -4793,7 +4809,7 @@
break;
- case 266:
+ case 267:
{
FRAG_ONLY("discard", (yylsp[-1]));
@@ -4802,19 +4818,10 @@
break;
- case 267:
-
- {
- (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
- context->setTreeRoot((yyval.interm.intermNode));
- }
-
- break;
-
case 268:
{
- (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode), (yyloc));
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
context->setTreeRoot((yyval.interm.intermNode));
}
@@ -4823,7 +4830,8 @@
case 269:
{
- (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+ (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode), (yyloc));
+ context->setTreeRoot((yyval.interm.intermNode));
}
break;
@@ -4839,7 +4847,7 @@
case 271:
{
- context->parseFunctionPrototype((yylsp[0]), (yyvsp[0].interm).function, &(yyvsp[0].interm).intermAggregate);
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
break;
@@ -4847,6 +4855,14 @@
case 272:
{
+ context->parseFunctionPrototype((yylsp[0]), (yyvsp[0].interm).function, &(yyvsp[0].interm).intermAggregate);
+ }
+
+ break;
+
+ case 273:
+
+ {
(yyval.interm.intermNode) = context->addFunctionDefinition(*((yyvsp[-2].interm).function), (yyvsp[-2].interm).intermAggregate, (yyvsp[0].interm.intermAggregate), (yylsp[-2]));
}
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index 82d9bcf..5759467 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -142,6 +142,7 @@
mTexture3DZero = new Texture3D(0);
mTexture2DArrayZero = new Texture2DArray(0);
mTextureCubeMapZero = new TextureCubeMap(0);
+ mTexture2DRectZero = new Texture2DRect(0);
mTextureExternalZero = new TextureExternal(0);
mState.activeSampler = 0;
@@ -262,6 +263,7 @@
mTexture3DZero = nullptr;
mTexture2DArrayZero = nullptr;
mTextureCubeMapZero = nullptr;
+ mTexture2DRectZero = nullptr;
mTextureExternalZero = nullptr;
delete mVertexDataManager;
@@ -1209,6 +1211,13 @@
mState.samplerTexture[TEXTURE_2D_ARRAY][mState.activeSampler] = getTexture(texture);
}
+void Context::bindTexture2DRect(GLuint texture)
+{
+ mResourceManager->checkTextureAllocation(texture, TEXTURE_2D_RECT);
+
+ mState.samplerTexture[TEXTURE_2D_RECT][mState.activeSampler] = getTexture(texture);
+}
+
void Context::bindReadFramebuffer(GLuint framebuffer)
{
if(!getFramebuffer(framebuffer))
@@ -1681,6 +1690,19 @@
return static_cast<Texture2D*>(getSamplerTexture(mState.activeSampler, TEXTURE_2D));
}
+Texture2D *Context::getTexture2D(GLenum target) const
+{
+ switch(target)
+ {
+ case GL_TEXTURE_2D: return getTexture2D();
+ case GL_TEXTURE_RECTANGLE_ARB: return getTexture2DRect();
+ case GL_TEXTURE_EXTERNAL_OES: return getTextureExternal();
+ default: UNREACHABLE(target);
+ }
+
+ return nullptr;
+}
+
Texture3D *Context::getTexture3D() const
{
return static_cast<Texture3D*>(getSamplerTexture(mState.activeSampler, TEXTURE_3D));
@@ -1696,6 +1718,11 @@
return static_cast<TextureCubeMap*>(getSamplerTexture(mState.activeSampler, TEXTURE_CUBE));
}
+Texture2DRect *Context::getTexture2DRect() const
+{
+ return static_cast<Texture2DRect*>(getSamplerTexture(mState.activeSampler, TEXTURE_2D_RECT));
+}
+
TextureExternal *Context::getTextureExternal() const
{
return static_cast<TextureExternal*>(getSamplerTexture(mState.activeSampler, TEXTURE_EXTERNAL));
@@ -1713,6 +1740,7 @@
case TEXTURE_3D: return mTexture3DZero;
case TEXTURE_2D_ARRAY: return mTexture2DArrayZero;
case TEXTURE_CUBE: return mTextureCubeMapZero;
+ case TEXTURE_2D_RECT: return mTexture2DRectZero;
case TEXTURE_EXTERNAL: return mTextureExternalZero;
default: UNREACHABLE(type);
}
@@ -2113,6 +2141,15 @@
*params = mState.samplerTexture[TEXTURE_CUBE][mState.activeSampler].name();
return true;
+ case GL_TEXTURE_BINDING_RECTANGLE_ARB:
+ if(mState.activeSampler > MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1)
+ {
+ error(GL_INVALID_OPERATION);
+ return false;
+ }
+
+ *params = mState.samplerTexture[TEXTURE_2D_RECT][mState.activeSampler].name();
+ return true;
case GL_TEXTURE_BINDING_EXTERNAL_OES:
if(mState.activeSampler > MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1)
{
@@ -2541,6 +2578,7 @@
case GL_IMPLEMENTATION_COLOR_READ_FORMAT:
case GL_TEXTURE_BINDING_2D:
case GL_TEXTURE_BINDING_CUBE_MAP:
+ case GL_TEXTURE_BINDING_RECTANGLE_ARB:
case GL_TEXTURE_BINDING_EXTERNAL_OES:
case GL_TEXTURE_BINDING_3D_OES:
case GL_COPY_READ_BUFFER_BINDING:
@@ -3186,7 +3224,11 @@
int baseLevel = baseTexture->getBaseLevel();
int maxLevel = std::min(baseTexture->getTopLevel(), baseTexture->getMaxLevel());
- if(baseTexture->getTarget() == GL_TEXTURE_2D || baseTexture->getTarget() == GL_TEXTURE_EXTERNAL_OES)
+ switch(baseTexture->getTarget())
+ {
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_EXTERNAL_OES:
+ case GL_TEXTURE_RECTANGLE_ARB:
{
Texture2D *texture = static_cast<Texture2D*>(baseTexture);
@@ -3203,7 +3245,8 @@
device->setTextureLevel(sampler, 0, mipmapLevel, surface, sw::TEXTURE_2D);
}
}
- else if(baseTexture->getTarget() == GL_TEXTURE_3D)
+ break;
+ case GL_TEXTURE_3D:
{
Texture3D *texture = static_cast<Texture3D*>(baseTexture);
@@ -3220,7 +3263,8 @@
device->setTextureLevel(sampler, 0, mipmapLevel, surface, sw::TEXTURE_3D);
}
}
- else if(baseTexture->getTarget() == GL_TEXTURE_2D_ARRAY)
+ break;
+ case GL_TEXTURE_2D_ARRAY:
{
Texture2DArray *texture = static_cast<Texture2DArray*>(baseTexture);
@@ -3237,7 +3281,8 @@
device->setTextureLevel(sampler, 0, mipmapLevel, surface, sw::TEXTURE_2D_ARRAY);
}
}
- else if(baseTexture->getTarget() == GL_TEXTURE_CUBE_MAP)
+ break;
+ case GL_TEXTURE_CUBE_MAP:
{
TextureCubeMap *cubeTexture = static_cast<TextureCubeMap*>(baseTexture);
@@ -3259,7 +3304,11 @@
}
}
}
- else UNIMPLEMENTED();
+ break;
+ default:
+ UNIMPLEMENTED();
+ break;
+ }
}
else
{
@@ -4397,6 +4446,7 @@
"GL_KHR_texture_compression_astc_hdr",
"GL_KHR_texture_compression_astc_ldr",
#endif
+ "GL_ARB_texture_rectangle",
"GL_ANGLE_framebuffer_blit",
"GL_ANGLE_framebuffer_multisample",
"GL_ANGLE_instanced_arrays",
diff --git a/src/OpenGL/libGLESv2/Context.h b/src/OpenGL/libGLESv2/Context.h
index e2b517d..c42a12a 100644
--- a/src/OpenGL/libGLESv2/Context.h
+++ b/src/OpenGL/libGLESv2/Context.h
@@ -53,6 +53,7 @@
class Texture3D;
class Texture2DArray;
class TextureCubeMap;
+class Texture2DRect;
class TextureExternal;
class Framebuffer;
class Renderbuffer;
@@ -598,6 +599,7 @@
void bindTextureExternal(GLuint texture);
void bindTexture3D(GLuint texture);
void bindTexture2DArray(GLuint texture);
+ void bindTexture2DRect(GLuint texture);
void bindReadFramebuffer(GLuint framebuffer);
void bindDrawFramebuffer(GLuint framebuffer);
void bindRenderbuffer(GLuint renderbuffer);
@@ -651,9 +653,11 @@
bool getBuffer(GLenum target, es2::Buffer **buffer) const;
Program *getCurrentProgram() const;
Texture2D *getTexture2D() const;
+ Texture2D *getTexture2D(GLenum target) const;
Texture3D *getTexture3D() const;
Texture2DArray *getTexture2DArray() const;
TextureCubeMap *getTextureCubeMap() const;
+ Texture2DRect *getTexture2DRect() const;
TextureExternal *getTextureExternal() const;
Texture *getSamplerTexture(unsigned int sampler, TextureType type) const;
Framebuffer *getReadFramebuffer() const;
@@ -743,6 +747,7 @@
gl::BindingPointer<Texture3D> mTexture3DZero;
gl::BindingPointer<Texture2DArray> mTexture2DArrayZero;
gl::BindingPointer<TextureCubeMap> mTextureCubeMapZero;
+ gl::BindingPointer<Texture2DRect> mTexture2DRectZero;
gl::BindingPointer<TextureExternal> mTextureExternalZero;
gl::NameSpace<Framebuffer> mFramebufferNameSpace;
diff --git a/src/OpenGL/libGLESv2/Program.cpp b/src/OpenGL/libGLESv2/Program.cpp
index b93bd2a..d2cff33 100644
--- a/src/OpenGL/libGLESv2/Program.cpp
+++ b/src/OpenGL/libGLESv2/Program.cpp
@@ -1153,6 +1153,7 @@
case GL_FLOAT_MAT4: applyUniformMatrix4fv(device, location, size, f); break;
case GL_SAMPLER_2D:
case GL_SAMPLER_CUBE:
+ case GL_SAMPLER_2D_RECT_ARB:
case GL_SAMPLER_EXTERNAL_OES:
case GL_SAMPLER_3D_OES:
case GL_SAMPLER_2D_ARRAY:
@@ -1761,6 +1762,7 @@
case GL_INT_SAMPLER_3D:
case GL_UNSIGNED_INT_SAMPLER_3D:
case GL_SAMPLER_3D_OES: samplersVS[index].textureType = TEXTURE_3D; break;
+ case GL_SAMPLER_2D_RECT_ARB: samplersVS[index].textureType = TEXTURE_2D_RECT; break;
case GL_SAMPLER_EXTERNAL_OES: samplersVS[index].textureType = TEXTURE_EXTERNAL; break;
case GL_INT_SAMPLER_2D_ARRAY:
case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:
@@ -1796,6 +1798,7 @@
case GL_INT_SAMPLER_3D:
case GL_UNSIGNED_INT_SAMPLER_3D:
case GL_SAMPLER_3D_OES: samplersPS[index].textureType = TEXTURE_3D; break;
+ case GL_SAMPLER_2D_RECT_ARB: samplersPS[index].textureType = TEXTURE_2D_RECT; break;
case GL_SAMPLER_EXTERNAL_OES: samplersPS[index].textureType = TEXTURE_EXTERNAL; break;
case GL_INT_SAMPLER_2D_ARRAY:
case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:
diff --git a/src/OpenGL/libGLESv2/ResourceManager.cpp b/src/OpenGL/libGLESv2/ResourceManager.cpp
index 04e1f0d..51a7bc1 100644
--- a/src/OpenGL/libGLESv2/ResourceManager.cpp
+++ b/src/OpenGL/libGLESv2/ResourceManager.cpp
@@ -308,6 +308,10 @@
{
textureObject = new Texture2DArray(texture);
}
+ else if(type == TEXTURE_2D_RECT)
+ {
+ textureObject = new Texture2DRect(texture);
+ }
else
{
UNREACHABLE(type);
diff --git a/src/OpenGL/libGLESv2/ResourceManager.h b/src/OpenGL/libGLESv2/ResourceManager.h
index efd0e20..c076653 100644
--- a/src/OpenGL/libGLESv2/ResourceManager.h
+++ b/src/OpenGL/libGLESv2/ResourceManager.h
@@ -40,6 +40,7 @@
TEXTURE_3D,
TEXTURE_2D_ARRAY,
TEXTURE_CUBE,
+ TEXTURE_2D_RECT,
TEXTURE_EXTERNAL,
TEXTURE_TYPE_COUNT,
diff --git a/src/OpenGL/libGLESv2/Shader.cpp b/src/OpenGL/libGLESv2/Shader.cpp
index fe1b830..9cb6bd5 100644
--- a/src/OpenGL/libGLESv2/Shader.cpp
+++ b/src/OpenGL/libGLESv2/Shader.cpp
@@ -181,6 +181,7 @@
resources.OES_fragment_precision_high = 1;
resources.OES_EGL_image_external = 1;
resources.EXT_draw_buffers = 1;
+ resources.ARB_texture_rectangle = 1;
resources.MaxCallStackDepth = 64;
assembler->Init(resources);
diff --git a/src/OpenGL/libGLESv2/Texture.cpp b/src/OpenGL/libGLESv2/Texture.cpp
index c2665e7..9b3a5f0 100644
--- a/src/OpenGL/libGLESv2/Texture.cpp
+++ b/src/OpenGL/libGLESv2/Texture.cpp
@@ -22,6 +22,7 @@
#include "mathutil.h"
#include "Framebuffer.h"
#include "Device.hpp"
+#include "Shader.h"
#include "libEGL/Display.h"
#include "common/Surface.hpp"
#include "common/debug.h"
@@ -577,25 +578,25 @@
GLsizei Texture2D::getWidth(GLenum target, GLint level) const
{
- ASSERT(target == GL_TEXTURE_2D);
+ ASSERT(target == getTarget());
return image[level] ? image[level]->getWidth() : 0;
}
GLsizei Texture2D::getHeight(GLenum target, GLint level) const
{
- ASSERT(target == GL_TEXTURE_2D);
+ ASSERT(target == getTarget());
return image[level] ? image[level]->getHeight() : 0;
}
GLenum Texture2D::getFormat(GLenum target, GLint level) const
{
- ASSERT(target == GL_TEXTURE_2D);
+ ASSERT(target == getTarget());
return image[level] ? image[level]->getFormat() : GL_NONE;
}
GLenum Texture2D::getType(GLenum target, GLint level) const
{
- ASSERT(target == GL_TEXTURE_2D);
+ ASSERT(target == getTarget());
return image[level] ? image[level]->getType() : GL_NONE;
}
@@ -913,7 +914,7 @@
Renderbuffer *Texture2D::getRenderbuffer(GLenum target, GLint level)
{
- if(target != GL_TEXTURE_2D)
+ if(target != getTarget())
{
return error(GL_INVALID_OPERATION, (Renderbuffer*)nullptr);
}
@@ -932,7 +933,7 @@
egl::Image *Texture2D::getRenderTarget(GLenum target, unsigned int level)
{
- ASSERT(target == GL_TEXTURE_2D);
+ ASSERT(target == getTarget());
ASSERT(level < IMPLEMENTATION_MAX_TEXTURE_LEVELS);
if(image[level])
@@ -945,7 +946,7 @@
bool Texture2D::isShared(GLenum target, unsigned int level) const
{
- ASSERT(target == GL_TEXTURE_2D);
+ ASSERT(target == getTarget());
ASSERT(level < IMPLEMENTATION_MAX_TEXTURE_LEVELS);
if(mSurface) // Bound to an EGLSurface
@@ -961,6 +962,15 @@
return image[level]->isShared();
}
+Texture2DRect::Texture2DRect(GLuint name) : Texture2D(name)
+{
+}
+
+GLenum Texture2DRect::getTarget() const
+{
+ return GL_TEXTURE_RECTANGLE_ARB;
+}
+
TextureCubeMap::TextureCubeMap(GLuint name) : Texture(name)
{
for(int f = 0; f < 6; f++)
diff --git a/src/OpenGL/libGLESv2/Texture.h b/src/OpenGL/libGLESv2/Texture.h
index 53b4bfb..026c75a 100644
--- a/src/OpenGL/libGLESv2/Texture.h
+++ b/src/OpenGL/libGLESv2/Texture.h
@@ -203,6 +203,14 @@
unsigned int mProxyRefs;
};
+class Texture2DRect : public Texture2D
+{
+public:
+ explicit Texture2DRect(GLuint name);
+
+ GLenum getTarget() const override;
+};
+
class TextureCubeMap : public Texture
{
public:
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index 6db0a79..aa743e7 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -389,6 +389,9 @@
case GL_TEXTURE_3D:
context->bindTexture3D(texture);
break;
+ case GL_TEXTURE_RECTANGLE_ARB:
+ context->bindTexture2DRect(texture);
+ break;
default:
return error(GL_INVALID_ENUM);
}
@@ -836,6 +839,7 @@
switch(target)
{
case GL_TEXTURE_2D:
+ case GL_TEXTURE_RECTANGLE_ARB:
if(width > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level) ||
height > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level))
{
@@ -868,9 +872,9 @@
return error(GL_INVALID_VALUE);
}
- if(target == GL_TEXTURE_2D)
+ if(target == GL_TEXTURE_2D || target == GL_TEXTURE_RECTANGLE_ARB)
{
- es2::Texture2D *texture = context->getTexture2D();
+ es2::Texture2D *texture = context->getTexture2D(target);
if(!texture)
{
@@ -958,9 +962,9 @@
GLenum sizedInternalFormat = GetSizedInternalFormat(format, GL_NONE);
- if(target == GL_TEXTURE_2D)
+ if(target == GL_TEXTURE_2D || target == GL_TEXTURE_RECTANGLE_ARB)
{
- es2::Texture2D *texture = context->getTexture2D();
+ es2::Texture2D *texture = context->getTexture2D(target);
GLenum validationError = ValidateSubImageParams(true, false, target, level, xoffset, yoffset, width, height, format, GL_NONE, texture, context->getClientVersion());
if(validationError != GL_NONE)
@@ -1021,6 +1025,7 @@
switch(target)
{
case GL_TEXTURE_2D:
+ case GL_TEXTURE_RECTANGLE_ARB:
if(width > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level) ||
height > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level))
{
@@ -1069,9 +1074,9 @@
return;
}
- if(target == GL_TEXTURE_2D)
+ if(target == GL_TEXTURE_2D || target == GL_TEXTURE_RECTANGLE_ARB)
{
- es2::Texture2D *texture = context->getTexture2D();
+ es2::Texture2D *texture = context->getTexture2D(target);
if(!texture)
{
@@ -1141,9 +1146,9 @@
es2::Texture *texture = nullptr;
- if(target == GL_TEXTURE_2D)
+ if(target == GL_TEXTURE_2D || target == GL_TEXTURE_RECTANGLE_ARB)
{
- texture = context->getTexture2D();
+ texture = context->getTexture2D(target);
}
else if(es2::IsCubemapTextureTarget(target))
{
@@ -2097,6 +2102,12 @@
return error(GL_INVALID_OPERATION);
}
break;
+ case GL_TEXTURE_RECTANGLE_ARB:
+ if(tex->getTarget() != GL_TEXTURE_RECTANGLE_ARB)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ break;
case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
@@ -2285,6 +2296,9 @@
case GL_TEXTURE_3D:
texture = context->getTexture3D();
break;
+ case GL_TEXTURE_RECTANGLE_ARB:
+ texture = context->getTexture2DRect();
+ break;
default:
return error(GL_INVALID_ENUM);
}
@@ -3588,6 +3602,9 @@
case GL_TEXTURE_3D:
texture = context->getTexture3D();
break;
+ case GL_TEXTURE_RECTANGLE_ARB:
+ texture = context->getTexture2DRect();
+ break;
default:
return error(GL_INVALID_ENUM);
}
@@ -3741,6 +3758,9 @@
case GL_TEXTURE_3D:
texture = context->getTexture3D();
break;
+ case GL_TEXTURE_RECTANGLE_ARB:
+ texture = context->getTexture2DRect();
+ break;
default:
return error(GL_INVALID_ENUM);
}
@@ -5042,6 +5062,7 @@
switch(target)
{
case GL_TEXTURE_2D:
+ case GL_TEXTURE_RECTANGLE_ARB:
if(width > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level) ||
height > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level))
{
@@ -5077,9 +5098,9 @@
return error(validationError);
}
- if(target == GL_TEXTURE_2D)
+ if(target == GL_TEXTURE_2D || target == GL_TEXTURE_RECTANGLE_ARB)
{
- es2::Texture2D *texture = context->getTexture2D();
+ es2::Texture2D *texture = context->getTexture2D(target);
if(!texture)
{
@@ -5138,6 +5159,9 @@
case GL_TEXTURE_EXTERNAL_OES:
texture = context->getTextureExternal();
break;
+ case GL_TEXTURE_RECTANGLE_ARB:
+ texture = context->getTexture2DRect();
+ break;
default:
return error(GL_INVALID_ENUM);
}
@@ -5287,6 +5311,9 @@
case GL_TEXTURE_EXTERNAL_OES:
texture = context->getTextureExternal();
break;
+ case GL_TEXTURE_RECTANGLE_ARB:
+ texture = context->getTexture2DRect();
+ break;
default:
return error(GL_INVALID_ENUM);
}
@@ -5432,9 +5459,9 @@
if(context)
{
- if(target == GL_TEXTURE_2D)
+ if(target == GL_TEXTURE_2D || target == GL_TEXTURE_RECTANGLE_ARB)
{
- es2::Texture2D *texture = context->getTexture2D();
+ es2::Texture2D *texture = context->getTexture2D(target);
GLenum validationError = ValidateSubImageParams(false, false, target, level, xoffset, yoffset, width, height, format, type, texture, context->getClientVersion());
if(validationError != GL_NONE)
@@ -6676,6 +6703,7 @@
switch(target)
{
case GL_TEXTURE_2D:
+ case GL_TEXTURE_RECTANGLE_ARB:
case GL_TEXTURE_EXTERNAL_OES:
break;
default:
@@ -6686,14 +6714,7 @@
if(context)
{
- es2::Texture2D *texture = nullptr;
-
- switch(target)
- {
- case GL_TEXTURE_2D: texture = context->getTexture2D(); break;
- case GL_TEXTURE_EXTERNAL_OES: texture = context->getTextureExternal(); break;
- default: UNREACHABLE(target);
- }
+ es2::Texture2D *texture = context->getTexture2D(target);
if(!texture)
{
diff --git a/src/OpenGL/libGLESv2/libGLESv3.cpp b/src/OpenGL/libGLESv2/libGLESv3.cpp
index 056ef53..0a880ad 100644
--- a/src/OpenGL/libGLESv2/libGLESv3.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv3.cpp
@@ -3937,41 +3937,42 @@
switch(target)
{
case GL_TEXTURE_2D:
+ case GL_TEXTURE_RECTANGLE_ARB:
+ {
+ es2::Texture2D *texture = context->getTexture2D(target);
+ if(!texture || texture->name == 0 || texture->getImmutableFormat() == GL_TRUE)
{
- es2::Texture2D *texture = context->getTexture2D();
- if(!texture || texture->name == 0 || texture->getImmutableFormat() == GL_TRUE)
- {
- return error(GL_INVALID_OPERATION);
- }
+ return error(GL_INVALID_OPERATION);
+ }
for(int level = 0; level < levels; level++)
- {
+ {
texture->setImage(context, level, width, height, sizedInternalFormat, sizedInternalFormat, type, context->getUnpackInfo(), nullptr);
- width = std::max(1, (width / 2));
- height = std::max(1, (height / 2));
- }
- texture->makeImmutable(levels);
+ width = std::max(1, (width / 2));
+ height = std::max(1, (height / 2));
}
+ texture->makeImmutable(levels);
+ }
break;
case GL_TEXTURE_CUBE_MAP:
+ {
+ es2::TextureCubeMap *texture = context->getTextureCubeMap();
+ if(!texture || texture->name == 0 || texture->getImmutableFormat())
{
- es2::TextureCubeMap *texture = context->getTextureCubeMap();
- if(!texture || texture->name == 0 || texture->getImmutableFormat())
- {
- return error(GL_INVALID_OPERATION);
- }
+ return error(GL_INVALID_OPERATION);
+ }
for(int level = 0; level < levels; level++)
- {
+ {
for(int face = GL_TEXTURE_CUBE_MAP_POSITIVE_X; face <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; face++)
- {
+ {
texture->setImage(context, face, level, width, height, sizedInternalFormat, sizedInternalFormat, type, context->getUnpackInfo(), nullptr);
- }
- width = std::max(1, (width / 2));
- height = std::max(1, (height / 2));
}
- texture->makeImmutable(levels);
+ width = std::max(1, (width / 2));
+ height = std::max(1, (height / 2));
}
+ texture->makeImmutable(levels);
+ }
break;
default:
return error(GL_INVALID_ENUM);
@@ -4003,52 +4004,52 @@
switch(target)
{
case GL_TEXTURE_3D:
+ {
+ if(levels > es2::IMPLEMENTATION_MAX_TEXTURE_LEVELS || levels > (log2(std::max(std::max(width, height), depth)) + 1))
{
- if(levels > es2::IMPLEMENTATION_MAX_TEXTURE_LEVELS || levels > (log2(std::max(std::max(width, height), depth)) + 1))
- {
- return error(GL_INVALID_OPERATION);
- }
+ return error(GL_INVALID_OPERATION);
+ }
- es2::Texture3D *texture = context->getTexture3D();
- if(!texture || texture->name == 0 || texture->getImmutableFormat() == GL_TRUE)
- {
- return error(GL_INVALID_OPERATION);
- }
+ es2::Texture3D *texture = context->getTexture3D();
+ if(!texture || texture->name == 0 || texture->getImmutableFormat() == GL_TRUE)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
for(int level = 0; level < levels; level++)
- {
+ {
texture->setImage(context, level, width, height, depth, sizedInternalFormat, sizedInternalFormat, type, context->getUnpackInfo(), nullptr);
- width = std::max(1, (width / 2));
- height = std::max(1, (height / 2));
- depth = std::max(1, (depth / 2));
- }
- texture->makeImmutable(levels);
+ width = std::max(1, (width / 2));
+ height = std::max(1, (height / 2));
+ depth = std::max(1, (depth / 2));
}
+ texture->makeImmutable(levels);
+ }
break;
case GL_TEXTURE_2D_ARRAY:
+ {
+ if(levels > es2::IMPLEMENTATION_MAX_TEXTURE_LEVELS || levels > (log2(std::max(width, height)) + 1))
{
- if(levels > es2::IMPLEMENTATION_MAX_TEXTURE_LEVELS || levels > (log2(std::max(width, height)) + 1))
- {
- return error(GL_INVALID_OPERATION);
- }
+ return error(GL_INVALID_OPERATION);
+ }
- es2::Texture3D *texture = context->getTexture2DArray();
- if(!texture || texture->name == 0 || texture->getImmutableFormat())
- {
- return error(GL_INVALID_OPERATION);
- }
+ es2::Texture3D *texture = context->getTexture2DArray();
+ if(!texture || texture->name == 0 || texture->getImmutableFormat())
+ {
+ return error(GL_INVALID_OPERATION);
+ }
for(int level = 0; level < levels; level++)
- {
+ {
for(int face = GL_TEXTURE_CUBE_MAP_POSITIVE_X; face <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; face++)
- {
+ {
texture->setImage(context, level, width, height, depth, sizedInternalFormat, sizedInternalFormat, type, context->getUnpackInfo(), nullptr);
- }
- width = std::max(1, (width / 2));
- height = std::max(1, (height / 2));
}
- texture->makeImmutable(levels);
+ width = std::max(1, (width / 2));
+ height = std::max(1, (height / 2));
}
+ texture->makeImmutable(levels);
+ }
break;
default:
return error(GL_INVALID_ENUM);
diff --git a/src/OpenGL/libGLESv2/utilities.cpp b/src/OpenGL/libGLESv2/utilities.cpp
index 2318057..96c83d4 100644
--- a/src/OpenGL/libGLESv2/utilities.cpp
+++ b/src/OpenGL/libGLESv2/utilities.cpp
@@ -20,6 +20,7 @@
#include "main.h"
#include "mathutil.h"
#include "Context.h"
+#include "Shader.h"
#include "common/debug.h"
#include <limits>
@@ -183,6 +184,7 @@
case GL_UNSIGNED_INT:
case GL_SAMPLER_2D:
case GL_SAMPLER_CUBE:
+ case GL_SAMPLER_2D_RECT_ARB:
case GL_SAMPLER_EXTERNAL_OES:
case GL_SAMPLER_3D_OES:
case GL_SAMPLER_2D_ARRAY:
@@ -260,6 +262,7 @@
case GL_INT:
case GL_SAMPLER_2D:
case GL_SAMPLER_CUBE:
+ case GL_SAMPLER_2D_RECT_ARB:
case GL_SAMPLER_EXTERNAL_OES:
case GL_SAMPLER_3D_OES:
case GL_SAMPLER_2D_ARRAY:
@@ -309,6 +312,7 @@
{
case GL_SAMPLER_2D:
case GL_SAMPLER_CUBE:
+ case GL_SAMPLER_2D_RECT_ARB:
case GL_SAMPLER_EXTERNAL_OES:
case GL_SAMPLER_3D_OES:
case GL_SAMPLER_2D_ARRAY:
@@ -353,6 +357,7 @@
case GL_UNSIGNED_INT_VEC4:
case GL_SAMPLER_2D:
case GL_SAMPLER_CUBE:
+ case GL_SAMPLER_2D_RECT_ARB:
case GL_SAMPLER_EXTERNAL_OES:
case GL_SAMPLER_3D_OES:
case GL_SAMPLER_2D_ARRAY:
@@ -771,7 +776,7 @@
bool IsTextureTarget(GLenum target)
{
- return target == GL_TEXTURE_2D || IsCubemapTextureTarget(target) || target == GL_TEXTURE_3D || target == GL_TEXTURE_2D_ARRAY;
+ return target == GL_TEXTURE_2D || IsCubemapTextureTarget(target) || target == GL_TEXTURE_3D || target == GL_TEXTURE_2D_ARRAY || target == GL_TEXTURE_RECTANGLE_ARB;
}
GLenum ValidateTextureFormatType(GLenum format, GLenum type, GLint internalformat, GLint clientVersion)
diff --git a/src/Shader/PixelProgram.cpp b/src/Shader/PixelProgram.cpp
index 0f0f6bd..59a6982 100644
--- a/src/Shader/PixelProgram.cpp
+++ b/src/Shader/PixelProgram.cpp
@@ -297,6 +297,7 @@
case Shader::OPCODE_TEXGRADOFFSET: TEXGRADOFFSET(d, s0, src1, s2, s3, s4); break;
case Shader::OPCODE_TEXBIAS: TEXBIAS(d, s0, src1, s2.x); break;
case Shader::OPCODE_TEXOFFSETBIAS: TEXOFFSETBIAS(d, s0, src1, s2, s3.x); break;
+ case Shader::OPCODE_TEXRECT: TEXRECT(d, s0, src1); break;
case Shader::OPCODE_DISCARD: DISCARD(cMask, instruction); break;
case Shader::OPCODE_DFDX: DFDX(d, s0); break;
case Shader::OPCODE_DFDY: DFDY(d, s0); break;
@@ -1178,6 +1179,11 @@
dst = sampleTexture(src1, src0, lod, (src0), (src0), (src0), Lod);
}
+ void PixelProgram::TEXRECT(Vector4f &dst, Vector4f &src0, const Src &src1)
+ {
+ dst = sampleTexture(src1, src0, (src0.x), (src0), (src0), (src0), Rectangle);
+ }
+
void PixelProgram::TEXSIZE(Vector4f &dst, Float4 &lod, const Src &src1)
{
Pointer<Byte> texture = data + OFFSET(DrawData, mipmap) + src1.index * sizeof(Texture);
diff --git a/src/Shader/PixelProgram.hpp b/src/Shader/PixelProgram.hpp
index 951e147..d7b7767 100644
--- a/src/Shader/PixelProgram.hpp
+++ b/src/Shader/PixelProgram.hpp
@@ -118,6 +118,7 @@
void TEXELFETCHOFFSET(Vector4f &dst, Vector4f &src, const Src &, Vector4f &offset, Float4 &lod);
void TEXGRAD(Vector4f &dst, Vector4f &src0, const Src &src1, Vector4f &dsx, Vector4f &dsy);
void TEXGRADOFFSET(Vector4f &dst, Vector4f &src, const Src &, Vector4f &dsx, Vector4f &dsy, Vector4f &offset);
+ void TEXRECT(Vector4f &dst, Vector4f &src0, const Src &src1);
void DISCARD(Int cMask[4], const Shader::Instruction *instruction);
void DFDX(Vector4f &dst, Vector4f &src);
void DFDY(Vector4f &dst, Vector4f &src);
diff --git a/src/Shader/PixelShader.cpp b/src/Shader/PixelShader.cpp
index 9e281d9..6813b3f 100644
--- a/src/Shader/PixelShader.cpp
+++ b/src/Shader/PixelShader.cpp
@@ -323,6 +323,7 @@
case Shader::OPCODE_TEXELFETCHOFFSET:
case Shader::OPCODE_TEXGRAD:
case Shader::OPCODE_TEXGRADOFFSET:
+ case Shader::OPCODE_TEXRECT:
{
int sampler = inst->src[1].index;
diff --git a/src/Shader/SamplerCore.cpp b/src/Shader/SamplerCore.cpp
index cae1ecd..dbb4417 100644
--- a/src/Shader/SamplerCore.cpp
+++ b/src/Shader/SamplerCore.cpp
@@ -297,7 +297,8 @@
// FIXME: YUV is not supported by the floating point path
bool forceFloatFiltering = state.highPrecisionFiltering && !hasYuvFormat() && (state.textureFilter != FILTER_POINT);
bool seamlessCube = (state.addressingModeU == ADDRESSING_SEAMLESS);
- if(hasFloatTexture() || hasUnnormalizedIntegerTexture() || forceFloatFiltering || seamlessCube) // FIXME: Mostly identical to integer sampling
+ bool rectangleTexture = (function == Rectangle);
+ if(hasFloatTexture() || hasUnnormalizedIntegerTexture() || forceFloatFiltering || seamlessCube || rectangleTexture) // FIXME: Mostly identical to integer sampling
{
Float4 uuuu = u;
Float4 vvvv = v;
@@ -2365,20 +2366,26 @@
Float4 coord = uvw;
- switch(addressingMode)
+ if(function == Rectangle)
{
- case ADDRESSING_CLAMP:
- case ADDRESSING_BORDER:
- case ADDRESSING_SEAMLESS:
- // Linear filtering of cube doesn't require clamping because the coordinates
- // are already in [0, 1] range and numerical imprecision is tolerated.
- if(addressingMode != ADDRESSING_SEAMLESS || pointFilter)
+ coord = Min(Max(coord, Float4(0.0f)), Float4(dim - Int4(1)));
+ }
+ else
+ {
+ switch(addressingMode)
{
- Float4 one = As<Float4>(Int4(oneBits));
- coord = Min(Max(coord, Float4(0.0f)), one);
- }
- break;
- case ADDRESSING_MIRROR:
+ case ADDRESSING_CLAMP:
+ case ADDRESSING_BORDER:
+ case ADDRESSING_SEAMLESS:
+ // Linear filtering of cube doesn't require clamping because the coordinates
+ // are already in [0, 1] range and numerical imprecision is tolerated.
+ if(addressingMode != ADDRESSING_SEAMLESS || pointFilter)
+ {
+ Float4 one = As<Float4>(Int4(oneBits));
+ coord = Min(Max(coord, Float4(0.0f)), one);
+ }
+ break;
+ case ADDRESSING_MIRROR:
{
Float4 half = As<Float4>(Int4(halfBits));
Float4 one = As<Float4>(Int4(oneBits));
@@ -2386,7 +2393,7 @@
coord = one - Abs(two * Frac(coord * half) - one);
}
break;
- case ADDRESSING_MIRRORONCE:
+ case ADDRESSING_MIRRORONCE:
{
Float4 half = As<Float4>(Int4(halfBits));
Float4 one = As<Float4>(Int4(oneBits));
@@ -2394,22 +2401,23 @@
coord = one - Abs(two * Frac(Min(Max(coord, -one), two) * half) - one);
}
break;
- default: // Wrap
- coord = Frac(coord);
- break;
+ default: // Wrap
+ coord = Frac(coord);
+ break;
+ }
+
+ coord = coord * Float4(dim);
}
- coord = coord * Float4(dim);
-
if(state.textureFilter == FILTER_POINT ||
- state.textureFilter == FILTER_GATHER)
- {
+ state.textureFilter == FILTER_GATHER)
+ {
xyz0 = Int4(coord);
}
else
{
if(state.textureFilter == FILTER_MIN_POINT_MAG_LINEAR ||
- state.textureFilter == FILTER_MIN_LINEAR_MAG_POINT)
+ state.textureFilter == FILTER_MIN_LINEAR_MAG_POINT)
{
coord -= As<Float4>(As<Int4>(Float4(0.5f)) & filter);
}
diff --git a/src/Shader/SamplerCore.hpp b/src/Shader/SamplerCore.hpp
index 684c1a7..a72bbdc 100644
--- a/src/Shader/SamplerCore.hpp
+++ b/src/Shader/SamplerCore.hpp
@@ -27,6 +27,7 @@
Lod, // Use provided LOD.
Grad, // Use provided gradients.
Fetch, // Use provided integer coordinates.
+ Rectangle, // Use non normalized texture coordinates.
Base // Sample base level.
};
diff --git a/src/Shader/Shader.cpp b/src/Shader/Shader.cpp
index 025b5d5..c5ce0b9 100644
--- a/src/Shader/Shader.cpp
+++ b/src/Shader/Shader.cpp
@@ -904,6 +904,7 @@
case OPCODE_TEXELFETCHOFFSET: return "texelfetchoffset";
case OPCODE_TEXGRAD: return "texgrad";
case OPCODE_TEXGRADOFFSET: return "texgradoffset";
+ case OPCODE_TEXRECT: return "texrect";
case OPCODE_BREAKP: return "breakp";
case OPCODE_TEXSIZE: return "texsize";
case OPCODE_PHASE: return "phase";
@@ -1850,6 +1851,7 @@
case OPCODE_TEXELFETCHOFFSET:
case OPCODE_TEXGRAD:
case OPCODE_TEXGRADOFFSET:
+ case OPCODE_TEXRECT:
{
Parameter &dst = inst->dst;
Parameter &src1 = inst->src[1];
diff --git a/src/Shader/Shader.hpp b/src/Shader/Shader.hpp
index 6755cd4..2556cdd 100644
--- a/src/Shader/Shader.hpp
+++ b/src/Shader/Shader.hpp
@@ -214,6 +214,7 @@
OPCODE_TEXBIAS,
OPCODE_TEXLOD,
OPCODE_TEXOFFSETBIAS,
+ OPCODE_TEXRECT,
OPCODE_TEXSIZE,
OPCODE_FLOATBITSTOINT,
OPCODE_FLOATBITSTOUINT,
diff --git a/src/Shader/VertexProgram.cpp b/src/Shader/VertexProgram.cpp
index 4f8ba1a..71a38d3 100644
--- a/src/Shader/VertexProgram.cpp
+++ b/src/Shader/VertexProgram.cpp
@@ -336,6 +336,7 @@
case Shader::OPCODE_TEXELFETCHOFFSET: TEXELFETCHOFFSET(d, s0, src1, s2, s3.x); break;
case Shader::OPCODE_TEXGRAD: TEXGRAD(d, s0, src1, s2, s3); break;
case Shader::OPCODE_TEXGRADOFFSET: TEXGRADOFFSET(d, s0, src1, s2, s3, s4); break;
+ case Shader::OPCODE_TEXRECT: TEXRECT(d, s0, src1); break;
case Shader::OPCODE_TEXSIZE: TEXSIZE(d, s0.x, src1); break;
case Shader::OPCODE_END: break;
default:
@@ -1552,6 +1553,11 @@
dst = sampleTexture(src1, src0, (src0.x), dsx, dsy, offset, {Grad, Offset});
}
+ void VertexProgram::TEXRECT(Vector4f &dst, Vector4f &src0, const Src &src1)
+ {
+ dst = sampleTexture(src1, src0, (src0.x), (src0), (src0), (src0), Rectangle);
+ }
+
void VertexProgram::TEXSIZE(Vector4f &dst, Float4 &lod, const Src &src1)
{
Pointer<Byte> texture = data + OFFSET(DrawData, mipmap[TEXTURE_IMAGE_UNITS]) + src1.index * sizeof(Texture);
diff --git a/src/Shader/VertexProgram.hpp b/src/Shader/VertexProgram.hpp
index c42ab71..0462ab7 100644
--- a/src/Shader/VertexProgram.hpp
+++ b/src/Shader/VertexProgram.hpp
@@ -115,6 +115,7 @@
void TEXELFETCHOFFSET(Vector4f &dst, Vector4f &src, const Src&, Vector4f &offset, Float4 &lod);
void TEXGRAD(Vector4f &dst, Vector4f &src, const Src&, Vector4f &dsx, Vector4f &dsy);
void TEXGRADOFFSET(Vector4f &dst, Vector4f &src, const Src&, Vector4f &dsx, Vector4f &dsy, Vector4f &offset);
+ void TEXRECT(Vector4f &dst, Vector4f &src0, const Src &src1);
void TEXSIZE(Vector4f &dst, Float4 &lod, const Src&);
Vector4f sampleTexture(const Src &s, Vector4f &uvwq, Float4 &lod, Vector4f &dsx, Vector4f &dsy, Vector4f &offset, SamplerFunction function);