Metal: support framebuffer fetch on M1 devices (#4735)
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user