symbian-qemu-0.9.1-12/qemu-symbian-svp/hw/fb_render_def.h
author johnathan.white@2718R8BGH51.accenture.com
Mon, 08 Mar 2010 18:45:03 +0000
changeset 46 b6935a90ca64
parent 1 2fb8b9db1c86
permissions -rw-r--r--
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
 */


/* This file builds the definition tree. */

/*
    Tree levels:
        DEFINING_DEST_BPP
        DEFINING_COLOR_ORDER
        DEFINING_BYTE_ORDER
        DEFINING_PIXEL_ORDER
*/

/* this is for the first time definitions */
#ifndef DEFINING_WHAT

#   define FB_LITTLE_ENDIAN 0
#   define FB_BIG_ENDIAN    1

#   define FB_CO_RGB    0
#   define FB_CO_BGR    1

#   define DEFINING_DEST_BPP        1
#   define DEFINING_SRC_COLOR_ORDER 2
#   define DEFINING_SRC_BYTE_ORDER  3
#   define DEFINING_SRC_PIXEL_ORDER 4
#   define DEFINING_FUNCTIONS       5   /* Tree leaf */

#   define DEFINING_WHAT    DEFINING_DEST_BPP   /* first definition level */
#endif


/* Begin tree:
    Each #if DEFINING_WHAT == XXX has one block per option of that level.
    For example, DEFINING_DEST_BPP will have 5 blocks (8,15,16,24,32).
    Each of these blocks has the same format:
        undef DEFINING_WHAT
        define DEFINING_WHAT (next level)
        define option
        include "fb_render_def.h"
        undef option
    So, at the end of each block, the only remaining definition is DEFINING_WHAT.

    New combining factors (i.e. more parameters for DEST, such as COLOR ORDER,
    BYTE ORDER, etc.) will have to be added as new blocks.
*/


#if DEFINING_WHAT == DEFINING_DEST_BPP

#   undef DEFINING_WHAT
#   define DEFINING_WHAT    DEFINING_SRC_COLOR_ORDER
#   define DEST_BPP 8
#   include "fb_render_def.h"
#   undef DEST_BPP

#   undef DEFINING_WHAT
#   define DEFINING_WHAT    DEFINING_SRC_COLOR_ORDER
#   define DEST_BPP 15
#   include "fb_render_def.h"
#   undef DEST_BPP

#   undef DEFINING_WHAT
#   define DEFINING_WHAT    DEFINING_SRC_COLOR_ORDER
#   define DEST_BPP 16
#   include "fb_render_def.h"
#   undef DEST_BPP

#   undef DEFINING_WHAT
#   define DEFINING_WHAT    DEFINING_SRC_COLOR_ORDER
#   define DEST_BPP 24
#   include "fb_render_def.h"
#   undef DEST_BPP

#   undef DEFINING_WHAT
#   define DEFINING_WHAT    DEFINING_SRC_COLOR_ORDER
#   define DEST_BPP 32
#   include "fb_render_def.h"
#   undef DEST_BPP

#elif DEFINING_WHAT == DEFINING_SRC_COLOR_ORDER

#   undef DEFINING_WHAT
#   define DEFINING_WHAT    DEFINING_SRC_BYTE_ORDER
#   define FB_SRC_COLOR_ORDER   FB_CO_BGR
#   include "fb_render_def.h"
#   undef FB_SRC_COLOR_ORDER

#   undef DEFINING_WHAT
#   define DEFINING_WHAT    DEFINING_SRC_BYTE_ORDER
#   define FB_SRC_COLOR_ORDER   FB_CO_RGB
#   include "fb_render_def.h"
#   undef FB_SRC_COLOR_ORDER

#elif DEFINING_WHAT == DEFINING_SRC_BYTE_ORDER

#   undef DEFINING_WHAT
#   define DEFINING_WHAT    DEFINING_SRC_PIXEL_ORDER
#   define FB_SRC_BYTE_ORDER    FB_LITTLE_ENDIAN
#   include "fb_render_def.h"
#   undef FB_SRC_BYTE_ORDER

#   undef DEFINING_WHAT
#   define DEFINING_WHAT    DEFINING_SRC_PIXEL_ORDER
#   define FB_SRC_BYTE_ORDER    FB_BIG_ENDIAN
#   include "fb_render_def.h"
#   undef FB_SRC_BYTE_ORDER

#elif DEFINING_WHAT == DEFINING_SRC_PIXEL_ORDER

#   undef DEFINING_WHAT
#   define DEFINING_WHAT    DEFINING_FUNCTIONS
#   define FB_SRC_PIXEL_ORDER    FB_LITTLE_ENDIAN
#   include "fb_render_def.h"
#   undef FB_SRC_PIXEL_ORDER

#   undef DEFINING_WHAT
#   define DEFINING_WHAT    DEFINING_FUNCTIONS
#   define FB_SRC_PIXEL_ORDER    FB_BIG_ENDIAN
#   include "fb_render_def.h"
#   undef FB_SRC_PIXEL_ORDER

#elif DEFINING_WHAT == DEFINING_FUNCTIONS
#   undef DEFINING_WHAT
    /* End of recursion. Include the template now */
#   include "fb_render_template.h"
#endif