gem5 v24.0.0.0
Loading...
Searching...
No Matches
gem5::HDLcd::PixelPump Class Reference

#include <hdlcd.hh>

Inheritance diagram for gem5::HDLcd::PixelPump:
gem5::BasePixelPump gem5::EventManager gem5::Clocked gem5::Serializable

Public Member Functions

 PixelPump (HDLcd &p, ClockDomain &pxl_clk, unsigned pixel_chunk)
 
void dumpSettings ()
 
- Public Member Functions inherited from gem5::BasePixelPump
 BasePixelPump (EventManager &em, ClockDomain &pxl_clk, unsigned pixel_chunk)
 
virtual ~BasePixelPump ()
 
void serialize (CheckpointOut &cp) const override
 Serialize an object.
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object.
 
void updateTimings (const DisplayTimings &timings)
 Update frame size using display timing.
 
void renderFrame ()
 Render an entire frame in non-caching mode.
 
void start ()
 Starting pushing pixels in timing mode.
 
void stop ()
 Immediately stop pushing pixels.
 
const DisplayTimingstimings () const
 Get a constant reference of the current display timings.
 
bool active () const
 Is the pixel pump active and refreshing the display?
 
bool underrun () const
 Did a buffer underrun occur within this refresh interval?
 
bool visibleLine () const
 Is the current line within the visible range?
 
unsigned posX () const
 Current pixel position within the visible area.
 
unsigned posY () const
 Current pixel position within the visible area.
 
- Public Member Functions inherited from gem5::EventManager
EventQueueeventQueue () const
 
void schedule (Event &event, Tick when)
 
void deschedule (Event &event)
 
void reschedule (Event &event, Tick when, bool always=false)
 
void schedule (Event *event, Tick when)
 
void deschedule (Event *event)
 
void reschedule (Event *event, Tick when, bool always=false)
 
void wakeupEventQueue (Tick when=(Tick) -1)
 This function is not needed by the usual gem5 event loop but may be necessary in derived EventQueues which host gem5 on other schedulers.
 
void setCurTick (Tick newVal)
 
 EventManager (EventManager &em)
 Event manger manages events in the event queue.
 
 EventManager (EventManager *em)
 
 EventManager (EventQueue *eq)
 
- Public Member Functions inherited from gem5::Clocked
void updateClockPeriod ()
 Update the tick to the current tick.
 
Tick clockEdge (Cycles cycles=Cycles(0)) const
 Determine the tick when a cycle begins, by default the current one, but the argument also enables the caller to determine a future cycle.
 
Cycles curCycle () const
 Determine the current cycle, corresponding to a tick aligned to a clock edge.
 
Tick nextCycle () const
 Based on the clock of the object, determine the start tick of the first cycle that is at least one cycle in the future.
 
uint64_t frequency () const
 
Tick clockPeriod () const
 
double voltage () const
 
Cycles ticksToCycles (Tick t) const
 
Tick cyclesToTicks (Cycles c) const
 
- Public Member Functions inherited from gem5::Serializable
 Serializable ()
 
virtual ~Serializable ()
 
void serializeSection (CheckpointOut &cp, const char *name) const
 Serialize an object into a new section.
 
void serializeSection (CheckpointOut &cp, const std::string &name) const
 
void unserializeSection (CheckpointIn &cp, const char *name)
 Unserialize an a child object.
 
void unserializeSection (CheckpointIn &cp, const std::string &name)
 

Protected Member Functions

bool nextPixel (Pixel &p) override
 Get the next pixel from the scan line buffer.
 
size_t nextLine (std::vector< Pixel >::iterator pixel_it, size_t line_length) override
 Get the next line of pixels directly from memory.
 
void onVSyncBegin () override
 First pixel clock of the first VSync line.
 
void onVSyncEnd () override
 Callback on the first pixel of the line after the end VSync region (typically the first pixel of the vertical back porch).
 
void onUnderrun (unsigned x, unsigned y) override
 Buffer underrun occurred on a frame.
 
void onFrameDone () override
 Finished displaying the visible region of a frame.
 
- Protected Member Functions inherited from gem5::BasePixelPump
virtual void onHSyncBegin ()
 Start of the HSync region.
 
virtual void onHSyncEnd ()
 Start of the first pixel after the HSync region.
 
- Protected Member Functions inherited from gem5::Clocked
 Clocked (ClockDomain &clk_domain)
 Create a clocked object and set the clock domain based on the parameters.
 
 Clocked (Clocked &)=delete
 
Clockedoperator= (Clocked &)=delete
 
virtual ~Clocked ()
 Virtual destructor due to inheritance.
 
void resetClock () const
 Reset the object's clock using the current global tick value.
 
