Avi Drissman | 05dfbc82 | 2022-09-13 21:25:34 | [diff] [blame] | 1 | // Copyright 2013 The Chromium Authors |
kloveless@chromium.org | 1d82e82 | 2013-04-10 21:32:32 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | // This file contains the Logger class. |
| 6 | |
| 7 | #ifndef GPU_COMMAND_BUFFER_SERVICE_LOGGER_H_ |
| 8 | #define GPU_COMMAND_BUFFER_SERVICE_LOGGER_H_ |
| 9 | |
avi | f15d60a | 2015-12-21 17:06:33 | [diff] [blame] | 10 | #include <stdint.h> |
| 11 | |
kloveless@chromium.org | 1d82e82 | 2013-04-10 21:32:32 | [diff] [blame] | 12 | #include <string> |
| 13 | |
Avi Drissman | 93a273dd | 2023-01-11 00:38:27 | [diff] [blame] | 14 | #include "base/functional/callback.h" |
Keishi Hattori | 0e45c02 | 2021-11-27 09:25:52 | [diff] [blame] | 15 | #include "base/memory/raw_ptr.h" |
Antoine Labour | 83a0aed1 | 2018-01-10 04:52:38 | [diff] [blame] | 16 | #include "gpu/gpu_gles2_export.h" |
kloveless@chromium.org | 1d82e82 | 2013-04-10 21:32:32 | [diff] [blame] | 17 | |
| 18 | namespace gpu { |
Jonathan Backer | 1d807a4 | 2018-01-08 20:45:54 | [diff] [blame] | 19 | |
kloveless@chromium.org | 1d82e82 | 2013-04-10 21:32:32 | [diff] [blame] | 20 | namespace gles2 { |
| 21 | |
kloveless@chromium.org | 1d82e82 | 2013-04-10 21:32:32 | [diff] [blame] | 22 | class DebugMarkerManager; |
| 23 | |
Antoine Labour | 83a0aed1 | 2018-01-10 04:52:38 | [diff] [blame] | 24 | class GPU_GLES2_EXPORT Logger { |
kloveless@chromium.org | 1d82e82 | 2013-04-10 21:32:32 | [diff] [blame] | 25 | public: |
| 26 | static const int kMaxLogMessages = 256; |
| 27 | |
Peng Huang | 61eccfe4 | 2018-11-15 22:10:13 | [diff] [blame] | 28 | using LogMessageCallback = base::RepeatingCallback<void(const std::string&)>; |
| 29 | |
| 30 | Logger(const DebugMarkerManager* debug_marker_manager, |
James Darpinian | 104af6f | 2018-12-06 03:24:55 | [diff] [blame] | 31 | const LogMessageCallback& callback, |
| 32 | bool disable_gl_error_limit); |
Peter BostrΓΆm | dbacdc2 | 2021-09-23 22:11:46 | [diff] [blame] | 33 | |
| 34 | Logger(const Logger&) = delete; |
| 35 | Logger& operator=(const Logger&) = delete; |
| 36 | |
kloveless@chromium.org | 1d82e82 | 2013-04-10 21:32:32 | [diff] [blame] | 37 | ~Logger(); |
| 38 | |
| 39 | void LogMessage(const char* filename, int line, const std::string& msg); |
| 40 | const std::string& GetLogPrefix() const; |
Saifuddin Hitawala | e608efe6 | 2024-11-14 00:17:49 | [diff] [blame] | 41 | bool SuppressPerformanceLogs() const; |
kloveless@chromium.org | 1d82e82 | 2013-04-10 21:32:32 | [diff] [blame] | 42 | |
| 43 | // Defaults to true. Set to false for the gpu_unittests as they |
| 44 | // are explicitly checking errors are generated and so don't need the numerous |
| 45 | // messages. Otherwise, chromium code that generates these errors likely has a |
| 46 | // bug. |
| 47 | void set_log_synthesized_gl_errors(bool enabled) { |
| 48 | log_synthesized_gl_errors_ = enabled; |
| 49 | } |
| 50 | |
kloveless@chromium.org | 1d82e82 | 2013-04-10 21:32:32 | [diff] [blame] | 51 | private: |
| 52 | // Uses the current marker to add information to logs. |
Keishi Hattori | 0e45c02 | 2021-11-27 09:25:52 | [diff] [blame] | 53 | raw_ptr<const DebugMarkerManager> debug_marker_manager_; |
Peng Huang | 61eccfe4 | 2018-11-15 22:10:13 | [diff] [blame] | 54 | const LogMessageCallback log_message_callback_; |
kloveless@chromium.org | 1d82e82 | 2013-04-10 21:32:32 | [diff] [blame] | 55 | std::string this_in_hex_; |
| 56 | |
| 57 | int log_message_count_; |
| 58 | bool log_synthesized_gl_errors_; |
James Darpinian | 104af6f | 2018-12-06 03:24:55 | [diff] [blame] | 59 | bool disable_gl_error_limit_; |
Saifuddin Hitawala | e608efe6 | 2024-11-14 00:17:49 | [diff] [blame] | 60 | bool suppress_performance_logs_; |
kloveless@chromium.org | 1d82e82 | 2013-04-10 21:32:32 | [diff] [blame] | 61 | }; |
| 62 | |
| 63 | } // namespace gles2 |
| 64 | } // namespace gpu |
| 65 | |
| 66 | #endif // GPU_COMMAND_BUFFER_SERVICE_LOGGER_H_ |