diff -r f0451ad8fd69 -r b70e024130f7 src/base/framebuffer.hh --- a/src/base/framebuffer.hh Mon Jun 08 18:08:39 2015 +0100 +++ b/src/base/framebuffer.hh Mon Jun 08 18:08:47 2015 +0100 @@ -43,9 +43,14 @@ #include #include +#include #include +#include "base/compiler.hh" +#include "base/cprintf.hh" +#include "base/str.hh" #include "base/types.hh" +#include "sim/serialize.hh" /** * Internal gem5 representation of a Pixel. @@ -73,7 +78,6 @@ lhs.padding == rhs.padding; } - /** * Configurable RGB pixel converter. * @@ -208,6 +212,24 @@ static const PixelConverter rgb565_be; }; +inline bool +to_number(const std::string &value, Pixel &retval) +{ + uint32_t num; + if (!to_number(value, num)) + return false; + + retval = PixelConverter::rgba8888_le.toPixel(num); + return true; +} + +inline std::ostream & +operator<<(std::ostream &os, const Pixel &pxl) +{ + os << csprintf("0x%.08x", PixelConverter::rgba8888_le.fromPixel(pxl)); + return os; +} + /** * Internal gem5 representation of a frame buffer * @@ -219,7 +241,7 @@ * corner. The backing store is a linear vector of Pixels ordered left * to right starting in the upper left corner. */ -class FrameBuffer +class FrameBuffer : public Serializable { public: /** @@ -234,6 +256,9 @@ virtual ~FrameBuffer(); + void serialize(CheckpointOut &cp) const M5_ATTR_OVERRIDE; + void unserialize(CheckpointIn &cp) M5_ATTR_OVERRIDE; + /** * Resize the frame buffer. * diff -r f0451ad8fd69 -r b70e024130f7 src/base/framebuffer.cc --- a/src/base/framebuffer.cc Mon Jun 08 18:08:39 2015 +0100 +++ b/src/base/framebuffer.cc Mon Jun 08 18:08:47 2015 +0100 @@ -122,6 +122,23 @@ { } + +void +FrameBuffer::serialize(CheckpointOut &cp) const +{ + SERIALIZE_SCALAR(_width); + SERIALIZE_SCALAR(_height); + SERIALIZE_CONTAINER(pixels); +} + +void +FrameBuffer::unserialize(CheckpointIn &cp) +{ + UNSERIALIZE_SCALAR(_width); + UNSERIALIZE_SCALAR(_height); + UNSERIALIZE_CONTAINER(pixels); +} + void FrameBuffer::resize(unsigned width, unsigned height) { diff -r f0451ad8fd69 -r b70e024130f7 src/sim/serialize.cc --- a/src/sim/serialize.cc Mon Jun 08 18:08:39 2015 +0100 +++ b/src/sim/serialize.cc Mon Jun 08 18:08:47 2015 +0100 @@ -55,6 +55,7 @@ #include #include +#include "base/framebuffer.hh" #include "base/inifile.hh" #include "base/misc.hh" #include "base/output.hh" @@ -418,6 +419,7 @@ INSTANTIATE_PARAM_TEMPLATES(float) INSTANTIATE_PARAM_TEMPLATES(double) INSTANTIATE_PARAM_TEMPLATES(string) +INSTANTIATE_PARAM_TEMPLATES(Pixel) /////////////////////////////