Commit bd924af1 by Jiawei Shao Committed by Commit Bot

ES31: Remove support of GL_OES_geometry_shader in compiler

This patch intends to remove the support of GL_OES_geometry_shader in ANGLE compiler. To make the implementation simpler, currently we decide to only support "GL_EXT_geometry_shader" as the extension string of geometry shader in ANGLE. This patch also updates all the related shaders in angle_unittests into R"()" format. BUG=angleproject:1941 TEST=angle_unittests Change-Id: Ife9858abeedfb46b02c5c2fb1cda16fa27198511 Reviewed-on: https://chromium-review.googlesource.com/773451 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
parent f15f9cec
......@@ -25,7 +25,7 @@
// Version number for shader translation API.
// It is incremented every time the API changes.
#define ANGLE_SH_VERSION 192
#define ANGLE_SH_VERSION 193
enum ShShaderSpec
{
......@@ -300,7 +300,7 @@ struct ShBuiltInResources
int ARM_shader_framebuffer_fetch;
int OVR_multiview;
int EXT_YUV_target;
int OES_geometry_shader;
int EXT_geometry_shader;
// 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
......@@ -426,7 +426,7 @@ struct ShBuiltInResources
// maximum point size (higher limit from ALIASED_POINT_SIZE_RANGE)
float MaxPointSize;
// OES_geometry_shader constants
// EXT_geometry_shader constants
int MaxGeometryUniformComponents;
int MaxGeometryUniformBlocks;
int MaxGeometryInputComponents;
......
......@@ -63,7 +63,7 @@ void GenerateResources(ShBuiltInResources *resources)
resources->OES_standard_derivatives = 0;
resources->OES_EGL_image_external = 0;
resources->OES_geometry_shader = 1;
resources->EXT_geometry_shader = 1;
}
int main(int argc, char *argv[])
......@@ -270,11 +270,11 @@ int main(int argc, char *argv[])
}
compiler = computeCompiler;
break;
case GL_GEOMETRY_SHADER_OES:
case GL_GEOMETRY_SHADER_EXT:
if (geometryCompiler == 0)
{
geometryCompiler =
sh::ConstructCompiler(GL_GEOMETRY_SHADER_OES, spec, output, &resources);
sh::ConstructCompiler(GL_GEOMETRY_SHADER_EXT, spec, output, &resources);
}
compiler = geometryCompiler;
break;
......@@ -402,7 +402,7 @@ sh::GLenum FindShaderType(const char *fileName)
if (strncmp(ext, ".comp", 5) == 0)
return GL_COMPUTE_SHADER;
if (strncmp(ext, ".geom", 5) == 0)
return GL_GEOMETRY_SHADER_OES;
return GL_GEOMETRY_SHADER_EXT;
}
return GL_FRAGMENT_SHADER;
......
......@@ -710,7 +710,7 @@ enum TQualifier
EvqRestrict,
EvqVolatile,
// GLSL ES 3.1 extension OES_geometry_shader qualifiers
// GLSL ES 3.1 extension EXT_geometry_shader qualifiers
EvqGeometryIn,
EvqGeometryOut,
EvqPerVertexIn, // gl_in
......@@ -814,7 +814,7 @@ struct TLayoutQualifier
1;
}
bool isLocalSizeEqual(const sh::WorkGroupSize &localSizeIn) const
bool isLocalSizeEqual(const WorkGroupSize &localSizeIn) const
{
return localSize.isWorkGroupSizeMatching(localSizeIn);
}
......@@ -825,7 +825,7 @@ struct TLayoutQualifier
TLayoutBlockStorage blockStorage;
// Compute shader layout qualifiers.
sh::WorkGroupSize localSize;
WorkGroupSize localSize;
int binding;
int offset;
......
......@@ -38,7 +38,7 @@ BlockLayoutType GetBlockLayoutType(TLayoutBlockStorage blockStorage)
}
}
// TODO(jiawei.shao@intel.com): implement GL_OES_shader_io_blocks.
// TODO(jiawei.shao@intel.com): implement GL_EXT_shader_io_blocks.
BlockType GetBlockType(TQualifier qualifier)
{
switch (qualifier)
......@@ -517,7 +517,7 @@ void CollectVariablesTraverser::visitSymbol(TIntermSymbol *symbol)
recordBuiltInVaryingUsed("gl_PrimitiveIDIn", &mPrimitiveIDInAdded, mInputVaryings);
break;
case EvqPrimitiveID:
if (mShaderType == GL_GEOMETRY_SHADER_OES)
if (mShaderType == GL_GEOMETRY_SHADER_EXT)
{
recordBuiltInVaryingUsed("gl_PrimitiveID", &mPrimitiveIDAdded, mOutputVaryings);
}
......@@ -528,7 +528,7 @@ void CollectVariablesTraverser::visitSymbol(TIntermSymbol *symbol)
}
break;
case EvqLayer:
if (mShaderType == GL_GEOMETRY_SHADER_OES)
if (mShaderType == GL_GEOMETRY_SHADER_EXT)
{
recordBuiltInVaryingUsed("gl_Layer", &mLayerAdded, mOutputVaryings);
}
......@@ -646,7 +646,7 @@ Varying CollectVariablesTraverser::recordVarying(const TIntermSymbol &variable)
return varying;
}
// TODO(jiawei.shao@intel.com): implement GL_OES_shader_io_blocks.
// TODO(jiawei.shao@intel.com): implement GL_EXT_shader_io_blocks.
void CollectVariablesTraverser::recordInterfaceBlock(const TString &instanceName,
const TType &interfaceBlockType,
InterfaceBlock *interfaceBlock) const
......@@ -726,7 +726,7 @@ bool CollectVariablesTraverser::visitDeclaration(Visit, TIntermDeclaration *node
continue;
}
// TODO(jiawei.shao@intel.com): implement GL_OES_shader_io_blocks.
// TODO(jiawei.shao@intel.com): implement GL_EXT_shader_io_blocks.
if (typedNode.getBasicType() == EbtInterfaceBlock)
{
InterfaceBlock interfaceBlock;
......@@ -779,7 +779,7 @@ bool CollectVariablesTraverser::visitDeclaration(Visit, TIntermDeclaration *node
}
// TODO(jiawei.shao@intel.com): add search on mInBlocks and mOutBlocks when implementing
// GL_OES_shader_io_blocks.
// GL_EXT_shader_io_blocks.
InterfaceBlock *CollectVariablesTraverser::findNamedInterfaceBlock(const TString &blockName) const
{
InterfaceBlock *namedBlock = FindVariable(blockName, mUniformBlocks);
......
......@@ -157,7 +157,7 @@ int GetMaxUniformVectorsForShaderType(GLenum shaderType, const ShBuiltInResource
// TODO (jiawei.shao@intel.com): check if we need finer-grained component counting
case GL_COMPUTE_SHADER:
return resources.MaxComputeUniformComponents / 4;
case GL_GEOMETRY_SHADER_OES:
case GL_GEOMETRY_SHADER_EXT:
return resources.MaxGeometryUniformComponents / 4;
default:
UNREACHABLE();
......@@ -380,7 +380,7 @@ void TCompiler::setASTMetadata(const TParseContext &parseContext)
// Highp might have been auto-enabled based on shader version
fragmentPrecisionHigh = parseContext.getFragmentPrecisionHigh();
if (shaderType == GL_GEOMETRY_SHADER_OES)
if (shaderType == GL_GEOMETRY_SHADER_EXT)
{
mGeometryShaderInputPrimitiveType = parseContext.getGeometryShaderInputPrimitiveType();
mGeometryShaderOutputPrimitiveType = parseContext.getGeometryShaderOutputPrimitiveType();
......@@ -711,7 +711,7 @@ bool TCompiler::InitBuiltInSymbolTable(const ShBuiltInResources &resources)
break;
case GL_VERTEX_SHADER:
case GL_COMPUTE_SHADER:
case GL_GEOMETRY_SHADER_OES:
case GL_GEOMETRY_SHADER_EXT:
symbolTable.setDefaultPrecision(EbtInt, EbpHigh);
symbolTable.setDefaultPrecision(EbtFloat, EbpHigh);
break;
......@@ -778,7 +778,7 @@ void TCompiler::setResourceString()
<< ":ARM_shader_framebuffer_fetch:" << compileResources.ARM_shader_framebuffer_fetch
<< ":OVR_multiview:" << compileResources.OVR_multiview
<< ":EXT_YUV_target:" << compileResources.EXT_YUV_target
<< ":OES_geometry_shader:" << compileResources.OES_geometry_shader
<< ":EXT_geometry_shader:" << compileResources.EXT_geometry_shader
<< ":MaxVertexOutputVectors:" << compileResources.MaxVertexOutputVectors
<< ":MaxFragmentInputVectors:" << compileResources.MaxFragmentInputVectors
<< ":MinProgramTexelOffset:" << compileResources.MinProgramTexelOffset
......@@ -1092,7 +1092,7 @@ void TCompiler::useAllMembersInUnusedStandardAndSharedBlocks(TIntermBlock *root)
void TCompiler::initializeOutputVariables(TIntermBlock *root)
{
InitVariableList list;
if (shaderType == GL_VERTEX_SHADER || shaderType == GL_GEOMETRY_SHADER_OES)
if (shaderType == GL_VERTEX_SHADER || shaderType == GL_GEOMETRY_SHADER_EXT)
{
for (auto var : outputVaryings)
{
......
......@@ -26,7 +26,6 @@
OP(NV_shader_framebuffer_fetch) \
OP(OES_EGL_image_external) \
OP(OES_EGL_image_external_essl3) \
OP(OES_geometry_shader) \
OP(OES_standard_derivatives) \
OP(OVR_multiview)
......
......@@ -31,7 +31,6 @@ enum class TExtension
NV_shader_framebuffer_fetch,
OES_EGL_image_external,
OES_EGL_image_external_essl3,
OES_geometry_shader,
OES_standard_derivatives,
OVR_multiview
};
......
......@@ -733,9 +733,9 @@ void InsertBuiltInFunctions(sh::GLenum type,
voidType, "groupMemoryBarrier");
}
if (type == GL_GEOMETRY_SHADER_OES)
if (type == GL_GEOMETRY_SHADER_EXT)
{
TExtension extension = TExtension::OES_geometry_shader;
TExtension extension = TExtension::EXT_geometry_shader;
symbolTable.insertBuiltInFunctionNoParametersExt(ESSL3_1_BUILTINS, extension, EOpEmitVertex,
voidType, "EmitVertex");
symbolTable.insertBuiltInFunctionNoParametersExt(ESSL3_1_BUILTINS, extension,
......@@ -844,9 +844,9 @@ void InsertBuiltInFunctions(sh::GLenum type,
symbolTable.insertConstInt(ESSL3_1_BUILTINS, "gl_MaxAtomicCounterBufferSize",
resources.MaxAtomicCounterBufferSize, EbpMedium);
if (resources.OES_geometry_shader)
if (resources.EXT_geometry_shader)
{
TExtension ext = TExtension::OES_geometry_shader;
TExtension ext = TExtension::EXT_geometry_shader;
symbolTable.insertConstIntExt(ESSL3_1_BUILTINS, ext, "gl_MaxGeometryInputComponents",
resources.MaxGeometryInputComponents, EbpMedium);
symbolTable.insertConstIntExt(ESSL3_1_BUILTINS, ext, "gl_MaxGeometryOutputComponents",
......@@ -963,9 +963,9 @@ void IdentifyBuiltIns(sh::GLenum type,
TType(EbtFloat, EbpMedium, EvqLastFragColor, 4));
}
if (resources.OES_geometry_shader)
if (resources.EXT_geometry_shader)
{
TExtension extension = TExtension::OES_geometry_shader;
TExtension extension = TExtension::EXT_geometry_shader;
symbolTable.insertVariableExt(ESSL3_1_BUILTINS, extension, "gl_PrimitiveID",
TType(EbtInt, EbpHigh, EvqPrimitiveID, 1));
symbolTable.insertVariableExt(ESSL3_1_BUILTINS, extension, "gl_Layer",
......@@ -1009,12 +1009,12 @@ void IdentifyBuiltIns(sh::GLenum type,
break;
}
case GL_GEOMETRY_SHADER_OES:
case GL_GEOMETRY_SHADER_EXT:
{
TExtension extension = TExtension::OES_geometry_shader;
TExtension extension = TExtension::EXT_geometry_shader;
// Add built-in interface block gl_PerVertex and the built-in array gl_in.
// TODO(jiawei.shao@intel.com): implement GL_OES_geometry_point_size.
// TODO(jiawei.shao@intel.com): implement GL_EXT_geometry_point_size.
TFieldList *glPerVertexFieldList = new TFieldList();
TSourceLoc zeroSourceLoc = {0, 0, 0, 0};
TField *glPositionField = new TField(new TType(EbtFloat, EbpHigh, EvqPosition, 4),
......@@ -1117,9 +1117,8 @@ void InitExtensionBehavior(const ShBuiltInResources &resources, TExtensionBehavi
{
extBehavior[TExtension::EXT_YUV_target] = EBhUndefined;
}
if (resources.OES_geometry_shader)
if (resources.EXT_geometry_shader)
{
extBehavior[TExtension::OES_geometry_shader] = EBhUndefined;
extBehavior[TExtension::EXT_geometry_shader] = EBhUndefined;
}
}
......
......@@ -1263,14 +1263,6 @@ template bool TParseContext::checkCanUseOneOfExtensions(
bool TParseContext::checkCanUseExtension(const TSourceLoc &line, TExtension extension)
{
ASSERT(extension != TExtension::UNDEFINED);
ASSERT(extension != TExtension::EXT_geometry_shader);
if (extension == TExtension::OES_geometry_shader)
{
// OES_geometry_shader and EXT_geometry_shader are always interchangeable.
constexpr std::array<TExtension, 2u> extensions{
{TExtension::EXT_geometry_shader, TExtension::OES_geometry_shader}};
return checkCanUseOneOfExtensions(line, extensions);
}
return checkCanUseOneOfExtensions(line, std::array<TExtension, 1u>{{extension}});
}
......@@ -3628,7 +3620,7 @@ TIntermTyped *TParseContext::addConstructor(TIntermSequence *arguments,
//
// Interface/uniform blocks
// TODO(jiawei.shao@intel.com): implement GL_OES_shader_io_blocks.
// TODO(jiawei.shao@intel.com): implement GL_EXT_shader_io_blocks.
//
TIntermDeclaration *TParseContext::addInterfaceBlock(
const TTypeQualifierBuilder &typeQualifierBuilder,
......@@ -3955,7 +3947,7 @@ TIntermTyped *TParseContext::addIndexExpression(TIntermTyped *baseExpression,
if (baseExpression->getQualifier() == EvqPerVertexIn)
{
ASSERT(mShaderType == GL_GEOMETRY_SHADER_OES);
ASSERT(mShaderType == GL_GEOMETRY_SHADER_EXT);
if (mGeometryShaderInputPrimitiveType == EptUndefined)
{
error(location, "missing input primitive declaration before indexing gl_in.", "[");
......@@ -3973,7 +3965,7 @@ TIntermTyped *TParseContext::addIndexExpression(TIntermTyped *baseExpression,
{
if (baseExpression->isInterfaceBlock())
{
// TODO(jiawei.shao@intel.com): implement GL_OES_shader_io_blocks.
// TODO(jiawei.shao@intel.com): implement GL_EXT_shader_io_blocks.
switch (baseExpression->getQualifier())
{
case EvqPerVertexIn:
......@@ -4345,44 +4337,44 @@ TLayoutQualifier TParseContext::parseLayoutQualifier(const TString &qualifierTyp
checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
qualifier.imageInternalFormat = EiifR32UI;
}
else if (qualifierType == "points" && mShaderType == GL_GEOMETRY_SHADER_OES &&
checkCanUseExtension(qualifierTypeLine, TExtension::OES_geometry_shader))
else if (qualifierType == "points" && mShaderType == GL_GEOMETRY_SHADER_EXT &&
checkCanUseExtension(qualifierTypeLine, TExtension::EXT_geometry_shader))
{
checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
qualifier.primitiveType = EptPoints;
}
else if (qualifierType == "lines" && mShaderType == GL_GEOMETRY_SHADER_OES &&
checkCanUseExtension(qualifierTypeLine, TExtension::OES_geometry_shader))
else if (qualifierType == "lines" && mShaderType == GL_GEOMETRY_SHADER_EXT &&
checkCanUseExtension(qualifierTypeLine, TExtension::EXT_geometry_shader))
{
checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
qualifier.primitiveType = EptLines;
}
else if (qualifierType == "lines_adjacency" && mShaderType == GL_GEOMETRY_SHADER_OES &&
checkCanUseExtension(qualifierTypeLine, TExtension::OES_geometry_shader))
else if (qualifierType == "lines_adjacency" && mShaderType == GL_GEOMETRY_SHADER_EXT &&
checkCanUseExtension(qualifierTypeLine, TExtension::EXT_geometry_shader))
{
checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
qualifier.primitiveType = EptLinesAdjacency;
}
else if (qualifierType == "triangles" && mShaderType == GL_GEOMETRY_SHADER_OES &&
checkCanUseExtension(qualifierTypeLine, TExtension::OES_geometry_shader))
else if (qualifierType == "triangles" && mShaderType == GL_GEOMETRY_SHADER_EXT &&
checkCanUseExtension(qualifierTypeLine, TExtension::EXT_geometry_shader))
{
checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
qualifier.primitiveType = EptTriangles;
}
else if (qualifierType == "triangles_adjacency" && mShaderType == GL_GEOMETRY_SHADER_OES &&
checkCanUseExtension(qualifierTypeLine, TExtension::OES_geometry_shader))
else if (qualifierType == "triangles_adjacency" && mShaderType == GL_GEOMETRY_SHADER_EXT &&
checkCanUseExtension(qualifierTypeLine, TExtension::EXT_geometry_shader))
{
checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
qualifier.primitiveType = EptTrianglesAdjacency;
}
else if (qualifierType == "line_strip" && mShaderType == GL_GEOMETRY_SHADER_OES &&
checkCanUseExtension(qualifierTypeLine, TExtension::OES_geometry_shader))
else if (qualifierType == "line_strip" && mShaderType == GL_GEOMETRY_SHADER_EXT &&
checkCanUseExtension(qualifierTypeLine, TExtension::EXT_geometry_shader))
{
checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
qualifier.primitiveType = EptLineStrip;
}
else if (qualifierType == "triangle_strip" && mShaderType == GL_GEOMETRY_SHADER_OES &&
checkCanUseExtension(qualifierTypeLine, TExtension::OES_geometry_shader))
else if (qualifierType == "triangle_strip" && mShaderType == GL_GEOMETRY_SHADER_EXT &&
checkCanUseExtension(qualifierTypeLine, TExtension::EXT_geometry_shader))
{
checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
qualifier.primitiveType = EptTriangleStrip;
......@@ -4540,13 +4532,13 @@ TLayoutQualifier TParseContext::parseLayoutQualifier(const TString &qualifierTyp
parseNumViews(intValue, intValueLine, intValueString, &qualifier.numViews);
}
}
else if (qualifierType == "invocations" && mShaderType == GL_GEOMETRY_SHADER_OES &&
checkCanUseExtension(qualifierTypeLine, TExtension::OES_geometry_shader))
else if (qualifierType == "invocations" && mShaderType == GL_GEOMETRY_SHADER_EXT &&
checkCanUseExtension(qualifierTypeLine, TExtension::EXT_geometry_shader))
{
parseInvocations(intValue, intValueLine, intValueString, &qualifier.invocations);
}
else if (qualifierType == "max_vertices" && mShaderType == GL_GEOMETRY_SHADER_OES &&
checkCanUseExtension(qualifierTypeLine, TExtension::OES_geometry_shader))
else if (qualifierType == "max_vertices" && mShaderType == GL_GEOMETRY_SHADER_EXT &&
checkCanUseExtension(qualifierTypeLine, TExtension::EXT_geometry_shader))
{
parseMaxVertices(intValue, intValueLine, intValueString, &qualifier.maxVertices);
}
......@@ -4611,7 +4603,7 @@ TStorageQualifierWrapper *TParseContext::parseInQualifier(const TSourceLoc &loc)
{
return new TStorageQualifierWrapper(EvqComputeIn, loc);
}
case GL_GEOMETRY_SHADER_OES:
case GL_GEOMETRY_SHADER_EXT:
{
return new TStorageQualifierWrapper(EvqGeometryIn, loc);
}
......@@ -4652,7 +4644,7 @@ TStorageQualifierWrapper *TParseContext::parseOutQualifier(const TSourceLoc &loc
error(loc, "storage qualifier isn't supported in compute shaders", "out");
return new TStorageQualifierWrapper(EvqLast, loc);
}
case GL_GEOMETRY_SHADER_OES:
case GL_GEOMETRY_SHADER_EXT:
{
return new TStorageQualifierWrapper(EvqGeometryOut, loc);
}
......@@ -5816,7 +5808,7 @@ TIntermTyped *TParseContext::addMethod(TFunction *fnCall,
else if (typedThis->getQualifier() == EvqPerVertexIn &&
mGeometryShaderInputPrimitiveType == EptUndefined)
{
ASSERT(mShaderType == GL_GEOMETRY_SHADER_OES);
ASSERT(mShaderType == GL_GEOMETRY_SHADER_EXT);
error(loc, "missing input primitive declaration before calling length on gl_in", "length");
}
else
......
......@@ -203,7 +203,7 @@ void InitBuiltInResources(ShBuiltInResources *resources)
resources->ARM_shader_framebuffer_fetch = 0;
resources->OVR_multiview = 0;
resources->EXT_YUV_target = 0;
resources->OES_geometry_shader = 0;
resources->EXT_geometry_shader = 0;
resources->NV_draw_buffers = 0;
......
......@@ -92,7 +92,7 @@ void TranslatorESSL::translate(TIntermBlock *root,
<< ", local_size_z=" << localSize[2] << ") in;\n";
}
if (getShaderType() == GL_GEOMETRY_SHADER_OES)
if (getShaderType() == GL_GEOMETRY_SHADER_EXT)
{
WriteGeometryShaderLayoutQualifiers(
sink, getGeometryShaderInputPrimitiveType(), getGeometryShaderInvocations(),
......@@ -148,13 +148,13 @@ void TranslatorESSL::writeExtensionBehavior(ShCompileOptions compileOptions)
sink << "#extension GL_NV_viewport_array2 : require\n";
}
}
else if (iter->first == TExtension::OES_geometry_shader)
else if (iter->first == TExtension::EXT_geometry_shader)
{
sink << "#ifdef GL_OES_geometry_shader\n"
<< "#extension GL_OES_geometry_shader : " << GetBehaviorString(iter->second)
<< "\n"
<< "#elif defined GL_EXT_geometry_shader\n"
sink << "#ifdef GL_EXT_geometry_shader\n"
<< "#extension GL_EXT_geometry_shader : " << GetBehaviorString(iter->second)
<< "\n"
<< "#elif defined GL_OES_geometry_shader\n"
<< "#extension GL_OES_geometry_shader : " << GetBehaviorString(iter->second)
<< "\n";
if (iter->second == EBhRequire)
{
......
......@@ -202,7 +202,7 @@ void TranslatorGLSL::translate(TIntermBlock *root,
<< ", local_size_z=" << localSize[2] << ") in;\n";
}
if (getShaderType() == GL_GEOMETRY_SHADER_OES)
if (getShaderType() == GL_GEOMETRY_SHADER_EXT)
{
WriteGeometryShaderLayoutQualifiers(
sink, getGeometryShaderInputPrimitiveType(), getGeometryShaderInvocations(),
......@@ -271,7 +271,7 @@ void TranslatorGLSL::writeExtensionBehavior(TIntermNode *root, ShCompileOptions
<< "\n";
}
if (iter.first == TExtension::OES_geometry_shader)
if (iter.first == TExtension::EXT_geometry_shader)
{
sink << "#extension GL_ARB_geometry_shader4 : " << GetBehaviorString(iter.second)
<< "\n";
......
......@@ -41,7 +41,7 @@ int GetLocationCount(const TIntermSymbol *varying, bool ignoreVaryingArraySize)
}
return totalLocation;
}
// [GL_OES_shader_io_blocks SPEC Chapter 4.4.1]
// [GL_EXT_shader_io_blocks SPEC Chapter 4.4.1]
// Geometry shader inputs, tessellation control shader inputs and outputs, and tessellation
// evaluation inputs all have an additional level of arrayness relative to other shader inputs
// and outputs. This outer array level is removed from the type before considering how many
......@@ -49,7 +49,7 @@ int GetLocationCount(const TIntermSymbol *varying, bool ignoreVaryingArraySize)
else if (ignoreVaryingArraySize)
{
// Array-of-arrays cannot be inputs or outputs of a geometry shader.
// (GL_OES_geometry_shader SPEC issues(5))
// (GL_EXT_geometry_shader SPEC issues(5))
ASSERT(!varyingType.isArrayOfArrays());
return varyingType.getSecondarySize();
}
......@@ -157,7 +157,7 @@ void ValidateVaryingLocationsTraverser::validate(TDiagnostics *diagnostics)
ASSERT(diagnostics);
ValidateShaderInterface(diagnostics, mInputVaryingsWithLocation,
mShaderType == GL_GEOMETRY_SHADER_OES);
mShaderType == GL_GEOMETRY_SHADER_EXT);
ValidateShaderInterface(diagnostics, mOutputVaryingsWithLocation, false);
}
......
......@@ -527,7 +527,7 @@ bool IsVarying(TQualifier qualifier)
bool IsGeometryShaderInput(GLenum shaderType, TQualifier qualifier)
{
return (qualifier == EvqGeometryIn) ||
((shaderType == GL_GEOMETRY_SHADER_OES) && IsInterpolationIn(qualifier));
((shaderType == GL_GEOMETRY_SHADER_EXT) && IsInterpolationIn(qualifier));
}
InterpolationType GetInterpolationType(TQualifier qualifier)
......
......@@ -132,8 +132,7 @@ Compiler::Compiler(rx::GLImplFactory *implFactory, const ContextState &state)
}
// Geometry Shader constants
// TODO(jiawei.shao@intel.com): use EXT_geometry_shader everywhere in compiler.
mResources.OES_geometry_shader = extensions.geometryShader;
mResources.EXT_geometry_shader = extensions.geometryShader;
mResources.MaxGeometryUniformComponents = caps.maxGeometryUniformComponents;
mResources.MaxGeometryUniformBlocks = caps.maxGeometryUniformBlocks;
mResources.MaxGeometryInputComponents = caps.maxGeometryInputComponents;
......
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