Commit 553726a4 by Mohan Maiya Committed by Commit Bot

Vulkan: Add OES_shader_multisample_interpolation extension

Addition of 'sample' qualifier keyword and 'interplateAt*' fragment shader builtin functions with autogen Bug: angleproject:3589 Change-Id: If358eb371fbcefffa715c8da4ba5e96eefaf6f52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2477904 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent d591ddff
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
// Version number for shader translation API. // Version number for shader translation API.
// It is incremented every time the API changes. // It is incremented every time the API changes.
#define ANGLE_SH_VERSION 234 #define ANGLE_SH_VERSION 235
enum ShShaderSpec enum ShShaderSpec
{ {
...@@ -406,6 +406,7 @@ struct ShBuiltInResources ...@@ -406,6 +406,7 @@ struct ShBuiltInResources
int OES_texture_cube_map_array; int OES_texture_cube_map_array;
int EXT_texture_cube_map_array; int EXT_texture_cube_map_array;
int EXT_shadow_samplers; int EXT_shadow_samplers;
int OES_shader_multisample_interpolation;
// Set to 1 to enable replacing GL_EXT_draw_buffers #extension directives // Set to 1 to enable replacing GL_EXT_draw_buffers #extension directives
// with GL_NV_draw_buffers in ESSL output. This flag can be used to emulate // with GL_NV_draw_buffers in ESSL output. This flag can be used to emulate
......
...@@ -4,15 +4,15 @@ ...@@ -4,15 +4,15 @@
"src/compiler/translator/generate_parser.py": "src/compiler/translator/generate_parser.py":
"566178ecdfae3a29803b3687fc518ebb", "566178ecdfae3a29803b3687fc518ebb",
"src/compiler/translator/glslang.l": "src/compiler/translator/glslang.l":
"27b1e8d59a04bbaec10fac5688a67602", "d0119d698e056a454a4414a254324df4",
"src/compiler/translator/glslang.y": "src/compiler/translator/glslang.y":
"1619aa1587a5fae94df9d143af732b77", "d00fad5170eb80f9d420d126eb0d311c",
"src/compiler/translator/glslang_lex_autogen.cpp": "src/compiler/translator/glslang_lex_autogen.cpp":
"ca9edf3f6882bdf9ac60dab16e8fb994", "6e265988e6f6afe3ff984a07ce3caf16",
"src/compiler/translator/glslang_tab_autogen.cpp": "src/compiler/translator/glslang_tab_autogen.cpp":
"fc0ab4cb3179dc0d936ed9d56bb2dbd0", "3a39adeee3876580c27993da0555320a",
"src/compiler/translator/glslang_tab_autogen.h": "src/compiler/translator/glslang_tab_autogen.h":
"7be1b46407ec9671626ef3594bcec57e", "ed181c8ef2a71585f18b2015f5f1c098",
"tools/flex-bison/linux/bison.sha1": "tools/flex-bison/linux/bison.sha1":
"efa86001f00e7bcfdbe899dd15fc88e0", "efa86001f00e7bcfdbe899dd15fc88e0",
"tools/flex-bison/linux/flex.sha1": "tools/flex-bison/linux/flex.sha1":
......
{ {
"src/compiler/translator/ImmutableString_ESSL_autogen.cpp": "src/compiler/translator/ImmutableString_ESSL_autogen.cpp":
"a9a7d0620a2db1e80f8a370b523eeae5", "98168ea2a1d9bfa290c7e72e299955f8",
"src/compiler/translator/ImmutableString_autogen.cpp": "src/compiler/translator/ImmutableString_autogen.cpp":
"afe7aec06ab49afc91a1ba25db0a3bce", "663daecf68294fa141be288ceb7f75f0",
"src/compiler/translator/ParseContext_ESSL_autogen.h": "src/compiler/translator/ParseContext_ESSL_autogen.h":
"4da3f648f61218602aff76296103e0f2", "b33dad2b5b23cc4a48b0a8183c536c21",
"src/compiler/translator/ParseContext_complete_autogen.h": "src/compiler/translator/ParseContext_complete_autogen.h":
"272d913f6a057fe1ebce884a6bd2bb73", "6113be5f4ebd8789901ef48a611a1e03",
"src/compiler/translator/SymbolTable_ESSL_autogen.cpp": "src/compiler/translator/SymbolTable_ESSL_autogen.cpp":
"017b7c00d55b9ec4edf084e87847f1d9", "96a8712eba5ae5245af83b082cbd5219",
"src/compiler/translator/SymbolTable_autogen.cpp": "src/compiler/translator/SymbolTable_autogen.cpp":
"ef071b17834742f56397bc63d531bb5f", "51bdcd32bb37a2a1bbffa154f7427694",
"src/compiler/translator/SymbolTable_autogen.h": "src/compiler/translator/SymbolTable_autogen.h":
"2d8bed6ff5debc6546199a2add316a66", "2d8bed6ff5debc6546199a2add316a66",
"src/compiler/translator/builtin_function_declarations.txt": "src/compiler/translator/builtin_function_declarations.txt":
"dc84b6c5fc78d9da23204d72574dd682", "bd195be52e11bb993aa757acb3770b85",
"src/compiler/translator/builtin_variables.json": "src/compiler/translator/builtin_variables.json":
"98d347a6ed181eca3d89bfd73193d787", "98d347a6ed181eca3d89bfd73193d787",
"src/compiler/translator/gen_builtin_symbols.py": "src/compiler/translator/gen_builtin_symbols.py":
"a538e53475983ae9643afd5b36056347", "a538e53475983ae9643afd5b36056347",
"src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h": "src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h":
"fa72b4b824dd85feeda5f984866a017f", "ad4b5fafc78f98b2bf0ff1f0516d6f4b",
"src/compiler/translator/tree_util/BuiltIn_complete_autogen.h": "src/compiler/translator/tree_util/BuiltIn_complete_autogen.h":
"c3f43a7fafcf0bad43178be1a7da5d0f", "7429fd6b4be0c23aba95fbbc66a40ad9",
"src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp": "src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp":
"1f48b488c4e436833f5341ce1ad95f15", "ade4d08598c35df6eb3a67a9eb45bad8",
"src/tests/compiler_tests/ImmutableString_test_autogen.cpp": "src/tests/compiler_tests/ImmutableString_test_autogen.cpp":
"aeacada0c801b923edefe3a74fc16285" "424a9c61841fa9b5613fb94210272c30"
} }
\ No newline at end of file
...@@ -976,6 +976,7 @@ enum TQualifier ...@@ -976,6 +976,7 @@ enum TQualifier
EvqFlat, // Incomplete qualifier EvqFlat, // Incomplete qualifier
EvqNoPerspective, // Incomplete qualifier EvqNoPerspective, // Incomplete qualifier
EvqCentroid, // Incomplete qualifier EvqCentroid, // Incomplete qualifier
EvqSample,
EvqSmoothOut, EvqSmoothOut,
EvqFlatOut, EvqFlatOut,
EvqNoPerspectiveOut, EvqNoPerspectiveOut,
......
...@@ -13,8 +13,11 @@ ...@@ -13,8 +13,11 @@
#include <string.h> #include <string.h>
#define LIST_EXTENSIONS(OP) \ #define LIST_EXTENSIONS(OP) \
OP(ARB_texture_rectangle) \ OP(ANGLE_base_vertex_base_instance) \
OP(ANGLE_multi_draw) \
OP(ANGLE_texture_multisample) \ OP(ANGLE_texture_multisample) \
OP(APPLE_clip_distance) \
OP(ARB_texture_rectangle) \
OP(ARM_shader_framebuffer_fetch) \ OP(ARM_shader_framebuffer_fetch) \
OP(EXT_blend_func_extended) \ OP(EXT_blend_func_extended) \
OP(EXT_draw_buffers) \ OP(EXT_draw_buffers) \
...@@ -22,26 +25,24 @@ ...@@ -22,26 +25,24 @@
OP(EXT_geometry_shader) \ OP(EXT_geometry_shader) \
OP(EXT_gpu_shader5) \ OP(EXT_gpu_shader5) \
OP(EXT_shader_framebuffer_fetch) \ OP(EXT_shader_framebuffer_fetch) \
OP(EXT_shader_non_constant_global_initializers) \
OP(EXT_shader_texture_lod) \ OP(EXT_shader_texture_lod) \
OP(EXT_shadow_samplers) \
OP(EXT_texture_cube_map_array) \
OP(EXT_YUV_target) \ OP(EXT_YUV_target) \
OP(EXT_shader_non_constant_global_initializers) \
OP(NV_shader_noperspective_interpolation) \
OP(NV_EGL_stream_consumer_external) \ OP(NV_EGL_stream_consumer_external) \
OP(NV_shader_framebuffer_fetch) \ OP(NV_shader_framebuffer_fetch) \
OP(NV_shader_noperspective_interpolation) \
OP(OES_EGL_image_external) \ OP(OES_EGL_image_external) \
OP(OES_EGL_image_external_essl3) \ OP(OES_EGL_image_external_essl3) \
OP(OES_shader_multisample_interpolation) \
OP(OES_standard_derivatives) \ OP(OES_standard_derivatives) \
OP(OES_texture_storage_multisample_2d_array) \
OP(OES_texture_3D) \ OP(OES_texture_3D) \
OP(OES_texture_cube_map_array) \
OP(OES_texture_storage_multisample_2d_array) \
OP(OVR_multiview) \ OP(OVR_multiview) \
OP(OVR_multiview2) \ OP(OVR_multiview2) \
OP(ANGLE_multi_draw) \ OP(WEBGL_video_texture)
OP(ANGLE_base_vertex_base_instance) \
OP(WEBGL_video_texture) \
OP(APPLE_clip_distance) \
OP(OES_texture_cube_map_array) \
OP(EXT_texture_cube_map_array) \
OP(EXT_shadow_samplers)
namespace sh namespace sh
{ {
......
...@@ -19,8 +19,11 @@ enum class TExtension : uint8_t ...@@ -19,8 +19,11 @@ enum class TExtension : uint8_t
{ {
UNDEFINED, // Special value used to indicate no extension. UNDEFINED, // Special value used to indicate no extension.
ARB_texture_rectangle, ANGLE_base_vertex_base_instance,
ANGLE_multi_draw,
ANGLE_texture_multisample, ANGLE_texture_multisample,
APPLE_clip_distance,
ARB_texture_rectangle,
ARM_shader_framebuffer_fetch, ARM_shader_framebuffer_fetch,
EXT_blend_func_extended, EXT_blend_func_extended,
EXT_draw_buffers, EXT_draw_buffers,
...@@ -28,26 +31,24 @@ enum class TExtension : uint8_t ...@@ -28,26 +31,24 @@ enum class TExtension : uint8_t
EXT_geometry_shader, EXT_geometry_shader,
EXT_gpu_shader5, EXT_gpu_shader5,
EXT_shader_framebuffer_fetch, EXT_shader_framebuffer_fetch,
EXT_shader_non_constant_global_initializers,
EXT_shader_texture_lod, EXT_shader_texture_lod,
EXT_shadow_samplers,
EXT_texture_cube_map_array,
EXT_YUV_target, EXT_YUV_target,
EXT_shader_non_constant_global_initializers,
NV_EGL_stream_consumer_external, NV_EGL_stream_consumer_external,
NV_shader_framebuffer_fetch, NV_shader_framebuffer_fetch,
NV_shader_noperspective_interpolation, NV_shader_noperspective_interpolation,
OES_EGL_image_external, OES_EGL_image_external,
OES_EGL_image_external_essl3, OES_EGL_image_external_essl3,
OES_shader_multisample_interpolation,
OES_standard_derivatives, OES_standard_derivatives,
OES_texture_storage_multisample_2d_array,
OES_texture_3D, OES_texture_3D,
OES_texture_cube_map_array,
OES_texture_storage_multisample_2d_array,
OVR_multiview, OVR_multiview,
OVR_multiview2, OVR_multiview2,
ANGLE_multi_draw,
ANGLE_base_vertex_base_instance,
WEBGL_video_texture, WEBGL_video_texture,
APPLE_clip_distance,
OES_texture_cube_map_array,
EXT_texture_cube_map_array,
EXT_shadow_samplers,
}; };
enum TBehavior : uint8_t enum TBehavior : uint8_t
......
...@@ -21,67 +21,72 @@ namespace BuiltInGroup ...@@ -21,67 +21,72 @@ namespace BuiltInGroup
bool isTextureOffsetNoBias(const TFunction *func) bool isTextureOffsetNoBias(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3098 && id <= 3167; return id >= 3110 && id <= 3179;
} }
bool isTextureOffsetBias(const TFunction *func) bool isTextureOffsetBias(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3168 && id <= 3187; return id >= 3180 && id <= 3199;
} }
bool isTextureGatherOffsetsComp(const TFunction *func) bool isTextureGatherOffsetsComp(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3225 && id <= 3237; return id >= 3237 && id <= 3249;
} }
bool isTextureGatherOffsetsNoComp(const TFunction *func) bool isTextureGatherOffsetsNoComp(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3238 && id <= 3253; return id >= 3250 && id <= 3265;
} }
bool isTextureGatherOffsets(const TFunction *func) bool isTextureGatherOffsets(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3225 && id <= 3253; return id >= 3237 && id <= 3265;
} }
bool isTextureGatherOffsetComp(const TFunction *func) bool isTextureGatherOffsetComp(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3254 && id <= 3259; return id >= 3266 && id <= 3271;
} }
bool isTextureGatherOffsetNoComp(const TFunction *func) bool isTextureGatherOffsetNoComp(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3260 && id <= 3267; return id >= 3272 && id <= 3279;
} }
bool isTextureGatherOffset(const TFunction *func) bool isTextureGatherOffset(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3254 && id <= 3267; return id >= 3266 && id <= 3279;
} }
bool isTextureGather(const TFunction *func) bool isTextureGather(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3201 && id <= 3267; return id >= 3213 && id <= 3279;
}
bool isInterpolationFS(const TFunction *func)
{
int id = func->uniqueId().get();
return id >= 3292 && id <= 3315;
} }
bool isAtomicMemory(const TFunction *func) bool isAtomicMemory(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3284 && id <= 3301; return id >= 3320 && id <= 3337;
} }
bool isImageLoad(const TFunction *func) bool isImageLoad(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3332 && id <= 3346; return id >= 3368 && id <= 3382;
} }
bool isImageStore(const TFunction *func) bool isImageStore(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3347 && id <= 3361; return id >= 3383 && id <= 3397;
} }
bool isImage(const TFunction *func) bool isImage(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 3302 && id <= 3361; return id >= 3338 && id <= 3397;
} }
} // namespace BuiltInGroup } // namespace BuiltInGroup
......
...@@ -63,25 +63,30 @@ bool isTextureGather(const TFunction *func) ...@@ -63,25 +63,30 @@ bool isTextureGather(const TFunction *func)
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 1327 && id <= 1414; return id >= 1327 && id <= 1414;
} }
bool isInterpolationFS(const TFunction *func)
{
int id = func->uniqueId().get();
return id >= 1451 && id <= 1474;
}
bool isAtomicMemory(const TFunction *func) bool isAtomicMemory(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 1476 && id <= 1493; return id >= 1488 && id <= 1505;
} }
bool isImageLoad(const TFunction *func) bool isImageLoad(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 2130 && id <= 2162; return id >= 2142 && id <= 2174;
} }
bool isImageStore(const TFunction *func) bool isImageStore(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 2163 && id <= 2195; return id >= 2175 && id <= 2207;
} }
bool isImage(const TFunction *func) bool isImage(const TFunction *func)
{ {
int id = func->uniqueId().get(); int id = func->uniqueId().get();
return id >= 1494 && id <= 2195; return id >= 1506 && id <= 2207;
} }
} // namespace BuiltInGroup } // namespace BuiltInGroup
......
...@@ -179,6 +179,7 @@ void InitBuiltInResources(ShBuiltInResources *resources) ...@@ -179,6 +179,7 @@ void InitBuiltInResources(ShBuiltInResources *resources)
resources->OES_texture_cube_map_array = 0; resources->OES_texture_cube_map_array = 0;
resources->EXT_texture_cube_map_array = 0; resources->EXT_texture_cube_map_array = 0;
resources->EXT_shadow_samplers = 0; resources->EXT_shadow_samplers = 0;
resources->OES_shader_multisample_interpolation = 0;
resources->NV_draw_buffers = 0; resources->NV_draw_buffers = 0;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -961,8 +961,21 @@ GROUP BEGIN DerivativesFS {"shader_type": "FRAGMENT"} ...@@ -961,8 +961,21 @@ GROUP BEGIN DerivativesFS {"shader_type": "FRAGMENT"}
genType fwidthCoarse(genType); genType fwidthCoarse(genType);
GROUP END DerivativesFS GROUP END DerivativesFS
GROUP BEGIN InterpolationFS {"shader_type": "FRAGMENT"} GROUP BEGIN InterpolationFS {"queryFunction": true, "shader_type": "FRAGMENT"}
DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS", "op": "CallBuiltInFunction"} DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS","glsl_level": "GLSL4_BUILTINS", "op": "CallBuiltInFunction"}
float interpolateAtCentroid(float);
vec2 interpolateAtCentroid(vec2);
vec3 interpolateAtCentroid(vec3);
vec4 interpolateAtCentroid(vec4);
float interpolateAtSample(float, int);
vec2 interpolateAtSample(vec2, int);
vec3 interpolateAtSample(vec3, int);
vec4 interpolateAtSample(vec4, int);
float interpolateAtOffset(float, vec2);
vec2 interpolateAtOffset(vec2, vec2);
vec3 interpolateAtOffset(vec3, vec2);
vec4 interpolateAtOffset(vec4, vec2);
DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "op": "CallBuiltInFunction", "essl_extension": "OES_shader_multisample_interpolation", "suffix": "Ext"}
float interpolateAtCentroid(float); float interpolateAtCentroid(float);
vec2 interpolateAtCentroid(vec2); vec2 interpolateAtCentroid(vec2);
vec3 interpolateAtCentroid(vec3); vec3 interpolateAtCentroid(vec3);
......
...@@ -107,6 +107,7 @@ static int ES3_extension(TParseContext *context, TExtension extension, int token ...@@ -107,6 +107,7 @@ static int ES3_extension(TParseContext *context, TExtension extension, int token
static int ES3_reserved_ES3_1_extension_ES3_2_keyword(TParseContext *context, TExtension extension, int token); static int ES3_reserved_ES3_1_extension_ES3_2_keyword(TParseContext *context, TExtension extension, int token);
static int ES3_reserved_ES3_extension(TParseContext *context, TExtension extension, int token); static int ES3_reserved_ES3_extension(TParseContext *context, TExtension extension, int token);
static int ES3_reserved_ES3_extension_ES3_1_keyword(TParseContext *context, TExtension extension, int token); static int ES3_reserved_ES3_extension_ES3_1_keyword(TParseContext *context, TExtension extension, int token);
static int ES3_reserved_ES3_extension_ES3_2_keyword(TParseContext *context, TExtension extension, int token);
static int ES3_1_reserved_ES3_1_extension_ES3_2_keyword(TParseContext *context, TExtension extension, int token); static int ES3_1_reserved_ES3_1_extension_ES3_2_keyword(TParseContext *context, TExtension extension, int token);
static int ES3_1_reserved_ES3_1_extension_ES3_2_keyword_2(TParseContext *context, TExtension extension1, TExtension extension2, int token1, int token2); static int ES3_1_reserved_ES3_1_extension_ES3_2_keyword_2(TParseContext *context, TExtension extension1, TExtension extension2, int token1, int token2);
static int WEBGL_video_texture_extension(TParseContext *context, int token); static int WEBGL_video_texture_extension(TParseContext *context, int token);
...@@ -267,13 +268,12 @@ O [0-7] ...@@ -267,13 +268,12 @@ O [0-7]
"restrict" { return ES3_reserved_ES3_1_keyword(context, RESTRICT); } "restrict" { return ES3_reserved_ES3_1_keyword(context, RESTRICT); }
"volatile" { return ES2_reserved_ES3_1_keyword(context, VOLATILE); } "volatile" { return ES2_reserved_ES3_1_keyword(context, VOLATILE); }
"atomic_uint" { return ES3_reserved_ES3_1_keyword(context, ATOMICUINT); } "atomic_uint" { return ES3_reserved_ES3_1_keyword(context, ATOMICUINT); }
"sample" { return ES3_reserved_ES3_extension_ES3_2_keyword(context, TExtension::OES_shader_multisample_interpolation, SAMPLE); }
"precise" { return ES3_1_reserved_ES3_1_extension_ES3_2_keyword(context, TExtension::EXT_gpu_shader5, PRECISE); } "precise" { return ES3_1_reserved_ES3_1_extension_ES3_2_keyword(context, TExtension::EXT_gpu_shader5, PRECISE); }
/* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */ /* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */
"resource" | "resource" |
"patch" | "patch" |
"sample" |
"subroutine" | "subroutine" |
"common" | "common" |
"partition" | "partition" |
...@@ -698,6 +698,26 @@ int ES3_reserved_ES3_extension_ES3_1_keyword(TParseContext *context, TExtension ...@@ -698,6 +698,26 @@ int ES3_reserved_ES3_extension_ES3_1_keyword(TParseContext *context, TExtension
return check_type(yyscanner); return check_type(yyscanner);
} }
int ES3_reserved_ES3_extension_ES3_2_keyword(TParseContext *context, TExtension extension, int token)
{
struct yyguts_t* yyg = (struct yyguts_t*) context->getScanner();
yyscan_t yyscanner = (yyscan_t) context->getScanner();
// A keyword in GLSL ES 3.00 with enabled extension or in GLSL ES 3.20
if (is_extension_enabled_or_is_core(context, 300, extension, 320))
{
return token;
}
if(context->getShaderVersion() == 300 ||context->getShaderVersion() == 310)
{
return reserved_word(yyscanner);
}
yylval->lex.string = AllocatePoolCharArray(yytext, yyleng);
return check_type(yyscanner);
}
static int ES3_1_reserved_ES3_1_extension_ES3_2_keyword(TParseContext *context, TExtension extension, int token) static int ES3_1_reserved_ES3_1_extension_ES3_2_keyword(TParseContext *context, TExtension extension, int token)
{ {
struct yyguts_t* yyg = (struct yyguts_t*) context->getScanner(); struct yyguts_t* yyg = (struct yyguts_t*) context->getScanner();
......
...@@ -164,7 +164,7 @@ extern void yyerror(YYLTYPE* yylloc, TParseContext* context, void *scanner, cons ...@@ -164,7 +164,7 @@ extern void yyerror(YYLTYPE* yylloc, TParseContext* context, void *scanner, cons
%token <lex> BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 VEC2 VEC3 VEC4 UVEC2 UVEC3 UVEC4 %token <lex> BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 VEC2 VEC3 VEC4 UVEC2 UVEC3 UVEC4
%token <lex> MATRIX2 MATRIX3 MATRIX4 IN_QUAL OUT_QUAL INOUT_QUAL UNIFORM BUFFER VARYING %token <lex> MATRIX2 MATRIX3 MATRIX4 IN_QUAL OUT_QUAL INOUT_QUAL UNIFORM BUFFER VARYING
%token <lex> MATRIX2x3 MATRIX3x2 MATRIX2x4 MATRIX4x2 MATRIX3x4 MATRIX4x3 %token <lex> MATRIX2x3 MATRIX3x2 MATRIX2x4 MATRIX4x2 MATRIX3x4 MATRIX4x3
%token <lex> CENTROID FLAT SMOOTH NOPERSPECTIVE %token <lex> SAMPLE CENTROID FLAT SMOOTH NOPERSPECTIVE
%token <lex> READONLY WRITEONLY COHERENT RESTRICT VOLATILE SHARED %token <lex> READONLY WRITEONLY COHERENT RESTRICT VOLATILE SHARED
%token <lex> STRUCT VOID_TYPE WHILE %token <lex> STRUCT VOID_TYPE WHILE
%token <lex> SAMPLER2D SAMPLERCUBE SAMPLER_EXTERNAL_OES SAMPLER2DRECT SAMPLER2DARRAY %token <lex> SAMPLER2D SAMPLERCUBE SAMPLER_EXTERNAL_OES SAMPLER2DRECT SAMPLER2DARRAY
...@@ -891,6 +891,10 @@ storage_qualifier ...@@ -891,6 +891,10 @@ storage_qualifier
COMPUTE_ONLY("shared", @1); COMPUTE_ONLY("shared", @1);
$$ = context->parseGlobalStorageQualifier(EvqShared, @1); $$ = context->parseGlobalStorageQualifier(EvqShared, @1);
} }
| SAMPLE {
ES3_OR_NEWER("sample", @1, "storage qualifier");
$$ = new TStorageQualifierWrapper(EvqSample, @1);
}
; ;
type_specifier type_specifier
......
...@@ -452,19 +452,19 @@ static const flex_int16_t yy_accept[938] = { ...@@ -452,19 +452,19 @@ static const flex_int16_t yy_accept[938] = {
193, 180, 181, 182, 193, 35, 193, 172, 29, 183, 184, 185, 2, 177, 178, 179, 193, 193, 193, 193, 180, 181, 182, 193, 35, 193, 172, 29, 183, 184, 185, 2, 177, 178, 179, 193, 193, 193,
27, 175, 193, 193, 193, 27, 175, 193, 193, 193,
193, 193, 53, 54, 55, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 121, 193, 193, 193, 193, 53, 54, 55, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 122, 193, 193,
193, 193, 193, 193, 193, 193, 169, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 155, 193, 193, 193, 193, 193, 193, 169, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 155,
193, 193, 192, 59, 60, 61, 193, 193, 15, 193, 193, 193, 126, 193, 193, 9, 193, 193, 124, 193, 193, 192, 59, 60, 61, 193, 193, 15, 193, 193, 193, 126, 193, 193, 9, 193, 193, 124,
193, 193, 193, 170, 165, 127, 193, 193, 193, 193, 193, 193, 161, 193, 193, 193, 193, 193, 93, 193, 193, 193, 170, 165, 127, 193, 193, 193, 193, 193, 193, 161, 193, 193, 193, 193, 193, 93,
41, 44, 46, 45, 42, 48, 47, 49, 43, 193, 193, 193, 193, 176, 152, 193, 193, 163, 193, 41, 44, 46, 45, 42, 48, 47, 49, 43, 193, 193, 193, 193, 176, 152, 193, 193, 163, 193,
193, 193, 37, 122, 28, 193, 193, 37, 119, 28,
189, 23, 164, 92, 193, 174, 18, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 189, 23, 164, 92, 193, 174, 18, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
193, 193, 193, 193, 20, 36, 193, 193, 193, 193, 193, 193, 128, 98, 104, 193, 193, 193, 193, 193, 193, 193, 193, 20, 36, 193, 193, 193, 193, 193, 193, 128, 98, 104, 193, 193, 193, 193,
193, 95, 97, 3, 193, 193, 193, 193, 119, 193, 193, 193, 193, 193, 193, 193, 157, 193, 193, 193, 95, 97, 3, 193, 193, 193, 193, 120, 193, 193, 193, 193, 193, 193, 193, 157, 193, 193,
193, 193, 193, 8, 193, 193, 10, 193, 193, 193, 193, 193, 193, 21, 115, 12, 166, 129, 99, 193, 193, 193, 8, 193, 193, 10, 193, 193, 193, 193, 193, 193, 21, 115, 12, 166, 129, 99,
106, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 162, 193, 193, 193, 113, 106, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 162, 193, 193, 193, 113,
120, 116, 193, 193, 193, 121, 116, 193, 193, 193,
193, 193, 193, 193, 193, 158, 130, 100, 105, 193, 193, 173, 193, 117, 193, 193, 193, 193, 6, 193, 193, 193, 193, 193, 158, 130, 100, 105, 193, 193, 173, 193, 117, 193, 193, 193, 193, 6,
193, 193, 193, 193, 193, 193, 193, 193, 193, 109, 167, 1, 193, 193, 193, 193, 193, 193, 191, 193, 193, 193, 193, 193, 193, 193, 193, 193, 109, 167, 1, 193, 193, 193, 193, 193, 193, 191,
...@@ -935,6 +935,9 @@ static int ES3_reserved_ES3_extension(TParseContext *context, TExtension extensi ...@@ -935,6 +935,9 @@ static int ES3_reserved_ES3_extension(TParseContext *context, TExtension extensi
static int ES3_reserved_ES3_extension_ES3_1_keyword(TParseContext *context, static int ES3_reserved_ES3_extension_ES3_1_keyword(TParseContext *context,
TExtension extension, TExtension extension,
int token); int token);
static int ES3_reserved_ES3_extension_ES3_2_keyword(TParseContext *context,
TExtension extension,
int token);
static int ES3_1_reserved_ES3_1_extension_ES3_2_keyword(TParseContext *context, static int ES3_1_reserved_ES3_1_extension_ES3_2_keyword(TParseContext *context,
TExtension extension, TExtension extension,
int token); int token);
...@@ -1746,12 +1749,18 @@ YY_DECL ...@@ -1746,12 +1749,18 @@ YY_DECL
case 119: case 119:
YY_RULE_SETUP YY_RULE_SETUP
{ {
return ES3_reserved_ES3_extension_ES3_2_keyword(
context, TExtension::OES_shader_multisample_interpolation, SAMPLE);
}
YY_BREAK
case 120:
YY_RULE_SETUP
{
return ES3_1_reserved_ES3_1_extension_ES3_2_keyword( return ES3_1_reserved_ES3_1_extension_ES3_2_keyword(
context, TExtension::EXT_gpu_shader5, PRECISE); context, TExtension::EXT_gpu_shader5, PRECISE);
} }
YY_BREAK YY_BREAK
/* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */ /* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */
case 120:
case 121: case 121:
case 122: case 122:
case 123: case 123:
...@@ -3483,6 +3492,28 @@ int ES3_reserved_ES3_extension_ES3_1_keyword(TParseContext *context, ...@@ -3483,6 +3492,28 @@ int ES3_reserved_ES3_extension_ES3_1_keyword(TParseContext *context,
return check_type(yyscanner); return check_type(yyscanner);
} }
int ES3_reserved_ES3_extension_ES3_2_keyword(TParseContext *context,
TExtension extension,
int token)
{
struct yyguts_t *yyg = (struct yyguts_t *)context->getScanner();
yyscan_t yyscanner = (yyscan_t)context->getScanner();
// A keyword in GLSL ES 3.00 with enabled extension or in GLSL ES 3.20
if (is_extension_enabled_or_is_core(context, 300, extension, 320))
{
return token;
}
if (context->getShaderVersion() == 300 || context->getShaderVersion() == 310)
{
return reserved_word(yyscanner);
}
yylval->lex.string = AllocatePoolCharArray(yytext, yyleng);
return check_type(yyscanner);
}
static int ES3_1_reserved_ES3_1_extension_ES3_2_keyword(TParseContext *context, static int ES3_1_reserved_ES3_1_extension_ES3_2_keyword(TParseContext *context,
TExtension extension, TExtension extension,
int token) int token)
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -104,127 +104,128 @@ enum yytokentype ...@@ -104,127 +104,128 @@ enum yytokentype
MATRIX4x2 = 305, MATRIX4x2 = 305,
MATRIX3x4 = 306, MATRIX3x4 = 306,
MATRIX4x3 = 307, MATRIX4x3 = 307,
CENTROID = 308, SAMPLE = 308,
FLAT = 309, CENTROID = 309,
SMOOTH = 310, FLAT = 310,
NOPERSPECTIVE = 311, SMOOTH = 311,
READONLY = 312, NOPERSPECTIVE = 312,
WRITEONLY = 313, READONLY = 313,
COHERENT = 314, WRITEONLY = 314,
RESTRICT = 315, COHERENT = 315,
VOLATILE = 316, RESTRICT = 316,
SHARED = 317, VOLATILE = 317,
STRUCT = 318, SHARED = 318,
VOID_TYPE = 319, STRUCT = 319,
WHILE = 320, VOID_TYPE = 320,
SAMPLER2D = 321, WHILE = 321,
SAMPLERCUBE = 322, SAMPLER2D = 322,
SAMPLER_EXTERNAL_OES = 323, SAMPLERCUBE = 323,
SAMPLER2DRECT = 324, SAMPLER_EXTERNAL_OES = 324,
SAMPLER2DARRAY = 325, SAMPLER2DRECT = 325,
ISAMPLER2D = 326, SAMPLER2DARRAY = 326,
ISAMPLER3D = 327, ISAMPLER2D = 327,
ISAMPLERCUBE = 328, ISAMPLER3D = 328,
ISAMPLER2DARRAY = 329, ISAMPLERCUBE = 329,
USAMPLER2D = 330, ISAMPLER2DARRAY = 330,
USAMPLER3D = 331, USAMPLER2D = 331,
USAMPLERCUBE = 332, USAMPLER3D = 332,
USAMPLER2DARRAY = 333, USAMPLERCUBE = 333,
SAMPLER2DMS = 334, USAMPLER2DARRAY = 334,
ISAMPLER2DMS = 335, SAMPLER2DMS = 335,
USAMPLER2DMS = 336, ISAMPLER2DMS = 336,
SAMPLER2DMSARRAY = 337, USAMPLER2DMS = 337,
ISAMPLER2DMSARRAY = 338, SAMPLER2DMSARRAY = 338,
USAMPLER2DMSARRAY = 339, ISAMPLER2DMSARRAY = 339,
SAMPLER3D = 340, USAMPLER2DMSARRAY = 340,
SAMPLER3DRECT = 341, SAMPLER3D = 341,
SAMPLER2DSHADOW = 342, SAMPLER3DRECT = 342,
SAMPLERCUBESHADOW = 343, SAMPLER2DSHADOW = 343,
SAMPLER2DARRAYSHADOW = 344, SAMPLERCUBESHADOW = 344,
SAMPLERVIDEOWEBGL = 345, SAMPLER2DARRAYSHADOW = 345,
SAMPLERCUBEARRAYOES = 346, SAMPLERVIDEOWEBGL = 346,
SAMPLERCUBEARRAYSHADOWOES = 347, SAMPLERCUBEARRAYOES = 347,
ISAMPLERCUBEARRAYOES = 348, SAMPLERCUBEARRAYSHADOWOES = 348,
USAMPLERCUBEARRAYOES = 349, ISAMPLERCUBEARRAYOES = 349,
SAMPLERCUBEARRAYEXT = 350, USAMPLERCUBEARRAYOES = 350,
SAMPLERCUBEARRAYSHADOWEXT = 351, SAMPLERCUBEARRAYEXT = 351,
ISAMPLERCUBEARRAYEXT = 352, SAMPLERCUBEARRAYSHADOWEXT = 352,
USAMPLERCUBEARRAYEXT = 353, ISAMPLERCUBEARRAYEXT = 353,
SAMPLEREXTERNAL2DY2YEXT = 354, USAMPLERCUBEARRAYEXT = 354,
IMAGE2D = 355, SAMPLEREXTERNAL2DY2YEXT = 355,
IIMAGE2D = 356, IMAGE2D = 356,
UIMAGE2D = 357, IIMAGE2D = 357,
IMAGE3D = 358, UIMAGE2D = 358,
IIMAGE3D = 359, IMAGE3D = 359,
UIMAGE3D = 360, IIMAGE3D = 360,
IMAGE2DARRAY = 361, UIMAGE3D = 361,
IIMAGE2DARRAY = 362, IMAGE2DARRAY = 362,
UIMAGE2DARRAY = 363, IIMAGE2DARRAY = 363,
IMAGECUBE = 364, UIMAGE2DARRAY = 364,
IIMAGECUBE = 365, IMAGECUBE = 365,
UIMAGECUBE = 366, IIMAGECUBE = 366,
IMAGECUBEARRAYOES = 367, UIMAGECUBE = 367,
IIMAGECUBEARRAYOES = 368, IMAGECUBEARRAYOES = 368,
UIMAGECUBEARRAYOES = 369, IIMAGECUBEARRAYOES = 369,
IMAGECUBEARRAYEXT = 370, UIMAGECUBEARRAYOES = 370,
IIMAGECUBEARRAYEXT = 371, IMAGECUBEARRAYEXT = 371,
UIMAGECUBEARRAYEXT = 372, IIMAGECUBEARRAYEXT = 372,
ATOMICUINT = 373, UIMAGECUBEARRAYEXT = 373,
LAYOUT = 374, ATOMICUINT = 374,
YUVCSCSTANDARDEXT = 375, LAYOUT = 375,
YUVCSCSTANDARDEXTCONSTANT = 376, YUVCSCSTANDARDEXT = 376,
IDENTIFIER = 377, YUVCSCSTANDARDEXTCONSTANT = 377,
TYPE_NAME = 378, IDENTIFIER = 378,
FLOATCONSTANT = 379, TYPE_NAME = 379,
INTCONSTANT = 380, FLOATCONSTANT = 380,
UINTCONSTANT = 381, INTCONSTANT = 381,
BOOLCONSTANT = 382, UINTCONSTANT = 382,
FIELD_SELECTION = 383, BOOLCONSTANT = 383,
LEFT_OP = 384, FIELD_SELECTION = 384,
RIGHT_OP = 385, LEFT_OP = 385,
INC_OP = 386, RIGHT_OP = 386,
DEC_OP = 387, INC_OP = 387,
LE_OP = 388, DEC_OP = 388,
GE_OP = 389, LE_OP = 389,
EQ_OP = 390, GE_OP = 390,
NE_OP = 391, EQ_OP = 391,
AND_OP = 392, NE_OP = 392,
OR_OP = 393, AND_OP = 393,
XOR_OP = 394, OR_OP = 394,
MUL_ASSIGN = 395, XOR_OP = 395,
DIV_ASSIGN = 396, MUL_ASSIGN = 396,
ADD_ASSIGN = 397, DIV_ASSIGN = 397,
MOD_ASSIGN = 398, ADD_ASSIGN = 398,
LEFT_ASSIGN = 399, MOD_ASSIGN = 399,
RIGHT_ASSIGN = 400, LEFT_ASSIGN = 400,
AND_ASSIGN = 401, RIGHT_ASSIGN = 401,
XOR_ASSIGN = 402, AND_ASSIGN = 402,
OR_ASSIGN = 403, XOR_ASSIGN = 403,
SUB_ASSIGN = 404, OR_ASSIGN = 404,
LEFT_PAREN = 405, SUB_ASSIGN = 405,
RIGHT_PAREN = 406, LEFT_PAREN = 406,
LEFT_BRACKET = 407, RIGHT_PAREN = 407,
RIGHT_BRACKET = 408, LEFT_BRACKET = 408,
LEFT_BRACE = 409, RIGHT_BRACKET = 409,
RIGHT_BRACE = 410, LEFT_BRACE = 410,
DOT = 411, RIGHT_BRACE = 411,
COMMA = 412, DOT = 412,
COLON = 413, COMMA = 413,
EQUAL = 414, COLON = 414,
SEMICOLON = 415, EQUAL = 415,
BANG = 416, SEMICOLON = 416,
DASH = 417, BANG = 417,
TILDE = 418, DASH = 418,
PLUS = 419, TILDE = 419,
STAR = 420, PLUS = 420,
SLASH = 421, STAR = 421,
PERCENT = 422, SLASH = 422,
LEFT_ANGLE = 423, PERCENT = 423,
RIGHT_ANGLE = 424, LEFT_ANGLE = 424,
VERTICAL_BAR = 425, RIGHT_ANGLE = 425,
CARET = 426, VERTICAL_BAR = 426,
AMPERSAND = 427, CARET = 427,
QUESTION = 428 AMPERSAND = 428,
QUESTION = 429
}; };
#endif #endif
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment