xref: /OK3568_Linux_fs/buildroot/package/vkmark/0003-core-Add-off-screen-command-line-option.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFrom 1c41ba468681fcee3ebb9b9b0cf68095b7f13f1e Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com>
3*4882a593SmuzhiyunDate: Mon, 23 May 2022 13:13:45 +0800
4*4882a593SmuzhiyunSubject: [PATCH 3/3] core: Add --off-screen command-line option
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
7*4882a593Smuzhiyun---
8*4882a593Smuzhiyun src/main_loop.cpp | 7 +++++--
9*4882a593Smuzhiyun src/options.cpp   | 5 +++++
10*4882a593Smuzhiyun src/options.h     | 1 +
11*4882a593Smuzhiyun 3 files changed, 11 insertions(+), 2 deletions(-)
12*4882a593Smuzhiyun
13*4882a593Smuzhiyundiff --git a/src/main_loop.cpp b/src/main_loop.cpp
14*4882a593Smuzhiyunindex 5a6383b..94f4a12 100644
15*4882a593Smuzhiyun--- a/src/main_loop.cpp
16*4882a593Smuzhiyun+++ b/src/main_loop.cpp
17*4882a593Smuzhiyun@@ -123,8 +123,11 @@ void MainLoop::run()
18*4882a593Smuzhiyun                !(should_quit = ws.should_quit()) &&
19*4882a593Smuzhiyun                !should_stop)
20*4882a593Smuzhiyun         {
21*4882a593Smuzhiyun-            ws.present_vulkan_image(
22*4882a593Smuzhiyun-                scene.draw(ws.next_vulkan_image()));
23*4882a593Smuzhiyun+            if (options.off_screen)
24*4882a593Smuzhiyun+                scene.draw(ws.next_vulkan_image());
25*4882a593Smuzhiyun+            else
26*4882a593Smuzhiyun+                ws.present_vulkan_image(
27*4882a593Smuzhiyun+                    scene.draw(ws.next_vulkan_image()));
28*4882a593Smuzhiyun             scene.update();
29*4882a593Smuzhiyun         }
30*4882a593Smuzhiyun
31*4882a593Smuzhiyundiff --git a/src/options.cpp b/src/options.cpp
32*4882a593Smuzhiyunindex 0ef58c9..6009949 100644
33*4882a593Smuzhiyun--- a/src/options.cpp
34*4882a593Smuzhiyun+++ b/src/options.cpp
35*4882a593Smuzhiyun@@ -50,6 +50,7 @@ struct option long_options[] = {
36*4882a593Smuzhiyun     {"winsys-options", 1, 0, 0},
37*4882a593Smuzhiyun     {"list-devices", 0, 0, 0},
38*4882a593Smuzhiyun     {"run-forever", 0, 0, 0},
39*4882a593Smuzhiyun+    {"off-screen", 0, 0, 0},
40*4882a593Smuzhiyun     {"debug", 0, 0, 0},
41*4882a593Smuzhiyun     {"help", 0, 0, 0},
42*4882a593Smuzhiyun     {0, 0, 0, 0}
43*4882a593Smuzhiyun@@ -136,6 +137,7 @@ Options::Options()
44*4882a593Smuzhiyun       window_system_dir{VKMARK_WINDOW_SYSTEM_DIR},
45*4882a593Smuzhiyun       data_dir{VKMARK_DATA_DIR},
46*4882a593Smuzhiyun       run_forever{false},
47*4882a593Smuzhiyun+      off_screen{false},
48*4882a593Smuzhiyun       show_debug{false},
49*4882a593Smuzhiyun       show_help{false},
50*4882a593Smuzhiyun       list_devices{false},
51*4882a593Smuzhiyun@@ -167,6 +169,7 @@ std::string Options::help_string()
52*4882a593Smuzhiyun         "      --winsys-options OPTS   Window system options as 'opt1=val1(:opt2=val2)*'\n"
53*4882a593Smuzhiyun         "      --run-forever           Run indefinitely, looping from the last benchmark\n"
54*4882a593Smuzhiyun         "                              back to the first\n"
55*4882a593Smuzhiyun+        "      --off-screen            Render to an off-screen surface\n"
56*4882a593Smuzhiyun         "  -d, --debug                 Display debug messages\n"
57*4882a593Smuzhiyun         "  -D  --use-device            Use Vulkan device with specified UUID\n"
58*4882a593Smuzhiyun         "  -L  --list-devices          List Vulkan devices\n"
59*4882a593Smuzhiyun@@ -223,6 +226,8 @@ bool Options::parse_args(int argc, char **argv)
60*4882a593Smuzhiyun             window_system_options = parse_window_system_options(optarg);
61*4882a593Smuzhiyun         else if (optname == "run-forever")
62*4882a593Smuzhiyun             run_forever = true;
63*4882a593Smuzhiyun+        else if (optname == "off-screen")
64*4882a593Smuzhiyun+            off_screen = true;
65*4882a593Smuzhiyun         else if (c == 'd' || optname == "debug")
66*4882a593Smuzhiyun             show_debug = true;
67*4882a593Smuzhiyun         else if (c == 'h' || optname == "help")
68*4882a593Smuzhiyundiff --git a/src/options.h b/src/options.h
69*4882a593Smuzhiyunindex eb5b6cf..69b37d4 100644
70*4882a593Smuzhiyun--- a/src/options.h
71*4882a593Smuzhiyun+++ b/src/options.h
72*4882a593Smuzhiyun@@ -55,6 +55,7 @@ struct Options
73*4882a593Smuzhiyun     std::string window_system;
74*4882a593Smuzhiyun     std::vector<WindowSystemOption> window_system_options;
75*4882a593Smuzhiyun     bool run_forever;
76*4882a593Smuzhiyun+    bool off_screen;
77*4882a593Smuzhiyun     bool show_debug;
78*4882a593Smuzhiyun     bool show_help;
79*4882a593Smuzhiyun     bool list_devices;
80*4882a593Smuzhiyun--
81*4882a593Smuzhiyun2.20.1
82*4882a593Smuzhiyun
83