arch,cpu,mem: Replace the mmmapped IPR mechanism with local accesses.
[gem5.git] / src / base / framebuffer.cc
index dc4c2e1c2c780251cbed774782258e4998f305bb..3fec3fffb98b2392b4ce35ae1b149d27917128dd 100644 (file)
  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Authors: Andreas Sandberg
  */
 
 #include "base/framebuffer.hh"
 
 #include <zlib.h>
 
-#include <cassert>
-
 #include "base/bitfield.hh"
 
-const PixelConverter PixelConverter::rgba8888_le(4, 0, 8, 16, 8, 8, 8);
-const PixelConverter PixelConverter::rgba8888_be(4, 0, 8, 16, 8, 8, 8,
-                                                 BigEndianByteOrder);
-const PixelConverter PixelConverter::rgb565_le(2,  0, 5, 11, 5, 6, 5);
-const PixelConverter PixelConverter::rgb565_be(2,  0, 5, 11, 5, 6, 5,
-                                               BigEndianByteOrder);
-
 const FrameBuffer FrameBuffer::dummy(320, 240);
 
-PixelConverter::PixelConverter(unsigned _length,
-                               unsigned ro, unsigned go, unsigned bo,
-                               unsigned rw, unsigned gw, unsigned bw,
-                               ByteOrder _byte_order)
-    : length(_length),
-      depth(rw + gw + bw),
-      byte_order(_byte_order),
-      ch_r(ro, rw),
-      ch_g(go, gw),
-      ch_b(bo, bw)
-{
-    assert(length > 1);
-}
-
-PixelConverter::Channel::Channel(unsigned _offset, unsigned width)
-    : offset(_offset),
-      mask(::mask(width)),
-      factor(255.0 / mask)
-{
-}
-
-uint32_t
-PixelConverter::readWord(const uint8_t *p) const
-{
-    uint32_t word(0);
-
-    if (byte_order == LittleEndianByteOrder) {
-        for (int i = 0; i < length; ++i)
-            word |= p[i] << (8 * i);
-    } else {
-        for (int i = 0; i < length; ++i)
-            word |= p[i] << (8 * (length - i - 1));
-    }
-
-    return word;
-}
-
-void
-PixelConverter::writeWord(uint8_t *p, uint32_t word) const
-{
-    if (byte_order == LittleEndianByteOrder) {
-        for (int i = 0; i < length; ++i)
-            p[i] = (word >> (8 * i)) & 0xFF;
-    } else {
-        for (int i = 0; i < length; ++i)
-            p[i] = (word >> (8 * (length - i - 1))) & 0xFF;
-    }
-}
-
-
-
-
 FrameBuffer::FrameBuffer(unsigned width, unsigned height)
     : pixels(width * height),
       _width(width), _height(height)
@@ -122,6 +59,23 @@ FrameBuffer::~FrameBuffer()
 {
 }
 
+
+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)
 {