Metal: support framebuffer fetch on M1 devices (#4735)

This commit is contained in:
Ben Doherty
2021-10-21 11:27:05 -07:00
committed by GitHub
parent 5943382d23
commit ef4dfcecd6
3 changed files with 20 additions and 13 deletions
+8 -2
View File
@@ -121,10 +121,16 @@ void GLSLPostProcessor::spirvToToMsl(const SpirvBlob *spirv, std::string *outMsl
CompilerMSL::Options mslOptions = {};
mslOptions.platform = platform,
mslOptions.msl_version = CompilerMSL::Options::make_msl_version(1, 1);
mslOptions.msl_version = config.shaderModel == filament::backend::ShaderModel::GL_ES_30 ?
CompilerMSL::Options::make_msl_version(2, 0) : CompilerMSL::Options::make_msl_version(2, 2);
if (config.shaderModel == filament::backend::ShaderModel::GL_ES_30) {
if (config.hasFramebufferFetch) {
mslOptions.use_framebuffer_fetch_subpasses = true;
// On macOS, framebuffer fetch is only available starting with MSL 2.3. Filament will only
// use framebuffer fetch materials on devices that support it.
if (config.shaderModel == filament::backend::ShaderModel::GL_CORE_41) {
mslOptions.msl_version = CompilerMSL::Options::make_msl_version(2, 3);
}
}
mslCompiler.set_msl_options(mslOptions);