dev: Add support for single-pass scan out in the PixelPump
authorSudhanshu Jha <sudhanshu.jha@arm.com>
Fri, 24 Feb 2017 13:34:22 +0000 (13:34 +0000)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Tue, 7 Mar 2017 11:14:28 +0000 (11:14 +0000)
commit9dd54d10ab63c395b84bff31b5ff94b35c44e18f
tree80c7755669f3db6651b424ba5e2fae7f687b5b56
parent82a8230aa761e193a91ade0fa3c109a5c0f08aed
dev: Add support for single-pass scan out in the PixelPump

Add a helper function to scan out an entire frame in one time
step. This requires the public PixelPump to be changed somewhat to
separate timing updates from general PixelPump control. Instead of
calling PixelPump::start(timings), timings now need to be updated
using a separate call to PixelPump::updateTimings(timings) before
calling PixelPump::start().

Display controllers that don't need accurate timing (e.g., in KVM
mode), can use the new PixelPump::renderFrame() API to render an
entire frame in one step. This call results in the same callbacks
(e.g., calls to nextPixel()) as the timing calls, but they all happen
in immediately. Unlike the timing counterpart, renderFrame() doesn't
support buffer underruns and will panic if nextPixle() indicates an
underrun.

Change-Id: I76c84db04249b02d4207c5281d82aa693d0881be
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2241
Reviewed-by: Rahul Thakur <rjthakur@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
src/dev/arm/hdlcd.cc
src/dev/pixelpump.cc
src/dev/pixelpump.hh