pixelpump.hh (11168:f98eb2da15a4) pixelpump.hh (11897:bfddfbac3a1a)
1/*
1/*
2 * Copyright (c) 2015 ARM Limited
2 * Copyright (c) 2015, 2017 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated

--- 132 unchanged lines hidden (view full) ---

143 * <li>Horizontal Front Porch
144 * </ol>
145 */
146class BasePixelPump
147 : public EventManager, public Clocked,
148 public Serializable
149{
150 public:
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated

--- 132 unchanged lines hidden (view full) ---

143 * <li>Horizontal Front Porch
144 * </ol>
145 */
146class BasePixelPump
147 : public EventManager, public Clocked,
148 public Serializable
149{
150 public:
151 BasePixelPump(EventManager &em, ClockDomain &pxl_clk, unsigned pixel_chunk);
151 BasePixelPump(EventManager &em, ClockDomain &pxl_clk,
152 unsigned pixel_chunk);
152 virtual ~BasePixelPump();
153
154 void serialize(CheckpointOut &cp) const override;
155 void unserialize(CheckpointIn &cp) override;
156
157 public: // Public API
153 virtual ~BasePixelPump();
154
155 void serialize(CheckpointOut &cp) const override;
156 void unserialize(CheckpointIn &cp) override;
157
158 public: // Public API
158 /** Starting pushing pixels using the supplied display timings. */
159 void start(const DisplayTimings &timings);
159 /** Update frame size using display timing */
160 void updateTimings(const DisplayTimings &timings);
160
161
162 /** Render an entire frame in KVM execution mode */
163 void renderFrame();
164
165 /** Starting pushing pixels in timing mode */
166 void start();
167
161 /** Immediately stop pushing pixels */
162 void stop();
163
164 /** Get a constant reference of the current display timings */
165 const DisplayTimings &timings() const { return _timings; }
166
167 /** Is the pixel pump active and refreshing the display? */
168 bool active() const { return evBeginLine.active(); }

--- 111 unchanged lines hidden (view full) ---

280
281 bool suspended;
282 Tick relativeTick;
283 };
284
285 void beginLine();
286 void renderPixels();
287
168 /** Immediately stop pushing pixels */
169 void stop();
170
171 /** Get a constant reference of the current display timings */
172 const DisplayTimings &timings() const { return _timings; }
173
174 /** Is the pixel pump active and refreshing the display? */
175 bool active() const { return evBeginLine.active(); }

--- 111 unchanged lines hidden (view full) ---

287
288 bool suspended;
289 Tick relativeTick;
290 };
291
292 void beginLine();
293 void renderPixels();
294
295 /** Fast and event-free line rendering function */
296 void renderLine();
297
288 /** Convenience vector when doing operations on all events */
289 std::vector<PixelEvent *> pixelEvents;
290
291 PixelEvent evVSyncBegin;
292 PixelEvent evVSyncEnd;
293 PixelEvent evHSyncBegin;
294 PixelEvent evHSyncEnd;
295 PixelEvent evBeginLine;

--- 17 unchanged lines hidden ---
298 /** Convenience vector when doing operations on all events */
299 std::vector<PixelEvent *> pixelEvents;
300
301 PixelEvent evVSyncBegin;
302 PixelEvent evVSyncEnd;
303 PixelEvent evHSyncBegin;
304 PixelEvent evHSyncEnd;
305 PixelEvent evBeginLine;

--- 17 unchanged lines hidden ---