Standalone: Fix #1814: Check that linkage was specified for reflection.
This commit is contained in:
parent
974a586688
commit
e5c394bcba
3 changed files with 17 additions and 10 deletions
|
|
@ -772,8 +772,17 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||||
Error("must provide -S when --stdin is given");
|
Error("must provide -S when --stdin is given");
|
||||||
|
|
||||||
// Make sure that -E is not specified alongside linking (which includes SPV generation)
|
// Make sure that -E is not specified alongside linking (which includes SPV generation)
|
||||||
if ((Options & EOptionOutputPreprocessed) && (Options & EOptionLinkProgram))
|
// Or things that require linking
|
||||||
Error("can't use -E when linking is selected");
|
if (Options & EOptionOutputPreprocessed) {
|
||||||
|
if (Options & EOptionLinkProgram)
|
||||||
|
Error("can't use -E when linking is selected");
|
||||||
|
if (Options & EOptionDumpReflection)
|
||||||
|
Error("reflection requires linking, which can't be used when -E when is selected");
|
||||||
|
}
|
||||||
|
|
||||||
|
// reflection requires linking
|
||||||
|
if ((Options & EOptionDumpReflection) && !(Options & EOptionLinkProgram))
|
||||||
|
Error("reflection requires -l for linking");
|
||||||
|
|
||||||
// -o or -x makes no sense if there is no target binary
|
// -o or -x makes no sense if there is no target binary
|
||||||
if (binaryFileName && (Options & EOptionSpv) == 0)
|
if (binaryFileName && (Options & EOptionSpv) == 0)
|
||||||
|
|
@ -1512,7 +1521,7 @@ void usage()
|
||||||
" -l link all input files together to form a single module\n"
|
" -l link all input files together to form a single module\n"
|
||||||
" -m memory leak mode\n"
|
" -m memory leak mode\n"
|
||||||
" -o <file> save binary to <file>, requires a binary option (e.g., -V)\n"
|
" -o <file> save binary to <file>, requires a binary option (e.g., -V)\n"
|
||||||
" -q dump reflection query database\n"
|
" -q dump reflection query database; requires -l for linking\n"
|
||||||
" -r | --relaxed-errors"
|
" -r | --relaxed-errors"
|
||||||
" relaxed GLSL semantic error-checking mode\n"
|
" relaxed GLSL semantic error-checking mode\n"
|
||||||
" -s silence syntax and semantic error reporting\n"
|
" -s silence syntax and semantic error reporting\n"
|
||||||
|
|
|
||||||
|
|
@ -1984,7 +1984,7 @@ const char* TProgram::getInfoDebugLog()
|
||||||
|
|
||||||
bool TProgram::buildReflection(int opts)
|
bool TProgram::buildReflection(int opts)
|
||||||
{
|
{
|
||||||
if (! linked || reflection)
|
if (! linked || reflection != nullptr)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
int firstStage = EShLangVertex, lastStage = EShLangFragment;
|
int firstStage = EShLangVertex, lastStage = EShLangFragment;
|
||||||
|
|
@ -2014,9 +2014,8 @@ bool TProgram::buildReflection(int opts)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned TProgram::getLocalSize(int dim) const { return reflection->getLocalSize(dim); }
|
unsigned TProgram::getLocalSize(int dim) const { return reflection->getLocalSize(dim); }
|
||||||
int TProgram::getReflectionIndex(const char* name) const { return reflection->getIndex(name); }
|
int TProgram::getReflectionIndex(const char* name) const { return reflection->getIndex(name); }
|
||||||
|
|
||||||
int TProgram::getNumUniformVariables() const { return reflection->getNumUniforms(); }
|
int TProgram::getNumUniformVariables() const { return reflection->getNumUniforms(); }
|
||||||
const TObjectReflection& TProgram::getUniform(int index) const { return reflection->getUniform(index); }
|
const TObjectReflection& TProgram::getUniform(int index) const { return reflection->getUniform(index); }
|
||||||
int TProgram::getNumUniformBlocks() const { return reflection->getNumUniformBlocks(); }
|
int TProgram::getNumUniformBlocks() const { return reflection->getNumUniformBlocks(); }
|
||||||
|
|
@ -2031,8 +2030,7 @@ int TProgram::getNumBufferBlocks() const { return r
|
||||||
const TObjectReflection& TProgram::getBufferBlock(int index) const { return reflection->getStorageBufferBlock(index); }
|
const TObjectReflection& TProgram::getBufferBlock(int index) const { return reflection->getStorageBufferBlock(index); }
|
||||||
int TProgram::getNumAtomicCounters() const { return reflection->getNumAtomicCounters(); }
|
int TProgram::getNumAtomicCounters() const { return reflection->getNumAtomicCounters(); }
|
||||||
const TObjectReflection& TProgram::getAtomicCounter(int index) const { return reflection->getAtomicCounter(index); }
|
const TObjectReflection& TProgram::getAtomicCounter(int index) const { return reflection->getAtomicCounter(index); }
|
||||||
|
void TProgram::dumpReflection() { if (reflection != nullptr) reflection->dump(); }
|
||||||
void TProgram::dumpReflection() { reflection->dump(); }
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// I/O mapping implementation.
|
// I/O mapping implementation.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue