odin-blend2d

Odin bindings to Blend2D
Log | Files | Refs | README | LICENSE

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