virtual void clockPeriodUpdated ()
 A hook subclasses can implement so they can do any extra work that's needed when the clock rate is changed.
 

Protected Attributes

HDLcdparent
 
- Protected Attributes inherited from gem5::EventManager
EventQueueeventq
 A pointer to this object's event queue.
 

Additional Inherited Members

- Static Public Member Functions inherited from gem5::Serializable
static const std::string & currentSection ()
 Gets the fully-qualified name of the active section.
 
static void generateCheckpointOut (const std::string &cpt_dir, std::ofstream &outstream)
 Generate a checkpoint file so that the serialization can be routed to it.
 
- Public Attributes inherited from gem5::BasePixelPump
FrameBuffer fb
 Output frame buffer.
 

Detailed Description

Definition at line 333 of file hdlcd.hh.

Constructor & Destructor Documentation

◆ PixelPump()

gem5::HDLcd::PixelPump::PixelPump ( HDLcd & p,
ClockDomain & pxl_clk,
unsigned pixel_chunk )
inline

Definition at line 336 of file hdlcd.hh.

Member Function Documentation

◆ dumpSettings()

void gem5::HDLcd::PixelPump::dumpSettings ( )

Definition at line 678 of file hdlcd.cc.

References inform, and gem5::ArmISA::t.

Referenced by gem5::HDLcd::pxlFrameDone().

◆ nextLine()

size_t gem5::HDLcd::PixelPump::nextLine ( std::vector< Pixel >::iterator ps,
size_t line_length )
inlineoverrideprotectedvirtual

Get the next line of pixels directly from memory.

This is for use from the renderFrame which is called in non-caching mode.

The default implementation falls back to calling nextPixel over and over, but a more efficient implementation could retrieve the entire line of pixels all at once using fewer access to memory which bypass any intermediate structures like an incoming FIFO.

Parameters
psA vector iterator to store retrieved pixels into.
line_lengthThe number of pixels being requested.
Returns
The number of pixels actually retrieved.

Reimplemented from gem5::BasePixelPump.

Definition at line 345 of file hdlcd.hh.

References gem5::HDLcd::lineNext(), and parent.

◆ nextPixel()

bool gem5::HDLcd::PixelPump::nextPixel ( Pixel & p)
inlineoverrideprotectedvirtual

Get the next pixel from the scan line buffer.

Parameters
pOutput pixel value, undefined on underrun
Returns
true on success, false on buffer underrun

Implements gem5::BasePixelPump.

Definition at line 343 of file hdlcd.hh.

References gem5::MipsISA::p, parent, and gem5::HDLcd::pxlNext().

◆ onFrameDone()

void gem5::HDLcd::PixelPump::onFrameDone ( )
inlineoverrideprotectedvirtual

Finished displaying the visible region of a frame.

Reimplemented from gem5::BasePixelPump.

Definition at line 360 of file hdlcd.hh.

References parent, and gem5::HDLcd::pxlFrameDone().

◆ onUnderrun()

void gem5::HDLcd::PixelPump::onUnderrun ( unsigned x,
unsigned y )
inlineoverrideprotectedvirtual

Buffer underrun occurred on a frame.

This method is called once if there is buffer underrun while refreshing the display. The underrun state is reset on the next refresh.

Parameters
xCoordinate within the visible region.
yCoordinate within the visible region.

Reimplemented from gem5::BasePixelPump.

Definition at line 355 of file hdlcd.hh.

References parent, and gem5::HDLcd::pxlUnderrun().

◆ onVSyncBegin()

void gem5::HDLcd::PixelPump::onVSyncBegin ( )
inlineoverrideprotectedvirtual

First pixel clock of the first VSync line.

Reimplemented from gem5::BasePixelPump.

Definition at line 351 of file hdlcd.hh.

References parent, and gem5::HDLcd::pxlVSyncBegin().

◆ onVSyncEnd()

void gem5::HDLcd::PixelPump::onVSyncEnd ( )
inlineoverrideprotectedvirtual

Callback on the first pixel of the line after the end VSync region (typically the first pixel of the vertical back porch).

Reimplemented from gem5::BasePixelPump.

Definition at line 352 of file hdlcd.hh.

References parent, and gem5::HDLcd::pxlVSyncEnd().

Member Data Documentation

◆ parent

HDLcd& gem5::HDLcd::PixelPump::parent
protected

Definition at line 363 of file hdlcd.hh.

Referenced by nextLine(), nextPixel(), onFrameDone(), onUnderrun(), onVSyncBegin(), and onVSyncEnd().


The documentation for this class was generated from the following files:

Generated on Tue Jun 18 2024 16:24:12 for gem5 by doxygen 1.11.0