Modify framebuffer and NGA framebuffer to read screen size from board model dtb file. Optimise memory usuage of frame buffer
Add example minigui application with hooks to profiler (which writes results to S:\). Modified NGA framebuffer to run its own dfc queue at high priority
/*
* Render Engine for framebuffer devices
*
* Copyright (c) 2008 CodeSourcery
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* Vertical flip happens after rotation. */
enum fb_rotation
{
ROT_0 = 0,
ROT_90,
ROT_180,
ROT_270,
ROT_0_V,
ROT_90_V,
ROT_180_V,
ROT_270_V
};
enum fb_src_bpp_mode
{
BPP_SRC_1,
BPP_SRC_2,
BPP_SRC_4,
BPP_SRC_8,
BPP_SRC_15,
BPP_SRC_16,
BPP_SRC_24,
BPP_SRC_32
};
enum fb_byte_order
{
BO_LE,
BO_BE
};
enum fb_pixel_order
{
PO_LE,
PO_BE
};
enum fb_color_order
{
CO_BGR,
CO_RGB
};
struct render_data_t;
typedef struct render_data_t render_data;
/* constructor / destructor */
render_data *create_render_data(void);
void destroy_render_data(render_data *rd);
/* getters */
uint32_t get_cols(const render_data *rd);
uint32_t get_rows(const render_data *rd);
enum fb_rotation get_orientation(const render_data *rd);
void* get_fb_base_in_host(const render_data *rd);
#ifndef HOST_ONLY_DEFS
target_phys_addr_t get_fb_base_in_target(const render_data *rd);
#endif
uint32_t get_blank_mode(const render_data *rd);
enum fb_color_order get_color_order(const render_data *rd);
enum fb_byte_order get_byte_order(const render_data *rd);
enum fb_pixel_order get_pixel_order(const render_data *rd);
enum fb_src_bpp_mode get_src_bpp(const render_data *rd);
uint32_t get_row_pitch(const render_data *rd);
uint32_t get_palette_value(const render_data *rd, uint32_t n);
/* setters */
void set_cols(render_data *rd, uint32_t cols);
void set_rows(render_data *rd, uint32_t rows);
void set_orientation(render_data *rd, enum fb_rotation orientation);
void set_fb_base_from_host(render_data *rd, void* base);
#ifndef HOST_ONLY_DEFS
void set_fb_base_from_target(render_data *rd, target_phys_addr_t base);
#endif
void set_blank_mode(render_data *rd, int on_off);
void set_pixel_order(render_data *rd, enum fb_pixel_order pixel_order);
void set_byte_order(render_data *rd, enum fb_byte_order byte_order);
void set_color_order(render_data *rd, enum fb_color_order color_order);
void set_src_bpp(render_data *rd, enum fb_src_bpp_mode src_bpp_mode);
void set_row_pitch(render_data *rd, uint32_t pitch);
void set_palette_value(render_data *rd, uint32_t n, uint32_t value);
/* This function is used to render the screen on a DisplayState */
void render(DisplayState *ds, render_data * rd, int full_update);
/* Save/restore */
void qemu_put_render_data(QEMUFile *f, const render_data *s);
void qemu_get_render_data(QEMUFile *f, render_data *s);