~ubuntu-branches/ubuntu/wily/mir/wily-proposed

« back to all changes in this revision

Viewing changes to benchmarks/frame-uniformity/vsync_simulating_graphics_platform.cpp

  • Committer: Package Import Robot
  • Author(s): CI Train Bot
  • Date: 2015-05-12 13:12:55 UTC
  • mto: This revision was merged to the branch mainline in revision 96.
  • Revision ID: package-import@ubuntu.com-20150512131255-y7z12i8n4pbvo70x
Tags: upstream-0.13.0+15.10.20150512
ImportĀ upstreamĀ versionĀ 0.13.0+15.10.20150512

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
namespace
37
37
{
38
38
 
39
 
struct StubDisplayBuffer : mtd::StubDisplayBuffer
 
39
struct StubDisplaySyncGroup : mg::DisplaySyncGroup
40
40
{
41
 
    StubDisplayBuffer(geom::Size output_size, int vsync_rate_in_hz)
42
 
        : mtd::StubDisplayBuffer({{0, 0}, output_size}),
43
 
          vsync_rate_in_hz(vsync_rate_in_hz),
44
 
          last_sync(std::chrono::high_resolution_clock::now())
45
 
    {
46
 
    }
47
 
    
48
 
    void gl_swap_buffers() override
49
 
    {
50
 
    }
51
 
 
52
 
    void flip() override
 
41
    StubDisplaySyncGroup(geom::Size output_size, int vsync_rate_in_hz) :
 
42
        vsync_rate_in_hz(vsync_rate_in_hz),
 
43
        last_sync(std::chrono::high_resolution_clock::now()),
 
44
        buffer({{0, 0}, output_size})
 
45
    {
 
46
    }
 
47
 
 
48
    void for_each_display_buffer(std::function<void(mg::DisplayBuffer&)> const& exec) override
 
49
    {
 
50
        exec(buffer);
 
51
    }
 
52
 
 
53
    void post() override
53
54
    {
54
55
        auto now = std::chrono::high_resolution_clock::now();
55
56
        auto next_sync = last_sync + std::chrono::seconds(1) / vsync_rate_in_hz;
63
64
    double const vsync_rate_in_hz;
64
65
 
65
66
    std::chrono::high_resolution_clock::time_point last_sync;
 
67
 
 
68
    mtd::StubDisplayBuffer buffer;
66
69
};
67
70
 
68
71
struct StubDisplay : public mtd::StubDisplay
69
72
{
70
 
    StubDisplay(geom::Size output_size, int vsync_rate_in_hz)
71
 
        : mtd::StubDisplay({{{0,0}, output_size}}),
72
 
          buffer(output_size, vsync_rate_in_hz)
 
73
    StubDisplay(geom::Size output_size, int vsync_rate_in_hz) :
 
74
        mtd::StubDisplay({{{0,0}, output_size}}),
 
75
        group(output_size, vsync_rate_in_hz)
73
76
    {
74
77
    }
75
78
    
76
 
    void for_each_display_buffer(std::function<void(mg::DisplayBuffer&)> const& exec) override
 
79
    void for_each_display_sync_group(std::function<void(mg::DisplaySyncGroup&)> const& exec) override
77
80
    {
78
 
        exec(buffer);
 
81
        exec(group);
79
82
    }
80
83
 
81
 
    StubDisplayBuffer buffer;
 
84
    StubDisplaySyncGroup group;
82
85
};
83
86
 
84
87
}