Web: Selectively remove a few key features, using #ifndef GLSLANG_WEB
Save about 100K. N.B.: This is done by eliminating a function call, at a high level, not by #ifdef'ing a bunch of code. Also, removed no longer needed *_EXTENSION #ifdef in the code not needed by GLSLANG_WEB.
This commit is contained in:
parent
bfc21ff1a9
commit
23d27751e8
@ -79,6 +79,10 @@ if(ENABLE_HLSL)
|
|||||||
add_definitions(-DENABLE_HLSL)
|
add_definitions(-DENABLE_HLSL)
|
||||||
endif(ENABLE_HLSL)
|
endif(ENABLE_HLSL)
|
||||||
|
|
||||||
|
if(ENABLE_GLSLANG_WEB)
|
||||||
|
add_definitions(-DGLSLANG_WEB)
|
||||||
|
endif(ENABLE_GLSLANG_WEB)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(CMAKE_DEBUG_POSTFIX "d")
|
set(CMAKE_DEBUG_POSTFIX "d")
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
|
|||||||
@ -1592,9 +1592,11 @@ void TGlslangToSpvTraverser::finishSpv()
|
|||||||
for (auto it = iOSet.cbegin(); it != iOSet.cend(); ++it)
|
for (auto it = iOSet.cbegin(); it != iOSet.cend(); ++it)
|
||||||
entryPoint->addIdOperand(*it);
|
entryPoint->addIdOperand(*it);
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
// Add capabilities, extensions, remove unneeded decorations, etc.,
|
// Add capabilities, extensions, remove unneeded decorations, etc.,
|
||||||
// based on the resulting SPIR-V.
|
// based on the resulting SPIR-V.
|
||||||
builder.postProcess();
|
builder.postProcess();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write the SPV into 'out'.
|
// Write the SPV into 'out'.
|
||||||
|
|||||||
@ -2089,6 +2089,7 @@ Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameter
|
|||||||
if (parameters.lod)
|
if (parameters.lod)
|
||||||
query->addIdOperand(parameters.lod);
|
query->addIdOperand(parameters.lod);
|
||||||
buildPoint->addInstruction(std::unique_ptr<Instruction>(query));
|
buildPoint->addInstruction(std::unique_ptr<Instruction>(query));
|
||||||
|
addCapability(CapabilityImageQuery);
|
||||||
|
|
||||||
return query->getResultId();
|
return query->getResultId();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,12 +51,8 @@ namespace spv {
|
|||||||
#include "GLSL.std.450.h"
|
#include "GLSL.std.450.h"
|
||||||
#include "GLSL.ext.KHR.h"
|
#include "GLSL.ext.KHR.h"
|
||||||
#include "GLSL.ext.EXT.h"
|
#include "GLSL.ext.EXT.h"
|
||||||
#ifdef AMD_EXTENSIONS
|
|
||||||
#include "GLSL.ext.AMD.h"
|
#include "GLSL.ext.AMD.h"
|
||||||
#endif
|
|
||||||
#ifdef NV_EXTENSIONS
|
|
||||||
#include "GLSL.ext.NV.h"
|
#include "GLSL.ext.NV.h"
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace spv {
|
namespace spv {
|
||||||
@ -160,7 +156,6 @@ void Builder::postProcessType(const Instruction& inst, Id typeId)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case OpExtInst:
|
case OpExtInst:
|
||||||
#if AMD_EXTENSIONS
|
|
||||||
switch (inst.getImmediateOperand(1)) {
|
switch (inst.getImmediateOperand(1)) {
|
||||||
case GLSLstd450Frexp:
|
case GLSLstd450Frexp:
|
||||||
case GLSLstd450FrexpStruct:
|
case GLSLstd450FrexpStruct:
|
||||||
@ -176,7 +171,6 @@ void Builder::postProcessType(const Instruction& inst, Id typeId)
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (basicTypeOp == OpTypeFloat && width == 16)
|
if (basicTypeOp == OpTypeFloat && width == 16)
|
||||||
@ -222,12 +216,10 @@ void Builder::postProcess(Instruction& inst)
|
|||||||
addCapability(CapabilityImageQuery);
|
addCapability(CapabilityImageQuery);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef NV_EXTENSIONS
|
|
||||||
case OpGroupNonUniformPartitionNV:
|
case OpGroupNonUniformPartitionNV:
|
||||||
addExtension(E_SPV_NV_shader_subgroup_partitioned);
|
addExtension(E_SPV_NV_shader_subgroup_partitioned);
|
||||||
addCapability(CapabilityGroupNonUniformPartitionedNV);
|
addCapability(CapabilityGroupNonUniformPartitionedNV);
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
|
|
||||||
case OpLoad:
|
case OpLoad:
|
||||||
case OpStore:
|
case OpStore:
|
||||||
|
|||||||
@ -52,26 +52,16 @@ namespace spv {
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
// Include C-based headers that don't have a namespace
|
// Include C-based headers that don't have a namespace
|
||||||
#include "GLSL.std.450.h"
|
#include "GLSL.std.450.h"
|
||||||
#ifdef AMD_EXTENSIONS
|
|
||||||
#include "GLSL.ext.AMD.h"
|
#include "GLSL.ext.AMD.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NV_EXTENSIONS
|
|
||||||
#include "GLSL.ext.NV.h"
|
#include "GLSL.ext.NV.h"
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const char* GlslStd450DebugNames[spv::GLSLstd450Count];
|
const char* GlslStd450DebugNames[spv::GLSLstd450Count];
|
||||||
|
|
||||||
namespace spv {
|
namespace spv {
|
||||||
|
|
||||||
#ifdef AMD_EXTENSIONS
|
|
||||||
static const char* GLSLextAMDGetDebugNames(const char*, unsigned);
|
static const char* GLSLextAMDGetDebugNames(const char*, unsigned);
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NV_EXTENSIONS
|
|
||||||
static const char* GLSLextNVGetDebugNames(const char*, unsigned);
|
static const char* GLSLextNVGetDebugNames(const char*, unsigned);
|
||||||
#endif
|
|
||||||
|
|
||||||
static void Kill(std::ostream& out, const char* message)
|
static void Kill(std::ostream& out, const char* message)
|
||||||
{
|
{
|
||||||
@ -82,15 +72,8 @@ static void Kill(std::ostream& out, const char* message)
|
|||||||
// used to identify the extended instruction library imported when printing
|
// used to identify the extended instruction library imported when printing
|
||||||
enum ExtInstSet {
|
enum ExtInstSet {
|
||||||
GLSL450Inst,
|
GLSL450Inst,
|
||||||
|
|
||||||
#ifdef AMD_EXTENSIONS
|
|
||||||
GLSLextAMDInst,
|
GLSLextAMDInst,
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NV_EXTENSIONS
|
|
||||||
GLSLextNVInst,
|
GLSLextNVInst,
|
||||||
#endif
|
|
||||||
|
|
||||||
OpenCLExtInst,
|
OpenCLExtInst,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -499,37 +482,29 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
|
|||||||
const char* name = idDescriptor[stream[word - 2]].c_str();
|
const char* name = idDescriptor[stream[word - 2]].c_str();
|
||||||
if (0 == memcmp("OpenCL", name, 6)) {
|
if (0 == memcmp("OpenCL", name, 6)) {
|
||||||
extInstSet = OpenCLExtInst;
|
extInstSet = OpenCLExtInst;
|
||||||
#ifdef AMD_EXTENSIONS
|
|
||||||
} else if (strcmp(spv::E_SPV_AMD_shader_ballot, name) == 0 ||
|
} else if (strcmp(spv::E_SPV_AMD_shader_ballot, name) == 0 ||
|
||||||
strcmp(spv::E_SPV_AMD_shader_trinary_minmax, name) == 0 ||
|
strcmp(spv::E_SPV_AMD_shader_trinary_minmax, name) == 0 ||
|
||||||
strcmp(spv::E_SPV_AMD_shader_explicit_vertex_parameter, name) == 0 ||
|
strcmp(spv::E_SPV_AMD_shader_explicit_vertex_parameter, name) == 0 ||
|
||||||
strcmp(spv::E_SPV_AMD_gcn_shader, name) == 0) {
|
strcmp(spv::E_SPV_AMD_gcn_shader, name) == 0) {
|
||||||
extInstSet = GLSLextAMDInst;
|
extInstSet = GLSLextAMDInst;
|
||||||
#endif
|
} else if (strcmp(spv::E_SPV_NV_sample_mask_override_coverage, name) == 0 ||
|
||||||
#ifdef NV_EXTENSIONS
|
|
||||||
}else if (strcmp(spv::E_SPV_NV_sample_mask_override_coverage, name) == 0 ||
|
|
||||||
strcmp(spv::E_SPV_NV_geometry_shader_passthrough, name) == 0 ||
|
strcmp(spv::E_SPV_NV_geometry_shader_passthrough, name) == 0 ||
|
||||||
strcmp(spv::E_SPV_NV_viewport_array2, name) == 0 ||
|
strcmp(spv::E_SPV_NV_viewport_array2, name) == 0 ||
|
||||||
strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 ||
|
strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 ||
|
||||||
strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0 ||
|
strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0 ||
|
||||||
strcmp(spv::E_SPV_NV_mesh_shader, name) == 0) {
|
strcmp(spv::E_SPV_NV_mesh_shader, name) == 0) {
|
||||||
extInstSet = GLSLextNVInst;
|
extInstSet = GLSLextNVInst;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
unsigned entrypoint = stream[word - 1];
|
unsigned entrypoint = stream[word - 1];
|
||||||
if (extInstSet == GLSL450Inst) {
|
if (extInstSet == GLSL450Inst) {
|
||||||
if (entrypoint < GLSLstd450Count) {
|
if (entrypoint < GLSLstd450Count) {
|
||||||
out << "(" << GlslStd450DebugNames[entrypoint] << ")";
|
out << "(" << GlslStd450DebugNames[entrypoint] << ")";
|
||||||
}
|
}
|
||||||
#ifdef AMD_EXTENSIONS
|
|
||||||
} else if (extInstSet == GLSLextAMDInst) {
|
} else if (extInstSet == GLSLextAMDInst) {
|
||||||
out << "(" << GLSLextAMDGetDebugNames(name, entrypoint) << ")";
|
out << "(" << GLSLextAMDGetDebugNames(name, entrypoint) << ")";
|
||||||
#endif
|
|
||||||
#ifdef NV_EXTENSIONS
|
|
||||||
}
|
}
|
||||||
else if (extInstSet == GLSLextNVInst) {
|
else if (extInstSet == GLSLextNVInst) {
|
||||||
out << "(" << GLSLextNVGetDebugNames(name, entrypoint) << ")";
|
out << "(" << GLSLextNVGetDebugNames(name, entrypoint) << ")";
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -653,7 +628,6 @@ static void GLSLstd450GetDebugNames(const char** names)
|
|||||||
names[GLSLstd450NClamp] = "NClamp";
|
names[GLSLstd450NClamp] = "NClamp";
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef AMD_EXTENSIONS
|
|
||||||
static const char* GLSLextAMDGetDebugNames(const char* name, unsigned entrypoint)
|
static const char* GLSLextAMDGetDebugNames(const char* name, unsigned entrypoint)
|
||||||
{
|
{
|
||||||
if (strcmp(name, spv::E_SPV_AMD_shader_ballot) == 0) {
|
if (strcmp(name, spv::E_SPV_AMD_shader_ballot) == 0) {
|
||||||
@ -695,9 +669,7 @@ static const char* GLSLextAMDGetDebugNames(const char* name, unsigned entrypoint
|
|||||||
|
|
||||||
return "Bad";
|
return "Bad";
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NV_EXTENSIONS
|
|
||||||
static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
|
static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
|
||||||
{
|
{
|
||||||
if (strcmp(name, spv::E_SPV_NV_sample_mask_override_coverage) == 0 ||
|
if (strcmp(name, spv::E_SPV_NV_sample_mask_override_coverage) == 0 ||
|
||||||
@ -751,7 +723,6 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
|
|||||||
}
|
}
|
||||||
return "Bad";
|
return "Bad";
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void Disassemble(std::ostream& out, const std::vector<unsigned int>& stream)
|
void Disassemble(std::ostream& out, const std::vector<unsigned int>& stream)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -234,7 +234,6 @@ std::string GetDefaultTBuiltInResourceString()
|
|||||||
<< "MaxCullDistances " << DefaultTBuiltInResource.maxCullDistances << "\n"
|
<< "MaxCullDistances " << DefaultTBuiltInResource.maxCullDistances << "\n"
|
||||||
<< "MaxCombinedClipAndCullDistances " << DefaultTBuiltInResource.maxCombinedClipAndCullDistances << "\n"
|
<< "MaxCombinedClipAndCullDistances " << DefaultTBuiltInResource.maxCombinedClipAndCullDistances << "\n"
|
||||||
<< "MaxSamples " << DefaultTBuiltInResource.maxSamples << "\n"
|
<< "MaxSamples " << DefaultTBuiltInResource.maxSamples << "\n"
|
||||||
#ifdef NV_EXTENSIONS
|
|
||||||
<< "MaxMeshOutputVerticesNV " << DefaultTBuiltInResource.maxMeshOutputVerticesNV << "\n"
|
<< "MaxMeshOutputVerticesNV " << DefaultTBuiltInResource.maxMeshOutputVerticesNV << "\n"
|
||||||
<< "MaxMeshOutputPrimitivesNV " << DefaultTBuiltInResource.maxMeshOutputPrimitivesNV << "\n"
|
<< "MaxMeshOutputPrimitivesNV " << DefaultTBuiltInResource.maxMeshOutputPrimitivesNV << "\n"
|
||||||
<< "MaxMeshWorkGroupSizeX_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_NV << "\n"
|
<< "MaxMeshWorkGroupSizeX_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_NV << "\n"
|
||||||
@ -244,7 +243,6 @@ std::string GetDefaultTBuiltInResourceString()
|
|||||||
<< "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n"
|
<< "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n"
|
||||||
<< "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n"
|
<< "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n"
|
||||||
<< "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n"
|
<< "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n"
|
||||||
#endif
|
|
||||||
<< "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n"
|
<< "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n"
|
||||||
<< "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n"
|
<< "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n"
|
||||||
<< "doWhileLoops " << DefaultTBuiltInResource.limits.doWhileLoops << "\n"
|
<< "doWhileLoops " << DefaultTBuiltInResource.limits.doWhileLoops << "\n"
|
||||||
@ -451,7 +449,6 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config)
|
|||||||
resources->maxCombinedClipAndCullDistances = value;
|
resources->maxCombinedClipAndCullDistances = value;
|
||||||
else if (tokenStr == "MaxSamples")
|
else if (tokenStr == "MaxSamples")
|
||||||
resources->maxSamples = value;
|
resources->maxSamples = value;
|
||||||
#ifdef NV_EXTENSIONS
|
|
||||||
else if (tokenStr == "MaxMeshOutputVerticesNV")
|
else if (tokenStr == "MaxMeshOutputVerticesNV")
|
||||||
resources->maxMeshOutputVerticesNV = value;
|
resources->maxMeshOutputVerticesNV = value;
|
||||||
else if (tokenStr == "MaxMeshOutputPrimitivesNV")
|
else if (tokenStr == "MaxMeshOutputPrimitivesNV")
|
||||||
@ -470,7 +467,6 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config)
|
|||||||
resources->maxTaskWorkGroupSizeZ_NV = value;
|
resources->maxTaskWorkGroupSizeZ_NV = value;
|
||||||
else if (tokenStr == "MaxMeshViewCountNV")
|
else if (tokenStr == "MaxMeshViewCountNV")
|
||||||
resources->maxMeshViewCountNV = value;
|
resources->maxMeshViewCountNV = value;
|
||||||
#endif
|
|
||||||
else if (tokenStr == "nonInductiveForLoops")
|
else if (tokenStr == "nonInductiveForLoops")
|
||||||
resources->limits.nonInductiveForLoops = (value != 0);
|
resources->limits.nonInductiveForLoops = (value != 0);
|
||||||
else if (tokenStr == "whileLoops")
|
else if (tokenStr == "whileLoops")
|
||||||
|
|||||||
@ -146,11 +146,13 @@ void ProcessConfigFile()
|
|||||||
{
|
{
|
||||||
if (ConfigFile.size() == 0)
|
if (ConfigFile.size() == 0)
|
||||||
Resources = glslang::DefaultTBuiltInResource;
|
Resources = glslang::DefaultTBuiltInResource;
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
else {
|
else {
|
||||||
char* configString = ReadFileData(ConfigFile.c_str());
|
char* configString = ReadFileData(ConfigFile.c_str());
|
||||||
glslang::DecodeResourceLimits(&Resources, configString);
|
glslang::DecodeResourceLimits(&Resources, configString);
|
||||||
FreeFileData(configString);
|
FreeFileData(configString);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int ReflectOptions = EShReflectionDefault;
|
int ReflectOptions = EShReflectionDefault;
|
||||||
@ -1118,8 +1120,10 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
|||||||
} else {
|
} else {
|
||||||
glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage));
|
glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage));
|
||||||
}
|
}
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv))
|
if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv))
|
||||||
spv::Disassemble(std::cout, spirv);
|
spv::Disassemble(std::cout, spirv);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1207,11 +1211,13 @@ int singleMain()
|
|||||||
workList.add(item.get());
|
workList.add(item.get());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
if (Options & EOptionDumpConfig) {
|
if (Options & EOptionDumpConfig) {
|
||||||
printf("%s", glslang::GetDefaultTBuiltInResourceString().c_str());
|
printf("%s", glslang::GetDefaultTBuiltInResourceString().c_str());
|
||||||
if (workList.empty())
|
if (workList.empty())
|
||||||
return ESuccess;
|
return ESuccess;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (Options & EOptionDumpBareVersion) {
|
if (Options & EOptionDumpBareVersion) {
|
||||||
printf("%d.%d.%d\n",
|
printf("%d.%d.%d\n",
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
1202688 ../build/install/bin/glslangValidator.exe
|
1097728 ../build/install/bin/glslangValidator.exe
|
||||||
|
|||||||
@ -55,8 +55,8 @@ diff -b $BASEDIR/hlsl.automap.frag.out $TARGETDIR/hlsl.automap.frag.out || HASER
|
|||||||
# multi-threaded test
|
# multi-threaded test
|
||||||
#
|
#
|
||||||
echo Comparing single thread to multithread for all tests in current directory...
|
echo Comparing single thread to multithread for all tests in current directory...
|
||||||
$EXE -i -C *.vert *.geom *.frag *.tes* *.comp > singleThread.out
|
$EXE -i -C *.vert *.geom *.frag *.tesc *.tese *.comp > singleThread.out
|
||||||
$EXE -i -C *.vert *.geom *.frag *.tes* *.comp -t > multiThread.out
|
$EXE -i -C *.vert *.geom *.frag *.tesc *.tese *.comp -t > multiThread.out
|
||||||
diff singleThread.out multiThread.out || HASERROR=1
|
diff singleThread.out multiThread.out || HASERROR=1
|
||||||
if [ $HASERROR -eq 0 ]
|
if [ $HASERROR -eq 0 ]
|
||||||
then
|
then
|
||||||
|
|||||||
@ -2729,6 +2729,7 @@ bool TIntermediate::postProcess(TIntermNode* root, EShLanguage /*language*/)
|
|||||||
if (aggRoot && aggRoot->getOp() == EOpNull)
|
if (aggRoot && aggRoot->getOp() == EOpNull)
|
||||||
aggRoot->setOperator(EOpSequence);
|
aggRoot->setOperator(EOpSequence);
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
// Propagate 'noContraction' label in backward from 'precise' variables.
|
// Propagate 'noContraction' label in backward from 'precise' variables.
|
||||||
glslang::PropagateNoContraction(*this);
|
glslang::PropagateNoContraction(*this);
|
||||||
|
|
||||||
@ -2739,6 +2740,7 @@ bool TIntermediate::postProcess(TIntermNode* root, EShLanguage /*language*/)
|
|||||||
performTextureUpgradeAndSamplerRemovalTransformation(root);
|
performTextureUpgradeAndSamplerRemovalTransformation(root);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4737,9 +4737,11 @@ void TParseContext::finish()
|
|||||||
if (parsingBuiltins)
|
if (parsingBuiltins)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
// Check on array indexes for ES 2.0 (version 100) limitations.
|
// Check on array indexes for ES 2.0 (version 100) limitations.
|
||||||
for (size_t i = 0; i < needsIndexLimitationChecking.size(); ++i)
|
for (size_t i = 0; i < needsIndexLimitationChecking.size(); ++i)
|
||||||
constantIndexExpressionCheck(needsIndexLimitationChecking[i]);
|
constantIndexExpressionCheck(needsIndexLimitationChecking[i]);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Check for stages that are enabled by extension.
|
// Check for stages that are enabled by extension.
|
||||||
// Can't do this at the beginning, it is chicken and egg to add a stage by
|
// Can't do this at the beginning, it is chicken and egg to add a stage by
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user