Commit 4021932f by JiangYizhou Committed by Commit Bot

translator: Add ES3.1 multisample texture support.

Implement shader objects, [iu]sampler2DMS, textureSize(gsampler2DMS). as well as texelFetch(gsampler2DMS,P,sample) for the glsl. BUG=angleproject:1590 TEST=angle_unittests TEST=angle_end2end_tests Change-Id: I781023f7bec34ad0264af69f34bb182b50bd1fbd Reviewed-on: https://chromium-review.googlesource.com/423175 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarOlli Etuaho <oetuaho@nvidia.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 80ab03c5
...@@ -429,6 +429,15 @@ void PrintVariable(const std::string &prefix, size_t index, const sh::ShaderVari ...@@ -429,6 +429,15 @@ void PrintVariable(const std::string &prefix, size_t index, const sh::ShaderVari
case GL_FLOAT_MAT3x4: typeName = "GL_FLOAT_MAT3x4"; break; case GL_FLOAT_MAT3x4: typeName = "GL_FLOAT_MAT3x4"; break;
case GL_FLOAT_MAT4x3: typeName = "GL_FLOAT_MAT4x3"; break; case GL_FLOAT_MAT4x3: typeName = "GL_FLOAT_MAT4x3"; break;
case GL_SAMPLER_2D: typeName = "GL_SAMPLER_2D"; break; case GL_SAMPLER_2D: typeName = "GL_SAMPLER_2D"; break;
case GL_SAMPLER_2D_MULTISAMPLE:
typeName = "GL_SAMPLER_2D_MULTISAMPLE";
break;
case GL_INT_SAMPLER_2D_MULTISAMPLE:
typeName = "GL_INT_SAMPLER_2D_MULTISAMPLE";
break;
case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:
typeName = "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE";
break;
case GL_SAMPLER_CUBE: typeName = "GL_SAMPLER_CUBE"; break; case GL_SAMPLER_CUBE: typeName = "GL_SAMPLER_CUBE"; break;
case GL_SAMPLER_EXTERNAL_OES: typeName = "GL_SAMPLER_EXTERNAL_OES"; break; case GL_SAMPLER_EXTERNAL_OES: typeName = "GL_SAMPLER_EXTERNAL_OES"; break;
default: typeName = "UNKNOWN"; break; default: typeName = "UNKNOWN"; break;
......
...@@ -128,14 +128,17 @@ GLenum VariableComponentType(GLenum type) ...@@ -128,14 +128,17 @@ GLenum VariableComponentType(GLenum type)
case GL_SAMPLER_CUBE: case GL_SAMPLER_CUBE:
case GL_SAMPLER_2D_ARRAY: case GL_SAMPLER_2D_ARRAY:
case GL_SAMPLER_EXTERNAL_OES: case GL_SAMPLER_EXTERNAL_OES:
case GL_SAMPLER_2D_MULTISAMPLE:
case GL_INT_SAMPLER_2D: case GL_INT_SAMPLER_2D:
case GL_INT_SAMPLER_3D: case GL_INT_SAMPLER_3D:
case GL_INT_SAMPLER_CUBE: case GL_INT_SAMPLER_CUBE:
case GL_INT_SAMPLER_2D_ARRAY: case GL_INT_SAMPLER_2D_ARRAY:
case GL_INT_SAMPLER_2D_MULTISAMPLE:
case GL_UNSIGNED_INT_SAMPLER_2D: case GL_UNSIGNED_INT_SAMPLER_2D:
case GL_UNSIGNED_INT_SAMPLER_3D: case GL_UNSIGNED_INT_SAMPLER_3D:
case GL_UNSIGNED_INT_SAMPLER_CUBE: case GL_UNSIGNED_INT_SAMPLER_CUBE:
case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:
case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:
case GL_SAMPLER_2D_SHADOW: case GL_SAMPLER_2D_SHADOW:
case GL_SAMPLER_CUBE_SHADOW: case GL_SAMPLER_CUBE_SHADOW:
case GL_SAMPLER_2D_ARRAY_SHADOW: case GL_SAMPLER_2D_ARRAY_SHADOW:
...@@ -236,14 +239,17 @@ int VariableRowCount(GLenum type) ...@@ -236,14 +239,17 @@ int VariableRowCount(GLenum type)
case GL_SAMPLER_2D_ARRAY: case GL_SAMPLER_2D_ARRAY:
case GL_SAMPLER_EXTERNAL_OES: case GL_SAMPLER_EXTERNAL_OES:
case GL_SAMPLER_2D_RECT_ARB: case GL_SAMPLER_2D_RECT_ARB:
case GL_SAMPLER_2D_MULTISAMPLE:
case GL_INT_SAMPLER_2D: case GL_INT_SAMPLER_2D:
case GL_INT_SAMPLER_3D: case GL_INT_SAMPLER_3D:
case GL_INT_SAMPLER_CUBE: case GL_INT_SAMPLER_CUBE:
case GL_INT_SAMPLER_2D_ARRAY: case GL_INT_SAMPLER_2D_ARRAY:
case GL_INT_SAMPLER_2D_MULTISAMPLE:
case GL_UNSIGNED_INT_SAMPLER_2D: case GL_UNSIGNED_INT_SAMPLER_2D:
case GL_UNSIGNED_INT_SAMPLER_3D: case GL_UNSIGNED_INT_SAMPLER_3D:
case GL_UNSIGNED_INT_SAMPLER_CUBE: case GL_UNSIGNED_INT_SAMPLER_CUBE:
case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:
case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:
case GL_SAMPLER_2D_SHADOW: case GL_SAMPLER_2D_SHADOW:
case GL_SAMPLER_CUBE_SHADOW: case GL_SAMPLER_CUBE_SHADOW:
case GL_SAMPLER_2D_ARRAY_SHADOW: case GL_SAMPLER_2D_ARRAY_SHADOW:
...@@ -294,16 +300,19 @@ int VariableColumnCount(GLenum type) ...@@ -294,16 +300,19 @@ int VariableColumnCount(GLenum type)
case GL_SAMPLER_3D: case GL_SAMPLER_3D:
case GL_SAMPLER_CUBE: case GL_SAMPLER_CUBE:
case GL_SAMPLER_2D_ARRAY: case GL_SAMPLER_2D_ARRAY:
case GL_SAMPLER_2D_MULTISAMPLE:
case GL_INT_SAMPLER_2D: case GL_INT_SAMPLER_2D:
case GL_INT_SAMPLER_3D: case GL_INT_SAMPLER_3D:
case GL_INT_SAMPLER_CUBE: case GL_INT_SAMPLER_CUBE:
case GL_INT_SAMPLER_2D_ARRAY: case GL_INT_SAMPLER_2D_ARRAY:
case GL_INT_SAMPLER_2D_MULTISAMPLE:
case GL_SAMPLER_EXTERNAL_OES: case GL_SAMPLER_EXTERNAL_OES:
case GL_SAMPLER_2D_RECT_ARB: case GL_SAMPLER_2D_RECT_ARB:
case GL_UNSIGNED_INT_SAMPLER_2D: case GL_UNSIGNED_INT_SAMPLER_2D:
case GL_UNSIGNED_INT_SAMPLER_3D: case GL_UNSIGNED_INT_SAMPLER_3D:
case GL_UNSIGNED_INT_SAMPLER_CUBE: case GL_UNSIGNED_INT_SAMPLER_CUBE:
case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:
case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:
case GL_SAMPLER_2D_SHADOW: case GL_SAMPLER_2D_SHADOW:
case GL_SAMPLER_CUBE_SHADOW: case GL_SAMPLER_CUBE_SHADOW:
case GL_SAMPLER_2D_ARRAY_SHADOW: case GL_SAMPLER_2D_ARRAY_SHADOW:
...@@ -348,14 +357,17 @@ bool IsSamplerType(GLenum type) ...@@ -348,14 +357,17 @@ bool IsSamplerType(GLenum type)
case GL_SAMPLER_CUBE: case GL_SAMPLER_CUBE:
case GL_SAMPLER_2D_ARRAY: case GL_SAMPLER_2D_ARRAY:
case GL_SAMPLER_EXTERNAL_OES: case GL_SAMPLER_EXTERNAL_OES:
case GL_SAMPLER_2D_MULTISAMPLE:
case GL_INT_SAMPLER_2D: case GL_INT_SAMPLER_2D:
case GL_INT_SAMPLER_3D: case GL_INT_SAMPLER_3D:
case GL_INT_SAMPLER_CUBE: case GL_INT_SAMPLER_CUBE:
case GL_INT_SAMPLER_2D_ARRAY: case GL_INT_SAMPLER_2D_ARRAY:
case GL_INT_SAMPLER_2D_MULTISAMPLE:
case GL_UNSIGNED_INT_SAMPLER_2D: case GL_UNSIGNED_INT_SAMPLER_2D:
case GL_UNSIGNED_INT_SAMPLER_3D: case GL_UNSIGNED_INT_SAMPLER_3D:
case GL_UNSIGNED_INT_SAMPLER_CUBE: case GL_UNSIGNED_INT_SAMPLER_CUBE:
case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:
case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:
case GL_SAMPLER_2D_SHADOW: case GL_SAMPLER_2D_SHADOW:
case GL_SAMPLER_CUBE_SHADOW: case GL_SAMPLER_CUBE_SHADOW:
case GL_SAMPLER_2D_ARRAY_SHADOW: case GL_SAMPLER_2D_ARRAY_SHADOW:
...@@ -395,6 +407,11 @@ GLenum SamplerTypeToTextureType(GLenum samplerType) ...@@ -395,6 +407,11 @@ GLenum SamplerTypeToTextureType(GLenum samplerType)
case GL_UNSIGNED_INT_SAMPLER_3D: case GL_UNSIGNED_INT_SAMPLER_3D:
return GL_TEXTURE_3D; return GL_TEXTURE_3D;
case GL_SAMPLER_2D_MULTISAMPLE:
case GL_INT_SAMPLER_2D_MULTISAMPLE:
case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:
return GL_TEXTURE_2D_MULTISAMPLE;
default: default:
UNREACHABLE(); UNREACHABLE();
return 0; return 0;
...@@ -605,15 +622,18 @@ int VariableSortOrder(GLenum type) ...@@ -605,15 +622,18 @@ int VariableSortOrder(GLenum type)
case GL_SAMPLER_EXTERNAL_OES: case GL_SAMPLER_EXTERNAL_OES:
case GL_SAMPLER_2D_RECT_ARB: case GL_SAMPLER_2D_RECT_ARB:
case GL_SAMPLER_2D_ARRAY: case GL_SAMPLER_2D_ARRAY:
case GL_SAMPLER_2D_MULTISAMPLE:
case GL_SAMPLER_3D: case GL_SAMPLER_3D:
case GL_INT_SAMPLER_2D: case GL_INT_SAMPLER_2D:
case GL_INT_SAMPLER_3D: case GL_INT_SAMPLER_3D:
case GL_INT_SAMPLER_CUBE: case GL_INT_SAMPLER_CUBE:
case GL_INT_SAMPLER_2D_ARRAY: case GL_INT_SAMPLER_2D_ARRAY:
case GL_INT_SAMPLER_2D_MULTISAMPLE:
case GL_UNSIGNED_INT_SAMPLER_2D: case GL_UNSIGNED_INT_SAMPLER_2D:
case GL_UNSIGNED_INT_SAMPLER_3D: case GL_UNSIGNED_INT_SAMPLER_3D:
case GL_UNSIGNED_INT_SAMPLER_CUBE: case GL_UNSIGNED_INT_SAMPLER_CUBE:
case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:
case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:
case GL_SAMPLER_2D_SHADOW: case GL_SAMPLER_2D_SHADOW:
case GL_SAMPLER_2D_ARRAY_SHADOW: case GL_SAMPLER_2D_ARRAY_SHADOW:
case GL_SAMPLER_CUBE_SHADOW: case GL_SAMPLER_CUBE_SHADOW:
......
...@@ -72,14 +72,17 @@ enum TBasicType ...@@ -72,14 +72,17 @@ enum TBasicType
EbtSampler2DArray, EbtSampler2DArray,
EbtSamplerExternalOES, // Only valid if OES_EGL_image_external exists. EbtSamplerExternalOES, // Only valid if OES_EGL_image_external exists.
EbtSampler2DRect, // Only valid if GL_ARB_texture_rectangle exists. EbtSampler2DRect, // Only valid if GL_ARB_texture_rectangle exists.
EbtSampler2DMS,
EbtISampler2D, EbtISampler2D,
EbtISampler3D, EbtISampler3D,
EbtISamplerCube, EbtISamplerCube,
EbtISampler2DArray, EbtISampler2DArray,
EbtISampler2DMS,
EbtUSampler2D, EbtUSampler2D,
EbtUSampler3D, EbtUSampler3D,
EbtUSamplerCube, EbtUSamplerCube,
EbtUSampler2DArray, EbtUSampler2DArray,
EbtUSampler2DMS,
EbtSampler2DShadow, EbtSampler2DShadow,
EbtSamplerCubeShadow, EbtSamplerCubeShadow,
EbtSampler2DArrayShadow, EbtSampler2DArrayShadow,
...@@ -89,6 +92,7 @@ enum TBasicType ...@@ -89,6 +92,7 @@ enum TBasicType
EbtGSamplerCube, // non type: represents samplerCube, isamplerCube, and usamplerCube EbtGSamplerCube, // non type: represents samplerCube, isamplerCube, and usamplerCube
EbtGSampler2DArray, // non type: represents sampler2DArray, isampler2DArray, and EbtGSampler2DArray, // non type: represents sampler2DArray, isampler2DArray, and
// usampler2DArray // usampler2DArray
EbtGSampler2DMS, // non type: represents sampler2DMS, isampler2DMS, and usampler2DMS
// images // images
EbtGuardImageBegin, EbtGuardImageBegin,
...@@ -206,10 +210,12 @@ inline bool IsIntegerSampler(TBasicType type) ...@@ -206,10 +210,12 @@ inline bool IsIntegerSampler(TBasicType type)
case EbtISampler3D: case EbtISampler3D:
case EbtISamplerCube: case EbtISamplerCube:
case EbtISampler2DArray: case EbtISampler2DArray:
case EbtISampler2DMS:
case EbtUSampler2D: case EbtUSampler2D:
case EbtUSampler3D: case EbtUSampler3D:
case EbtUSamplerCube: case EbtUSamplerCube:
case EbtUSampler2DArray: case EbtUSampler2DArray:
case EbtUSampler2DMS:
return true; return true;
case EbtSampler2D: case EbtSampler2D:
case EbtSampler3D: case EbtSampler3D:
...@@ -220,6 +226,7 @@ inline bool IsIntegerSampler(TBasicType type) ...@@ -220,6 +226,7 @@ inline bool IsIntegerSampler(TBasicType type)
case EbtSampler2DShadow: case EbtSampler2DShadow:
case EbtSamplerCubeShadow: case EbtSamplerCubeShadow:
case EbtSampler2DArrayShadow: case EbtSampler2DArrayShadow:
case EbtSampler2DMS:
return false; return false;
default: default:
assert(!IsSampler(type)); assert(!IsSampler(type));
...@@ -292,6 +299,9 @@ inline bool IsSampler2D(TBasicType type) ...@@ -292,6 +299,9 @@ inline bool IsSampler2D(TBasicType type)
case EbtSamplerExternalOES: case EbtSamplerExternalOES:
case EbtSampler2DShadow: case EbtSampler2DShadow:
case EbtSampler2DArrayShadow: case EbtSampler2DArrayShadow:
case EbtSampler2DMS:
case EbtISampler2DMS:
case EbtUSampler2DMS:
return true; return true;
case EbtSampler3D: case EbtSampler3D:
case EbtISampler3D: case EbtISampler3D:
...@@ -322,12 +332,15 @@ inline bool IsSamplerCube(TBasicType type) ...@@ -322,12 +332,15 @@ inline bool IsSamplerCube(TBasicType type)
case EbtSamplerExternalOES: case EbtSamplerExternalOES:
case EbtSampler2DRect: case EbtSampler2DRect:
case EbtSampler2DArray: case EbtSampler2DArray:
case EbtSampler2DMS:
case EbtISampler2D: case EbtISampler2D:
case EbtISampler3D: case EbtISampler3D:
case EbtISampler2DArray: case EbtISampler2DArray:
case EbtISampler2DMS:
case EbtUSampler2D: case EbtUSampler2D:
case EbtUSampler3D: case EbtUSampler3D:
case EbtUSampler2DArray: case EbtUSampler2DArray:
case EbtUSampler2DMS:
case EbtSampler2DShadow: case EbtSampler2DShadow:
case EbtSampler2DArrayShadow: case EbtSampler2DArrayShadow:
return false; return false;
...@@ -351,12 +364,15 @@ inline bool IsSampler3D(TBasicType type) ...@@ -351,12 +364,15 @@ inline bool IsSampler3D(TBasicType type)
case EbtSamplerExternalOES: case EbtSamplerExternalOES:
case EbtSampler2DRect: case EbtSampler2DRect:
case EbtSampler2DArray: case EbtSampler2DArray:
case EbtSampler2DMS:
case EbtISampler2D: case EbtISampler2D:
case EbtISamplerCube: case EbtISamplerCube:
case EbtISampler2DArray: case EbtISampler2DArray:
case EbtISampler2DMS:
case EbtUSampler2D: case EbtUSampler2D:
case EbtUSamplerCube: case EbtUSamplerCube:
case EbtUSampler2DArray: case EbtUSampler2DArray:
case EbtUSampler2DMS:
case EbtSampler2DShadow: case EbtSampler2DShadow:
case EbtSamplerCubeShadow: case EbtSamplerCubeShadow:
case EbtSampler2DArrayShadow: case EbtSampler2DArrayShadow:
...@@ -390,6 +406,9 @@ inline bool IsSamplerArray(TBasicType type) ...@@ -390,6 +406,9 @@ inline bool IsSamplerArray(TBasicType type)
case EbtSamplerCube: case EbtSamplerCube:
case EbtSampler2DShadow: case EbtSampler2DShadow:
case EbtSamplerCubeShadow: case EbtSamplerCubeShadow:
case EbtSampler2DMS:
case EbtISampler2DMS:
case EbtUSampler2DMS:
return false; return false;
default: default:
assert(!IsSampler(type)); assert(!IsSampler(type));
...@@ -410,16 +429,19 @@ inline bool IsShadowSampler(TBasicType type) ...@@ -410,16 +429,19 @@ inline bool IsShadowSampler(TBasicType type)
case EbtISampler3D: case EbtISampler3D:
case EbtISamplerCube: case EbtISamplerCube:
case EbtISampler2DArray: case EbtISampler2DArray:
case EbtISampler2DMS:
case EbtUSampler2D: case EbtUSampler2D:
case EbtUSampler3D: case EbtUSampler3D:
case EbtUSamplerCube: case EbtUSamplerCube:
case EbtUSampler2DArray: case EbtUSampler2DArray:
case EbtUSampler2DMS:
case EbtSampler2D: case EbtSampler2D:
case EbtSampler3D: case EbtSampler3D:
case EbtSamplerCube: case EbtSamplerCube:
case EbtSamplerExternalOES: case EbtSamplerExternalOES:
case EbtSampler2DRect: case EbtSampler2DRect:
case EbtSampler2DArray: case EbtSampler2DArray:
case EbtSampler2DMS:
return false; return false;
default: default:
assert(!IsSampler(type)); assert(!IsSampler(type));
......
...@@ -373,6 +373,7 @@ void InsertBuiltInFunctions(sh::GLenum type, ...@@ -373,6 +373,7 @@ void InsertBuiltInFunctions(sh::GLenum type,
const TType *gsamplerCube = TCache::getType(EbtGSamplerCube); const TType *gsamplerCube = TCache::getType(EbtGSamplerCube);
const TType *gsampler3D = TCache::getType(EbtGSampler3D); const TType *gsampler3D = TCache::getType(EbtGSampler3D);
const TType *gsampler2DArray = TCache::getType(EbtGSampler2DArray); const TType *gsampler2DArray = TCache::getType(EbtGSampler2DArray);
const TType *gsampler2DMS = TCache::getType(EbtGSampler2DMS);
// //
// Texture Functions for GLSL ES 3.0 // Texture Functions for GLSL ES 3.0
...@@ -452,6 +453,7 @@ void InsertBuiltInFunctions(sh::GLenum type, ...@@ -452,6 +453,7 @@ void InsertBuiltInFunctions(sh::GLenum type,
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "textureSize", sampler2DShadow, int1); symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "textureSize", sampler2DShadow, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "textureSize", samplerCubeShadow, int1); symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "textureSize", samplerCubeShadow, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int3, "textureSize", sampler2DArrayShadow, int1); symbolTable.insertBuiltIn(ESSL3_BUILTINS, int3, "textureSize", sampler2DArrayShadow, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "textureSize", gsampler2DMS);
if (resources.OES_EGL_image_external_essl3) if (resources.OES_EGL_image_external_essl3)
{ {
...@@ -620,6 +622,8 @@ void InsertBuiltInFunctions(sh::GLenum type, ...@@ -620,6 +622,8 @@ void InsertBuiltInFunctions(sh::GLenum type,
symbolTable.insertBuiltInFunctionNoParameters(ESSL3_1_BUILTINS, EOpMemoryBarrierImage, voidType, symbolTable.insertBuiltInFunctionNoParameters(ESSL3_1_BUILTINS, EOpMemoryBarrierImage, voidType,
"memoryBarrierImage"); "memoryBarrierImage");
symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, gvec4, "texelFetch", gsampler2DMS, int2, int1);
if (type == GL_COMPUTE_SHADER) if (type == GL_COMPUTE_SHADER)
{ {
symbolTable.insertBuiltInFunctionNoParameters(ESSL3_1_BUILTINS, EOpBarrier, voidType, symbolTable.insertBuiltInFunctionNoParameters(ESSL3_1_BUILTINS, EOpBarrier, voidType,
......
...@@ -290,6 +290,17 @@ void TSymbolTable::insertBuiltIn(ESymbolLevel level, ...@@ -290,6 +290,17 @@ void TSymbolTable::insertBuiltIn(ESymbolLevel level,
insertBuiltIn(level, gvec4 ? TCache::getType(EbtUInt, 4) : rvalue, name, insertBuiltIn(level, gvec4 ? TCache::getType(EbtUInt, 4) : rvalue, name,
TCache::getType(EbtUSampler2DArray), ptype2, ptype3, ptype4, ptype5); TCache::getType(EbtUSampler2DArray), ptype2, ptype3, ptype4, ptype5);
} }
else if (ptype1->getBasicType() == EbtGSampler2DMS)
{
insertUnmangledBuiltInName(name, level);
bool gvec4 = (rvalue->getBasicType() == EbtGVec4);
insertBuiltIn(level, gvec4 ? TCache::getType(EbtFloat, 4) : rvalue, name,
TCache::getType(EbtSampler2DMS), ptype2, ptype3, ptype4, ptype5);
insertBuiltIn(level, gvec4 ? TCache::getType(EbtInt, 4) : rvalue, name,
TCache::getType(EbtISampler2DMS), ptype2, ptype3, ptype4, ptype5);
insertBuiltIn(level, gvec4 ? TCache::getType(EbtUInt, 4) : rvalue, name,
TCache::getType(EbtUSampler2DMS), ptype2, ptype3, ptype4, ptype5);
}
else if (IsGImage(ptype1->getBasicType())) else if (IsGImage(ptype1->getBasicType()))
{ {
insertUnmangledBuiltInName(name, level); insertUnmangledBuiltInName(name, level);
......
...@@ -45,6 +45,8 @@ const char *getBasicString(TBasicType t) ...@@ -45,6 +45,8 @@ const char *getBasicString(TBasicType t)
return "sampler2DRect"; return "sampler2DRect";
case EbtSampler2DArray: case EbtSampler2DArray:
return "sampler2DArray"; return "sampler2DArray";
case EbtSampler2DMS:
return "sampler2DMS";
case EbtISampler2D: case EbtISampler2D:
return "isampler2D"; return "isampler2D";
case EbtISampler3D: case EbtISampler3D:
...@@ -53,6 +55,8 @@ const char *getBasicString(TBasicType t) ...@@ -53,6 +55,8 @@ const char *getBasicString(TBasicType t)
return "isamplerCube"; return "isamplerCube";
case EbtISampler2DArray: case EbtISampler2DArray:
return "isampler2DArray"; return "isampler2DArray";
case EbtISampler2DMS:
return "isampler2DMS";
case EbtUSampler2D: case EbtUSampler2D:
return "usampler2D"; return "usampler2D";
case EbtUSampler3D: case EbtUSampler3D:
...@@ -61,6 +65,8 @@ const char *getBasicString(TBasicType t) ...@@ -61,6 +65,8 @@ const char *getBasicString(TBasicType t)
return "usamplerCube"; return "usamplerCube";
case EbtUSampler2DArray: case EbtUSampler2DArray:
return "usampler2DArray"; return "usampler2DArray";
case EbtUSampler2DMS:
return "usampler2DMS";
case EbtSampler2DShadow: case EbtSampler2DShadow:
return "sampler2DShadow"; return "sampler2DShadow";
case EbtSamplerCubeShadow: case EbtSamplerCubeShadow:
...@@ -304,6 +310,9 @@ TString TType::buildMangledName() const ...@@ -304,6 +310,9 @@ TString TType::buildMangledName() const
case EbtSampler2DRect: case EbtSampler2DRect:
mangledName += "s2r"; mangledName += "s2r";
break; break;
case EbtSampler2DMS:
mangledName += "s2ms";
break;
case EbtISampler2D: case EbtISampler2D:
mangledName += "is2"; mangledName += "is2";
break; break;
...@@ -316,6 +325,9 @@ TString TType::buildMangledName() const ...@@ -316,6 +325,9 @@ TString TType::buildMangledName() const
case EbtISampler2DArray: case EbtISampler2DArray:
mangledName += "is2a"; mangledName += "is2a";
break; break;
case EbtISampler2DMS:
mangledName += "is2ms";
break;
case EbtUSampler2D: case EbtUSampler2D:
mangledName += "us2"; mangledName += "us2";
break; break;
...@@ -328,6 +340,9 @@ TString TType::buildMangledName() const ...@@ -328,6 +340,9 @@ TString TType::buildMangledName() const
case EbtUSampler2DArray: case EbtUSampler2DArray:
mangledName += "us2a"; mangledName += "us2a";
break; break;
case EbtUSampler2DMS:
mangledName += "us2ms";
break;
case EbtSampler2DShadow: case EbtSampler2DShadow:
mangledName += "s2s"; mangledName += "s2s";
break; break;
......
...@@ -180,14 +180,17 @@ O [0-7] ...@@ -180,14 +180,17 @@ O [0-7]
"sampler3DRect" { return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); } "sampler3DRect" { return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); }
"sampler2DRect" { return SAMPLER2DRECT; } "sampler2DRect" { return SAMPLER2DRECT; }
"sampler2DArray" { return ES2_ident_ES3_keyword(context, SAMPLER2DARRAY); } "sampler2DArray" { return ES2_ident_ES3_keyword(context, SAMPLER2DARRAY); }
"sampler2DMS" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, SAMPLER2DMS); }
"isampler2D" { return ES2_ident_ES3_keyword(context, ISAMPLER2D); } "isampler2D" { return ES2_ident_ES3_keyword(context, ISAMPLER2D); }
"isampler3D" { return ES2_ident_ES3_keyword(context, ISAMPLER3D); } "isampler3D" { return ES2_ident_ES3_keyword(context, ISAMPLER3D); }
"isamplerCube" { return ES2_ident_ES3_keyword(context, ISAMPLERCUBE); } "isamplerCube" { return ES2_ident_ES3_keyword(context, ISAMPLERCUBE); }
"isampler2DArray" { return ES2_ident_ES3_keyword(context, ISAMPLER2DARRAY); } "isampler2DArray" { return ES2_ident_ES3_keyword(context, ISAMPLER2DARRAY); }
"isampler2DMS" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, ISAMPLER2DMS); }
"usampler2D" { return ES2_ident_ES3_keyword(context, USAMPLER2D); } "usampler2D" { return ES2_ident_ES3_keyword(context, USAMPLER2D); }
"usampler3D" { return ES2_ident_ES3_keyword(context, USAMPLER3D); } "usampler3D" { return ES2_ident_ES3_keyword(context, USAMPLER3D); }
"usamplerCube" { return ES2_ident_ES3_keyword(context, USAMPLERCUBE); } "usamplerCube" { return ES2_ident_ES3_keyword(context, USAMPLERCUBE); }
"usampler2DArray" { return ES2_ident_ES3_keyword(context, USAMPLER2DARRAY); } "usampler2DArray" { return ES2_ident_ES3_keyword(context, USAMPLER2DARRAY); }
"usampler2DMS" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, USAMPLER2DMS); }
"sampler2DShadow" { return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); } "sampler2DShadow" { return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); }
"samplerCubeShadow" { return ES2_ident_ES3_keyword(context, SAMPLERCUBESHADOW); } "samplerCubeShadow" { return ES2_ident_ES3_keyword(context, SAMPLERCUBESHADOW); }
"sampler2DArrayShadow" { return ES2_ident_ES3_keyword(context, SAMPLER2DARRAYSHADOW); } "sampler2DArrayShadow" { return ES2_ident_ES3_keyword(context, SAMPLER2DARRAYSHADOW); }
...@@ -251,9 +254,6 @@ O [0-7] ...@@ -251,9 +254,6 @@ O [0-7]
"samplerBuffer" | "samplerBuffer" |
"isamplerBuffer" | "isamplerBuffer" |
"usamplerBuffer" | "usamplerBuffer" |
"sampler2DMS" |
"isampler2DMS" |
"usampler2DMS" |
"sampler2DMSArray" | "sampler2DMSArray" |
"isampler2DMSArray" | "isampler2DMSArray" |
"usampler2DMSArray" { "usampler2DMSArray" {
......
...@@ -174,6 +174,7 @@ extern void yyerror(YYLTYPE* yylloc, TParseContext* context, void *scanner, cons ...@@ -174,6 +174,7 @@ extern void yyerror(YYLTYPE* yylloc, TParseContext* context, void *scanner, cons
%token <lex> SAMPLER2D SAMPLERCUBE SAMPLER_EXTERNAL_OES SAMPLER2DRECT SAMPLER2DARRAY %token <lex> SAMPLER2D SAMPLERCUBE SAMPLER_EXTERNAL_OES SAMPLER2DRECT SAMPLER2DARRAY
%token <lex> ISAMPLER2D ISAMPLER3D ISAMPLERCUBE ISAMPLER2DARRAY %token <lex> ISAMPLER2D ISAMPLER3D ISAMPLERCUBE ISAMPLER2DARRAY
%token <lex> USAMPLER2D USAMPLER3D USAMPLERCUBE USAMPLER2DARRAY %token <lex> USAMPLER2D USAMPLER3D USAMPLERCUBE USAMPLER2DARRAY
%token <lex> SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS
%token <lex> SAMPLER3D SAMPLER3DRECT SAMPLER2DSHADOW SAMPLERCUBESHADOW SAMPLER2DARRAYSHADOW %token <lex> SAMPLER3D SAMPLER3DRECT SAMPLER2DSHADOW SAMPLERCUBESHADOW SAMPLER2DARRAYSHADOW
%token <lex> IMAGE2D IIMAGE2D UIMAGE2D IMAGE3D IIMAGE3D UIMAGE3D IMAGE2DARRAY IIMAGE2DARRAY UIMAGE2DARRAY %token <lex> IMAGE2D IIMAGE2D UIMAGE2D IMAGE3D IIMAGE3D UIMAGE3D IMAGE2DARRAY IIMAGE2DARRAY UIMAGE2DARRAY
%token <lex> IMAGECUBE IIMAGECUBE UIMAGECUBE %token <lex> IMAGECUBE IIMAGECUBE UIMAGECUBE
...@@ -1147,6 +1148,9 @@ type_specifier_nonarray ...@@ -1147,6 +1148,9 @@ type_specifier_nonarray
| SAMPLER2DARRAY { | SAMPLER2DARRAY {
$$.initialize(EbtSampler2DArray, @1); $$.initialize(EbtSampler2DArray, @1);
} }
| SAMPLER2DMS {
$$.initialize(EbtSampler2DMS, @1);
}
| ISAMPLER2D { | ISAMPLER2D {
$$.initialize(EbtISampler2D, @1); $$.initialize(EbtISampler2D, @1);
} }
...@@ -1159,6 +1163,9 @@ type_specifier_nonarray ...@@ -1159,6 +1163,9 @@ type_specifier_nonarray
| ISAMPLER2DARRAY { | ISAMPLER2DARRAY {
$$.initialize(EbtISampler2DArray, @1); $$.initialize(EbtISampler2DArray, @1);
} }
| ISAMPLER2DMS {
$$.initialize(EbtISampler2DMS, @1);
}
| USAMPLER2D { | USAMPLER2D {
$$.initialize(EbtUSampler2D, @1); $$.initialize(EbtUSampler2D, @1);
} }
...@@ -1171,6 +1178,9 @@ type_specifier_nonarray ...@@ -1171,6 +1178,9 @@ type_specifier_nonarray
| USAMPLER2DARRAY { | USAMPLER2DARRAY {
$$.initialize(EbtUSampler2DArray, @1); $$.initialize(EbtUSampler2DArray, @1);
} }
| USAMPLER2DMS {
$$.initialize(EbtUSampler2DMS, @1);
}
| SAMPLER2DSHADOW { | SAMPLER2DSHADOW {
$$.initialize(EbtSampler2DShadow, @1); $$.initialize(EbtSampler2DShadow, @1);
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -122,76 +122,79 @@ enum yytokentype ...@@ -122,76 +122,79 @@ enum yytokentype
USAMPLER3D = 328, USAMPLER3D = 328,
USAMPLERCUBE = 329, USAMPLERCUBE = 329,
USAMPLER2DARRAY = 330, USAMPLER2DARRAY = 330,
SAMPLER3D = 331, SAMPLER2DMS = 331,
SAMPLER3DRECT = 332, ISAMPLER2DMS = 332,
SAMPLER2DSHADOW = 333, USAMPLER2DMS = 333,
SAMPLERCUBESHADOW = 334, SAMPLER3D = 334,
SAMPLER2DARRAYSHADOW = 335, SAMPLER3DRECT = 335,
IMAGE2D = 336, SAMPLER2DSHADOW = 336,
IIMAGE2D = 337, SAMPLERCUBESHADOW = 337,
UIMAGE2D = 338, SAMPLER2DARRAYSHADOW = 338,
IMAGE3D = 339, IMAGE2D = 339,
IIMAGE3D = 340, IIMAGE2D = 340,
UIMAGE3D = 341, UIMAGE2D = 341,
IMAGE2DARRAY = 342, IMAGE3D = 342,
IIMAGE2DARRAY = 343, IIMAGE3D = 343,
UIMAGE2DARRAY = 344, UIMAGE3D = 344,
IMAGECUBE = 345, IMAGE2DARRAY = 345,
IIMAGECUBE = 346, IIMAGE2DARRAY = 346,
UIMAGECUBE = 347, UIMAGE2DARRAY = 347,
LAYOUT = 348, IMAGECUBE = 348,
IDENTIFIER = 349, IIMAGECUBE = 349,
TYPE_NAME = 350, UIMAGECUBE = 350,
FLOATCONSTANT = 351, LAYOUT = 351,
INTCONSTANT = 352, IDENTIFIER = 352,
UINTCONSTANT = 353, TYPE_NAME = 353,
BOOLCONSTANT = 354, FLOATCONSTANT = 354,
FIELD_SELECTION = 355, INTCONSTANT = 355,
LEFT_OP = 356, UINTCONSTANT = 356,
RIGHT_OP = 357, BOOLCONSTANT = 357,
INC_OP = 358, FIELD_SELECTION = 358,
DEC_OP = 359, LEFT_OP = 359,
LE_OP = 360, RIGHT_OP = 360,
GE_OP = 361, INC_OP = 361,
EQ_OP = 362, DEC_OP = 362,
NE_OP = 363, LE_OP = 363,
AND_OP = 364, GE_OP = 364,
OR_OP = 365, EQ_OP = 365,
XOR_OP = 366, NE_OP = 366,
MUL_ASSIGN = 367, AND_OP = 367,
DIV_ASSIGN = 368, OR_OP = 368,
ADD_ASSIGN = 369, XOR_OP = 369,
MOD_ASSIGN = 370, MUL_ASSIGN = 370,
LEFT_ASSIGN = 371, DIV_ASSIGN = 371,
RIGHT_ASSIGN = 372, ADD_ASSIGN = 372,
AND_ASSIGN = 373, MOD_ASSIGN = 373,
XOR_ASSIGN = 374, LEFT_ASSIGN = 374,
OR_ASSIGN = 375, RIGHT_ASSIGN = 375,
SUB_ASSIGN = 376, AND_ASSIGN = 376,
LEFT_PAREN = 377, XOR_ASSIGN = 377,
RIGHT_PAREN = 378, OR_ASSIGN = 378,
LEFT_BRACKET = 379, SUB_ASSIGN = 379,
RIGHT_BRACKET = 380, LEFT_PAREN = 380,
LEFT_BRACE = 381, RIGHT_PAREN = 381,
RIGHT_BRACE = 382, LEFT_BRACKET = 382,
DOT = 383, RIGHT_BRACKET = 383,
COMMA = 384, LEFT_BRACE = 384,
COLON = 385, RIGHT_BRACE = 385,
EQUAL = 386, DOT = 386,
SEMICOLON = 387, COMMA = 387,
BANG = 388, COLON = 388,
DASH = 389, EQUAL = 389,
TILDE = 390, SEMICOLON = 390,
PLUS = 391, BANG = 391,
STAR = 392, DASH = 392,
SLASH = 393, TILDE = 393,
PERCENT = 394, PLUS = 394,
LEFT_ANGLE = 395, STAR = 395,
RIGHT_ANGLE = 396, SLASH = 396,
VERTICAL_BAR = 397, PERCENT = 397,
CARET = 398, LEFT_ANGLE = 398,
AMPERSAND = 399, RIGHT_ANGLE = 399,
QUESTION = 400 VERTICAL_BAR = 400,
CARET = 401,
AMPERSAND = 402,
QUESTION = 403
}; };
#endif #endif
......
...@@ -338,6 +338,8 @@ GLenum GLVariableType(const TType &type) ...@@ -338,6 +338,8 @@ GLenum GLVariableType(const TType &type)
return GL_SAMPLER_2D_RECT_ARB; return GL_SAMPLER_2D_RECT_ARB;
case EbtSampler2DArray: case EbtSampler2DArray:
return GL_SAMPLER_2D_ARRAY; return GL_SAMPLER_2D_ARRAY;
case EbtSampler2DMS:
return GL_SAMPLER_2D_MULTISAMPLE;
case EbtISampler2D: case EbtISampler2D:
return GL_INT_SAMPLER_2D; return GL_INT_SAMPLER_2D;
case EbtISampler3D: case EbtISampler3D:
...@@ -346,6 +348,8 @@ GLenum GLVariableType(const TType &type) ...@@ -346,6 +348,8 @@ GLenum GLVariableType(const TType &type)
return GL_INT_SAMPLER_CUBE; return GL_INT_SAMPLER_CUBE;
case EbtISampler2DArray: case EbtISampler2DArray:
return GL_INT_SAMPLER_2D_ARRAY; return GL_INT_SAMPLER_2D_ARRAY;
case EbtISampler2DMS:
return GL_INT_SAMPLER_2D_MULTISAMPLE;
case EbtUSampler2D: case EbtUSampler2D:
return GL_UNSIGNED_INT_SAMPLER_2D; return GL_UNSIGNED_INT_SAMPLER_2D;
case EbtUSampler3D: case EbtUSampler3D:
...@@ -354,6 +358,8 @@ GLenum GLVariableType(const TType &type) ...@@ -354,6 +358,8 @@ GLenum GLVariableType(const TType &type)
return GL_UNSIGNED_INT_SAMPLER_CUBE; return GL_UNSIGNED_INT_SAMPLER_CUBE;
case EbtUSampler2DArray: case EbtUSampler2DArray:
return GL_UNSIGNED_INT_SAMPLER_2D_ARRAY; return GL_UNSIGNED_INT_SAMPLER_2D_ARRAY;
case EbtUSampler2DMS:
return GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE;
case EbtSampler2DShadow: case EbtSampler2DShadow:
return GL_SAMPLER_2D_SHADOW; return GL_SAMPLER_2D_SHADOW;
case EbtSamplerCubeShadow: case EbtSamplerCubeShadow:
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
'<(angle_path)/src/tests/compiler_tests/QualificationOrder_test.cpp', '<(angle_path)/src/tests/compiler_tests/QualificationOrder_test.cpp',
'<(angle_path)/src/tests/compiler_tests/RecordConstantPrecision_test.cpp', '<(angle_path)/src/tests/compiler_tests/RecordConstantPrecision_test.cpp',
'<(angle_path)/src/tests/compiler_tests/RemovePow_test.cpp', '<(angle_path)/src/tests/compiler_tests/RemovePow_test.cpp',
'<(angle_path)/src/tests/compiler_tests/SamplerMultisample_test.cpp',
'<(angle_path)/src/tests/compiler_tests/ShaderExtension_test.cpp', '<(angle_path)/src/tests/compiler_tests/ShaderExtension_test.cpp',
'<(angle_path)/src/tests/compiler_tests/ShaderImage_test.cpp', '<(angle_path)/src/tests/compiler_tests/ShaderImage_test.cpp',
'<(angle_path)/src/tests/compiler_tests/ShaderValidation_test.cpp', '<(angle_path)/src/tests/compiler_tests/ShaderValidation_test.cpp',
......
//
// Copyright (c) 2016 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// SamplerMultisample_test.cpp:
// Tests compiling shaders that use gsampler2DMS types
//
#include "angle_gl.h"
#include "gtest/gtest.h"
#include "GLSLANG/ShaderLang.h"
#include "tests/test_utils/ShaderCompileTreeTest.h"
using namespace sh;
class SamplerMultisampleTest : public ShaderCompileTreeTest
{
public:
SamplerMultisampleTest() {}
protected:
::GLenum getShaderType() const override { return GL_FRAGMENT_SHADER; }
ShShaderSpec getShaderSpec() const override { return SH_GLES3_1_SPEC; }
};
// checks whether compiler has parsed the gsampler2DMS, texelfetch qualifiers correctly
TEST_F(SamplerMultisampleTest, TexelFetchSampler2DMSQualifier)
{
const std::string &shaderString =
"#version 310 es\n"
"precision highp float;\n"
"uniform highp sampler2DMS s;\n"
"uniform highp isampler2DMS is;\n"
"uniform highp usampler2DMS us;\n"
""
"void main() {\n"
" vec4 tex1 = texelFetch(s, ivec2(0, 0), 0);\n"
" ivec4 tex2 = texelFetch(is, ivec2(0, 0), 0);\n"
" uvec4 tex3 = texelFetch(us, ivec2(0, 0), 0);\n"
"}\n";
if (!compile(shaderString))
{
FAIL() << "Shader compilation failed, expecting success:\n" << mInfoLog;
}
}
// checks whether compiler has parsed the gsampler2DMS, texturesize qualifiers correctly
TEST_F(SamplerMultisampleTest, TextureSizeSampler2DMSQualifier)
{
const std::string &shaderString =
"#version 310 es\n"
"precision highp float;\n"
"uniform highp sampler2DMS s;\n"
"uniform highp isampler2DMS is;\n"
"uniform highp usampler2DMS us;\n"
""
"void main() {\n"
" ivec2 size = textureSize(s);\n"
" size = textureSize(is);\n"
" size = textureSize(us);\n"
"}\n";
if (!compile(shaderString))
{
FAIL() << "Shader compilation failed, expecting success:\n" << mInfoLog;
}
}
// checks gsampler2DMS has no default precision
TEST_F(SamplerMultisampleTest, NoPrecisionSampler2DMS)
{
const std::string &shaderString =
"#version 310 es\n"
"precision highp float;\n"
"uniform sampler2DMS s;\n"
"uniform isampler2DMS is;\n"
"uniform usampler2DMS us;\n"
""
"void main() {}\n";
if (compile(shaderString))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
...@@ -3355,4 +3355,18 @@ TEST_F(FragmentShaderValidationTest, ValidUseOfMemoryBarrierImageInFragmentShade ...@@ -3355,4 +3355,18 @@ TEST_F(FragmentShaderValidationTest, ValidUseOfMemoryBarrierImageInFragmentShade
{ {
FAIL() << "Shader compilation failed, expecting success " << mInfoLog; FAIL() << "Shader compilation failed, expecting success " << mInfoLog;
} }
}
// checks that gsampler2DMS is not supported in version lower than 310
TEST_F(FragmentShaderValidationTest, Sampler2DMSInESSL300Shader)
{
const std::string &shaderString =
"#version 300 es\n"
"uniform highp sampler2DMS s;\n"
"void main() {}\n";
if (compile(shaderString))
{
FAIL() << "Shader compilation succeed, expecting failure " << mInfoLog;
}
} }
\ No newline at end of file
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
1442 OPENGL D3D11 : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment.default_block_struct_member = SKIP 1442 OPENGL D3D11 : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment.default_block_struct_member = SKIP
1442 OPENGL D3D11 : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.* = SKIP 1442 OPENGL D3D11 : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.* = SKIP
1442 D3D11 : dEQP-GLES31.functional.stencil_texturing.* = SKIP 1442 D3D11 : dEQP-GLES31.functional.stencil_texturing.* = SKIP
1442 D3D11 : dEQP-GLES31.functional.state_query.shader.sampler_type = SKIP
// D3D11 Failing Tests // D3D11 Failing Tests
1442 D3D11 : dEQP-GLES31.functional.draw_indirect.* = FAIL 1442 D3D11 : dEQP-GLES31.functional.draw_indirect.* = FAIL
...@@ -1180,7 +1181,6 @@ ...@@ -1180,7 +1181,6 @@
1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.* = FAIL 1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.* = FAIL
1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture_level.* = FAIL 1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture_level.* = FAIL
1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.* = FAIL 1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.* = FAIL
1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.shader.sampler_type = FAIL
1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgb10_a2ui_samples = FAIL 1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgb10_a2ui_samples = FAIL
1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r8i_samples = FAIL 1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r8i_samples = FAIL
1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r8ui_samples = FAIL 1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r8ui_samples = FAIL
......
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