bl_bench_app.h (1807B)
1 // This file is part of Blend2D project <https://blend2d.com> 2 // 3 // See LICENSE.md for license and copyright information 4 // SPDX-License-Identifier: Zlib 5 6 #ifndef BL_BENCH_APP_H 7 #define BL_BENCH_APP_H 8 9 #include "bl_bench_backend.h" 10 #include "jsonbuilder.h" 11 12 #include "../commons/cmdline.h" 13 14 #include <blend2d.h> 15 #include <array> 16 #include <unordered_map> 17 18 namespace blbench { 19 20 struct BenchApp { 21 CmdLine _cmd_line; 22 23 // Configuration. 24 uint32_t _width = 512; 25 uint32_t _height = 600; 26 uint32_t _comp_op = 0xFFFFFFFF; 27 uint32_t _size_count = kBenchShapeSizeCount; 28 uint32_t _quantity = 0; 29 uint32_t _repeat = 1; 30 uint32_t _backends = 0xFFFFFFFF; 31 32 bool _save_images = false; 33 bool _save_overview = false; 34 bool _isolated = false; 35 bool _deep_bench = false; 36 37 // Assets. 38 using SpriteData = std::array<BLImage, 4>; 39 40 SpriteData _sprite_data; 41 mutable std::unordered_map<uint32_t, SpriteData> _scaled_sprites; 42 43 BenchApp(int argc, char** argv); 44 ~BenchApp(); 45 46 void print_app_info() const; 47 void print_options() const; 48 void print_backends() const; 49 50 bool parse_command_line(); 51 bool init(); 52 void info(); 53 54 bool read_image(BLImage&, const char* name, const void* data, size_t size) noexcept; 55 56 BLImage get_scaled_sprite(uint32_t id, uint32_t size) const; 57 58 bool is_backend_enabled(BackendKind backend_kind) const; 59 bool is_style_enabled(StyleKind style) const; 60 61 void serialize_system_info(JSONBuilder& json) const; 62 void serialize_params(JSONBuilder& json, const BenchParams& params) const; 63 void serialize_options(JSONBuilder& json, const BenchParams& params) const; 64 65 int run(); 66 int run_backend_tests(Backend& backend, BenchParams& params, JSONBuilder& json); 67 uint64_t run_single_test(Backend& backend, BenchParams& params); 68 }; 69 70 } // {blbench} 71 72 #endif // BL_BENCH_APP_H