Consider GL_EXT_scalar_block_layout when validating SPIR-V
If GL_EXT_scalar_block_layout is requested by the shader, set the option to allow scalar blocks in the SPIR-V validator. Fix the existing tests using scalar layout to not expect "Validation failed". Fixes #2400.
This commit is contained in:
parent
f7c43377f0
commit
a38df83d3e
@ -153,6 +153,7 @@ void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<
|
|||||||
spv_validator_options options = spvValidatorOptionsCreate();
|
spv_validator_options options = spvValidatorOptionsCreate();
|
||||||
spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets());
|
spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets());
|
||||||
spvValidatorOptionsSetBeforeHlslLegalization(options, prelegalization);
|
spvValidatorOptionsSetBeforeHlslLegalization(options, prelegalization);
|
||||||
|
spvValidatorOptionsSetScalarBlockLayout(options, intermediate.usingScalarBlockLayout());
|
||||||
spvValidateWithOptions(context, options, &binary, &diagnostic);
|
spvValidateWithOptions(context, options, &binary, &diagnostic);
|
||||||
|
|
||||||
// report
|
// report
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
spv.scalarlayout.frag
|
spv.scalarlayout.frag
|
||||||
Validation failed
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 8000a
|
// Generated by (magic number): 8000a
|
||||||
// Id's are bound by 20
|
// Id's are bound by 20
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
spv.scalarlayoutfloat16.frag
|
spv.scalarlayoutfloat16.frag
|
||||||
Validation failed
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 8000a
|
// Generated by (magic number): 8000a
|
||||||
// Id's are bound by 18
|
// Id's are bound by 18
|
||||||
|
@ -858,6 +858,14 @@ public:
|
|||||||
bool usingHlslIoMapping() { return false; }
|
bool usingHlslIoMapping() { return false; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
bool usingScalarBlockLayout() const {
|
||||||
|
for (auto extIt = requestedExtensions.begin(); extIt != requestedExtensions.end(); ++extIt) {
|
||||||
|
if (*extIt == E_GL_EXT_scalar_block_layout)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
void addToCallGraph(TInfoSink&, const TString& caller, const TString& callee);
|
void addToCallGraph(TInfoSink&, const TString& caller, const TString& callee);
|
||||||
void merge(TInfoSink&, TIntermediate&);
|
void merge(TInfoSink&, TIntermediate&);
|
||||||
void finalCheck(TInfoSink&, bool keepUncalled);
|
void finalCheck(TInfoSink&, bool keepUncalled);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user