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'
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'
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;
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;
std::vector<DmaDoneEvent *> dmaDoneEventFree;
/**@}*/
+ bool enableCapture;
+
public:
typedef HDLcdParams Params;
waterMark(0), dmaPendingNum(0), readEvent(this), fillFifoEvent(this),
dmaDoneEventAll(maxOutstandingDma, this),
dmaDoneEventFree(maxOutstandingDma),
- intEvent(this)
+ intEvent(this), enableCapture(p->enable_capture)
{
pioSize = 0xFFFF;
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
/** Wrapper to create an event out of the interrupt */
EventWrapper<Pl111, &Pl111::generateInterrupt> intEvent;
+ bool enableCapture;
+
public:
typedef Pl111Params Params;