--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/inc/egltestcommonutils.h Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,396 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @test
+*/
+
+
+#ifndef EGLTESTCOMMONUTILS_H
+#define EGLTESTCOMMONUTILS_H
+
+#include <w32std.h>
+#include <pixelformats.h>
+#include <EGL/eglext.h>
+#include <VG/openvg.h>
+
+
+/******************************************************************************/
+/*** ***/
+/*** Global constants and definitions for EGL Tests ***/
+/*** ***/
+/******************************************************************************/
+
+const TUidPixelFormat KDefaultSourceFormat = EUidPixelFormatARGB_8888_PRE;
+const VGImageFormat KDefaultSurfaceFormat = VG_sARGB_8888_PRE;
+
+const TInt KMaxEglConfigs = 1024;
+const TInt KTestNoMatchingConfig = -1714;
+
+enum TExtensionsGroups
+ {
+ EIsUndefined,
+ EIsRSgImage,
+ EIsEGL,
+ EIsVG,
+ EIsGLES
+ };
+
+/**
+ Provides an index into KConfigAttribs
+ */
+enum TEglTestConfig
+ {
+ EPixmapAttribsColor64K,
+ EPixmapAttribsColor16MU,
+ EPixmapAttribsColor16MAP,
+ EWindowAttribsColor64K,
+ EWindowAttribsColor16MA,
+ EWindowAttribsColor16MAP,
+ EPBufferAttribsColor64K,
+ EPBufferAttribsColor16MU,
+ EPBufferAttribsColor16MA,
+ EPBufferAttribsColor16MAP,
+ EPBufferAttribsColorGles64K,
+ EWindowAttribsColor16MA_Preserved,
+ EEglTestConfigMax // Must be the last item in the list.
+ };
+
+// Symbian config attributes for pixmaps / pbuffers / windows
+static const EGLint KConfigAttribs[EEglTestConfigMax][15] =
+ {
+ {
+ //EColor64K - Pixmap
+ EGL_BUFFER_SIZE, 16,
+ EGL_RED_SIZE, 5,
+ EGL_GREEN_SIZE, 6,
+ EGL_BLUE_SIZE, 5,
+ EGL_ALPHA_SIZE, 0,
+ EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+ EGL_SURFACE_TYPE, EGL_PIXMAP_BIT,
+ EGL_NONE
+ },
+ {
+ //EColor16MU - Pixmap
+ EGL_BUFFER_SIZE, 24,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 0,
+ EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+ EGL_SURFACE_TYPE, EGL_PIXMAP_BIT,
+ EGL_NONE
+ },
+ {
+ //EColor16MAP - Pixmap
+ EGL_BUFFER_SIZE, 32,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+ EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+ EGL_SURFACE_TYPE, EGL_PIXMAP_BIT | EGL_VG_COLORSPACE_LINEAR_BIT | EGL_VG_ALPHA_FORMAT_PRE_BIT,
+ EGL_NONE
+ },
+ {
+ //EWindowAttribsColor64K - Window
+ EGL_BUFFER_SIZE, 16,
+ EGL_RED_SIZE, 5,
+ EGL_GREEN_SIZE, 6,
+ EGL_BLUE_SIZE, 5,
+ EGL_ALPHA_SIZE, 0,
+ EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_NONE
+ },
+ {
+ //EWindowAttribsColor16MA - Window
+ EGL_BUFFER_SIZE, 32,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+ EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_NONE
+ },
+ {
+ //EWindowAttribsColor16MAP - Window
+ EGL_BUFFER_SIZE, 32,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+ EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_VG_ALPHA_FORMAT_PRE_BIT,
+ EGL_NONE
+ },
+ {
+ // EPBufferAttribsColor64K - PBuffer
+ EGL_BUFFER_SIZE, 16,
+ EGL_RED_SIZE, 5,
+ EGL_GREEN_SIZE, 6,
+ EGL_BLUE_SIZE, 5,
+ EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+ EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
+ EGL_NONE
+ },
+ {
+ // EPBufferAttribsColor16MU - PBuffer
+ EGL_BUFFER_SIZE, 24,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 0,
+ EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+ EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
+ EGL_NONE
+ },
+ {
+ // EPBufferAttribsColor16MA - PBuffer
+ EGL_BUFFER_SIZE, 32,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+ EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+ EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
+ EGL_NONE
+ },
+ {
+ // EPBufferAttribsColor16MAP - PBuffer
+ EGL_BUFFER_SIZE, 32,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+ EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+ EGL_SURFACE_TYPE, EGL_PBUFFER_BIT | EGL_VG_ALPHA_FORMAT_PRE_BIT,
+ EGL_NONE
+ },
+ {
+ // EPBufferAttribsColorGles64K - PBuffer
+ EGL_BUFFER_SIZE, 16,
+ EGL_RED_SIZE, 5,
+ EGL_GREEN_SIZE, 6,
+ EGL_BLUE_SIZE, 5,
+ EGL_ALPHA_SIZE, 0,
+ EGL_RENDERABLE_TYPE,EGL_OPENGL_ES_BIT,
+ EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
+ EGL_NONE
+ },
+ {
+ //EWindowAttribsColor16MA Preserved - Window
+ EGL_BUFFER_SIZE, 32,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+ EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_SWAP_BEHAVIOR_PRESERVED_BIT,
+ EGL_NONE
+ },
+ };
+
+enum TEglConfigMatchType
+{
+ /** Dummy, used for "uninitialized/unknowns/error" situations */
+ eMatchUnknown,
+ /** Matches whatever - don't actually compare anything. */
+ eMatchAlways,
+ /** Matches equal values - config must match requested value. */
+ eMatchEqual,
+ /** Matches greater or equal - config must be equal or greater than requested value. */
+ eMatchAtLeast,
+ /** Match bitmask - config bits must have the requested bits. */
+ eMatchBitMask
+};
+
+const TInt KNumConfigMatchRules = 2;
+
+struct TConfigMatchRuleItem
+ {
+ EGLint iAttrib;
+ TEglConfigMatchType iMatchType;
+ };
+
+/**
+ Defines rules for how to match a requested config with the configs returned by eglChooseConfig.
+ */
+static const TConfigMatchRuleItem KConfigMatchRules[KNumConfigMatchRules][15] =
+{
+ {
+ // EConfigMatchStandard
+ { EGL_BUFFER_SIZE, eMatchAtLeast },
+ { EGL_RED_SIZE, eMatchEqual },
+ { EGL_GREEN_SIZE, eMatchEqual },
+ { EGL_BLUE_SIZE, eMatchEqual },
+ { EGL_ALPHA_SIZE, eMatchEqual },
+ { EGL_RENDERABLE_TYPE, eMatchBitMask },
+ { EGL_SURFACE_TYPE, eMatchBitMask },
+ { EGL_NONE, eMatchUnknown }
+ },
+ {
+ // EConfigMatchIgnoreAlpha
+ { EGL_BUFFER_SIZE, eMatchAtLeast },
+ { EGL_RED_SIZE, eMatchEqual },
+ { EGL_GREEN_SIZE, eMatchEqual },
+ { EGL_BLUE_SIZE, eMatchEqual },
+ { EGL_ALPHA_SIZE, eMatchAlways },
+ { EGL_RENDERABLE_TYPE, eMatchBitMask },
+ { EGL_SURFACE_TYPE, eMatchBitMask },
+ { EGL_NONE, eMatchUnknown }
+ }
+};
+
+/**
+ Provides an index into KConfigMatchRules
+ */
+enum TEglConfigMatchRule
+ {
+ EConfigMatchStandard,
+ EConfigMatchIgnoreAlpha,
+ };
+
+// Attributes that can be passed into eglCreatePixmapSurface()
+const EGLint KPixmapAttribsNone[] = { EGL_NONE };
+const EGLint KPixmapAttribsVgAlphaFormatPre[] =
+ {
+ EGL_VG_ALPHA_FORMAT, EGL_VG_ALPHA_FORMAT_PRE,
+ EGL_NONE
+ };
+
+const EGLint KPixmapAttribsVgAlphaFormatNonPre[] =
+ {
+ EGL_VG_ALPHA_FORMAT, EGL_VG_ALPHA_FORMAT_NONPRE,
+ EGL_NONE
+ };
+
+// Attributes that can be passed into eglCreateImageKHR()
+const EGLint KEglImageAttribsNone[] = { EGL_NONE };
+const EGLint KEglImageAttribsPreservedTrue[] =
+ {
+ EGL_IMAGE_PRESERVED_KHR, EGL_TRUE,
+ EGL_NONE
+ };
+const EGLint KEglImageAttribsPreservedFalse[] =
+ {
+ EGL_IMAGE_PRESERVED_KHR, EGL_FALSE,
+ EGL_NONE
+ };
+
+// Attributes that can be passed into eglCreateSyncKHR()
+const EGLint KEglSyncAttribsNone[] = {EGL_NONE};
+
+/**
+ Performs a TEFUNIT style ASSERT, but also outputs the last EGL error code.
+ Use this macro to check that EGL function calls have succeeded.
+ */
+#define ASSERT_EGL_TRUE(aFunction) \
+ if(!(aFunction)) \
+ { \
+ EGLint eglError = eglGetError(); \
+ ERR_PRINTF2(_L("EGL Error: 0x%x"), eglError); \
+ User::Leave(KErrTEFUnitFail); \
+ }
+
+/**
+ Performs a TEFUNIT style ASSERT, but also outputs the last EGL error code.
+ Use this macro to check that the expected EGL error has occurred.
+*/
+#define ASSERT_EGL_ERROR(aExpectedError) \
+ { \
+ EGLint eglError = eglGetError(); \
+ if (eglError != aExpectedError) \
+ { \
+ ERR_PRINTF3(_L("Actual EGL Error: 0x%x, but Expected EGL Error: 0x%x"), eglError, aExpectedError); \
+ User::Leave(KErrTEFUnitFail); \
+ } \
+ }
+
+/**
+ Performs a TEFUNIT style TEST. Use this macro to check that
+ EGL function calls have succeeded and the expected EGL error has occurred.
+ */
+#define TEST_EGL_ERROR(aFunction, aExpectedError) \
+ TEST(aFunction); \
+ TEST(eglGetError() == aExpectedError);
+
+/**
+ Performs a TEFUNIT style ASSERT, but also outputs the last VG error code.
+ Use this macro to check that VG function calls have succeeded.
+ */
+#define ASSERT_VG_TRUE(aFunction) \
+ if(!(aFunction)) \
+ { \
+ VGErrorCode vgError = vgGetError(); \
+ ERR_PRINTF2(_L("VG Error: 0x%x"), vgError); \
+ User::Leave(KErrTEFUnitFail); \
+ }
+
+/**
+ Performs a TEFUNIT style ASSERT, but also outputs the last VG error code.
+ Use this macro to check that the expected VG error has occurred.
+*/
+#define ASSERT_VG_ERROR(aExpectedError) \
+ { \
+ VGErrorCode vgError = vgGetError(); \
+ if (vgError != aExpectedError) \
+ { \
+ ERR_PRINTF3(_L("Actual VG Error: 0x%x, but Expected VG Error: 0x%x"), vgError, aExpectedError); \
+ User::Leave(KErrTEFUnitFail); \
+ } \
+ }
+
+
+// The following macros allow verbose logging to be switched on and off programmatically.
+#define VERBOSE_INFO_PRINTF1(p1) if (iVerboseLogging) { INFO_PRINTF1(p1); }
+#define VERBOSE_INFO_PRINTF2(p1, p2) if (iVerboseLogging) { INFO_PRINTF2(p1, p2); }
+#define VERBOSE_INFO_PRINTF3(p1, p2, p3) if (iVerboseLogging) { INFO_PRINTF3(p1, p2, p3); }
+
+#ifdef SYMBIAN_GRAPHICS_EGL_SGIMAGELITE
+_LIT8(KEglRSgImage,"EGL_NOK_pixmap_type_rsgimage");
+#else
+_LIT8(KEglRSgImage,"EGL_SYMBIAN_PIXMAP_TYPE_RSGIMAGE");
+#endif
+_LIT8(KEglKhrImageBase,"EGL_KHR_image_base");
+_LIT8(KEglKhrImagePixmap,"EGL_KHR_image_pixmap");
+_LIT8(KVgKhrEglImage,"VG_KHR_EGL_image");
+_LIT8(KEglKhrReusableSync,"EGL_KHR_reusable_sync");
+_LIT8(KEglNokPrivateSignalSync,"EGL_NOK__private__signal_sync");
+_LIT8(KEglNokiaSwapBuffers,"EGL_NOKIA_swap_buffers");
+#ifndef SYMBIAN_GRAPHICS_EGL_SGIMAGELITE
+_LIT8(KEglSymbianImagePreserved,"EGL_SYMBIAN_image_preserved");
+#endif
+
+
+enum TExtensionsId
+ {
+ KEGLUndefined,
+ KEGL_RSgimage = 0x01,
+ KEGL_KHR_image_base = 0x02,
+ KEGL_KHR_image_pixmap = 0x04,
+ KVG_KHR_EGL_image = 0x08,
+ KEGL_KHR_reusable_sync = 0x10,
+ KEGL_NOK__private__signal_sync = 0x20,
+ KEGL_NOKIA_swap_buffers = 0x40,
+ KEGL_SYMBIAN_image_preserved = 0x80
+ };
+
+const TUid KUidEglTestServer={0x10281B40};
+const TUid KUidEglTestServerNga={0x10285DC0};
+
+#endif // EGLTESTCOMMONUTILS_H