ARM: pl111/LCD framebuffer checkpointing fix
Fixed check pointing of the framebuffer. Previously, the pixel size was not considered in determining the size of the buffer to checkpoint. This patch checkpoints the entire framebuffer instead of the first quarter.
This commit is contained in:
parent
c3551e82f7
commit
694a81e994
2 changed files with 4 additions and 3 deletions
|
@ -76,7 +76,6 @@ Pl111::Pl111(const Params *p)
|
|||
|
||||
pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), true);
|
||||
|
||||
const int buffer_size = LcdMaxWidth * LcdMaxHeight * sizeof(uint32_t);
|
||||
dmaBuffer = new uint8_t[buffer_size];
|
||||
|
||||
memset(lcdPalette, 0, sizeof(lcdPalette));
|
||||
|
@ -581,7 +580,7 @@ Pl111::serialize(std::ostream &os)
|
|||
SERIALIZE_SCALAR(width);
|
||||
SERIALIZE_SCALAR(bytesPerPixel);
|
||||
|
||||
SERIALIZE_ARRAY(dmaBuffer, height * width);
|
||||
SERIALIZE_ARRAY(dmaBuffer, buffer_size);
|
||||
SERIALIZE_SCALAR(startTime);
|
||||
SERIALIZE_SCALAR(startAddr);
|
||||
SERIALIZE_SCALAR(maxAddr);
|
||||
|
@ -683,7 +682,7 @@ Pl111::unserialize(Checkpoint *cp, const std::string §ion)
|
|||
UNSERIALIZE_SCALAR(width);
|
||||
UNSERIALIZE_SCALAR(bytesPerPixel);
|
||||
|
||||
UNSERIALIZE_ARRAY(dmaBuffer, height * width);
|
||||
UNSERIALIZE_ARRAY(dmaBuffer, buffer_size);
|
||||
UNSERIALIZE_SCALAR(startTime);
|
||||
UNSERIALIZE_SCALAR(startAddr);
|
||||
UNSERIALIZE_SCALAR(maxAddr);
|
||||
|
|
|
@ -96,6 +96,8 @@ class Pl111: public AmbaDmaDevice
|
|||
static const int dmaSize = 8; // 64 bits
|
||||
static const int maxOutstandingDma = 16; // 16 deep FIFO of 64 bits
|
||||
|
||||
static const int buffer_size = LcdMaxWidth * LcdMaxHeight * sizeof(uint32_t);
|
||||
|
||||
enum LcdMode {
|
||||
bpp1 = 0,
|
||||
bpp2,
|
||||
|
|
Loading…
Reference in a new issue