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.
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -474,6 +474,8 @@ class HDLcd: public AmbaDmaDevice
|
||||
std::vector<DmaDoneEvent *> dmaDoneEventFree;
|
||||
/**@}*/
|
||||
|
||||
bool enableCapture;
|
||||
|
||||
public:
|
||||
typedef HDLcdParams Params;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user