Skip to content

Commit 12f7237

Browse files
Add GLSL Compatibility. (shader-slang#3321)
* Parse glsl buffer blocks to GLSLInterfaceBlockDecl * Parse glsl local size layout declarations * Parse (and ignore) glsl version directives * spelling * Better l-value interpretation for glsl interface blocks * Better l-value interpretation for glsl interface blocks * Add compile flag for enabling glsl * Parse and ignore precision modifiers. * Automatically import `glsl` module for compatiblity. * Complete vector and matrix types for glsl * Remove generated file from repo * Bump .gitignore * do not mark out globals as params * Synthesize entrypoint layout from global inout vars. * update test result. * Allow HLSL semantic on global variables. * Fix. * Fix test. * Fix win32 compile error. * Add more builtin input/output and texture intrinsics. * Add struct/array constructor syntax. * Skip `#extension` lines. * overide operator * for matrix/vector multiplication. * Add `matrixCompMult`. * Parse modifiers in for loop init var declr. * Add more glsl intrinsics, add stage into to var layout. * Allow `int[3] x` syntax. * Fix array type syntax. --------- Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com> Co-authored-by: Yong He <yhe@nvidia.com>
1 parent c71b127 commit 12f7237

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1311
-90
lines changed

.gitignore

+1-3
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@ tools/gfx-unit-test/test-tmp-*
4949

5050
# Intermediate source files generated during build process
5151
/source/slang/slang-generated-*.h
52-
/source/slang/hlsl.meta.slang.h
53-
/source/slang/core.meta.slang.h
54-
/source/slang/diff.meta.slang.h
52+
/source/slang/*.meta.slang.h
5553
prelude/*.h.cpp
5654
/source/slang/cpp.hint
5755
/source/slang/slang-value-generated.h

build/visual-studio/run-generators/run-generators.vcxproj

+17
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,23 @@
268268
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../bin/windows-x64/release/slang-generate.exe</AdditionalInputs>
269269
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM64'">../../../bin/windows-aarch64/release/slang-generate.exe</AdditionalInputs>
270270
</CustomBuild>
271+
<CustomBuild Include="..\..\..\source\slang\glsl.meta.slang">
272+
<FileType>Document</FileType>
273+
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"../../../bin/windows-x86/debug/slang-generate" %(Identity)</Command>
274+
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"../../../bin/windows-x64/debug/slang-generate" %(Identity)</Command>
275+
<Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM64'">"../../../bin/windows-aarch64/debug/slang-generate" %(Identity)</Command>
276+
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"../../../bin/windows-x86/release/slang-generate" %(Identity)</Command>
277+
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"../../../bin/windows-x64/release/slang-generate" %(Identity)</Command>
278+
<Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM64'">"../../../bin/windows-aarch64/release/slang-generate" %(Identity)</Command>
279+
<Outputs>../../../source/slang/glsl.meta.slang.h</Outputs>
280+
<Message>slang-generate %(Identity)</Message>
281+
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../bin/windows-x86/debug/slang-generate.exe</AdditionalInputs>
282+
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../bin/windows-x64/debug/slang-generate.exe</AdditionalInputs>
283+
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM64'">../../../bin/windows-aarch64/debug/slang-generate.exe</AdditionalInputs>
284+
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../bin/windows-x86/release/slang-generate.exe</AdditionalInputs>
285+
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../bin/windows-x64/release/slang-generate.exe</AdditionalInputs>
286+
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM64'">../../../bin/windows-aarch64/release/slang-generate.exe</AdditionalInputs>
287+
</CustomBuild>
271288
<CustomBuild Include="..\..\..\source\slang\hlsl.meta.slang">
272289
<FileType>Document</FileType>
273290
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"../../../bin/windows-x86/debug/slang-generate" %(Identity)</Command>

build/visual-studio/run-generators/run-generators.vcxproj.filters

+3
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@
4949
<CustomBuild Include="..\..\..\source\slang\diff.meta.slang">
5050
<Filter>Source Files</Filter>
5151
</CustomBuild>
52+
<CustomBuild Include="..\..\..\source\slang\glsl.meta.slang">
53+
<Filter>Source Files</Filter>
54+
</CustomBuild>
5255
<CustomBuild Include="..\..\..\source\slang\hlsl.meta.slang">
5356
<Filter>Source Files</Filter>
5457
</CustomBuild>

build/visual-studio/slang/slang.vcxproj

+3
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,7 @@ IF EXIST ..\..\..\external\slang-glslang\bin\windows-aarch64\release\slang-glsla
464464
<ClInclude Include="..\..\..\source\slang\slang-ir-strip-witness-tables.h" />
465465
<ClInclude Include="..\..\..\source\slang\slang-ir-strip.h" />
466466
<ClInclude Include="..\..\..\source\slang\slang-ir-synthesize-active-mask.h" />
467+
<ClInclude Include="..\..\..\source\slang\slang-ir-translate-glsl-global-var.h" />
467468
<ClInclude Include="..\..\..\source\slang\slang-ir-use-uninitialized-out-param.h" />
468469
<ClInclude Include="..\..\..\source\slang\slang-ir-util.h" />
469470
<ClInclude Include="..\..\..\source\slang\slang-ir-validate.h" />
@@ -679,6 +680,7 @@ IF EXIST ..\..\..\external\slang-glslang\bin\windows-aarch64\release\slang-glsla
679680
<ClCompile Include="..\..\..\source\slang\slang-ir-strip-witness-tables.cpp" />
680681
<ClCompile Include="..\..\..\source\slang\slang-ir-strip.cpp" />
681682
<ClCompile Include="..\..\..\source\slang\slang-ir-synthesize-active-mask.cpp" />
683+
<ClCompile Include="..\..\..\source\slang\slang-ir-translate-glsl-global-var.cpp" />
682684
<ClCompile Include="..\..\..\source\slang\slang-ir-use-uninitialized-out-param.cpp" />
683685
<ClCompile Include="..\..\..\source\slang\slang-ir-util.cpp" />
684686
<ClCompile Include="..\..\..\source\slang\slang-ir-validate.cpp" />
@@ -732,6 +734,7 @@ IF EXIST ..\..\..\external\slang-glslang\bin\windows-aarch64\release\slang-glsla
732734
<ItemGroup>
733735
<None Include="..\..\..\source\slang\core.meta.slang" />
734736
<None Include="..\..\..\source\slang\diff.meta.slang" />
737+
<None Include="..\..\..\source\slang\glsl.meta.slang" />
735738
<None Include="..\..\..\source\slang\hlsl.meta.slang" />
736739
<None Include="..\..\..\source\slang\slang.natjmc" />
737740
</ItemGroup>

build/visual-studio/slang/slang.vcxproj.filters

+9
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,9 @@
480480
<ClInclude Include="..\..\..\source\slang\slang-ir-synthesize-active-mask.h">
481481
<Filter>Header Files</Filter>
482482
</ClInclude>
483+
<ClInclude Include="..\..\..\source\slang\slang-ir-translate-glsl-global-var.h">
484+
<Filter>Header Files</Filter>
485+
</ClInclude>
483486
<ClInclude Include="..\..\..\source\slang\slang-ir-use-uninitialized-out-param.h">
484487
<Filter>Header Files</Filter>
485488
</ClInclude>
@@ -1121,6 +1124,9 @@
11211124
<ClCompile Include="..\..\..\source\slang\slang-ir-synthesize-active-mask.cpp">
11221125
<Filter>Source Files</Filter>
11231126
</ClCompile>
1127+
<ClCompile Include="..\..\..\source\slang\slang-ir-translate-glsl-global-var.cpp">
1128+
<Filter>Source Files</Filter>
1129+
</ClCompile>
11241130
<ClCompile Include="..\..\..\source\slang\slang-ir-use-uninitialized-out-param.cpp">
11251131
<Filter>Source Files</Filter>
11261132
</ClCompile>
@@ -1276,6 +1282,9 @@
12761282
<None Include="..\..\..\source\slang\diff.meta.slang">
12771283
<Filter>Source Files</Filter>
12781284
</None>
1285+
<None Include="..\..\..\source\slang\glsl.meta.slang">
1286+
<Filter>Source Files</Filter>
1287+
</None>
12791288
<None Include="..\..\..\source\slang\hlsl.meta.slang">
12801289
<Filter>Source Files</Filter>
12811290
</None>

slang.h

+7
Original file line numberDiff line numberDiff line change
@@ -1998,6 +1998,7 @@ extern "C"
19981998
SLANG_RESOURCE_EXT_SHAPE_MASK = 0xF0,
19991999

20002000
SLANG_TEXTURE_FEEDBACK_FLAG = 0x10,
2001+
SLANG_TEXTURE_SHADOW_FLAG = 0x20,
20012002
SLANG_TEXTURE_ARRAY_FLAG = 0x40,
20022003
SLANG_TEXTURE_MULTISAMPLE_FLAG = 0x80,
20032004

@@ -3881,6 +3882,11 @@ namespace slang
38813882
int slotIndex,
38823883
char const* typeName) = 0;
38833884

3885+
/** Enable or disable an experimental, best-effort GLSL frontend
3886+
*/
3887+
virtual SLANG_NO_THROW void SLANG_MCALL setAllowGLSLInput(
3888+
bool value) = 0;
3889+
38843890
/** Execute the compilation request.
38853891
38863892
@returns SlangResult, SLANG_OK on success. Use SLANG_SUCCEEDED() and SLANG_FAILED() to test SlangResult.
@@ -4259,6 +4265,7 @@ namespace slang
42594265
ISlangFileSystem* fileSystem = nullptr;
42604266

42614267
bool enableEffectAnnotations = false;
4268+
bool allowGLSLSyntax = false;
42624269
};
42634270

42644271
enum class ContainerType

source/slang/core.meta.slang

+6-1
Original file line numberDiff line numberDiff line change
@@ -1482,9 +1482,14 @@ for(auto& prefixInfo : kTexturePrefixes)
14821482
for(auto& shapeInfo : kBaseTextureShapes)
14831483
for(int isArray = 0; isArray < 2; ++isArray)
14841484
for(int isMultisample = 0; isMultisample < 2; ++isMultisample)
1485+
for(int isShadow = 0; isShadow < 2; ++isShadow)
14851486
for(auto& accessInfo : kBaseTextureAccessLevels)
14861487
{
1487-
TextureTypeInfo info(prefixInfo, shapeInfo, isArray, isMultisample, accessInfo, sb, path);
1488+
// Define `Shadow` flavored types only for combined texture-samplers.
1489+
if (!prefixInfo.combined && isShadow == 1)
1490+
continue;
1491+
1492+
TextureTypeInfo info(prefixInfo, shapeInfo, isArray, isMultisample, isShadow, accessInfo, sb, path);
14881493
info.emitTypeDecl();
14891494
}
14901495

0 commit comments

Comments
 (0)