diff options
author | Tomi Valkeinen | 2017-09-04 07:37:46 -0500 |
---|---|---|
committer | Tomi Valkeinen | 2017-09-04 07:43:25 -0500 |
commit | d6300fcfb0bc420ff30a6c8f44f9b5fe862cdb3d (patch) | |
tree | c1adef07dbeb4839ce75169bcb2f2cf046cf0e08 | |
parent | 7eeef88eec86a156ecccac510a1b66d60483f395 (diff) | |
download | external-libkmsxx-d6300fcfb0bc420ff30a6c8f44f9b5fe862cdb3d.tar.gz external-libkmsxx-d6300fcfb0bc420ff30a6c8f44f9b5fe862cdb3d.tar.xz external-libkmsxx-d6300fcfb0bc420ff30a6c8f44f9b5fe862cdb3d.zip |
kmstest: fix --sync mode
DRM sends page flips for each crtc in a commit. kmstest expected to get
a single flip event for a single commit, which caused --sync not to work
with two displays.
Fix this by making kmstest skip the first flip event.
-rw-r--r-- | utils/kmstest.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/utils/kmstest.cpp b/utils/kmstest.cpp index f9486a4..ba7d790 100644 --- a/utils/kmstest.cpp +++ b/utils/kmstest.cpp | |||
@@ -851,6 +851,13 @@ public: | |||
851 | private: | 851 | private: |
852 | void handle_page_flip(uint32_t frame, double time) | 852 | void handle_page_flip(uint32_t frame, double time) |
853 | { | 853 | { |
854 | /* | ||
855 | * We get flip event for each crtc in this flipstate. We can commit the next frames | ||
856 | * only after we've gotten the flip event for all crtcs | ||
857 | */ | ||
858 | if (++m_flip_count < m_outputs.size()) | ||
859 | return; | ||
860 | |||
854 | m_frame_num++; | 861 | m_frame_num++; |
855 | if (s_max_flips && m_frame_num >= s_max_flips) | 862 | if (s_max_flips && m_frame_num >= s_max_flips) |
856 | max_flips_reached = true; | 863 | max_flips_reached = true; |
@@ -942,6 +949,8 @@ private: | |||
942 | 949 | ||
943 | void queue_next() | 950 | void queue_next() |
944 | { | 951 | { |
952 | m_flip_count = 0; | ||
953 | |||
945 | if (m_card.has_atomic()) { | 954 | if (m_card.has_atomic()) { |
946 | AtomicReq req(m_card); | 955 | AtomicReq req(m_card); |
947 | 956 | ||
@@ -961,6 +970,7 @@ private: | |||
961 | string m_name; | 970 | string m_name; |
962 | vector<const OutputInfo*> m_outputs; | 971 | vector<const OutputInfo*> m_outputs; |
963 | unsigned m_frame_num; | 972 | unsigned m_frame_num; |
973 | unsigned m_flip_count; | ||
964 | 974 | ||
965 | chrono::steady_clock::time_point m_prev_print; | 975 | chrono::steady_clock::time_point m_prev_print; |
966 | chrono::steady_clock::time_point m_prev_frame; | 976 | chrono::steady_clock::time_point m_prev_frame; |