// Apply the SPIRV-Tools validator to generated SPIR-V. void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv, spv::SpvBuildLogger* logger) { // validate spv_context context = spvContextCreate(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); spv_const_binary_t binary = { spirv.data(), spirv.size() }; spv_diagnostic diagnostic = nullptr; spv_validator_options options = spvValidatorOptionsCreate(); spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets()); spvValidateWithOptions(context, options, &binary, &diagnostic); // report if (diagnostic != nullptr) { logger->error("SPIRV-Tools Validation Errors"); logger->error(diagnostic->error); } // tear down spvValidatorOptionsDestroy(options); spvDiagnosticDestroy(diagnostic); spvContextDestroy(context); }
ValidatorOptions() : options_(spvValidatorOptionsCreate()) {}