diff options
author | Gabe Black <gabeblack@google.com> | 2017-12-04 20:22:43 -0800 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2017-12-06 01:14:52 +0000 |
commit | 7eb8d007a502d6c6d62eab590d71f6085aef78f9 (patch) | |
tree | 126343c64cd79fdababa821726a55213e751892c /src/base/framebuffer.cc | |
parent | 3017314d05695207e09e87b08ca5c3cbf182c646 (diff) | |
download | gem5-7eb8d007a502d6c6d62eab590d71f6085aef78f9.tar.xz |
base: Split out the pixel class in framebuffer.(cc|hh).
These are really two separate things. Also, while it's realitively
straightforward to write a unit test for the pixel conversion code, the
framebuffer object is serializable and brings in more dependencies.
Change-Id: If954caeb0bfedb1002cfb1a7a115a00c90d56d19
Reviewed-on: https://gem5-review.googlesource.com/6341
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/base/framebuffer.cc')
-rw-r--r-- | src/base/framebuffer.cc | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/src/base/framebuffer.cc b/src/base/framebuffer.cc index 73f724892..746327ac6 100644 --- a/src/base/framebuffer.cc +++ b/src/base/framebuffer.cc @@ -41,71 +41,10 @@ #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) |