egl/eglinterface/include/khrplatform.h
author Matt Plumtree <matt.plumtree@nokia.com>
Fri, 23 Apr 2010 17:57:02 +0100
branchNewGraphicsArchitecture
changeset 39 a4b63488e0b0
parent 0 5d03bc08d59c
child 29 32d0abd57edb
child 36 01a6848ebfd7
child 163 bbf46f59e123
permissions -rw-r--r--
Revise some of the compositor performance improvements to improve correctness. Implement pixel blending using a variation of Jim Blinn's no-division blending algorithm. Move transparency type simplification further up the composition code. Remove some unnecessary fields. Output to YUV implementation needs revision as it is actually converting from YUV (copy of source conversion code).

#ifndef __khrplatform_h_
#define __khrplatform_h_

/* $Revision$ on $Date::   $ */

/*
** Copyright (c) 2008 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/

/* Platform-specific types and definitions.
 * Last modified on 2008/12/19
 * 
 * Adopters may modify this file to suit their platform. Adopters are
 * encouraged to submit platform specific modifications to the Khronos
 * group so that they can be included in future versions of this file.
 * Please submit changes by sending them to the public Khronos Bugzilla
 * (http://khronos.org/bugzilla) by filing a bug against product
 * "Khronos (general)" component "Registry".
 *
 * A predefined template which fills in some of the bug fields can be
 * reached using http://tinyurl.com/khrplatform-h-bugreport, but you
 * must create a Bugzilla login first.
 * 
 *
 *
 * This file should be included as
 *        #include <KHR/khrplatform.h>
 * by the Khronos API header file that uses its types and defines.
 *
 * The types in this file should only be used to define API-specific types.
 * Types defined in this file:
 *    khronos_int8_t              signed   8  bit
 *    khronos_uint8_t             unsigned 8  bit
 *    khronos_int16_t             signed   16 bit
 *    khronos_uint16_t            unsigned 16 bit
 *    khronos_int32_t             signed   32 bit
 *    khronos_uint32_t            unsigned 32 bit
 *    khronos_int64_t             signed   64 bit
 *    khronos_uint64_t            unsigned 64 bit
 *    khronos_intptr_t            signed   same number of bits as a pointer
 *    khronos_uintptr_t           unsigned same number of bits as a pointer
 *    khronos_ssize_t             signed   size
 *    khronos_usize_t             unsigned size
 *    khronos_float_t             signed   32 bit floating point
 *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds
 *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in
 *                                         nanoseconds
 *    khronos_stime_nanoseconds_t signed time interval in nanoseconds
 *
 * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
 * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
 * 
 *
 * Macros defined in this file:
 *    KHRONOS_APICALL
 *    KHRONOS_APIENTRY
 *    KHRONOS_APIATTRIBUTES
 * These may be used in function prototypes as:
 *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
 *                                  int arg1,
 *                                  int arg2) KHRONOS_APIATTRIBUTES;
 */

#ifdef __cplusplus
extern "C" {
#endif

#include <e32def.h>

/*-------------------------------------------------------------------------
 * Definition of KHRONOS_APICALL and KHRONOS_APIENTRY
 *-----------------------------------------------------------------------*/

#if defined(AEE_SIMULATOR)
#define __KHR_EXPORTS
#endif

#   if defined(_WIN32) || defined(__VC32__) || defined(__MWERKS__) || defined(__CW32__)         /* Win32 */
#   ifdef __KHR_EXPORTS
#       define KHRONOS_APICALL __declspec(dllexport)
#   else
#       define KHRONOS_APICALL __declspec(dllexport)
#   endif
#else
#   if defined (__ARMCC_2_2__)
#   	ifdef __KHR_EXPORTS
#	    	define KHRONOS_APICALL __declspec(dllexport)
#   	else
#	    	define KHRONOS_APICALL __declspec(dllimport)
#   	endif
#   elif (__ARMCC_VERSION >= 310000)
#	    define KHRONOS_APICALL __declspec(dllimport)
#   else
#   	ifdef __KHR_EXPORTS
#           define KHRONOS_APICALL
#   	else
#           define KHRONOS_APICALL extern
#		endif
#   endif
#endif

#define KHRONOS_APIENTRY

#ifndef APIENTRY
#   define APIENTRY KHRONOS_APIENTRY
#endif

#ifndef KHRAPI
#	define KHRAPI KHRONOS_APICALL
#endif

#if defined (__ARMCC_2__)
#define KHRONOS_APIATTRIBUTES __softfp
#else
#define KHRONOS_APIATTRIBUTES
#endif

#define KHRONOS_SUPPORT_INT64   0
#define KHRONOS_SUPPORT_FLOAT   0

typedef TReal32 khronos_float;    // float
typedef TReal32 khronos_float_t;    // float
typedef TInt8   khronos_int8_t;   // signed char
typedef TUint8  khronos_uint8_t;  // unsigned char
typedef TInt16  khronos_int16_t;  // short int
typedef TUint16 khronos_uint16_t; // unsigned short int
typedef TInt32  khronos_int32_t;  // long int
typedef TUint32 khronos_uint32_t; // unsigned long int
typedef TInt64  khronos_int64_t;  // long int
typedef TUint64 khronos_uint64_t; // unsigned long int

typedef TUint64	khronos_utime_nanoseconds_t;
typedef TInt32	khronos_stime_nanoseconds_t;

#ifdef __cplusplus
}
#endif

/*
 * Platform definition of TRUE and FALSE
 */
#define KHR_BOOLEAN_TRUE    (0 == 0)
#define KHR_BOOLEAN_FALSE    (0 != 0)

#endif /* __khrplatform_h_ */