| # Copyright 2017 The Cobalt Authors. All Rights Reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Import platform-specific defaults |
| import("//$starboard_path/configuration.gni") |
| # Import starboard variables |
| import("//starboard/build/config/base.gni") |
| |
| # Cobalt variables. |
| |
| # Enable support for the map to mesh filter, which is primarily used to |
| # implement spherical video playback. |
| if (!defined(enable_map_to_mesh)) { |
| enable_map_to_mesh = false |
| } |
| |
| # This variable defines what Cobalt's preferred strategy should be for |
| # handling internally triggered application exit requests (e.g. the user |
| # chooses to back out of the application). |
| # "stop" -- The application should call SbSystemRequestStop() on exit, |
| # resulting in a complete shutdown of the application. |
| # "suspend" -- The application should call SbSystemRequestSuspend() on |
| # exit, resulting in the application being "minimized". |
| # "noexit" -- The application should never allow the user to trigger an |
| # exit, this will be managed by the system. |
| if (!defined(cobalt_user_on_exit_strategy)) { |
| cobalt_user_on_exit_strategy = "stop" |
| } |
| |
| # Contains the current font package selection. This can be used to trade |
| # font quality, coverage, and latency for different font package sizes. |
| # The font package can be one of the following options: |
| # "standard" -- The default package. It includes all sans-serif, serif, and |
| # FCC fonts, non-CJK fallback fonts in both 'normal' and 'bold' |
| # weights, 'normal' weight CJK ('bold' weight CJK is synthesized |
| # from it), historic script fonts, and color emojis. This |
| # package is ~38.3MB. |
| # 'limited' -- A significantly smaller package than 'standard'. This package |
| # removes all but 'normal' and 'bold' weighted sans-serif and |
| # serif, removes the FCC fonts (which must be provided by the |
| # system or downloaded from the web), replaces standard CJK with |
| # low quality CJK, removes historic script fonts, and replaces |
| # colored emojis with uncolored ones. Because low quality CJK |
| # cannot synthesize bold, bold glyphs are unavailable in |
| # Chinese, Japanese and Korean. This package is ~8.3MB. |
| # "minimal" -- The smallest possible font package. It only includes Roboto's |
| # Basic Latin characters. Everything else must be provided by |
| # the system or downloaded from the web. This package is |
| # ~40.0KB. |
| # NOTE: When bold is needed, but unavailable, it is typically synthesized, |
| # resulting in lower quality glyphs than those generated directly from |
| # a bold font. However, this does not occur with low quality CJK, |
| # which is not high enough quality to synthesize. Its glyphs always |
| # have a 'normal' weight. |
| if (!defined(cobalt_font_package)) { |
| cobalt_font_package = "standard" |
| } |
| |
| # Font package overrides can be used to modify the files included within the |
| # selected package. The following values are available: |
| # -1 -- The package value for the specified category is not overridden. |
| # 0 -- The package value is overridden and no fonts for the specified |
| # category are included. |
| # 1 -- The package value is overridden and fonts from the specified |
| # category with a weight of 'normal' and a style of 'normal' are |
| # included. |
| # 2 -- The package value is overridden and fonts from the specified |
| # category with a weight of either 'normal' or bold' and a style of |
| # 'normal' are included. |
| # 3 -- The package value is overridden and fonts from the specified |
| # category with a weight of either 'normal' or 'bold' and a style of |
| # either 'normal' or 'italic' are included. |
| # 4 -- The package value is overridden and all available fonts from the |
| # specified category are included. This may include additional |
| # weights beyond 'normal' and 'bold'. |
| # See content/fonts/README.md for details on the specific values used by |
| # each of the packages use for the various font categories. |
| if (!defined(cobalt_font_package_override_named_sans_serif)) { |
| cobalt_font_package_override_named_sans_serif = -1 |
| } |
| if (!defined(cobalt_font_package_override_named_serif)) { |
| cobalt_font_package_override_named_serif = -1 |
| } |
| if (!defined(cobalt_font_package_override_named_fcc_fonts)) { |
| cobalt_font_package_override_named_fcc_fonts = -1 |
| } |
| if (!defined(cobalt_font_package_override_fallback_lang_non_cjk)) { |
| cobalt_font_package_override_fallback_lang_non_cjk = -1 |
| } |
| if (!defined(cobalt_font_package_override_fallback_lang_cjk)) { |
| cobalt_font_package_override_fallback_lang_cjk = -1 |
| } |
| if (!defined(cobalt_font_package_override_fallback_lang_cjk_low_quality)) { |
| cobalt_font_package_override_fallback_lang_cjk_low_quality = -1 |
| } |
| if (!defined(cobalt_font_package_override_fallback_historic)) { |
| cobalt_font_package_override_fallback_historic = -1 |
| } |
| if (!defined(cobalt_font_package_override_fallback_emoji)) { |
| cobalt_font_package_override_fallback_emoji = -1 |
| } |
| if (!defined(cobalt_font_package_override_fallback_symbols)) { |
| cobalt_font_package_override_fallback_symbols = -1 |
| } |
| |
| # The target platform id as a string, like "ps4", etc.. |
| # TODO: eliminate when all platforms are fully starboard. |
| if (!defined(sb_target_platform)) { |
| sb_target_platform = "" |
| } |
| |
| # Defines what kind of rasterizer will be used. This can be adjusted to |
| # force a stub graphics implementation or software graphics implementation. |
| # It can be one of the following options: |
| # 'direct-gles' -- Uses a light wrapper over OpenGL ES to handle most |
| # draw elements. This will fall back to the skia hardware |
| # rasterizer for some render tree node types, but is |
| # generally faster on the CPU and GPU. This can handle |
| # 360 rendering. |
| # 'hardware' -- As much hardware acceleration of graphics commands as |
| # possible. This uses skia to wrap OpenGL ES commands. |
| # Required for 360 rendering. |
| # 'software' -- Perform most rasterization using the CPU and only |
| # interact with the GPU to send the final image to the |
| # output window. |
| # 'stub' -- Stub graphics rasterization. A rasterizer object will |
| # still be available and valid, but it will do nothing. |
| if (!defined(rasterizer_type)) { |
| rasterizer_type = "direct-gles" |
| } |
| |
| # If set to true, will enable support for rendering only the regions of the |
| # display that are modified due to animations, instead of re-rendering the |
| # entire scene each frame. This feature can reduce startup time where |
| # usually there is a small loading spinner animating on the screen. On GLES |
| # renderers, Cobalt will attempt to implement this support by using |
| # eglSurfaceAttrib(..., EGL_SWAP_BEHAVIOR, EGL_BUFFER_PRESERVED), otherwise |
| # the dirty region will be silently disabled. On Blitter API platforms, |
| # if this is enabled, we explicitly create an extra offscreen full-size |
| # intermediate surface to render into. Note that some GLES driver |
| # implementations may internally allocate an extra full screen surface to |
| # support this feature, and many have been noticed to not properly support |
| # this functionality (but they report that they do), and for these reasons |
| # this value is defaulted to false. |
| if (!defined(render_dirty_region_only)) { |
| render_dirty_region_only = false |
| } |
| |
| # Modify this value to adjust the default rasterizer setting for your |
| # platform. |
| if (!defined(default_renderer_options_dependency)) { |
| default_renderer_options_dependency = "//cobalt/renderer:default_options" |
| } |
| |
| # Allow throttling of the frame rate. This is expressed in terms of |
| # milliseconds and can be a floating point number. Keep in mind that |
| # swapping frames may take some additional processing time, so it may be |
| # better to specify a lower delay. For example, "33" instead of "33.33" |
| # for 30 Hz refresh. |
| if (!defined(cobalt_minimum_frame_time_in_milliseconds)) { |
| cobalt_minimum_frame_time_in_milliseconds = "16.4" |
| } |
| |
| # Cobalt will call eglSwapInterval() and specify this value before calling |
| # eglSwapBuffers() each frame. |
| if (!defined(cobalt_egl_swap_interval)) { |
| cobalt_egl_swap_interval = 1 |
| } |
| |
| # Set to true to build with DIAL support. |
| if (!defined(enable_in_app_dial)) { |
| enable_in_app_dial = false |
| } |
| |
| # Set to true to enable a custom MediaSessionClient. |
| if (!defined(enable_custom_media_session_client)) { |
| enable_custom_media_session_client = false |
| } |
| |
| # Set to true to enable H5vccAccountManager. |
| if (!defined(enable_account_manager)) { |
| enable_account_manager = false |
| } |
| |
| # Set to true to enable H5vccCrashLog. |
| if (!defined(enable_crash_log)) { |
| enable_crash_log = false |
| } |
| |
| # Set to true to enable H5vccSSO (Single Sign On). |
| if (!defined(enable_sso)) { |
| enable_sso = false |
| } |
| |
| # Set to true to enable filtering of HTTP headers before sending. |
| if (!defined(enable_xhr_header_filtering)) { |
| enable_xhr_header_filtering = false |
| } |
| |
| # List of platform-specific targets that get compiled into cobalt. |
| if (!defined(cobalt_platform_dependencies)) { |
| cobalt_platform_dependencies = [] |
| } |
| |
| # The URL of default build time splash screen - see |
| # cobalt/doc/splash_screen.md for information about this. |
| if (!defined(fallback_splash_screen_url)) { |
| fallback_splash_screen_url = "none" |
| } |
| |
| # The path to a splash screen to copy into content/data/web which can be |
| # accessed via a file URL starting with |
| # "file:///cobalt/browser/splash_screen/". If "", no file is copied. |
| if (!defined(cobalt_splash_screen_file)) { |
| cobalt_splash_screen_file = "" |
| } |
| |
| # Cache parameters |
| |
| # The following set of parameters define how much memory is reserved for |
| # different Cobalt caches. These caches affect CPU *and* GPU memory usage. |
| # |
| # The sum of the following caches effectively describes the maximum GPU |
| # texture memory usage (though it doesn't consider video textures and |
| # display color buffers): |
| # - skia_cache_size_in_bytes (GLES2 rasterizer only) |
| # - scratch_surface_cache_size_in_bytes |
| # - surface_cache_size_in_bytes |
| # - image_cache_size_in_bytes |
| # - skia_glyph_atlas_width * skia_glyph_atlas_height |
| # |
| # The other caches affect CPU memory usage. |
| |
| # Determines the capacity of the skia cache. The Skia cache is maintained |
| # within Skia and is used to cache the results of complicated effects such |
| # as shadows, so that Skia draw calls that are used repeatedly across |
| # frames can be cached into surfaces. This setting is only relevant when |
| # using the hardware-accelerated Skia rasterizer (e.g. as opposed to the |
| # Blitter API). |
| if (!defined(skia_cache_size_in_bytes)) { |
| skia_cache_size_in_bytes = "(4 * 1024 * 1024)" |
| } |
| |
| # Determines the capacity of the scratch surface cache. The scratch |
| # surface cache facilitates the reuse of temporary offscreen surfaces |
| # within a single frame. This setting is only relevant when using the |
| # hardware-accelerated Skia rasterizer. |
| if (!defined(scratch_surface_cache_size_in_bytes)) { |
| scratch_surface_cache_size_in_bytes = 0 |
| } |
| |
| # Determines the capacity of the surface cache. The surface cache tracks |
| # which render tree nodes are being re-used across frames and stores the |
| # nodes that are most CPU-expensive to render into surfaces. |
| if (!defined(surface_cache_size_in_bytes)) { |
| surface_cache_size_in_bytes = 0 |
| } |
| |
| # Determines the amount of GPU memory the offscreen target atlases will |
| # use. This is specific to the direct-GLES rasterizer and serves a similar |
| # purpose as the surface_cache_size_in_bytes, but caches any render tree |
| # nodes which require skia for rendering. Two atlases will be allocated |
| # from this memory or multiple atlases of the frame size if the limit |
| # allows. It is recommended that enough memory be reserved for two RGBA |
| # atlases about a quarter of the frame size. |
| if (!defined(offscreen_target_cache_size_in_bytes)) { |
| offscreen_target_cache_size_in_bytes = -1 |
| } |
| |
| # Determines the capacity of the image cache, which manages image surfaces |
| # downloaded from a web page. While it depends on the platform, often (and |
| # ideally) these images are cached within GPU memory. |
| # Set to -1 to automatically calculate the value at runtime, based on |
| # features like windows dimensions and the value of |
| # SbSystemGetTotalGPUMemory(). |
| if (!defined(image_cache_size_in_bytes)) { |
| image_cache_size_in_bytes = -1 |
| } |
| |
| # Determines the capacity of the local font cache, which manages all fonts |
| # loaded from local files. Newly encountered sections of font files are |
| # lazily loaded into the cache, enabling subsequent requests to the same |
| # file sections to be handled via direct memory access. Once the limit is |
| # reached, further requests are handled via file stream. |
| # Setting the value to 0 disables memory caching and causes all font file |
| # accesses to be done using file streams. |
| if (!defined(local_font_cache_size_in_bytes)) { |
| local_font_cache_size_in_bytes = "(16 * 1024 * 1024)" |
| } |
| |
| # Determines the capacity of the remote font cache, which manages all |
| # fonts downloaded from a web page. |
| if (!defined(remote_font_cache_size_in_bytes)) { |
| remote_font_cache_size_in_bytes = "(4 * 1024 * 1024)" |
| } |
| |
| # Determines the capacity of the mesh cache. Each mesh is held compressed |
| # in main memory, to be inflated into a GPU buffer when needed for |
| # projection. When set to "auto", will be adjusted according to whether |
| # the enable_map_to_mesh is true or not. If enable_map_to_mesh is false, |
| # then the mesh cache size will be set to 0. |
| if (!defined(mesh_cache_size_in_bytes)) { |
| mesh_cache_size_in_bytes = "auto" |
| } |
| |
| # Only relevant if you are using the Blitter API. |
| # Determines the capacity of the software surface cache, which is used to |
| # cache all surfaces that are rendered via a software rasterizer to avoid |
| # re-rendering them. |
| if (!defined(software_surface_cache_size_in_bytes)) { |
| software_surface_cache_size_in_bytes = "(8 * 1024 * 1024)" |
| } |
| |
| # Modifying this value to be non-1.0f will result in the image cache |
| # capacity being cleared and then temporarily reduced for the duration that |
| # a video is playing. This can be useful for some platforms if they are |
| # particularly constrained for (GPU) memory during video playback. When |
| # playing a video, the image cache is reduced to: |
| # image_cache_size_in_bytes * |
| # image_cache_capacity_multiplier_when_playing_video. |
| if (!defined(image_cache_capacity_multiplier_when_playing_video)) { |
| image_cache_capacity_multiplier_when_playing_video = "1.0f" |
| } |
| |
| # Determines the size in pixels of the glyph atlas where rendered glyphs are |
| # cached. The resulting memory usage is 2 bytes of GPU memory per pixel. |
| # When a value is used that is too small, thrashing may occur that will |
| # result in visible stutter. Such thrashing is more likely to occur when CJK |
| # language glyphs are rendered and when the size of the glyphs in pixels is |
| # larger, such as for higher resolution displays. |
| # The negative default values indicates to the engine that these settings |
| # should be automatically set. |
| if (!defined(skia_glyph_atlas_width)) { |
| skia_glyph_atlas_width = "-1" |
| } |
| if (!defined(skia_glyph_atlas_height)) { |
| skia_glyph_atlas_height = "-1" |
| } |
| |
| # Determines the size of garbage collection threshold. After this many bytes |
| # have been allocated, the mozjs garbage collector will run. Lowering this |
| # has been found to reduce performance and decrease JavaScript memory usage. |
| # For example, we have measured on at least one platform that performance |
| # becomes 7% worse on average in certain cases when adjusting this number |
| # from 8MB to 1MB. |
| if (!defined(mozjs_garbage_collection_threshold_in_bytes)) { |
| mozjs_garbage_collection_threshold_in_bytes = "(8 * 1024 * 1024)" |
| } |
| |
| # Max Cobalt CPU usage specifies that the cobalt program should |
| # keep it's size below the specified size. A value of -1 causes this |
| # value to be assumed from the starboard API function: |
| # SbSystemGetTotalCPUMemory(). |
| if (!defined(max_cobalt_cpu_usage)) { |
| max_cobalt_cpu_usage = -1 |
| } |
| |
| if (!defined(max_cobalt_gpu_usage)) { |
| # Max Cobalt GPU usage specifies that the cobalt program should |
| # keep it's size below the specified size. A value of -1 causes this |
| # value to be assumed from the starboard API function: |
| # SbSystemGetTotalGPUMemory(). |
| max_cobalt_gpu_usage = -1 |
| } |
| |
| # When specified this value will reduce the cpu memory consumption by |
| # the specified amount. -1 disables the value. |
| # When this value is specified then max_cobalt_cpu_usage will not be |
| # used in memory_constrainer, but will still be used for triggering |
| # a warning if the engine consumes more memory than this value specifies. |
| if (!defined(reduce_cpu_memory_by)) { |
| reduce_cpu_memory_by = -1 |
| } |
| |
| # When specified this value will reduce the gpu memory consumption by |
| # the specified amount. -1 disables the value. |
| # When this value is specified then max_cobalt_gpu_usage will not be |
| # used in memory_constrainer, but will still be used for triggering |
| # a warning if the engine consumes more memory than this value specifies. |
| if (!defined(reduce_gpu_memory_by)) { |
| reduce_gpu_memory_by = -1 |
| } |
| |
| # The only currently-supported Javascript engine is "mozjs-45". (However, |
| # this may potentially change in the future.) |
| if (!defined(javascript_engine)) { |
| javascript_engine = "mozjs-45" |
| } |
| |
| # Enable jit instead of running in interpreter-only mode by default. |
| # We have found that disabling jit often results in faster JavaScript |
| # execution and lower memory usage. |
| # Setting this to true on a platform or engine for which there is no JIT |
| # implementation has no effect. |
| if (!defined(cobalt_enable_jit)) { |
| cobalt_enable_jit = false |
| } |
| |
| # Use media source extension implementation that is conformed to the |
| # Candidate Recommendation of July 5th 2016. |
| if (!defined(cobalt_use_media_source_2016)) { |
| cobalt_use_media_source_2016 = true |
| } |
| |
| # For configurations other than Gold, set the flag that lets test data files be |
| # copied and carried along with the build. |
| # Clients must copy over all content; to avoid having to copy over extra data, |
| # we omit the test data |
| _copy_test_data = (cobalt_config != "gold") |
| if (!defined(enable_debugger)) { |
| enable_debugger = _copy_test_data |
| } |
| if (!defined(cobalt_copy_test_data)) { |
| cobalt_copy_test_data = _copy_test_data |
| } |
| if (!defined(enable_about_scheme)) { |
| enable_about_scheme = _copy_test_data |
| } |
| if (!defined(enable_fake_microphone)) { |
| enable_fake_microphone = _copy_test_data |
| } |
| if (!defined(enable_network_logging)) { |
| enable_network_logging = _copy_test_data |
| } |
| if (!defined(enable_webdriver)) { |
| enable_webdriver = _copy_test_data |
| } |
| |
| |
| # Use system libjpeg. |
| if (!defined(use_system_libjpeg)) { |
| use_system_libjpeg = false |
| } |
| |
| # TODO: add ARM compilation flags to the starboard platform config |
| |
| # TODO: implement remaining flags like clang_type_profiler, build_for_tool, order_profiling, etc. |