summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDam Sunwoo <dam.sunwoo@arm.com>2013-10-17 10:20:45 -0500
committerDam Sunwoo <dam.sunwoo@arm.com>2013-10-17 10:20:45 -0500
commitad614bf24da852ecd28c03a5bcb72ecd24b37238 (patch)
tree385b6dfcc6bc859ba34f704933232ee2c61bb922
parent1746eb4a1149a5eace7afb0dc39748b0a7a1a7eb (diff)
downloadgem5-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.py3
-rw-r--r--src/dev/arm/hdlcd.cc17
-rw-r--r--src/dev/arm/hdlcd.hh2
-rw-r--r--src/dev/arm/pl111.cc18
-rw-r--r--src/dev/arm/pl111.hh2
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;