зеркало из https://github.com/stride3d/xkslang.git
Add a new shader-versioning infrastructure capable of handling multiple profiles, desktop/ES, many versions, features coming and going in different versions across different profiles, and extensions.
NB: *Use* of this infrastructure is so far only skeletal. Fixed a few typos and minor issues along the way. git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@19951 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
Родитель
5d3e2e35b6
Коммит
9fd55bd338
|
@ -1,145 +0,0 @@
|
||||||
<?xml version="1.0" encoding = "Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="7.00"
|
|
||||||
Name="Tests - StandAlone"
|
|
||||||
ProjectGUID="{660D0A05-69A9-4F09-9664-02FBEB08FAE2}">
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"/>
|
|
||||||
</Platforms>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="UserM_Debug|Win32"
|
|
||||||
OutputDirectory="UserM_Debug"
|
|
||||||
IntermediateDirectory="UserM_Debug"
|
|
||||||
ConfigurationType="1"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="FALSE"
|
|
||||||
CharacterSet="2">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="glslang"
|
|
||||||
PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE,GENERIC_COMPILER"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="5"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
PrecompiledHeaderFile=""
|
|
||||||
AssemblerListingLocation="UserM_Debug/"
|
|
||||||
ObjectFile="UserM_Debug/"
|
|
||||||
ProgramDataBaseFileName="UserM_Debug/Standalone"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="TRUE"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
CallingConvention="1"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalOptions="/MACHINE:I386"
|
|
||||||
AdditionalDependencies="odbc32.lib odbccp32.lib psapi.lib Standalone\glslang.lib"
|
|
||||||
OutputFile="UserM_Debug/StandAlone.exe"
|
|
||||||
LinkIncremental="2"
|
|
||||||
SuppressStartupBanner="TRUE"
|
|
||||||
IgnoreDefaultLibraryNames=""
|
|
||||||
GenerateDebugInformation="TRUE"
|
|
||||||
ProgramDatabaseFile="UserM_Debug/StandAlone.pdb"
|
|
||||||
SubSystem="1"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
TypeLibraryName="UserM_Debug/StandAlone.tlb"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
Description="move exe"
|
|
||||||
CommandLine="xcopy /y UserM_Debug\StandAlone.exe Standalone"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
Culture="1033"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="UserM_Release|Win32"
|
|
||||||
OutputDirectory="UserM_Release"
|
|
||||||
IntermediateDirectory="UserM_Release"
|
|
||||||
ConfigurationType="1"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="FALSE"
|
|
||||||
CharacterSet="2">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
InlineFunctionExpansion="1"
|
|
||||||
OmitFramePointers="TRUE"
|
|
||||||
AdditionalIncludeDirectories="glslang"
|
|
||||||
PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE,GENERIC_COMPILER"
|
|
||||||
StringPooling="TRUE"
|
|
||||||
BasicRuntimeChecks="0"
|
|
||||||
RuntimeLibrary="4"
|
|
||||||
BufferSecurityCheck="TRUE"
|
|
||||||
EnableFunctionLevelLinking="TRUE"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
PrecompiledHeaderFile=""
|
|
||||||
AssemblerListingLocation="UserM_Release/"
|
|
||||||
ObjectFile="UserM_Release/"
|
|
||||||
ProgramDataBaseFileName="UserM_Release/Standalone"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="TRUE"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
CallingConvention="1"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalOptions="/MACHINE:I386"
|
|
||||||
AdditionalDependencies="odbc32.lib odbccp32.lib psapi.lib Standalone\glslang.lib"
|
|
||||||
OutputFile="UserM_Release/StandAlone.exe"
|
|
||||||
LinkIncremental="1"
|
|
||||||
SuppressStartupBanner="TRUE"
|
|
||||||
IgnoreDefaultLibraryNames=""
|
|
||||||
GenerateDebugInformation="TRUE"
|
|
||||||
ProgramDatabaseFile="UserM_Release/StandAlone.pdb"
|
|
||||||
SubSystem="1"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
TypeLibraryName="UserM_Release/StandAlone.tlb"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
Description="move exe"
|
|
||||||
CommandLine="xcopy /y UserM_Release\StandAlone.exe Standalone"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="NDEBUG"
|
|
||||||
Culture="1033"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
|
|
||||||
<File
|
|
||||||
RelativePath="Standalone\StandAlone.cpp">
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
|
@ -0,0 +1,151 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectName>StandAlone</ProjectName>
|
||||||
|
<ProjectGuid>{660D0A05-69A9-4F09-9664-02FBEB08FAE2}</ProjectGuid>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseOfMfc>false</UseOfMfc>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseOfMfc>false</UseOfMfc>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||||
|
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">StandAlone\UserM_Debug\</OutDir>
|
||||||
|
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">StandAlone\UserM_Debug\</IntDir>
|
||||||
|
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||||
|
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">UserM_Release\</OutDir>
|
||||||
|
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">UserM_Release\</IntDir>
|
||||||
|
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<AdditionalIncludeDirectories>glslang;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;GENERIC_COMPILER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderOutputFile>
|
||||||
|
</PrecompiledHeaderOutputFile>
|
||||||
|
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
||||||
|
<ObjectFileName>$(IntDir)</ObjectFileName>
|
||||||
|
<ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<CallingConvention>FastCall</CallingConvention>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<AdditionalDependencies>odbc32.lib;odbccp32.lib;psapi.lib;UserM_Debug\generic\glslang.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<ProgramDatabaseFile>UserM_Debug/StandAlone.pdb</ProgramDatabaseFile>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
</Link>
|
||||||
|
<Midl>
|
||||||
|
<TypeLibraryName>UserM_Debug/StandAlone.tlb</TypeLibraryName>
|
||||||
|
</Midl>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>move exe</Message>
|
||||||
|
<Command>xcopy /y StandAlone\UserM_Debug\StandAlone.exe Test</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<Culture>0x0409</Culture>
|
||||||
|
</ResourceCompile>
|
||||||
|
<PreLinkEvent>
|
||||||
|
<Command>
|
||||||
|
</Command>
|
||||||
|
</PreLinkEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
|
<OmitFramePointers>true</OmitFramePointers>
|
||||||
|
<AdditionalIncludeDirectories>glslang;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;GENERIC_COMPILER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<StringPooling>true</StringPooling>
|
||||||
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderOutputFile>
|
||||||
|
</PrecompiledHeaderOutputFile>
|
||||||
|
<AssemblerListingLocation>UserM_Release/</AssemblerListingLocation>
|
||||||
|
<ObjectFileName>UserM_Release/</ObjectFileName>
|
||||||
|
<ProgramDataBaseFileName>UserM_Release/Standalone</ProgramDataBaseFileName>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<CallingConvention>FastCall</CallingConvention>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<AdditionalDependencies>odbc32.lib;odbccp32.lib;psapi.lib;Standalone\glslang.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<OutputFile>UserM_Release/StandAlone.exe</OutputFile>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<ProgramDatabaseFile>UserM_Release/StandAlone.pdb</ProgramDatabaseFile>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
</Link>
|
||||||
|
<Midl>
|
||||||
|
<TypeLibraryName>UserM_Release/StandAlone.tlb</TypeLibraryName>
|
||||||
|
</Midl>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>move exe</Message>
|
||||||
|
<Command>xcopy /y StandAlone\UserM_Release\StandAlone.exe StandAlone</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<Culture>0x0409</Culture>
|
||||||
|
</ResourceCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Standalone\StandAlone.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="glslang.vcxproj">
|
||||||
|
<Project>{3b146cc5-b2b8-4573-9d46-6139e2edfea3}</Project>
|
||||||
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{fcd4a310-b19f-40bd-9324-e7d4e7d4dad1}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Standalone\StandAlone.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,5 @@
|
||||||
|
.\StandAlone.exe -i sample.vert > sample.vert.newout
|
||||||
|
diff sample.vert.out sample.vert.newout
|
||||||
|
|
||||||
|
.\StandAlone.exe -i sample.frag > sample.frag.newout
|
||||||
|
diff sample.frag.out sample.frag.newout
|
|
@ -0,0 +1 @@
|
||||||
|
for /F "tokens=*" %%f in (testlist) do .\StandAlone.exe -i %%f
|
|
@ -36,5 +36,5 @@ varying vec3 color;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_FragColor = vec4(color, 1.0);
|
gl_FragColor = vec4(color, 1.0f);
|
||||||
}
|
}
|
|
@ -6,7 +6,7 @@
|
||||||
0:39 move second child to first child (4-component vector of float)
|
0:39 move second child to first child (4-component vector of float)
|
||||||
0:39 'gl_FragColor' (FragColor 4-component vector of float)
|
0:39 'gl_FragColor' (FragColor 4-component vector of float)
|
||||||
0:39 Construct vec4 (4-component vector of float)
|
0:39 Construct vec4 (4-component vector of float)
|
||||||
0:39 'color' (varying 3-component vector of float)
|
0:39 'color' (varying in 3-component vector of float)
|
||||||
0:39 1.000000 (const float)
|
0:39 1.000000 (const float)
|
||||||
|
|
||||||
#### END COMPILER 0 INFO LOG ####
|
#### END COMPILER 0 INFO LOG ####
|
|
@ -4,7 +4,7 @@
|
||||||
0:37 Function Parameters:
|
0:37 Function Parameters:
|
||||||
0:39 Sequence
|
0:39 Sequence
|
||||||
0:39 move second child to first child (3-component vector of float)
|
0:39 move second child to first child (3-component vector of float)
|
||||||
0:39 'color' (varying 3-component vector of float)
|
0:39 'color' (varying out 3-component vector of float)
|
||||||
0:39 1.000000 (const float)
|
0:39 1.000000 (const float)
|
||||||
0:39 1.000000 (const float)
|
0:39 1.000000 (const float)
|
||||||
0:39 1.000000 (const float)
|
0:39 1.000000 (const float)
|
|
@ -0,0 +1,237 @@
|
||||||
|
#version 430
|
||||||
|
|
||||||
|
#extension GL_3DL_array_objects : enable
|
||||||
|
|
||||||
|
int a = 0xffffffff; // 32 bits, a gets the value -1
|
||||||
|
//int b = 0xffffffffU; // ERROR: can't convert uint to int
|
||||||
|
uint c = 0xffffffff; // 32 bits, c gets the value 0xFFFFFFFF
|
||||||
|
//uint d = 0xffffffffU; // 32 bits, d gets the value 0xFFFFFFFF
|
||||||
|
int e = -1; // the literal is “1”, then negation is performed,
|
||||||
|
// and the resulting non-literal 32-bit signed
|
||||||
|
// bit pattern of 0xFFFFFFFF is assigned, giving e
|
||||||
|
// the value of -1.
|
||||||
|
//uint f = -1u; // the literal is “1u”, then negation is performed,
|
||||||
|
// and the resulting non-literal 32-bit unsigned
|
||||||
|
// bit pattern of 0xFFFFFFFF is assigned, giving f
|
||||||
|
// the value of 0xFFFFFFFF.
|
||||||
|
int g = 3000000000; // a signed decimal literal taking 32 bits,
|
||||||
|
// setting the sign bit, g gets -1294967296
|
||||||
|
int h = 0xA0000000; // okay, 32-bit signed hexadecimal
|
||||||
|
//int i = 5000000000; // ERROR: needs more than 32 bits
|
||||||
|
//int j = 0xFFFFFFFFF; // ERROR: needs more that 32 bits
|
||||||
|
int k = 0x80000000; // k gets -2147483648 == 0x80000000
|
||||||
|
int l = 2147483648; // l gets -2147483648 (the literal set the sign bit)
|
||||||
|
|
||||||
|
float fa, fb = 1.5; // single-precision floating-point
|
||||||
|
//double fc, fd = 2.0LF; // double-precision floating-point
|
||||||
|
|
||||||
|
vec2 texcoord1, texcoord2;
|
||||||
|
vec3 position;
|
||||||
|
vec4 myRGBA;
|
||||||
|
ivec2 textureLookup;
|
||||||
|
bvec3 less;
|
||||||
|
|
||||||
|
mat2 mat2D;
|
||||||
|
mat3 optMatrix;
|
||||||
|
mat4 view, projection;
|
||||||
|
mat4x4 view; // an alternate way of declaring a mat4
|
||||||
|
mat3x2 m; // a matrix with 3 columns and 2 rows
|
||||||
|
dmat4 highPrecisionMVP;
|
||||||
|
dmat2x4 dm;
|
||||||
|
|
||||||
|
struct light {
|
||||||
|
float intensity;
|
||||||
|
vec3 position;
|
||||||
|
} lightVar;
|
||||||
|
|
||||||
|
struct S { float f; };
|
||||||
|
|
||||||
|
struct T {
|
||||||
|
//S; // Error: anonymous structures disallowed
|
||||||
|
//struct { ... }; // Error: embedded structures disallowed
|
||||||
|
S s; // Okay: nested structures with name are allowed
|
||||||
|
};
|
||||||
|
|
||||||
|
float frequencies[3];
|
||||||
|
uniform vec4 lightPosition[4];
|
||||||
|
light lights[];
|
||||||
|
const int numLights = 2;
|
||||||
|
light lights[numLights];
|
||||||
|
|
||||||
|
in vec3 normal;
|
||||||
|
centroid in vec2 TexCoord;
|
||||||
|
invariant centroid in vec4 Color;
|
||||||
|
noperspective in float temperature;
|
||||||
|
flat in vec3 myColor;
|
||||||
|
noperspective centroid in vec2 myTexCoord;
|
||||||
|
|
||||||
|
uniform vec4 lightPosition;
|
||||||
|
uniform vec3 color = vec3(0.7, 0.7, 0.2); // value assigned at link time
|
||||||
|
|
||||||
|
in Material {
|
||||||
|
smooth in vec4 Color1; // legal, input inside in block
|
||||||
|
smooth vec4 Color2; // legal, 'in' inherited from 'in Material'
|
||||||
|
vec2 TexCoord; // legal, TexCoord is an input
|
||||||
|
uniform float Atten; // illegal, mismatched storage qualifier
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
in Light {
|
||||||
|
vec4 LightPos;
|
||||||
|
vec3 LightColor;
|
||||||
|
};
|
||||||
|
in ColoredTexture {
|
||||||
|
vec4 Color;
|
||||||
|
vec2 TexCoord;
|
||||||
|
} Material; // instance name
|
||||||
|
vec3 Color; // different Color than Material.Color
|
||||||
|
|
||||||
|
in vec4 gl_FragCoord; // redeclaration that changes nothing is allowed
|
||||||
|
|
||||||
|
// All the following are allowed redeclaration that change behavior
|
||||||
|
layout(origin_upper_left) in vec4 gl_FragCoord;
|
||||||
|
layout(pixel_center_integer) in vec4 gl_FragCoord;
|
||||||
|
layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;
|
||||||
|
|
||||||
|
layout(early_fragment_tests) in;
|
||||||
|
|
||||||
|
// compute shader:
|
||||||
|
layout (local_size_x = 32, local_size_y = 32) in;
|
||||||
|
layout (local_size_x = 8) in;
|
||||||
|
|
||||||
|
layout(location = 3) out vec4 color;
|
||||||
|
layout(location = 3, index = 1) out vec4 factor;
|
||||||
|
layout(location = 2) out vec4 colors[3];
|
||||||
|
|
||||||
|
layout (depth_greater) out float gl_FragDepth;
|
||||||
|
|
||||||
|
// redeclaration that changes nothing is allowed
|
||||||
|
out float gl_FragDepth;
|
||||||
|
|
||||||
|
// assume it may be modified in any way
|
||||||
|
layout (depth_any) out float gl_FragDepth;
|
||||||
|
|
||||||
|
// assume it may be modified such that its value will only increase
|
||||||
|
layout (depth_greater) out float gl_FragDepth;
|
||||||
|
|
||||||
|
// assume it may be modified such that its value will only decrease
|
||||||
|
layout (depth_less) out float gl_FragDepth;
|
||||||
|
|
||||||
|
// assume it will not be modified
|
||||||
|
layout (depth_unchanged) out float gl_FragDepth;
|
||||||
|
|
||||||
|
in vec4 gl_Color; // predeclared by the fragment language
|
||||||
|
flat in vec4 gl_Color; // redeclared by user to be flat
|
||||||
|
|
||||||
|
|
||||||
|
float[5] foo(float[5])
|
||||||
|
{
|
||||||
|
return float[5](3.4, 4.2, 5.0, 5.2, 1.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
precision highp float;
|
||||||
|
precision highp int;
|
||||||
|
precision mediump int;
|
||||||
|
precision highp float;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
{
|
||||||
|
float a[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
float a[5] = float[](3.4, 4.2, 5.0, 5.2, 1.1); // same thing
|
||||||
|
}
|
||||||
|
{
|
||||||
|
vec4 a[3][2]; // size-3 array of size-2 array of vec4
|
||||||
|
vec4[2] a1[3]; // size-3 array of size-2 array of vec4
|
||||||
|
vec4[3][2] a2; // size-3 array of size-2 array of vec4
|
||||||
|
vec4 b[2] = vec4[2](vec4(0.0), vec4(0.1));
|
||||||
|
vec4[3][2] a3 = vec4[3][2](b, b, b); // constructor
|
||||||
|
void foo(vec4[3][2]); // prototype with unnamed parameter
|
||||||
|
vec4 a4[3][2] = {vec4[2](vec4(0.0), vec4(1.0)),
|
||||||
|
vec4[2](vec4(0.0), vec4(1.0)),
|
||||||
|
vec4[2](vec4(0.0), vec4(1.0)) };
|
||||||
|
}
|
||||||
|
{
|
||||||
|
float a[5];
|
||||||
|
{
|
||||||
|
float b[] = a; // b is explicitly size 5
|
||||||
|
}
|
||||||
|
{
|
||||||
|
float b[5] = a; // means the same thing
|
||||||
|
}
|
||||||
|
{
|
||||||
|
float b[] = float[](1,2,3,4,5); // also explicitly sizes to 5
|
||||||
|
}
|
||||||
|
a.length(); // returns 5
|
||||||
|
}
|
||||||
|
{
|
||||||
|
vec4 a[3][2];
|
||||||
|
a.length(); // this is 3
|
||||||
|
a[x].length(); // this is 2
|
||||||
|
}
|
||||||
|
// for an array b containing a member array a:
|
||||||
|
b[++x].a.length(); // b is never dereferenced, but “++x” is evaluated
|
||||||
|
|
||||||
|
// for an array s of a shader storage object containing a member array a:
|
||||||
|
s[x].a.length(); // s is dereferenced; x needs to be a valid index
|
||||||
|
//
|
||||||
|
//All of the following declarations result in a compile-time error.
|
||||||
|
//float a[2] = { 3.4, 4.2, 5.0 }; // illegal
|
||||||
|
//vec2 b = { 1.0, 2.0, 3.0 }; // illegal
|
||||||
|
//mat3x3 c = { vec3(0.0), vec3(1.0), vec3(2.0), vec3(3.0) }; // illegal
|
||||||
|
//mat2x2 d = { 1.0, 0.0, 0.0, 1.0 }; // illegal, can't flatten nesting
|
||||||
|
//struct {
|
||||||
|
// float a;
|
||||||
|
// int b;
|
||||||
|
//} e = { 1.2, 2, 3 }; // illegal
|
||||||
|
|
||||||
|
struct {
|
||||||
|
float a;
|
||||||
|
int b;
|
||||||
|
} e = { 1.2, 2 }; // legal, all types match
|
||||||
|
|
||||||
|
struct {
|
||||||
|
float a;
|
||||||
|
int b;
|
||||||
|
} e = { 1, 3 }; // legal, first initializer is converted
|
||||||
|
|
||||||
|
//All of the following declarations result in a compile-time error.
|
||||||
|
//int a = true; // illegal
|
||||||
|
//vec4 b[2] = { vec4(0.0), 1.0 }; // illegal
|
||||||
|
//mat4x2 c = { vec3(0.0), vec3(1.0) }; // illegal
|
||||||
|
|
||||||
|
//struct S1 {
|
||||||
|
// vec4 a;
|
||||||
|
// vec4 b;
|
||||||
|
//};
|
||||||
|
|
||||||
|
//struct {
|
||||||
|
// float s;
|
||||||
|
// float t;
|
||||||
|
//} d[] = { S1(vec4(0.0), vec4(1.1)) }; // illegal
|
||||||
|
|
||||||
|
{
|
||||||
|
float a[] = float[](3.4, 4.2, 5.0, 5.2, 1.1);
|
||||||
|
float b[] = { 3.4, 4.2, 5.0, 5.2, 1.1 };
|
||||||
|
float c[] = a; // c is explicitly size 5
|
||||||
|
float d[5] = b; // means the same thing
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const vec3 zAxis = vec3 (0.0, 0.0, 1.0);
|
||||||
|
const float ceiling = a + b; // a and b not necessarily constants
|
||||||
|
}
|
||||||
|
{
|
||||||
|
in vec4 position;
|
||||||
|
in vec3 normal;
|
||||||
|
in vec2 texCoord[4];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
lowp float color;
|
||||||
|
out mediump vec2 P;
|
||||||
|
lowp ivec2 foo(lowp mat3);
|
||||||
|
highp mat4 m;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,196 @@
|
||||||
|
#version 110
|
||||||
|
|
||||||
|
#extension GL_3DL_array_objects : enable
|
||||||
|
|
||||||
|
out Vertex {
|
||||||
|
vec4 Position; // API transform/feedback will use “Vertex.Position”
|
||||||
|
vec2 Texture;
|
||||||
|
} Coords; // shader will use “Coords.Position”
|
||||||
|
|
||||||
|
out Vertex2 {
|
||||||
|
vec4 Color; // API will use “Color”
|
||||||
|
};
|
||||||
|
|
||||||
|
uniform Transform { // API uses “Transform[2]” to refer to instance 2
|
||||||
|
mat4 ModelViewMatrix;
|
||||||
|
mat4 ModelViewProjectionMatrix;
|
||||||
|
vec4 a[]; // array will get implicitly sized
|
||||||
|
float Deformation;
|
||||||
|
} transforms[4];
|
||||||
|
|
||||||
|
layout(location = 3) in vec4 normal;
|
||||||
|
layout(location = 6) in vec4 colors[3];
|
||||||
|
layout(location = 9) in mat4 transforms[2];
|
||||||
|
|
||||||
|
layout(location = 3) struct S {
|
||||||
|
vec3 a;
|
||||||
|
mat2 b;
|
||||||
|
vec4 c[2];
|
||||||
|
} s;
|
||||||
|
|
||||||
|
layout(triangles, invocations = 6) in;
|
||||||
|
|
||||||
|
layout(lines) in; // legal for Color2, input size is 2, matching Color2
|
||||||
|
|
||||||
|
layout(triangle_strip, max_vertices = 60) out; // order does not matter
|
||||||
|
layout(max_vertices = 60) out; // redeclaration okay
|
||||||
|
layout(triangle_strip) out; // redeclaration okay
|
||||||
|
//layout(points) out; // error, contradicts triangle_strip
|
||||||
|
//layout(max_vertices = 30) out; // error, contradicts 60
|
||||||
|
|
||||||
|
layout(stream = 1) out;
|
||||||
|
|
||||||
|
layout(stream=1) out; // default is now stream 1
|
||||||
|
out vec4 var1; // var1 gets default stream (1)
|
||||||
|
layout(stream=2) out Block1 { // "Block1" belongs to stream 2
|
||||||
|
layout(stream=2) vec4 var2; // redundant block member stream decl
|
||||||
|
layout(stream=3) vec2 var3; // ILLEGAL (must match block stream)
|
||||||
|
vec3 var4; // belongs to stream 2
|
||||||
|
};
|
||||||
|
layout(stream=0) out; // default is now stream 0
|
||||||
|
out vec4 var5; // var5 gets default stream (0)
|
||||||
|
out Block2 { // "Block2" gets default stream (0)
|
||||||
|
vec4 var6;
|
||||||
|
};
|
||||||
|
layout(stream=3) out vec4 var7; // var7 belongs to stream 3
|
||||||
|
|
||||||
|
layout(shared, column_major) uniform;
|
||||||
|
layout(shared, column_major) buffer;
|
||||||
|
|
||||||
|
layout(row_major, column_major)
|
||||||
|
|
||||||
|
layout(shared, row_major) uniform; // default is now shared and row_major
|
||||||
|
|
||||||
|
layout(std140) uniform Transform { // layout of this block is std140
|
||||||
|
mat4 M1; // row_major
|
||||||
|
layout(column_major) mat4 M2; // column major
|
||||||
|
mat3 N1; // row_major
|
||||||
|
};
|
||||||
|
|
||||||
|
layout(column_major) uniform T3 { // shared and column_major
|
||||||
|
mat4 M3; // column_major
|
||||||
|
layout(row_major) mat4 m4; // row major
|
||||||
|
mat3 N2; // column_major
|
||||||
|
};
|
||||||
|
|
||||||
|
// in one compilation unit...
|
||||||
|
layout(binding=3) uniform sampler2D s; // s bound to unit 3
|
||||||
|
|
||||||
|
// in another compilation unit...
|
||||||
|
uniform sampler2D s; // okay, s still bound at 3
|
||||||
|
|
||||||
|
// in another compilation unit...
|
||||||
|
//layout(binding=4) uniform sampler2D s; // ERROR: contradictory bindings
|
||||||
|
|
||||||
|
layout (binding = 2, offset = 4) uniform atomic_uint a;
|
||||||
|
|
||||||
|
layout (binding = 2) uniform atomic_uint bar;
|
||||||
|
|
||||||
|
layout (binding = 2, offset = 4) uniform atomic_uint;
|
||||||
|
|
||||||
|
layout (binding = 2) uniform atomic_uint bar; // offset is 4
|
||||||
|
layout (offset = 8) uniform atomic_uint bar; // error, no default binding
|
||||||
|
|
||||||
|
layout (binding=3, offset=4) uniform atomic_uint a2; // offset = 4
|
||||||
|
layout (binding=2) uniform atomic_uint b2; // offset = 0
|
||||||
|
layout (binding=3) uniform atomic_uint c2; // offset = 8
|
||||||
|
layout (binding=2) uniform atomic_uint d2; // offset = 4
|
||||||
|
|
||||||
|
//layout (offset=4) // error, must include binding
|
||||||
|
layout (binding=1, offset=0) a; // okay
|
||||||
|
layout (binding=2, offset=0) b; // okay
|
||||||
|
//layout (binding=1, offset=0) c; // error, offsets must not be shared
|
||||||
|
// // between a and c
|
||||||
|
//layout (binding=1, offset=2) d; // error, overlaps offset 0 of a
|
||||||
|
|
||||||
|
flat in vec4 gl_FrontColor; // input to geometry shader, no “gl_in[]”
|
||||||
|
flat out vec4 gl_FrontColor; // output from geometry shader
|
||||||
|
|
||||||
|
invariant gl_Position; // make existing gl_Position be invariant
|
||||||
|
|
||||||
|
out vec3 Color;
|
||||||
|
invariant Color; // make existing Color be invariant
|
||||||
|
|
||||||
|
invariant centroid out vec3 Color4;
|
||||||
|
precise out vec4 position;
|
||||||
|
|
||||||
|
out vec3 Color5;
|
||||||
|
precise Color5; // make existing Color be precise
|
||||||
|
in vec4 a, b, c, d;
|
||||||
|
precise out vec4 v;
|
||||||
|
|
||||||
|
coherent buffer Block {
|
||||||
|
readonly vec4 member1;
|
||||||
|
vec4 member2;
|
||||||
|
};
|
||||||
|
|
||||||
|
buffer Block {
|
||||||
|
coherent readonly vec4 member1;
|
||||||
|
coherent vec4 member2;
|
||||||
|
};
|
||||||
|
|
||||||
|
shared vec4 shv;
|
||||||
|
|
||||||
|
vec4 funcA(restrict image2D a) { }
|
||||||
|
|
||||||
|
vec4 funcB(image2D a) { }
|
||||||
|
layout(rgba32f) uniform image2D img1;
|
||||||
|
layout(rgba32f) coherent uniform image2D img2;
|
||||||
|
|
||||||
|
float func(float e, float f, float g, float h)
|
||||||
|
{
|
||||||
|
return (e*f) + (g*h); // no constraint on order or
|
||||||
|
// operator consistency
|
||||||
|
}
|
||||||
|
|
||||||
|
float func2(float e, float f, float g, float h)
|
||||||
|
{
|
||||||
|
precise float result = (e*f) + (g*h); // ensures same precision for
|
||||||
|
// the two multiplies
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
float func3(float i, float j, precise out float k)
|
||||||
|
{
|
||||||
|
k = i * i + j; // precise, due to <k> declaration
|
||||||
|
}
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec3 r = vec3(a * b); // precise, used to compute v.xyz
|
||||||
|
vec3 s = vec3(c * d); // precise, used to compute v.xyz
|
||||||
|
v.xyz = r + s; // precise
|
||||||
|
v.w = (a.w * b.w) + (c.w * d.w); // precise
|
||||||
|
v.x = func(a.x, b.x, c.x, d.x); // values computed in func()
|
||||||
|
// are NOT precise
|
||||||
|
v.x = func2(a.x, b.x, c.x, d.x); // precise!
|
||||||
|
func3(a.x * b.x, c.x * d.x, v.x); // precise!
|
||||||
|
|
||||||
|
funcA(img1); // OK, adding "restrict" is allowed
|
||||||
|
funcB(img2); // illegal, stripping "coherent" is not
|
||||||
|
|
||||||
|
{
|
||||||
|
struct light {
|
||||||
|
float intensity;
|
||||||
|
vec3 position;
|
||||||
|
};
|
||||||
|
|
||||||
|
light lightVar = light(3.0, vec3(1.0, 2.0, 3.0));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const float c[3] = float[3](5.0, 7.2, 1.1);
|
||||||
|
const float d[3] = float[](5.0, 7.2, 1.1);
|
||||||
|
|
||||||
|
float g;
|
||||||
|
float a[5] = float[5](g, 1, g, 2.3, g);
|
||||||
|
float b[3];
|
||||||
|
|
||||||
|
b = float[3](g, g + 1.0, g + 2.0);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
vec4 b[2] = { vec4(1.0), vec4(1.0) };
|
||||||
|
vec4[3][2](b, b, b); // constructor
|
||||||
|
vec4[][2](b, b, b); // constructor, valid, size deduced
|
||||||
|
vec4[3][](b, b, b); // compile-time error, invalid type constructed
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
//
|
||||||
|
//Copyright (C) 2012 LunarG, Inc.
|
||||||
|
//All rights reserved.
|
||||||
|
//
|
||||||
|
//Redistribution and use in source and binary forms, with or without
|
||||||
|
//modification, are permitted provided that the following conditions
|
||||||
|
//are met:
|
||||||
|
//
|
||||||
|
// Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following
|
||||||
|
// disclaimer in the documentation and/or other materials provided
|
||||||
|
// with the distribution.
|
||||||
|
//
|
||||||
|
// Neither the name of LunarG Inc. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived
|
||||||
|
// from this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
//POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
//
|
||||||
|
#version 300 es
|
||||||
|
|
||||||
|
in vec3 color;
|
||||||
|
out vec4 foo;
|
||||||
|
|
||||||
|
uniform sampler2DRect bar;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
foo = vec4(color, 142.0f);
|
||||||
|
discard;
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
//
|
||||||
|
//Copyright (C) 2012 LunarG, Inc.
|
||||||
|
//All rights reserved.
|
||||||
|
//
|
||||||
|
//Redistribution and use in source and binary forms, with or without
|
||||||
|
//modification, are permitted provided that the following conditions
|
||||||
|
//are met:
|
||||||
|
//
|
||||||
|
// Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following
|
||||||
|
// disclaimer in the documentation and/or other materials provided
|
||||||
|
// with the distribution.
|
||||||
|
//
|
||||||
|
// Neither the name of LunarG Inc. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived
|
||||||
|
// from this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
//POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
//
|
||||||
|
#version 420 compatibility
|
||||||
|
|
||||||
|
attribute vec3 color;
|
||||||
|
|
||||||
|
uniform sampler2DRect foo;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
gl_Position = vec4(color, 142.0f);
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
//
|
||||||
|
//Copyright (C) 2012 LunarG, Inc.
|
||||||
|
//All rights reserved.
|
||||||
|
//
|
||||||
|
//Redistribution and use in source and binary forms, with or without
|
||||||
|
//modification, are permitted provided that the following conditions
|
||||||
|
//are met:
|
||||||
|
//
|
||||||
|
// Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following
|
||||||
|
// disclaimer in the documentation and/or other materials provided
|
||||||
|
// with the distribution.
|
||||||
|
//
|
||||||
|
// Neither the name of LunarG Inc. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived
|
||||||
|
// from this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
//POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
//
|
||||||
|
#version 110 es
|
||||||
|
|
||||||
|
#extension GL_ARB_texture_rectangle : disable
|
||||||
|
|
||||||
|
attribute vec3 color;
|
||||||
|
|
||||||
|
uniform sampler2DRect foo;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
gl_FragColor = vec4(color, 142.0f);
|
||||||
|
discard;
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
//
|
||||||
|
//Copyright (C) 2012 LunarG, Inc.
|
||||||
|
//All rights reserved.
|
||||||
|
//
|
||||||
|
//Redistribution and use in source and binary forms, with or without
|
||||||
|
//modification, are permitted provided that the following conditions
|
||||||
|
//are met:
|
||||||
|
//
|
||||||
|
// Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following
|
||||||
|
// disclaimer in the documentation and/or other materials provided
|
||||||
|
// with the distribution.
|
||||||
|
//
|
||||||
|
// Neither the name of LunarG Inc. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived
|
||||||
|
// from this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
//POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
//
|
||||||
|
#version 420 core
|
||||||
|
|
||||||
|
#extension GL_ARB_texture_rectangle : enable
|
||||||
|
|
||||||
|
attribute vec3 color;
|
||||||
|
|
||||||
|
uniform sampler2DRect foo;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
gl_Position = vec4(color, 142.0f);
|
||||||
|
discard;
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
Minor "to do" items are identified in the source code with "TODO..." comments.
|
||||||
|
|
||||||
|
Major items to do:
|
||||||
|
|
||||||
|
* Use the new versioning infrastructure to identify all errors specific to
|
||||||
|
- profile
|
||||||
|
- extension
|
||||||
|
- version
|
||||||
|
- stage
|
||||||
|
|
||||||
|
* Add semantics for all new grammar (1.2 through 4.3)
|
||||||
|
|
||||||
|
* Replace the preprocessor with a better one.
|
||||||
|
|
||||||
|
* Verify/fix thread safety of the parse context.
|
||||||
|
|
436
glslang.vcproj
436
glslang.vcproj
|
@ -1,436 +0,0 @@
|
||||||
<?xml version="1.0" encoding = "Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="7.00"
|
|
||||||
Name="Targets - glslang (generic)"
|
|
||||||
ProjectGUID="{3B146CC5-B2B8-4573-9D46-6139E2EDFEA3}">
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"/>
|
|
||||||
</Platforms>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="UserM_Debug|Win32"
|
|
||||||
OutputDirectory="UserM_Debug"
|
|
||||||
IntermediateDirectory="UserM_Debug"
|
|
||||||
ConfigurationType="2"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="FALSE"
|
|
||||||
CharacterSet="2">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="glslang;glslang\MachineIndependent;glslang\OSDependent\Windows;OGLCompilersDLL"
|
|
||||||
PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE,_USRDLL,TEST_EXPORTS,GENERIC_COMPILER"
|
|
||||||
MinimalRebuild="FALSE"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
PrecompiledHeaderFile=""
|
|
||||||
AssemblerListingLocation="UserM_Debug/"
|
|
||||||
ObjectFile="UserM_Debug/"
|
|
||||||
ProgramDataBaseFileName="UserM_Debug/glslang"
|
|
||||||
BrowseInformation="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="TRUE"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
CallingConvention="1"
|
|
||||||
CompileAs="0"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalOptions="/MACHINE:I386"
|
|
||||||
AdditionalDependencies="odbc32.lib odbccp32.lib"
|
|
||||||
OutputFile="UserM_Debug/generic/glslang.dll"
|
|
||||||
LinkIncremental="2"
|
|
||||||
SuppressStartupBanner="TRUE"
|
|
||||||
IgnoreDefaultLibraryNames="libcmtd.lib;libcd.lib;libcmt.lib;libcmt.lib"
|
|
||||||
GenerateDebugInformation="TRUE"
|
|
||||||
ProgramDatabaseFile="UserM_Debug/glslang.pdb"
|
|
||||||
SubSystem="1"
|
|
||||||
ImportLibrary="UserM_Debug/generic/glslang.lib"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
TypeLibraryName="UserM_Debug/generic/glslang.tlb"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
Description="copy dll"
|
|
||||||
CommandLine="xcopy /y UserM_Debug\generic\glslang.* standalone"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
Culture="2057"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="UserM_Release|Win32"
|
|
||||||
OutputDirectory="UserM_Release"
|
|
||||||
IntermediateDirectory="UserM_Release"
|
|
||||||
ConfigurationType="2"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="FALSE"
|
|
||||||
CharacterSet="2">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
InlineFunctionExpansion="1"
|
|
||||||
OmitFramePointers="TRUE"
|
|
||||||
AdditionalIncludeDirectories="glslang;glslang\MachineIndependent;glslang\OSDependent\Windows;OGLCompilersDLL"
|
|
||||||
PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE,_USRDLL,TEST_EXPORTS,GENERIC_COMPILER"
|
|
||||||
StringPooling="TRUE"
|
|
||||||
MinimalRebuild="FALSE"
|
|
||||||
BasicRuntimeChecks="0"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
BufferSecurityCheck="TRUE"
|
|
||||||
EnableFunctionLevelLinking="TRUE"
|
|
||||||
PrecompiledHeaderFile=""
|
|
||||||
AssemblerListingLocation="UserM_Release/"
|
|
||||||
ObjectFile="UserM_Release/"
|
|
||||||
ProgramDataBaseFileName="UserM_Release/glslang"
|
|
||||||
BrowseInformation="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="TRUE"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
CallingConvention="1"
|
|
||||||
CompileAs="0"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalOptions="/MACHINE:I386"
|
|
||||||
AdditionalDependencies="odbc32.lib odbccp32.lib"
|
|
||||||
OutputFile="UserM_Release/generic/glslang.dll"
|
|
||||||
LinkIncremental="1"
|
|
||||||
SuppressStartupBanner="TRUE"
|
|
||||||
IgnoreDefaultLibraryNames="libcmtd.lib;libcd.lib;libcmt.lib;"
|
|
||||||
GenerateDebugInformation="TRUE"
|
|
||||||
ProgramDatabaseFile="UserM_Release/generic/glslang.pdb"
|
|
||||||
SubSystem="1"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
ImportLibrary="UserM_Release/generic/glslang.lib"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
TypeLibraryName="UserM_Release/generic/glslang.tlb"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
Description="copy dll"
|
|
||||||
CommandLine="xcopy /y UserM_Release\generic\glslang.* standalone"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="NDEBUG"
|
|
||||||
Culture="2057"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Machine Independent"
|
|
||||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;y;l">
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\InfoSink.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\Initialize.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\Initialize.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="OGLCompilersDLL\InitializeDll.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\IntermTraverse.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\Intermediate.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\MMap.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\ParseHelper.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\ParseHelper.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\PoolAlloc.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\QualifierAlive.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\QualifierAlive.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\RemoveTree.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\RemoveTree.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\ShaderLang.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\SymbolTable.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\glslang.l">
|
|
||||||
<FileConfiguration
|
|
||||||
Name="UserM_Debug|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
Description="Executing flex on $(InputPath)"
|
|
||||||
CommandLine="$(InputDir)..\..\tools\flex.exe $(InputPath)
|
|
||||||
if EXIST $(InputDir)gen_glslang.cpp del $(InputDir)gen_glslang.cpp
|
|
||||||
move gen_glslang.cpp $(InputDir)gen_glslang.cpp
|
|
||||||
cd $(InputDir)
|
|
||||||
rename gen_glslang.cpp Gen_glslang.cpp
|
|
||||||
"
|
|
||||||
AdditionalDependencies="glslang_tab.h"
|
|
||||||
Outputs="$(InputDir)Gen_glslang.cpp"/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="UserM_Release|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
Description="Executing flex on $(InputPath)"
|
|
||||||
CommandLine="$(InputDir)..\..\tools\flex.exe $(InputPath)
|
|
||||||
if EXIST $(InputDir)gen_glslang.cpp del $(InputDir)gen_glslang.cpp
|
|
||||||
move gen_glslang.cpp $(InputDir)gen_glslang.cpp
|
|
||||||
"
|
|
||||||
AdditionalDependencies="glslang_tab.h"
|
|
||||||
Outputs="$(InputDir)Gen_glslang.cpp"/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\glslang.y">
|
|
||||||
<FileConfiguration
|
|
||||||
Name="UserM_Debug|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
Description="Executing Bison on $(InputPath)"
|
|
||||||
CommandLine="SET BISON_SIMPLE=$(InputDir)..\..\tools\bison.simple
|
|
||||||
SET BISON_HAIRY=$(InputDir)..\..\tools\bison.simple
|
|
||||||
cd $(InputDir)
|
|
||||||
$(InputDir)..\..\tools\bison.exe -d -t -v $(InputName).y
|
|
||||||
if EXIST $(InputDir)Gen_$(InputName)_tab.cpp del $(InputDir)Gen_$(InputName)_tab.cpp
|
|
||||||
rename $(InputDir)$(InputName)_tab.c Gen_$(InputName)_tab.cpp
|
|
||||||
"
|
|
||||||
Outputs="$(InputDir)Gen_$(InputName)_tab.cpp"/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="UserM_Release|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
Description="Executing Bison on $(InputPath)"
|
|
||||||
CommandLine="SET BISON_SIMPLE=$(InputDir)..\..\tools\bison.simple
|
|
||||||
SET BISON_HAIRY=$(InputDir)..\..\tools\bison.simple
|
|
||||||
cd $(InputDir)
|
|
||||||
$(InputDir)..\..\tools\bison.exe -d -t -v $(InputName).y
|
|
||||||
if EXIST $(InputDir)Gen_$(InputName)_tab.cpp del $(InputDir)Gen_$(InputName)_tab.cpp
|
|
||||||
rename $(InputDir)$(InputName)_tab.c Gen_$(InputName)_tab.cpp
|
|
||||||
"
|
|
||||||
Outputs="$(InputDir)Gen_$(InputName)_tab.cpp"/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\intermOut.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\localintermediate.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\parseConst.cpp">
|
|
||||||
</File>
|
|
||||||
<Filter
|
|
||||||
Name="Generated Source"
|
|
||||||
Filter="">
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\Gen_glslang.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\Gen_glslang_tab.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\glslang_tab.h">
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="CPP"
|
|
||||||
Filter="">
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\atom.c">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\atom.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\compile.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\cpp.c">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\cpp.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\cppstruct.c">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\memory.c">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\memory.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\parser.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\preprocess.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\scanner.c">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\scanner.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\slglobals.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\symbols.c">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\symbols.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\tokens.c">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\preprocessor\tokens.h">
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files">
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Include\BaseTypes.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Include\Common.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Include\ConstantUnion.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Include\InfoSink.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="OGLCompilersDLL\InitializeDll.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Include\InitializeGlobals.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Include\InitializeParseContext.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Include\PoolAlloc.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Include\ResourceLimits.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Include\ShHandle.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\SymbolTable.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Include\Types.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Include\intermediate.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\MachineIndependent\unistd.h">
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Public"
|
|
||||||
Filter="">
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\Public\ShaderLang.h">
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Generic Code Gen"
|
|
||||||
Filter="">
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\GenericCodeGen\CodeGen.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\GenericCodeGen\Link.cpp">
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="OSDependent"
|
|
||||||
Filter="">
|
|
||||||
<Filter
|
|
||||||
Name="Windows"
|
|
||||||
Filter="">
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\OSDependent\Windows\main.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\OSDependent\Windows\osinclude.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\OSDependent\Windows\ossource.cpp">
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Linux"
|
|
||||||
Filter="">
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\OSDependent\Linux\osinclude.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="glslang\OSDependent\Linux\ossource.cpp">
|
|
||||||
<FileConfiguration
|
|
||||||
Name="UserM_Debug|Win32"
|
|
||||||
ExcludedFromBuild="TRUE">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="UserM_Release|Win32"
|
|
||||||
ExcludedFromBuild="TRUE">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
|
@ -0,0 +1,250 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectName>glslang</ProjectName>
|
||||||
|
<ProjectGuid>{3B146CC5-B2B8-4573-9D46-6139E2EDFEA3}</ProjectGuid>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseOfMfc>false</UseOfMfc>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseOfMfc>false</UseOfMfc>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||||
|
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">glslang\UserM_Debug\</OutDir>
|
||||||
|
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">glslang\UserM_Debug\</IntDir>
|
||||||
|
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
|
||||||
|
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">UserM_Release\</OutDir>
|
||||||
|
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">UserM_Release\</IntDir>
|
||||||
|
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<AdditionalIncludeDirectories>glslang;glslang\MachineIndependent;glslang\OSDependent\Windows;OGLCompilersDLL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;WIN32;_CONSOLE;_USRDLL;TEST_EXPORTS;GENERIC_COMPILER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<MinimalRebuild>false</MinimalRebuild>
|
||||||
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
|
<PrecompiledHeaderOutputFile>
|
||||||
|
</PrecompiledHeaderOutputFile>
|
||||||
|
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
||||||
|
<ObjectFileName>$(IntDir)</ObjectFileName>
|
||||||
|
<ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
|
||||||
|
<BrowseInformation>
|
||||||
|
</BrowseInformation>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<CallingConvention>FastCall</CallingConvention>
|
||||||
|
<CompileAs>Default</CompileAs>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<SuppressStartupBanner>false</SuppressStartupBanner>
|
||||||
|
<IgnoreSpecificDefaultLibraries>libcmtd.lib;libcd.lib;libcmt.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<ProgramDatabaseFile>UserM_Debug/glslang.pdb</ProgramDatabaseFile>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<ImportLibrary>UserM_Debug/generic/glslang.lib</ImportLibrary>
|
||||||
|
<OutputFile>$(IntDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||||
|
</Link>
|
||||||
|
<Midl>
|
||||||
|
<TypeLibraryName>UserM_Debug/generic/glslang.tlb</TypeLibraryName>
|
||||||
|
</Midl>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>copy dll</Message>
|
||||||
|
<Command>del Test\$(TargetName)$(TargetExt)
|
||||||
|
xcopy /y $(IntDir)$(TargetName)$(TargetExt) Test</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<Culture>0x0809</Culture>
|
||||||
|
</ResourceCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
|
<OmitFramePointers>true</OmitFramePointers>
|
||||||
|
<AdditionalIncludeDirectories>glslang;glslang\MachineIndependent;glslang\OSDependent\Windows;OGLCompilersDLL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;WIN32;_CONSOLE;_USRDLL;TEST_EXPORTS;GENERIC_COMPILER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<StringPooling>true</StringPooling>
|
||||||
|
<MinimalRebuild>false</MinimalRebuild>
|
||||||
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
|
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<PrecompiledHeaderOutputFile>
|
||||||
|
</PrecompiledHeaderOutputFile>
|
||||||
|
<AssemblerListingLocation>UserM_Release/</AssemblerListingLocation>
|
||||||
|
<ObjectFileName>UserM_Release/</ObjectFileName>
|
||||||
|
<ProgramDataBaseFileName>UserM_Release/glslang</ProgramDataBaseFileName>
|
||||||
|
<BrowseInformation>
|
||||||
|
</BrowseInformation>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<CallingConvention>FastCall</CallingConvention>
|
||||||
|
<CompileAs>Default</CompileAs>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<OutputFile>UserM_Release/generic/glslang.dll</OutputFile>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
<IgnoreSpecificDefaultLibraries>libcmtd.lib;libcd.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<ProgramDatabaseFile>UserM_Release/generic/glslang.pdb</ProgramDatabaseFile>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<ImportLibrary>UserM_Release/generic/glslang.lib</ImportLibrary>
|
||||||
|
</Link>
|
||||||
|
<Midl>
|
||||||
|
<TypeLibraryName>UserM_Release/generic/glslang.tlb</TypeLibraryName>
|
||||||
|
</Midl>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>copy dll</Message>
|
||||||
|
<Command>xcopy /y UserM_Release\generic\glslang.* StandAlone</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<Culture>0x0809</Culture>
|
||||||
|
</ResourceCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\gen_glslang.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\glslang_tab.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\InfoSink.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\Initialize.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\Versions.cpp" />
|
||||||
|
<ClCompile Include="OGLCompilersDLL\InitializeDll.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\IntermTraverse.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\Intermediate.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\ParseHelper.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\PoolAlloc.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\QualifierAlive.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\RemoveTree.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\ShaderLang.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\SymbolTable.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\intermOut.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\parseConst.cpp" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\atom.c" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\cpp.c" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\cppstruct.c" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\memory.c" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\scanner.c" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\symbols.c" />
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\tokens.c" />
|
||||||
|
<ClCompile Include="glslang\GenericCodeGen\CodeGen.cpp" />
|
||||||
|
<ClCompile Include="glslang\GenericCodeGen\Link.cpp" />
|
||||||
|
<ClCompile Include="glslang\OSDependent\Windows\main.cpp" />
|
||||||
|
<ClCompile Include="glslang\OSDependent\Windows\ossource.cpp" />
|
||||||
|
<ClCompile Include="glslang\OSDependent\Linux\ossource.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\glslang_tab.cpp.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\Initialize.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\MMap.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\ParseHelper.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\QualifierAlive.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\RemoveTree.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\localintermediate.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\atom.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\compile.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\cpp.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\memory.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\parser.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\preprocess.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\scanner.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\slglobals.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\symbols.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\tokens.h" />
|
||||||
|
<ClInclude Include="glslang\Include\BaseTypes.h" />
|
||||||
|
<ClInclude Include="glslang\Include\Common.h" />
|
||||||
|
<ClInclude Include="glslang\Include\ConstantUnion.h" />
|
||||||
|
<ClInclude Include="glslang\Include\InfoSink.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\Versions.h" />
|
||||||
|
<ClInclude Include="OGLCompilersDLL\InitializeDll.h" />
|
||||||
|
<ClInclude Include="glslang\Include\InitializeGlobals.h" />
|
||||||
|
<ClInclude Include="glslang\Include\InitializeParseContext.h" />
|
||||||
|
<ClInclude Include="glslang\Include\PoolAlloc.h" />
|
||||||
|
<ClInclude Include="glslang\Include\ResourceLimits.h" />
|
||||||
|
<ClInclude Include="glslang\Include\ShHandle.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\SymbolTable.h" />
|
||||||
|
<ClInclude Include="glslang\Include\Types.h" />
|
||||||
|
<ClInclude Include="glslang\Include\intermediate.h" />
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\unistd.h" />
|
||||||
|
<ClInclude Include="glslang\Public\ShaderLang.h" />
|
||||||
|
<ClInclude Include="glslang\OSDependent\Windows\osinclude.h" />
|
||||||
|
<ClInclude Include="glslang\OSDependent\Linux\osinclude.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="glslang\MachineIndependent\glslang.y">
|
||||||
|
<FileType>Document</FileType>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Executing Bison on glslang.y</Message>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">SET BISON_SIMPLE=%(RootDir)%(Directory)..\..\tools\bison.simple
|
||||||
|
SET BISON_HAIRY=%(RootDir)%(Directory)..\..\tools\bison.simple
|
||||||
|
cd %(RootDir)%(Directory)
|
||||||
|
%(RootDir)%(Directory)..\..\tools\bison.exe -d -t glslang.y -o glslang_tab.cpp
|
||||||
|
</Command>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(RootDir)%(Directory)glslang_tab.cpp;%(RootDir)%(Directory)glslang_tab.cpp.h</Outputs>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Executing Bison on %(FullPath)</Message>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">SET BISON_SIMPLE=%(RootDir)%(Directory)..\..\tools\bison.simple
|
||||||
|
SET BISON_HAIRY=%(RootDir)%(Directory)..\..\tools\bison.simple
|
||||||
|
cd %(RootDir)%(Directory)
|
||||||
|
%(RootDir)%(Directory)..\..\tools\bison.exe -d -t -v %(Filename).y
|
||||||
|
if EXIST %(RootDir)%(Directory)Gen_%(Filename)_tab.cpp del %(RootDir)%(Directory)Gen_%(Filename)_tab.cpp
|
||||||
|
rename %(RootDir)%(Directory)%(Filename)_tab.c Gen_%(Filename)_tab.cpp
|
||||||
|
</Command>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(RootDir)%(Directory)Gen_%(Filename)_tab.cpp;%(Outputs)</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="glslang\MachineIndependent\glslang.l">
|
||||||
|
<FileType>Document</FileType>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cd %(RootDir)%(Directory)
|
||||||
|
%(RootDir)%(Directory)..\..\tools\flex.exe glslang.l
|
||||||
|
</Command>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Executing flex on glslang.l</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(RootDir)%(Directory)gen_glslang.cpp</Outputs>
|
||||||
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(RootDir)%(Directory)glslang_tab.cpp.h</AdditionalInputs>
|
||||||
|
</CustomBuild>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,234 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Machine Independent">
|
||||||
|
<UniqueIdentifier>{593f06dd-7981-4cb7-91ba-eae633fa547e}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;y;l</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Machine Independent\Generated Source">
|
||||||
|
<UniqueIdentifier>{564543b5-6302-49ab-9d24-bd6bef91274a}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Machine Independent\CPP">
|
||||||
|
<UniqueIdentifier>{5d320e20-4d64-4db1-9d8c-e7fdc234be36}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{d4faa328-f693-4b77-9fcb-9629ca0d8ee8}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Public">
|
||||||
|
<UniqueIdentifier>{c79e7f4d-1836-4b72-b201-46e72e4e4b6b}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Generic Code Gen">
|
||||||
|
<UniqueIdentifier>{b56dd525-2a9c-4ae5-a6b4-d024e624c6b4}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="OSDependent">
|
||||||
|
<UniqueIdentifier>{d48b8f48-5784-4cb6-bead-7f98647a1c44}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="OSDependent\Windows">
|
||||||
|
<UniqueIdentifier>{092b92ee-743a-407d-ad9b-92af399715d6}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="OSDependent\Linux">
|
||||||
|
<UniqueIdentifier>{0c27903f-6ef2-4725-9d9c-70f50aeaa7a1}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\InfoSink.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\Initialize.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="OGLCompilersDLL\InitializeDll.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\IntermTraverse.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\Intermediate.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\ParseHelper.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\PoolAlloc.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\QualifierAlive.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\RemoveTree.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\ShaderLang.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\SymbolTable.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\intermOut.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\parseConst.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\atom.c">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\cpp.c">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\cppstruct.c">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\memory.c">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\scanner.c">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\symbols.c">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\preprocessor\tokens.c">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\GenericCodeGen\CodeGen.cpp">
|
||||||
|
<Filter>Generic Code Gen</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\GenericCodeGen\Link.cpp">
|
||||||
|
<Filter>Generic Code Gen</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\OSDependent\Windows\main.cpp">
|
||||||
|
<Filter>OSDependent\Windows</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\OSDependent\Windows\ossource.cpp">
|
||||||
|
<Filter>OSDependent\Windows</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\OSDependent\Linux\ossource.cpp">
|
||||||
|
<Filter>OSDependent\Linux</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\gen_glslang.cpp">
|
||||||
|
<Filter>Machine Independent\Generated Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\glslang_tab.cpp">
|
||||||
|
<Filter>Machine Independent\Generated Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="glslang\MachineIndependent\Versions.cpp">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\Initialize.h">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\MMap.h">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\ParseHelper.h">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\QualifierAlive.h">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\RemoveTree.h">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\localintermediate.h">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\atom.h">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\compile.h">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\cpp.h">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\memory.h">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\parser.h">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\preprocess.h">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\scanner.h">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\slglobals.h">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\symbols.h">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\preprocessor\tokens.h">
|
||||||
|
<Filter>Machine Independent\CPP</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Include\BaseTypes.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Include\Common.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Include\ConstantUnion.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Include\InfoSink.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="OGLCompilersDLL\InitializeDll.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Include\InitializeGlobals.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Include\InitializeParseContext.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Include\PoolAlloc.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Include\ResourceLimits.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Include\ShHandle.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\SymbolTable.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Include\Types.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Include\intermediate.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\unistd.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\Public\ShaderLang.h">
|
||||||
|
<Filter>Public</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\OSDependent\Windows\osinclude.h">
|
||||||
|
<Filter>OSDependent\Windows</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\OSDependent\Linux\osinclude.h">
|
||||||
|
<Filter>OSDependent\Linux</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\glslang_tab.cpp.h">
|
||||||
|
<Filter>Machine Independent\Generated Source</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="glslang\MachineIndependent\Versions.h">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="glslang\MachineIndependent\glslang.y">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="glslang\MachineIndependent\glslang.l">
|
||||||
|
<Filter>Machine Independent</Filter>
|
||||||
|
</CustomBuild>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
|
@ -739,8 +739,8 @@ bool TParseContext::arrayQualifierErrorCheck(int line, TPublicType type)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type.qualifier == EvqConst && extensionErrorCheck(line, "GL_3DL_array_objects"))
|
if (type.qualifier == EvqConst)
|
||||||
return true;
|
profileRequires(line, ENoProfile, 120, "GL_3DL_array_objects", "const array");
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -948,20 +948,6 @@ bool TParseContext::paramErrorCheck(int line, TQualifier qualifier, TType* type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TParseContext::extensionErrorCheck(int line, const char* extension)
|
|
||||||
{
|
|
||||||
if (extensionBehavior[extension] == EBhWarn) {
|
|
||||||
infoSink.info.message(EPrefixWarning, ("extension " + TString(extension) + " is being used").c_str(), line);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (extensionBehavior[extension] == EBhDisable) {
|
|
||||||
error(line, "extension", extension, "is disabled");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Non-Errors.
|
// Non-Errors.
|
||||||
|
@ -1448,7 +1434,7 @@ void TParseContext::initializeExtensionBehavior()
|
||||||
// example code: extensionBehavior["test"] = EBhDisable; // where "test" is the name of
|
// example code: extensionBehavior["test"] = EBhDisable; // where "test" is the name of
|
||||||
// supported extension
|
// supported extension
|
||||||
//
|
//
|
||||||
extensionBehavior["GL_ARB_texture_rectangle"] = EBhRequire;
|
extensionBehavior["GL_ARB_texture_rectangle"] = EBhDisable;
|
||||||
extensionBehavior["GL_3DL_array_objects"] = EBhDisable;
|
extensionBehavior["GL_3DL_array_objects"] = EBhDisable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1457,7 +1443,7 @@ OS_TLSIndex GlobalParseContextIndex = OS_INVALID_TLS_INDEX;
|
||||||
bool InitializeParseContextIndex()
|
bool InitializeParseContextIndex()
|
||||||
{
|
{
|
||||||
if (GlobalParseContextIndex != OS_INVALID_TLS_INDEX) {
|
if (GlobalParseContextIndex != OS_INVALID_TLS_INDEX) {
|
||||||
assert(0 && "InitializeParseContextIndex(): Parse Context already initalised");
|
assert(0 && "InitializeParseContextIndex(): Parse Context already initialised");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1467,7 +1453,7 @@ bool InitializeParseContextIndex()
|
||||||
GlobalParseContextIndex = OS_AllocTLSIndex();
|
GlobalParseContextIndex = OS_AllocTLSIndex();
|
||||||
|
|
||||||
if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
|
if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
|
||||||
assert(0 && "InitializeParseContextIndex(): Parse Context already initalised");
|
assert(0 && "InitializeParseContextIndex(): Parse Context already initialised");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1477,13 +1463,13 @@ bool InitializeParseContextIndex()
|
||||||
bool InitializeGlobalParseContext()
|
bool InitializeGlobalParseContext()
|
||||||
{
|
{
|
||||||
if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
|
if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
|
||||||
assert(0 && "InitializeGlobalParseContext(): Parse Context index not initalised");
|
assert(0 && "InitializeGlobalParseContext(): Parse Context index not initialized");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
TThreadParseContext *lpParseContext = static_cast<TThreadParseContext *>(OS_GetTLSValue(GlobalParseContextIndex));
|
TThreadParseContext *lpParseContext = static_cast<TThreadParseContext *>(OS_GetTLSValue(GlobalParseContextIndex));
|
||||||
if (lpParseContext != 0) {
|
if (lpParseContext != 0) {
|
||||||
assert(0 && "InitializeParseContextIndex(): Parse Context already initalised");
|
assert(0 && "InitializeParseContextIndex(): Parse Context already initialized");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1513,7 +1499,7 @@ TParseContextPointer& GetGlobalParseContext()
|
||||||
bool FreeParseContext()
|
bool FreeParseContext()
|
||||||
{
|
{
|
||||||
if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
|
if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
|
||||||
assert(0 && "FreeParseContext(): Parse Context index not initalised");
|
assert(0 && "FreeParseContext(): Parse Context index not initialized");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1529,7 +1515,7 @@ bool FreeParseContextIndex()
|
||||||
OS_TLSIndex tlsiIndex = GlobalParseContextIndex;
|
OS_TLSIndex tlsiIndex = GlobalParseContextIndex;
|
||||||
|
|
||||||
if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
|
if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
|
||||||
assert(0 && "FreeParseContextIndex(): Parse Context index not initalised");
|
assert(0 && "FreeParseContextIndex(): Parse Context index not initialized");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
//Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
//Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
//All rights reserved.
|
//All rights reserved.
|
||||||
//
|
//
|
||||||
|
//Copyright (C) 2012 LunarG, Inc.
|
||||||
|
//
|
||||||
//Redistribution and use in source and binary forms, with or without
|
//Redistribution and use in source and binary forms, with or without
|
||||||
//modification, are permitted provided that the following conditions
|
//modification, are permitted provided that the following conditions
|
||||||
//are met:
|
//are met:
|
||||||
|
@ -34,6 +36,7 @@
|
||||||
#ifndef _PARSER_HELPER_INCLUDED_
|
#ifndef _PARSER_HELPER_INCLUDED_
|
||||||
#define _PARSER_HELPER_INCLUDED_
|
#define _PARSER_HELPER_INCLUDED_
|
||||||
|
|
||||||
|
#include "Versions.h"
|
||||||
#include "../Include/ShHandle.h"
|
#include "../Include/ShHandle.h"
|
||||||
#include "SymbolTable.h"
|
#include "SymbolTable.h"
|
||||||
#include "localintermediate.h"
|
#include "localintermediate.h"
|
||||||
|
@ -67,8 +70,9 @@ struct TParseContext {
|
||||||
TParseContext(TSymbolTable& symt, TIntermediate& interm, EShLanguage L, TInfoSink& is) :
|
TParseContext(TSymbolTable& symt, TIntermediate& interm, EShLanguage L, TInfoSink& is) :
|
||||||
intermediate(interm), symbolTable(symt), infoSink(is), language(L), treeRoot(0),
|
intermediate(interm), symbolTable(symt), infoSink(is), language(L), treeRoot(0),
|
||||||
recoveredFromError(false), numErrors(0), lexAfterType(false), loopNestingLevel(0),
|
recoveredFromError(false), numErrors(0), lexAfterType(false), loopNestingLevel(0),
|
||||||
switchNestingLevel(0),
|
switchNestingLevel(0), inTypeParen(false),
|
||||||
inTypeParen(false), contextPragma(true, false) { }
|
version(110), profile(ENoProfile), futureCompatibility(false),
|
||||||
|
contextPragma(true, false) { }
|
||||||
TIntermediate& intermediate; // to hold and build a parse tree
|
TIntermediate& intermediate; // to hold and build a parse tree
|
||||||
TSymbolTable& symbolTable; // symbol table that goes with the language currently being parsed
|
TSymbolTable& symbolTable; // symbol table that goes with the language currently being parsed
|
||||||
TInfoSink& infoSink;
|
TInfoSink& infoSink;
|
||||||
|
@ -82,7 +86,16 @@ struct TParseContext {
|
||||||
bool inTypeParen; // true if in parentheses, looking only for an identifier
|
bool inTypeParen; // true if in parentheses, looking only for an identifier
|
||||||
const TType* currentFunctionType; // the return type of the function that's currently being parsed
|
const TType* currentFunctionType; // the return type of the function that's currently being parsed
|
||||||
bool functionReturnsValue; // true if a non-void function has a return
|
bool functionReturnsValue; // true if a non-void function has a return
|
||||||
TMap<TString, TBehavior> extensionBehavior;
|
|
||||||
|
int version; // the declared version in the shader (110 by default)
|
||||||
|
EProfile profile; // the declared profile in the shader (core by default)
|
||||||
|
bool futureCompatibility; // true if requesting errors for future compatibility (false by default)
|
||||||
|
TMap<TString, TBehavior> extensionBehavior; // for each extension string, what it's current enablement is
|
||||||
|
|
||||||
|
struct TPragma contextPragma;
|
||||||
|
TString HashErrMsg;
|
||||||
|
bool AfterEOF;
|
||||||
|
|
||||||
void initializeExtensionBehavior();
|
void initializeExtensionBehavior();
|
||||||
|
|
||||||
void C_DECL error(TSourceLoc, const char *szReason, const char *szToken,
|
void C_DECL error(TSourceLoc, const char *szReason, const char *szToken,
|
||||||
|
@ -117,7 +130,6 @@ struct TParseContext {
|
||||||
bool nonInitConstErrorCheck(int line, TString& identifier, TPublicType& type);
|
bool nonInitConstErrorCheck(int line, TString& identifier, TPublicType& type);
|
||||||
bool nonInitErrorCheck(int line, TString& identifier, TPublicType& type);
|
bool nonInitErrorCheck(int line, TString& identifier, TPublicType& type);
|
||||||
bool paramErrorCheck(int line, TQualifier qualifier, TType* type);
|
bool paramErrorCheck(int line, TQualifier qualifier, TType* type);
|
||||||
bool extensionErrorCheck(int line, const char*);
|
|
||||||
const TFunction* findFunction(int line, TFunction* pfnCall, bool *builtIn = 0);
|
const TFunction* findFunction(int line, TFunction* pfnCall, bool *builtIn = 0);
|
||||||
bool executeInitializer(TSourceLoc line, TString& identifier, TPublicType& pType,
|
bool executeInitializer(TSourceLoc line, TString& identifier, TPublicType& pType,
|
||||||
TIntermTyped* initializer, TIntermNode*& intermNode, TVariable* variable = 0);
|
TIntermTyped* initializer, TIntermNode*& intermNode, TVariable* variable = 0);
|
||||||
|
@ -131,9 +143,12 @@ struct TParseContext {
|
||||||
TIntermTyped* addConstArrayNode(int index, TIntermTyped* node, TSourceLoc line);
|
TIntermTyped* addConstArrayNode(int index, TIntermTyped* node, TSourceLoc line);
|
||||||
TIntermTyped* addConstStruct(TString& , TIntermTyped*, TSourceLoc);
|
TIntermTyped* addConstStruct(TString& , TIntermTyped*, TSourceLoc);
|
||||||
bool arraySetMaxSize(TIntermSymbol*, TType*, int, bool, TSourceLoc);
|
bool arraySetMaxSize(TIntermSymbol*, TType*, int, bool, TSourceLoc);
|
||||||
struct TPragma contextPragma;
|
void requireProfile(int line, EProfileMask profileMask, const char *featureDesc);
|
||||||
TString HashErrMsg;
|
void requireStage(int line, EShLanguageMask languageMask, const char *featureDesc);
|
||||||
bool AfterEOF;
|
void profileRequires(int line, EProfile callingProfile, int minVersion, int numExtensions, const char* extensions[], const char *featureDesc);
|
||||||
|
void profileRequires(int line, EProfile callingProfile, int minVersion, const char* extension, const char *featureDesc);
|
||||||
|
void checkDeprecated(int line, EProfile callingProfile, int depVersion, const char *featureDesc);
|
||||||
|
void requireNotRemoved(int line, EProfile callingProfile, int removedVersion, const char *featureDesc);
|
||||||
};
|
};
|
||||||
|
|
||||||
int PaParseStrings(char* argv[], int strLen[], int argc, TParseContext&);
|
int PaParseStrings(char* argv[], int strLen[], int argc, TParseContext&);
|
||||||
|
|
|
@ -282,6 +282,8 @@ int ShCompile(
|
||||||
|
|
||||||
GenerateBuiltInSymbolTable(resources, compiler->infoSink, &symbolTable, compiler->getLanguage());
|
GenerateBuiltInSymbolTable(resources, compiler->infoSink, &symbolTable, compiler->getLanguage());
|
||||||
|
|
||||||
|
// TODO: this is happening *after* initialization, which already parsed some things... what parse context was that?
|
||||||
|
// what extensions did it have?
|
||||||
TParseContext parseContext(symbolTable, intermediate, compiler->getLanguage(), compiler->infoSink);
|
TParseContext parseContext(symbolTable, intermediate, compiler->getLanguage(), compiler->infoSink);
|
||||||
parseContext.initializeExtensionBehavior();
|
parseContext.initializeExtensionBehavior();
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,161 @@
|
||||||
|
//
|
||||||
|
//Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
|
//All rights reserved.
|
||||||
|
//
|
||||||
|
//Copyright (C) 2012 LunarG, Inc.
|
||||||
|
//All rights reserved.
|
||||||
|
//
|
||||||
|
//Redistribution and use in source and binary forms, with or without
|
||||||
|
//modification, are permitted provided that the following conditions
|
||||||
|
//are met:
|
||||||
|
//
|
||||||
|
// Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following
|
||||||
|
// disclaimer in the documentation and/or other materials provided
|
||||||
|
// with the distribution.
|
||||||
|
//
|
||||||
|
// Neither the name of 3Dlabs Inc. Ltd. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived
|
||||||
|
// from this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
//POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// Help manage multiple profiles, versions, extensions etc.
|
||||||
|
//
|
||||||
|
// These don't return error codes, as the presumption is parsing
|
||||||
|
// will always continue as if the feature were present, and there
|
||||||
|
// is no error recovery needed to enable that.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "ParseHelper.h"
|
||||||
|
|
||||||
|
char* StageName[EShLangCount] = {
|
||||||
|
"vertex",
|
||||||
|
"tessellation control",
|
||||||
|
"tessellation evaluation",
|
||||||
|
"geometry",
|
||||||
|
"fragment"
|
||||||
|
};
|
||||||
|
|
||||||
|
char* ProfileName[EProfileCount] = {
|
||||||
|
"none",
|
||||||
|
"core",
|
||||||
|
"compatibility",
|
||||||
|
"es"
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// If only some profiles support a feature, use requireProfile() to specify
|
||||||
|
// which subset allows the feature. If the current profile is not present,
|
||||||
|
// give an error message.
|
||||||
|
//
|
||||||
|
void TParseContext::requireProfile(int line, EProfileMask profileMask, const char *featureDesc)
|
||||||
|
{
|
||||||
|
if (((1 << profile) & profileMask) == 0) {
|
||||||
|
error(line, "not supported with this profile:", featureDesc, ProfileName[profile]);
|
||||||
|
recover();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// If only some stages support a feature, use requireStage() to specify
|
||||||
|
// which subset allows the feature. If the current stage is not present,
|
||||||
|
// give an error message.
|
||||||
|
//
|
||||||
|
void TParseContext::requireStage(int line, EShLanguageMask languageMask, const char *featureDesc)
|
||||||
|
{
|
||||||
|
if (((1 << language) & languageMask) == 0) {
|
||||||
|
error(line, "not supported in this stage:", featureDesc, StageName[language]);
|
||||||
|
recover();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Within a profile, if a feature requires a version level or extension, use
|
||||||
|
// ProfileRequires(). This only checks if the current profile matches
|
||||||
|
// the passed-in profile.
|
||||||
|
//
|
||||||
|
|
||||||
|
// one that takes multiple extensions
|
||||||
|
void TParseContext::profileRequires(int line, EProfile callingProfile, int minVersion, int numExtensions, const char* extensions[], const char *featureDesc)
|
||||||
|
{
|
||||||
|
if (profile == callingProfile) {
|
||||||
|
bool okay = false;
|
||||||
|
if (version >= minVersion)
|
||||||
|
okay = true;
|
||||||
|
for (int i = 0; i < numExtensions; ++i) {
|
||||||
|
TBehavior behavior = extensionBehavior[extensions[i]];
|
||||||
|
switch (behavior) {
|
||||||
|
case EBhWarn:
|
||||||
|
infoSink.info.message(EPrefixWarning, ("extension " + TString(extensions[i]) + " is being used for " + featureDesc).c_str(), line);
|
||||||
|
// fall through
|
||||||
|
case EBhRequire:
|
||||||
|
case EBhEnable:
|
||||||
|
okay = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! okay) {
|
||||||
|
error(line, "not supported for this version or the enabled extensions", featureDesc, "");
|
||||||
|
recover();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// one that takes a single extension
|
||||||
|
void TParseContext::profileRequires(int line, EProfile callingProfile, int minVersion, const char* extension, const char *featureDesc)
|
||||||
|
{
|
||||||
|
profileRequires(line, callingProfile, minVersion, 1, &extension, featureDesc);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Within a profile, see if a feature is deprecated and error or warn based on whether
|
||||||
|
// a future compatibility context is being use.
|
||||||
|
//
|
||||||
|
void TParseContext::checkDeprecated(int line, EProfile callingProfile, int depVersion, const char *featureDesc)
|
||||||
|
{
|
||||||
|
if (profile == callingProfile) {
|
||||||
|
if (version >= depVersion) {
|
||||||
|
if (futureCompatibility) {
|
||||||
|
error(line, "deprecated, may be removed in future release", featureDesc, "");
|
||||||
|
recover();
|
||||||
|
} else {
|
||||||
|
infoSink.info.message(EPrefixWarning, (TString(featureDesc) + " being used, but may be removed in future release").c_str(), line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Within a profile, see if a feature has now been removed and if so, give an error.
|
||||||
|
// The version argument is the first version no longer having the feature.
|
||||||
|
//
|
||||||
|
void TParseContext::requireNotRemoved(int line, EProfile callingProfile, int removedVersion, const char *featureDesc)
|
||||||
|
{
|
||||||
|
if (profile == callingProfile) {
|
||||||
|
if (version >= removedVersion) {
|
||||||
|
const int maxSize = 60;
|
||||||
|
char buf[maxSize];
|
||||||
|
sprintf_s(buf, maxSize, "%s profile; removed in version %d", ProfileName[profile], removedVersion);
|
||||||
|
error(line, "no longer supported in", featureDesc, buf);
|
||||||
|
recover();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
//
|
||||||
|
//Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
|
//All rights reserved.
|
||||||
|
//
|
||||||
|
//Copyright (C) 2012 LunarG, Inc.
|
||||||
|
//All rights reserved.
|
||||||
|
//
|
||||||
|
//Redistribution and use in source and binary forms, with or without
|
||||||
|
//modification, are permitted provided that the following conditions
|
||||||
|
//are met:
|
||||||
|
//
|
||||||
|
// Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following
|
||||||
|
// disclaimer in the documentation and/or other materials provided
|
||||||
|
// with the distribution.
|
||||||
|
//
|
||||||
|
// Neither the name of 3Dlabs Inc. Ltd. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived
|
||||||
|
// from this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
//POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
//
|
||||||
|
#ifndef _VERSIONS_INCLUDED_
|
||||||
|
#define _VERSIONS_INCLUDED_
|
||||||
|
|
||||||
|
//
|
||||||
|
// Help manage multiple profiles, versions, extensions etc.
|
||||||
|
//
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
ENoProfile, // only for desktop, before profiles showed up
|
||||||
|
ECoreProfile,
|
||||||
|
ECompatibilityProfile,
|
||||||
|
EEsProfile,
|
||||||
|
EProfileCount,
|
||||||
|
} EProfile;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
ENoProfileMask = (1 << ENoProfile),
|
||||||
|
ECoreProfileMask = (1 << ECoreProfile),
|
||||||
|
ECompatibilityProfileMask = (1 << ECompatibilityProfile),
|
||||||
|
EEsProfileMask = (1 << EEsProfile)
|
||||||
|
} EProfileMask;
|
||||||
|
|
||||||
|
#endif // _VERSIONS_INCLUDED_
|
|
@ -3,6 +3,8 @@
|
||||||
//Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
//Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
//All rights reserved.
|
//All rights reserved.
|
||||||
//
|
//
|
||||||
|
//Copyright (C) 2012 LunarG, Inc.
|
||||||
|
//
|
||||||
//Redistribution and use in source and binary forms, with or without
|
//Redistribution and use in source and binary forms, with or without
|
||||||
//modification, are permitted provided that the following conditions
|
//modification, are permitted provided that the following conditions
|
||||||
//are met:
|
//are met:
|
||||||
|
@ -568,7 +570,7 @@ void CPPShInfoLogMsg(const char *msg)
|
||||||
|
|
||||||
void CPPErrorToInfoLog(char *msg)
|
void CPPErrorToInfoLog(char *msg)
|
||||||
{
|
{
|
||||||
((TParseContext *)cpp->pC)->error(yylineno,"syntax error", "",msg,"");
|
((TParseContext *)cpp->pC)->error(yylineno, "CPP error:", "",msg,"");
|
||||||
GlobalParseContext->recover();
|
GlobalParseContext->recover();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -708,6 +710,48 @@ void ResetTString(void)
|
||||||
((TParseContext *)cpp->pC)->HashErrMsg = "";
|
((TParseContext *)cpp->pC)->HashErrMsg = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetVersion(int version)
|
||||||
|
{
|
||||||
|
((TParseContext *)cpp->pC)->version = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
const int FirstProfileVersion = 150;
|
||||||
|
|
||||||
|
// Important assumption: SetVersion() is called before SetProfile(), and is always called
|
||||||
|
// if there is a version, sending in a ENoProfile if there is no profile given.
|
||||||
|
void SetProfile(EProfile profile)
|
||||||
|
{
|
||||||
|
int version = ((TParseContext *)cpp->pC)->version;
|
||||||
|
|
||||||
|
if (profile == ENoProfile) {
|
||||||
|
if (version == 100 || version == 300) {
|
||||||
|
CPPErrorToInfoLog("versions 100 and 300 require specifying the es profile");
|
||||||
|
((TParseContext *)cpp->pC)->profile = ENoProfile;
|
||||||
|
} else if (version >= FirstProfileVersion)
|
||||||
|
((TParseContext *)cpp->pC)->profile = ECoreProfile;
|
||||||
|
else
|
||||||
|
((TParseContext *)cpp->pC)->profile = ENoProfile;
|
||||||
|
} else {
|
||||||
|
// a profile was provided...
|
||||||
|
if (version == 100 || version == 300) {
|
||||||
|
if (profile != EEsProfile)
|
||||||
|
CPPErrorToInfoLog("versions 100 and 300 only support the es profile");
|
||||||
|
((TParseContext *)cpp->pC)->profile = EEsProfile;
|
||||||
|
} else {
|
||||||
|
if (profile == EEsProfile) {
|
||||||
|
CPPErrorToInfoLog("only versions 100 and 300 support the es profile");
|
||||||
|
if (version >= FirstProfileVersion)
|
||||||
|
((TParseContext *)cpp->pC)->profile = ECoreProfile;
|
||||||
|
else
|
||||||
|
((TParseContext *)cpp->pC)->profile = ENoProfile;
|
||||||
|
} else {
|
||||||
|
// typical desktop case... e.g., "#version 410 core"
|
||||||
|
((TParseContext *)cpp->pC)->profile = profile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TBehavior GetBehavior(const char* behavior)
|
TBehavior GetBehavior(const char* behavior)
|
||||||
{
|
{
|
||||||
if (!strcmp("require", behavior))
|
if (!strcmp("require", behavior))
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
//Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
//Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
//All rights reserved.
|
//All rights reserved.
|
||||||
//
|
//
|
||||||
|
//Copyright (C) 2012 LunarG, Inc.
|
||||||
|
//
|
||||||
//Redistribution and use in source and binary forms, with or without
|
//Redistribution and use in source and binary forms, with or without
|
||||||
//modification, are permitted provided that the following conditions
|
//modification, are permitted provided that the following conditions
|
||||||
//are met:
|
//are met:
|
||||||
|
@ -70,20 +72,6 @@ Jutta Degener, 1995
|
||||||
extern void yyerror(char*);
|
extern void yyerror(char*);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define VERTEX_ONLY(S, L) { \
|
|
||||||
if (parseContext.language != EShLangVertex) { \
|
|
||||||
parseContext.error(L, " supported in vertex shaders only ", S, "", ""); \
|
|
||||||
parseContext.recover(); \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define FRAG_ONLY(S, L) { \
|
|
||||||
if (parseContext.language != EShLangFragment) { \
|
|
||||||
parseContext.error(L, " supported in fragment shaders only ", S, "", "");\
|
|
||||||
parseContext.recover(); \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
%}
|
%}
|
||||||
%union {
|
%union {
|
||||||
struct {
|
struct {
|
||||||
|
@ -384,12 +372,8 @@ postfix_expression
|
||||||
// TODO: if next token is not "(", then this is an error
|
// TODO: if next token is not "(", then this is an error
|
||||||
|
|
||||||
if (*$3.string == "length") {
|
if (*$3.string == "length") {
|
||||||
if (parseContext.extensionErrorCheck($3.line, "GL_3DL_array_objects")) {
|
parseContext.profileRequires($3.line, ENoProfile, 120, "GL_3DL_array_objects", ".length");
|
||||||
parseContext.recover();
|
|
||||||
$$ = $1;
|
|
||||||
} else {
|
|
||||||
$$ = parseContext.intermediate.addMethod($1, TType(EbtInt), $3.string, $2.line);
|
$$ = parseContext.intermediate.addMethod($1, TType(EbtInt), $3.string, $2.line);
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
parseContext.error($3.line, "only the length method is supported for array", $3.string->c_str(), "");
|
parseContext.error($3.line, "only the length method is supported for array", $3.string->c_str(), "");
|
||||||
parseContext.recover();
|
parseContext.recover();
|
||||||
|
@ -695,10 +679,7 @@ function_identifier
|
||||||
$$.intermNode = 0;
|
$$.intermNode = 0;
|
||||||
|
|
||||||
if ($1.array) {
|
if ($1.array) {
|
||||||
if (parseContext.extensionErrorCheck($1.line, "GL_3DL_array_objects")) {
|
parseContext.profileRequires($1.line, ENoProfile, 120, "GL_3DL_array_objects", "array");
|
||||||
parseContext.recover();
|
|
||||||
$1.setArray(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($1.userDef) {
|
if ($1.userDef) {
|
||||||
|
@ -966,8 +947,8 @@ equality_expression
|
||||||
constUnion *unionArray = new constUnion[1];
|
constUnion *unionArray = new constUnion[1];
|
||||||
unionArray->setBConst(false);
|
unionArray->setBConst(false);
|
||||||
$$ = parseContext.intermediate.addConstantUnion(unionArray, TType(EbtBool, EvqConst), $2.line);
|
$$ = parseContext.intermediate.addConstantUnion(unionArray, TType(EbtBool, EvqConst), $2.line);
|
||||||
} else if (($1->isArray() || $3->isArray()) && parseContext.extensionErrorCheck($2.line, "GL_3DL_array_objects"))
|
} else if (($1->isArray() || $3->isArray()))
|
||||||
parseContext.recover();
|
parseContext.profileRequires($2.line, ENoProfile, 120, "GL_3DL_array_objects", "==");
|
||||||
}
|
}
|
||||||
| equality_expression NE_OP relational_expression {
|
| equality_expression NE_OP relational_expression {
|
||||||
$$ = parseContext.intermediate.addBinaryMath(EOpNotEqual, $1, $3, $2.line, parseContext.symbolTable);
|
$$ = parseContext.intermediate.addBinaryMath(EOpNotEqual, $1, $3, $2.line, parseContext.symbolTable);
|
||||||
|
@ -977,8 +958,8 @@ equality_expression
|
||||||
constUnion *unionArray = new constUnion[1];
|
constUnion *unionArray = new constUnion[1];
|
||||||
unionArray->setBConst(false);
|
unionArray->setBConst(false);
|
||||||
$$ = parseContext.intermediate.addConstantUnion(unionArray, TType(EbtBool, EvqConst), $2.line);
|
$$ = parseContext.intermediate.addConstantUnion(unionArray, TType(EbtBool, EvqConst), $2.line);
|
||||||
} else if (($1->isArray() || $3->isArray()) && parseContext.extensionErrorCheck($2.line, "GL_3DL_array_objects"))
|
} else if (($1->isArray() || $3->isArray()))
|
||||||
parseContext.recover();
|
parseContext.profileRequires($2.line, ENoProfile, 120, "GL_3DL_array_objects", "!=");
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -1088,8 +1069,8 @@ assignment_expression
|
||||||
parseContext.assignError($2.line, "assign", $1->getCompleteString(), $3->getCompleteString());
|
parseContext.assignError($2.line, "assign", $1->getCompleteString(), $3->getCompleteString());
|
||||||
parseContext.recover();
|
parseContext.recover();
|
||||||
$$ = $1;
|
$$ = $1;
|
||||||
} else if (($1->isArray() || $3->isArray()) && parseContext.extensionErrorCheck($2.line, "GL_3DL_array_objects"))
|
} else if (($1->isArray() || $3->isArray()))
|
||||||
parseContext.recover();
|
parseContext.profileRequires($2.line, ENoProfile, 120, "GL_3DL_array_objects", "=");
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -1394,9 +1375,8 @@ init_declarator_list
|
||||||
parseContext.recover();
|
parseContext.recover();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parseContext.extensionErrorCheck($$.line, "GL_3DL_array_objects"))
|
parseContext.profileRequires($5.line, ENoProfile, 120, "GL_3DL_array_objects", "initializer");
|
||||||
parseContext.recover();
|
|
||||||
else {
|
|
||||||
TIntermNode* intermNode;
|
TIntermNode* intermNode;
|
||||||
if (!parseContext.executeInitializer($3.line, *$3.string, $1.type, $6, intermNode, variable)) {
|
if (!parseContext.executeInitializer($3.line, *$3.string, $1.type, $6, intermNode, variable)) {
|
||||||
//
|
//
|
||||||
|
@ -1411,7 +1391,6 @@ init_declarator_list
|
||||||
$$.intermAggregate = 0;
|
$$.intermAggregate = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
| init_declarator_list COMMA IDENTIFIER EQUAL initializer {
|
| init_declarator_list COMMA IDENTIFIER EQUAL initializer {
|
||||||
if (parseContext.structQualifierErrorCheck($3.line, $1.type))
|
if (parseContext.structQualifierErrorCheck($3.line, $1.type))
|
||||||
parseContext.recover();
|
parseContext.recover();
|
||||||
|
@ -1492,9 +1471,8 @@ single_declaration
|
||||||
parseContext.recover();
|
parseContext.recover();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parseContext.extensionErrorCheck($$.line, "GL_3DL_array_objects"))
|
parseContext.profileRequires($4.line, ENoProfile, 120, "GL_3DL_array_objects", "initializer");
|
||||||
parseContext.recover();
|
|
||||||
else {
|
|
||||||
TIntermNode* intermNode;
|
TIntermNode* intermNode;
|
||||||
if (!parseContext.executeInitializer($2.line, *$2.string, $1, $5, intermNode, variable)) {
|
if (!parseContext.executeInitializer($2.line, *$2.string, $1, $5, intermNode, variable)) {
|
||||||
//
|
//
|
||||||
|
@ -1509,7 +1487,6 @@ single_declaration
|
||||||
$$.intermAggregate = 0;
|
$$.intermAggregate = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
| fully_specified_type IDENTIFIER EQUAL initializer {
|
| fully_specified_type IDENTIFIER EQUAL initializer {
|
||||||
if (parseContext.structQualifierErrorCheck($2.line, $1))
|
if (parseContext.structQualifierErrorCheck($2.line, $1))
|
||||||
parseContext.recover();
|
parseContext.recover();
|
||||||
|
@ -1538,17 +1515,13 @@ fully_specified_type
|
||||||
$$ = $1;
|
$$ = $1;
|
||||||
|
|
||||||
if ($1.array) {
|
if ($1.array) {
|
||||||
if (parseContext.extensionErrorCheck($1.line, "GL_3DL_array_objects")) {
|
parseContext.profileRequires($1.line, ENoProfile, 120, "GL_3DL_array_objects", "array");
|
||||||
parseContext.recover();
|
|
||||||
$1.setArray(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
| type_qualifier type_specifier {
|
| type_qualifier type_specifier {
|
||||||
if ($2.array && parseContext.extensionErrorCheck($2.line, "GL_3DL_array_objects")) {
|
if ($2.array)
|
||||||
parseContext.recover();
|
parseContext.profileRequires($1.line, ENoProfile, 120, "GL_3DL_array_objects", "array");
|
||||||
$2.setArray(false);
|
|
||||||
}
|
|
||||||
if ($2.array && parseContext.arrayQualifierErrorCheck($2.line, $1)) {
|
if ($2.array && parseContext.arrayQualifierErrorCheck($2.line, $1)) {
|
||||||
parseContext.recover();
|
parseContext.recover();
|
||||||
$2.setArray(false);
|
$2.setArray(false);
|
||||||
|
@ -1661,12 +1634,15 @@ storage_qualifier
|
||||||
$$.setBasic(EbtVoid, EvqConst, $1.line);
|
$$.setBasic(EbtVoid, EvqConst, $1.line);
|
||||||
}
|
}
|
||||||
| ATTRIBUTE {
|
| ATTRIBUTE {
|
||||||
VERTEX_ONLY("attribute", $1.line);
|
//parseContext.requireProfile($1.line, (EProfileMask)(ENoProfileMask | ECompatibilityProfileMask), "attribute");
|
||||||
|
parseContext.requireStage($1.line, EShLangVertexMask, "attribute");
|
||||||
|
parseContext.requireNotRemoved($1.line, ECoreProfile, 420, "attribute");
|
||||||
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "attribute"))
|
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "attribute"))
|
||||||
parseContext.recover();
|
parseContext.recover();
|
||||||
$$.setBasic(EbtVoid, EvqAttribute, $1.line);
|
$$.setBasic(EbtVoid, EvqAttribute, $1.line);
|
||||||
}
|
}
|
||||||
| VARYING {
|
| VARYING {
|
||||||
|
parseContext.requireNotRemoved($1.line, ECoreProfile, 420, "varying");
|
||||||
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "varying"))
|
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "varying"))
|
||||||
parseContext.recover();
|
parseContext.recover();
|
||||||
if (parseContext.language == EShLangVertex)
|
if (parseContext.language == EShLangVertex)
|
||||||
|
@ -2162,29 +2138,25 @@ type_specifier_nonarray
|
||||||
$$.setBasic(EbtSampler2DShadow, qual, $1.line);
|
$$.setBasic(EbtSampler2DShadow, qual, $1.line);
|
||||||
}
|
}
|
||||||
| SAMPLER2DRECT {
|
| SAMPLER2DRECT {
|
||||||
if (parseContext.extensionErrorCheck($1.line, "GL_ARB_texture_rectangle"))
|
parseContext.profileRequires($1.line, ENoProfile, 140, "GL_ARB_texture_rectangle", "rectangle texture");
|
||||||
parseContext.recover();
|
|
||||||
|
|
||||||
TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
|
TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
|
||||||
$$.setBasic(EbtSamplerRect, qual, $1.line);
|
$$.setBasic(EbtSamplerRect, qual, $1.line);
|
||||||
}
|
}
|
||||||
| SAMPLER2DRECTSHADOW {
|
| SAMPLER2DRECTSHADOW {
|
||||||
if (parseContext.extensionErrorCheck($1.line, "GL_ARB_texture_rectangle"))
|
parseContext.profileRequires($1.line, ECoreProfile, 140, "GL_ARB_texture_rectangle", "rectangle texture");
|
||||||
parseContext.recover();
|
|
||||||
|
|
||||||
TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
|
TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
|
||||||
$$.setBasic(EbtSamplerRectShadow, qual, $1.line);
|
$$.setBasic(EbtSamplerRectShadow, qual, $1.line);
|
||||||
}
|
}
|
||||||
| ISAMPLER2DRECT {
|
| ISAMPLER2DRECT {
|
||||||
if (parseContext.extensionErrorCheck($1.line, "GL_ARB_texture_rectangle"))
|
parseContext.profileRequires($1.line, ECoreProfile, 140, "GL_ARB_texture_rectangle", "rectangle texture");
|
||||||
parseContext.recover();
|
|
||||||
|
|
||||||
TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
|
TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
|
||||||
$$.setBasic(EbtSamplerRect, qual, $1.line);
|
$$.setBasic(EbtSamplerRect, qual, $1.line);
|
||||||
}
|
}
|
||||||
| USAMPLER2DRECT {
|
| USAMPLER2DRECT {
|
||||||
if (parseContext.extensionErrorCheck($1.line, "GL_ARB_texture_rectangle"))
|
parseContext.profileRequires($1.line, ECoreProfile, 140, "GL_ARB_texture_rectangle", "rectangle texture");
|
||||||
parseContext.recover();
|
|
||||||
|
|
||||||
TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
|
TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
|
||||||
$$.setBasic(EbtSamplerRect, qual, $1.line);
|
$$.setBasic(EbtSamplerRect, qual, $1.line);
|
||||||
|
@ -2760,7 +2732,7 @@ jump_statement
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
| DISCARD SEMICOLON {
|
| DISCARD SEMICOLON {
|
||||||
FRAG_ONLY("discard", $1.line);
|
parseContext.requireStage($1.line, EShLangFragmentMask, "discard");
|
||||||
$$ = parseContext.intermediate.addBranch(EOpKill, $1.line);
|
$$ = parseContext.intermediate.addBranch(EOpKill, $1.line);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
|
@ -127,10 +127,6 @@ struct CPPStruct_Rec {
|
||||||
int PaArgc; // count of strings in the array
|
int PaArgc; // count of strings in the array
|
||||||
char** PaArgv; // our array of strings to parse
|
char** PaArgv; // our array of strings to parse
|
||||||
unsigned int tokensBeforeEOF : 1;
|
unsigned int tokensBeforeEOF : 1;
|
||||||
|
|
||||||
// Declared version of the shader
|
|
||||||
int version;
|
|
||||||
int profileAtom;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // !defined(__COMPILE_H)
|
#endif // !defined(__COMPILE_H)
|
||||||
|
|
|
@ -685,18 +685,22 @@ static int CPPversion(yystypepp * yylvalpp)
|
||||||
|
|
||||||
yylvalpp->sc_int=atoi(yylvalpp->symbol_name);
|
yylvalpp->sc_int=atoi(yylvalpp->symbol_name);
|
||||||
|
|
||||||
cpp->version = yylvalpp->sc_int;
|
SetVersion(yylvalpp->sc_int);
|
||||||
|
|
||||||
token = cpp->currentInput->scan(cpp->currentInput, yylvalpp);
|
token = cpp->currentInput->scan(cpp->currentInput, yylvalpp);
|
||||||
|
|
||||||
if (token == '\n') {
|
if (token == '\n') {
|
||||||
|
SetProfile(ENoProfile);
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
cpp->profileAtom = yylvalpp->sc_ident;
|
if (yylvalpp->sc_ident == coreAtom)
|
||||||
if (cpp->profileAtom != coreAtom &&
|
SetProfile(ECoreProfile);
|
||||||
cpp->profileAtom != compatibilityAtom &&
|
else if (yylvalpp->sc_ident == compatibilityAtom)
|
||||||
cpp->profileAtom != esAtom)
|
SetProfile(ECompatibilityProfile);
|
||||||
|
else if (yylvalpp->sc_ident == esAtom)
|
||||||
|
SetProfile(EEsProfile);
|
||||||
|
else
|
||||||
CPPErrorToInfoLog("#version profile name");
|
CPPErrorToInfoLog("#version profile name");
|
||||||
|
|
||||||
token = cpp->currentInput->scan(cpp->currentInput, yylvalpp);
|
token = cpp->currentInput->scan(cpp->currentInput, yylvalpp);
|
||||||
|
|
|
@ -83,6 +83,7 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "parser.h"
|
#include "parser.h"
|
||||||
#include "tokens.h"
|
#include "tokens.h"
|
||||||
|
#include "Versions.h"
|
||||||
|
|
||||||
int InitCPP(void);
|
int InitCPP(void);
|
||||||
int FinalCPP(void);
|
int FinalCPP(void);
|
||||||
|
@ -113,6 +114,8 @@ void SetStringNumber(int); // Set string number.
|
||||||
int GetLineNumber(void); // Get the current String Number.
|
int GetLineNumber(void); // Get the current String Number.
|
||||||
int GetStringNumber(void); // Get the current String Number.
|
int GetStringNumber(void); // Get the current String Number.
|
||||||
const char* GetStrfromTStr(void); // Convert TString to String.
|
const char* GetStrfromTStr(void); // Convert TString to String.
|
||||||
|
void SetVersion(int);
|
||||||
|
void SetProfile(EProfile);
|
||||||
void updateExtensionBehavior(const char* extName, const char* behavior);
|
void updateExtensionBehavior(const char* extName, const char* behavior);
|
||||||
int FreeCPP(void);
|
int FreeCPP(void);
|
||||||
|
|
||||||
|
|
|
@ -132,8 +132,6 @@ int ResetPreprocessor(void)
|
||||||
cpp->elsedepth[cpp->elsetracker]=0;
|
cpp->elsedepth[cpp->elsetracker]=0;
|
||||||
cpp->elsetracker=0;
|
cpp->elsetracker=0;
|
||||||
cpp->tokensBeforeEOF = 0;
|
cpp->tokensBeforeEOF = 0;
|
||||||
cpp->version = 110;
|
|
||||||
cpp->profileAtom = 0;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,10 +71,23 @@ SH_IMPORT_EXPORT int __fastcall ShFinalize();
|
||||||
//
|
//
|
||||||
typedef enum {
|
typedef enum {
|
||||||
EShLangVertex,
|
EShLangVertex,
|
||||||
|
EShLangTessControl,
|
||||||
|
EShLangTessEvaluation,
|
||||||
|
EShLangGeometry,
|
||||||
EShLangFragment,
|
EShLangFragment,
|
||||||
EShLangCount,
|
EShLangCount,
|
||||||
} EShLanguage;
|
} EShLanguage;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
EShLangVertexMask = (1 << EShLangVertex),
|
||||||
|
EShLangTessControlMask = (1 << EShLangTessControl),
|
||||||
|
EShLangTessEvaluationMask = (1 << EShLangTessEvaluation),
|
||||||
|
EShLangGeometryMask = (1 << EShLangGeometry),
|
||||||
|
EShLangFragmentMask = (1 << EShLangFragment),
|
||||||
|
} EShLanguageMask;
|
||||||
|
|
||||||
|
extern char* StageName[EShLangCount];
|
||||||
|
|
||||||
//
|
//
|
||||||
// Types of output the linker will create.
|
// Types of output the linker will create.
|
||||||
//
|
//
|
||||||
|
|
Загрузка…
Ссылка в новой задаче