gem5/src/base
Andreas Sandberg db5c9a5f90 base: Redesign internal frame buffer handling
Currently, frame buffer handling in gem5 is quite ad hoc. In practice,
we pass around naked pointers to raw pixel data and expect consumers
to convert frame buffers using the (broken) VideoConverter.

This changeset completely redesigns the way we handle frame buffers
internally. In summary, it fixes several color conversion bugs, adds
support for more color formats (e.g., big endian), and makes the code
base easier to follow.

In the new world, gem5 always represents pixel data using the Pixel
struct when pixels need to be passed between different classes (e.g.,
a display controller and the VNC server). Producers of entire frames
(e.g., display controllers) should use the FrameBuffer class to
represent a frame.

Frame producers are expected to create one instance of the FrameBuffer
class in their constructors and register it with its consumers
once. Consumers are expected to check the dimensions of the frame
buffer when they consume it.

Conversion between the external representation and the internal
representation is supported for all common "true color" RGB formats of
up to 32-bit color depth. The external pixel representation is
expected to be between 1 and 4 bytes in either big endian or little
endian. Color channels are assumed to be contiguous ranges of bits
within each pixel word. The external pixel value is scaled to an 8-bit
internal representation using a floating multiplication to map it to
the entire 8-bit range.
2015-05-23 13:37:03 +01:00
..
loader arch, base, dev, kern, sym: FreeBSD support 2015-04-29 22:35:23 -05:00
stats base: Clean up redundant string functions and use C++11 2014-09-20 17:17:49 -04:00
vnc base: Redesign internal frame buffer handling 2015-05-23 13:37:03 +01:00
addr_range.hh base: add an accessor and operators ==,!= to address ranges 2015-02-03 14:25:58 -05:00
addr_range_map.hh mem: Add interleaving bits to the address ranges 2013-01-07 13:05:38 -05:00
atomicio.cc types: clean up types, especially signed vs unsigned 2009-06-04 23:21:12 -07:00
atomicio.hh atomicio: provide atomic read and write functions. 2008-09-19 09:42:31 -07:00
barrier.hh sim: simulate with multiple threads and event queues 2013-11-25 11:21:00 -06:00
bigint.cc build: fix compile problems pointed out by gcc 4.4 2009-11-04 16:57:01 -08:00
bigint.hh misc: Another round of static analysis fixups 2014-11-24 09:03:38 -05:00
bitfield.hh arm: Fixes based on UBSan and static analysis 2014-11-14 03:53:51 -05:00
bitmap.cc base: Redesign internal frame buffer handling 2015-05-23 13:37:03 +01:00
bitmap.hh base: Redesign internal frame buffer handling 2015-05-23 13:37:03 +01:00
bitunion.hh base: Fix assigning between identical bitfields. 2015-01-07 00:31:46 -08:00
callback.cc gcc: Clean-up of non-C++0x compliant code, first steps 2012-03-19 06:36:09 -04:00
callback.hh callback: Make helper functions that create callback objects for you 2010-04-18 13:23:25 -07:00
cast.hh safe_cast: add a new cast function for casts that should always succeed. 2008-11-10 11:51:17 -08:00
chunk_generator.hh base: add new ChunkGenerator method to identify last chunk 2015-04-22 07:51:27 -07:00
circlebuf.cc gcc: Add extra parens to quell warnings. 2008-09-27 21:03:49 -07:00
circlebuf.hh Updated Authors from bk prs info 2006-05-31 19:26:56 -04:00
compiler.hh base: Add compiler macros to add deprecation warnings 2015-02-11 10:23:24 -05:00
condcodes.hh Condition Codes: Fix the findParity function. 2007-09-25 20:26:10 -07:00
cp_annotate.cc base: Transition CP annotate to use shared_ptr 2014-10-16 05:49:47 -04:00
cp_annotate.hh base: Transition CP annotate to use shared_ptr 2014-10-16 05:49:47 -04:00
CPA.py sim: Include object header files in SWIG interfaces 2012-11-02 11:32:01 -05:00
cprintf.cc base: Fix a few incorrectly handled print format cases 2012-11-02 11:32:00 -05:00
cprintf.hh base: Replace the internal varargs stuff with C++11 constructs 2014-08-26 10:13:45 -04:00
cprintf_formats.hh misc: Restore ostream flags where needed 2014-09-19 10:35:09 -04:00
date.cc Updated Authors from bk prs info 2006-05-31 19:26:56 -04:00
debug.cc scons: Add warning for missing declarations 2013-02-19 05:56:07 -05:00
debug.hh base: Do not dereference NULL in CompoundFlag creation 2015-02-11 10:23:23 -05:00
fenv.c includes: sort all includes 2011-04-15 10:44:06 -07:00
fenv.hh create base/fenv.c to standerdize fenv across platforms. It's a c file and not a cpp file because c99 2007-04-21 17:50:47 -04:00
flags.hh flags: Change naming of functions to be clearer 2008-12-06 14:18:18 -08:00
framebuffer.cc base: Redesign internal frame buffer handling 2015-05-23 13:37:03 +01:00
framebuffer.hh base: Redesign internal frame buffer handling 2015-05-23 13:37:03 +01:00
hashmap.hh scons: Enable build on OSX 2013-09-04 13:22:54 -04:00
hostinfo.cc scons: Add warning for missing declarations 2013-02-19 05:56:07 -05:00
hostinfo.hh scons: Add warning for missing declarations 2013-02-19 05:56:07 -05:00
inet.cc base: fix operator== for comparing EthAddr objects 2014-07-09 09:28:15 -04:00
inet.hh dev: Use shared_ptr for EthPacketData 2014-10-16 05:49:46 -04:00
inifile.cc base: Add getSectionNames to IniFile 2014-09-20 17:17:47 -04:00
inifile.hh base: Add getSectionNames to IniFile 2014-09-20 17:17:47 -04:00
intmath.cc Updated Authors from bk prs info 2006-05-31 19:26:56 -04:00
intmath.hh base: Add const to intmath and be more flexible with typing 2014-08-26 10:14:32 -04:00
match.cc style: eliminate equality tests with true and false 2014-05-31 18:00:23 -07:00
match.hh Updated Authors from bk prs info 2006-05-31 19:26:56 -04:00
misc.cc base: Replace the internal varargs stuff with C++11 constructs 2014-08-26 10:13:45 -04:00
misc.hh base: misc: Add missing header file. 2014-10-11 15:02:22 -05:00
output.cc arch, base, dev, kern, sym: FreeBSD support 2015-04-29 22:35:23 -05:00
output.hh mem: Add tracing support in the communication monitor 2013-01-07 13:05:37 -05:00
pollevent.cc sim: EventQueue wakeup on events scheduled outside the event loop 2014-10-16 05:49:53 -04:00
pollevent.hh base: Clean up signal handling 2013-11-29 14:35:36 +01:00
printable.hh Additional comments and helper functions for PrintReq. 2008-01-02 13:46:22 -08:00
random.cc base: Use STL C++11 random number generation 2014-09-03 07:42:55 -04:00
random.hh base: Use STL C++11 random number generation 2014-09-03 07:42:55 -04:00
refcnt.hh refcnt: Update doxygen comments 2011-04-13 09:32:19 -07:00
remote_gdb.cc misc: Generalize GDB single stepping. 2014-12-05 22:37:03 -08:00
remote_gdb.hh misc: Generalize GDB single stepping. 2014-12-05 22:37:03 -08:00
SConscript base: Redesign internal frame buffer handling 2015-05-23 13:37:03 +01:00
socket.cc misc: Fix a bunch of minor issues identified by static analysis 2014-09-27 09:08:29 -04:00
socket.hh sockets: Add a function to disable all listening sockets. 2008-08-03 18:19:55 -07:00
statistics.cc base: Fix for stats node on gcc < 4.6.3 2014-10-20 18:03:54 -04:00
statistics.hh base: Fix for stats node on gcc < 4.6.3 2014-10-20 18:03:54 -04:00
stl_helpers.hh clang: Enable compiling gem5 using clang 2.9 and 3.0 2012-01-31 12:05:52 -05:00
str.cc base: Clean up redundant string functions and use C++11 2014-09-20 17:17:49 -04:00
str.hh base: Clean up redundant string functions and use C++11 2014-09-20 17:17:49 -04:00
time.cc base: Revert 9277177eccff and use getenv/setenv for UTC time 2014-11-12 09:05:20 -05:00
time.hh ARM: Add RTC device for ARM platforms. 2012-03-01 17:26:31 -06:00
trace.cc base: Reimplement the DPRINTF mechanism in a Logger class 2014-10-16 05:49:53 -04:00
trace.hh base: Reimplement the DPRINTF mechanism in a Logger class 2014-10-16 05:49:53 -04:00
trie.hh base: Include cassert in trie.hh. 2012-04-22 05:20:44 -07:00
types.cc ruby: replace Time with Cycles in Message class 2013-02-10 21:26:24 -06:00
types.hh base: Redesign internal frame buffer handling 2015-05-23 13:37:03 +01:00