openvg/openvgrefimplementation/sfopenvg/sfopenvg/riMiniEGL.cpp
author Pat Downey <patd@symbian.org>
Wed, 02 Jun 2010 13:14:22 +0100
changeset 89 509acdbd8bdd
parent 43 7579f232bae7
child 104 2ae553ab1feb
child 216 b87045f2f5d7
permissions -rw-r--r--
Merge fixes for bugs 1362, 1666, 1863, KhronosRI and bld.inf.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
43
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     1
/*------------------------------------------------------------------------
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     2
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     3
 * EGL 1.3
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     4
 * -------
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     5
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     6
 * Copyright (c) 2007 The Khronos Group Inc.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     7
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     8
 * Permission is hereby granted, free of charge, to any person obtaining a
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     9
 * copy of this software and /or associated documentation files
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    10
 * (the "Materials "), to deal in the Materials without restriction,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    11
 * including without limitation the rights to use, copy, modify, merge,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    12
 * publish, distribute, sublicense, and/or sell copies of the Materials,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    13
 * and to permit persons to whom the Materials are furnished to do so,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    14
 * subject to the following conditions: 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    15
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    16
 * The above copyright notice and this permission notice shall be included 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    17
 * in all copies or substantial portions of the Materials. 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    18
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    19
 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    20
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    21
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    22
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    23
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    24
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    25
 * THE USE OR OTHER DEALINGS IN THE MATERIALS.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    26
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    27
 *//**
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    28
 * \file
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    29
 * \brief	Simple implementation of EGL 1.3
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    30
 * \note	caveats:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    31
			- always renders into the backbuffer and blits it to window (no single buffered rendering)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    32
			- no native Windows or Mac OS X pixmap support
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    33
			- no power management events
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    34
			- no support for swap interval
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    35
 * \todo	what happens in egl functions when eglTerminate has been called but the context and surface are still in use?
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    36
 * \todo	OSDeinitMutex should be called in case getEGL fails.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    37
 *//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    38
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    39
#include "egl.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    40
#include "openvg.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    41
#include "riArray.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    42
#include "riMath.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    43
#include "riContext.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    44
#include "riImage.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    45
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    46
#ifdef BUILD_WITH_PRIVATE_EGL 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    47
#include "eglinternal.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    48
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    49
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    50
#ifdef BUILD_WITH_PRIVATE_OPENVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    51
#include "openvginternal.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    52
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    53
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    54
//==============================================================================================
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    55
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    56
namespace OpenVGRI
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    57
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    58
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    59
void* OSGetCurrentThreadID(void);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    60
void OSAcquireMutex(void);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    61
void OSReleaseMutex(void);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    62
void OSDeinitMutex(void);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    63
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    64
EGLDisplay OSGetDisplay(EGLNativeDisplayType display_id);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    65
void* OSCreateWindowContext(EGLNativeWindowType window);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    66
void OSDestroyWindowContext(void* context);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    67
bool OSIsWindow(const void* context);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    68
void OSGetWindowSize(const void* context, int& width, int& height);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    69
void OSBlitToWindow(void* context, const Drawable* drawable);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    70
EGLBoolean OSGetNativePixmapInfo(NativePixmapType pixmap, int* width, int* height, int* stride, VGImageFormat* format, int** data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    71
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    72
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    73
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    74
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    75
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    76
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    77
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    78
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    79
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    80
class RIEGLConfig
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    81
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    82
public:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    83
	RIEGLConfig() : m_desc(Color::formatToDescriptor(VG_sRGBA_8888)), m_configID(0)	{}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    84
	~RIEGLConfig()							{}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    85
	void		set(int r, int g, int b, int a, int l, int bpp, int samples, int maskBits, int ID)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    86
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    87
		m_desc.redBits = r;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    88
		m_desc.greenBits = g;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    89
		m_desc.blueBits = b;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    90
		m_desc.alphaBits = a;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    91
		m_desc.luminanceBits = l;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    92
		m_desc.alphaShift = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    93
		m_desc.luminanceShift = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    94
		m_desc.blueShift = b ? a : 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    95
		m_desc.greenShift = g ? a + b : 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    96
		m_desc.redShift = r ? a + b + g : 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    97
		m_desc.format = (VGImageFormat)-1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    98
		m_desc.internalFormat = l ? Color::sLA : Color::sRGBA;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    99
		m_desc.bitsPerPixel = bpp;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   100
		RI_ASSERT(Color::isValidDescriptor(m_desc));
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   101
		m_samples = samples;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   102
        m_maskBits = maskBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   103
		m_configID = ID;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   104
        m_config = (EGLConfig)ID;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   105
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   106
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   107
    Color::Descriptor configToDescriptor(bool sRGB, bool premultiplied) const
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   108
    {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   109
        Color::Descriptor desc = m_desc;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   110
        unsigned int f = m_desc.luminanceBits ? Color::LUMINANCE : 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   111
        f |= sRGB ? Color::NONLINEAR : 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   112
        f |= premultiplied ? Color::PREMULTIPLIED : 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   113
        desc.internalFormat = (Color::InternalFormat)f;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   114
        return desc;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   115
    }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   116
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   117
	//EGL RED SIZE bits of Red in the color buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   118
	//EGL GREEN SIZE bits of Green in the color buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   119
	//EGL BLUE SIZE bits of Blue in the color buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   120
	//EGL ALPHA SIZE bits of Alpha in the color buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   121
	//EGL LUMINANCE SIZE bits of Luminance in the color buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   122
	Color::Descriptor	m_desc;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   123
	int					m_samples;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   124
    int                 m_maskBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   125
	EGLint				m_configID;			//EGL CONFIG ID unique EGLConfig identifier
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   126
    EGLConfig           m_config;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   127
	//EGL BUFFER SIZE depth of the color buffer (sum of channel bits)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   128
	//EGL ALPHA MASK SIZE number alpha mask bits (always 8)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   129
	//EGL BIND TO TEXTURE RGB boolean True if bindable to RGB textures. (always EGL_FALSE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   130
	//EGL BIND TO TEXTURE RGBA boolean True if bindable to RGBA textures. (always EGL_FALSE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   131
	//EGL COLOR BUFFER TYPE enum color buffer type (EGL_RGB_BUFFER, EGL_LUMINANCE_BUFFER)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   132
	//EGL CONFIG CAVEAT enum any caveats for the configuration (always EGL_NONE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   133
	//EGL DEPTH SIZE integer bits of Z in the depth buffer (always 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   134
	//EGL LEVEL integer frame buffer level (always 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   135
	//EGL MAX PBUFFER WIDTH integer maximum width of pbuffer (always INT_MAX)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   136
	//EGL MAX PBUFFER HEIGHT integer maximum height of pbuffer (always INT_MAX)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   137
	//EGL MAX PBUFFER PIXELS integer maximum size of pbuffer (always INT_MAX)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   138
	//EGL MAX SWAP INTERVAL integer maximum swap interval (always 1)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   139
	//EGL MIN SWAP INTERVAL integer minimum swap interval (always 1)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   140
	//EGL NATIVE RENDERABLE boolean EGL TRUE if native rendering APIs can render to surface (always EGL_FALSE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   141
	//EGL NATIVE VISUAL ID integer handle of corresponding native visual (always 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   142
	//EGL NATIVE VISUAL TYPE integer native visual type of the associated visual (always EGL_NONE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   143
	//EGL RENDERABLE TYPE bitmask which client rendering APIs are supported. (always EGL_OPENVG_BIT)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   144
	//EGL SAMPLE BUFFERS integer number of multisample buffers (always 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   145
	//EGL SAMPLES integer number of samples per pixel (always 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   146
	//EGL STENCIL SIZE integer bits of Stencil in the stencil buffer (always 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   147
	//EGL SURFACE TYPE bitmask which types of EGL surfaces are supported. (always EGL WINDOW BIT | EGL PIXMAP BIT | EGL PBUFFER BIT)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   148
	//EGL TRANSPARENT TYPE enum type of transparency supported (always EGL_NONE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   149
	//EGL TRANSPARENT RED VALUE integer transparent red value (undefined)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   150
	//EGL TRANSPARENT GREEN VALUE integer transparent green value (undefined)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   151
	//EGL TRANSPARENT BLUE VALUE integer transparent blue value (undefined)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   152
};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   153
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   154
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   155
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   156
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   157
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   158
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   159
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   160
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   161
class RIEGLContext
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   162
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   163
public:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   164
	RIEGLContext(OpenVGRI::VGContext* vgctx, const EGLConfig config);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   165
	~RIEGLContext();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   166
	void	addReference()				{ m_referenceCount++; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   167
	int		removeReference()			{ m_referenceCount--; RI_ASSERT(m_referenceCount >= 0); return m_referenceCount; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   168
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   169
    VGContext*      getVGContext() const      { return m_vgContext; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   170
    EGLConfig getConfig() const         { return m_config; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   171
private:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   172
	RIEGLContext(const RIEGLContext&);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   173
	RIEGLContext& operator=(const RIEGLContext&);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   174
	VGContext*		m_vgContext;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   175
	const EGLConfig	m_config;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   176
	int				m_referenceCount;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   177
};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   178
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   179
RIEGLContext* CastToRIEGLContext(EGLContext aCtxId);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   180
EGLContext CastFromRIEGLContext(RIEGLContext* aCtx);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   181
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   182
RIEGLContext::RIEGLContext(OpenVGRI::VGContext* vgctx, const EGLConfig config) :
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   183
	m_vgContext(vgctx),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   184
	m_config(config),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   185
	m_referenceCount(0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   186
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   187
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   188
RIEGLContext::~RIEGLContext()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   189
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   190
	RI_ASSERT(m_referenceCount == 0);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   191
	RI_DELETE(m_vgContext);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   192
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   193
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   194
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   195
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   196
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   197
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   198
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   199
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   200
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   201
class RIEGLSurface
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   202
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   203
public:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   204
    RIEGLSurface(void* OSWindowContext, const EGLConfig config, Drawable* drawable, bool largestPbuffer, int renderBuffer);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   205
	~RIEGLSurface();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   206
	void	addReference()				{ m_referenceCount++; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   207
	int		removeReference()			{ m_referenceCount--; RI_ASSERT(m_referenceCount >= 0); return m_referenceCount; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   208
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   209
    void*           getOSWindowContext() const { return m_OSWindowContext; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   210
    EGLConfig       getConfig() const          { return m_config; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   211
    Drawable*       getDrawable() const        { return m_drawable; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   212
    bool            isLargestPbuffer() const   { return m_largestPbuffer; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   213
    int             getRenderBuffer() const    { return m_renderBuffer; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   214
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   215
private:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   216
	RIEGLSurface(const RIEGLSurface&);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   217
	RIEGLSurface& operator=(const RIEGLSurface&);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   218
    void*            m_OSWindowContext;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   219
	const EGLConfig	 m_config;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   220
	Drawable*        m_drawable;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   221
	bool			 m_largestPbuffer;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   222
	int				 m_renderBuffer;		//EGL_BACK_BUFFER or EGL_SINGLE_BUFFER
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   223
	int				 m_referenceCount;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   224
};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   225
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   226
RIEGLSurface* CastToRIEGLSurface(EGLSurface aSurfaceId);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   227
EGLSurface CastFromRIEGLSurface(RIEGLSurface* aSurface);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   228
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   229
RIEGLSurface::RIEGLSurface(void* OSWindowContext, const EGLConfig config, Drawable* drawable, bool largestPbuffer, int renderBuffer) :
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   230
    m_OSWindowContext(OSWindowContext),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   231
	m_config(config),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   232
	m_drawable(drawable),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   233
	m_largestPbuffer(largestPbuffer),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   234
	m_renderBuffer(renderBuffer),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   235
	m_referenceCount(0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   236
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   237
    RI_ASSERT(m_renderBuffer == EGL_BACK_BUFFER);   //only back buffer rendering is supported
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   238
    m_drawable->addReference();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   239
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   240
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   241
RIEGLSurface::~RIEGLSurface()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   242
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   243
	RI_ASSERT(m_referenceCount == 0);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   244
    OSDestroyWindowContext(m_OSWindowContext);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   245
	if(m_drawable)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   246
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   247
		if(!m_drawable->removeReference())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   248
			RI_DELETE(m_drawable);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   249
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   250
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   251
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   252
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   253
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   254
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   255
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   256
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   257
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   258
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   259
#define EGL_NUMCONFIGS		60
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   260
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   261
class RIEGLDisplay
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   262
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   263
public:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   264
	RIEGLDisplay(EGLDisplay id);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   265
	~RIEGLDisplay();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   266
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   267
	int                getNumConfigs() const              { return EGL_NUMCONFIGS; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   268
    const RIEGLConfig& getConfigByIdx(int i) const             { RI_ASSERT(i >= 0 && i < EGL_NUMCONFIGS); return m_configs[i]; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   269
    const RIEGLConfig& getConfig(const EGLConfig config) const        { for(int i=0;i<EGL_NUMCONFIGS;i++) { if(m_configs[i].m_config == config) return m_configs[i]; } RI_ASSERT(0); return m_configs[0]; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   270
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   271
    EGLDisplay        getID() const                       { return m_id; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   272
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   273
    void              addContext(RIEGLContext* ctx)       { RI_ASSERT(ctx); m_contexts.push_back(ctx); }  //throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   274
    void              removeContext(RIEGLContext* ctx)    { RI_ASSERT(ctx); bool res = m_contexts.remove(ctx); RI_ASSERT(res); RI_UNREF(res); }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   275
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   276
    void              addSurface(RIEGLSurface* srf)       { RI_ASSERT(srf); m_surfaces.push_back(srf); }  //throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   277
    void              removeSurface(RIEGLSurface* srf)    { RI_ASSERT(srf); bool res = m_surfaces.remove(srf); RI_ASSERT(res); RI_UNREF(res); }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   278
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   279
    EGLBoolean        contextExists(const EGLContext ctx) const;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   280
    EGLBoolean        surfaceExists(const EGLSurface srf) const;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   281
    EGLBoolean        configExists(const EGLConfig cfg) const;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   282
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   283
private:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   284
	RIEGLDisplay(const RIEGLDisplay& t);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   285
	RIEGLDisplay& operator=(const RIEGLDisplay&t);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   286
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   287
	EGLDisplay              m_id;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   288
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   289
	Array<RIEGLContext*>	m_contexts;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   290
	Array<RIEGLSurface*>	m_surfaces;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   291
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   292
	RIEGLConfig             m_configs[EGL_NUMCONFIGS];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   293
};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   294
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   295
RIEGLDisplay::RIEGLDisplay(EGLDisplay id) :
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   296
	m_id(id),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   297
	m_contexts(),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   298
	m_surfaces()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   299
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   300
	RI_ASSERT(EGL_NUMCONFIGS == 60);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   301
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   302
	//sorted by RGB/LUMINANCE (exact), larger total number of color bits (at least), buffer size (at least), config ID (exact)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   303
	//NOTE: 16 bit configs need to be sorted on the fly if the request ignores some channels
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   304
	//NOTE: config IDs start from 1
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   305
	//               R  B  G  A  L  bpp samples maskBits ID
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   306
	m_configs[0].set(8, 8, 8, 8, 0, 32, 1, 8, 1);	//EGL_RGB_BUFFER, buffer size = 32
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   307
	m_configs[1].set(8, 8, 8, 0, 0, 32, 1, 8, 2);	//EGL_RGB_BUFFER, buffer size = 24
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   308
	m_configs[2].set(5, 5, 5, 1, 0, 16, 1, 4, 3);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   309
	m_configs[3].set(5, 6, 5, 0, 0, 16, 1, 4, 4);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   310
	m_configs[4].set(4, 4, 4, 4, 0, 16, 1, 4, 5);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   311
	m_configs[5].set(0, 0, 0, 8, 0, 8,  1, 8, 6);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   312
	m_configs[6].set(0, 0, 0, 4, 0, 4,  1, 4, 7);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   313
	m_configs[7].set(0, 0, 0, 1, 0, 1,  1, 1, 8);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   314
	m_configs[8].set(0, 0, 0, 0, 8, 8,  1, 8, 9);	//EGL_LUMINANCE_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   315
	m_configs[9].set(0, 0, 0, 0, 1, 1,  1, 1, 10);	//EGL_LUMINANCE_BUFFER, buffer size = 1
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   316
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   317
	m_configs[10].set(8, 8, 8, 8, 0, 32, 4, 1, 11);	//EGL_RGB_BUFFER, buffer size = 32
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   318
	m_configs[11].set(8, 8, 8, 0, 0, 32, 4, 1, 12);	//EGL_RGB_BUFFER, buffer size = 24
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   319
	m_configs[12].set(5, 5, 5, 1, 0, 16, 4, 1, 13);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   320
	m_configs[13].set(5, 6, 5, 0, 0, 16, 4, 1, 14);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   321
	m_configs[14].set(4, 4, 4, 4, 0, 16, 4, 1, 15);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   322
	m_configs[15].set(0, 0, 0, 8, 0, 8,  4, 1, 16);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   323
	m_configs[16].set(0, 0, 0, 4, 0, 4,  4, 1, 17);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   324
	m_configs[17].set(0, 0, 0, 1, 0, 1,  4, 1, 18);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   325
	m_configs[18].set(0, 0, 0, 0, 8, 8,  4, 1, 19);	//EGL_LUMINANCE_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   326
	m_configs[19].set(0, 0, 0, 0, 1, 1,  4, 1, 20);	//EGL_LUMINANCE_BUFFER, buffer size = 1
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   327
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   328
	m_configs[20].set(8, 8, 8, 8, 0, 32, 32, 1, 21);	//EGL_RGB_BUFFER, buffer size = 32
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   329
	m_configs[21].set(8, 8, 8, 0, 0, 32, 32, 1, 22);	//EGL_RGB_BUFFER, buffer size = 24
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   330
	m_configs[22].set(5, 5, 5, 1, 0, 16, 32, 1, 23);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   331
	m_configs[23].set(5, 6, 5, 0, 0, 16, 32, 1, 24);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   332
	m_configs[24].set(4, 4, 4, 4, 0, 16, 32, 1, 25);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   333
	m_configs[25].set(0, 0, 0, 8, 0, 8,  32, 1, 26);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   334
	m_configs[26].set(0, 0, 0, 4, 0, 4,  32, 1, 27);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   335
	m_configs[27].set(0, 0, 0, 1, 0, 1,  32, 1, 28);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   336
	m_configs[28].set(0, 0, 0, 0, 8, 8,  32, 1, 29);	//EGL_LUMINANCE_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   337
	m_configs[29].set(0, 0, 0, 0, 1, 1,  32, 1, 30);	//EGL_LUMINANCE_BUFFER, buffer size = 1
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   338
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   339
    //configs without mask
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   340
	m_configs[30].set(8, 8, 8, 8, 0, 32, 1, 0, 31);	//EGL_RGB_BUFFER, buffer size = 32
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   341
	m_configs[31].set(8, 8, 8, 0, 0, 32, 1, 0, 32);	//EGL_RGB_BUFFER, buffer size = 24
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   342
	m_configs[32].set(5, 5, 5, 1, 0, 16, 1, 0, 33);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   343
	m_configs[33].set(5, 6, 5, 0, 0, 16, 1, 0, 34);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   344
	m_configs[34].set(4, 4, 4, 4, 0, 16, 1, 0, 35);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   345
	m_configs[35].set(0, 0, 0, 8, 0, 8,  1, 0, 36);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   346
	m_configs[36].set(0, 0, 0, 4, 0, 4,  1, 0, 37);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   347
	m_configs[37].set(0, 0, 0, 1, 0, 1,  1, 0, 38);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   348
	m_configs[38].set(0, 0, 0, 0, 8, 8,  1, 0, 39);	//EGL_LUMINANCE_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   349
	m_configs[39].set(0, 0, 0, 0, 1, 1,  1, 0, 40);	//EGL_LUMINANCE_BUFFER, buffer size = 1
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   350
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   351
	m_configs[40].set(8, 8, 8, 8, 0, 32, 4, 0, 41);	//EGL_RGB_BUFFER, buffer size = 32
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   352
	m_configs[41].set(8, 8, 8, 0, 0, 32, 4, 0, 42);	//EGL_RGB_BUFFER, buffer size = 24
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   353
	m_configs[42].set(5, 5, 5, 1, 0, 16, 4, 0, 43);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   354
	m_configs[43].set(5, 6, 5, 0, 0, 16, 4, 0, 44);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   355
	m_configs[44].set(4, 4, 4, 4, 0, 16, 4, 0, 45);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   356
	m_configs[45].set(0, 0, 0, 8, 0, 8,  4, 0, 46);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   357
	m_configs[46].set(0, 0, 0, 4, 0, 4,  4, 0, 47);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   358
	m_configs[47].set(0, 0, 0, 1, 0, 1,  4, 0, 48);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   359
	m_configs[48].set(0, 0, 0, 0, 8, 8,  4, 0, 49);	//EGL_LUMINANCE_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   360
	m_configs[49].set(0, 0, 0, 0, 1, 1,  4, 0, 50);	//EGL_LUMINANCE_BUFFER, buffer size = 1
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   361
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   362
	m_configs[50].set(8, 8, 8, 8, 0, 32, 32, 0, 51);	//EGL_RGB_BUFFER, buffer size = 32
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   363
	m_configs[51].set(8, 8, 8, 0, 0, 32, 32, 0, 52);	//EGL_RGB_BUFFER, buffer size = 24
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   364
	m_configs[52].set(5, 5, 5, 1, 0, 16, 32, 0, 53);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   365
	m_configs[53].set(5, 6, 5, 0, 0, 16, 32, 0, 54);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   366
	m_configs[54].set(4, 4, 4, 4, 0, 16, 32, 0, 55);	//EGL_RGB_BUFFER, buffer size = 16
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   367
	m_configs[55].set(0, 0, 0, 8, 0, 8,  32, 0, 56);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   368
	m_configs[56].set(0, 0, 0, 4, 0, 4,  32, 0, 57);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   369
	m_configs[57].set(0, 0, 0, 1, 0, 1,  32, 0, 58);	//EGL_RGB_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   370
	m_configs[58].set(0, 0, 0, 0, 8, 8,  32, 0, 59);	//EGL_LUMINANCE_BUFFER, buffer size = 8
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   371
	m_configs[59].set(0, 0, 0, 0, 1, 1,  32, 0, 60);	//EGL_LUMINANCE_BUFFER, buffer size = 1
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   372
/*
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   373
attrib                default        criteria order   priority
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   374
--------------------------------------------------------------
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   375
EGL_COLOR_BUFFER_TYPE EGL_RGB_BUFFER Exact    None    2 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   376
EGL_RED_SIZE          0              AtLeast  Special 3 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   377
EGL_GREEN_SIZE        0              AtLeast  Special 3 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   378
EGL_BLUE_SIZE         0              AtLeast  Special 3 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   379
EGL_LUMINANCE_SIZE    0              AtLeast  Special 3 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   380
EGL_ALPHA_SIZE        0              AtLeast  Special 3 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   381
EGL_BUFFER_SIZE       0              AtLeast  Smaller 4 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   382
EGL_CONFIG_ID         EGL_DONT_CARE  Exact    Smaller 11
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   383
*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   384
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   385
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   386
RIEGLDisplay::~RIEGLDisplay()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   387
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   388
	//mark everything for deletion, but don't delete the current context and surface
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   389
	for(int i=0;i<m_contexts.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   390
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   391
		if(!m_contexts[i]->removeReference())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   392
			RI_DELETE(m_contexts[i]);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   393
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   394
	m_contexts.clear();	//remove all contexts from the list (makes further references to the current contexts invalid)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   395
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   396
	for(int i=0;i<m_surfaces.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   397
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   398
		if(!m_surfaces[i]->removeReference())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   399
			RI_DELETE(m_surfaces[i]);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   400
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   401
	m_surfaces.clear();	//remove all surfaces from the list (makes further references to the current surfaces invalid)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   402
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   403
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   404
EGLBoolean RIEGLDisplay::contextExists(const EGLContext ctx) const
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   405
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   406
	for(int i=0;i<m_contexts.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   407
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   408
		if(m_contexts[i] == CastToRIEGLContext(ctx))
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   409
			return EGL_TRUE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   410
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   411
	return EGL_FALSE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   412
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   413
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   414
EGLBoolean RIEGLDisplay::surfaceExists(const EGLSurface surf) const
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   415
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   416
	for(int i=0;i<m_surfaces.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   417
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   418
		if(m_surfaces[i] == CastToRIEGLSurface(surf))
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   419
			return EGL_TRUE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   420
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   421
	return EGL_FALSE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   422
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   423
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   424
EGLBoolean RIEGLDisplay::configExists(const EGLConfig config) const
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   425
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   426
    for(int i=0;i<EGL_NUMCONFIGS;i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   427
    {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   428
        if(m_configs[i].m_config == config)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   429
		return EGL_TRUE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   430
    }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   431
	return EGL_FALSE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   432
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   433
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   434
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   435
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   436
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   437
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   438
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   439
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   440
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   441
class RIEGLThread
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   442
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   443
public:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   444
	RIEGLThread(void* currentThreadID);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   445
	~RIEGLThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   446
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   447
    void*           getThreadID() const       { return m_threadID; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   448
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   449
    void            makeCurrent(RIEGLContext* c, RIEGLSurface* s)       { m_context = c; m_surface = s; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   450
	RIEGLContext*	getCurrentContext() const   { return m_context; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   451
	RIEGLSurface*	getCurrentSurface() const   { return m_surface; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   452
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   453
    void            setError(EGLint error)      { m_error = error; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   454
    EGLint          getError() const            { return m_error; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   455
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   456
    void            bindAPI(EGLint api)         { m_boundAPI = api; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   457
    EGLint          getBoundAPI() const         { return m_boundAPI; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   458
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   459
private:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   460
	RIEGLThread(const RIEGLThread&);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   461
	RIEGLThread operator=(const RIEGLThread&);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   462
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   463
	RIEGLContext*		m_context;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   464
	RIEGLSurface*		m_surface;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   465
	EGLint              m_error;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   466
	void*               m_threadID;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   467
	EGLint              m_boundAPI;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   468
};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   469
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   470
RIEGLThread::RIEGLThread(void* currentThreadID) :
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   471
	m_context(NULL),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   472
	m_surface(NULL),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   473
	m_error(EGL_SUCCESS),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   474
	m_threadID(currentThreadID),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   475
	m_boundAPI(EGL_NONE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   476
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   477
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   478
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   479
RIEGLThread::~RIEGLThread()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   480
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   481
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   482
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   483
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   484
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   485
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   486
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   487
Image* CastToImage(EGLClientBuffer aBufferId);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   488
EGLClientBuffer CastFromImage(Image* aBUffer);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   489
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   490
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   491
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   492
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   493
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   494
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   495
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   496
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   497
class EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   498
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   499
public:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   500
	EGL();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   501
	~EGL();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   502
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   503
	void	addReference()				{ m_referenceCount++; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   504
	int		removeReference()			{ m_referenceCount--; RI_ASSERT(m_referenceCount >= 0); return m_referenceCount; }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   505
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   506
    void                addDisplay(RIEGLDisplay* display)           { RI_ASSERT(display); m_displays.push_back(display); }  //throws bad alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   507
    void                removeDisplay(RIEGLDisplay* display)        { RI_ASSERT(display); bool res = m_displays.remove(display); RI_ASSERT(res); RI_UNREF(res); }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   508
    RIEGLDisplay*       getDisplay(const EGLDisplay displayID) const;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   509
    EGLDisplay          findDisplay(const EGLContext ctx) const;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   510
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   511
    void                addCurrentThread(RIEGLThread* thread)       { RI_ASSERT(thread); m_currentThreads.push_back(thread); }  //throws bad alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   512
    void                removeCurrentThread(RIEGLThread* thread)    { RI_ASSERT(thread); bool res = m_currentThreads.remove(thread); RI_ASSERT(res); RI_UNREF(res); }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   513
    RIEGLThread*        getCurrentThread() const;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   514
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   515
    RIEGLThread*        getThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   516
    void                destroyThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   517
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   518
    bool                isInUse(const void* image) const;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   519
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   520
private:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   521
	EGL(const EGL&);						// Not allowed.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   522
	const EGL& operator=(const EGL&);		// Not allowed.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   523
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   524
	Array<RIEGLThread*>		m_threads;			//threads that have called EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   525
	Array<RIEGLThread*>		m_currentThreads;	//threads that have a bound context
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   526
	Array<RIEGLDisplay*>	m_displays;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   527
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   528
	int                     m_referenceCount;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   529
};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   530
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   531
EGL::EGL() :
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   532
	m_threads(),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   533
	m_currentThreads(),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   534
	m_displays(),
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   535
	m_referenceCount(0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   536
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   537
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   538
EGL::~EGL()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   539
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   540
	for(int i=0;i<m_displays.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   541
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   542
		RI_DELETE(m_displays[i]);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   543
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   544
	for(int i=0;i<m_threads.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   545
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   546
		RI_DELETE(m_threads[i]);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   547
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   548
	//currentThreads contain just pointers to threads we just deleted
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   549
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   550
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   551
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   552
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   553
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   554
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   555
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   556
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   557
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   558
//static EGL* g_egl = NULL;	//never use this directly
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   559
EGL* getEGL()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   560
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   561
	/*if(!g_egl)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   562
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   563
		try
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   564
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   565
			g_egl = RI_NEW(EGL, ());				//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   566
			g_egl->addReference();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   567
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   568
		catch(std::bad_alloc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   569
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   570
			g_egl = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   571
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   572
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   573
	return g_egl;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   574
	*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   575
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   576
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   577
	//use TLS to store static global g_egl
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   578
	EGL* pEgl=NULL; 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   579
	if((pEgl = static_cast<EGL*>(Dll::Tls()))==NULL)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   580
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   581
		//create TLS instance
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   582
		pEgl = RI_NEW(EGL, ());
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   583
		Dll::SetTls(pEgl);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   584
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   585
	return pEgl;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   586
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   587
	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   588
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   589
static void releaseEGL()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   590
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   591
/*
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   592
	if(g_egl)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   593
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   594
		if(!g_egl->removeReference())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   595
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   596
			RI_DELETE(g_egl);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   597
			g_egl = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   598
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   599
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   600
	*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   601
	EGL* pEgl = static_cast<EGL*>(Dll::Tls());
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   602
	if (pEgl)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   603
		delete pEgl; 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   604
	Dll::SetTls(NULL);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   605
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   606
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   607
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   608
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   609
* \brief	Given a display ID, return the corresponding object, or NULL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   610
*			if the ID hasn't been initialized.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   611
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   612
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   613
* \note		if egl has been initialized for this display, the display ID can
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   614
*			be found from egl->m_displays
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   615
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   616
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   617
RIEGLDisplay* EGL::getDisplay(EGLDisplay displayID) const
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   618
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   619
	for(int i=0;i<m_displays.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   620
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   621
		if(displayID == m_displays[i]->getID())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   622
			return m_displays[i];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   623
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   624
	return NULL;		//error: the display hasn't been eglInitialized
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   625
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   626
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   627
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   628
* \brief	return EGLDisplay for the current context
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   629
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   630
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   631
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   632
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   633
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   634
EGLDisplay EGL::findDisplay(EGLContext ctx) const
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   635
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   636
	for(int i=0;i<m_displays.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   637
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   638
        if(m_displays[i]->contextExists(ctx))
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   639
            return m_displays[i]->getID();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   640
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   641
    return EGL_NO_DISPLAY;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   642
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   643
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   644
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   645
* \brief	return an EGL thread struct for the thread made current, or
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   646
*            NULL if there's no current context.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   647
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   648
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   649
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   650
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   651
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   652
RIEGLThread* EGL::getCurrentThread() const
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   653
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   654
	void* currentThreadID = OSGetCurrentThreadID();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   655
	for(int i=0;i<m_currentThreads.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   656
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   657
		if(currentThreadID == m_currentThreads[i]->getThreadID())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   658
			return m_currentThreads[i];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   659
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   660
	return NULL;		//thread is not current
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   661
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   662
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   663
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   664
* \brief	return an EGL thread struct corresponding to current OS thread.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   665
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   666
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   667
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   668
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   669
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   670
RIEGLThread* EGL::getThread()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   671
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   672
	void* currentThreadID = OSGetCurrentThreadID();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   673
	for(int i=0;i<m_threads.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   674
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   675
		if(currentThreadID == m_threads[i]->getThreadID())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   676
			return m_threads[i];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   677
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   678
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   679
	//EGL doesn't have a struct for the thread yet, add it to EGL's list
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   680
	RIEGLThread* newThread = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   681
	try
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   682
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   683
		newThread = RI_NEW(RIEGLThread, (OSGetCurrentThreadID()));	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   684
		m_threads.push_back(newThread);	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   685
		return newThread;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   686
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   687
	catch(std::bad_alloc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   688
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   689
		RI_DELETE(newThread);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   690
		return NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   691
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   692
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   693
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   694
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   695
* \brief	destroy an EGL thread struct
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   696
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   697
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   698
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   699
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   700
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   701
void EGL::destroyThread()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   702
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   703
	void* currentThreadID = OSGetCurrentThreadID();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   704
	for(int i=0;i<m_threads.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   705
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   706
		if(currentThreadID == m_threads[i]->getThreadID())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   707
        {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   708
            RIEGLThread* thread = m_threads[i];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   709
            bool res = m_threads.remove(thread);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   710
            RI_ASSERT(res);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   711
            RI_UNREF(res);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   712
            RI_DELETE(thread);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   713
            break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   714
        }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   715
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   716
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   717
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   718
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   719
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   720
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   721
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   722
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   723
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   724
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   725
bool EGL::isInUse(const void* image) const
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   726
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   727
    for(int i=0;i<m_currentThreads.size();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   728
    {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   729
        RIEGLSurface* s = m_currentThreads[i]->getCurrentSurface();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   730
        if(s && s->getDrawable() && s->getDrawable()->isInUse((Image*)image))
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   731
            return true;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   732
    }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   733
    return false;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   734
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   735
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   736
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   737
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   738
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   739
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   740
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   741
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   742
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   743
#define EGL_GET_DISPLAY(DISPLAY, RETVAL) \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   744
	OSAcquireMutex(); \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   745
	EGL* egl = getEGL(); \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   746
    if(!egl) \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   747
    { \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   748
		OSReleaseMutex(); \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   749
		return RETVAL; \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   750
    } \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   751
	RIEGLDisplay* display = egl->getDisplay(DISPLAY); \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   752
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   753
#define EGL_GET_EGL(RETVAL) \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   754
	OSAcquireMutex(); \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   755
	EGL* egl = getEGL(); \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   756
    if(!egl) \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   757
    { \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   758
		OSReleaseMutex(); \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   759
		return RETVAL; \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   760
    } \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   761
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   762
#define EGL_IF_ERROR(COND, ERRORCODE, RETVAL) \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   763
	if(COND) { eglSetError(egl, ERRORCODE); OSReleaseMutex(); return RETVAL; } \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   764
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   765
#define EGL_RETURN(ERRORCODE, RETVAL) \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   766
	{ \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   767
		eglSetError(egl, ERRORCODE); \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   768
		OSReleaseMutex(); \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   769
		return RETVAL; \
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   770
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   771
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   772
// Note: egl error handling model differs from OpenVG. The latest error is stored instead of the oldest one.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   773
static void eglSetError(EGL* egl, EGLint error)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   774
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   775
	RIEGLThread* thread = egl->getThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   776
	if(thread)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   777
		thread->setError(error);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   778
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   779
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   780
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   781
* \brief	Returns the OpenVG context current to the calling thread.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   782
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   783
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   784
* \note		This function is always called from a mutexed API function
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   785
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   786
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   787
void* eglvgGetCurrentVGContext(void)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   788
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   789
	EGL* egl = getEGL();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   790
    if(egl)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   791
    {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   792
        RIEGLThread* thread = egl->getCurrentThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   793
        if(thread)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   794
        {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   795
            RI_ASSERT(thread->getCurrentContext() && thread->getCurrentSurface());
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   796
            return thread->getCurrentContext()->getVGContext();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   797
        }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   798
    }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   799
	return NULL;	//not initialized or made current
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   800
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   801
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   802
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   803
* \brief	Check if the image is current in any of the displays
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   804
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   805
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   806
* \note		This function is always called from a mutexed API function
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   807
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   808
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   809
bool eglvgIsInUse(void* image)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   810
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   811
	EGL* egl = getEGL();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   812
    if(egl)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   813
    {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   814
        return egl->isInUse(image);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   815
    }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   816
	return false;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   817
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   818
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   819
//helper functions
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   820
RIEGLContext* CastToRIEGLContext(EGLContext aCtxId)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   821
  {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   822
  return (RIEGLContext*)(aCtxId);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   823
  }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   824
EGLContext CastFromRIEGLContext(RIEGLContext* aCtx)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   825
  {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   826
  return (EGLContext)(aCtx);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   827
  }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   828
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   829
RIEGLSurface* CastToRIEGLSurface(EGLSurface aSurfaceId)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   830
  {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   831
  return (RIEGLSurface*)(aSurfaceId);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   832
  }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   833
EGLSurface CastFromRIEGLSurface(RIEGLSurface* aSurface)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   834
  {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   835
  return (EGLSurface)(aSurface);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   836
  }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   837
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   838
Image* CastToImage(EGLClientBuffer aBufferId)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   839
  {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   840
  return (Image*)(aBufferId);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   841
  }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   842
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   843
EGLClientBuffer CastFromImage(Image* aBUffer)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   844
  {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   845
  return (EGLClientBuffer)(aBUffer);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   846
  }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   847
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   848
//==============================================================================================
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   849
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   850
}	//namespace OpenVGRI
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   851
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   852
using namespace OpenVGRI;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   853
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   854
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   855
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   856
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   857
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   858
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   859
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   860
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   861
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   862
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   863
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   864
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   865
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   866
RI_APIENTRY EGLint do_eglGetError()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   867
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   868
EGLint eglGetError()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   869
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   870
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   871
    OSAcquireMutex();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   872
    EGLint ret = EGL_SUCCESS;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   873
	EGL* egl = getEGL();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   874
    if(egl)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   875
    {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   876
        RIEGLThread* thread = egl->getThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   877
        if(thread)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   878
            ret = thread->getError();	//initialized, return error code
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   879
    }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   880
    else ret = EGL_NOT_INITIALIZED;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   881
    OSReleaseMutex();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   882
    return ret;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   883
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   884
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   885
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   886
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   887
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   888
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   889
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   890
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   891
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   892
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   893
RI_APIENTRY EGLDisplay do_eglGetDisplay(EGLNativeDisplayType display_id)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   894
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   895
EGLDisplay eglGetDisplay(EGLNativeDisplayType display_id)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   896
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   897
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   898
    return OSGetDisplay(display_id);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   899
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   900
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   901
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   902
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   903
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   904
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   905
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   906
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   907
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   908
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   909
RI_APIENTRY EGLBoolean do_eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   910
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   911
EGLBoolean eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   912
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   913
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   914
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   915
	EGL_IF_ERROR(display, EGL_SUCCESS, EGL_TRUE);	//already initialized
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   916
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   917
	//create the current display
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   918
	//if a context and a surface are bound by the time of eglTerminate, they remain bound until eglMakeCurrent is called
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   919
	RIEGLDisplay* newDisplay = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   920
	try
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   921
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   922
		newDisplay = RI_NEW(RIEGLDisplay, (dpy));	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   923
		egl->addDisplay(newDisplay);	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   924
		display = newDisplay;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   925
		RI_ASSERT(display);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   926
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   927
	catch(std::bad_alloc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   928
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   929
		RI_DELETE(newDisplay);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   930
		EGL_RETURN(EGL_BAD_ALLOC, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   931
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   932
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   933
	if(major) *major = 1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   934
	if(minor) *minor = 2;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   935
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   936
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   937
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   938
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   939
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   940
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   941
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   942
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   943
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   944
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   945
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   946
RI_APIENTRY EGLBoolean do_eglTerminate(EGLDisplay dpy)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   947
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   948
EGLBoolean eglTerminate(EGLDisplay dpy)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   949
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   950
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   951
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   952
	EGL_IF_ERROR(!display, EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   953
    egl->removeDisplay(display);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   954
    RI_DELETE(display);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   955
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   956
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   957
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   958
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   959
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   960
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   961
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   962
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   963
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   964
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   965
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   966
RI_APIENTRY const char *do_eglQueryString(EGLDisplay dpy, EGLint name)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   967
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   968
const char *eglQueryString(EGLDisplay dpy, EGLint name)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   969
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   970
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   971
	EGL_GET_DISPLAY(dpy, NULL);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   972
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, NULL);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   973
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   974
	static const char apis[] = "OpenVG";
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   975
	static const char extensions[] = "";
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   976
	static const char vendor[] = "Khronos Group";
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   977
	static const char version[] = "1.3";
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   978
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   979
	const char* ret = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   980
	switch(name)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   981
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   982
	case EGL_CLIENT_APIS:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   983
		ret = apis;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   984
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   985
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   986
	case EGL_EXTENSIONS:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   987
		ret = extensions;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   988
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   989
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   990
	case EGL_VENDOR:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   991
		ret = vendor;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   992
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   993
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   994
	case EGL_VERSION:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   995
		ret = version;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   996
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   997
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   998
	default:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   999
		EGL_RETURN(EGL_BAD_PARAMETER, NULL);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1000
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1001
	EGL_RETURN(EGL_SUCCESS, ret);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1002
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1003
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1004
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1005
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1006
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1007
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1008
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1009
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1010
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1011
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1012
RI_APIENTRY EGLBoolean do_eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1013
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1014
EGLBoolean eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1015
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1016
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1017
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1018
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1019
	EGL_IF_ERROR(!num_config, EGL_BAD_PARAMETER, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1020
	if(!configs)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1021
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1022
		*num_config = display->getNumConfigs();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1023
		EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1024
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1025
	*num_config = RI_INT_MIN(config_size, display->getNumConfigs());
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1026
	for(int i=0;i<*num_config;i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1027
		configs[i] = display->getConfigByIdx(i).m_config;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1028
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1029
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1030
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1031
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1032
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1033
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1034
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1035
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1036
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1037
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1038
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1039
static bool smaller(EGLint c, EGLint filter)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1040
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1041
	return (filter != EGL_DONT_CARE) && (c < filter);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1042
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1043
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1044
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1045
RI_APIENTRY EGLBoolean do_eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1046
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1047
EGLBoolean eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1048
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1049
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1050
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1051
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1052
	EGL_IF_ERROR(!num_config, EGL_BAD_PARAMETER, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1053
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1054
	if(!configs)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1055
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1056
		*num_config = display->getNumConfigs();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1057
		EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1058
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1059
	*num_config = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1060
	if(!config_size)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1061
		EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1062
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1063
	int bufferSize = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1064
	int redSize = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1065
	int greenSize = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1066
	int blueSize = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1067
	int luminanceSize = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1068
	int alphaSize = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1069
	int colorBufferType = EGL_RGB_BUFFER;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1070
	int configID = EGL_DONT_CARE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1071
	int sampleBuffers = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1072
	int samples = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1073
	if(attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1074
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1075
		for(int i=0;attrib_list[i] != EGL_NONE;i+=2)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1076
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1077
			switch(attrib_list[i])
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1078
			{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1079
			case EGL_BUFFER_SIZE:				//depth of the color buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1080
				bufferSize = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1081
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1082
			case EGL_RED_SIZE:					//bits of Red in the color buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1083
				redSize = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1084
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1085
			case EGL_GREEN_SIZE:				//bits of Green in the color buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1086
				greenSize = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1087
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1088
			case EGL_BLUE_SIZE:					//bits of Blue in the color buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1089
				blueSize = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1090
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1091
			case EGL_LUMINANCE_SIZE:			//bits of Luminance in the color buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1092
				luminanceSize = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1093
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1094
			case EGL_ALPHA_SIZE:				//bits of Alpha in the color buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1095
				alphaSize = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1096
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1097
			case EGL_ALPHA_MASK_SIZE:			//bits of Alpha in the alpha mask buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1098
				if(attrib_list[i+1] > 8)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1099
					EGL_RETURN(EGL_SUCCESS, EGL_TRUE);	//not supported
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1100
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1101
			case EGL_COLOR_BUFFER_TYPE:			//enum color buffer type (EGL_RGB_BUFFER, EGL_LUMINANCE_BUFFER)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1102
				EGL_IF_ERROR(attrib_list[i+1] != EGL_RGB_BUFFER && attrib_list[i+1] != EGL_LUMINANCE_BUFFER && attrib_list[i+1] != EGL_DONT_CARE, EGL_BAD_ATTRIBUTE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1103
				colorBufferType = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1104
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1105
			case EGL_CONFIG_ID:					//unique EGLConfig identifier
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1106
				configID = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1107
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1108
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1109
			case EGL_SAMPLE_BUFFERS:			//integer number of multisample buffers
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1110
				sampleBuffers = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1111
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1112
			case EGL_SAMPLES:					//integer number of samples per pixel
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1113
				samples = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1114
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1115
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1116
			case EGL_BIND_TO_TEXTURE_RGB:		//boolean True if bindable to RGB textures. (always EGL_FALSE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1117
			case EGL_BIND_TO_TEXTURE_RGBA:		//boolean True if bindable to RGBA textures. (always EGL_FALSE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1118
			case EGL_DEPTH_SIZE:				//integer bits of Z in the depth buffer (always 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1119
			case EGL_LEVEL:						//integer frame buffer level (always 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1120
			case EGL_NATIVE_RENDERABLE:			//boolean EGL TRUE if native rendering APIs can render to surface (always EGL_FALSE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1121
			case EGL_STENCIL_SIZE:				//integer bits of Stencil in the stencil buffer (always 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1122
				if(attrib_list[i+1])
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1123
					EGL_RETURN(EGL_SUCCESS, EGL_TRUE);	//not supported
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1124
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1125
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1126
			case EGL_CONFIG_CAVEAT:				//enum any caveats for the configuration (always EGL_NONE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1127
			case EGL_NATIVE_VISUAL_TYPE:		//integer native visual type of the associated visual (always EGL_NONE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1128
				if(attrib_list[i+1] != EGL_NONE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1129
					EGL_RETURN(EGL_SUCCESS, EGL_TRUE);	//not supported
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1130
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1131
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1132
			case EGL_MAX_SWAP_INTERVAL:			//integer maximum swap interval (always 1)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1133
			case EGL_MIN_SWAP_INTERVAL:			//integer minimum swap interval (always 1)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1134
				if(attrib_list[i+1] != 1)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1135
					EGL_RETURN(EGL_SUCCESS, EGL_TRUE);	//not supported
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1136
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1137
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1138
			case EGL_RENDERABLE_TYPE:			//bitmask which client rendering APIs are supported. (always EGL_OPENVG_BIT)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1139
				if(!(attrib_list[i+1] & EGL_OPENVG_BIT))
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1140
					EGL_RETURN(EGL_SUCCESS, EGL_TRUE);	//not supported
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1141
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1142
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1143
			case EGL_SURFACE_TYPE:				//bitmask which types of EGL surfaces are supported. (always EGL_WINDOW_BIT | EGL_PIXMAP_BIT | EGL_PBUFFER_BIT | EGL_VG_COLORSPACE_LINEAR_BIT | EGL_VG_ALPHA_FORMAT_PRE_BIT)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1144
				break;	//all types are always supported
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1145
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1146
			case EGL_TRANSPARENT_TYPE:			//enum type of transparency supported (always EGL_NONE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1147
			case EGL_NATIVE_VISUAL_ID:			//integer handle of corresponding native visual (always 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1148
			case EGL_MAX_PBUFFER_WIDTH:			//integer maximum width of pbuffer (always INT_MAX)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1149
			case EGL_MAX_PBUFFER_HEIGHT:		//integer maximum height of pbuffer (always INT_MAX)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1150
			case EGL_MAX_PBUFFER_PIXELS:		//integer maximum size of pbuffer (always INT_MAX)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1151
			case EGL_TRANSPARENT_RED_VALUE:		//integer transparent red value (undefined)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1152
			case EGL_TRANSPARENT_GREEN_VALUE:	//integer transparent green value (undefined)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1153
			case EGL_TRANSPARENT_BLUE_VALUE:	//integer transparent blue value (undefined)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1154
				break;	//ignored
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1155
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1156
			default:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1157
				EGL_RETURN(EGL_BAD_ATTRIBUTE, EGL_FALSE);	//unknown attribute
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1158
			}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1159
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1160
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1161
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1162
	if(configID && configID != EGL_DONT_CARE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1163
	{	//if CONFIG_ID is defined, ignore the rest of the attribs
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1164
        for(int i=0;i<EGL_NUMCONFIGS;i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1165
        {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1166
            if(display->getConfigByIdx(i).m_configID == configID)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1167
            {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1168
                *num_config = 1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1169
                *configs = display->getConfigByIdx(i).m_config;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1170
            }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1171
        }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1172
		EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1173
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1174
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1175
	//go through all configs, add passed configs to return list
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1176
    //TODO take alpha mask size into account
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1177
	EGLConfig found[EGL_NUMCONFIGS];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1178
    int keys[EGL_NUMCONFIGS];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1179
	int numFound = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1180
	for(int i=0;i<display->getNumConfigs();i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1181
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1182
		const RIEGLConfig& c = display->getConfigByIdx(i);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1183
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1184
		int colorBits = c.m_desc.redBits + c.m_desc.greenBits + c.m_desc.blueBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1185
		int luminanceBits = c.m_desc.luminanceBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1186
		int configBufferSize;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1187
		if(colorBits)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1188
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1189
			RI_ASSERT(!luminanceBits);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1190
			colorBits += c.m_desc.alphaBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1191
			configBufferSize = colorBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1192
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1193
		else if(luminanceBits)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1194
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1195
			luminanceBits += c.m_desc.alphaBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1196
			configBufferSize = luminanceBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1197
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1198
		else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1199
		{	//alpha only surface
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1200
			colorBits = c.m_desc.alphaBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1201
			luminanceBits = c.m_desc.alphaBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1202
			configBufferSize = colorBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1203
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1204
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1205
		if (smaller(configBufferSize, bufferSize))
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1206
			continue;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1207
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1208
		int configSampleBuffers = c.m_samples == 1 ? 0 : 1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1209
		if (smaller(configSampleBuffers, sampleBuffers))
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1210
			continue;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1211
		if (smaller(c.m_samples, samples))
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1212
			continue;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1213
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1214
		if (smaller(c.m_desc.redBits, redSize)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1215
			|| smaller(c.m_desc.greenBits, greenSize)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1216
			|| smaller(c.m_desc.blueBits, blueSize) 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1217
			|| smaller(c.m_desc.alphaBits, alphaSize) )
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1218
			continue;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1219
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1220
		if (smaller(c.m_desc.luminanceBits, luminanceSize))
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1221
			continue;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1222
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1223
		if ((colorBufferType == EGL_RGB_BUFFER && !colorBits) ||
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1224
			(colorBufferType == EGL_LUMINANCE_BUFFER && !luminanceBits))
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1225
			continue;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1226
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1227
		int sortKey = c.m_configID;	//sort from smaller to larger
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1228
		int sortBits = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1229
		if(redSize != 0 && redSize != EGL_DONT_CARE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1230
			sortBits += c.m_desc.redBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1231
		if(greenSize != 0 && greenSize != EGL_DONT_CARE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1232
			sortBits += c.m_desc.greenBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1233
		if(blueSize != 0 && blueSize != EGL_DONT_CARE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1234
			sortBits += c.m_desc.blueBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1235
		if(alphaSize != 0 && alphaSize != EGL_DONT_CARE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1236
			sortBits += c.m_desc.alphaBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1237
		if(luminanceSize != 0 && luminanceSize != EGL_DONT_CARE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1238
			sortBits += c.m_desc.luminanceBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1239
		RI_ASSERT(c.m_configID <= EGL_NUMCONFIGS);	//if there are more configs, increase the shift value
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1240
		RI_ASSERT(sortBits <= 32);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1241
		sortKey += (32-sortBits) << 4;	//sort from larger to smaller
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1242
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1243
		found[numFound] = c.m_config;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1244
		keys[numFound++] = sortKey;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1245
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1246
	if(!numFound)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1247
		EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1248
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1249
	//sort return list into increasing order
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1250
	for(int e=0;e<numFound-1;e++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1251
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1252
		for(int f=e+1;f<numFound;f++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1253
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1254
			if(keys[e] > keys[f])
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1255
			{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1256
                EGLConfig tmp = found[e];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1257
                found[e] = found[f];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1258
                found[f] = tmp;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1259
				RI_INT_SWAP(keys[e], keys[f]);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1260
			}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1261
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1262
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1263
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1264
	//write configs into return array
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1265
	numFound = RI_INT_MIN(numFound, config_size);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1266
	for(int i=0;i<numFound;i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1267
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1268
		configs[i] = found[i];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1269
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1270
	*num_config = numFound;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1271
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1272
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1273
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1274
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1275
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1276
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1277
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1278
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1279
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1280
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1281
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1282
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1283
RI_APIENTRY EGLBoolean do_eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1284
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1285
EGLBoolean eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1286
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1287
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1288
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1289
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1290
	EGL_IF_ERROR(!display->configExists(config), EGL_BAD_CONFIG, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1291
	const RIEGLConfig& c = display->getConfig(config);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1292
	switch(attribute)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1293
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1294
	case EGL_BUFFER_SIZE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1295
		*value = RI_INT_MAX(c.m_desc.redBits + c.m_desc.greenBits + c.m_desc.blueBits + c.m_desc.alphaBits, c.m_desc.luminanceBits + c.m_desc.alphaBits);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1296
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1297
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1298
	case EGL_RED_SIZE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1299
		*value = c.m_desc.redBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1300
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1301
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1302
	case EGL_GREEN_SIZE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1303
		*value = c.m_desc.greenBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1304
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1305
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1306
	case EGL_BLUE_SIZE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1307
		*value = c.m_desc.blueBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1308
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1309
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1310
	case EGL_LUMINANCE_SIZE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1311
		*value = c.m_desc.luminanceBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1312
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1313
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1314
	case EGL_ALPHA_SIZE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1315
		*value = c.m_desc.alphaBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1316
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1317
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1318
	case EGL_ALPHA_MASK_SIZE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1319
		*value = c.m_maskBits;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1320
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1321
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1322
	case EGL_BIND_TO_TEXTURE_RGB:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1323
	case EGL_BIND_TO_TEXTURE_RGBA:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1324
		*value = EGL_FALSE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1325
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1326
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1327
	case EGL_COLOR_BUFFER_TYPE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1328
		if(c.m_desc.redBits)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1329
			*value = EGL_RGB_BUFFER;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1330
		else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1331
			*value = EGL_LUMINANCE_BUFFER;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1332
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1333
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1334
	case EGL_CONFIG_CAVEAT:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1335
		*value = EGL_NONE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1336
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1337
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1338
	case EGL_CONFIG_ID:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1339
		*value = c.m_configID;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1340
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1341
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1342
	case EGL_DEPTH_SIZE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1343
		*value = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1344
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1345
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1346
	case EGL_LEVEL:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1347
		*value = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1348
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1349
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1350
	case EGL_MAX_PBUFFER_WIDTH:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1351
	case EGL_MAX_PBUFFER_HEIGHT:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1352
		*value = 16384;			//NOTE arbitrary maximum
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1353
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1354
		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1355
	case EGL_MAX_PBUFFER_PIXELS:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1356
		*value = 16384*16384;	//NOTE arbitrary maximum
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1357
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1358
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1359
	case EGL_MAX_SWAP_INTERVAL:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1360
	case EGL_MIN_SWAP_INTERVAL:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1361
		*value = 1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1362
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1363
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1364
	case EGL_NATIVE_RENDERABLE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1365
		*value = EGL_FALSE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1366
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1367
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1368
	case EGL_NATIVE_VISUAL_ID:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1369
		*value = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1370
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1371
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1372
	case EGL_NATIVE_VISUAL_TYPE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1373
		*value = EGL_NONE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1374
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1375
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1376
	case EGL_RENDERABLE_TYPE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1377
		*value = EGL_OPENVG_BIT;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1378
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1379
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1380
	case EGL_SAMPLE_BUFFERS:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1381
		*value = c.m_samples > 1 ? 1 : 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1382
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1383
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1384
	case EGL_SAMPLES:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1385
		*value = c.m_samples > 1 ? c.m_samples : 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1386
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1387
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1388
	case EGL_STENCIL_SIZE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1389
		*value = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1390
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1391
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1392
	case EGL_SURFACE_TYPE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1393
		*value = EGL_WINDOW_BIT | EGL_PIXMAP_BIT | EGL_PBUFFER_BIT | EGL_VG_COLORSPACE_LINEAR_BIT | EGL_VG_ALPHA_FORMAT_PRE_BIT;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1394
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1395
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1396
	case EGL_TRANSPARENT_TYPE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1397
		*value = EGL_NONE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1398
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1399
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1400
	case EGL_TRANSPARENT_RED_VALUE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1401
	case EGL_TRANSPARENT_GREEN_VALUE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1402
	case EGL_TRANSPARENT_BLUE_VALUE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1403
		*value = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1404
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1405
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1406
    case EGL_CONFORMANT:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1407
        *value = EGL_OPENVG_BIT;  //TODO return proper value
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1408
        break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1409
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1410
	default:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1411
		EGL_RETURN(EGL_BAD_ATTRIBUTE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1412
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1413
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1414
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1415
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1416
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1417
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1418
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1419
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1420
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1421
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1422
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1423
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1424
RI_APIENTRY EGLSurface do_eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1425
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1426
EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1427
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1428
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1429
	EGL_GET_DISPLAY(dpy, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1430
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1431
	EGL_IF_ERROR(!display->configExists(config), EGL_BAD_CONFIG, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1432
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1433
	int renderBuffer = EGL_BACK_BUFFER;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1434
	int colorSpace = EGL_VG_COLORSPACE_sRGB;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1435
	int alphaFormat = EGL_VG_ALPHA_FORMAT_NONPRE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1436
	if(attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1437
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1438
		for(int i=0;attrib_list[i] != EGL_NONE;i+=2)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1439
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1440
			switch(attrib_list[i])
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1441
			{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1442
			case EGL_RENDER_BUFFER:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1443
				renderBuffer = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1444
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1445
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1446
			case EGL_VG_COLORSPACE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1447
				colorSpace = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1448
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1449
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1450
			case EGL_VG_ALPHA_FORMAT:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1451
				alphaFormat = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1452
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1453
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1454
			default:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1455
				EGL_RETURN(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1456
			}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1457
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1458
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1459
	//we ignore the renderBuffer parameter since we can only render to double buffered surfaces
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1460
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1461
	//TODO If the attributes of win do not correspond to config, then an EGL BAD MATCH error is generated.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1462
	//TODO If there is already an EGLConfig associated with win (as a result of a previous eglCreateWindowSurface call), then an EGL BAD ALLOC error is generated
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1463
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1464
    void* wc = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1465
    Drawable* d = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1466
	RIEGLSurface* s = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1467
	try
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1468
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1469
        wc = OSCreateWindowContext(win);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1470
		RI_ASSERT(wc);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1471
		//TODO what should happen if window width or height is zero?
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1472
		int windowWidth = 0, windowHeight = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1473
		OSGetWindowSize(wc, windowWidth, windowHeight);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1474
        bool isWindow = OSIsWindow(wc);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1475
		if(windowWidth <= 0 || windowHeight <= 0 || !isWindow)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1476
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1477
            OSDestroyWindowContext(wc);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1478
            EGL_IF_ERROR(!isWindow, EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1479
			EGL_IF_ERROR(windowWidth <= 0 || windowHeight <= 0, EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1480
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1481
		d = RI_NEW(Drawable, (display->getConfig(config).configToDescriptor((colorSpace == EGL_VG_COLORSPACE_LINEAR) ? false : true, (alphaFormat == EGL_VG_ALPHA_FORMAT_PRE) ? true : false), windowWidth, windowHeight, display->getConfig(config).m_samples, display->getConfig(config).m_maskBits));	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1482
		RI_ASSERT(d);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1483
		s = RI_NEW(RIEGLSurface,(wc, config, d, false, renderBuffer));	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1484
		RI_ASSERT(s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1485
		s->addReference();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1486
		display->addSurface(s);	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1487
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1488
	catch(std::bad_alloc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1489
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1490
        OSDestroyWindowContext(wc);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1491
        RI_DELETE(d);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1492
        RI_DELETE(s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1493
		EGL_RETURN(EGL_BAD_ALLOC, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1494
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1495
	EGL_RETURN(EGL_SUCCESS, (EGLSurface)s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1496
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1497
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1498
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1499
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1500
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1501
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1502
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1503
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1504
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1505
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1506
RI_APIENTRY EGLSurface do_eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1507
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1508
EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1509
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1510
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1511
	EGL_GET_DISPLAY(dpy, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1512
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1513
	EGL_IF_ERROR(!display->configExists(config), EGL_BAD_CONFIG, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1514
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1515
	int width = 0, height = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1516
	bool largestPbuffer = false;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1517
	int colorSpace = EGL_VG_COLORSPACE_sRGB;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1518
	int alphaFormat = EGL_VG_ALPHA_FORMAT_NONPRE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1519
	if(attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1520
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1521
		for(int i=0;attrib_list[i] != EGL_NONE;i+=2)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1522
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1523
			switch(attrib_list[i])
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1524
			{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1525
			case EGL_WIDTH:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1526
				width = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1527
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1528
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1529
			case EGL_HEIGHT:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1530
				height = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1531
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1532
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1533
			case EGL_LARGEST_PBUFFER:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1534
				largestPbuffer = attrib_list[i+1] ? true : false;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1535
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1536
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1537
			case EGL_VG_COLORSPACE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1538
				colorSpace = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1539
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1540
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1541
			case EGL_VG_ALPHA_FORMAT:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1542
				alphaFormat = attrib_list[i+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1543
				break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1544
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1545
			case EGL_TEXTURE_FORMAT:	//config doesn't support OpenGL ES
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1546
			case EGL_TEXTURE_TARGET:	//config doesn't support OpenGL ES
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1547
			case EGL_MIPMAP_TEXTURE:	//config doesn't support OpenGL ES
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1548
			default:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1549
				EGL_RETURN(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1550
			}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1551
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1552
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1553
	EGL_IF_ERROR(width <= 0 || height <= 0, EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1554
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1555
    Drawable* d = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1556
	RIEGLSurface* s = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1557
	try
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1558
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1559
		d = RI_NEW(Drawable, (display->getConfig(config).configToDescriptor((colorSpace == EGL_VG_COLORSPACE_LINEAR) ? false : true, (alphaFormat == EGL_VG_ALPHA_FORMAT_PRE) ? true : false), width, height, display->getConfig(config).m_samples, display->getConfig(config).m_maskBits));	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1560
		RI_ASSERT(d);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1561
		s = RI_NEW(RIEGLSurface,(NULL, config, d, largestPbuffer, EGL_BACK_BUFFER));	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1562
		RI_ASSERT(s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1563
		s->addReference();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1564
		display->addSurface(s);	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1565
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1566
	catch(std::bad_alloc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1567
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1568
        RI_DELETE(d);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1569
        RI_DELETE(s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1570
		EGL_RETURN(EGL_BAD_ALLOC, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1571
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1572
	EGL_RETURN(EGL_SUCCESS, (EGLSurface)s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1573
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1574
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1575
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1576
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1577
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1578
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1579
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1580
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1581
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1582
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1583
RI_APIENTRY EGLSurface do_eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1584
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1585
EGLSurface eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1586
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1587
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1588
	EGL_GET_DISPLAY(dpy, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1589
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1590
	EGL_IF_ERROR(buftype != EGL_OPENVG_IMAGE, EGL_BAD_PARAMETER, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1591
	EGL_IF_ERROR(!buffer, EGL_BAD_PARAMETER, EGL_NO_SURFACE);	//TODO should also check if buffer really is a valid VGImage object (needs VG context for that)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1592
    Image* image = (Image*)buffer;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1593
	EGL_IF_ERROR(image->isInUse(), EGL_BAD_ACCESS, EGL_NO_SURFACE);	//buffer is in use by OpenVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1594
	EGL_IF_ERROR(!display->configExists(config), EGL_BAD_CONFIG, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1595
	EGL_IF_ERROR(attrib_list && attrib_list[0] != EGL_NONE, EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE);	//there are no valid attribs for OpenVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1596
	const Color::Descriptor& bc = ((Image*)buffer)->getDescriptor();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1597
	const Color::Descriptor& cc = display->getConfig(config).m_desc;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1598
	EGL_IF_ERROR(bc.redBits != cc.redBits || bc.greenBits != cc.greenBits || bc.blueBits != cc.blueBits ||
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1599
				 bc.alphaBits != cc.alphaBits || bc.luminanceBits != cc.luminanceBits, EGL_BAD_MATCH, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1600
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1601
	//TODO If buffer is already bound to another pbuffer, an EGL BAD ACCESS error is generated.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1602
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1603
    Drawable* d = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1604
	RIEGLSurface* s = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1605
	try
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1606
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1607
		d = RI_NEW(Drawable, (image, display->getConfig(config).m_maskBits));
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1608
		RI_ASSERT(d);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1609
		s = RI_NEW(RIEGLSurface,(NULL, config, d, false, EGL_BACK_BUFFER));	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1610
		RI_ASSERT(s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1611
		s->addReference();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1612
		display->addSurface(s);	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1613
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1614
	catch(std::bad_alloc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1615
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1616
        RI_DELETE(d);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1617
        RI_DELETE(s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1618
		EGL_RETURN(EGL_BAD_ALLOC, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1619
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1620
	EGL_RETURN(EGL_SUCCESS, (EGLSurface)s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1621
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1622
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1623
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1624
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1625
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1626
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1627
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1628
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1629
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1630
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1631
RI_APIENTRY EGLSurface do_eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1632
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1633
EGLSurface eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1634
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1635
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1636
    EGL_GET_DISPLAY(dpy, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1637
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1638
	EGL_IF_ERROR(!display->configExists(config), EGL_BAD_CONFIG, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1639
	//EGL_IF_ERROR(!pixmap || !isValidImageFormat(pixmap->format) || !pixmap->data || pixmap->width <= 0 || pixmap->height <= 0, EGL_BAD_NATIVE_PIXMAP, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1640
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1641
	RI_UNREF(attrib_list);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1642
	EGL_IF_ERROR(display->getConfig(config).m_samples != 1, EGL_BAD_MATCH, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1643
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1644
	//TODO If there is already an EGLSurface associated with pixmap (as a result of a previous eglCreatePixmapSurface call), then a EGL BAD ALLOC error is generated.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1645
	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1646
	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1647
	EGLint  width  = -1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1648
	EGLint  height = -1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1649
	EGLint  stride = -1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1650
	VGImageFormat format;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1651
	int* data = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1652
	EGLBoolean err = OSGetNativePixmapInfo(pixmap, &width, &height, &stride,&format, &data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1653
	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1654
    Drawable* d = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1655
	RIEGLSurface* s = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1656
	try
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1657
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1658
		d = RI_NEW(Drawable, (Color::formatToDescriptor(format), width, height, stride, (RIuint8*)data, display->getConfig(config).m_maskBits));	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1659
		RI_ASSERT(d);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1660
		s = RI_NEW(RIEGLSurface,(NULL, config, d, false, EGL_BACK_BUFFER));	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1661
		RI_ASSERT(s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1662
		s->addReference();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1663
		display->addSurface(s);	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1664
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1665
	catch(std::bad_alloc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1666
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1667
        RI_DELETE(d);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1668
        RI_DELETE(s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1669
		EGL_RETURN(EGL_BAD_ALLOC, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1670
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1671
	EGL_RETURN(EGL_SUCCESS, (EGLSurface)s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1672
	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1673
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1674
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1675
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1676
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1677
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1678
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1679
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1680
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1681
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1682
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1683
RI_APIENTRY EGLBoolean do_eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1684
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1685
EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1686
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1687
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1688
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1689
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1690
	EGL_IF_ERROR(!display->surfaceExists(surface), EGL_BAD_SURFACE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1691
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1692
    display->removeSurface((RIEGLSurface*)surface);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1693
	if(!((RIEGLSurface*)surface)->removeReference())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1694
		RI_DELETE((RIEGLSurface*)surface);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1695
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1696
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1697
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1698
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1699
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1700
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1701
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1702
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1703
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1704
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1705
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1706
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1707
RI_APIENTRY EGLBoolean do_eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1708
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1709
EGLBoolean eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1710
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1711
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1712
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1713
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1714
	EGL_IF_ERROR(!display->surfaceExists(surface), EGL_BAD_SURFACE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1715
	RI_UNREF(attribute);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1716
	RI_UNREF(value);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1717
	//do nothing
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1718
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1719
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1720
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1721
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1722
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1723
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1724
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1725
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1726
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1727
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1728
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1729
RI_APIENTRY EGLBoolean do_eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1730
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1731
EGLBoolean eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1732
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1733
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1734
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1735
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1736
	EGL_IF_ERROR(!display->surfaceExists(surface), EGL_BAD_SURFACE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1737
	//TODO give an error if value is NULL?
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1738
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1739
	RIEGLSurface* s = (RIEGLSurface*)surface;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1740
	switch(attribute)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1741
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1742
	case EGL_VG_ALPHA_FORMAT:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1743
		*value = (s->getDrawable()->getDescriptor().isPremultiplied()) ? EGL_VG_ALPHA_FORMAT_PRE : EGL_VG_ALPHA_FORMAT_NONPRE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1744
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1745
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1746
	case EGL_VG_COLORSPACE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1747
		*value = (s->getDrawable()->getDescriptor().isNonlinear()) ? EGL_VG_COLORSPACE_sRGB : EGL_VG_COLORSPACE_LINEAR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1748
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1749
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1750
	case EGL_CONFIG_ID:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1751
		*value = display->getConfig(s->getConfig()).m_configID;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1752
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1753
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1754
	case EGL_HEIGHT:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1755
		*value = s->getDrawable()->getHeight();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1756
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1757
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1758
	case EGL_HORIZONTAL_RESOLUTION:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1759
		*value = EGL_UNKNOWN;			//TODO Horizontal dot pitch
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1760
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1761
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1762
	case EGL_LARGEST_PBUFFER:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1763
		if(!s->getOSWindowContext())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1764
			*value = s->isLargestPbuffer() ? EGL_TRUE : EGL_FALSE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1765
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1766
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1767
	case EGL_MIPMAP_TEXTURE:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1768
		if(!s->getOSWindowContext())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1769
			*value = EGL_FALSE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1770
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1771
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1772
	case EGL_MIPMAP_LEVEL:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1773
		if(!s->getOSWindowContext())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1774
			*value = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1775
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1776
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1777
	case EGL_PIXEL_ASPECT_RATIO:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1778
		*value = EGL_UNKNOWN;			//TODO Display aspect ratio
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1779
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1780
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1781
	case EGL_RENDER_BUFFER:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1782
		*value = s->getRenderBuffer();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1783
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1784
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1785
	case EGL_SWAP_BEHAVIOR:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1786
		*value = EGL_BUFFER_PRESERVED;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1787
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1788
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1789
	case EGL_TEXTURE_FORMAT:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1790
		if(!s->getOSWindowContext())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1791
			*value = EGL_NO_TEXTURE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1792
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1793
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1794
	case EGL_TEXTURE_TARGET:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1795
		if(!s->getOSWindowContext())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1796
			*value = EGL_NO_TEXTURE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1797
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1798
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1799
	case EGL_VERTICAL_RESOLUTION:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1800
		*value = EGL_UNKNOWN;			//TODO Vertical dot pitch
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1801
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1802
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1803
	case EGL_WIDTH:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1804
		*value = s->getDrawable()->getWidth();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1805
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1806
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1807
	default:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1808
		EGL_RETURN(EGL_BAD_ATTRIBUTE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1809
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1810
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1811
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1812
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1813
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1814
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1815
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1816
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1817
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1818
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1819
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1820
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1821
RI_APIENTRY EGLContext do_eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1822
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1823
EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1824
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1825
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1826
	EGL_GET_DISPLAY(dpy, EGL_NO_CONTEXT);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1827
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_NO_CONTEXT);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1828
	EGL_IF_ERROR(!display->configExists(config), EGL_BAD_CONFIG, EGL_NO_CONTEXT);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1829
	RI_UNREF(attrib_list);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1830
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1831
	RIEGLThread* thread = egl->getThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1832
	if(!thread)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1833
		EGL_RETURN(EGL_BAD_ALLOC, EGL_NO_CONTEXT);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1834
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1835
	//creation of OpenGL ES contexts is not allowed in this implementation
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1836
	if(thread->getBoundAPI() != EGL_OPENVG_API)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1837
		EGL_RETURN(EGL_BAD_MATCH, EGL_NO_CONTEXT);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1838
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1839
    OpenVGRI::VGContext* vgctx = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1840
	RIEGLContext* c = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1841
	try
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1842
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1843
		vgctx = RI_NEW(OpenVGRI::VGContext, (share_context ? ((RIEGLContext*)share_context)->getVGContext() : NULL));	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1844
		c = RI_NEW(RIEGLContext, (vgctx, config));	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1845
		c->addReference();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1846
		display->addContext(c);	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1847
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1848
	catch(std::bad_alloc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1849
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1850
        RI_DELETE(vgctx);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1851
        RI_DELETE(c);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1852
		EGL_RETURN(EGL_BAD_ALLOC, EGL_NO_CONTEXT);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1853
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1854
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1855
	EGL_RETURN(EGL_SUCCESS, (EGLContext)c);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1856
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1857
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1858
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1859
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1860
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1861
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1862
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1863
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1864
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1865
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1866
RI_APIENTRY EGLBoolean do_eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1867
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1868
EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1869
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1870
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1871
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1872
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1873
	EGL_IF_ERROR(!display->contextExists(ctx), EGL_BAD_CONTEXT, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1874
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1875
	RIEGLContext* context = (RIEGLContext*)ctx;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1876
    display->removeContext(context);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1877
	if(!context->removeReference() )
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1878
		RI_DELETE(context);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1879
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1880
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1881
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1882
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1883
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1884
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1885
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1886
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1887
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1888
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1889
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1890
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1891
RI_APIENTRY EGLBoolean do_eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1892
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1893
EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1894
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1895
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1896
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1897
	EGL_IF_ERROR(ctx != EGL_NO_CONTEXT && !display->contextExists(ctx), EGL_BAD_CONTEXT, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1898
	EGL_IF_ERROR(draw != EGL_NO_SURFACE && !display->surfaceExists(draw), EGL_BAD_SURFACE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1899
	EGL_IF_ERROR(read != EGL_NO_SURFACE && !display->surfaceExists(read), EGL_BAD_SURFACE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1900
	EGL_IF_ERROR(draw != read, EGL_BAD_MATCH, EGL_FALSE);	//TODO what's the proper error code?
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1901
	EGL_IF_ERROR((draw != EGL_NO_SURFACE && ctx == EGL_NO_CONTEXT) || (draw == EGL_NO_SURFACE && ctx != EGL_NO_CONTEXT), EGL_BAD_MATCH, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1902
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1903
	RIEGLSurface* s = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1904
	RIEGLContext* c = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1905
	if(draw != EGL_NO_SURFACE && ctx != EGL_NO_CONTEXT)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1906
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1907
		EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1908
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1909
		s = (RIEGLSurface*)draw;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1910
		c = (RIEGLContext*)ctx;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1911
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1912
        //If either draw or read are pbuffers created with eglCreatePbufferFromClientBuffer, and the underlying bound client API buffers
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1913
        //are in use by the client API that created them, an EGL BAD ACCESS error is generated.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1914
		EGL_IF_ERROR(s->getDrawable()->isInUse(), EGL_BAD_ACCESS, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1915
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1916
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1917
		//TODO properly check compatibility of surface and context:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1918
		//-both have RGB or LUMINANCE configs
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1919
		//-buffer bit depths match
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1920
		//-configs support OpenVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1921
		//-both have the same display
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1922
		EGL_IF_ERROR(s->getConfig() != c->getConfig(), EGL_BAD_MATCH, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1923
		//TODO check if context or surfaces are already bound to another thread
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1924
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1925
		//If a native window underlying either draw or read is no longer valid, an EGL BAD NATIVE WINDOW error is generated.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1926
        EGL_IF_ERROR(s->getOSWindowContext() && !OSIsWindow(s->getOSWindowContext()), EGL_BAD_NATIVE_WINDOW, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1927
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1928
		//TODO If the previous context of the calling display has unflushed commands, and the previous surface is no longer valid, an EGL BAD CURRENT SURFACE error is generated. (can this happen?)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1929
		//TODO If the ancillary buffers for draw and read cannot be allocated, an EGL BAD ALLOC error is generated. (mask buffer?)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1930
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1931
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1932
	//check if the thread is current
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1933
	RIEGLThread* thread = egl->getCurrentThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1934
	if(thread)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1935
	{	//thread is current, release the old bindinds and remove the thread from the current thread list
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1936
		RIEGLContext* pc = thread->getCurrentContext();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1937
		RIEGLSurface* ps = thread->getCurrentSurface();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1938
		if(pc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1939
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1940
#ifdef BUILD_WITH_PRIVATE_OPENVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1941
			/*do_vg*/vgFlush();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1942
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1943
			vgFlush();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1944
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1945
			pc->getVGContext()->setDefaultDrawable(NULL);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1946
			if(!pc->removeReference())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1947
				RI_DELETE(pc);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1948
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1949
		if(ps)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1950
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1951
			if(!ps->removeReference())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1952
				RI_DELETE(ps);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1953
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1954
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1955
        egl->removeCurrentThread(thread);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1956
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1957
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1958
	if( c && s )
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1959
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1960
		//bind context and surface to the current display
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1961
		RIEGLThread* newThread = egl->getThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1962
		if(!newThread)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1963
			EGL_RETURN(EGL_BAD_ALLOC, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1964
        newThread->makeCurrent(c, s);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1965
		c->getVGContext()->setDefaultDrawable(s->getDrawable());
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1966
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1967
		try
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1968
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1969
			egl->addCurrentThread(newThread);	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1970
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1971
		catch(std::bad_alloc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1972
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1973
			EGL_RETURN(EGL_BAD_ALLOC, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1974
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1975
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1976
		c->addReference();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1977
		s->addReference();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1978
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1979
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1980
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1981
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1982
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1983
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1984
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1985
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1986
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1987
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1988
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1989
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1990
RI_APIENTRY EGLContext do_eglGetCurrentContext()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1991
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1992
EGLContext eglGetCurrentContext()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1993
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1994
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1995
    EGL_GET_EGL(EGL_NO_CONTEXT);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1996
	EGLContext ret = EGL_NO_CONTEXT;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1997
	RIEGLThread* thread = egl->getCurrentThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1998
	if(thread && thread->getBoundAPI() == EGL_OPENVG_API)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  1999
    {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2000
        ret = CastFromRIEGLContext(thread->getCurrentContext());
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2001
        RI_ASSERT(ret);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2002
    }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2003
	EGL_RETURN(EGL_SUCCESS, ret);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2004
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2005
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2006
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2007
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2008
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2009
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2010
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2011
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2012
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2013
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2014
RI_APIENTRY EGLSurface do_eglGetCurrentSurface(EGLint readdraw)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2015
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2016
EGLSurface eglGetCurrentSurface(EGLint readdraw)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2017
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2018
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2019
    EGL_GET_EGL(EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2020
	EGL_IF_ERROR(readdraw != EGL_READ && readdraw != EGL_DRAW, EGL_BAD_PARAMETER, EGL_NO_SURFACE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2021
	EGLContext ret = EGL_NO_SURFACE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2022
	RIEGLThread* thread = egl->getCurrentThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2023
	if(thread && thread->getBoundAPI() == EGL_OPENVG_API)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2024
    {
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2025
        ret = CastFromRIEGLSurface(thread->getCurrentSurface());
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2026
        RI_ASSERT(ret);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2027
    }
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2028
	EGL_RETURN(EGL_SUCCESS, ret);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2029
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2030
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2031
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2032
* \brief	Returns the current display
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2033
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2034
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2035
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2036
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2037
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2038
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2039
RI_APIENTRY EGLDisplay do_eglGetCurrentDisplay(void)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2040
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2041
EGLDisplay eglGetCurrentDisplay(void)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2042
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2043
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2044
    EGL_GET_EGL(EGL_NO_DISPLAY);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2045
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2046
	RIEGLThread* thread = egl->getCurrentThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2047
	if(!thread || thread->getBoundAPI() != EGL_OPENVG_API)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2048
		EGL_RETURN(EGL_SUCCESS, EGL_NO_DISPLAY);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2049
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2050
	RIEGLContext* ctx = thread->getCurrentContext();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2051
    RI_ASSERT(ctx);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2052
    EGLDisplay ret = egl->findDisplay(CastFromRIEGLContext(ctx));
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2053
	EGL_RETURN(EGL_SUCCESS, ret);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2054
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2055
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2056
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2057
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2058
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2059
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2060
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2061
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2062
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2063
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2064
RI_APIENTRY EGLBoolean do_eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint* value)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2065
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2066
EGLBoolean eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint* value)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2067
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2068
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2069
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2070
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2071
	EGL_IF_ERROR(!display->contextExists(ctx), EGL_BAD_CONTEXT, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2072
	EGL_IF_ERROR(attribute != EGL_CONFIG_ID && attribute != EGL_CONTEXT_CLIENT_TYPE, EGL_BAD_ATTRIBUTE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2073
	if(attribute == EGL_CONFIG_ID)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2074
		*value = display->getConfig(((RIEGLContext*)ctx)->getConfig()).m_configID;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2075
	if(attribute == EGL_CONTEXT_CLIENT_TYPE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2076
		*value = EGL_OPENVG_API;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2077
	// \todo [kalle 05/Jul/05] Handling of EGL_RENDER_BUFFER attribute is missing.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2078
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2079
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2080
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2081
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2082
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2083
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2084
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2085
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2086
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2087
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2088
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2089
RI_APIENTRY EGLBoolean do_eglBindAPI(EGLenum api)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2090
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2091
EGLBoolean eglBindAPI(EGLenum api)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2092
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2093
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2094
    EGL_GET_EGL(EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2095
	EGL_IF_ERROR(api != EGL_OPENVG_API && api != EGL_OPENGL_ES_API, EGL_BAD_PARAMETER, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2096
	RIEGLThread* thread = egl->getThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2097
	if(thread)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2098
		thread->bindAPI(api);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2099
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2100
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2101
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2102
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2103
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2104
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2105
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2106
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2107
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2108
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2109
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2110
RI_APIENTRY EGLenum do_eglQueryAPI(void)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2111
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2112
EGLenum eglQueryAPI(void)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2113
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2114
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2115
    EGL_GET_EGL(EGL_NONE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2116
	RIEGLThread* thread = egl->getThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2117
	if(thread)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2118
		EGL_RETURN(EGL_SUCCESS, thread->getBoundAPI());
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2119
	EGL_RETURN(EGL_SUCCESS, EGL_NONE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2120
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2121
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2122
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2123
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2124
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2125
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2126
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2127
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2128
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2129
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2130
RI_APIENTRY EGLBoolean do_eglWaitClient()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2131
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2132
EGLBoolean eglWaitClient()
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2133
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2134
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2135
    EGL_GET_EGL(EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2136
	RIEGLThread* thread = egl->getCurrentThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2137
	if(thread && thread->getBoundAPI() == EGL_OPENVG_API)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2138
#ifdef BUILD_WITH_PRIVATE_OPENVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2139
		/*do_vg*/vgFinish();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2140
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2141
		vgFinish();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2142
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2143
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2144
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2145
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2146
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2147
* \brief	Waits for OpenGL ES
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2148
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2149
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2150
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2151
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2152
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2153
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2154
RI_APIENTRY EGLBoolean do_eglWaitGL(void)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2155
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2156
EGLBoolean eglWaitGL(void)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2157
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2158
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2159
	return EGL_TRUE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2160
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2161
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2162
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2163
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2164
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2165
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2166
* \note		We don't support native rendering
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2167
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2168
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2169
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2170
RI_APIENTRY EGLBoolean do_eglWaitNative(EGLint engine)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2171
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2172
EGLBoolean eglWaitNative(EGLint engine)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2173
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2174
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2175
	RI_UNREF(engine);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2176
	return EGL_TRUE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2177
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2178
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2179
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2180
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2181
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2182
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2183
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2184
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2185
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2186
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2187
RI_APIENTRY EGLBoolean do_eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2188
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2189
EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2190
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2191
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2192
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2193
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2194
	EGL_IF_ERROR(!display->surfaceExists(surface), EGL_BAD_SURFACE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2195
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2196
	RIEGLSurface* s = (RIEGLSurface*)surface;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2197
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2198
	RIEGLThread* currentThread = egl->getCurrentThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2199
	EGL_IF_ERROR(!currentThread || currentThread->getCurrentSurface() != s, EGL_BAD_SURFACE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2200
	EGL_IF_ERROR(!OSIsWindow(s->getOSWindowContext()), EGL_BAD_NATIVE_WINDOW, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2201
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2202
#ifdef BUILD_WITH_PRIVATE_OPENVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2203
	/*do_vg*/vgFlush();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2204
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2205
	vgFlush();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2206
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2207
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2208
	if(!s->getOSWindowContext())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2209
	{	//do nothing for other than window surfaces (NOTE: single-buffered window surfaces should return immediately as well)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2210
		EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2211
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2212
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2213
	int windowWidth = 0, windowHeight = 0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2214
    OSGetWindowSize(s->getOSWindowContext(), windowWidth, windowHeight);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2215
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2216
	if(windowWidth != s->getDrawable()->getWidth() || windowHeight != s->getDrawable()->getHeight())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2217
	{	//resize the back buffer
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2218
		RIEGLContext* c = currentThread->getCurrentContext();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2219
		RI_ASSERT(c);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2220
		try
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2221
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2222
			s->getDrawable()->resize(windowWidth, windowHeight);	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2223
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2224
		catch(std::bad_alloc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2225
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2226
			c->getVGContext()->setDefaultDrawable(NULL);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2227
			EGL_RETURN(EGL_BAD_ALLOC, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2228
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2229
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2230
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2231
    OSBlitToWindow(s->getOSWindowContext(), s->getDrawable());
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2232
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2233
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2234
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2235
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2236
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2237
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2238
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2239
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2240
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2241
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2242
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2243
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2244
RI_APIENTRY EGLBoolean do_eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2245
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2246
EGLBoolean eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2247
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2248
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2249
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2250
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2251
	EGL_IF_ERROR(!display->surfaceExists(surface), EGL_BAD_SURFACE, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2252
	//EGL_IF_ERROR(!target || !isValidImageFormat(target->format) || !target->data || target->width <= 0 || target->height <= 0, EGL_BAD_NATIVE_PIXMAP, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2253
	EGLint  width  = -1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2254
	EGLint  height = -1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2255
	EGLint  stride = -1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2256
	VGImageFormat format;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2257
	int* data = NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2258
	EGLBoolean err = OSGetNativePixmapInfo(target, &width, &height, &stride,&format, &data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2259
	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2260
	TUint* fdata = (TUint*)((TUint)data + ( stride * ( height - 1  ) ) );	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2261
	try
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2262
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2263
		Image output(Color::formatToDescriptor(format), width, height, -stride, (RIuint8*)fdata);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2264
        output.addReference();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2265
		output.blit(((RIEGLSurface*)surface)->getDrawable()->getColorBuffer(), 0, 0, 0, 0, width, height);	//throws bad_alloc
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2266
        output.removeReference();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2267
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2268
	catch(std::bad_alloc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2269
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2270
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2271
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2272
	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2273
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2274
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2275
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2276
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2277
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2278
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2279
* \note		We support only swap interval one
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2280
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2281
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2282
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2283
RI_APIENTRY EGLBoolean do_eglSwapInterval(EGLDisplay dpy, EGLint interval)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2284
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2285
EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2286
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2287
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2288
	EGL_GET_DISPLAY(dpy, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2289
	EGL_IF_ERROR(!display, EGL_NOT_INITIALIZED, EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2290
	RI_UNREF(interval);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2291
	EGL_RETURN(EGL_SUCCESS, EGL_TRUE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2292
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2293
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2294
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2295
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2296
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2297
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2298
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2299
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2300
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2301
typedef void RI_Proc();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2302
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2303
//EGLAPI void (* EGLAPIENTRY      eglGetProcAddress(const char *procname))(void);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2304
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2305
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2306
RI_APIENTRY void (*do_eglGetProcAddress(const char *procname))(...)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2307
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2308
void (*eglGetProcAddress(const char *procname))(...)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2309
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2310
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2311
	if(!procname)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2312
		return NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2313
	return NULL;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2314
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2315
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2316
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2317
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2318
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2319
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2320
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2321
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2322
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2323
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2324
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2325
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2326
RI_APIENTRY EGLBoolean do_eglReleaseThread(void)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2327
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2328
EGLBoolean eglReleaseThread(void)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2329
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2330
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2331
    EGL_GET_EGL(EGL_FALSE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2332
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2333
	//check if the thread is current
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2334
	RIEGLThread* thread = egl->getCurrentThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2335
	if(thread)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2336
	{	//thread is current, release the old bindings and remove the thread from the current thread list
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2337
		RIEGLContext* pc = thread->getCurrentContext();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2338
		RIEGLSurface* ps = thread->getCurrentSurface();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2339
		if(pc)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2340
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2341
#ifdef BUILD_WITH_PRIVATE_OPENVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2342
			/*do_vg*/vgFlush();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2343
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2344
			vgFlush();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2345
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2346
			pc->getVGContext()->setDefaultDrawable(NULL);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2347
			if(!pc->removeReference())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2348
				RI_DELETE(pc);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2349
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2350
		if(ps)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2351
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2352
			if(!ps->removeReference())
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2353
				RI_DELETE(ps);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2354
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2355
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2356
        egl->removeCurrentThread(thread);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2357
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2358
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2359
    //destroy EGL's thread struct
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2360
    egl->destroyThread();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2361
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2362
	//destroy the EGL instance
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2363
	releaseEGL();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2364
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2365
	OSReleaseMutex();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2366
    OSDeinitMutex();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2367
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2368
	return EGL_SUCCESS;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2369
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2370
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2371
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2372
RI_APIENTRY EGLBoolean do_eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2373
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2374
EGLBoolean eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2375
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2376
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2377
	//not implemented
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2378
	RI_ASSERT(0);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2379
	return false;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2380
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2381
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2382
#ifdef BUILD_WITH_PRIVATE_EGL
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2383
RI_APIENTRY EGLBoolean do_eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2384
#else 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2385
EGLBoolean eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2386
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2387
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2388
	//not implemented
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2389
	RI_ASSERT(0);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2390
	return false;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2391
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2392
#undef EGL_NUMCONFIGS
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2393
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2394
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2395
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
  2396