diff options
author | Dam Sunwoo <dam.sunwoo@arm.com> | 2013-10-17 10:20:45 -0500 |
---|---|---|
committer | Dam Sunwoo <dam.sunwoo@arm.com> | 2013-10-17 10:20:45 -0500 |
commit | ad614bf24da852ecd28c03a5bcb72ecd24b37238 (patch) | |
tree | 385b6dfcc6bc859ba34f704933232ee2c61bb922 | |
parent | 1746eb4a1149a5eace7afb0dc39748b0a7a1a7eb (diff) | |
download | gem5-ad614bf24da852ecd28c03a5bcb72ecd24b37238.tar.xz |
dev: Add option to disable framebuffer .bmp dump in run folder
There is an option to enable/disable all framebuffer dumps, but the
last frame always gets dumped in the run folder with no other way to
disable it. These files can add up very quickly running many experiments.
This patch adds an option to disable them. The default behavior
remains unchanged.
-rw-r--r-- | src/dev/arm/RealView.py | 3 | ||||
-rw-r--r-- | src/dev/arm/hdlcd.cc | 17 | ||||
-rw-r--r-- | src/dev/arm/hdlcd.hh | 2 | ||||
-rw-r--r-- | src/dev/arm/pl111.cc | 18 | ||||
-rw-r--r-- | src/dev/arm/pl111.hh | 2 |
5 files changed, 27 insertions, 15 deletions
diff --git a/src/dev/arm/RealView.py b/src/dev/arm/RealView.py index 167108850..b3c14580e 100644 --- a/src/dev/arm/RealView.py +++ b/src/dev/arm/RealView.py @@ -139,6 +139,8 @@ class Pl111(AmbaDmaDevice): pixel_clock = Param.Clock('24MHz', "Pixel clock") vnc = Param.VncInput(Parent.any, "Vnc server for remote frame buffer display") amba_id = 0x00141111 + enable_capture = Param.Bool(True, "capture frame to system.framebuffer.bmp") + class HDLcd(AmbaDmaDevice): type = 'HDLcd' @@ -149,6 +151,7 @@ class HDLcd(AmbaDmaDevice): vnc = Param.VncInput(Parent.any, "Vnc server for remote frame buffer " "display") amba_id = 0x00141000 + enable_capture = Param.Bool(True, "capture frame to system.framebuffer.bmp") class RealView(Platform): type = 'RealView' diff --git a/src/dev/arm/hdlcd.cc b/src/dev/arm/hdlcd.cc index c5daebc9b..349b246c2 100644 --- a/src/dev/arm/hdlcd.cc +++ b/src/dev/arm/hdlcd.cc @@ -72,7 +72,8 @@ HDLcd::HDLcd(const Params *p) startFrameEvent(this), endFrameEvent(this), renderPixelEvent(this), fillPixelBufferEvent(this), intEvent(this), dmaDoneEventAll(MAX_OUTSTANDING_DMA_REQ_CAPACITY, this), - dmaDoneEventFree(MAX_OUTSTANDING_DMA_REQ_CAPACITY) + dmaDoneEventFree(MAX_OUTSTANDING_DMA_REQ_CAPACITY), + enableCapture(p->enable_capture) { pioSize = 0xFFFF; @@ -560,13 +561,15 @@ HDLcd::endFrame() { if (vnc) vnc->setDirty(); - if (!pic) - pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), true); + if (enableCapture) { + if (!pic) + pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), true); - assert(bmp); - assert(pic); - pic->seekp(0); - bmp->write(pic); + assert(bmp); + assert(pic); + pic->seekp(0); + bmp->write(pic); + } // start the next frame frameUnderway = false; diff --git a/src/dev/arm/hdlcd.hh b/src/dev/arm/hdlcd.hh index ab4df5ed6..ba22cc163 100644 --- a/src/dev/arm/hdlcd.hh +++ b/src/dev/arm/hdlcd.hh @@ -474,6 +474,8 @@ class HDLcd: public AmbaDmaDevice std::vector<DmaDoneEvent *> dmaDoneEventFree; /**@}*/ + bool enableCapture; + public: typedef HDLcdParams Params; diff --git a/src/dev/arm/pl111.cc b/src/dev/arm/pl111.cc index c3d684f29..6abc9b4ac 100644 --- a/src/dev/arm/pl111.cc +++ b/src/dev/arm/pl111.cc @@ -69,7 +69,7 @@ Pl111::Pl111(const Params *p) waterMark(0), dmaPendingNum(0), readEvent(this), fillFifoEvent(this), dmaDoneEventAll(maxOutstandingDma, this), dmaDoneEventFree(maxOutstandingDma), - intEvent(this) + intEvent(this), enableCapture(p->enable_capture) { pioSize = 0xFFFF; @@ -497,15 +497,17 @@ Pl111::dmaDone() if (vnc) vnc->setDirty(); - DPRINTF(PL111, "-- write out frame buffer into bmp\n"); + if (enableCapture) { + DPRINTF(PL111, "-- write out frame buffer into bmp\n"); - if (!pic) - pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), true); + if (!pic) + pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), true); - assert(bmp); - assert(pic); - pic->seekp(0); - bmp->write(pic); + assert(bmp); + assert(pic); + pic->seekp(0); + bmp->write(pic); + } // schedule the next read based on when the last frame started // and the desired fps (i.e. maxFrameTime), we turn the diff --git a/src/dev/arm/pl111.hh b/src/dev/arm/pl111.hh index a99406715..603cf943f 100644 --- a/src/dev/arm/pl111.hh +++ b/src/dev/arm/pl111.hh @@ -348,6 +348,8 @@ class Pl111: public AmbaDmaDevice /** Wrapper to create an event out of the interrupt */ EventWrapper<Pl111, &Pl111::generateInterrupt> intEvent; + bool enableCapture; + public: typedef Pl111Params Params; |