Added GLES 1.x spinning cube-rendering code to eglbringuptest
The coordinate, color and index data are uploaded to server-side
buffers by the CGLES1Cube::KhrSetup function. CGLES1Cube::KhrPaint
just sets the view matrix and issues a draw command.
Which demo to display can be selected by passing its name on the
command line, e.g.
eglbringuptest vgline
eglbringuptest gles1cube
If no name is provided, the application defaults to vgline.
/* Copyright (c) 2009 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.
*/
/*! \defgroup wfc OpenWF Composition SI
* @{
*/
/*! \file wfc.h
*
* \brief OpenWF Composition public API, type definitions and function prototypes
*
* This is one of the three header files defined by the specification.
* This file contains the portable definitions of data types
* and function prototypes.
* Refer to OpenWF Composition specification for the
* additional documentation.
*
*/
/*! @} */
#ifndef _WFC_H_
#define _WFC_H_
#include <WF/wfcplatform.h>
#ifdef __cplusplus
extern "C" {
#endif
#define OPENWFC_VERSION_1_0 (1)
#define WFC_NONE (0)
#define WFC_INVALID_HANDLE ((WFCHandle)0)
#define WFC_DEFAULT_DEVICE_ID (0)
typedef enum {
WFC_FALSE = KHR_BOOLEAN_FALSE,
WFC_TRUE = KHR_BOOLEAN_TRUE,
WFC_BOOLEAN_FORCE_32BIT = 0x7FFFFFFF
} WFCboolean;
typedef WFCHandle WFCDevice;
typedef WFCHandle WFCContext;
typedef WFCHandle WFCSource;
typedef WFCHandle WFCMask;
typedef WFCHandle WFCElement;
typedef enum {
WFC_ERROR_NONE = 0,
WFC_ERROR_OUT_OF_MEMORY = 0x7001,
WFC_ERROR_ILLEGAL_ARGUMENT = 0x7002,
WFC_ERROR_UNSUPPORTED = 0x7003,
WFC_ERROR_BAD_ATTRIBUTE = 0x7004,
WFC_ERROR_IN_USE = 0x7005,
WFC_ERROR_BUSY = 0x7006,
WFC_ERROR_BAD_DEVICE = 0x7007,
WFC_ERROR_BAD_HANDLE = 0x7008,
WFC_ERROR_INCONSISTENCY = 0x7009,
WFC_ERROR_FORCE_32BIT = 0x7FFFFFFF
} WFCErrorCode;
typedef enum {
WFC_DEVICE_FILTER_SCREEN_NUMBER = 0x7020,
WFC_DEVICE_FILTER_FORCE_32BIT = 0x7FFFFFFF
} WFCDeviceFilter;
typedef enum {
/* Read-only */
WFC_DEVICE_CLASS = 0x7030,
WFC_DEVICE_ID = 0x7031,
WFC_DEVICE_FORCE_32BIT = 0x7FFFFFFF
} WFCDeviceAttrib;
typedef enum {
WFC_DEVICE_CLASS_FULLY_CAPABLE = 0x7040,
WFC_DEVICE_CLASS_OFF_SCREEN_ONLY = 0x7041,
WFC_DEVICE_CLASS_FORCE_32BIT = 0x7FFFFFFF
} WFCDeviceClass;
typedef enum {
/* Read-only */
WFC_CONTEXT_TYPE = 0x7051,
WFC_CONTEXT_TARGET_HEIGHT = 0x7052,
WFC_CONTEXT_TARGET_WIDTH = 0x7053,
WFC_CONTEXT_LOWEST_ELEMENT = 0x7054,
/* Read-write */
WFC_CONTEXT_ROTATION = 0x7061,
WFC_CONTEXT_BG_COLOR = 0x7062,
WFC_CONTEXT_FORCE_32BIT = 0x7FFFFFFF
} WFCContextAttrib;
typedef enum {
WFC_CONTEXT_TYPE_ON_SCREEN = 0x7071,
WFC_CONTEXT_TYPE_OFF_SCREEN = 0x7072,
WFC_CONTEXT_TYPE_FORCE_32BIT = 0x7FFFFFFF
} WFCContextType;
typedef enum {
/* Clockwise rotation */
WFC_ROTATION_0 = 0x7081, /* default */
WFC_ROTATION_90 = 0x7082,
WFC_ROTATION_180 = 0x7083,
WFC_ROTATION_270 = 0x7084,
WFC_ROTATION_FORCE_32BIT = 0x7FFFFFFF
} WFCRotation;
typedef enum {
WFC_ELEMENT_DESTINATION_RECTANGLE = 0x7101,
WFC_ELEMENT_SOURCE = 0x7102,
WFC_ELEMENT_SOURCE_RECTANGLE = 0x7103,
WFC_ELEMENT_SOURCE_FLIP = 0x7104,
WFC_ELEMENT_SOURCE_ROTATION = 0x7105,
WFC_ELEMENT_SOURCE_SCALE_FILTER = 0x7106,
WFC_ELEMENT_TRANSPARENCY_TYPES = 0x7107,
WFC_ELEMENT_GLOBAL_ALPHA = 0x7108,
WFC_ELEMENT_MASK = 0x7109,
WFC_ELEMENT_FORCE_32BIT = 0x7FFFFFFF
} WFCElementAttrib;
typedef enum {
WFC_SCALE_FILTER_NONE = 0x7151, /* default */
WFC_SCALE_FILTER_FASTER = 0x7152,
WFC_SCALE_FILTER_BETTER = 0x7153,
WFC_SCALE_FILTER_FORCE_32BIT = 0x7FFFFFFF
} WFCScaleFilter;
typedef enum {
WFC_TRANSPARENCY_NONE = 0, /* default */
WFC_TRANSPARENCY_ELEMENT_GLOBAL_ALPHA = (1 << 0),
WFC_TRANSPARENCY_SOURCE = (1 << 1),
WFC_TRANSPARENCY_MASK = (1 << 2),
WFC_TRANSPARENCY_FORCE_32BIT = 0x7FFFFFFF
} WFCTransparencyType;
typedef enum {
WFC_VENDOR = 0x7200,
WFC_RENDERER = 0x7201,
WFC_VERSION = 0x7202,
WFC_EXTENSIONS = 0x7203,
WFC_STRINGID_FORCE_32BIT = 0x7FFFFFFF
} WFCStringID;
/* Function Prototypes */
/* Device */
WFC_API_CALL WFCint WFC_APIENTRY
wfcEnumerateDevices(WFCint *deviceIds, WFCint deviceIdsCount,
const WFCint *filterList) WFC_APIEXIT;
WFC_API_CALL WFCDevice WFC_APIENTRY
wfcCreateDevice(WFCint deviceId, const WFCint *attribList) WFC_APIEXIT;
WFC_API_CALL WFCErrorCode WFC_APIENTRY
wfcGetError(WFCDevice dev) WFC_APIEXIT;
WFC_API_CALL WFCint WFC_APIENTRY
wfcGetDeviceAttribi(WFCDevice dev, WFCDeviceAttrib attrib) WFC_APIEXIT;
WFC_API_CALL WFCErrorCode WFC_APIENTRY
wfcDestroyDevice(WFCDevice dev) WFC_APIEXIT;
/* Context */
WFC_API_CALL WFCContext WFC_APIENTRY
wfcCreateOnScreenContext(WFCDevice dev,
WFCint screenNumber,
const WFCint *attribList) WFC_APIEXIT;
WFC_API_CALL WFCContext WFC_APIENTRY
wfcCreateOffScreenContext(WFCDevice dev,
WFCNativeStreamType stream,
const WFCint *attribList) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcCommit(WFCDevice dev, WFCContext ctx, WFCboolean wait) WFC_APIEXIT;
WFC_API_CALL WFCint WFC_APIENTRY
wfcGetContextAttribi(WFCDevice dev, WFCContext ctx,
WFCContextAttrib attrib) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcGetContextAttribfv(WFCDevice dev, WFCContext ctx,
WFCContextAttrib attrib, WFCint count, WFCfloat *values) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcSetContextAttribi(WFCDevice dev, WFCContext ctx,
WFCContextAttrib attrib, WFCint value) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcSetContextAttribfv(WFCDevice dev, WFCContext ctx,
WFCContextAttrib attrib,
WFCint count, const WFCfloat *values) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcDestroyContext(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
/* Source */
WFC_API_CALL WFCSource WFC_APIENTRY
wfcCreateSourceFromStream(WFCDevice dev, WFCContext ctx,
WFCNativeStreamType stream,
const WFCint *attribList) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcDestroySource(WFCDevice dev, WFCSource src) WFC_APIEXIT;
/* Mask */
WFC_API_CALL WFCMask WFC_APIENTRY
wfcCreateMaskFromStream(WFCDevice dev, WFCContext ctx,
WFCNativeStreamType stream,
const WFCint *attribList) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcDestroyMask(WFCDevice dev, WFCMask mask) WFC_APIEXIT;
/* Element */
WFC_API_CALL WFCElement WFC_APIENTRY
wfcCreateElement(WFCDevice dev, WFCContext ctx,
const WFCint *attribList) WFC_APIEXIT;
WFC_API_CALL WFCint WFC_APIENTRY
wfcGetElementAttribi(WFCDevice dev, WFCElement element,
WFCElementAttrib attrib) WFC_APIEXIT;
WFC_API_CALL WFCfloat WFC_APIENTRY
wfcGetElementAttribf(WFCDevice dev, WFCElement element,
WFCElementAttrib attrib) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcGetElementAttribiv(WFCDevice dev, WFCElement element,
WFCElementAttrib attrib, WFCint count, WFCint *values) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcGetElementAttribfv(WFCDevice dev, WFCElement element,
WFCElementAttrib attrib, WFCint count, WFCfloat *values) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcSetElementAttribi(WFCDevice dev, WFCElement element,
WFCElementAttrib attrib, WFCint value) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcSetElementAttribf(WFCDevice dev, WFCElement element,
WFCElementAttrib attrib, WFCfloat value) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcSetElementAttribiv(WFCDevice dev, WFCElement element,
WFCElementAttrib attrib,
WFCint count, const WFCint *values) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcSetElementAttribfv(WFCDevice dev, WFCElement element,
WFCElementAttrib attrib,
WFCint count, const WFCfloat *values) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcInsertElement(WFCDevice dev, WFCElement element,
WFCElement subordinate) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcRemoveElement(WFCDevice dev, WFCElement element) WFC_APIEXIT;
WFC_API_CALL WFCElement WFC_APIENTRY
wfcGetElementAbove(WFCDevice dev, WFCElement element) WFC_APIEXIT;
WFC_API_CALL WFCElement WFC_APIENTRY
wfcGetElementBelow(WFCDevice dev, WFCElement element) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcDestroyElement(WFCDevice dev, WFCElement element) WFC_APIEXIT;
/* Rendering */
WFC_API_CALL void WFC_APIENTRY
wfcActivate(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcDeactivate(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcCompose(WFCDevice dev, WFCContext ctx, WFCboolean wait) WFC_APIEXIT;
WFC_API_CALL void WFC_APIENTRY
wfcFence(WFCDevice dev, WFCContext ctx, WFCEGLDisplay dpy,
WFCEGLSync sync) WFC_APIEXIT;
/* Renderer and extension information */
WFC_API_CALL WFCint WFC_APIENTRY
wfcGetStrings(WFCDevice dev,
WFCStringID name,
const char **strings,
WFCint stringsCount) WFC_APIEXIT;
WFC_API_CALL WFCboolean WFC_APIENTRY
wfcIsExtensionSupported(WFCDevice dev, const char *string) WFC_APIEXIT;
#ifdef __cplusplus
}
#endif
#endif /* _WFC_H_ */