Loading services/surfaceflinger/common/FlagManager.cpp +133 −144 Original line number Original line Diff line number Diff line Loading @@ -89,9 +89,9 @@ void FlagManager::setUnitTestMode() { mBootCompleted = true; mBootCompleted = true; } } void FlagManager::dumpFlag(std::string& result, bool readonly, const char* name, void FlagManager::dumpFlag(std::string& result, bool aconfig, const char* name, std::function<bool()> getter) const { std::function<bool()> getter) const { if (readonly || mBootCompleted) { if (aconfig || mBootCompleted) { base::StringAppendF(&result, "%s: %s\n", name, getter() ? "true" : "false"); base::StringAppendF(&result, "%s: %s\n", name, getter() ? "true" : "false"); } else { } else { base::StringAppendF(&result, "%s: in progress (still booting)\n", name); base::StringAppendF(&result, "%s: in progress (still booting)\n", name); Loading @@ -99,72 +99,72 @@ void FlagManager::dumpFlag(std::string& result, bool readonly, const char* name, } } void FlagManager::dump(std::string& result) const { void FlagManager::dump(std::string& result) const { #define DUMP_FLAG_INTERVAL(name, readonly) \ #define DUMP_FLAG_INTERNAL(name, aconfig) \ dumpFlag(result, (readonly), #name, std::bind(&FlagManager::name, this)) dumpFlag(result, (aconfig), #name, std::bind(&FlagManager::name, this)) #define DUMP_SERVER_FLAG(name) DUMP_FLAG_INTERVAL(name, false) #define DUMP_LEGACY_SERVER_FLAG(name) DUMP_FLAG_INTERNAL(name, false) #define DUMP_READ_ONLY_FLAG(name) DUMP_FLAG_INTERVAL(name, true) #define DUMP_ACONFIG_FLAG(name) DUMP_FLAG_INTERNAL(name, true) base::StringAppendF(&result, "FlagManager values: \n"); base::StringAppendF(&result, "FlagManager values: \n"); /// Legacy server flags /// /// Legacy server flags /// DUMP_SERVER_FLAG(use_adpf_cpu_hint); DUMP_LEGACY_SERVER_FLAG(use_adpf_cpu_hint); DUMP_SERVER_FLAG(use_skia_tracing); DUMP_LEGACY_SERVER_FLAG(use_skia_tracing); /// Trunk stable server flags /// /// Trunk stable server (R/W) flags /// DUMP_SERVER_FLAG(refresh_rate_overlay_on_external_display); DUMP_ACONFIG_FLAG(refresh_rate_overlay_on_external_display); DUMP_SERVER_FLAG(adpf_gpu_sf); DUMP_ACONFIG_FLAG(adpf_gpu_sf); DUMP_SERVER_FLAG(adpf_native_session_manager); DUMP_ACONFIG_FLAG(adpf_native_session_manager); DUMP_SERVER_FLAG(adpf_use_fmq_channel); DUMP_ACONFIG_FLAG(adpf_use_fmq_channel); /// Trunk stable readonly flags /// /// Trunk stable readonly flags /// DUMP_READ_ONLY_FLAG(adpf_fmq_sf); DUMP_ACONFIG_FLAG(adpf_fmq_sf); DUMP_READ_ONLY_FLAG(connected_display); DUMP_ACONFIG_FLAG(connected_display); DUMP_READ_ONLY_FLAG(enable_small_area_detection); DUMP_ACONFIG_FLAG(enable_small_area_detection); DUMP_READ_ONLY_FLAG(stable_edid_ids); DUMP_ACONFIG_FLAG(stable_edid_ids); DUMP_READ_ONLY_FLAG(frame_rate_category_mrr); DUMP_ACONFIG_FLAG(frame_rate_category_mrr); DUMP_READ_ONLY_FLAG(misc1); DUMP_ACONFIG_FLAG(misc1); DUMP_READ_ONLY_FLAG(vrr_config); DUMP_ACONFIG_FLAG(vrr_config); DUMP_READ_ONLY_FLAG(hdcp_level_hal); DUMP_ACONFIG_FLAG(hdcp_level_hal); DUMP_READ_ONLY_FLAG(multithreaded_present); DUMP_ACONFIG_FLAG(multithreaded_present); DUMP_READ_ONLY_FLAG(add_sf_skipped_frames_to_trace); DUMP_ACONFIG_FLAG(add_sf_skipped_frames_to_trace); DUMP_READ_ONLY_FLAG(use_known_refresh_rate_for_fps_consistency); DUMP_ACONFIG_FLAG(use_known_refresh_rate_for_fps_consistency); DUMP_READ_ONLY_FLAG(cache_when_source_crop_layer_only_moved); DUMP_ACONFIG_FLAG(cache_when_source_crop_layer_only_moved); DUMP_READ_ONLY_FLAG(enable_fro_dependent_features); DUMP_ACONFIG_FLAG(enable_fro_dependent_features); DUMP_READ_ONLY_FLAG(display_protected); DUMP_ACONFIG_FLAG(display_protected); DUMP_READ_ONLY_FLAG(fp16_client_target); DUMP_ACONFIG_FLAG(fp16_client_target); DUMP_READ_ONLY_FLAG(game_default_frame_rate); DUMP_ACONFIG_FLAG(game_default_frame_rate); DUMP_READ_ONLY_FLAG(enable_layer_command_batching); DUMP_ACONFIG_FLAG(enable_layer_command_batching); DUMP_READ_ONLY_FLAG(vulkan_renderengine); DUMP_ACONFIG_FLAG(vulkan_renderengine); DUMP_READ_ONLY_FLAG(renderable_buffer_usage); DUMP_ACONFIG_FLAG(renderable_buffer_usage); DUMP_READ_ONLY_FLAG(vrr_bugfix_24q4); DUMP_ACONFIG_FLAG(vrr_bugfix_24q4); DUMP_READ_ONLY_FLAG(vrr_bugfix_dropped_frame); DUMP_ACONFIG_FLAG(vrr_bugfix_dropped_frame); DUMP_READ_ONLY_FLAG(restore_blur_step); DUMP_ACONFIG_FLAG(restore_blur_step); DUMP_READ_ONLY_FLAG(dont_skip_on_early_ro); DUMP_ACONFIG_FLAG(dont_skip_on_early_ro); DUMP_READ_ONLY_FLAG(no_vsyncs_on_screen_off); DUMP_ACONFIG_FLAG(no_vsyncs_on_screen_off); DUMP_READ_ONLY_FLAG(protected_if_client); DUMP_ACONFIG_FLAG(protected_if_client); DUMP_READ_ONLY_FLAG(idle_screen_refresh_rate_timeout); DUMP_ACONFIG_FLAG(idle_screen_refresh_rate_timeout); DUMP_READ_ONLY_FLAG(graphite_renderengine); DUMP_ACONFIG_FLAG(graphite_renderengine); DUMP_READ_ONLY_FLAG(filter_frames_before_trace_starts); DUMP_ACONFIG_FLAG(filter_frames_before_trace_starts); DUMP_READ_ONLY_FLAG(latch_unsignaled_with_auto_refresh_changed); DUMP_ACONFIG_FLAG(latch_unsignaled_with_auto_refresh_changed); DUMP_READ_ONLY_FLAG(deprecate_vsync_sf); DUMP_ACONFIG_FLAG(deprecate_vsync_sf); DUMP_READ_ONLY_FLAG(allow_n_vsyncs_in_targeter); DUMP_ACONFIG_FLAG(allow_n_vsyncs_in_targeter); DUMP_READ_ONLY_FLAG(detached_mirror); DUMP_ACONFIG_FLAG(detached_mirror); DUMP_READ_ONLY_FLAG(commit_not_composited); DUMP_ACONFIG_FLAG(commit_not_composited); DUMP_READ_ONLY_FLAG(correct_dpi_with_display_size); DUMP_ACONFIG_FLAG(correct_dpi_with_display_size); DUMP_READ_ONLY_FLAG(local_tonemap_screenshots); DUMP_ACONFIG_FLAG(local_tonemap_screenshots); DUMP_READ_ONLY_FLAG(override_trusted_overlay); DUMP_ACONFIG_FLAG(override_trusted_overlay); DUMP_READ_ONLY_FLAG(flush_buffer_slots_to_uncache); DUMP_ACONFIG_FLAG(flush_buffer_slots_to_uncache); DUMP_READ_ONLY_FLAG(force_compile_graphite_renderengine); DUMP_ACONFIG_FLAG(force_compile_graphite_renderengine); DUMP_READ_ONLY_FLAG(trace_frame_rate_override); DUMP_ACONFIG_FLAG(trace_frame_rate_override); DUMP_READ_ONLY_FLAG(true_hdr_screenshots); DUMP_ACONFIG_FLAG(true_hdr_screenshots); DUMP_READ_ONLY_FLAG(display_config_error_hal); DUMP_ACONFIG_FLAG(display_config_error_hal); DUMP_READ_ONLY_FLAG(connected_display_hdr); DUMP_ACONFIG_FLAG(connected_display_hdr); DUMP_READ_ONLY_FLAG(deprecate_frame_tracker); DUMP_ACONFIG_FLAG(deprecate_frame_tracker); DUMP_READ_ONLY_FLAG(skip_invisible_windows_in_input); DUMP_ACONFIG_FLAG(skip_invisible_windows_in_input); DUMP_READ_ONLY_FLAG(begone_bright_hlg); DUMP_ACONFIG_FLAG(begone_bright_hlg); #undef DUMP_READ_ONLY_FLAG #undef DUMP_ACONFIG_FLAG #undef DUMP_SERVER_FLAG #undef DUMP_LEGACY_SERVER_FLAG #undef DUMP_FLAG_INTERVAL #undef DUMP_FLAG_INTERVAL } } Loading @@ -189,13 +189,8 @@ bool FlagManager::getServerConfigurableFlag(const char* experimentFlagName) cons return getServerConfigurableFlag(serverFlagName); \ return getServerConfigurableFlag(serverFlagName); \ } } #define FLAG_MANAGER_FLAG_INTERNAL(name, syspropOverride, checkForBootCompleted, owner) \ #define FLAG_MANAGER_ACONFIG_INTERNAL(name, syspropOverride, owner) \ bool FlagManager::name() const { \ bool FlagManager::name() const { \ if (checkForBootCompleted) { \ LOG_ALWAYS_FATAL_IF(!mBootCompleted, \ "Can't read %s before boot completed as it is server writable", \ __func__); \ } \ static const std::optional<bool> debugOverride = getBoolProperty(syspropOverride); \ static const std::optional<bool> debugOverride = getBoolProperty(syspropOverride); \ static const bool value = getFlagValue([] { return owner ::name(); }, debugOverride); \ static const bool value = getFlagValue([] { return owner ::name(); }, debugOverride); \ if (mUnitTestMode) { \ if (mUnitTestMode) { \ Loading @@ -207,17 +202,11 @@ bool FlagManager::getServerConfigurableFlag(const char* experimentFlagName) cons return value; \ return value; \ } } #define FLAG_MANAGER_SERVER_FLAG(name, syspropOverride) \ #define FLAG_MANAGER_ACONFIG_FLAG(name, syspropOverride) \ FLAG_MANAGER_FLAG_INTERNAL(name, syspropOverride, true, flags) FLAG_MANAGER_ACONFIG_INTERNAL(name, syspropOverride, flags) #define FLAG_MANAGER_READ_ONLY_FLAG(name, syspropOverride) \ FLAG_MANAGER_FLAG_INTERNAL(name, syspropOverride, false, flags) #define FLAG_MANAGER_SERVER_FLAG_IMPORTED(name, syspropOverride, owner) \ FLAG_MANAGER_FLAG_INTERNAL(name, syspropOverride, true, owner) #define FLAG_MANAGER_READ_ONLY_FLAG_IMPORTED(name, syspropOverride, owner) \ #define FLAG_MANAGER_ACONFIG_FLAG_IMPORTED(name, syspropOverride, owner) \ FLAG_MANAGER_FLAG_INTERNAL(name, syspropOverride, false, owner) FLAG_MANAGER_ACONFIG_INTERNAL(name, syspropOverride, owner) /// Legacy server flags /// /// Legacy server flags /// FLAG_MANAGER_LEGACY_SERVER_FLAG(test_flag, "", "") FLAG_MANAGER_LEGACY_SERVER_FLAG(test_flag, "", "") Loading @@ -227,64 +216,64 @@ FLAG_MANAGER_LEGACY_SERVER_FLAG(use_skia_tracing, PROPERTY_SKIA_ATRACE_ENABLED, "SkiaTracingFeature__use_skia_tracing") "SkiaTracingFeature__use_skia_tracing") /// Trunk stable readonly flags /// /// Trunk stable readonly flags /// FLAG_MANAGER_READ_ONLY_FLAG(adpf_fmq_sf, "") FLAG_MANAGER_ACONFIG_FLAG(adpf_fmq_sf, "") FLAG_MANAGER_READ_ONLY_FLAG(connected_display, "") FLAG_MANAGER_ACONFIG_FLAG(connected_display, "") FLAG_MANAGER_READ_ONLY_FLAG(enable_small_area_detection, "") FLAG_MANAGER_ACONFIG_FLAG(enable_small_area_detection, "") FLAG_MANAGER_READ_ONLY_FLAG(stable_edid_ids, "debug.sf.stable_edid_ids") FLAG_MANAGER_ACONFIG_FLAG(stable_edid_ids, "debug.sf.stable_edid_ids") FLAG_MANAGER_READ_ONLY_FLAG(frame_rate_category_mrr, "debug.sf.frame_rate_category_mrr") FLAG_MANAGER_ACONFIG_FLAG(frame_rate_category_mrr, "debug.sf.frame_rate_category_mrr") FLAG_MANAGER_READ_ONLY_FLAG(misc1, "") FLAG_MANAGER_ACONFIG_FLAG(misc1, "") FLAG_MANAGER_READ_ONLY_FLAG(vrr_config, "debug.sf.enable_vrr_config") FLAG_MANAGER_ACONFIG_FLAG(vrr_config, "debug.sf.enable_vrr_config") FLAG_MANAGER_READ_ONLY_FLAG(hdcp_level_hal, "") FLAG_MANAGER_ACONFIG_FLAG(hdcp_level_hal, "") FLAG_MANAGER_READ_ONLY_FLAG(multithreaded_present, "debug.sf.multithreaded_present") FLAG_MANAGER_ACONFIG_FLAG(multithreaded_present, "debug.sf.multithreaded_present") FLAG_MANAGER_READ_ONLY_FLAG(add_sf_skipped_frames_to_trace, "") FLAG_MANAGER_ACONFIG_FLAG(add_sf_skipped_frames_to_trace, "") FLAG_MANAGER_READ_ONLY_FLAG(use_known_refresh_rate_for_fps_consistency, "") FLAG_MANAGER_ACONFIG_FLAG(use_known_refresh_rate_for_fps_consistency, "") FLAG_MANAGER_READ_ONLY_FLAG(cache_when_source_crop_layer_only_moved, FLAG_MANAGER_ACONFIG_FLAG(cache_when_source_crop_layer_only_moved, "debug.sf.cache_source_crop_only_moved") "debug.sf.cache_source_crop_only_moved") FLAG_MANAGER_READ_ONLY_FLAG(enable_fro_dependent_features, "") FLAG_MANAGER_ACONFIG_FLAG(enable_fro_dependent_features, "") FLAG_MANAGER_READ_ONLY_FLAG(display_protected, "") FLAG_MANAGER_ACONFIG_FLAG(display_protected, "") FLAG_MANAGER_READ_ONLY_FLAG(fp16_client_target, "debug.sf.fp16_client_target") FLAG_MANAGER_ACONFIG_FLAG(fp16_client_target, "debug.sf.fp16_client_target") FLAG_MANAGER_READ_ONLY_FLAG(game_default_frame_rate, "") FLAG_MANAGER_ACONFIG_FLAG(game_default_frame_rate, "") FLAG_MANAGER_READ_ONLY_FLAG(enable_layer_command_batching, "debug.sf.enable_layer_command_batching") FLAG_MANAGER_ACONFIG_FLAG(enable_layer_command_batching, "debug.sf.enable_layer_command_batching") FLAG_MANAGER_READ_ONLY_FLAG(vulkan_renderengine, "debug.renderengine.vulkan") FLAG_MANAGER_ACONFIG_FLAG(vulkan_renderengine, "debug.renderengine.vulkan") FLAG_MANAGER_READ_ONLY_FLAG(renderable_buffer_usage, "") FLAG_MANAGER_ACONFIG_FLAG(renderable_buffer_usage, "") FLAG_MANAGER_READ_ONLY_FLAG(restore_blur_step, "debug.renderengine.restore_blur_step") FLAG_MANAGER_ACONFIG_FLAG(restore_blur_step, "debug.renderengine.restore_blur_step") FLAG_MANAGER_READ_ONLY_FLAG(dont_skip_on_early_ro, "") FLAG_MANAGER_ACONFIG_FLAG(dont_skip_on_early_ro, "") FLAG_MANAGER_READ_ONLY_FLAG(no_vsyncs_on_screen_off, "debug.sf.no_vsyncs_on_screen_off") FLAG_MANAGER_ACONFIG_FLAG(no_vsyncs_on_screen_off, "debug.sf.no_vsyncs_on_screen_off") FLAG_MANAGER_READ_ONLY_FLAG(protected_if_client, "") FLAG_MANAGER_ACONFIG_FLAG(protected_if_client, "") FLAG_MANAGER_READ_ONLY_FLAG(vrr_bugfix_24q4, ""); FLAG_MANAGER_ACONFIG_FLAG(vrr_bugfix_24q4, ""); FLAG_MANAGER_READ_ONLY_FLAG(vrr_bugfix_dropped_frame, "") FLAG_MANAGER_ACONFIG_FLAG(vrr_bugfix_dropped_frame, "") FLAG_MANAGER_READ_ONLY_FLAG(graphite_renderengine, "debug.renderengine.graphite") FLAG_MANAGER_ACONFIG_FLAG(graphite_renderengine, "debug.renderengine.graphite") FLAG_MANAGER_READ_ONLY_FLAG(filter_frames_before_trace_starts, "") FLAG_MANAGER_ACONFIG_FLAG(filter_frames_before_trace_starts, "") FLAG_MANAGER_READ_ONLY_FLAG(latch_unsignaled_with_auto_refresh_changed, ""); FLAG_MANAGER_ACONFIG_FLAG(latch_unsignaled_with_auto_refresh_changed, ""); FLAG_MANAGER_READ_ONLY_FLAG(deprecate_vsync_sf, ""); FLAG_MANAGER_ACONFIG_FLAG(deprecate_vsync_sf, ""); FLAG_MANAGER_READ_ONLY_FLAG(allow_n_vsyncs_in_targeter, ""); FLAG_MANAGER_ACONFIG_FLAG(allow_n_vsyncs_in_targeter, ""); FLAG_MANAGER_READ_ONLY_FLAG(detached_mirror, ""); FLAG_MANAGER_ACONFIG_FLAG(detached_mirror, ""); FLAG_MANAGER_READ_ONLY_FLAG(commit_not_composited, ""); FLAG_MANAGER_ACONFIG_FLAG(commit_not_composited, ""); FLAG_MANAGER_READ_ONLY_FLAG(correct_dpi_with_display_size, ""); FLAG_MANAGER_ACONFIG_FLAG(correct_dpi_with_display_size, ""); FLAG_MANAGER_READ_ONLY_FLAG(local_tonemap_screenshots, "debug.sf.local_tonemap_screenshots"); FLAG_MANAGER_ACONFIG_FLAG(local_tonemap_screenshots, "debug.sf.local_tonemap_screenshots"); FLAG_MANAGER_READ_ONLY_FLAG(override_trusted_overlay, ""); FLAG_MANAGER_ACONFIG_FLAG(override_trusted_overlay, ""); FLAG_MANAGER_READ_ONLY_FLAG(flush_buffer_slots_to_uncache, ""); FLAG_MANAGER_ACONFIG_FLAG(flush_buffer_slots_to_uncache, ""); FLAG_MANAGER_READ_ONLY_FLAG(force_compile_graphite_renderengine, ""); FLAG_MANAGER_ACONFIG_FLAG(force_compile_graphite_renderengine, ""); FLAG_MANAGER_READ_ONLY_FLAG(true_hdr_screenshots, "debug.sf.true_hdr_screenshots"); FLAG_MANAGER_ACONFIG_FLAG(true_hdr_screenshots, "debug.sf.true_hdr_screenshots"); FLAG_MANAGER_READ_ONLY_FLAG(display_config_error_hal, ""); FLAG_MANAGER_ACONFIG_FLAG(display_config_error_hal, ""); FLAG_MANAGER_READ_ONLY_FLAG(connected_display_hdr, ""); FLAG_MANAGER_ACONFIG_FLAG(connected_display_hdr, ""); FLAG_MANAGER_READ_ONLY_FLAG(deprecate_frame_tracker, ""); FLAG_MANAGER_ACONFIG_FLAG(deprecate_frame_tracker, ""); FLAG_MANAGER_READ_ONLY_FLAG(skip_invisible_windows_in_input, ""); FLAG_MANAGER_ACONFIG_FLAG(skip_invisible_windows_in_input, ""); FLAG_MANAGER_READ_ONLY_FLAG(begone_bright_hlg, "debug.sf.begone_bright_hlg"); FLAG_MANAGER_ACONFIG_FLAG(begone_bright_hlg, "debug.sf.begone_bright_hlg"); /// Trunk stable server flags /// /// Trunk stable server (R/W) flags /// FLAG_MANAGER_SERVER_FLAG(refresh_rate_overlay_on_external_display, "") FLAG_MANAGER_ACONFIG_FLAG(refresh_rate_overlay_on_external_display, "") FLAG_MANAGER_SERVER_FLAG(adpf_gpu_sf, "") FLAG_MANAGER_ACONFIG_FLAG(adpf_gpu_sf, "") FLAG_MANAGER_SERVER_FLAG(adpf_native_session_manager, ""); FLAG_MANAGER_ACONFIG_FLAG(adpf_native_session_manager, ""); /// Trunk stable server flags from outside SurfaceFlinger /// /// Trunk stable server (R/W) flags from outside SurfaceFlinger /// FLAG_MANAGER_SERVER_FLAG_IMPORTED(adpf_use_fmq_channel, "", android::os) FLAG_MANAGER_ACONFIG_FLAG_IMPORTED(adpf_use_fmq_channel, "", android::os) /// Trunk stable readonly flags from outside SurfaceFlinger /// /// Trunk stable readonly flags from outside SurfaceFlinger /// FLAG_MANAGER_READ_ONLY_FLAG_IMPORTED(idle_screen_refresh_rate_timeout, "", FLAG_MANAGER_ACONFIG_FLAG_IMPORTED(idle_screen_refresh_rate_timeout, "", com::android::server::display::feature::flags) com::android::server::display::feature::flags) FLAG_MANAGER_READ_ONLY_FLAG_IMPORTED(adpf_use_fmq_channel_fixed, "", android::os) FLAG_MANAGER_ACONFIG_FLAG_IMPORTED(adpf_use_fmq_channel_fixed, "", android::os) FLAG_MANAGER_READ_ONLY_FLAG_IMPORTED(trace_frame_rate_override, "", FLAG_MANAGER_ACONFIG_FLAG_IMPORTED(trace_frame_rate_override, "", com::android::graphics::libgui::flags); com::android::graphics::libgui::flags); } // namespace android } // namespace android services/surfaceflinger/common/include/common/FlagManager.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -47,7 +47,7 @@ public: bool use_adpf_cpu_hint() const; bool use_adpf_cpu_hint() const; bool use_skia_tracing() const; bool use_skia_tracing() const; /// Trunk stable server flags /// /// Trunk stable server (R/W) flags /// bool refresh_rate_overlay_on_external_display() const; bool refresh_rate_overlay_on_external_display() const; bool adpf_gpu_sf() const; bool adpf_gpu_sf() const; bool adpf_use_fmq_channel() const; bool adpf_use_fmq_channel() const; Loading services/surfaceflinger/tests/unittests/FlagManagerTest.cpp +0 −6 Original line number Original line Diff line number Diff line Loading @@ -85,12 +85,6 @@ TEST_F(FlagManagerTest, legacyReturnsValue) { EXPECT_EQ(false, mFlagManager.test_flag()); EXPECT_EQ(false, mFlagManager.test_flag()); } } TEST_F(FlagManagerTest, crashesIfQueriedBeforeBoot) { mFlagManager.markBootIncomplete(); EXPECT_DEATH(FlagManager::getInstance() .refresh_rate_overlay_on_external_display(), ""); } TEST_F(FlagManagerTest, returnsOverrideTrue) { TEST_F(FlagManagerTest, returnsOverrideTrue) { mFlagManager.markBootCompleted(); mFlagManager.markBootCompleted(); Loading Loading
services/surfaceflinger/common/FlagManager.cpp +133 −144 Original line number Original line Diff line number Diff line Loading @@ -89,9 +89,9 @@ void FlagManager::setUnitTestMode() { mBootCompleted = true; mBootCompleted = true; } } void FlagManager::dumpFlag(std::string& result, bool readonly, const char* name, void FlagManager::dumpFlag(std::string& result, bool aconfig, const char* name, std::function<bool()> getter) const { std::function<bool()> getter) const { if (readonly || mBootCompleted) { if (aconfig || mBootCompleted) { base::StringAppendF(&result, "%s: %s\n", name, getter() ? "true" : "false"); base::StringAppendF(&result, "%s: %s\n", name, getter() ? "true" : "false"); } else { } else { base::StringAppendF(&result, "%s: in progress (still booting)\n", name); base::StringAppendF(&result, "%s: in progress (still booting)\n", name); Loading @@ -99,72 +99,72 @@ void FlagManager::dumpFlag(std::string& result, bool readonly, const char* name, } } void FlagManager::dump(std::string& result) const { void FlagManager::dump(std::string& result) const { #define DUMP_FLAG_INTERVAL(name, readonly) \ #define DUMP_FLAG_INTERNAL(name, aconfig) \ dumpFlag(result, (readonly), #name, std::bind(&FlagManager::name, this)) dumpFlag(result, (aconfig), #name, std::bind(&FlagManager::name, this)) #define DUMP_SERVER_FLAG(name) DUMP_FLAG_INTERVAL(name, false) #define DUMP_LEGACY_SERVER_FLAG(name) DUMP_FLAG_INTERNAL(name, false) #define DUMP_READ_ONLY_FLAG(name) DUMP_FLAG_INTERVAL(name, true) #define DUMP_ACONFIG_FLAG(name) DUMP_FLAG_INTERNAL(name, true) base::StringAppendF(&result, "FlagManager values: \n"); base::StringAppendF(&result, "FlagManager values: \n"); /// Legacy server flags /// /// Legacy server flags /// DUMP_SERVER_FLAG(use_adpf_cpu_hint); DUMP_LEGACY_SERVER_FLAG(use_adpf_cpu_hint); DUMP_SERVER_FLAG(use_skia_tracing); DUMP_LEGACY_SERVER_FLAG(use_skia_tracing); /// Trunk stable server flags /// /// Trunk stable server (R/W) flags /// DUMP_SERVER_FLAG(refresh_rate_overlay_on_external_display); DUMP_ACONFIG_FLAG(refresh_rate_overlay_on_external_display); DUMP_SERVER_FLAG(adpf_gpu_sf); DUMP_ACONFIG_FLAG(adpf_gpu_sf); DUMP_SERVER_FLAG(adpf_native_session_manager); DUMP_ACONFIG_FLAG(adpf_native_session_manager); DUMP_SERVER_FLAG(adpf_use_fmq_channel); DUMP_ACONFIG_FLAG(adpf_use_fmq_channel); /// Trunk stable readonly flags /// /// Trunk stable readonly flags /// DUMP_READ_ONLY_FLAG(adpf_fmq_sf); DUMP_ACONFIG_FLAG(adpf_fmq_sf); DUMP_READ_ONLY_FLAG(connected_display); DUMP_ACONFIG_FLAG(connected_display); DUMP_READ_ONLY_FLAG(enable_small_area_detection); DUMP_ACONFIG_FLAG(enable_small_area_detection); DUMP_READ_ONLY_FLAG(stable_edid_ids); DUMP_ACONFIG_FLAG(stable_edid_ids); DUMP_READ_ONLY_FLAG(frame_rate_category_mrr); DUMP_ACONFIG_FLAG(frame_rate_category_mrr); DUMP_READ_ONLY_FLAG(misc1); DUMP_ACONFIG_FLAG(misc1); DUMP_READ_ONLY_FLAG(vrr_config); DUMP_ACONFIG_FLAG(vrr_config); DUMP_READ_ONLY_FLAG(hdcp_level_hal); DUMP_ACONFIG_FLAG(hdcp_level_hal); DUMP_READ_ONLY_FLAG(multithreaded_present); DUMP_ACONFIG_FLAG(multithreaded_present); DUMP_READ_ONLY_FLAG(add_sf_skipped_frames_to_trace); DUMP_ACONFIG_FLAG(add_sf_skipped_frames_to_trace); DUMP_READ_ONLY_FLAG(use_known_refresh_rate_for_fps_consistency); DUMP_ACONFIG_FLAG(use_known_refresh_rate_for_fps_consistency); DUMP_READ_ONLY_FLAG(cache_when_source_crop_layer_only_moved); DUMP_ACONFIG_FLAG(cache_when_source_crop_layer_only_moved); DUMP_READ_ONLY_FLAG(enable_fro_dependent_features); DUMP_ACONFIG_FLAG(enable_fro_dependent_features); DUMP_READ_ONLY_FLAG(display_protected); DUMP_ACONFIG_FLAG(display_protected); DUMP_READ_ONLY_FLAG(fp16_client_target); DUMP_ACONFIG_FLAG(fp16_client_target); DUMP_READ_ONLY_FLAG(game_default_frame_rate); DUMP_ACONFIG_FLAG(game_default_frame_rate); DUMP_READ_ONLY_FLAG(enable_layer_command_batching); DUMP_ACONFIG_FLAG(enable_layer_command_batching); DUMP_READ_ONLY_FLAG(vulkan_renderengine); DUMP_ACONFIG_FLAG(vulkan_renderengine); DUMP_READ_ONLY_FLAG(renderable_buffer_usage); DUMP_ACONFIG_FLAG(renderable_buffer_usage); DUMP_READ_ONLY_FLAG(vrr_bugfix_24q4); DUMP_ACONFIG_FLAG(vrr_bugfix_24q4); DUMP_READ_ONLY_FLAG(vrr_bugfix_dropped_frame); DUMP_ACONFIG_FLAG(vrr_bugfix_dropped_frame); DUMP_READ_ONLY_FLAG(restore_blur_step); DUMP_ACONFIG_FLAG(restore_blur_step); DUMP_READ_ONLY_FLAG(dont_skip_on_early_ro); DUMP_ACONFIG_FLAG(dont_skip_on_early_ro); DUMP_READ_ONLY_FLAG(no_vsyncs_on_screen_off); DUMP_ACONFIG_FLAG(no_vsyncs_on_screen_off); DUMP_READ_ONLY_FLAG(protected_if_client); DUMP_ACONFIG_FLAG(protected_if_client); DUMP_READ_ONLY_FLAG(idle_screen_refresh_rate_timeout); DUMP_ACONFIG_FLAG(idle_screen_refresh_rate_timeout); DUMP_READ_ONLY_FLAG(graphite_renderengine); DUMP_ACONFIG_FLAG(graphite_renderengine); DUMP_READ_ONLY_FLAG(filter_frames_before_trace_starts); DUMP_ACONFIG_FLAG(filter_frames_before_trace_starts); DUMP_READ_ONLY_FLAG(latch_unsignaled_with_auto_refresh_changed); DUMP_ACONFIG_FLAG(latch_unsignaled_with_auto_refresh_changed); DUMP_READ_ONLY_FLAG(deprecate_vsync_sf); DUMP_ACONFIG_FLAG(deprecate_vsync_sf); DUMP_READ_ONLY_FLAG(allow_n_vsyncs_in_targeter); DUMP_ACONFIG_FLAG(allow_n_vsyncs_in_targeter); DUMP_READ_ONLY_FLAG(detached_mirror); DUMP_ACONFIG_FLAG(detached_mirror); DUMP_READ_ONLY_FLAG(commit_not_composited); DUMP_ACONFIG_FLAG(commit_not_composited); DUMP_READ_ONLY_FLAG(correct_dpi_with_display_size); DUMP_ACONFIG_FLAG(correct_dpi_with_display_size); DUMP_READ_ONLY_FLAG(local_tonemap_screenshots); DUMP_ACONFIG_FLAG(local_tonemap_screenshots); DUMP_READ_ONLY_FLAG(override_trusted_overlay); DUMP_ACONFIG_FLAG(override_trusted_overlay); DUMP_READ_ONLY_FLAG(flush_buffer_slots_to_uncache); DUMP_ACONFIG_FLAG(flush_buffer_slots_to_uncache); DUMP_READ_ONLY_FLAG(force_compile_graphite_renderengine); DUMP_ACONFIG_FLAG(force_compile_graphite_renderengine); DUMP_READ_ONLY_FLAG(trace_frame_rate_override); DUMP_ACONFIG_FLAG(trace_frame_rate_override); DUMP_READ_ONLY_FLAG(true_hdr_screenshots); DUMP_ACONFIG_FLAG(true_hdr_screenshots); DUMP_READ_ONLY_FLAG(display_config_error_hal); DUMP_ACONFIG_FLAG(display_config_error_hal); DUMP_READ_ONLY_FLAG(connected_display_hdr); DUMP_ACONFIG_FLAG(connected_display_hdr); DUMP_READ_ONLY_FLAG(deprecate_frame_tracker); DUMP_ACONFIG_FLAG(deprecate_frame_tracker); DUMP_READ_ONLY_FLAG(skip_invisible_windows_in_input); DUMP_ACONFIG_FLAG(skip_invisible_windows_in_input); DUMP_READ_ONLY_FLAG(begone_bright_hlg); DUMP_ACONFIG_FLAG(begone_bright_hlg); #undef DUMP_READ_ONLY_FLAG #undef DUMP_ACONFIG_FLAG #undef DUMP_SERVER_FLAG #undef DUMP_LEGACY_SERVER_FLAG #undef DUMP_FLAG_INTERVAL #undef DUMP_FLAG_INTERVAL } } Loading @@ -189,13 +189,8 @@ bool FlagManager::getServerConfigurableFlag(const char* experimentFlagName) cons return getServerConfigurableFlag(serverFlagName); \ return getServerConfigurableFlag(serverFlagName); \ } } #define FLAG_MANAGER_FLAG_INTERNAL(name, syspropOverride, checkForBootCompleted, owner) \ #define FLAG_MANAGER_ACONFIG_INTERNAL(name, syspropOverride, owner) \ bool FlagManager::name() const { \ bool FlagManager::name() const { \ if (checkForBootCompleted) { \ LOG_ALWAYS_FATAL_IF(!mBootCompleted, \ "Can't read %s before boot completed as it is server writable", \ __func__); \ } \ static const std::optional<bool> debugOverride = getBoolProperty(syspropOverride); \ static const std::optional<bool> debugOverride = getBoolProperty(syspropOverride); \ static const bool value = getFlagValue([] { return owner ::name(); }, debugOverride); \ static const bool value = getFlagValue([] { return owner ::name(); }, debugOverride); \ if (mUnitTestMode) { \ if (mUnitTestMode) { \ Loading @@ -207,17 +202,11 @@ bool FlagManager::getServerConfigurableFlag(const char* experimentFlagName) cons return value; \ return value; \ } } #define FLAG_MANAGER_SERVER_FLAG(name, syspropOverride) \ #define FLAG_MANAGER_ACONFIG_FLAG(name, syspropOverride) \ FLAG_MANAGER_FLAG_INTERNAL(name, syspropOverride, true, flags) FLAG_MANAGER_ACONFIG_INTERNAL(name, syspropOverride, flags) #define FLAG_MANAGER_READ_ONLY_FLAG(name, syspropOverride) \ FLAG_MANAGER_FLAG_INTERNAL(name, syspropOverride, false, flags) #define FLAG_MANAGER_SERVER_FLAG_IMPORTED(name, syspropOverride, owner) \ FLAG_MANAGER_FLAG_INTERNAL(name, syspropOverride, true, owner) #define FLAG_MANAGER_READ_ONLY_FLAG_IMPORTED(name, syspropOverride, owner) \ #define FLAG_MANAGER_ACONFIG_FLAG_IMPORTED(name, syspropOverride, owner) \ FLAG_MANAGER_FLAG_INTERNAL(name, syspropOverride, false, owner) FLAG_MANAGER_ACONFIG_INTERNAL(name, syspropOverride, owner) /// Legacy server flags /// /// Legacy server flags /// FLAG_MANAGER_LEGACY_SERVER_FLAG(test_flag, "", "") FLAG_MANAGER_LEGACY_SERVER_FLAG(test_flag, "", "") Loading @@ -227,64 +216,64 @@ FLAG_MANAGER_LEGACY_SERVER_FLAG(use_skia_tracing, PROPERTY_SKIA_ATRACE_ENABLED, "SkiaTracingFeature__use_skia_tracing") "SkiaTracingFeature__use_skia_tracing") /// Trunk stable readonly flags /// /// Trunk stable readonly flags /// FLAG_MANAGER_READ_ONLY_FLAG(adpf_fmq_sf, "") FLAG_MANAGER_ACONFIG_FLAG(adpf_fmq_sf, "") FLAG_MANAGER_READ_ONLY_FLAG(connected_display, "") FLAG_MANAGER_ACONFIG_FLAG(connected_display, "") FLAG_MANAGER_READ_ONLY_FLAG(enable_small_area_detection, "") FLAG_MANAGER_ACONFIG_FLAG(enable_small_area_detection, "") FLAG_MANAGER_READ_ONLY_FLAG(stable_edid_ids, "debug.sf.stable_edid_ids") FLAG_MANAGER_ACONFIG_FLAG(stable_edid_ids, "debug.sf.stable_edid_ids") FLAG_MANAGER_READ_ONLY_FLAG(frame_rate_category_mrr, "debug.sf.frame_rate_category_mrr") FLAG_MANAGER_ACONFIG_FLAG(frame_rate_category_mrr, "debug.sf.frame_rate_category_mrr") FLAG_MANAGER_READ_ONLY_FLAG(misc1, "") FLAG_MANAGER_ACONFIG_FLAG(misc1, "") FLAG_MANAGER_READ_ONLY_FLAG(vrr_config, "debug.sf.enable_vrr_config") FLAG_MANAGER_ACONFIG_FLAG(vrr_config, "debug.sf.enable_vrr_config") FLAG_MANAGER_READ_ONLY_FLAG(hdcp_level_hal, "") FLAG_MANAGER_ACONFIG_FLAG(hdcp_level_hal, "") FLAG_MANAGER_READ_ONLY_FLAG(multithreaded_present, "debug.sf.multithreaded_present") FLAG_MANAGER_ACONFIG_FLAG(multithreaded_present, "debug.sf.multithreaded_present") FLAG_MANAGER_READ_ONLY_FLAG(add_sf_skipped_frames_to_trace, "") FLAG_MANAGER_ACONFIG_FLAG(add_sf_skipped_frames_to_trace, "") FLAG_MANAGER_READ_ONLY_FLAG(use_known_refresh_rate_for_fps_consistency, "") FLAG_MANAGER_ACONFIG_FLAG(use_known_refresh_rate_for_fps_consistency, "") FLAG_MANAGER_READ_ONLY_FLAG(cache_when_source_crop_layer_only_moved, FLAG_MANAGER_ACONFIG_FLAG(cache_when_source_crop_layer_only_moved, "debug.sf.cache_source_crop_only_moved") "debug.sf.cache_source_crop_only_moved") FLAG_MANAGER_READ_ONLY_FLAG(enable_fro_dependent_features, "") FLAG_MANAGER_ACONFIG_FLAG(enable_fro_dependent_features, "") FLAG_MANAGER_READ_ONLY_FLAG(display_protected, "") FLAG_MANAGER_ACONFIG_FLAG(display_protected, "") FLAG_MANAGER_READ_ONLY_FLAG(fp16_client_target, "debug.sf.fp16_client_target") FLAG_MANAGER_ACONFIG_FLAG(fp16_client_target, "debug.sf.fp16_client_target") FLAG_MANAGER_READ_ONLY_FLAG(game_default_frame_rate, "") FLAG_MANAGER_ACONFIG_FLAG(game_default_frame_rate, "") FLAG_MANAGER_READ_ONLY_FLAG(enable_layer_command_batching, "debug.sf.enable_layer_command_batching") FLAG_MANAGER_ACONFIG_FLAG(enable_layer_command_batching, "debug.sf.enable_layer_command_batching") FLAG_MANAGER_READ_ONLY_FLAG(vulkan_renderengine, "debug.renderengine.vulkan") FLAG_MANAGER_ACONFIG_FLAG(vulkan_renderengine, "debug.renderengine.vulkan") FLAG_MANAGER_READ_ONLY_FLAG(renderable_buffer_usage, "") FLAG_MANAGER_ACONFIG_FLAG(renderable_buffer_usage, "") FLAG_MANAGER_READ_ONLY_FLAG(restore_blur_step, "debug.renderengine.restore_blur_step") FLAG_MANAGER_ACONFIG_FLAG(restore_blur_step, "debug.renderengine.restore_blur_step") FLAG_MANAGER_READ_ONLY_FLAG(dont_skip_on_early_ro, "") FLAG_MANAGER_ACONFIG_FLAG(dont_skip_on_early_ro, "") FLAG_MANAGER_READ_ONLY_FLAG(no_vsyncs_on_screen_off, "debug.sf.no_vsyncs_on_screen_off") FLAG_MANAGER_ACONFIG_FLAG(no_vsyncs_on_screen_off, "debug.sf.no_vsyncs_on_screen_off") FLAG_MANAGER_READ_ONLY_FLAG(protected_if_client, "") FLAG_MANAGER_ACONFIG_FLAG(protected_if_client, "") FLAG_MANAGER_READ_ONLY_FLAG(vrr_bugfix_24q4, ""); FLAG_MANAGER_ACONFIG_FLAG(vrr_bugfix_24q4, ""); FLAG_MANAGER_READ_ONLY_FLAG(vrr_bugfix_dropped_frame, "") FLAG_MANAGER_ACONFIG_FLAG(vrr_bugfix_dropped_frame, "") FLAG_MANAGER_READ_ONLY_FLAG(graphite_renderengine, "debug.renderengine.graphite") FLAG_MANAGER_ACONFIG_FLAG(graphite_renderengine, "debug.renderengine.graphite") FLAG_MANAGER_READ_ONLY_FLAG(filter_frames_before_trace_starts, "") FLAG_MANAGER_ACONFIG_FLAG(filter_frames_before_trace_starts, "") FLAG_MANAGER_READ_ONLY_FLAG(latch_unsignaled_with_auto_refresh_changed, ""); FLAG_MANAGER_ACONFIG_FLAG(latch_unsignaled_with_auto_refresh_changed, ""); FLAG_MANAGER_READ_ONLY_FLAG(deprecate_vsync_sf, ""); FLAG_MANAGER_ACONFIG_FLAG(deprecate_vsync_sf, ""); FLAG_MANAGER_READ_ONLY_FLAG(allow_n_vsyncs_in_targeter, ""); FLAG_MANAGER_ACONFIG_FLAG(allow_n_vsyncs_in_targeter, ""); FLAG_MANAGER_READ_ONLY_FLAG(detached_mirror, ""); FLAG_MANAGER_ACONFIG_FLAG(detached_mirror, ""); FLAG_MANAGER_READ_ONLY_FLAG(commit_not_composited, ""); FLAG_MANAGER_ACONFIG_FLAG(commit_not_composited, ""); FLAG_MANAGER_READ_ONLY_FLAG(correct_dpi_with_display_size, ""); FLAG_MANAGER_ACONFIG_FLAG(correct_dpi_with_display_size, ""); FLAG_MANAGER_READ_ONLY_FLAG(local_tonemap_screenshots, "debug.sf.local_tonemap_screenshots"); FLAG_MANAGER_ACONFIG_FLAG(local_tonemap_screenshots, "debug.sf.local_tonemap_screenshots"); FLAG_MANAGER_READ_ONLY_FLAG(override_trusted_overlay, ""); FLAG_MANAGER_ACONFIG_FLAG(override_trusted_overlay, ""); FLAG_MANAGER_READ_ONLY_FLAG(flush_buffer_slots_to_uncache, ""); FLAG_MANAGER_ACONFIG_FLAG(flush_buffer_slots_to_uncache, ""); FLAG_MANAGER_READ_ONLY_FLAG(force_compile_graphite_renderengine, ""); FLAG_MANAGER_ACONFIG_FLAG(force_compile_graphite_renderengine, ""); FLAG_MANAGER_READ_ONLY_FLAG(true_hdr_screenshots, "debug.sf.true_hdr_screenshots"); FLAG_MANAGER_ACONFIG_FLAG(true_hdr_screenshots, "debug.sf.true_hdr_screenshots"); FLAG_MANAGER_READ_ONLY_FLAG(display_config_error_hal, ""); FLAG_MANAGER_ACONFIG_FLAG(display_config_error_hal, ""); FLAG_MANAGER_READ_ONLY_FLAG(connected_display_hdr, ""); FLAG_MANAGER_ACONFIG_FLAG(connected_display_hdr, ""); FLAG_MANAGER_READ_ONLY_FLAG(deprecate_frame_tracker, ""); FLAG_MANAGER_ACONFIG_FLAG(deprecate_frame_tracker, ""); FLAG_MANAGER_READ_ONLY_FLAG(skip_invisible_windows_in_input, ""); FLAG_MANAGER_ACONFIG_FLAG(skip_invisible_windows_in_input, ""); FLAG_MANAGER_READ_ONLY_FLAG(begone_bright_hlg, "debug.sf.begone_bright_hlg"); FLAG_MANAGER_ACONFIG_FLAG(begone_bright_hlg, "debug.sf.begone_bright_hlg"); /// Trunk stable server flags /// /// Trunk stable server (R/W) flags /// FLAG_MANAGER_SERVER_FLAG(refresh_rate_overlay_on_external_display, "") FLAG_MANAGER_ACONFIG_FLAG(refresh_rate_overlay_on_external_display, "") FLAG_MANAGER_SERVER_FLAG(adpf_gpu_sf, "") FLAG_MANAGER_ACONFIG_FLAG(adpf_gpu_sf, "") FLAG_MANAGER_SERVER_FLAG(adpf_native_session_manager, ""); FLAG_MANAGER_ACONFIG_FLAG(adpf_native_session_manager, ""); /// Trunk stable server flags from outside SurfaceFlinger /// /// Trunk stable server (R/W) flags from outside SurfaceFlinger /// FLAG_MANAGER_SERVER_FLAG_IMPORTED(adpf_use_fmq_channel, "", android::os) FLAG_MANAGER_ACONFIG_FLAG_IMPORTED(adpf_use_fmq_channel, "", android::os) /// Trunk stable readonly flags from outside SurfaceFlinger /// /// Trunk stable readonly flags from outside SurfaceFlinger /// FLAG_MANAGER_READ_ONLY_FLAG_IMPORTED(idle_screen_refresh_rate_timeout, "", FLAG_MANAGER_ACONFIG_FLAG_IMPORTED(idle_screen_refresh_rate_timeout, "", com::android::server::display::feature::flags) com::android::server::display::feature::flags) FLAG_MANAGER_READ_ONLY_FLAG_IMPORTED(adpf_use_fmq_channel_fixed, "", android::os) FLAG_MANAGER_ACONFIG_FLAG_IMPORTED(adpf_use_fmq_channel_fixed, "", android::os) FLAG_MANAGER_READ_ONLY_FLAG_IMPORTED(trace_frame_rate_override, "", FLAG_MANAGER_ACONFIG_FLAG_IMPORTED(trace_frame_rate_override, "", com::android::graphics::libgui::flags); com::android::graphics::libgui::flags); } // namespace android } // namespace android
services/surfaceflinger/common/include/common/FlagManager.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -47,7 +47,7 @@ public: bool use_adpf_cpu_hint() const; bool use_adpf_cpu_hint() const; bool use_skia_tracing() const; bool use_skia_tracing() const; /// Trunk stable server flags /// /// Trunk stable server (R/W) flags /// bool refresh_rate_overlay_on_external_display() const; bool refresh_rate_overlay_on_external_display() const; bool adpf_gpu_sf() const; bool adpf_gpu_sf() const; bool adpf_use_fmq_channel() const; bool adpf_use_fmq_channel() const; Loading
services/surfaceflinger/tests/unittests/FlagManagerTest.cpp +0 −6 Original line number Original line Diff line number Diff line Loading @@ -85,12 +85,6 @@ TEST_F(FlagManagerTest, legacyReturnsValue) { EXPECT_EQ(false, mFlagManager.test_flag()); EXPECT_EQ(false, mFlagManager.test_flag()); } } TEST_F(FlagManagerTest, crashesIfQueriedBeforeBoot) { mFlagManager.markBootIncomplete(); EXPECT_DEATH(FlagManager::getInstance() .refresh_rate_overlay_on_external_display(), ""); } TEST_F(FlagManagerTest, returnsOverrideTrue) { TEST_F(FlagManagerTest, returnsOverrideTrue) { mFlagManager.markBootCompleted(); mFlagManager.markBootCompleted(); Loading