diff options
Diffstat (limited to 'src/dev/arm/hdlcd.cc')
-rw-r--r-- | src/dev/arm/hdlcd.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/dev/arm/hdlcd.cc b/src/dev/arm/hdlcd.cc index 98f2a3d44..20dc7d44e 100644 --- a/src/dev/arm/hdlcd.cc +++ b/src/dev/arm/hdlcd.cc @@ -47,6 +47,7 @@ #include "debug/HDLcd.hh" #include "dev/arm/amba_device.hh" #include "dev/arm/base_gic.hh" +#include "enums/ImageFormat.hh" #include "mem/packet.hh" #include "mem/packet_access.hh" #include "params/HDLcd.hh" @@ -85,11 +86,13 @@ HDLcd::HDLcd(const HDLcdParams *p) virtRefreshEvent([this]{ virtRefresh(); }, name()), // Other - bmp(&pixelPump.fb), pic(NULL), conv(PixelConverter::rgba8888_le), + imgFormat(p->frame_format), pic(NULL), conv(PixelConverter::rgba8888_le), pixelPump(*this, *p->pxl_clk, p->pixel_chunk) { if (vnc) vnc->setFrameBuffer(&pixelPump.fb); + + imgWriter = createImgWriter(imgFormat, &pixelPump.fb); } HDLcd::~HDLcd() @@ -572,13 +575,14 @@ HDLcd::pxlFrameDone() if (enableCapture) { if (!pic) { pic = simout.create( - csprintf("%s.framebuffer.bmp", sys->name()), + csprintf("%s.framebuffer.%s", + sys->name(), imgWriter->getImgExtension()), true); } assert(pic); pic->stream()->seekp(0); - bmp.write(*pic->stream()); + imgWriter->write(*pic->stream()); } } |