Commit 086febc4 by John Kessenich

PP: Fix #155: Don't give error on HLSL PP-only parsing.

parent a08f465d
...@@ -961,8 +961,7 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits) ...@@ -961,8 +961,7 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
includer.pushExternalLocalDirectory(dir); }); includer.pushExternalLocalDirectory(dir); });
if (Options & EOptionOutputPreprocessed) { if (Options & EOptionOutputPreprocessed) {
std::string str; std::string str;
if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false, if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false, messages, &str, includer)) {
messages, &str, includer)) {
PutsIfNonEmpty(str.c_str()); PutsIfNonEmpty(str.c_str());
} else { } else {
CompileFailed = true; CompileFailed = true;
...@@ -971,6 +970,7 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits) ...@@ -971,6 +970,7 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
StderrIfNonEmpty(shader->getInfoDebugLog()); StderrIfNonEmpty(shader->getInfoDebugLog());
continue; continue;
} }
if (! shader->parse(&Resources, defaultVersion, false, messages, includer)) if (! shader->parse(&Resources, defaultVersion, false, messages, includer))
CompileFailed = true; CompileFailed = true;
...@@ -1167,13 +1167,15 @@ int singleMain() ...@@ -1167,13 +1167,15 @@ int singleMain()
ProcessConfigFile(); ProcessConfigFile();
if ((Options & EOptionReadHlsl) && !((Options & EOptionOutputPreprocessed) || (Options & EOptionSpv)))
Error("ERROR: HLSL requires SPIR-V code generation (or preprocessing only)");
// //
// Two modes: // Two modes:
// 1) linking all arguments together, single-threaded, new C++ interface // 1) linking all arguments together, single-threaded, new C++ interface
// 2) independent arguments, can be tackled by multiple asynchronous threads, for testing thread safety, using the old handle interface // 2) independent arguments, can be tackled by multiple asynchronous threads, for testing thread safety, using the old handle interface
// //
if (Options & EOptionLinkProgram || if (Options & (EOptionLinkProgram | EOptionOutputPreprocessed)) {
Options & EOptionOutputPreprocessed) {
glslang::InitializeProcess(); glslang::InitializeProcess();
glslang::InitializeProcess(); // also test reference counting of users glslang::InitializeProcess(); // also test reference counting of users
glslang::InitializeProcess(); // also test reference counting of users glslang::InitializeProcess(); // also test reference counting of users
......
ERROR: HLSL currently only supported when requesting SPIR-V for Vulkan.
ERROR: HLSL currently only supported when requesting SPIR-V for Vulkan.
...@@ -208,6 +208,7 @@ diff -b $BASEDIR/hlsl.y-negate-3.vert.out $TARGETDIR/hlsl.y-negate-3.vert.out || ...@@ -208,6 +208,7 @@ diff -b $BASEDIR/hlsl.y-negate-3.vert.out $TARGETDIR/hlsl.y-negate-3.vert.out ||
# #
# Testing hlsl_functionality1 # Testing hlsl_functionality1
# #
echo "Testing hlsl_functionality1"
$EXE -H -e main -D -Od -fhlsl_functionality1 hlsl.structbuffer.incdec.frag > \ $EXE -H -e main -D -Od -fhlsl_functionality1 hlsl.structbuffer.incdec.frag > \
$TARGETDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out $TARGETDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out
diff -b $BASEDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out $TARGETDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out || HASERROR=1 diff -b $BASEDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out $TARGETDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out || HASERROR=1
...@@ -218,6 +219,7 @@ diff -b $BASEDIR/hlsl.noSemantic.functionality1.comp.out $TARGETDIR/hlsl.noSeman ...@@ -218,6 +219,7 @@ diff -b $BASEDIR/hlsl.noSemantic.functionality1.comp.out $TARGETDIR/hlsl.noSeman
# #
# Testing HLSL-specific PP feature expansion # Testing HLSL-specific PP feature expansion
# #
echo "Testing HLSL-specific PP feature expansion"
$EXE -D -E hlsl.pp.expand.frag > $TARGETDIR/hlsl.pp.expand.frag.out 2> $TARGETDIR/hlsl.pp.expand.frag.err $EXE -D -E hlsl.pp.expand.frag > $TARGETDIR/hlsl.pp.expand.frag.out 2> $TARGETDIR/hlsl.pp.expand.frag.err
diff -b $BASEDIR/hlsl.pp.expand.frag.out $TARGETDIR/hlsl.pp.expand.frag.out || HASERROR=1 diff -b $BASEDIR/hlsl.pp.expand.frag.out $TARGETDIR/hlsl.pp.expand.frag.out || HASERROR=1
diff -b $BASEDIR/hlsl.pp.expand.frag.err $TARGETDIR/hlsl.pp.expand.frag.err || HASERROR=1 diff -b $BASEDIR/hlsl.pp.expand.frag.err $TARGETDIR/hlsl.pp.expand.frag.err || HASERROR=1
......
...@@ -97,9 +97,6 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int ...@@ -97,9 +97,6 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int
if (language == EShLangGeometry) if (language == EShLangGeometry)
globalOutputDefaults.layoutStream = 0; globalOutputDefaults.layoutStream = 0;
if (spvVersion.spv == 0 || spvVersion.vulkan == 0)
infoSink.info << "ERROR: HLSL currently only supported when requesting SPIR-V for Vulkan.\n";
} }
HlslParseContext::~HlslParseContext() HlslParseContext::~HlslParseContext()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment