| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "flutter/shell/common/context_options.h" |
| |
| #include "flutter/common/graphics/persistent_cache.h" |
| |
| namespace flutter { |
| |
| GrContextOptions MakeDefaultContextOptions(ContextType type, |
| std::optional<GrBackendApi> api) { |
| GrContextOptions options; |
| |
| if (PersistentCache::cache_sksl()) { |
| options.fShaderCacheStrategy = GrContextOptions::ShaderCacheStrategy::kSkSL; |
| } |
| PersistentCache::MarkStrategySet(); |
| options.fPersistentCache = PersistentCache::GetCacheForProcess(); |
| |
| if (api.has_value() && api.value() == GrBackendApi::kOpenGL) { |
| // Using stencil buffers has caused memory and performance regressions. |
| // See b/226484927 for internal customer regressions doc. |
| // Before enabling, we need to show a motivating case for where it will |
| // improve performance on OpenGL backend. |
| options.fAvoidStencilBuffers = true; |
| |
| // To get video playback on the widest range of devices, we limit Skia to |
| // ES2 shading language when the ES3 external image extension is missing. |
| options.fPreferExternalImagesOverES3 = true; |
| } |
| |
| // TODO(goderbauer): remove option when skbug.com/7523 is fixed. |
| options.fDisableGpuYUVConversion = true; |
| |
| options.fReduceOpsTaskSplitting = GrContextOptions::Enable::kNo; |
| |
| options.fReducedShaderVariations = false; |
| |
| return options; |
| }; |
| |
| } // namespace flutter |