Revision: 201023
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 11 Jun 2010 14:58:47 +0300
changeset 98 bf7481649c98
parent 85 cdf2f6e5c390
child 102 f4d9a5ce4604
child 103 2717213c588a
child 110 7f25ef56562d
Revision: 201023 Kit: 2010123
egl/eglinterface/group/graphics_eglheaders.mrp
egl/eglinterface/include/1.4/eglext.h
egl/eglrefimpl/group/graphics_eglrefimpl.mrp
egl/eglswitch/group/graphics_eglswitch.mrp
egl/egltest/endpointtestsuite/automated/group/bld.inf
egl/egltest/endpointtestsuite/automated/group/eglendpointlifetimetesthelper.mmp
egl/egltest/endpointtestsuite/automated/group/eglendpointremotetest.mmp
egl/egltest/endpointtestsuite/automated/group/eglendpointtestserver.mmp
egl/egltest/endpointtestsuite/automated/inc/eglendpointwrap.h
egl/egltest/endpointtestsuite/automated/inc/egltest_commscommon.h
egl/egltest/endpointtestsuite/automated/inc/localtestbase.h
egl/egltest/endpointtestsuite/automated/inc/log.h
egl/egltest/endpointtestsuite/automated/inc/remotetestbase.h
egl/egltest/endpointtestsuite/automated/inc/renderstage.h
egl/egltest/endpointtestsuite/automated/inc/renderstagefactory.h
egl/egltest/endpointtestsuite/automated/res/Image1.bmp
egl/egltest/endpointtestsuite/automated/res/Image2.bmp
egl/egltest/endpointtestsuite/automated/res/Image3.bmp
egl/egltest/endpointtestsuite/automated/res/Image4.bmp
egl/egltest/endpointtestsuite/automated/res/eglendpointremotetest.rss
egl/egltest/endpointtestsuite/automated/res/endpoint_autotest_ini_config.bat
egl/egltest/endpointtestsuite/automated/res/endpoint_autotest_wsini.ini
egl/egltest/endpointtestsuite/automated/rom/egltestendpointauto.iby
egl/egltest/endpointtestsuite/automated/scripts/egltest_t_endpoint.script
egl/egltest/endpointtestsuite/automated/src/eglendpointwrap.cpp
egl/egltest/endpointtestsuite/automated/src/egltest_localteststepfactory.cpp
egl/egltest/endpointtestsuite/automated/src/egltest_remoteteststepfactory.cpp
egl/egltest/endpointtestsuite/automated/src/localtestbase.cpp
egl/egltest/endpointtestsuite/automated/src/remotetestbase.cpp
egl/egltest/endpointtestsuite/automated/src/renderstage.cpp
egl/egltest/endpointtestsuite/automated/src/renderstagefactory.cpp
egl/egltest/endpointtestsuite/automated/src/resolver.cpp
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine_execthread.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine_types.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_images.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_util.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointacquire.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointapiexposure.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointattrib.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointcreate.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointdirtyarea.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointimage.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointlocking.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointnotification.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointstreaming.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointstreamingtests.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointtearing.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_parameters.h
egl/egltest/endpointtestsuite/automated/tinc/egltest_surface.h
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_execthread.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_local.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_remote.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_images.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_util.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointacquire_local.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointapiexposure_local.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointapiexposure_remote.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointattrib_local.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointcreate_local.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointdirtyarea.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointimage_local.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointimagelifetime.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointlocking_local.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointnotification.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointstreaming_local.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointstreamingtests_local.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointtearing_local.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointtearing_remote.cpp
egl/egltest/endpointtestsuite/automated/tsrc/egltest_surface.cpp
egl/egltest/endpointtestsuite/group/bld.inf
egl/egltest/endpointtestsuite/rom/eglendpointtestsuite.iby
egl/egltest/group/bld.inf
egl/egltest/group/graphics_egltest.mrp
egl/egltest/rom/egltest.iby
fbs/fontandbitmapserver/group/graphics_fbserv.mrp
fbs/fontandbitmapserver/sfbs/HASHMAP.CPP
graphics_info/graphics_metadata/graphics_metadata.mrp
graphics_info/graphicsdocs/graphics_documentation.mrp
graphicsapitest/graphicssvs/group/graphicssvs.mrp
graphicscomposition/openwfcinterface/group/graphics_openwfcinterface.mrp
graphicscomposition/openwfcompositionengine/adaptation/src/Platform/Graphics/symbian/owfnativestreamstub.cpp
graphicscomposition/openwfsupport/inc/streammap.h
graphicscomposition/openwfsupport/inc/symbianstream.h
graphicscomposition/openwfsupport/src/openwfcstream.cpp
graphicscomposition/openwfsupport/src/streammap.cpp
graphicscomposition/openwfsupport/test/tstreamoperation/tnativestream.cpp
graphicscomposition/surfaceupdate/group/graphics_surfaceupdate.mrp
graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmh
graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmp
graphicscomposition/surfaceupdate/group/tsurfaceupdateserver.mmp
graphicscomposition/surfaceupdate/inc/surfaceupdateserver.h
graphicscomposition/surfaceupdate/src/surfaceupdateserver.cpp
graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.cpp
graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.h
graphicsdeviceinterface/bitgdi/group/graphics_bitgdi.mrp
graphicsdeviceinterface/colourpalette/group/graphics_palette.mrp
graphicsdeviceinterface/directgdi/group/graphics_directgdi.mrp
graphicsdeviceinterface/directgdiadaptation/group/graphics_directgdiadapter.mrp
graphicsdeviceinterface/directgdiinterface/group/graphics_directgdiheaders.mrp
graphicsdeviceinterface/screendriver/group/graphics_screendriver.mrp
graphicshwdrivers/surfacemgr/group/graphics_surfacemanager.mrp
graphicsresourceservices/graphicsresource/group/graphics_graphicsresource.mrp
graphicsresourceservices/graphicsresourceadaptation/group/graphics_graphicsresourceadapter.mrp
graphicsresourceservices/graphicsresourceimplementation/group/graphics_graphicsresourceimplementation.mrp
graphicsresourceservices/graphicsresourceinterface/group/graphics_graphicsresourceinterface.mrp
graphicstest/graphicstestharness/automation/graphicssystemgui.sysdef.xml
graphicstest/graphicstestharness/automation/h4/roms.endpoint.txt
graphicstest/graphicstestharness/automation/h4/roms.endpoint.wdp.txt
graphicstest/graphicstestharness/automation/h4/tests_eglhybrid.endpoint.txt
graphicstest/graphicstestharness/automation/h6/roms.endpoint.txt
graphicstest/graphicstestharness/automation/h6/runroms.cmd
graphicstest/graphicstestharness/automation/h6/tests_eglhybrid.endpoint.txt
graphicstest/graphicstestharness/automation/ne1/roms.endpoint.txt
graphicstest/graphicstestharness/automation/ne1/tests_eglhybrid.endpoint.txt
graphicstest/graphicstestharness/automation/winscw/tests.endpoint.txt
graphicstest/graphicstestharness/automation/winscw/tests.sequential.txt
graphicstest/graphicstestharness/automation/winscw/tests.txt
graphicstest/graphicstestharness/group/graphics_testharness.mrp
graphicstest/graphicstestharness/rom/graphics_testall.iby
graphicstest/uibench/group/graphics_ui_bench.mrp
graphicstools/bitmapfonttools/group/graphics_gdtran.mrp
graphicstools/gdi_tools/group/graphics_gditools.mrp
graphicsutils/commongraphicsheaders/group/graphics_commonheader.mrp
opengles/openglesinterface/group/graphics_openglesheaders.mrp
openvg/openvginterface/group/graphics_openvgheaders.mrp
printingservices/printerdrivers/group/graphics_printdrv.mrp
printingservices/printerdriversupport/group/graphics_pdrstore.mrp
windowing/windowserver/group/graphics_wserv.mrp
windowing/windowserver/group/openwfc/graphics_wserv.mrp
windowing/windowserver/nga/SERVER/openwfc/CLIENT.CPP
windowing/windowserver/test/t_integ/scripts/graphics-wserv-integ-dsa-h6.script
windowing/windowserverplugins/openwfc/inc/elementwrapper.h
windowing/windowserverplugins/openwfc/src/elementwrapper.cpp
--- a/egl/eglinterface/group/graphics_eglheaders.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/egl/eglinterface/group/graphics_eglheaders.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,17 +1,6 @@
+#graphics_eglheaders.mrp
 #
-# Copyright (c) 2006 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: 
+#Copyright (c) 2006 Symbian Ltd.  All rights reserved.
 #
 
 component	graphics_eglheaders
--- a/egl/eglinterface/include/1.4/eglext.h	Thu May 27 14:13:51 2010 +0300
+++ b/egl/eglinterface/include/1.4/eglext.h	Fri Jun 11 14:58:47 2010 +0300
@@ -7,7 +7,7 @@
 #endif
 
 /*
-** Copyright (c) 2007-2009 The Khronos Group Inc.
+** Copyright (c) 2007-2010 The Khronos Group Inc.
 **
 ** Permission is hereby granted, free of charge, to any person obtaining a
 ** copy of this software and/or associated documentation files (the
@@ -232,7 +232,6 @@
 typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
 #endif
 
-
 #ifndef EGL_NOK_ENDPOINT
 #define EGL_NOK_ENDPOINT 1
 /* Endpoint datatype */
@@ -250,12 +249,6 @@
 #define EGL_ENDPOINT_READY_NOK           0x30D6
 #define EGL_DELAY_NOK                    0x30D7
 
-#ifndef EGL_SYMBIAN_COMPOSITION
-#define EGL_SYMBIAN_COMPOSITION 1
-/* Extension defines a behavioural change which does not introduce functions or tokens. */
-/* The presence of this extension means that semi-transparent UI content can be displayed above EGL window surfaces. */
-#endif
-
 #ifdef EGL_EGLEXT_PROTOTYPES
 EGLAPI EGLEndpointNOK EGLAPIENTRY eglCreateEndpointNOK(EGLDisplay dpy, EGLenum type, EGLenum source_type, EGLEndpointSourceNOK source, const EGLint *attrib_list);
 EGLAPI EGLBoolean EGLAPIENTRY eglDestroyEndpointNOK(EGLDisplay dpy, EGLEndpointNOK endpoint);
@@ -283,6 +276,38 @@
 typedef EGLBoolean ( *PFNEGLENDPOINTCANCELNOTIFICATIONNOKPROC) (EGLDisplay dpy, EGLEndpointNOK endpoint);
 #endif
 
+#ifndef EGL_SYMBIAN_COMPOSITION
+#define EGL_SYMBIAN_COMPOSITION 1
+/* Extension defines a behavioural change which does not introduce functions or tokens. */
+/* The presence of this extension means that semi-transparent UI content can be displayed above EGL window surfaces. */
+#endif  /* EGL_SYMBIAN_COMPOSITION */
+
+#ifndef EGL_NOK_SURFACE_SCALING
+#define EGL_NOK_SURFACE_SCALING 1
+#define EGL_SURFACE_SCALING_NOK           0x30DD  /* Surface Scaling attribute for EGLConfig */
+#define EGL_TARGET_EXTENT_OFFSET_X_NOK    0x3079  /* attribute for eglCreateWindowSurface and eglQuerySurface */
+#define EGL_TARGET_EXTENT_OFFSET_Y_NOK    0x307A  /* attribute for eglCreateWindowSurface and eglQuerySurface */
+#define EGL_TARGET_EXTENT_WIDTH_NOK       0x307B  /* attribute for eglCreateWindowSurface and eglQuerySurface */
+#define EGL_TARGET_EXTENT_HEIGHT_NOK      0x307C  /* attribute for eglCreateWindowSurface and eglQuerySurface */
+#define EGL_BORDER_COLOR_RED_NOK          0x307D  /* attribute for eglCreateWindowSurface and eglQuerySurface */
+#define EGL_BORDER_COLOR_GREEN_NOK        0x307E  /* attribute for eglCreateWindowSurface and eglQuerySurface */
+#define EGL_BORDER_COLOR_BLUE_NOK         0x30D8  /* attribute for eglCreateWindowSurface and eglQuerySurface */
+#define EGL_FIXED_WIDTH_NOK               0x30DB  /* attribute for eglCreateWindowSurface */
+#define EGL_FIXED_HEIGHT_NOK              0x30DC  /* attribute for eglCreateWindowSurface */
+
+/* Tokens returned by eglQuerySurfaceScalingCapabilityNOK */
+#define EGL_NOT_SUPPORTED_NOK   0
+#define EGL_SUPPORTED_NOK       1
+#define EGL_SLOW_NOK            3
+
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLint EGLAPIENTRY eglQuerySurfaceScalingCapabilityNOK(EGLDisplay dpy, EGLConfig config, EGLint surface_width, EGLint surface_height, EGLint target_width, EGLint target_height);
+EGLAPI EGLBoolean EGLAPIENTRY eglSetSurfaceScalingNOK(EGLDisplay dpy, EGLSurface surface, EGLint target_offset_x, EGLint target_offset_y, EGLint target_width, EGLint target_height);
+#endif
+typedef EGLint (EGLAPIENTRYP PFNEGLQUERYSURFACESCALINGCAPABILITYNOKPROC)(EGLDisplay dpy, EGLConfig config, EGLint surface_width, EGLint surface_height, EGLint target_width, EGLint target_height);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSURFACESCALINGNOKPROC)(EGLDisplay dpy, EGLSurface surface, EGLint target_offset_x, EGLint target_offset_y, EGLint target_width, EGLint target_height);
+#endif /* EGL_NOK_SURFACE_SCALING */
+
 #ifdef __cplusplus
 }
 #endif
--- a/egl/eglrefimpl/group/graphics_eglrefimpl.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/egl/eglrefimpl/group/graphics_eglrefimpl.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_eglrefimpl
 
 source	\sf\os\graphics\egl\eglrefimpl
--- a/egl/eglswitch/group/graphics_eglswitch.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/egl/eglswitch/group/graphics_eglswitch.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_eglswitch
 source	\sf\os\graphics\egl\eglswitch
 binary	\sf\os\graphics\egl\eglswitch\group	all
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/group/bld.inf	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,34 @@
+// Copyright (c) 2009-2010 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
+ @internalComponent - Internal Symbian test code 
+*/
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTMMPFILES
+eglendpointremotetest.mmp
+eglendpointtestserver.mmp
+eglendpointlifetimetesthelper.mmp
+
+PRJ_TESTEXPORTS
+../scripts/egltest_t_endpoint.script		z:/egltest/egltest_t_endpoint.script
+../res/endpoint_autotest_ini_config.bat     z:/egltest/endpoint_autotest_ini_config.bat
+../res/endpoint_autotest_wsini.ini          z:/egltest/endpoint_autotest_wsini.ini
+../rom/egltestendpointauto.iby              /epoc32/rom/include/egltestendpointauto.iby
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/group/eglendpointlifetimetesthelper.mmp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,65 @@
+// Copyright (c) 2006-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
+ @internalComponent - Internal Symbian test code 
+*/
+
+
+TARGET                  eglendpointlifetimetesthelper.exe
+TARGETTYPE              exe
+UID                     0x1000007a 0xA000F1ED
+VENDORID                0x70000001
+
+CAPABILITY 		none
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+USERINCLUDE				../inc
+USERINCLUDE				../tinc
+
+//Utils.
+SOURCEPATH				../tsrc
+SOURCE					egltest_surface.cpp
+SOURCE 					egltest_endpoint_images.cpp
+SOURCE					egltest_endpoint_util.cpp
+
+// Application source. 
+SOURCE                  egltest_endpointimagelifetime.cpp
+
+
+//Local test steps.
+
+LIBRARY					rfileloggerclient.lib
+LIBRARY                 euser.lib
+LIBRARY                 libEGL.lib
+library         		libOpenVG.lib
+LIBRARY                 testexecuteutils.lib
+LIBRARY                 testexecutelogclient.lib
+LIBRARY                 ws32.lib
+LIBRARY                 fbscli.lib
+LIBRARY                 gdi.lib
+LIBRARY                 bitgdi.lib 
+LIBRARY                 hal.lib
+LIBRARY                 ecom.lib
+LIBRARY                 efsrv.lib
+LIBRARY					surfacemanager.lib
+LIBRARY 				surfaceupdateclient.lib
+
+// We're quite heavy on the stack... 4k in WinS isn't enough...
+EPOCSTACKSIZE	0xf000
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/group/eglendpointremotetest.mmp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,70 @@
+// Copyright (c) 2009-2010 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+
+TARGET				eglendpointremotetest.dll
+TARGETTYPE			PLUGIN //ECOMIIC
+UID 				0x10009d8d 0xA000E081 
+CAPABILITY			PowerMgmt ReadDeviceData WriteDeviceData ProtServ
+VENDORID			0x70000001
+epocallowdlldata
+
+MACRO				SYMBIAN_GRAPHICS_GCE
+
+// This macro enables extra heapchecking. It can only be used
+// with EGL implementations that support checking the EGL internal
+// heap usage. Use only if you know what you are doing! 
+// This macro should normally be commented out!
+// MACRO				USE_EGLHEAP_CHECKING		
+
+USERINCLUDE         ../inc
+USERINCLUDE			../tinc
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+SOURCEPATH 			../src
+SOURCE 				resolver.cpp
+SOURCE				renderstagefactory.cpp
+SOURCE				renderstage.cpp
+SOURCE				remotetestbase.cpp
+SOURCE				eglendpointwrap.cpp
+SOURCE				egltest_remoteteststepfactory.cpp
+
+//Remote Test Steps.
+SOURCEPATH			../tsrc
+SOURCE				egltest_endpointapiexposure_remote.cpp
+SOURCE				egltest_endpointtearing_remote.cpp
+
+// Utility code. 
+SOURCE				egltest_endpoint_images.cpp
+SOURCE				egltest_surface.cpp 
+SOURCE				egltest_endpoint_engine_remote.cpp
+
+LIBRARY				euser.lib
+LIBRARY				estor.lib
+LIBRARY				wsgraphicdrawer.lib
+LIBRARY     		ws32.lib
+LIBRARY				libEGL.lib 
+library             fbscli.lib
+LIBRARY             gdi.lib
+library         	libOpenVG.lib
+library 			surfacemanager.lib
+library             surfaceupdateclient.lib
+
+SOURCEPATH			../res
+RESOURCE 			eglendpointremotetest.rss
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/group/eglendpointtestserver.mmp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,109 @@
+// Copyright (c) 2006-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
+ @internalComponent - Internal Symbian test code 
+*/
+
+
+TARGET                  eglendpointtestserver.exe
+TARGETTYPE              exe
+UID                     0x1000007a 0xA000E07E
+VENDORID                0x70000001
+
+CAPABILITY 		none
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+USERINCLUDE				../inc
+USERINCLUDE				../tinc
+
+SOURCEPATH				../src
+SOURCE                  localtestbase.cpp
+SOURCE                  egltest_localteststepfactory.cpp
+
+//Utils.
+SOURCEPATH				../tsrc
+SOURCE					egltest_surface.cpp
+SOURCE 					egltest_endpoint_images.cpp
+SOURCE					egltest_endpoint_engine_local.cpp
+SOURCE					egltest_endpoint_engine_execthread.cpp
+SOURCE					egltest_endpoint_util.cpp
+
+//Local test steps.
+SOURCEPATH				../tsrc
+SOURCE					egltest_endpointapiexposure_local.cpp
+SOURCE					egltest_endpointcreate_local.cpp
+SOURCE 					egltest_endpointacquire_local.cpp 
+SOURCE					egltest_endpointattrib_local.cpp
+SOURCE 					egltest_endpointimage_local.cpp 
+SOURCE					egltest_endpointlocking_local.cpp
+SOURCE					egltest_endpointstreaming_local.cpp
+SOURCE					egltest_endpointtearing_local.cpp
+SOURCE					egltest_endpointstreamingtests_local.cpp
+SOURCE					egltest_endpointnotification.cpp
+SOURCE					egltest_endpointdirtyarea.cpp
+
+SOURCEPATH				../scripts
+DOCUMENT				egltest_t_endpoint.script
+
+LIBRARY					rfileloggerclient.lib
+LIBRARY                 euser.lib
+LIBRARY                 libEGL.lib
+library         		libOpenVG.lib
+LIBRARY                 testexecuteutils.lib
+LIBRARY                 testexecutelogclient.lib
+LIBRARY                 ws32.lib
+LIBRARY                 fbscli.lib
+LIBRARY                 gdi.lib
+LIBRARY                 bitgdi.lib 
+LIBRARY                 hal.lib
+LIBRARY                 ecom.lib
+LIBRARY                 efsrv.lib
+LIBRARY					surfacemanager.lib
+LIBRARY 				surfaceupdateclient.lib
+
+// We're quite heavy on the stack... 4k in WinS isn't enough...
+EPOCSTACKSIZE	0xf000
+
+// Images used as source images to push through endpoints, and the same
+// image is then used as a "this is what it should look like" when an
+// image is acquired through the endpoint.
+START BITMAP image1.mbm
+	TARGETPATH resource/apps/egltest_endpoint
+	SOURCEPATH ../res
+	SOURCE c32 Image1.bmp
+END
+
+START BITMAP image2.mbm
+	TARGETPATH resource/apps/egltest_endpoint
+	SOURCEPATH ../res
+	SOURCE c32 Image2.bmp
+END
+
+START BITMAP image3.mbm
+	TARGETPATH resource/apps/egltest_endpoint
+	SOURCEPATH ../res
+	SOURCE c32 Image3.bmp
+END
+
+START BITMAP image4.mbm
+	TARGETPATH resource/apps/egltest_endpoint
+	SOURCEPATH ../res
+	SOURCE c32 Image4.bmp
+END
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/inc/eglendpointwrap.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,85 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLENDPOINTWRAP_H__
+#define __EGLENDPOINTWRAP_H__
+
+
+#include <e32base.h>
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+
+
+//generic function pointer
+typedef void (*TAnyFuncPtr)(...);
+
+
+/*
+ * TEglEndpointWrap is a simple class that presents all of the EGL endpoint
+ * extension functions without the user needing to perform an eglGetProcAddress()
+ * to obtain the function pointer. Each endpoint member function takes the same
+ * arguments as the EGL functions and returns the same types. After before first
+ * use, you should check the Error() function to ensure that all function pointers
+ * were resolved. Trying to use one of the endpoint functions in the event of a
+ * construction error will result in a panic.
+ */
+class TEglEndpointWrap : public CBase
+    {
+public:
+    TEglEndpointWrap();
+    TInt Error() const;
+
+    //endpoint functions
+    EGLEndpointNOK CreateEndpoint(EGLDisplay dpy, EGLenum type, EGLenum source_type, EGLEndpointSourceNOK source, const EGLint *attrib_list) const;
+    EGLBoolean DestroyEndpoint(EGLDisplay dpy, EGLEndpointNOK endpoint) const;
+    EGLint GetEndpointAttrib(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLint attrib) const;
+    EGLBoolean SetEndpointAttrib(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLint attrib, EGLint value) const;
+    EGLBoolean EndpointBeginStreaming(EGLDisplay dpy, EGLEndpointNOK endpoint) const;
+    EGLBoolean EndpointEndStreaming(EGLDisplay dpy, EGLEndpointNOK endpoint) const;
+    EGLImageKHR AcquireImage(EGLDisplay dpy, EGLEndpointNOK endpoint) const;
+    EGLBoolean ReleaseImage(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLImageKHR image, EGLenum api) const;
+    EGLint GetEndpointDirtyArea(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLint* rects, EGLint start_rect, EGLint max_rects, EGLBoolean collapse) const;
+    EGLBoolean EndpointRequestNotification(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLTRequestStatusNOK sync) const;
+    EGLBoolean EndpointCancelNotification(EGLDisplay dpy, EGLEndpointNOK endpoint) const;
+    EGLBoolean DestroyImage(EGLDisplay dpy, EGLImageKHR image) const;
+
+private:
+    TAnyFuncPtr ProcAddressL(const char* aProcName) const;
+
+private:
+    TInt iError;
+
+    //enpoint function pointers
+    PFNEGLCREATEENDPOINTNOKPROC ipfnEglCreateEndpointNOK;
+    PFNEGLDESTROYENDPOINTNOKPROC ipfnEglDestroyEndpointNOK;
+    PFNEGLGETENDPOINTATTRIBNOKPROC ipfnEglGetEndpointAttribNOK;
+    PFNEGLSETENDPOINTATTRIBNOKPROC ipfnEglSetEndpointAttribNOK;
+    PFNEGLENDPOINTBEGINSTREAMINGNOKPROC ipfnEglEndpointBeginStreamingNOK;
+    PFNEGLENDPOINTENDSTREAMINGNOKPROC ipfnEglEndpointEndStreamingNOK;
+    PFNEGLACQUIREIMAGENOKPROC ipfnEglAcquireImageNOK;
+    PFNEGLRELEASEIMAGENOKPROC ipfnEglReleaseImageNOK;
+    PFNEGLGETENDPOINTDIRTYAREANOKPROC ipfnEglGetEndpointDirtyAreaNOK;
+    PFNEGLENDPOINTREQUESTNOTIFICATIONNOKPROC ipfnEglEndpointRequestNotificationNOK;
+    PFNEGLENDPOINTCANCELNOTIFICATIONNOKPROC ipfnEglEndpointCancelNotificationNOK;
+    PFNEGLDESTROYIMAGEKHRPROC ipfnEglDestroyImageKHR;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/inc/egltest_commscommon.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,221 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+/*
+ * To add a new message that can be passed over the message queue:
+ * 1. Add the test name to the TTestUid enum.
+ * 2. Create a T class to hold the params.
+ * 3. Add the T class to the TRemoteTestParams union.
+ *
+ * These steps are described in more detail below, where the
+ * individual bits should be added.
+ */
+
+
+#ifndef __EGLTEST_COMMSCOMMON_H__
+#define __EGLTEST_COMMSCOMMON_H__
+
+
+#include <e32base.h>
+#include <graphics/surface.h>
+#include <EGL/egl.h>
+#include "log.h"
+#include "egltest_endpoint_engine_types.h"
+
+#define ENDPOINT_ASSERT_DEBUG(x, y) do { if (!x) { RDebug::Printf("Assertion (%s) failed: %s:%d ", #x, __FILE__, __LINE__); y; } } while(0)
+
+//The maximum size of a message in an async message queue is 256 bytes.
+//If these valuses are increased, the maximum size will be exceeded.
+const TInt KRSLogMessageLength = 172;
+const TInt KRSLogFileLength = 32;
+
+
+//Names for the Async message queues that are used for
+//communication between the TEF driver app and the test
+//thread within window server.
+_LIT(KResultQueueName, "RemoteTestEnvResultQueue");
+_LIT(KParamsQueueName, "RemoteTestEnvParamsQueue");
+
+const TInt KStartTestStepCaseNumber = -1;
+const TInt KEndTestStepCaseNumber = -2;
+
+//Uids for all of the tests that the test thread knows about.
+enum TTestUid
+    {
+    //Endpoint Api Exposure Test.
+    ETestUidEndpointApiExposure,
+
+    // Common UID for engine code.
+    ETestUidEndpointEngine,
+
+    // Endpoint Lifetime test.
+    ETestUidEndpointLifetime,
+
+    //Image Tearing Test.
+    ETestUidEndpointTearing,
+    };
+
+
+//Each test should have a struct with data members to hold
+//the test's parameters. The name name should begin
+//"TTest..." and should contain no member functions.
+//(c-style struct).
+
+//If it is found that many tests use the same params, we should
+//create a TTestGeneric class to hold the params and derive
+//classes from it.
+
+struct TTestEndpointApiExposure
+    {
+    };
+
+struct TTestEndpointTearing
+    {
+    TSurfaceId iSurfaceId;
+    };
+
+
+//Union for all of the structs that tests use to pass
+//params between the local side and the remote side.
+union TRemoteTestParams
+    {
+    //Endpoint Api Exposure Test.
+    TTestEndpointApiExposure iTestEndpointApiExposure;
+
+    //Endpoint engine data.
+    TTestEndpointEngine iEndpointEngine;
+
+    //Image Tearing Test.
+    TTestEndpointTearing iEndpointTearing;
+    };
+
+
+//Structure that is passed from local side to remote side
+//in the async message queue. It contains the test Uid,
+//test case and the params.
+class TRemoteTestParamsPacket
+    {
+public:
+    TRemoteTestParamsPacket();
+    TRemoteTestParamsPacket(TTestUid aTestUid, TInt aTestCase, const TRemoteTestParams& aParams);
+    const TTestUid iUid;
+    const TInt iTestCase;
+    const TRemoteTestParams iParams;
+    };
+
+
+//The object passed back to the TEF driver app from the test
+//thread. It can be used for sending the resuult of a test and
+//for logging.
+class TRemoteTestResult
+    {
+public:
+    TRemoteTestResult();
+
+    //Constructor for sending logging info.
+    TRemoteTestResult(TTestUid aUid, TInt aTestCase, const TDesC8& aFile, TInt aLine, TInt aSeverity, const TDesC& aMessage);
+
+    //Constructor for sending result info.
+    TRemoteTestResult(TTestUid aUid, TInt aTestCase, TRemoteTestVerdict aVerdict);
+
+public:
+    //If EFalse this is a logging message, else a result message.
+    TBool iFinished;
+    TTestUid iUid;
+    TInt iTestCase;
+
+    //Result message.
+    TRemoteTestVerdict iVerdict;
+
+    //Logging message.
+    TBuf8<KRSLogFileLength> iFile;
+    TInt iLine;
+    TInt iSeverity;
+    TBuf8<KRSLogMessageLength> iMessage;
+    };
+
+
+//Inline functions --------------------------------------------------------
+
+inline TRemoteTestParamsPacket::TRemoteTestParamsPacket() :
+    iUid((TTestUid)0),
+    iTestCase(0),
+    iParams(TRemoteTestParams())
+    {
+    }
+
+
+inline TRemoteTestParamsPacket::TRemoteTestParamsPacket(TTestUid aTestUid, TInt aTestCase, const TRemoteTestParams& aParams) :
+    iUid(aTestUid),
+    iTestCase(aTestCase),
+    iParams(aParams)
+    {
+    }
+
+
+inline TRemoteTestResult::TRemoteTestResult()
+    {
+    }
+
+
+inline TRemoteTestResult::TRemoteTestResult(TTestUid aUid, TInt aTestCase, const TDesC8& aFile, TInt aLine, TInt aSeverity, const TDesC& aMessage) :
+    iFinished(EFalse),
+    iVerdict(ERtvInconclusive),
+    iUid(aUid),
+    iTestCase(aTestCase),
+    iLine(aLine),
+    iSeverity(aSeverity)
+    {
+    //Copy the filename to the log object. If the string is too long,
+    //truncate the string and append an elipsis to the log.
+    //The "-1"s ensure that a free char is left for appending a NULL (in the TEF app).
+    TBool truncate = iFile.MaxLength()-1 < aFile.Length();
+    TInt numChars = truncate ? iFile.MaxLength()-3-1 : aFile.Length();
+    iFile = aFile.Left(numChars);
+    if(truncate)
+        {
+        iFile.Append(_L("..."));
+        }
+
+    //Copy the message to the log object. If the string is too long,
+    //truncate the string and append an elipsis to the log.
+    //Note we convert message from unicode to ascii to conserve space in the message queue.
+    truncate = iMessage.MaxLength() < aMessage.Length();
+    numChars = truncate ? iMessage.MaxLength()-3 : aMessage.Length();
+    iMessage.Copy(aMessage.Left(numChars));
+    if(truncate)
+        {
+        iMessage.Append(_L8("..."));
+        }
+    }
+
+
+inline TRemoteTestResult::TRemoteTestResult(TTestUid aUid, TInt aTestCase, TRemoteTestVerdict aVerdict) :
+    iFinished(ETrue),
+    iUid(aUid),
+    iTestCase(aTestCase),
+    iVerdict(aVerdict)
+    {
+    }
+
+//------------------------------------------------------------------------------------
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/inc/localtestbase.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,125 @@
+// Copyright (c) 2005-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
+ @internalComponent - Internal Symbian test code
+*/
+
+#if (!defined __LOCALTESTBASE_H__)
+#define __LOCALTESTBASE_H__
+
+
+#include <ecom/ecom.h>
+#include <e32msgqueue.h>
+#include <test/testexecuteserverbase.h>
+//#include <test/ttmsgraphicsstep.h>
+#include "egltest_commscommon.h"
+
+
+// Entry point
+GLDEF_C TInt E32Main(void);
+
+/**
+CEglEndpointTestServer	Server encapsulates the functionality required to execute Test Execute based test cases for the EGL endpoint extension.
+*/
+class CEglEndpointTestServer : public CTestServer
+	{
+public:
+	static CEglEndpointTestServer* NewL();
+
+	virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+	};
+
+
+/**
+Logger used to log result of every GRAPHICS-EGL-* test to 
+file, even in event of panic. wrapped by CLocalTestStepBase.
+*/
+class CTestIdResultLogger : public CBase
+    {
+private:
+    typedef TBuf<8> TTestId;
+    
+public:
+    static CTestIdResultLogger* NewL(CTestExecuteLogger& aLogger);
+    ~CTestIdResultLogger();
+    
+    void RegisterTestIdsL(const TDesC& aTestString);
+    void SetCurrentTestIds(const TDesC& aTestString);
+    void LogResult(TVerdict aVerdict);
+    
+private:
+    CTestIdResultLogger(CTestExecuteLogger& aLogger);
+    void ConstructL();
+    static TInt PanicMonitorMain(TAny* aSelf);
+    void PanicMonitorMainL();
+    void LogResult(CTestExecuteLogger& aLogger, const TTestId& aTestId, const TDesC& aVerdict);
+
+private:
+    const TThreadId iOriginalThread;
+    RThread iPanicMonitor;
+    TRequestStatus* iCloseMonitor;
+    CTestExecuteLogger& iLogger;
+    RArray<TTestId> iRegisteredTestIds;
+    RArray<TTestId> iCurrentTestIds;
+    };
+
+
+/**
+Base class for Egl test steps where the testing is done in a render stage
+*/
+NONSHARABLE_CLASS(CLocalTestStepBase) : public CTestStep //CTTMSGraphicsStep
+    {
+public:
+    // from CTestStep
+    CLocalTestStepBase(const TTestUid aUid);
+    IMPORT_C virtual ~CLocalTestStepBase();
+    TVerdict doTestStepPreambleL(); //setup the queues
+    TVerdict doTestStepPostambleL(); //close the queues
+
+    //Functions to control remote test.
+    //If we are not currently in a test step (ie between StartRemoteTestStepL() and
+    //EndRemoteTestStepL(), this includes the case where StartRemoteTestStepL() fails),
+    //the framework does not allow running test cases. It will instead return EFail
+    //immediately to the caller.
+
+    TVerdict StartRemoteTestStep(const TRemoteTestParams& aMessageIn);
+    TVerdict RunRemoteTestCase(TInt aTestCase, const TRemoteTestParams& aMessageIn);
+    TVerdict EndRemoteTestStep(const TRemoteTestParams& aMessageIn);
+
+    virtual void DoPreambleL();
+    virtual void DoPostambleL();
+    
+    void RegisterTestIdsL(const TDesC& aTestString);
+    void SetCurrentTestIds(const TDesC& aTestString);
+    void SetTestStepResult(TVerdict aVerdict);
+
+public:
+    RMsgQueue<TRemoteTestResult> iResultOutQueue;
+    RMsgQueue<TRemoteTestParamsPacket> iParamsInQueue;
+
+protected:
+    const TTestUid iTestId;
+    TInt iCurrentTestCase;
+    TBool iIsInTestStep;
+    TVerdict iTestIdVerdict;
+    TBool iHasCurrentTestIds;
+    CTestIdResultLogger* iResultLog;
+    };
+
+
+#endif	// __EGLENDPOINTTESTSERVER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/inc/log.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,51 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#ifndef __LOG_H__
+#define __LOG_H__
+
+
+//Enumeration used in TRemoteTestResult
+//to describe the outcome of the test.
+enum TRemoteTestVerdict
+    {
+    ERtvPass,
+    ERtvFail,
+    ERtvInconclusive,
+    ERtvAbort,
+    ERtvPanic,
+    ERtvTimeout,
+    ERtvUnknownTestUid
+    };
+
+
+//This is the base class for all remote test steps. Derived classes should implement
+//DoRemoteTestStepL(), and return the result of the test as a TVerdict.
+//Logging is provided with Log(), Logging messages are limitted to 86 chars and
+//any longer messages are silently truncated. Log will only work when in the actual
+//test step. Use the Logger Macros instead of using Log() directly.
+class MLog
+    {
+public:
+    virtual void Log(const TText8* aFile, TInt aLine, TInt aSeverity, TRefByValue<const TDesC> aFmt, ...)=0;
+    };
+
+#endif // __LOG_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/inc/remotetestbase.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,208 @@
+// Copyright (c) 2009-2010 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __REMOTETESTBASE_H__
+#define __REMOTETESTBASE_H__
+
+
+#include <e32base.h>
+#include <e32msgqueue.h>
+#include <test/tefexportconst.h>
+#include "eglendpointwrap.h"
+#include "egltest_commscommon.h"
+
+
+class CRemoteTestStepBase;
+class CRemoteTestEnv;
+
+
+//Active object used to generate a timeout if worker thread takes too long.
+class CTimeoutTimer : public CTimer
+    {
+public:
+    static CTimeoutTimer* NewL(CRemoteTestEnv& aEnv, TInt aPriority);
+    ~CTimeoutTimer();
+
+private:
+    CTimeoutTimer(CRemoteTestEnv& aEnv, TInt aPriority);
+    void ConstructL();
+    void RunL();
+
+private:
+    CRemoteTestEnv& iEnv;
+    };
+
+
+//Active object used to listen to the worker thread to see if it panics.
+class CWorkerListener : public CActive
+    {
+public:
+    static CWorkerListener* NewL(CRemoteTestEnv& aEnv, TInt aPriority);
+    ~CWorkerListener();
+    void Listen(RThread& aThread);
+
+private:
+    CWorkerListener(CRemoteTestEnv& aEnv, TInt aPriority);
+    void ConstructL();
+    void RunL();
+    void DoCancel();
+
+private:
+    CRemoteTestEnv& iEnv;
+    RThread* iThread;
+    };
+
+
+//Active object used to listen for test case completion from the worker thread.
+class CTestCaseListener : public CActive
+    {
+public:
+    static CTestCaseListener* NewL(CRemoteTestEnv& aEnv, TInt aPriority);
+    ~CTestCaseListener();
+    void Listen();
+
+private:
+    CTestCaseListener(CRemoteTestEnv& aEnv, TInt aPriority);
+    void ConstructL();
+    void RunL();
+    void DoCancel();
+
+private:
+    CRemoteTestEnv& iEnv;
+    };
+
+
+//This class provides the remote test environment. CreateRemoteTestStepL()
+//Should be edited to return an instance of a derived CRemoteTestStepBase
+//class that corresponds with the passed in aTestUid.
+class CRemoteTestEnv : public CActive
+    {
+public:
+    static CRemoteTestEnv* NewL();
+    virtual ~CRemoteTestEnv();
+
+    void StartReceivingCmds();
+    CRemoteTestStepBase* CreateRemoteTestStepL(TTestUid aTestUid);
+
+    void SendResult(TRemoteTestVerdict aVerdict);
+    void SendLog(const TDesC8& aFile, TInt aLine, TInt aSeverity, const TDesC& aMessage);
+
+    void TestCaseCompleted();
+    void TestCaseTimedOut();
+    void WorkerExitted();
+
+protected:
+    CRemoteTestEnv();
+    void ConstructL();
+
+private:
+    void RunL();
+    void DoCancel();
+
+    void ReceiveCmd();
+    TBool SetupTestStep();
+
+    //These functions run in the context of the worker thread.
+    void RunCurrentTestStepL();
+    static TInt TestThreadEntryPoint(TAny* aSelf);
+
+    void DoEglHeapMark();
+    void DoEglHeapCheck();
+
+private:
+    RMsgQueue<TRemoteTestResult> iResultOutQueue;
+    RMsgQueue<TRemoteTestParamsPacket> iParamsInQueue;
+
+    CRemoteTestStepBase* iCurTestStep;
+    TRemoteTestParamsPacket iCurTestCaseParamsPacket;
+    TRemoteTestVerdict iCurTestCaseVerdict;
+    RThread iCurWorker;
+
+    TThreadId iSupervisorId;
+    TRequestStatus iNotifyRunTestCase;
+
+    CTimeoutTimer* iTimeoutTimer;
+    CWorkerListener* iWorkerListener;
+    CTestCaseListener* iTestCaseListener;
+    };
+
+
+//This is the base class for all remote test steps. Derived classes should implement
+//DoRemoteTestStepL(), and return the result of the test as a TVerdict.
+class CRemoteTestStepBase : public CBase, public MLog
+    {
+public:
+    virtual ~CRemoteTestStepBase();
+
+    virtual TRemoteTestVerdict DoStartRemoteTestStepL(const TRemoteTestParams& aMessageIn);
+    virtual TRemoteTestVerdict DoRunRemoteTestCaseL(TInt aTestCase, const TRemoteTestParams& aMessageIn) = 0;
+    virtual TRemoteTestVerdict DoEndRemoteTestStepL(const TRemoteTestParams& aMessageIn);
+
+    void Log(const TText8* aFile, TInt aLine, TInt aSeverity, TRefByValue<const TDesC> aFmt, ...);
+    const TEglEndpointWrap& EglEndpoint() const;
+
+    void EglStartL();
+    void EglEndL();
+
+protected:
+    CRemoteTestStepBase(TTestUid aUid);
+
+private:
+    friend class CRemoteTestEnv;
+    //Function called by CRemoteTestEnv.
+    //It should NOT be called by a derived class during construction.
+    void ConstructL(CRemoteTestEnv& aTestEnv);
+
+private:
+    const TTestUid iUid;
+    TInt iCurrentTestCase;
+    CRemoteTestEnv* iTestEnv;
+    TEglEndpointWrap iEndpoint;
+    };
+
+
+// Logger Macros - based on TEF but for use with CRemoteTestStepBase.
+//The severity enumeration is from TEF.
+#define REMOTE_INFO_PRINTF1(p1)                            Log(((TText8*)__FILE__), __LINE__, ESevrInfo, (p1))
+#define REMOTE_INFO_PRINTF2(p1, p2)                        Log(((TText8*)__FILE__), __LINE__, ESevrInfo, (p1), (p2))
+#define REMOTE_INFO_PRINTF3(p1, p2, p3)                    Log(((TText8*)__FILE__), __LINE__, ESevrInfo, (p1), (p2), (p3))
+#define REMOTE_INFO_PRINTF4(p1, p2, p3, p4)                Log(((TText8*)__FILE__), __LINE__, ESevrInfo, (p1), (p2), (p3), (p4))
+#define REMOTE_INFO_PRINTF5(p1, p2, p3, p4, p5)            Log(((TText8*)__FILE__), __LINE__, ESevrInfo, (p1), (p2), (p3), (p4), (p5))
+#define REMOTE_INFO_PRINTF6(p1, p2, p3, p4, p5, p6)        Log(((TText8*)__FILE__), __LINE__, ESevrInfo, (p1), (p2), (p3), (p4), (p5), (p6))
+#define REMOTE_INFO_PRINTF7(p1, p2, p3, p4, p5, p6, p7)    Log(((TText8*)__FILE__), __LINE__, ESevrInfo, (p1), (p2), (p3), (p4), (p5), (p6), (p7))
+
+#define REMOTE_WARN_PRINTF1(p1)                            Log(((TText8*)__FILE__), __LINE__, ESevrWarn, (p1))
+#define REMOTE_WARN_PRINTF2(p1, p2)                        Log(((TText8*)__FILE__), __LINE__, ESevrWarn, (p1), (p2))
+#define REMOTE_WARN_PRINTF3(p1, p2, p3)                    Log(((TText8*)__FILE__), __LINE__, ESevrWarn, (p1), (p2), (p3))
+#define REMOTE_WARN_PRINTF4(p1, p2, p3, p4)                Log(((TText8*)__FILE__), __LINE__, ESevrWarn, (p1), (p2), (p3), (p4))
+#define REMOTE_WARN_PRINTF5(p1, p2, p3, p4, p5)            Log(((TText8*)__FILE__), __LINE__, ESevrWarn, (p1), (p2), (p3), (p4), (p5))
+#define REMOTE_WARN_PRINTF6(p1, p2, p3, p4, p5, p6)        Log(((TText8*)__FILE__), __LINE__, ESevrWarn, (p1), (p2), (p3), (p4), (p5), (p6))
+#define REMOTE_WARN_PRINTF7(p1, p2, p3, p4, p5, p6, p7)    Log(((TText8*)__FILE__), __LINE__, ESevrWarn, (p1), (p2), (p3), (p4), (p5), (p6), (p7))
+
+#define REMOTE_ERR_PRINTF1(p1)                             Log(((TText8*)__FILE__), __LINE__, ESevrErr, (p1))
+#define REMOTE_ERR_PRINTF2(p1, p2)                         Log(((TText8*)__FILE__), __LINE__, ESevrErr, (p1), (p2))
+#define REMOTE_ERR_PRINTF3(p1, p2, p3)                     Log(((TText8*)__FILE__), __LINE__, ESevrErr, (p1), (p2), (p3))
+#define REMOTE_ERR_PRINTF4(p1, p2, p3, p4)                 Log(((TText8*)__FILE__), __LINE__, ESevrErr, (p1), (p2), (p3), (p4))
+#define REMOTE_ERR_PRINTF5(p1, p2, p3, p4, p5)             Log(((TText8*)__FILE__), __LINE__, ESevrErr, (p1), (p2), (p3), (p4), (p5))
+#define REMOTE_ERR_PRINTF6(p1, p2, p3, p4, p5, p6)         Log(((TText8*)__FILE__), __LINE__, ESevrErr, (p1), (p2), (p3), (p4), (p5), (p6))
+#define REMOTE_ERR_PRINTF7(p1, p2, p3, p4, p5, p6, p7)     Log(((TText8*)__FILE__), __LINE__, ESevrErr, (p1), (p2), (p3), (p4), (p5), (p6), (p7))
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/inc/renderstage.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,51 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __RENDERSTAGE_H__
+#define __RENDERSTAGE_H__
+
+
+#include <e32base.h>
+#include <graphics/wsrenderstage.h>
+
+
+//This render stage sets up a test thread within window server that waits on
+//an asynchonous message queue for test commands that are sent from the TEF driver app.
+//All render stage calls are simply forwarded to the next stage in the chain.
+class CRenderStage : public CWsRenderStage
+    {
+public:
+    static CRenderStage* NewL(MWsGraphicDrawerEnvironment* /*aEnv*/, MWsScreen* /*aScreen*/, MWsScreenRedraw* /*aScreenRedraw*/, CWsRenderStage* aNextStage);
+    ~CRenderStage();
+    TAny* ResolveObjectInterface(TUint aTypeId);
+    void Begin(const TRegion* aRegion);
+    void End(TRequestStatus* aCompositorReady);
+
+private:
+    CRenderStage();
+    void ConstructL(CWsRenderStage* aNextStage);
+    static TInt TestEnvThreadEntryPoint(TAny* aSelf);
+
+private:
+    RThread iTestEnvThread;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/inc/renderstagefactory.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,53 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __RENDERSTAGEFACTORY_H__
+#define __RENDERSTAGEFACTORY_H__
+
+
+#include <graphics/wsplugin.h>
+#include <graphics/wsrenderstagefactory.h>
+
+
+//This provides the wserv interface for creating instances of CRenderStage
+class CRenderStageFactory : public CWsPlugin, public MWsRenderStageFactory
+	{
+public:
+	enum { EImplUid = 0xA000E082 };
+
+public:
+	static CRenderStageFactory* CreateL();
+	~CRenderStageFactory();
+	void ConstructL(MWsGraphicDrawerEnvironment& aEnv, const TDesC8& aData);
+	const TDesC& PluginName() const;
+
+public: // MWsObjectProvider
+	TAny* ResolveObjectInterface(TUint aTypeId);
+
+public: // MWsRenderStageFactory
+	CWsRenderStage* CreateFinalRenderStageL(MWsScreen* aScreen, MWsScreenRedraw* aScreenRedraw, TInt aScreenNumber);
+	CWsRenderStage* CreateRenderStageL(MWsScreen* aScreen, MWsScreenRedraw* aScreenRedraw, CWsRenderStage* aNextStage);
+
+private:
+    CRenderStageFactory();
+	};
+
+
+#endif
Binary file egl/egltest/endpointtestsuite/automated/res/Image1.bmp has changed
Binary file egl/egltest/endpointtestsuite/automated/res/Image2.bmp has changed
Binary file egl/egltest/endpointtestsuite/automated/res/Image3.bmp has changed
Binary file egl/egltest/endpointtestsuite/automated/res/Image4.bmp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/res/eglendpointremotetest.rss	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,46 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include <ecom/registryinfo.rh>
+
+
+//information used by ecom to identify where implementations of given interfaces can be found
+RESOURCE REGISTRY_INFO ecomInfo
+	{
+	dll_uid = 0xA000E081;
+	interfaces =
+		{
+		INTERFACE_INFO
+			{
+			interface_uid = 0x10285A29;
+			implementations =
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = 0xA000E082;
+					version_no = 1;
+					display_name = "eglendpointremotetest";
+					default_data = "";
+					opaque_data = "";
+					}
+				};
+			}
+		};
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/res/endpoint_autotest_ini_config.bat	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,168 @@
+@echo off
+
+
+REM Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+REM All rights reserved.
+REM This component and the accompanying materials are made available
+REM under the terms of "Eclipse Public License v1.0"
+REM which accompanies this distribution, and is available
+REM at the URL "http://www.eclipse.org/legal/epl-v10.html".
+REM
+REM Initial Contributors:
+REM Nokia Corporation - initial contribution.
+REM
+REM Contributors:
+REM
+REM Description:
+REM
+
+REM Batch file used for installing the correct environment (epoc.ini, wsini.ini,
+REM testexecute.ini) for running the automatic egl endpoint tests that require the 
+REM automated test renderstage in wserv. This file does the correct thing in mistral.
+REM
+REM Commands:
+REM endpoint_autotest_ini_config.bat install
+REM endpoint_autotest_ini_config.bat uninstall 
+
+
+REM Constants.
+set WS_FILENAME=wsini.ini
+set WS_ALT_FILENAME=wsini_minigui.ini
+set WS_ALT2_FILENAME=mingui_wsini.ini
+set WS_REPLACEMENT=endpoint_autotest_wsini.ini
+
+set EMULATOR_PATH_UDEB=%EPOCROOT%epoc32\release\winscw\udeb
+set EMULATOR_PATH_UREL=%EPOCROOT%epoc32\release\winscw\urel
+set HARDWARE_PATH=%EPOCROOT%epoc32\data
+
+
+if /i "%1"=="uninstall" goto :uninstall
+if /i "%1"=="install" goto :install
+if /i "%1"=="help" goto :help
+
+
+:help
+	echo.
+	echo Description:
+	echo This script installs the correct environment (epoc.ini, wsini.ini, testexecute.ini) for the automatic egl endpoint tests.
+	echo.It takes the argument "install or "uninstall"
+goto :EOF
+
+
+:move
+	set SRC=%1
+	set DST=%2
+	if exist %SRC% copy %SRC% %DST% >NUL
+	if exist %SRC% del %SRC% >NUL
+	goto :EOF
+
+	
+:copy
+	set SRC=%1
+	set DST=%2
+	if exist %SRC% copy %SRC% %DST% >NUL
+	goto :EOF
+
+	
+:backupAndInstallWsini
+	set ORIGINAL_FILE=%1
+	REM Save original and copy the modified wsini file to the specified location.
+	call :copy %ORIGINAL_FILE% %ORIGINAL_FILE%.backup
+	if defined EMULATOR_DATA_DIR (
+		call :copy %EMULATOR_DATA_DIR%\z\egltest\%WS_REPLACEMENT% %ORIGINAL_FILE%
+	) else (
+		REM We assume that the file is in the same directory as this batch file.
+		call :copy %~dp0\%WS_REPLACEMENT% %ORIGINAL_FILE%
+	)
+	goto :EOF
+
+
+:backupAndInstallEpoc
+	set ORIGINAL_FILE=%1
+	REM Save original and add minigui to epoc.ini
+	perl -p -i.backup -e "s/^.*SYMBIAN_(GRAPHICS|BASE)_USE_GCE.*$//i" %ORIGINAL_FILE%
+	echo. >> %ORIGINAL_FILE%
+	echo SYMBIAN_GRAPHICS_USE_GCE ON >> %ORIGINAL_FILE%
+	echo SYMBIAN_BASE_USE_GCE ON >> %ORIGINAL_FILE%
+	echo ScreenWidth 320 >> %ORIGINAL_FILE%
+	echo ScreenHeight 480 >> %ORIGINAL_FILE%
+	echo ScreenOffsetX 0 >> %ORIGINAL_FILE%
+	echo ScreenOffsetY 0 >> %ORIGINAL_FILE%
+	echo FasciaBitmap null >> %ORIGINAL_FILE%
+	echo minigui >> %ORIGINAL_FILE%
+	echo. >> %ORIGINAL_FILE%
+	goto :EOF
+	
+
+:backupAndInstallTestexecute
+	set ORIGINAL_FILE=%1
+	REM Disable SystemStarter in testexecute.ini 
+	perl -p -i.backup -e "s/SystemStarter.*ON.*$/SystemStarter = OFF/i" %ORIGINAL_FILE%
+	goto :EOF
+
+
+:install
+	REM Start with the original files if we previously missed an uninstall.
+	call :uninstall
+	
+	REM Install epoc.ini.
+	if defined EPOC_INI (
+		call :backupAndInstallEpoc %EPOC_INI%
+	) else (
+		call :backupAndInstallEpoc %EPOCROOT%epoc32\data\epoc.ini
+	)
+	
+	REM Install testexecute.ini.
+	if defined EMULATOR_C_DIR (
+		call :backupAndInstallTestexecute %EMULATOR_C_DIR%\system\data\testexecute.ini
+	) else (
+		call :backupAndInstallTestexecute %EPOCROOT%epoc32\winscw\c\system\data\testexecute.ini
+		call :backupAndInstallTestexecute %EPOCROOT%epoc32\data\z\system\data\testexecute.ini
+	)
+	
+	REM Must use different paths if running on Mistral (indicated by EMULATOR_DATA_DIR).
+	REM If not Mistral, change emulator urel and udeb variants and hardware locations. 
+	if defined EMULATOR_DATA_DIR (
+		call :backupAndInstallWsini %EMULATOR_DATA_DIR%\z\system\data\%WS_FILENAME%
+	) else (
+		call :backupAndInstallWsini %EMULATOR_PATH_UDEB%\z\system\data\%WS_FILENAME%
+		call :backupAndInstallWsini %EMULATOR_PATH_UREL%\z\system\data\%WS_FILENAME%
+		call :backupAndInstallWsini %HARDWARE_PATH%\z\system\data\%WS_FILENAME%
+		call :backupAndInstallWsini %HARDWARE_PATH%\z\%WS_ALT_FILENAME%
+		call :backupAndInstallWsini %HARDWARE_PATH%\z\system\data\%WS_ALT2_FILENAME%
+	)
+	
+	goto :EOF
+
+	
+:uninstall
+	REM Uninstall epoc.ini.
+	if defined EPOC_INI (
+		call :move %EPOC_INI%.backup %EPOC_INI%
+	) else (
+		call :move %EPOCROOT%epoc32\data\epoc.ini.backup %EPOCROOT%epoc32\data\epoc.ini
+	)
+	
+	REM Uninstall testexecute.ini.
+	if defined EMULATOR_C_DIR (
+		call :move %EMULATOR_C_DIR%\system\data\testexecute.ini.backup %EMULATOR_C_DIR%\system\data\testexecute.ini
+	) else (
+		call :move %EPOCROOT%epoc32\winscw\c\system\data\testexecute.ini.backup %EPOCROOT%epoc32\winscw\c\system\data\testexecute.ini
+		call :move %EPOCROOT%epoc32\data\z\system\data\testexecute.ini.backup %EPOCROOT%epoc32\data\z\system\data\testexecute.ini
+	)
+
+	REM Must use different paths if running on Mistral (indicated by EMULATOR_DATA_DIR).
+	REM If not Mistral, change urel and udeb variants.
+	if defined EMULATOR_DATA_DIR (
+		REM Restore the backed up files.
+		call :move %EMULATOR_DATA_DIR%\z\system\data\%WS_FILENAME%.backup %EMULATOR_DATA_DIR%\z\system\data\%WS_FILENAME%
+	) else (
+		REM Restore the backed up files.
+		call :move %EMULATOR_PATH_UDEB%\z\system\data\%WS_FILENAME%.backup %EMULATOR_PATH_UDEB%\z\system\data\%WS_FILENAME%
+		call :move %EMULATOR_PATH_UREL%\z\system\data\%WS_FILENAME%.backup %EMULATOR_PATH_UREL%\z\system\data\%WS_FILENAME%
+		call :move %HARDWARE_PATH%\z\system\data\%WS_FILENAME%.backup %HARDWARE_PATH%\z\system\data\%WS_FILENAME%
+		call :move %HARDWARE_PATH%\z\%WS_ALT_FILENAME%.backup %HARDWARE_PATH%\z\%WS_ALT_FILENAME%
+		call :move %HARDWARE_PATH%\z\system\data\%WS_ALT2_FILENAME%.backup %HARDWARE_PATH%\z\system\data\%WS_ALT2_FILENAME%
+	)
+
+	goto :EOF
Binary file egl/egltest/endpointtestsuite/automated/res/endpoint_autotest_wsini.ini has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/rom/egltestendpointauto.iby	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,39 @@
+// Copyright (c) 2009-2010 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:
+//
+
+
+#ifndef __EGLTESTENDPOINTAUTO_IBY__
+#define __EGLTESTENDPOINTAUTO_IBY__
+
+
+// tef servers
+
+#ifdef _DEBUG
+ECOM_PLUGIN_UDEB(eglendpointremotetest.dll,eglendpointremotetest.rsc)
+#else
+ECOM_PLUGIN(eglendpointremotetest.dll,eglendpointremotetest.rsc)
+#endif
+
+file=ABI_DIR\DEBUG_DIR\eglendpointtestserver.exe                        sys\bin\eglendpointtestserver.exe
+file=ABI_DIR\DEBUG_DIR\eglendpointlifetimetesthelper.exe                sys\bin\eglendpointlifetimetesthelper.exe
+// tef scripts
+data=DATAZ_\egltest\egltest_t_endpoint.script                    \egltest\egltest_t_endpoint.script
+data=DATAZ_\resource\apps\egltest_endpoint\image1.mbm 			 \resource\apps\egltest_endpoint\image1.mbm
+data=DATAZ_\resource\apps\egltest_endpoint\image2.mbm 			 \resource\apps\egltest_endpoint\image2.mbm
+data=DATAZ_\resource\apps\egltest_endpoint\image3.mbm 			 \resource\apps\egltest_endpoint\image3.mbm
+data=DATAZ_\resource\apps\egltest_endpoint\image4.mbm 			 \resource\apps\egltest_endpoint\image4.mbm
+
+
+#endif // __EGLTESTENDPOINTAUTO_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/scripts/egltest_t_endpoint.script	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,39 @@
+// Copyright (c) 2010 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:
+//
+
+PRINT Run EGL endpoint tests.
+LOAD_SUITE eglendpointtestserver
+
+//The remote side of the framework is hard coded to timeout after 10 seconds,
+//So any remote portion of a test that lasts longer than 10 seconds will
+//cause the whole test to timeout. This can be changed in remotetestbase.cpp.
+//The timeouts passed to TEF below MUST always be bigger than that used for
+//the remote side (currently 10 seconds).
+
+// Note: Tests should be sorted by "increasing dependency", so that the 
+// most basic functionality tests are done first. 
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointApiExposure
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointCreate
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointStreaming
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointAcquire
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointAttrib
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointLocking
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointImage
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointImageLifetime
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointNotification
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointTearing
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointStreamingTests
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointStreamingDispXTimesInStream
+RUN_TEST_STEP 300 eglendpointtestserver EGL_EndpointDirtyArea
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/src/eglendpointwrap.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,158 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <e32debug.h>
+#include "eglendpointwrap.h"
+#include "egltest_commscommon.h"
+
+
+
+/*
+ * TEglEndpointWrap is a simple class that presents all of the EGL endpoint
+ * extension functions without the user needing to perform an eglGetProcAddress()
+ * to obtain the function pointer. Each endpoint member function takes the same
+ * arguments as the EGL functions and returns the same types. After construction
+ * you should check the Error() function to ensure that all function pointers
+ * were resolved. Trying to use one of the endpoint functions in the event of a
+ * construction error will result in a panic.
+ */
+
+
+TEglEndpointWrap::TEglEndpointWrap()
+    {
+    //Save all the endpoint function pointers. If an error occurs, log it to iError.
+    TRAP(iError,
+        ipfnEglCreateEndpointNOK = reinterpret_cast<PFNEGLCREATEENDPOINTNOKPROC>(ProcAddressL("eglCreateEndpointNOK"));
+        ipfnEglDestroyEndpointNOK = reinterpret_cast<PFNEGLDESTROYENDPOINTNOKPROC>(ProcAddressL("eglDestroyEndpointNOK"));
+        ipfnEglGetEndpointAttribNOK = reinterpret_cast<PFNEGLGETENDPOINTATTRIBNOKPROC>(ProcAddressL("eglGetEndpointAttribNOK"));
+        ipfnEglSetEndpointAttribNOK = reinterpret_cast<PFNEGLSETENDPOINTATTRIBNOKPROC>(ProcAddressL("eglSetEndpointAttribNOK"));
+        ipfnEglEndpointBeginStreamingNOK = reinterpret_cast<PFNEGLENDPOINTBEGINSTREAMINGNOKPROC>(ProcAddressL("eglEndpointBeginStreamingNOK"));
+        ipfnEglEndpointEndStreamingNOK = reinterpret_cast<PFNEGLENDPOINTENDSTREAMINGNOKPROC>(ProcAddressL("eglEndpointEndStreamingNOK"));
+        ipfnEglAcquireImageNOK = reinterpret_cast<PFNEGLACQUIREIMAGENOKPROC>(ProcAddressL("eglAcquireImageNOK"));
+        ipfnEglReleaseImageNOK = reinterpret_cast<PFNEGLRELEASEIMAGENOKPROC>(ProcAddressL("eglReleaseImageNOK"));
+        ipfnEglGetEndpointDirtyAreaNOK = reinterpret_cast<PFNEGLGETENDPOINTDIRTYAREANOKPROC>(ProcAddressL("eglGetEndpointDirtyAreaNOK"));
+        ipfnEglEndpointRequestNotificationNOK = reinterpret_cast<PFNEGLENDPOINTREQUESTNOTIFICATIONNOKPROC>(ProcAddressL("eglEndpointRequestNotificationNOK"));
+        ipfnEglEndpointCancelNotificationNOK = reinterpret_cast<PFNEGLENDPOINTCANCELNOTIFICATIONNOKPROC>(ProcAddressL("eglEndpointCancelNotificationNOK"));
+        ipfnEglDestroyImageKHR = reinterpret_cast<PFNEGLDESTROYIMAGEKHRPROC>(ProcAddressL("eglDestroyImageKHR"));
+        );
+    }
+
+
+TInt TEglEndpointWrap::Error() const
+    {
+    return iError;
+    }
+
+
+TAnyFuncPtr TEglEndpointWrap::ProcAddressL(const char* aProcName) const
+    {
+    //get the function pointer and check for errors
+    TAnyFuncPtr func = reinterpret_cast<TAnyFuncPtr>(eglGetProcAddress(aProcName));
+    if(!func)
+        {
+        User::Leave(KErrNotFound);
+        }
+    return func;
+    }
+
+
+EGLEndpointNOK TEglEndpointWrap::CreateEndpoint(EGLDisplay dpy, EGLenum type, EGLenum source_type, EGLEndpointSourceNOK source, const EGLint *attrib_list) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglCreateEndpointNOK(dpy, type, source_type, source, attrib_list);
+    }
+
+
+EGLBoolean TEglEndpointWrap::DestroyEndpoint(EGLDisplay dpy, EGLEndpointNOK endpoint) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglDestroyEndpointNOK(dpy, endpoint);
+    }
+
+
+EGLint TEglEndpointWrap::GetEndpointAttrib(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLint attrib) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglGetEndpointAttribNOK(dpy, endpoint, attrib);
+    }
+
+
+EGLBoolean TEglEndpointWrap::SetEndpointAttrib(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLint attrib, EGLint value) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglSetEndpointAttribNOK(dpy, endpoint, attrib, value);
+    }
+
+
+EGLBoolean TEglEndpointWrap::EndpointBeginStreaming(EGLDisplay dpy, EGLEndpointNOK endpoint) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglEndpointBeginStreamingNOK(dpy, endpoint);
+    }
+
+
+EGLBoolean TEglEndpointWrap::EndpointEndStreaming(EGLDisplay dpy, EGLEndpointNOK endpoint) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglEndpointEndStreamingNOK(dpy, endpoint);
+    }
+
+
+EGLImageKHR TEglEndpointWrap::AcquireImage(EGLDisplay dpy, EGLEndpointNOK endpoint) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglAcquireImageNOK(dpy, endpoint);
+    }
+
+
+EGLBoolean TEglEndpointWrap::ReleaseImage(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLImageKHR image, EGLenum api) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglReleaseImageNOK(dpy, endpoint, image, api);
+    }
+
+
+EGLint TEglEndpointWrap::GetEndpointDirtyArea(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLint* rects, EGLint start_rect, EGLint max_rects, EGLBoolean collapse) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglGetEndpointDirtyAreaNOK(dpy, endpoint, rects, start_rect, max_rects, collapse);
+    }
+
+
+EGLBoolean TEglEndpointWrap::EndpointRequestNotification(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLTRequestStatusNOK sync) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglEndpointRequestNotificationNOK(dpy, endpoint, sync);
+    }
+
+
+EGLBoolean TEglEndpointWrap::EndpointCancelNotification(EGLDisplay dpy, EGLEndpointNOK endpoint) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglEndpointCancelNotificationNOK(dpy, endpoint);
+    }
+
+
+EGLBoolean TEglEndpointWrap::DestroyImage(EGLDisplay dpy, EGLImageKHR image) const
+    {
+    ENDPOINT_ASSERT_DEBUG(iError == KErrNone, User::Invariant());
+    return ipfnEglDestroyImageKHR(dpy, image);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/src/egltest_localteststepfactory.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,94 @@
+// Copyright (c) 2009-2010 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include "localtestbase.h"
+#include "egltest_endpointapiexposure.h"
+#include "egltest_endpointcreate.h"
+#include "egltest_endpointacquire.h"
+#include "egltest_endpointattrib.h"
+#include "egltest_endpointstreaming.h"
+#include "egltest_endpointimage.h"
+#include "egltest_endpointlocking.h"
+#include "egltest_endpointtearing.h"
+#include "egltest_endpointstreamingtests.h"
+#include "egltest_endpointnotification.h"
+#include "egltest_endpointdirtyarea.h"
+
+//LocalTestStep factory.
+CTestStep* CEglEndpointTestServer::CreateTestStep(const TDesC& aStepName)
+    {
+    if (aStepName == KEGL_EndpointApiExposure)
+        {
+        return new CEglTest_LocalTestStep_EndpointApiExposure;
+        }
+    if (aStepName == KEGL_EndpointCreate)
+        {
+        return new CEglTest_LocalTestStep_EndpointCreate;
+        }
+    if (aStepName == KEGL_EndpointAttrib)
+        {
+        return new CEglTest_LocalTestStep_EndpointAttrib;
+        }
+    if (aStepName == KEGL_EndpointAcquire)
+        {
+        return new CEglTest_LocalTestStep_EndpointAcquire;
+        }
+    if (aStepName == KEGL_EndpointStreaming)
+        {
+        return new CEglTest_LocalTestStep_EndpointStreaming;
+        }
+    if (aStepName == KEGL_EndpointImage)
+        {
+        return new CEglTest_LocalTestStep_EndpointImage;
+        }
+    if (aStepName == KEGL_EndpointLocking)
+        {
+        return new CEglTest_LocalTestStep_EndpointLocking;
+        }
+    if (aStepName == KEGL_EndpointImageLifetime)
+        {
+        return new CEglTest_LocalTestStep_EndpointImageLifetime;
+        }
+    if (aStepName == KEGL_EndpointTearing)
+        {
+        return new CEglTest_LocalTestStep_EndpointTearing;
+        }
+    if (aStepName == KEGL_EndpointStreamingTests)
+        {
+        return new CEglTest_LocalTestStep_EndpointStreamingTests;
+        }
+    if (aStepName == KEGL_EndpointStreamingDispXTimesInStream)
+        {
+        return new CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream;
+        }
+    if (aStepName == KEGL_EndpointNotification)
+        {
+        return new CEglTest_LocalTestStep_EndpointNotification;
+        }
+    if (aStepName == KEGL_EndpointDirtyArea)
+        {
+        return new CEglTest_LocalTestStep_EndpointDirtyArea;
+        }
+
+    return NULL;
+    }
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/src/egltest_remoteteststepfactory.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,41 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include "remotetestbase.h"
+#include "egltest_endpointapiexposure.h"
+#include "egltest_endpoint_engine.h"
+#include "egltest_endpointtearing.h"
+
+
+//RemoteTestStep Factory.
+CRemoteTestStepBase* CRemoteTestEnv::CreateRemoteTestStepL(TTestUid aTestUid)
+    {
+    switch (aTestUid)
+        {
+        case ETestUidEndpointApiExposure:   return new (ELeave) CEglTest_RemoteTestStep_EndpointApiExposure();
+        case ETestUidEndpointEngine:        return new (ELeave) CEgltest_Remote_Engine();
+        case ETestUidEndpointTearing:       return new (ELeave) CEglTest_RemoteTestStep_EndpointTearing();
+        default:                            User::Leave(KErrUnknown);
+        }
+
+    //Stop the warning.
+    return NULL;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/src/localtestbase.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,560 @@
+// 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
+    @internalComponent - Internal Symbian test code */
+
+
+#include <e32base.h>
+#include <e32debug.h>
+#include <e32msgqueue.h>
+#include <ecom/ecom.h>
+#include <test/testexecuteserverbase.h>
+#include <e32math.h>
+#include "localtestbase.h"
+#include "egltest_commscommon.h"
+#include "egltest_endpoint_util.h"
+
+
+_LIT(KEglEndpointTestServerName,"eglendpointtestserver");
+
+
+CLocalTestStepBase::CLocalTestStepBase(enum TTestUid aUid) :
+    iTestId(aUid),
+    iIsInTestStep(EFalse)
+    {
+    }
+
+void CLocalTestStepBase::DoPreambleL()
+    {
+    //null implmentation for base class
+    }
+
+void CLocalTestStepBase::DoPostambleL()
+    {
+    //null implmentation for base class
+    }
+
+//function used for creating the queues.
+TVerdict CLocalTestStepBase::doTestStepPreambleL()
+    {
+    //Open the queues.
+    User::LeaveIfError(iResultOutQueue.OpenGlobal(KResultQueueName));
+    User::LeaveIfError(iParamsInQueue.OpenGlobal(KParamsQueueName));
+    SetTestStepResult(EPass);
+    iHasCurrentTestIds = EFalse;
+    iResultLog = CTestIdResultLogger::NewL(Logger());
+    DoPreambleL();
+    return EPass;
+    }
+
+TVerdict CLocalTestStepBase::doTestStepPostambleL()
+    {
+    //Log the result of the current tests.
+    if(iHasCurrentTestIds)
+        {
+        iResultLog->LogResult(iTestIdVerdict);
+        }
+    
+    DoPostambleL();
+    delete iResultLog;
+    iResultOutQueue.Close();
+    iParamsInQueue.Close();
+    return EPass;
+    }
+
+CLocalTestStepBase::~CLocalTestStepBase()
+    {
+    //closing an already closed handle is harmless
+    iResultOutQueue.Close();
+    iParamsInQueue.Close();
+    }
+
+TVerdict CLocalTestStepBase::StartRemoteTestStep(const TRemoteTestParams& aMessageIn)
+    {
+    //Starting the remote test step is implemented as a special case
+    //of running a test case, with TestCase = KStartTestStepCaseNumber.
+    iIsInTestStep = ETrue;
+    TVerdict retVal = RunRemoteTestCase(KStartTestStepCaseNumber, aMessageIn);
+    if(retVal != EPass)
+        {
+        iIsInTestStep = EFalse;
+        }
+    return retVal;
+    }
+
+TVerdict CLocalTestStepBase::EndRemoteTestStep(const TRemoteTestParams& aMessageIn)
+    {
+    //Ending the remote test step is implemented as a special case
+    //of running a test case, with TestCase = KEndTestStepCaseNumber.
+    TVerdict retVal = RunRemoteTestCase(KEndTestStepCaseNumber, aMessageIn);
+    iIsInTestStep = EFalse;
+    return retVal;
+    }
+
+TVerdict CLocalTestStepBase::RunRemoteTestCase(TInt aTestCase, const TRemoteTestParams& aMessageIn)
+    {
+    //Don't attempt to run any test cases if we are not in a test step.
+    if(!iIsInTestStep)
+        {
+        SetTestStepResult(EFail);
+        return TestStepResult();
+        }
+
+    //send the message
+    TRemoteTestParamsPacket message(iTestId, aTestCase, aMessageIn);
+    iParamsInQueue.SendBlocking(message);
+
+    TRemoteTestResult result;
+    do
+        {
+        //relying on TEF timeout if there are problems such as the render stage not loaded.
+        iResultOutQueue.ReceiveBlocking(result);
+
+        //if uid and test case doesn't match something has gone badly wrong
+        if (result.iUid != iTestId || result.iTestCase != aTestCase)
+            {
+            //test is out of Sync
+            User::Panic(_L("Test out of sync with render stage"), KErrGeneral);
+            }
+
+        //log the message if there is one
+        if (!result.iFinished)
+            {
+            //Convert the filename to a C string. The remote test env guarantees
+            //that there is a free space at the end of the descriptor to add NULL.
+            const TText8* file = result.iFile.PtrZ();
+
+            //Convert the message to unicode and log the message.
+            TBuf<KRSLogMessageLength> message;
+            message.Copy(result.iMessage);
+            Logger().LogExtra(file, result.iLine, result.iSeverity, _L("%S"), &message);
+            }
+        }while (!result.iFinished);
+
+    //Translate the RemoteTestStep verdict to a TVerdict.
+    TVerdict retVal = EPass;
+    switch (result.iVerdict)
+        {
+        case ERtvPass:
+            retVal = EPass;
+            break;
+
+        case ERtvFail:
+            retVal = EFail;
+            break;
+
+        case ERtvInconclusive:
+            retVal = EInconclusive;
+            break;
+
+        case ERtvAbort:
+            retVal = EAbort;
+            break;
+
+        case ERtvPanic:
+            //The remote test paniced, so we panic too.
+            //This means the output log relects what actually happened.
+            User::Panic(_L("Remote Test Step Paniced!"), KErrGeneral);
+            break;
+
+        case ERtvTimeout:
+            //The remote test timedout, so we sleep so that tef times us out too.
+            //This means the output log relects what actually happened.
+            User::After(KMaxTInt);
+            break;
+
+        case ERtvUnknownTestUid:
+            retVal = EIgnore;
+            break;
+
+        default:
+            User::Panic(_L("Invalid verdict returned from the remote test step!"), KErrGeneral);
+            break;
+        }
+
+    if(retVal != EPass)
+        {
+        SetTestStepResult(retVal);
+        }
+
+    return retVal;
+    }
+
+
+void CLocalTestStepBase::RegisterTestIdsL(const TDesC& aTestString)
+    {
+    iResultLog->RegisterTestIdsL(aTestString);
+    }
+
+
+void CLocalTestStepBase::SetCurrentTestIds(const TDesC& aTestString)
+    {
+    if(iHasCurrentTestIds)
+        {
+        iResultLog->LogResult(iTestIdVerdict);
+        }
+    
+    iResultLog->SetCurrentTestIds(aTestString);
+    iHasCurrentTestIds = ETrue;
+    iTestIdVerdict = EPass;
+    }
+
+
+void CLocalTestStepBase::SetTestStepResult(TVerdict aVerdict)
+    {
+    iTestIdVerdict = aVerdict;
+    CTestStep::SetTestStepResult(aVerdict);
+    }
+
+
+//Used by the result logger to delimit the csv test id strings.
+class TCommaDelimiter
+    {
+private:
+    mutable TPtrC iRemaining;
+    
+public:
+    TCommaDelimiter(const TDesC& aString)
+        {
+        //Set our remaining string to the whole string, or NULL if empty.
+        if(aString.Length() == 0)
+            {
+            iRemaining.Set(NULL, 0);
+            }
+        else
+            {
+            iRemaining.Set(aString);
+            }
+        }
+    
+    
+    TInt GetNext(TPtrC& aSegment) const
+        {
+        //Trim off any leading commas.
+        while(iRemaining.Length() >= 2 && iRemaining[0] == ',')
+            {
+            iRemaining.Set(&iRemaining[1], iRemaining.Length() - 1);
+            }
+        
+        //If remaining string is empty or has one remaining comma, return.
+        if(iRemaining.Length() == 0 || iRemaining[0] == ',')
+            {
+            iRemaining.Set(NULL, 0);
+            return KErrNotFound;
+            }
+        
+        //Find the first comma.
+        TInt pos = iRemaining.Locate(',');
+        
+        //If comma not found, return all remaining string.
+        if(pos == KErrNotFound)
+            {
+            aSegment.Set(iRemaining);
+            iRemaining.Set(NULL, 0);
+            return KErrNone;
+            }
+        
+        //Comma found. There must be non-comma chars between 0 
+        //and pos since we trimmed leading commas previously.
+        aSegment.Set(&iRemaining[0], pos);
+        iRemaining.Set(&iRemaining[pos], iRemaining.Length() - pos);
+        return KErrNone;
+        }
+    
+    
+    TInt GetNextTrimmed(TPtrC& aSegment) const
+        {
+        //Keep calling GetNext() until we get a segment that has 
+        //chars other than spaces or there are no more segments.
+        while(1)
+            {
+            TPtrC segment;
+            TInt err = GetNext(segment);
+            if(err != KErrNone)
+                {
+                return err;
+                }
+            
+            TInt front;
+            TInt back;
+            for(front = 0; front < segment.Length() && segment[front] == ' '; front++) {}
+            for(back = segment.Length() - 1; back >= 0 && segment[back] == ' '; back--) {}
+            
+            TInt length = (back + 1) - front;
+            if(length > 0 && segment[front] != ' ' && segment[back] != ' ')
+                {
+                aSegment.Set(&segment[front], length);
+                return KErrNone;
+                }
+            }
+        }
+    };
+
+
+CTestIdResultLogger* CTestIdResultLogger::NewL(CTestExecuteLogger& aLogger)
+    {
+    CTestIdResultLogger* self = new (ELeave) CTestIdResultLogger(aLogger);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+
+CTestIdResultLogger::CTestIdResultLogger(CTestExecuteLogger& aLogger) :
+    iOriginalThread(RThread().Id()),
+    iLogger(aLogger)
+    {
+    }
+
+
+void CTestIdResultLogger::ConstructL()
+    {
+    //Create panic monitor thread. Note that we share the heap with this 
+    //thread so that the arrays remain in scope if this thread panics.
+    //Note also no need for explicit locking of arrays since the panic 
+    //monitor will only access them if a panic occurs here.
+    static const TInt KStackSize =   0x2000;      //  8KB
+    TUint32 random = Math::Random();
+    TName threadName;
+    _LIT(KThreadNameFormat, "%S-%u");
+    _LIT(KEnvName, "EpTestIdLogger");
+    threadName.Format(KThreadNameFormat, &KEnvName, random);
+    User::LeaveIfError(iPanicMonitor.Create(threadName, PanicMonitorMain, KStackSize, &User::Heap(), this, EOwnerThread));
+    
+    //Rendezvous with panic thread.
+    TRequestStatus rendStat;
+    iPanicMonitor.Rendezvous(rendStat);
+    iPanicMonitor.Resume();
+    User::WaitForRequest(rendStat);
+    }
+
+
+CTestIdResultLogger::~CTestIdResultLogger()
+    {
+    TRequestStatus logonStat;
+    iPanicMonitor.Logon(logonStat);
+    iPanicMonitor.RequestComplete(iCloseMonitor, KErrNone);
+    User::WaitForRequest(logonStat);
+    iPanicMonitor.Close();
+    iRegisteredTestIds.Close();
+    iCurrentTestIds.Close();
+    }
+
+
+void CTestIdResultLogger::RegisterTestIdsL(const TDesC& aTestString)
+    {
+    //Set up delimitter.
+    TCommaDelimiter delimit(aTestString);
+    
+    //Get every test id from the string and add it to the registered test ids array.
+    TPtrC testIdPtr;
+    while(delimit.GetNextTrimmed(testIdPtr) == KErrNone)
+        {
+        TTestId testId(testIdPtr);
+        iRegisteredTestIds.AppendL(testId);
+        }
+    
+    //Reserve enough space in the current test ids array so that SCurrentTestIds() can not fail.
+    iCurrentTestIds.ReserveL(iRegisteredTestIds.Count());
+    }
+
+
+void CTestIdResultLogger::SetCurrentTestIds(const TDesC& aTestString)
+    {
+    ASSERT(iCurrentTestIds.Count() == 0);
+    
+    //Set up delimitter.
+    TCommaDelimiter delimit(aTestString);
+    
+    //Get every test id from the string and add it to the registered test ids array.
+    TPtrC testIdPtr;
+    while(delimit.GetNextTrimmed(testIdPtr) == KErrNone)
+        {
+        TTestId testId(testIdPtr);
+		
+		//This cannot fail under legitimate circumstances, since enough 
+		//space is reserved in this array when registering TestIds.
+        TInt err = iCurrentTestIds.Append(testId);
+		ASSERT(err == KErrNone);
+        }
+    
+    //Make sure these tests were registered and remove from the registered array.
+    for(TInt i=0; i < iCurrentTestIds.Count(); i++)
+        {
+        TInt idx = iRegisteredTestIds.Find(iCurrentTestIds[i]);
+        ASSERT(idx != KErrNotFound);
+        iRegisteredTestIds.Remove(idx);
+        }
+    }
+
+
+void CTestIdResultLogger::LogResult(TVerdict aVerdict)
+    {
+    TBuf<20> verdict;
+    switch(aVerdict)
+        {
+        case EPass:           verdict.Append(_L("PASS"));            break;
+        case EFail:           verdict.Append(_L("FAIL"));            break;
+        case EInconclusive:   verdict.Append(_L("INCONCLUSIVE"));    break;
+        case ETestSuiteError: verdict.Append(_L("TEST SUTE ERROR")); break;
+        case EAbort:          verdict.Append(_L("ABORT"));           break;
+        case EIgnore:         verdict.Append(_L("IGNORE"));          break;
+        }
+    
+    while(iCurrentTestIds.Count())
+        {
+        LogResult(iLogger, iCurrentTestIds[0], verdict);
+        iCurrentTestIds.Remove(0);
+        }
+    }
+
+
+void CTestIdResultLogger::LogResult(CTestExecuteLogger& aLogger, const TTestId& aTestId, const TDesC& aVerdict)
+    {
+    aLogger.LogExtra(((TText8*)"EGL ENDPOINT TEST RESULT >>>"), 0, ESevrInfo, _L("GRAPHICS-EGL-%S: %S"), &aTestId, &aVerdict);
+    }
+
+
+TInt CTestIdResultLogger::PanicMonitorMain(TAny* aSelf)
+    {
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+
+    TRAPD(err,
+        //Create active scheduler.
+        CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
+        CleanupStack::PushL(scheduler);
+        CActiveScheduler::Install(scheduler);
+
+        //Run MainL.
+        CTestIdResultLogger* self = static_cast<CTestIdResultLogger*>(aSelf);
+        self->PanicMonitorMainL();
+
+        //Clean up.
+        CleanupStack::PopAndDestroy(scheduler);
+        );
+    
+    __ASSERT_ALWAYS(err == KErrNone, User::Invariant());
+
+    delete cleanup;
+    return KErrNone;
+    }
+    
+
+void CTestIdResultLogger::PanicMonitorMainL()
+    {
+    //Setup logging.
+    CTestExecuteLogger logger;
+    TEndpointUtil::SetLoggerForProcessWrapperL(logger);
+    
+    //Tell parent how to close us.
+    TRequestStatus closeStatus = KRequestPending;
+    iCloseMonitor = &closeStatus;
+    
+    //Open parent thread and logon.
+    RThread origThread;
+    User::LeaveIfError(origThread.Open(iOriginalThread, EOwnerThread));
+    TRequestStatus origStatus;
+    origThread.Logon(origStatus);
+    
+    //Rendevous with our parent then wait for thread to exit or close command.
+    RThread().Rendezvous(KErrNone);
+    User::WaitForRequest(closeStatus, origStatus);
+    
+    if (closeStatus != KRequestPending)
+        {
+        //Parent is shutting us down. Just cancel our outstanding request and exit.
+        origThread.LogonCancel(origStatus);
+        User::WaitForRequest(origStatus);
+        }
+    else if (origStatus != KRequestPending)
+        {
+        //We can only get here if parent panicked.
+        //Log that all current tests were panicked and all registered tests were not run.
+        _LIT(KPanicked, "PANIC");
+        _LIT(KNotRun, "NOT RUN DUE TO PREVIOUS PANIC");
+        while(iCurrentTestIds.Count())
+            {
+            LogResult(logger, iCurrentTestIds[0], KPanicked);
+            iCurrentTestIds.Remove(0);
+            }
+        while(iRegisteredTestIds.Count())
+            {
+            LogResult(logger, iRegisteredTestIds[0], KNotRun);
+            iRegisteredTestIds.Remove(0);
+            }
+        }
+    
+    origThread.Close();
+    }
+
+
+CEglEndpointTestServer* CEglEndpointTestServer::NewL()
+	{
+	CEglEndpointTestServer* server = new(ELeave) CEglEndpointTestServer();
+	CleanupStack::PushL(server);
+	// CServer base class call
+	TParsePtrC serverName(RProcess().FileName());
+	server->StartL(serverName.Name());
+	CleanupStack::Pop(server);
+	return server;
+	}
+
+static void MainL()
+	{
+	CActiveScheduler* sched=NULL;
+	sched=new(ELeave) CActiveScheduler;
+	CActiveScheduler::Install(sched);
+
+	CEglEndpointTestServer* server = NULL;
+	// Create the CTestServer derived server
+	TRAPD(err, server = CEglEndpointTestServer::NewL());
+	if(!err)
+		{
+		// Sync with the client and enter the active scheduler
+		RProcess::Rendezvous(KErrNone);
+		sched->Start();
+		}
+	delete server;
+	delete sched;
+	}
+
+/**
+  @return Standard Epoc error code on process exit
+  Process entry point. Called by client using RProcess API
+  */
+TInt E32Main()
+	{
+	__UHEAP_MARK;
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	if(cleanup == NULL)
+		{
+		return KErrNoMemory;
+		}
+	TRAPD(err,MainL());
+
+	if (err)
+		{
+		RDebug::Print(_L("CEglEndpointTestServer::MainL - Error: %d"), err);
+	   	User::Panic(KEglEndpointTestServerName, err);
+		}
+
+	delete cleanup;
+	REComSession::FinalClose();
+	__UHEAP_MARKEND;
+	return KErrNone;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/src/remotetestbase.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,693 @@
+// Copyright (c) 2009-2010 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+/*
+ * This file contains the parts of CRemoteTestEnv and CRemoteTestStepBase
+ * that do not need editting when adding new tests.
+ *
+ * CRemoteTestEnv acts as the controller. It provides the means of communicating
+ * with the local side and it instantiates remote test steps and executes them in
+ * their own thread. It monitors this thread for panic / timeout. If this
+ * happens, it informs the local side.
+ */
+
+
+#include "remotetestbase.h"
+#include <e32debug.h>
+#include <e32math.h>
+
+
+// Timout for remote test steps. This MUST be smaller
+// than any timeout passed to TEF for the local test step
+// in the script file.
+const TInt KRemoteTestStepTimeout = 10 * 1000000;
+
+
+//Active object used to generate a timeout if worker thread takes too long. ------
+
+CTimeoutTimer* CTimeoutTimer::NewL(CRemoteTestEnv& aEnv, TInt aPriority)
+    {
+    CTimeoutTimer* obj = new (ELeave) CTimeoutTimer(aEnv, aPriority);
+    CleanupStack::PushL(obj);
+    obj->ConstructL();
+    CleanupStack::Pop(obj);
+    return obj;
+    }
+
+
+CTimeoutTimer::CTimeoutTimer(CRemoteTestEnv& aEnv, TInt aPriority) :
+    CTimer(aPriority),
+    iEnv(aEnv)
+    {
+    }
+
+
+void CTimeoutTimer::ConstructL()
+    {
+    CTimer::ConstructL();
+    CActiveScheduler::Add(this);
+    }
+
+
+CTimeoutTimer::~CTimeoutTimer()
+    {
+    }
+
+
+void CTimeoutTimer::RunL()
+    {
+    ENDPOINT_ASSERT_DEBUG(iStatus.Int() == KErrNone, User::Invariant());
+    iEnv.TestCaseTimedOut();
+    }
+
+//--------------------------------------------------------------------------------
+
+
+//Active object used to listen to the worker thread to see if it panics. ---------
+
+CWorkerListener* CWorkerListener::NewL(CRemoteTestEnv& aEnv, TInt aPriority)
+    {
+    CWorkerListener* obj = new (ELeave) CWorkerListener(aEnv, aPriority);
+    CleanupStack::PushL(obj);
+    obj->ConstructL();
+    CleanupStack::Pop(obj);
+    return obj;
+    }
+
+
+CWorkerListener::CWorkerListener(CRemoteTestEnv& aEnv, TInt aPriority) :
+    CActive(aPriority),
+    iEnv(aEnv)
+    {
+    }
+
+
+CWorkerListener::~CWorkerListener()
+    {
+    Cancel();
+    }
+
+
+void CWorkerListener::ConstructL()
+    {
+    CActiveScheduler::Add(this);
+    }
+
+
+void CWorkerListener::Listen(RThread& aThread)
+    {
+    ENDPOINT_ASSERT_DEBUG(!IsActive(), User::Invariant());
+    iThread = &aThread;
+    iThread->Logon(iStatus);
+    SetActive();
+    }
+
+
+void CWorkerListener::RunL()
+    {
+    iEnv.WorkerExitted();
+    }
+
+
+void CWorkerListener::DoCancel()
+    {
+    iThread->LogonCancel(iStatus);
+    }
+
+//--------------------------------------------------------------------------------
+
+
+//Active object used to listen for test case completion from the worker thread. --
+
+CTestCaseListener* CTestCaseListener::NewL(CRemoteTestEnv& aEnv, TInt aPriority)
+    {
+    CTestCaseListener* obj = new (ELeave) CTestCaseListener(aEnv, aPriority);
+    CleanupStack::PushL(obj);
+    obj->ConstructL();
+    CleanupStack::Pop(obj);
+    return obj;
+    }
+
+
+CTestCaseListener::CTestCaseListener(CRemoteTestEnv& aEnv, TInt aPriority) :
+    CActive(aPriority),
+    iEnv(aEnv)
+    {
+    }
+
+
+CTestCaseListener::~CTestCaseListener()
+    {
+    Cancel();
+    }
+
+
+void CTestCaseListener::ConstructL()
+    {
+    CActiveScheduler::Add(this);
+    }
+
+
+void CTestCaseListener::Listen()
+    {
+    ENDPOINT_ASSERT_DEBUG(!IsActive(), User::Invariant());
+    iStatus = KRequestPending;
+    SetActive();
+    }
+
+
+void CTestCaseListener::RunL()
+    {
+    ENDPOINT_ASSERT_DEBUG(iStatus.Int() == KErrNone, User::Invariant());
+    iEnv.TestCaseCompleted();
+    }
+
+
+void CTestCaseListener::DoCancel()
+    {
+    //There is no way to actually cancel a test case,
+    //But this AO will only be cancelled when the thread
+    //has panicked or timed out - which is as good as a
+    //cancel. We still need to call canel on the AO though
+    //to set it as inactive.
+
+    //Also need to do a request complete if the worker has not already
+    //done it. There is no danger of the worker completing between our
+    //check (the if) and actually completing because the worker is dead.
+    if(iStatus.Int() == KRequestPending)
+        {
+        TRequestStatus* myStatus = &iStatus;
+        User::RequestComplete(myStatus, KErrCancel);
+        }
+    }
+
+//--------------------------------------------------------------------------------
+
+
+//CRemoteTestEnv -----------------------------------------------------------------
+
+CRemoteTestEnv* CRemoteTestEnv::NewL()
+    {
+    CRemoteTestEnv* obj = new (ELeave) CRemoteTestEnv();
+    CleanupStack::PushL(obj);
+    obj->ConstructL();
+    CleanupStack::Pop(obj);
+    return obj;
+    }
+
+
+CRemoteTestEnv::CRemoteTestEnv() :
+    CActive(CActive::EPriorityStandard)
+    {
+    }
+
+
+void CRemoteTestEnv::ConstructL()
+    {
+    //Create the message queues.
+    User::LeaveIfError(iResultOutQueue.CreateGlobal(KResultQueueName, 5));
+    User::LeaveIfError(iParamsInQueue.CreateGlobal(KParamsQueueName, 1));
+
+    iSupervisorId = RThread().Id();
+
+    //Create AOs that monitor for events.
+    //These priorities are important, since if, for example, the worker
+    //thread exits by returning from the thread entrypoint after
+    //successfully completing the EndTestStep() case, but before the
+    //supervisor runs, the supervisor's AS will find that both iWorkerListener
+    //and iTestCaseListener have completed. We use the priorities to determine
+    //which signal to run first. (The one we run will cancel the others).
+    iTimeoutTimer = CTimeoutTimer::NewL(*this, CActive::EPriorityLow);
+    iWorkerListener = CWorkerListener::NewL(*this, CActive::EPriorityStandard);
+    iTestCaseListener = CTestCaseListener::NewL(*this, CActive::EPriorityHigh);
+
+    //Add self to active scheduler.
+    CActiveScheduler::Add(this);
+    }
+
+
+CRemoteTestEnv::~CRemoteTestEnv()
+    {
+    Cancel();
+    delete iTimeoutTimer;
+    delete iWorkerListener;
+    delete iTestCaseListener;
+    iParamsInQueue.Close();
+    iResultOutQueue.Close();
+    }
+
+
+void CRemoteTestEnv::StartReceivingCmds()
+    {
+    ReceiveCmd();
+    CActiveScheduler::Start();
+    }
+
+
+void CRemoteTestEnv::ReceiveCmd()
+    {
+    ENDPOINT_ASSERT_DEBUG(!IsActive(), User::Invariant());
+    iParamsInQueue.NotifyDataAvailable(iStatus);
+    SetActive();
+    }
+
+
+//This is run when an packet arrives in the queue from the local side.
+//It is not rearmed until the test step has run to completion.
+void CRemoteTestEnv::RunL()
+    {
+    //Retrieve the packet from the queue.
+    TInt err = iParamsInQueue.Receive(iCurTestCaseParamsPacket);
+    ENDPOINT_ASSERT_DEBUG(err == KErrNone, User::Invariant());
+    
+    //Create the appropriate TestStep and launch thread if this is a "StartTestStep".
+    if(iCurTestCaseParamsPacket.iTestCase == KStartTestStepCaseNumber)
+        {
+        //At this point in a well behaved system, iCurTestStep must be NULL.
+        //If it is not, comms has gone wrong (most likely the local side has 
+        //panicked midway through the test step). If iCurTestStep is not NULL
+        //we can also guarantee that the thread is still running. Recover 
+        //from this by getting the thread to do some special teardown, 
+        //followed by tidying up in this thread.
+        if(iCurTestStep)
+            {
+            //Logon to worker then signal to abort the test case
+            //and wait for completion.
+            TRequestStatus threadStat;
+            iCurWorker.Logon(threadStat);
+            TRequestStatus* notifyRunTestCase = &iNotifyRunTestCase;
+            iCurWorker.RequestComplete(notifyRunTestCase, KErrAbort);
+            User::WaitForRequest(threadStat);
+            
+            //Tidy up.
+            iCurWorker.Close();
+            delete iCurTestStep;
+            iCurTestStep = NULL;
+            }
+        
+        TBool result = SetupTestStep();
+
+        //If we failed to setup the test step (invalid uid),
+        //just register for another command and return.
+        if(!result)
+            {
+            //Register to receive another packet from the message queue.
+            ReceiveCmd();
+            return;
+            }
+        }
+
+    //Activate the TimoutTimer, TestCaseListener and WorkerListener.
+    iTimeoutTimer->After(KRemoteTestStepTimeout);
+    iTestCaseListener->Listen();
+    iWorkerListener->Listen(iCurWorker);
+
+    //Signal the worker thread to start a test case.
+    TRequestStatus* notifyRunTestCase = &iNotifyRunTestCase;
+    iCurWorker.RequestComplete(notifyRunTestCase, KErrNone);
+    }
+
+
+void CRemoteTestEnv::DoCancel()
+    {
+    iParamsInQueue.CancelDataAvailable();
+    }
+
+
+//The test case can end in three ways:
+//    1. Test Case compeletes normally (this includes failing).
+//    2. The Test Case times out (in which case the thread is panicked).
+//    3. The Test Case panics the worker thread.
+//Three AOs listen for each of these possibilities and one of the functions below.
+
+
+//This is called for case 1.
+void CRemoteTestEnv::TestCaseCompleted()
+    {
+    //Cancel the TimeoutTimer and WorkerListener.
+    iTimeoutTimer->Cancel();
+    iWorkerListener->Cancel();
+
+    //Test case completed correctly, so send test result.
+    SendResult(iCurTestCaseVerdict);
+
+    //Tidy up if this is the end of the test step.
+    if(iCurTestCaseParamsPacket.iTestCase == KEndTestStepCaseNumber)
+        {
+        iCurWorker.Close();
+        delete iCurTestStep;
+        iCurTestStep = NULL;
+        }
+
+    //Register to receive another packet from the message queue.
+    ReceiveCmd();
+    }
+
+
+//This is called for case 2.
+void CRemoteTestEnv::TestCaseTimedOut()
+    {
+    //Cancel the TestCaseListener and WorkerListener.
+    iTestCaseListener->Cancel();
+    iWorkerListener->Cancel();
+
+    //Thread timed out so log that it timed out and send the ERtvTimeout result.
+    iCurTestStep->REMOTE_ERR_PRINTF1(_L("Remote test step timed out."));
+    SendResult(ERtvTimeout);
+
+    //Tidy up. Because we timed out, we abandon the test step, so
+    //kill the thread and release even if this was not an EndTestStep
+    iCurWorker.Kill(KErrTimedOut);
+    iCurWorker.Close();
+    delete iCurTestStep;
+    iCurTestStep = NULL;
+
+    //Register to receive another packet from the message queue.
+    ReceiveCmd();
+    }
+
+
+//This is called for case 3.
+void CRemoteTestEnv::WorkerExitted()
+    {
+    //Cancel the TimeoutTimer and TestCaseListener.
+    iTimeoutTimer->Cancel();
+    iTestCaseListener->Cancel();
+
+    //Even if we were running a EndTestStep (ie the thread will exit normally), TestCaseListener should still
+    //fire first, and it will cancel the WorkerListener - so we know that if we get here, it is because the
+    //thread exitted abnormally.
+
+    //Thread was panicked, so log the panic category before sending the ERtvPanic result.
+    TExitCategoryName exitCategory = iCurWorker.ExitCategory();
+    iCurTestStep->REMOTE_ERR_PRINTF3(_L("Remote test step panicked with: %S, code = %d."), &exitCategory, iCurWorker.ExitReason());
+    SendResult(ERtvPanic);
+
+    //Tidy up. Because we panicked, we abandon the test step, so
+    //release resources even if this was not an EndTestStep
+    iCurWorker.Close();
+    delete iCurTestStep;
+    iCurTestStep = NULL;
+
+    //Register to receive another packet from the message queue.
+    ReceiveCmd();
+    }
+
+
+TBool CRemoteTestEnv::SetupTestStep()
+    {
+    //Set the TRequestStatus that the worker thread triggers off for the first time.
+    //After this, the worker thread will set it back to KRequestPending itself.
+    iNotifyRunTestCase = KRequestPending;
+
+    //Create TestStep
+    TRAPD(err, iCurTestStep = CreateRemoteTestStepL(iCurTestCaseParamsPacket.iUid));
+    if(err == KErrUnknown)
+        {
+        //Unknown test step. Tell the driver app.
+        SendResult(ERtvUnknownTestUid);
+        return EFalse;
+        }
+    else if(err != KErrNone || !iCurTestStep)
+        {
+        User::Invariant();
+        }
+
+    //Construct the test step base class.
+    TRAP(err, iCurTestStep->ConstructL(*this));
+    __ASSERT_ALWAYS(err == KErrNone, User::Invariant());
+
+    //Create Test Thread.
+    static const TInt KStackSize =   0x2000;      //  8KB
+    static const TInt KHeapMinSize = 0x1000;      //  4KB
+    static const TInt KHeapMaxSize = 0x1000000;   // 16MB
+    TUint32 random = Math::Random();
+    TName threadName;
+    _LIT(KThreadNameFormat, "%S-%u");
+    _LIT(KExecName, "EpTestRemoteExec");
+    threadName.Format(KThreadNameFormat, &KExecName, random);
+    err = iCurWorker.Create(threadName, TestThreadEntryPoint, KStackSize, KHeapMinSize, KHeapMaxSize, this);
+    __ASSERT_ALWAYS(err == KErrNone, User::Invariant());
+
+    //Start the test thread.
+    iCurWorker.Resume();
+
+    return ETrue;
+    }
+
+
+// The DoEglHeapMark and DoEglHeapCheck are intended to make sure memory
+// allocations are freed when the testing is complete. The current
+// implementation only supports the Symbian/Nokia reference implementation.
+// An implementor of another EGL implementation is free to add their own
+// variant of heapchecking here, with suitable #if around it.
+// The function in egl should call __DbgMarkStart() and __DbgMarkEnd()
+// on the heap for the egl implementation - or the equivalent if the
+// heap is not a typical Symbian heap.
+void CRemoteTestEnv::DoEglHeapMark()
+    {
+#if USE_EGLHEAP_CHECKING
+    typedef void (*TEglDebugHeapMarkStartPtr)(void);
+
+    TEglDebugHeapMarkStartPtr  heapMarkStart = reinterpret_cast<TEglDebugHeapMarkStartPtr>(eglGetProcAddress("egliDebugHeapMarkStart"));
+    if (heapMarkStart)
+        {
+        heapMarkStart();
+        }
+#endif
+    }
+
+void CRemoteTestEnv::DoEglHeapCheck()
+    {
+#if USE_EGLHEAP_CHECKING
+    typedef EGLint (*TEglDebugHeapMarkEndPtr)(EGLint count);
+
+    TEglDebugHeapMarkEndPtr heapMarkEnd = reinterpret_cast<TEglDebugHeapMarkEndPtr>(eglGetProcAddress("egliDebugHeapMarkEnd"));
+    if (heapMarkEnd)
+        {
+        (void)heapMarkEnd(0);
+        }
+#endif
+    }
+
+#define __EGLHEAP_MARK   DoEglHeapMark()
+#define __EGLHEAP_MARKEND  DoEglHeapCheck()
+
+
+void CRemoteTestEnv::RunCurrentTestStepL()
+    {
+    TInt processHandleMarkDummy;
+    TInt threadHandleMarkStart;
+    TInt threadHandleMarkEnd;
+    TBool finished = EFalse;
+
+    while(!finished)
+        {
+        //Wait to be signalled to run a test case.
+        User::WaitForRequest(iNotifyRunTestCase);
+        
+        //We are aborting the test step. Tidy up EGL and exit.
+        if(iNotifyRunTestCase.Int() == KErrAbort)
+            {
+            iCurTestStep->EglEndL();
+            iNotifyRunTestCase = KRequestPending;
+            return;
+            }
+        
+        //Rearm the TRequestStatus (The first arming is done in the supervisor thread).
+        iNotifyRunTestCase = KRequestPending;
+
+        //Run the test case and panic if it leaves. Start/End are just special test cases.
+        if(iCurTestCaseParamsPacket.iTestCase == KStartTestStepCaseNumber)
+            {
+            //Mark the user heap & thread handle count (we don't care about the process handle count).
+            RThread().HandleCount(processHandleMarkDummy, threadHandleMarkStart);
+            __UHEAP_MARK;
+            __EGLHEAP_MARK;
+
+            //StartRemoteTest.
+            TRAPD(err, iCurTestCaseVerdict = iCurTestStep->DoStartRemoteTestStepL(iCurTestCaseParamsPacket.iParams));
+            __ASSERT_ALWAYS(err == KErrNone, User::Panic(_L("tried to leave."), __LINE__));
+            }
+        else if(iCurTestCaseParamsPacket.iTestCase == KEndTestStepCaseNumber)
+            {
+            //EndRemoteTest.
+            TRAPD(err, iCurTestCaseVerdict = iCurTestStep->DoEndRemoteTestStepL(iCurTestCaseParamsPacket.iParams));
+            __ASSERT_ALWAYS(err == KErrNone, User::Panic(_L("tried to leave."), __LINE__));
+
+            //This will cause a panic if the test step leaked memory or thread handles.
+            __UHEAP_MARKEND;
+            __EGLHEAP_MARKEND;
+            RThread().HandleCount(processHandleMarkDummy, threadHandleMarkEnd);
+            __ASSERT_ALWAYS(threadHandleMarkStart == threadHandleMarkEnd, User::Panic(_L("leaked handles."), KErrBadHandle));
+
+            //Exit the loop (and eventually the thread).
+            finished = ETrue;
+            }
+        else
+            {
+            //Run a regular Test Case.
+            TRAPD(err, iCurTestCaseVerdict = iCurTestStep->DoRunRemoteTestCaseL(iCurTestCaseParamsPacket.iTestCase, iCurTestCaseParamsPacket.iParams));
+            __ASSERT_ALWAYS(err == KErrNone, User::Panic(_L("tried to leave."), __LINE__));
+            }
+
+        //Notify the supervisor that we have completed the test case.
+        RThread supervisor;
+        TInt err = supervisor.Open(iSupervisorId);
+        __ASSERT_ALWAYS(err == KErrNone, User::Panic(_L("framework error."), __LINE__));
+        TRequestStatus* notifyFinishTestCase = &iTestCaseListener->iStatus;
+        supervisor.RequestComplete(notifyFinishTestCase, KErrNone);
+        supervisor.Close();
+        }
+    }
+
+
+TInt CRemoteTestEnv::TestThreadEntryPoint(TAny* aSelf)
+    {
+    CRemoteTestEnv* self = static_cast<CRemoteTestEnv*>(aSelf);
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+
+    TRAPD(err,
+        //Create active scheduler.
+        CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
+        CleanupStack::PushL(scheduler);
+        CActiveScheduler::Install(scheduler);
+
+        //Run the current test step.
+        self->RunCurrentTestStepL();
+
+        //Clean up.
+        CleanupStack::PopAndDestroy(scheduler);
+        );
+
+    __ASSERT_ALWAYS(err == KErrNone, User::Invariant());
+
+    delete cleanup;
+    return KErrNone;
+    }
+
+
+void CRemoteTestEnv::SendResult(TRemoteTestVerdict aVerdict)
+    {
+    iResultOutQueue.SendBlocking(TRemoteTestResult(iCurTestCaseParamsPacket.iUid, iCurTestCaseParamsPacket.iTestCase, aVerdict));
+    }
+
+
+void CRemoteTestEnv::SendLog(const TDesC8& aFile, TInt aLine, TInt aSeverity, const TDesC& aMessage)
+    {
+    iResultOutQueue.SendBlocking(TRemoteTestResult(iCurTestCaseParamsPacket.iUid, iCurTestCaseParamsPacket.iTestCase, aFile, aLine, aSeverity, aMessage));
+    }
+
+//--------------------------------------------------------------------------------
+
+
+//CRemoteTestStepBase ------------------------------------------------------------
+
+CRemoteTestStepBase::CRemoteTestStepBase(TTestUid aUid) :
+    iUid(aUid)
+    {
+    }
+
+
+void CRemoteTestStepBase::ConstructL(CRemoteTestEnv& aTestEnv)
+    {
+    iTestEnv = &aTestEnv;
+    if (iEndpoint.Error() != KErrNone)
+        {
+        RDebug::Printf("Could not construct CRemoteTestStepBase"
+                " - is EglEndpointNOK enabled?? -- Error: %d", iEndpoint.Error());
+        User::Leave(iEndpoint.Error());
+        }
+    }
+
+
+CRemoteTestStepBase::~CRemoteTestStepBase()
+    {
+    }
+
+
+TRemoteTestVerdict CRemoteTestStepBase::DoStartRemoteTestStepL(const TRemoteTestParams& /*aMessageIn*/)
+    {
+    //Default implementation does nothing.
+    return ERtvPass;
+    }
+
+
+TRemoteTestVerdict CRemoteTestStepBase::DoEndRemoteTestStepL(const TRemoteTestParams& /*aMessageIn*/)
+    {
+    //Default implementation does nothing.
+    return ERtvPass;
+    }
+
+
+class TOverflowTruncate : public TDesOverflow
+    {
+public:
+    virtual void Overflow(TDes& /*aDes*/)
+        {
+        //Do nothing - just let it truncate.
+        }
+    };
+
+
+void CRemoteTestStepBase::Log(const TText8* aFile, TInt aLine, TInt aSeverity, TRefByValue<const TDesC> aFmt, ...)
+    {
+    if(iTestEnv)
+        {
+        TOverflowTruncate overflow;
+        VA_LIST list;
+        VA_START(list, aFmt);
+        TBuf<0x100> buf;
+        buf.AppendFormatList(aFmt, list, &overflow);
+        TPtrC8 file(aFile);
+        iTestEnv->SendLog(file, aLine, aSeverity, buf);
+        }
+    }
+
+
+void CRemoteTestStepBase::EglStartL()
+    {
+    eglInitialize(eglGetDisplay(EGL_DEFAULT_DISPLAY), NULL, NULL);
+    if (eglGetError()!=EGL_SUCCESS)
+        {
+        REMOTE_INFO_PRINTF1(_L("could not initialise egl"));
+        User::Leave(KErrGeneral);
+        }
+    }
+
+
+void CRemoteTestStepBase::EglEndL()
+    {
+    eglTerminate(eglGetDisplay(EGL_DEFAULT_DISPLAY));
+    if (eglGetError()!=EGL_SUCCESS)
+        {
+        REMOTE_INFO_PRINTF1(_L("could not terminate egl"));
+        User::Leave(KErrGeneral);
+        }
+    eglReleaseThread();
+    }
+
+
+const TEglEndpointWrap& CRemoteTestStepBase::EglEndpoint() const
+    {
+    return iEndpoint;
+    }
+
+//--------------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/src/renderstage.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,124 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+//This render stage sets up a test thread within window server that waits on
+//an asynchonous message queue for test commands that are sent from the TEF driver app.
+//All render stage calls are simply forwarded to the next stage in the chain. The
+//renderstage is a NULL renderstage.
+
+
+#include "renderstage.h"
+#include "remotetestbase.h"
+#include <e32math.h>
+
+
+CRenderStage* CRenderStage::NewL(MWsGraphicDrawerEnvironment* /*aEnv*/, MWsScreen* /*aScreen*/, MWsScreenRedraw* /*aScreenRedraw*/, CWsRenderStage* aNextStage)
+    {
+    CRenderStage* stage = new(ELeave) CRenderStage();
+    CleanupStack::PushL(stage);
+    stage->ConstructL(aNextStage);
+    CleanupStack::Pop(stage);
+    return stage;
+    }
+
+
+CRenderStage::CRenderStage()
+    {
+    }
+
+
+void CRenderStage::ConstructL(CWsRenderStage* aNextStage)
+    {
+    ENDPOINT_ASSERT_DEBUG(aNextStage, User::Invariant());
+    BaseConstructL();
+    SetNext(aNextStage);
+
+    //Stack and heap sizes.
+    static const TInt KStackSize =   0x2000;      //  8KB
+    static const TInt KHeapMinSize = 0x1000;      //  4KB
+    static const TInt KHeapMaxSize = 0x1000000;   // 16MB
+
+    //Create test environment thread.
+    TUint32 random = Math::Random();
+    TName threadName;
+    _LIT(KThreadNameFormat, "%S-%u");
+    _LIT(KEnvName, "EpTestRemoteEnv");
+    threadName.Format(KThreadNameFormat, &KEnvName, random);
+    User::LeaveIfError(iTestEnvThread.Create(threadName, TestEnvThreadEntryPoint, KStackSize, KHeapMinSize, KHeapMaxSize, this));
+    iTestEnvThread.Resume();
+    }
+
+
+CRenderStage::~CRenderStage()
+    {
+    iTestEnvThread.Kill(KErrNone);
+    }
+
+
+TAny* CRenderStage::ResolveObjectInterface(TUint aTypeId)
+    {
+    return Next()->ResolveObjectInterface(aTypeId);
+    }
+
+
+void CRenderStage::Begin(const TRegion* aRegion)
+    {
+    Next()->Begin(aRegion);
+    }
+
+
+void CRenderStage::End(TRequestStatus* aCompositorReady)
+    {
+    Next()->End(aCompositorReady);
+    }
+
+
+TInt CRenderStage::TestEnvThreadEntryPoint(TAny* /*aSelf*/)
+    {
+    RDebug::Printf("CRenderStage: Entering Test Environment Thread...");
+
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+
+    TRAPD(err,
+        //Create active scheduler.
+        CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
+        CleanupStack::PushL(scheduler);
+        CActiveScheduler::Install(scheduler);
+
+        //Create a CRemoteTestEnv.
+        CRemoteTestEnv* testEnv = CRemoteTestEnv::NewL();
+        CleanupStack::PushL(testEnv);
+        testEnv->StartReceivingCmds();
+
+        //Clean up.
+        CleanupStack::PopAndDestroy(2, scheduler);
+        );
+
+    if(err != KErrNone)
+        {
+        User::Invariant();
+        }
+
+    delete cleanup;
+
+    RDebug::Printf("CRenderStage: Leaving Test Environment Thread...");
+    return KErrNone;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/src/renderstagefactory.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,80 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include "renderstagefactory.h"
+#include "renderstage.h"
+
+
+_LIT(KRenderStageName, "eglendpointremotetest");
+
+
+CRenderStageFactory* CRenderStageFactory::CreateL()
+	{
+	return new(ELeave) CRenderStageFactory;
+	}
+
+
+//aData contains data specific to the plugin that was included in wsini.ini.
+//EglEndpointTestRenderStage has no such defined data. Therefore ignore it.
+void CRenderStageFactory::ConstructL(MWsGraphicDrawerEnvironment& aEnv, const TDesC8& /*aData*/)
+	{
+	BaseConstructL(aEnv);
+	}
+
+
+CRenderStageFactory::CRenderStageFactory()
+	{
+	}
+
+
+CRenderStageFactory::~CRenderStageFactory()
+	{
+	}
+
+
+TAny* CRenderStageFactory::ResolveObjectInterface(TUint aTypeId)
+	{
+	switch (aTypeId)
+		{
+		case KMWsRenderStageFactory:
+			return static_cast<MWsRenderStageFactory*>(this);
+		default:
+			return NULL;
+		}
+	}
+
+
+//EglEndpointTestRenderStage cannot be used as the last render stage in the chain. Therefore return NULL here.
+CWsRenderStage* CRenderStageFactory::CreateFinalRenderStageL(MWsScreen* /*aScreen*/, MWsScreenRedraw* /*aScreenRedraw*/, TInt /*aScreenNumber*/)
+	{
+	return NULL;
+	}
+
+
+CWsRenderStage* CRenderStageFactory::CreateRenderStageL(MWsScreen* aScreen, MWsScreenRedraw* aScreenRedraw, CWsRenderStage* aNextStage)
+	{
+	return CRenderStage::NewL(&Env(), aScreen, aScreenRedraw, aNextStage);
+	}
+
+
+const TDesC& CRenderStageFactory::PluginName() const
+	{
+	return KRenderStageName;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/src/resolver.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,38 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include <ecom/implementationproxy.h>
+#include "renderstagefactory.h"
+
+
+LOCAL_C const TImplementationProxy KImplementationTable[] =
+	{
+	IMPLEMENTATION_PROXY_ENTRY(CRenderStageFactory::EImplUid,CRenderStageFactory::CreateL)
+	};
+
+
+//Single exported function for an ecom dll. It returns a table of implementation
+//uids along with the implementation's factory function. Each implementation in
+//the dll has an entry.
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+	{
+	aTableCount = (sizeof(KImplementationTable) / sizeof(TImplementationProxy));
+	return KImplementationTable;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,225 @@
+// Copyright (c) 2009-2010 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLTEST_ENDPOINT_ENGINE_H__
+#define __EGLTEST_ENDPOINT_ENGINE_H__
+
+#include "localtestbase.h"
+#include "remotetestbase.h"
+#include "egltest_surface.h"
+#include "egltest_endpoint_engine_types.h"
+#include "egltest_endpoint_images.h"
+
+
+#define ENGINE_ASSERT(x) DoEngineAssert(x, #x, __FILE__, __LINE__)
+
+static inline void DoEngineAssert(TInt aX, const char *aXStr, 
+        const char *aFile, TInt aLine)
+    {
+    if (!aX)
+        {
+        RDebug::Printf("ENGINE_ASSERT(%s) failed (value %d) at %s:%d\n",
+                aXStr, aX, aFile, aLine);
+        User::Panic(_L("ENGINE_ASSERT"), aLine);
+        }
+    }
+
+
+
+
+// This could be wrapped in #if/#else to allow us to generate non-unicode text content.
+#define TESTIDS(x)  _S(x)
+#define CASETITLE(x)  _S(x)
+
+
+// SurfaceType lists.
+// We use macros so that we get an automatic comment as to what the fields are,
+// rather than just listing enums in an array.
+#define SurfaceTypes1(type1) 1, { type1 }
+#define SurfaceTypes2(type1, type2) 2, { type1, type2 }
+#define SurfaceTypes3(type1, type2, type3) 3, { type1, type2, type3 }
+#define SurfaceTypes4(type1, type2, type3, type4) 4, { type1, type2, type3, type4 }
+
+// Macro used for building a TTestCases entry.
+#define TestCase(x) { x, sizeof(x) / sizeof(x[0]) }
+
+// Forward declare this class.
+class CEgltest_Local_Engine_Exec;
+
+// The object passed back from the exec thread to the
+// controller thread.
+class TExecResult
+    {
+public:
+    TExecResult();
+
+    //Constructor for sending result info.
+    TExecResult(TVerdict aVerdict, TEngineCases aCase);
+    
+    // Constructor for sending result of buffer count paramters.
+    TExecResult(TVerdict aBufferCountVerdict, TVerdict aVerdict, TEngineCases aCase);
+    
+public:
+    //Result message.
+    TVerdict             iVerdict;
+    // Checking buffer count. 
+    TVerdict             iBufferCountVerdict;
+    // Get Surface parameter reply.
+    TSurfaceParamsRemote iSurfaceParams;
+    // To check that we are in sync - it should match the request!
+    TEngineCases         iCase;
+    };
+
+NONSHARABLE_CLASS(CEgltest_Local_Engine): public CLocalTestStepBase
+    {
+private:
+    enum TExecState
+        {
+        EExecStateNone  = 0,
+        EExecStateRemote, 
+        EExecStateLocal
+        };
+public:
+    CEgltest_Local_Engine(const TTestCases *aTestCases, TInt aNumCases);
+    virtual ~CEgltest_Local_Engine();
+    virtual TVerdict doTestStepL();
+    virtual void DoPreambleL();
+    virtual void DoPostambleL();
+    
+private:
+    void RunTestCaseL(const TTestCases &aTestCase);
+    void LogDump(const TEngineTestCase &aItem);
+    void RunOneTestCaseL(const TTestCase& aTestCase, TSurfaceType aSurfType);
+    void RunSingleCaseL(const TTestCase& aTestCase, TSurfaceType aSurfType);
+    void SendLocalTestCase(const TRemoteTestParams &aParams);
+    TVerdict RunRemoteTestCase(TInt aTestCase, const TRemoteTestParams& aMessageIn);
+    void RunLocalTestCase(const TRemoteTestParams& aMessageIn, TExecResult& aResult);
+    void RunLocalTestCase(TEngineCases aCase);
+    void DoSyncToLocal();
+    void GetLocalResult(TExecResult& aResult, TEngineCases aCase);
+    void DoMonitorThreadEntry();
+    void ForwardPanic(RThread& aThread, RThread& aOtherThread, TRequestStatus &aStatus);
+    static TInt MonitorThreadEntry(TAny *aParam);
+    
+protected:
+    const TTestCases*                  iTestCases;
+    const TInt                         iNumCases;
+    RThread                            iExecThread;
+    RThread                            iMonitorThread;
+    RThread                            iControllerThread;  // Controller thread
+    RMsgQueue<TExecResult>             iExecResultOutQueue;
+    RMsgQueue<TRemoteTestParamsPacket> iExecParamsInQueue;
+    TExecState                         iExecState;
+    };
+
+
+struct TRemoteTestArgs
+    {
+    EGLDisplay     iDisplay;
+    EGLEndpointNOK iEndpoint;
+    EGLImageKHR    iImage;
+    };
+
+// Base class that allows "script" style exectution of testcases.
+NONSHARABLE_CLASS(CEgltest_Remote_Engine): public CRemoteTestStepBase
+    {
+public:
+    CEgltest_Remote_Engine();
+    virtual ~CEgltest_Remote_Engine();
+    virtual TRemoteTestVerdict DoStartRemoteTestStepL(const TRemoteTestParams& aParams);
+    virtual TRemoteTestVerdict DoEndRemoteTestStepL(const TRemoteTestParams& aParams);
+    virtual TRemoteTestVerdict DoRunRemoteTestCaseL(TInt aTestCase, const TRemoteTestParams& aParams);
+private:
+    void LogDump(const TEngineTestCase& aCase);
+    EGLDisplay GetDisplay(TInt aFlags);
+    EGLEndpointNOK GetEndpoint(TInt aIndex, TInt aFlags);
+    EGLImageKHR GetImage(TInt aIndex, TInt aFlags);
+    EGLenum GetEndpointType(TInt aFlags);
+    EGLenum GetSourceType(TInt aFlags);
+    const TSurfaceId GetSurfaceId(TInt aFlags, const TSurfaceId& aSurfaceId);
+    void CheckReturn(TInt aRetval, const TEngineTestCase& aStreamItem, TInt aFailValue,
+                      const TText* aFailSymbol, const TText* aFunction);
+    void RunCaseL(TInt aTestCase, const TRemoteTestParams &aParams, const TRemoteTestArgs& aArgs);
+    void CreateEndpointCaseL(const TRemoteTestParams& aParams, const TRemoteTestArgs& aArgs);
+    void ReleaseImageCaseL(const TRemoteTestParams& aParams, const TRemoteTestArgs& aArgs);
+    void ActivateVgContextL();
+    void RequestNotificationL(const TRemoteTestParams& aParams, const TRemoteTestArgs& aArgs);
+    void GetEndpointDirtyAreaL(const TRemoteTestParams& aParams, const TRemoteTestArgs& aArgs);
+    void DoCheckRectsL(EGLint *aActualRects, EGLint aRectCount, EGLint aMaxRects,
+                       TInt aRectsIndex, const TRect aSurfacRect);
+private:
+    EGLEndpointNOK iEndpoints[KMaxEndpoints];
+    EGLImageKHR iEglImage[KMaxEndpoints];
+    CTestVgEglImage* iVgImage[KMaxEndpoints];
+    TRequestStatus iRequestStatus[KMaxEndpoints];
+    TRemoteTestVerdict iTestVerdict;
+    TBool iLogging;
+    CEglWindowSurface *iSurface;
+    };
+
+
+#define CASE(x)   case x: caseName=_S(#x); break
+
+static inline const TText* EngineCaseName(TEngineCases aCase)
+    {
+    const TText* caseName = _S("Unknown Engine Case");
+    switch (aCase)
+        {
+	  CASE(ECreateEndpointCase);
+	  CASE(EBeginStreamingCase);
+	  CASE(EAcquireImageCase);
+	  CASE(EReleaseImageCase);
+	  CASE(EEndStreamingCase);
+	  CASE(EContentUpdateCase);
+	  CASE(EDestroyEndpointCase);
+	  CASE(EInitializeCase);
+	  CASE(ETerminateCase);
+	  CASE(EGetAttribCase);
+	  CASE(ESetAttribCase);
+	  CASE(ECreateSurfaceCase);
+	  CASE(EDrawContentCase);
+	  CASE(ECompareImageCase);
+	  CASE(EWaitForCase);
+	  CASE(ENotifyWhenCase);
+	  CASE(ETestVgImageValidCase);
+	  CASE(EDestroyVgImageCase);
+	  CASE(EDestroyEglImageCase);
+	  CASE(ETimeStampCase);
+	  CASE(ERequestNotificationCase);
+	  CASE(EWaitForNotificationCase);
+	  CASE(ECancelNotificationCase);
+	  CASE(EBreakPointCase);
+	  CASE(ELogEnableCase);
+	  CASE(EIllegalCase);
+	  CASE(EPanicCase);
+	  CASE(EGetEndpointDirtyAreaCase);
+	  CASE(ESyncLocalCase);
+	  CASE(EGetSurfaceParamsCase);
+	  CASE(EFinishedCase);
+	  CASE(ECreateVgImageCase);
+        }
+    return caseName;
+    }
+
+#undef CASE
+
+#endif // __EGLTEST_ENDPOINT_ENGINE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine_execthread.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,67 @@
+// Copyright (c) 2010 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:
+//
+
+#ifndef __EGLTEST_ENDPOINT_ENGINE_EXECTHREAD_H__
+#define __EGLTEST_ENDPOINT_ENGINE_EXECTHREAD_H__
+
+#include <e32base.h>
+#include <e32msgqueue.h>
+#include "egltest_surface.h"
+#include "egltest_endpoint_engine.h"
+#include "egltest_endpoint_images.h"
+#include "egltest_commscommon.h"
+#include "egltest_endpoint_util.h"
+
+_LIT(KExecResultQueueName, "EGLEndpointExecTestEnvResultQueue");
+_LIT(KExecParamsQueueName, "EGLEndpointExecTestEnvParamsQueue");
+
+NONSHARABLE_CLASS(CEgltest_Local_Engine_Exec): public CBase
+    {
+public:
+    CEgltest_Local_Engine_Exec();
+    virtual ~CEgltest_Local_Engine_Exec();
+    static TInt ThreadEntry(TAny *aDummy);
+    static CEgltest_Local_Engine_Exec* NewL();
+    CTestExecuteLogger &Logger() { return iLogger; }
+    void SetTestStepResult(TVerdict aVerdict);
+    TVerdict TestStepResult(void) const;
+    void TidyUp();
+    void SetUpL();
+    
+private:
+    // This is the actual thread execution loop.
+    static void ThreadEntryL();
+    TInt ThreadLoopL();
+    void ConstructL();
+    void LogDump(const TEngineTestCase& aCase);
+    void SendResult(const TExecResult &aResult);
+    
+private:
+    RMsgQueue<TExecResult>              iResultOutQueue;
+    RMsgQueue<TRemoteTestParamsPacket>  iParamsInQueue;
+    CSurface*                           iSurfaces[KMaxEndpoints];
+    TRequestStatus                      iStatus[KMaxEndpoints];
+    TUint32                             iTimeStamp[KMaxEndpoints];
+    TInt                                iFastFreq;
+    // iLogging: Log commands as they are processed in this thread.
+    TBool                               iLogging;
+    // iLogger: Standard TEF logging object.
+    CTestExecuteLogger                  iLogger;
+    TVerdict                            iVerdict;
+    TBool                               iSurfaceTypeDisplayed;
+    EGLDisplay                          iDisplay;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine_types.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,331 @@
+// Copyright (c) 2010 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLTEST_ENDPOINT_ENGINE_TYPES_H__
+#define __EGLTEST_ENDPOINT_ENGINE_TYPES_H__
+
+#include "egltest_surface.h"
+
+
+enum TEngineCases
+    {
+    // ECreateEndpointCase
+    // iEndPointIndex is used to store the endpoint at that index.
+    ECreateEndpointCase = 0,
+
+    // EBeginStreamingCase
+    // Call EglEndpointBeginStreaming.
+    // iEndpointIndex indicates the endpoint to call BeginStreaming on.
+    EBeginStreamingCase = 1,
+
+    // EAcquireImageCase
+    // iEndpointIndex indicates the endpoint used to acquire the image.
+    // iImageIndex is ignored.
+    EAcquireImageCase = 2,
+
+    // EReleaseImageCase
+    // iEndpointIndex indicates the endpoint used to acquire the image.
+    // iImageIndex indicates the slot of the eglImage to be used.
+    EReleaseImageCase = 3,
+
+    // EEndStreamingCase
+    // Call EglEndPointEndStreaming.
+    // iEndpointIndex indicates which endpoint to use.
+    EEndStreamingCase = 4,
+
+    // EContentUpdateCase
+    // iEndpointIndex indicates which surface to use.
+    // iImageIndex index to the rectangle set to pass in as "dirty rectangles".
+    //             if index = 0, then a NULL is passed - indicating full surface 
+    //             (no other value currently supported)!
+    // iFlags: ENoWait: complete immediately, rather than wait for displayed 
+    //                  notification (only valid for non-EGL surfaces).
+    //         ENoSync: Do not wait for contentupdate to complete, instead, 
+    //                  use a short delay (300ms) to ensure the submitupdate
+    //                  has reached SUS.
+    //                  This is necessary to avoid a deadlock where the local
+    //                  side is doing EglSwapBuffer [or similar], and the 
+    //                  remote side has not yet done EglReleaseImageNOK.
+    //                  If the local side was to wait for the EglSwapBuffer 
+    //                  to complete, the EglReleaseImageNOK would not happen.
+    //                  There is no need to have ENoSync if the EglReleaseBuffer
+    //                  for that endpoint is called before the EContentUpdateCase.
+    EContentUpdateCase = 5,
+
+    // EDestroyEndpointCase
+    // iEndpointIndex indciates the endpoint to be destroyed.
+    EDestroyEndpointCase = 6,
+
+    // ETerminateCase
+    // Call eglTerminate and does various other cleanup.
+    // No egl calls except eglInitialize is expected to "work" after this point.
+    // This is also sent to the local exec thread to terminate it when test step
+    // is finished. 
+    ETerminateCase = 7,
+
+    // EInitializeCase
+    // Initialize. Call eglInitialize and other setup.
+    EInitializeCase = 8,
+
+    // EGetAttributeCase
+    // iEndpointIndex indicates the endpoint to use.
+    // iArg1 is the attribute key to request.
+    // iArg2 is the value expected.
+    EGetAttribCase = 9,
+
+    // ESetAttributeCase
+    // iEndpointIndex indicates the endpoint to use.
+    // iImageIndex is ignored.
+    // iArg1 is the attribute key to request.
+    // iArg2 is the value to set.
+    ESetAttribCase = 10,
+
+    // ECreateSurfaceCase
+    // iEndpointIndex indicates which the surface object is stored at
+    // iImageIndex indicates the surfaceParams to use.
+    ECreateSurfaceCase = 11,
+
+    // EDrawContentCase
+    // Also draws an image before swapping.
+    // iEndpointIndex indicates the surface to draw to.
+    // iImageIndex is the index of the image to be drawn.
+    EDrawContentCase = 12,
+
+    // ECompareImageCase
+    // iEndpointIndex = the index of the eglimage stored, the iImageIndex when it was acquired
+    // iImageIndex is the index of the image to compare
+    ECompareImageCase = 13,
+
+    // EBufferCountCase
+    // Query the surface to find out number of buffers, and only run the remainder
+    // of case if the number of buffers match. If test fails, log a warning that
+    // the test is not executed, then terminate the case.
+    // iEndpointIndex = number of the surface to check.
+    // iImageIndex = n/a - ignored.
+    // arg1 = Min buffer count (inclusive). 0 -> any number.
+    // arg2 = Max buffer count (inclusive). 0 -> any number
+    EBufferCountCase = 14,
+
+    // ENotifyWhenCase
+    // iEndpointIndex = surface for which the notification applies.
+    // iImageIndex = which notification (See TNotification in egltest_surface.h)
+    // iArg1 = XTimes when ENotifyWhenDispXTimes
+    ENotifyWhenCase = 15,
+
+    // EWaitForCase
+    // iExpectedError = KErrTimedOut if the notification is expected to "not be signaled", KErrNone for other cases.
+    // iEndpointIndex = surface for which to wait on notification (also used for timestamp).
+    // iImageIndex = which notification (See TNotification in egltest_surface.h)
+    // iArg1 = Timeout length in microseconds.
+    // iArg2 = expected timestamp. (NOtifywhendisplayed), relative to timestamp of ETimeStampCase.
+    EWaitForCase = 16,
+
+    // ECreateVgImageCase
+    // iEndpointIndex = the index of the eglimage to create the vgimage from.
+    // iImageIndex is the index in the vgimages array that the created vgimage will be saved to.
+    ECreateVgImageCase = 17,
+
+    // EDestroyVgImageCase
+    // iImageIndex is the index in the vgimages array that will be destroyed.
+    EDestroyVgImageCase = 18,
+
+    // EDestroyEglImageCase
+    // Note: This is not intended for normal endpoint tests - use EReleaseImageCase for that.
+    // iEndpointIndex = ignored.
+    // iImageIndex = image index to destroy.
+    EDestroyEglImageCase = 19,
+
+    // ETimeStampCase
+    // Store current User::FastCounter().
+    // iEndpointIndex = index to store timestamp at (should match the surface index).
+    ETimeStampCase = 20,
+
+    // ETestVgImageValidCase
+    // Test that the VgImage is valid and "works" by reading some of the pixels in it.
+    // No checking that the content is as expected, since where we use this
+    // is to test that the VgImage is valid after destroying the endpoint - at which point
+    // the content is undefined, but the VgImage must be usable by the effects engine code.
+    // See also ECreateVgImageCase.
+    // iEndpointIndex ignored.
+    // iImageIndex is the index of the vgimage to be drawn.
+    ETestVgImageValidCase = 21,
+
+    // ERequestNotificationCase
+    // Request a notification of update.
+    // iEndpointIndexis the index of the endpoint to use.
+    ERequestNotificationCase = 22,
+
+    // ECancelNotificationCase
+    // Cancel a notification of update.
+    // iEndpointIndexis the index of the endpoint to use.
+    ECancelNotificationCase = 23,
+
+    // EWaitForNotificationCase
+    // Wait for the notification of the
+    // iEndpointIndex is the index of the endpoint to use.
+    // iImageIndex - not used
+    // iArg1 - timeout value in microseconds.
+    EWaitForNotificationCase = 24,
+
+    // EGetEndpointDirtyAreaCase
+    // Get dirty area
+    // iEndpointIndex is the index of the endpoint to use.
+    // iImageIndex index to the rectangle set to pass in as "dirty rectangles".
+    //             if index = 0, then full surface is expected.
+    // iarg1 start_rect
+    // iArg2 max_rects
+    // iFlags - EUseNullRects - pass NULL as the rects value.
+    //          EUseCollapseArea - pass TRUE for collapse
+    EGetEndpointDirtyAreaCase = 25,
+    
+    // EGetSurfaceParamsCase
+    // Get parameters of the surface. 
+    // iEndpointIndex is the index of the surface being used.
+    // This is used for internal communication between the controller thread
+    // and the EGL execution thread, so the parameters can be passed over to
+    // the remote side. This is due to the fact that we can only use the 
+    // RWindow component that is part of an EGL surface in the thread that
+    // created the RWindow.
+    EGetSurfaceParamsCase = 26, 
+
+    ///
+    /// Debug cases
+    ///
+    // EBreakPointCase
+    // Used for debugging.
+    // iFlags = EDebugLocal, EDebugRemote - break local and/or remote side engine.
+    EBreakPointCase = 64,
+
+    // ELogEnableCase
+    // Logging enable - all items executed after this point are written out, including data parameters.
+    // iFlags = EDebugLocal, EDebugRemote - log on local/remote side.
+    ELogEnableCase = 65,
+    
+    // ESyncLocalCase
+    // Used for synchronizing the local execution thread. 
+    // Should normally not be needed for the common cases of coding, but used internally to 
+    // perform the synchronization. 
+    ESyncLocalCase = 997,
+
+    // EPanicCase
+    // Cause panic on local or remote side. Used for testing purposes only.
+    // iFlags = EDebugLocal, EDebugRemote - choose between local/remote side.
+    EPanicCase = 998,
+
+    // EIllegalCase
+    // A case that is by definition not legal/valid. There should be no case-
+    // statement for this in the engine, it should be treated as a "unknown" case,
+    // and cause any test to fail in the same way as if an unused value was put
+    // in the table. Used for testing purposes, and can also be used to make a
+    // particular test fail on purpose (e.g. due to production code bugs!)
+    // All arguments ignored.
+    EIllegalCase = 999,
+
+    // Indicate end of sequence.
+    EFinishedCase = 1000
+    };
+
+enum TEngineFlags
+    {
+    EUseBadDisplay      = 1 << 0,
+    EUseBadEndpoint     = 1 << 1,
+    EUseBadEglImage     = 1 << 2,
+    EUseBadEndpointType = 1 << 3,
+    EUseBadSourceType   = 1 << 4,
+    EExpectError        = 1 << 5,  // Used when other flags are not indicating a failure expected.
+    EUseBadSurfaceId    = 1 << 6,
+    EUseBadApi          = 1 << 7,
+    // Flag to modify EContentUpdateCase to not wait for displayed.
+    EUseBadSync         = 1 << 8,
+    EUseBadRects        = 1 << 9,
+    // Extra flags for EGetEndpointDirtyAreaCase
+    EUseNullRects       = 1 << 10,
+    EUseCollapseArea    = 1 << 11,
+    
+    // flags used by EContentUpdateCase
+    ENoWait             = 1 << 14,
+    ENoSync             = 1 << 15,
+
+    // Debug flags
+    EDebugLocal         = 1 << 16,
+    EDebugRemote        = 1 << 17,
+    EDebugController    = 1 << 18,
+    };
+
+enum TEngineFlagsMask
+    {
+    // Mask to match all "bad".
+    EExpectFailureMask  = EUseBadDisplay       |
+                          EUseBadEndpoint      |
+                          EUseBadEglImage      |
+                          EUseBadEndpointType  |
+                          EUseBadSourceType    |
+                          EExpectError         |
+                          EUseBadSurfaceId     |
+                          EUseBadApi           |
+                          EUseBadSync          |
+                          EUseBadRects         |
+                          0   // So that it's easier to merge!
+    };
+
+
+struct TEngineTestCase
+    {
+    TEngineCases iCase;
+    TInt         iFlags;            // Flags to indicate for example bad parameters (TEngineFlags).
+    TInt         iErrorExpected;    // What value is expected in eglGetError()?
+    TInt         iEndpointIndex;    // Index to the endpoint to use.
+    TInt         iImageIndex;       // Index to image to draw/compare(egltest_endpoint_images)
+    TInt         iArg1;             // E.g. GetAttrib or SetAttrib attrib.
+    TInt         iArg2;             // E.g  GetAttrib expected value or SetAttrib value to set.
+    };
+
+
+struct TTestEndpointEngine
+    {
+    TSurfaceParamsRemote iSurfaceParams;
+    TEngineTestCase      iEngineTestCase;
+    };
+
+const TInt KMaxCases    = 80;
+// Should be PLENTY of endpoints [also used for surfaces, images and other
+// objects that have roughly 1:1 mapping with endpoints.
+const TInt KMaxEndpoints = 400;
+
+// Structure for lists of cases to execute
+struct TTestCase
+    {
+    const TText*    iRelatedTestIds;
+    const TText*    iName;
+    TInt            iSurfaceTypeCount;
+    TSurfaceType    iSurfaceTypeList[ESurfTypeMaxTypes];
+    TEngineTestCase iEngineTestCase[KMaxCases];
+    };
+
+struct TTestCases
+    {
+    const TTestCase *iCase;
+    TInt             iCount;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_images.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,96 @@
+// 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#ifndef __EGLTEST_ENDPOINT_IMAGE_H__
+#define __EGLTEST_ENDPOINT_IMAGE_H__
+
+#include <e32std.h>
+#include <fbs.h>
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+#include <VG/openvg.h>
+
+// Class Hierarchy to manage a set of images, based on an index.
+
+class CTestImage: public CBase
+    {
+public:
+    virtual ~CTestImage();
+    virtual TRgb Pixel(TInt aX, TInt aY) const = 0;
+    virtual TSize Size() const = 0;
+    TBool CompareImageL(const CTestImage *aImage, TBool aExecptError) const;
+    TBool IsSolidColourL() const;
+private:
+    static TBool ComparePixel(TRgb aPixel1, TRgb aPixel2, TBool aExecptError);
+protected:
+    CTestImage();
+public:
+    static const TInt KImageCount;
+    };
+
+class CTestCFbsImage: public CTestImage
+    {
+public:
+    static CTestCFbsImage *NewL(TInt aIndex);
+    CFbsBitmap *Bitmap();
+    virtual ~CTestCFbsImage();
+    virtual TRgb Pixel(TInt aX, TInt aY) const;
+    virtual TSize Size() const;
+protected:
+    void ConstructL(TInt aIndex);
+    CTestCFbsImage();
+
+private:
+    CFbsBitmap *iBitmap;
+    RFbsSession iSession;
+    };
+
+class CTestVgImage: public CTestImage
+    {
+protected:
+    VGImage iVgImage;
+    VGImageFormat iDataFormat;
+
+public:
+    static CTestVgImage *NewL(TInt aIndex);
+    VGImage VGImage();
+    virtual ~CTestVgImage();
+    virtual TRgb Pixel(TInt aX, TInt aY) const;
+    virtual TSize Size() const;
+private:
+    void ConstructL(TInt aIndex);
+protected:
+    CTestVgImage();
+    };
+
+
+class CTestVgEglImage: public CTestVgImage
+    {
+public:
+    static CTestVgEglImage *NewL(EGLImageKHR aEglImage);
+private:
+    void ConstructL(EGLImageKHR aEglImage);
+
+    CTestVgEglImage();
+    };
+
+
+#endif // __EGLTEST_ENDPOINT_IMAGE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_util.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,33 @@
+// Copyright (c) 2010 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:
+//
+
+// A "utility class" that contains a number of static functions that don't 
+// have anywhere else obvious to live.
+
+#ifndef __EGLTEST_ENDPOINT_UTIL_H__
+#define __EGLTEST_ENDPOINT_UTIL_H__
+
+#include <e32base.h>
+
+// Forward declare 
+class CTestExecuteLogger;
+
+NONSHARABLE_CLASS(TEndpointUtil)
+    {
+public:
+    static void SetLoggerForProcessWrapperL(CTestExecuteLogger& aLogger);
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointacquire.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,34 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#ifndef __EGLTEST_ENDPOINTACQUIRE_H__
+#define __EGLTEST_ENDPOINTACQUIRE_H__
+
+#include "egltest_endpoint_engine.h"
+
+_LIT(KEGL_EndpointAcquire, "EGL_EndpointAcquire");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointAcquire) : public CEgltest_Local_Engine
+    {
+public:
+    CEglTest_LocalTestStep_EndpointAcquire();
+    };
+
+#endif  // __EGLTEST_ENDPOINTACQUIRE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointapiexposure.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,62 @@
+// 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLTEST_ENDPOINTAPIEXPOSURE_H__
+#define __EGLTEST_ENDPOINTAPIEXPOSURE_H__
+
+
+#include "localtestbase.h"
+#include "remotetestbase.h"
+
+
+_LIT(KEGL_EndpointApiExposure, "EGL_EndpointApiExposure");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointApiExposure) : public CLocalTestStepBase
+    {
+public:
+    CEglTest_LocalTestStep_EndpointApiExposure();
+    ~CEglTest_LocalTestStep_EndpointApiExposure();
+    TVerdict doTestStepL();
+    void DoPreambleL();
+private:
+    void AttemptToGetProcAddressForAllEndpointFunctionsL();
+    void ProcAddressL(const char *aProcName);
+    };
+
+
+NONSHARABLE_CLASS(CEglTest_RemoteTestStep_EndpointApiExposure) : public CRemoteTestStepBase
+    {
+public:
+    CEglTest_RemoteTestStep_EndpointApiExposure();
+    ~CEglTest_RemoteTestStep_EndpointApiExposure();
+    TRemoteTestVerdict DoRunRemoteTestCaseL(TInt aTestCase, const TRemoteTestParams& aParams);
+
+    //Test Cases:
+    TRemoteTestVerdict RemoteApiExposureTestCase(const TRemoteTestParams& aParams);
+
+private:
+    void AttemptToGetProcAddressForAllEndpointFunctionsL();
+    void ProcAddressL(const char *aProcName);
+    };
+
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointattrib.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,37 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLTEST_ENDPOINTATTRIB_H__
+#define __EGLTEST_ENDPOINTATTRIB_H__
+
+#include "egltest_endpoint_engine.h"
+
+_LIT(KEGL_EndpointAttrib, "EGL_EndpointAttrib");
+
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointAttrib) : public CEgltest_Local_Engine
+    {
+public:
+    CEglTest_LocalTestStep_EndpointAttrib();
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointcreate.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,37 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLTEST_ENDPOINTCREATE_H__
+#define __EGLTEST_ENDPOINTCREATE_H__
+
+
+#include "egltest_endpoint_engine.h"
+
+_LIT(KEGL_EndpointCreate, "EGL_EndpointCreate");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointCreate) : public CEgltest_Local_Engine
+    {
+public:
+    CEglTest_LocalTestStep_EndpointCreate();
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointdirtyarea.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,36 @@
+// Copyright (c) 2010 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#ifndef __EGLTEST_ENDPOINTDIRTYAREA_H__
+#define __EGLTEST_ENDPOINTDIRTYAREA_H__
+
+#include "egltest_endpoint_engine.h"
+
+_LIT(KEGL_EndpointDirtyArea, "EGL_EndpointDirtyArea");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointDirtyArea) : public CEgltest_Local_Engine
+    {
+public:
+    CEglTest_LocalTestStep_EndpointDirtyArea();
+    };
+
+
+
+#endif  // __EGLTEST_ENDPOINTDIRTYAREA_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointimage.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,84 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#ifndef __EGLTEST_ENDPOINTIMAGE_H__
+#define __EGLTEST_ENDPOINTIMAGE_H__
+
+#include "egltest_endpoint_engine.h"
+
+_LIT(KResultProcessQueueName, "ProcessTestEnvResultQueue");
+_LIT(KParamsProcessQueueName, "ProcessTestEnvParamsQueue");
+
+
+enum TEndpointLifetimeExit
+    {
+    EEndpointLifetimeNormalExit,
+    EEnfpointLifetimePanicExit,
+    };
+
+_LIT(KEGL_EndpointImage, "EGL_EndpointImage");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointImage) : public CEgltest_Local_Engine
+    {
+public:
+    CEglTest_LocalTestStep_EndpointImage();
+    };
+
+_LIT(KEGL_EndpointImageLifetime, "EGL_EndpointImageLifetime");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointImageLifetime): public CLocalTestStepBase
+    {
+public:
+    CEglTest_LocalTestStep_EndpointImageLifetime();
+    ~CEglTest_LocalTestStep_EndpointImageLifetime();
+    virtual TVerdict doTestStepL();
+    virtual void DoPreambleL();
+    virtual void DoPostambleL();
+private:
+    void RunScript(const TEngineTestCase *aTestCases, TRemoteTestParams &params);
+    void EndpointLifetimeTestL(TSurfaceType aSurfaceType, TInt aExitType);
+
+private:
+    struct TProcessStatus
+        {
+        RProcess        iProcess;
+        TRequestStatus  iStatus;
+        } iProcessStatus;
+
+    RMsgQueue<TInt> iProcessResultInQueue;
+    RMsgQueue<TSurfaceId> iProcessParamsOutQueue;
+    };
+
+_LIT(KEGL_EndpointImageLifetimeProcess, "EGL_EndpointImageLifetimeProcess");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointImageLifetimeProcess): public CTestStep //CTTMSGraphicsStep
+    {
+public:
+    CEglTest_LocalTestStep_EndpointImageLifetimeProcess();
+    virtual ~CEglTest_LocalTestStep_EndpointImageLifetimeProcess();
+    virtual TVerdict doTestStepL();
+    virtual TVerdict doTestStepPreambleL();
+    virtual TVerdict doTestStepPostambleL();
+    static void MainL();
+
+private:
+    RMsgQueue<TInt> iResultOutQueue;
+    RMsgQueue<TSurfaceId> iParamsInQueue;
+    };
+
+#endif  // __EGLTEST_ENDPOINTIMAGE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointlocking.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2010 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLTEST_ENDPOINTLOCKING_H__
+#define __EGLTEST_ENDPOINTLOCKING_H__
+
+#include "egltest_endpoint_engine.h"
+
+_LIT(KEGL_EndpointLocking, "EGL_EndpointLocking");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointLocking) : public CEgltest_Local_Engine
+    {
+public:
+    CEglTest_LocalTestStep_EndpointLocking();
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointnotification.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,37 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLTEST_ENDPOINTNOTIFICATION_H__
+#define __EGLTEST_ENDPOINTNOTIFICATION_H__
+
+#include "egltest_endpoint_engine.h"
+
+_LIT(KEGL_EndpointNotification, "EGL_EndpointNotification");
+
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointNotification) : public CEgltest_Local_Engine
+    {
+public:
+    CEglTest_LocalTestStep_EndpointNotification();
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointstreaming.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,35 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLTEST_ENDPOINTSTREAMING_H__
+#define __EGLTEST_ENDPOINTSTREAMING_H__
+
+#include "egltest_endpoint_engine.h"
+
+_LIT(KEGL_EndpointStreaming, "EGL_EndpointStreaming");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointStreaming) : public CEgltest_Local_Engine
+    {
+public:
+    CEglTest_LocalTestStep_EndpointStreaming();
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointstreamingtests.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLTEST_ENDPOINTSTREAMINGTESTS_H__
+#define __EGLTEST_ENDPOINTSTREAMINGTESTS_H__
+
+
+#include "egltest_endpoint_engine.h"
+
+_LIT(KEGL_EndpointStreamingTests, "EGL_EndpointStreamingTests");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointStreamingTests) : public CEgltest_Local_Engine
+    {
+public:
+    CEglTest_LocalTestStep_EndpointStreamingTests();
+    };
+
+
+_LIT(KEGL_EndpointStreamingDispXTimesInStream, "EGL_EndpointStreamingDispXTimesInStream");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream): public CLocalTestStepBase
+    {
+public:
+    CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream();
+    ~CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream();
+    virtual TVerdict doTestStepL();
+    virtual void DoPreambleL();
+    virtual void DoPostambleL();
+private:
+    void RunScript(const TEngineTestCase *aTestCases, TRemoteTestParams &params);
+    void DispXTimesInStreamTestL(TSurfaceType aSurfaceType);
+    TUint TicksForDisplayXTimesL(CSurface* aSurface, TInt aNumTimes);
+    static void CleanupRemoteTestStep(TAny* aStreamingDispXTimesInStream);
+private:
+    TRemoteTestParams iParams;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointtearing.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLTEST_ENDPOINTTEARING_H__
+#define __EGLTEST_ENDPOINTTEARING_H__
+
+
+#include "localtestbase.h"
+#include "remotetestbase.h"
+
+
+_LIT(KEGL_EndpointTearing, "EGL_EndpointTearing");
+NONSHARABLE_CLASS(CEglTest_LocalTestStep_EndpointTearing) : public CLocalTestStepBase
+    {
+public:
+    CEglTest_LocalTestStep_EndpointTearing();
+    ~CEglTest_LocalTestStep_EndpointTearing();
+    void DoPreambleL();
+    void DoPostambleL();
+    TVerdict doTestStepL();
+    
+private:
+    void StartDrawThreadL();
+    void StopDrawThread();
+    static TInt DrawThreadEntryPoint(TAny* aSelf);
+    void EnterDrawLoopL();
+    
+private:
+    RThread iDrawThread;
+    TSurfaceId iSurfaceId;
+    volatile TBool iStopDrawing;
+    RFastLock iStartDraw;
+    RFastLock iFirstDrawDone;
+    };
+
+
+NONSHARABLE_CLASS(CEglTest_RemoteTestStep_EndpointTearing) : public CRemoteTestStepBase
+    {
+public:
+    CEglTest_RemoteTestStep_EndpointTearing();
+    ~CEglTest_RemoteTestStep_EndpointTearing();
+    
+    virtual TRemoteTestVerdict DoRunRemoteTestCaseL(TInt aTestCase, const TRemoteTestParams& aParams);
+    virtual TRemoteTestVerdict DoStartRemoteTestStepL(const TRemoteTestParams& aMessageIn);
+    virtual TRemoteTestVerdict DoEndRemoteTestStepL(const TRemoteTestParams& aMessageIn);
+    
+private:
+    TRemoteTestVerdict TearingTestCaseL(const TRemoteTestParams& aParams);
+    TRemoteTestVerdict AcquireAndCheckImageL();
+    TRemoteTestVerdict CheckImageL(EGLImageKHR aEglImage);
+    
+private:
+    EGLDisplay iDisplay;
+    EGLEndpointNOK iEndpoint;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_parameters.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,320 @@
+// 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#ifndef __EGLTEST_PARAMETERS_H__
+#define __EGLTEST_PARAMETERS_H__
+
+
+#include <e32base.h>
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+
+
+//This table defines the candidate constants that could be used as bad
+//parameters. They are candidate becuase they will be evaluated at runtime and
+//if any conflict with known good params, they will be excluded. When creating
+//the dynamic list, non static params are added such as [validParam] + 1.
+const TInt KCandidateBadParams[] =
+    {
+    0,
+    4,
+    5,
+    0xBADFEE0,
+    0xBADFEED
+    };
+const TInt KNumCandidateBadParams = sizeof(KCandidateBadParams)/sizeof(KCandidateBadParams[0]);
+
+
+template <typename T>
+class CParameters : public CBase
+    {
+public:
+    static CParameters* NewLC(TBool aCreateBadParams, const RArray<T>& aValidParamsArray, TInt aIndex);
+    static CParameters* NewLC(TBool aCreateBadParams, const T* aValidParamsArray, TInt aCount, TInt aIndex);
+    static CParameters* NewLC(TBool aCreateBadParams, T aValidParam);
+    ~CParameters();
+    TInt Count() const;
+    T& operator[](TInt aIndex);
+    const T& operator[](TInt aIndex) const;
+
+private:
+    CParameters();
+    void ConstructL(TBool aCreateBadParams, const RArray<T>& aValidParamsArray, TInt aIndex);
+    void ConstructL(TBool aCreateBadParams, const T* aValidParamsArray, TInt aCount, TInt aIndex);
+    void ConstructL(TBool aCreateBadParams, T aValidParam);
+
+    void MakeBadParamsL(const RArray<T>& aValidParamsArray);
+    void MakeGoodParamsL(const RArray<T>& aValidParamsArray, TInt aIndex);
+
+    TBool IsErrorValue(const T aValue) const;
+private:
+    RArray<T> iParams;
+    };
+
+
+typedef CParameters<EGLDisplay> CDisplayParams;
+typedef CParameters<EGLEndpointNOK> CEndpointParams;
+typedef CParameters<EGLImageKHR> CImageParams;
+typedef CParameters<EGLenum> CEnumParams;
+typedef CParameters<EGLint> CIntParams;
+typedef CParameters<TSurfaceId> CSurfaceIdParams;
+typedef CParameters<TRequestStatus *> CSyncParams;
+
+template <typename T>
+CParameters<T>* CParameters<T>::NewLC(TBool aCreateBadParams, const RArray<T>& aValidParamsArray, TInt aIndex)
+    {
+    CParameters<T>* obj = new (ELeave) CParameters();
+    CleanupStack::PushL(obj);
+    obj->ConstructL(aCreateBadParams, aValidParamsArray);
+    return obj;
+    }
+
+
+template <typename T>
+CParameters<T>* CParameters<T>::NewLC(TBool aCreateBadParams, const T* aValidParamsArray, TInt aCount, TInt aIndex)
+    {
+    CParameters<T>* obj = new (ELeave) CParameters();
+    CleanupStack::PushL(obj);
+    obj->ConstructL(aCreateBadParams, aValidParamsArray, aCount, aIndex);
+    return obj;
+    }
+
+
+template <typename T>
+CParameters<T>* CParameters<T>::NewLC(TBool aCreateBadParams, T aValidParam)
+    {
+    CParameters<T>* obj = new (ELeave) CParameters();
+    CleanupStack::PushL(obj);
+    obj->ConstructL(aCreateBadParams, aValidParam);
+    return obj;
+    }
+
+template <typename T>
+CParameters<T>::CParameters()
+    {
+    }
+
+
+template <typename T>
+void CParameters<T>::ConstructL(TBool aCreateBadParams, const RArray<T>& aValidParamsArray, TInt aIndex)
+    {
+    if(aCreateBadParams)
+        {
+        MakeBadParamsL(aValidParamsArray);
+        }
+    else
+        {
+        MakeGoodParamsL(aValidParamsArray, aIndex);
+        }
+    }
+
+
+template <typename T>
+void CParameters<T>::ConstructL(TBool aCreateBadParams, const T* aValidParamsArray, TInt aCount, TInt aIndex)
+    {
+    RArray<T> validParamsArray;
+    CleanupClosePushL(validParamsArray);
+    for(TInt i=0; i < aCount; i++)
+        {
+        validParamsArray.AppendL(aValidParamsArray[i]);
+        }
+    ConstructL(aCreateBadParams, validParamsArray, aIndex);
+    CleanupStack::PopAndDestroy(1);
+    }
+
+
+template <typename T>
+void CParameters<T>::ConstructL(TBool aCreateBadParams, T aValidParam)
+    {
+    ConstructL(aCreateBadParams, &aValidParam, 1, 0);
+    }
+
+
+template <typename T>
+void CParameters<T>::MakeGoodParamsL(const RArray<T>& aValidParamsArray, TInt aIndex)
+    {
+    ASSERT(iParams.Count() == 0);
+    iParams.AppendL(aValidParamsArray[aIndex]);
+    }
+
+
+template <typename T>
+void CParameters<T>::MakeBadParamsL(const RArray<T>& aValidParamsArray)
+    {
+    RArray<T> candidateParams;
+    CleanupClosePushL(candidateParams);
+
+    //Pack the static bad params into an candidateParams.
+    for(TInt i=0; i < KNumCandidateBadParams; i++)
+        {
+        candidateParams.AppendL((T)KCandidateBadParams[i]);
+        }
+
+    //Pack the dynamic bad params (ie validParam+1 for each valid param).
+    for(TInt i=0; i < aValidParamsArray.Count(); i++)
+        {
+        candidateParams.AppendL((T)((TInt)aValidParamsArray[i] + 1));
+        }
+
+    //Iterate over candidateParams and add them to the final
+    //bad params array if they don't clash with any valid params.
+    for(TInt i=0; i < candidateParams.Count(); i++)
+        {
+        TBool useCurParam = ETrue;
+        for(TInt n=0; n < aValidParamsArray.Count(); n++)
+            {
+            if(!IsErrorValue(aValidParamsArray[n]) && candidateParams[i] == aValidParamsArray[n])
+                {
+                useCurParam = EFalse;
+                break;
+                }
+            }
+        // Can/should we use "search" here?
+        // Check if it's already in the list - no point in testing the same value more than once.
+        for(TInt j = 0; useCurParam && j < iParams.Count(); j++)
+            {
+            if (candidateParams[i] == iParams[j])
+                {
+                useCurParam = EFalse;
+                }
+            }
+
+        if(useCurParam)
+            {
+            iParams.AppendL(candidateParams[i]);
+            }
+        }
+
+    //Final bad params are in iParams. Delete candidateParams.
+    CleanupStack::PopAndDestroy(1);
+    }
+
+template <typename T>
+TBool CParameters<T>::IsErrorValue(const T aValue) const
+    {
+    return aValue == 0;   // Default value, eg. EGL_NO_DISPLAY
+    }
+
+template <>
+TBool CParameters<TSurfaceId>::IsErrorValue(const TSurfaceId aValue) const
+    {
+    return aValue.IsNull();
+    }
+
+template <typename T>
+CParameters<T>::~CParameters()
+    {
+    iParams.Close();
+    }
+
+
+template <typename T>
+TInt CParameters<T>::Count() const
+    {
+    return iParams.Count();
+    }
+
+
+template <typename T>
+T& CParameters<T>::operator[](TInt aIndex)
+    {
+    return iParams[aIndex];
+    }
+
+
+template <typename T>
+const T& CParameters<T>::operator[](TInt aIndex) const
+    {
+    return iParams[aIndex];
+    }
+
+template<>
+void CParameters<TSurfaceId>::MakeBadParamsL(const RArray<TSurfaceId>& aValidParamsArray)
+    {
+    RArray<TSurfaceId> candidateParams;
+    CleanupClosePushL(candidateParams);
+
+    static const TSurfaceId KCandidateSurfaceBadParams[]=
+    {
+            { 0 },
+            { 12346, 18129, 192121, 98198 },
+            { 11111, 22222, 222222, 33333 },
+            { -1, -1, -1, -1 },
+            { 0x80000000, 0x80000000, 0x80000000, 0x80000000 },
+            { 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF },
+    };
+    //Pack the static bad params into an candidateParams.
+    for(TInt i=0; i < KNumCandidateBadParams; i++)
+        {
+        candidateParams.AppendL(KCandidateSurfaceBadParams[i]);
+        }
+
+    //Pack the dynamic bad params (ie validParam+1 for each valid param).
+    for(TInt i=0; i < aValidParamsArray.Count(); i++)
+        {
+        TSurfaceId id = aValidParamsArray[i];
+        id.iInternal[3]++;
+        candidateParams.AppendL(id);
+        }
+
+    RSurfaceManager surfManager;
+    User::LeaveIfError(surfManager.Open());
+    CleanupClosePushL(surfManager);
+    //Iterate over candidateParams and add them to the final
+    //bad params array if they don't clash with any valid params.
+    for(TInt i=0; i < candidateParams.Count(); i++)
+        {
+        TBool useCurParam = ETrue;
+        for(TInt n=0; n < aValidParamsArray.Count(); n++)
+            {
+            TInt err = surfManager.OpenSurface(candidateParams[i]);
+            if(err == KErrNone && !IsErrorValue(aValidParamsArray[n]) && candidateParams[i] == aValidParamsArray[n])
+                {
+                // It is unlikely we get here for ANY reason, but we always close the surface -
+                // it may not have successfully opened, but it's fine to do even if we didn't successfully open
+                // the surface. Just ignore any error.
+                surfManager.CloseSurface(candidateParams[i]);
+                useCurParam = EFalse;
+                break;
+                }
+            }
+        if(useCurParam)
+            {
+            iParams.AppendL(candidateParams[i]);
+            }
+        }
+    //Final bad params are in iParams. Delete candidateParams, and close surfManager.
+    CleanupStack::PopAndDestroy(2);
+    }
+
+template<>
+void CParameters<TRequestStatus *>::MakeBadParamsL(const RArray<TRequestStatus *>& /* aValidParamsArray */)
+    {
+    // Currently, the only TRequestStatus that we can test for is NULL.
+    // Since TRequestStatus can be any valid memory, it is impossible to
+    // test for "bad" values by any simple measure - the app will panic
+    // if random address is passed along, but there is no easy way to determine
+    // if it's a valid or invalid address.
+    iParams.AppendL(0);
+    }
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_surface.h	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,203 @@
+// 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#ifndef __EGLTEST_SURFACE_H__
+#define __EGLTEST_SURFACE_H__
+
+
+#include <e32base.h>
+#include <w32std.h>
+#include <graphics/surface.h>
+#include <graphics/surfacemanager.h>
+#include <graphics/surfaceupdateclient.h>
+#include <graphics/suerror.h>
+#include <EGL/egl.h>
+
+enum TSurfaceType
+    {
+    ESurfTypeRaw,
+    ESurfTypeEglWindow,
+    ESurfTypeRawSingleBuffered,
+    ESurfTypeMaxTypes  // Should be the last enum.
+    };
+
+// Index to Surface Parameters.
+enum TSurfaceIndex
+    {
+    EStandardSurface,
+    EBadAttribSurface,
+    EEmptyAttribSurface,
+    EStandard128sqSurface,
+    EUnusualStrideSurface,
+    EUnalignedPixelSizeSurface,
+    ELargeSurface,
+    };
+
+// Notification enums - allows us to use one function to request several notifications.
+enum TNotification
+    {
+    ENotifyWhenAvailable,
+    ENotifyWhenDisplayed,
+    ENotifyWhenDispXTimes,
+    };
+
+const TInt KNumAttribs = 3;
+
+// Common between local and remote
+struct TSurfaceParamsCommon
+    {
+    TSurfaceIndex iIndex;   // Check that it matches - or we've got the table wrong.
+    TInt iXSize, iYSize;
+    TInt iBuffers;
+    TInt iAlignment;
+    TInt iStrideInBytes;
+    TInt iOffsetToFirstBuffer;
+    TUidPixelFormat iPixelFormat;
+    TBool iUseAttribList; //when false use NULL in at attribute parameter
+    EGLint iAttribs[KNumAttribs];
+    // Window info.
+    TInt iXPos, iYPos;
+    TDisplayMode iDisplayMode;
+    };
+
+struct TSurfaceParamsRemote
+    {
+    TSurfaceId           iSurfaceId;
+    TSurfaceParamsCommon iCommonParams;
+    TSurfaceType         iSurfaceType;
+    };
+
+
+//Interface for creating, drawing to and submitting content for a surface
+//Derived classes can implement different types of surface, that can be
+//used in the same test code. Ie surface manager surface (raw), egl window
+//surface, video surface, viewfinder surface.
+class CSurface: public CBase
+    {
+public:
+    virtual void CreateL(TInt aIndex) = 0;
+    virtual void DrawContentL(TInt aImageIndex) = 0;
+    virtual void DrawContentL(const TRgb& aColour) = 0;
+    virtual void SubmitContentL(TBool aShouldWaitForDisplay, TInt aRectIndex = 0) = 0;
+    virtual TSurfaceId SurfaceId() const = 0;
+    virtual void GetSurfaceParamsL(TSurfaceParamsRemote &aParams) = 0;
+    virtual const TText *GetSurfaceTypeStr() const = 0;
+    virtual TInt Notify(TNotification aWhen, TRequestStatus &aStatus, TUint32 aXTimes) = 0;
+    virtual TInt WaitFor(TNotification aWhen, TRequestStatus &aStatus, TInt aTimeoutInMicroseconds, TUint32& aTimeStamp) = 0;
+
+public:
+    // Factory function to create a surface of aSurfType.
+    static CSurface *SurfaceFactoryL(TSurfaceType aSurfType);
+protected:
+    TInt iParamIndex;
+    };
+
+
+//Raw surface implements CSurface for basic surface manager surface.
+class CRawSurface : public CSurface
+    {
+public:
+    static CRawSurface* NewL();
+    ~CRawSurface();
+
+    //From CSurface.
+    void CreateL(TInt aIndex);
+    void GetSurfAttribs(RSurfaceManager::TSurfaceCreationAttributesBuf &aSurfaceAttribs, TInt aIndex);
+    void DrawContentL(TInt aIndex);
+    void DrawContentL(const TRgb& aColour);
+    void SubmitContentL(TBool aShouldWaitForDisplay, TInt aRectIndex = 0);
+    TSurfaceId SurfaceId() const;
+    void GetSurfaceParamsL(TSurfaceParamsRemote &aParams);
+    virtual const TText *GetSurfaceTypeStr() const;
+    virtual TInt Notify(TNotification aWhen, TRequestStatus &aStatus, TUint32 aXTimes);
+    virtual TInt WaitFor(TNotification aWhen, TRequestStatus &aStatus, TInt aTimeoutInMicroseconds, TUint32& aTimeStamp);
+
+protected:
+    CRawSurface();
+    void ConstructL();
+    TUint8* MapSurfaceAndGetInfoLC(RSurfaceManager::TSurfaceInfoV01& aInfo);
+
+private:
+    static TInt PixelSize(TUidPixelFormat aPixelFormat);
+    static TRequestStatus *GetRequestPtr(TNotification aWhen);
+
+private:
+    RSurfaceUpdateSession iSurfaceUpdate;
+    TRequestStatus        iAvailable;
+    TRequestStatus        iDisplayed;
+    TRequestStatus        iDisplayedXTimes;
+    TTimeStamp            iTimeStamp;
+    TInt                  iDrawBuffer;
+    RChunk                iSurfaceChunk;
+
+protected:
+    TInt                  iBuffers;
+    RSurfaceManager       iSurfaceManager;
+    TSurfaceId            iSurfaceId;
+    };
+
+// Simple wrapper to enable a list of "singlebuffer" in the list of buffer types.
+class CRawSingleBufferSurface : public CRawSurface
+    {
+public:
+    static CRawSingleBufferSurface* NewL();
+    ~CRawSingleBufferSurface();
+
+    //From CSurface.
+    void CreateL(TInt aIndex);
+    virtual const TText *GetSurfaceTypeStr() const;
+    };
+
+// Forward declare classes that we do not need to know the content of.
+class CWindow;
+class CTestVgImage;
+
+class CEglWindowSurface : public CSurface
+    {
+public:
+    static CEglWindowSurface* NewL();
+    ~CEglWindowSurface();
+
+    void CreateL(TInt aIndex);
+    void DrawContentL(TInt aImageIndex);
+    void DrawContentL(const TRgb& aColour);
+    void SubmitContentL(TBool aShouldWaitForDisplay, TInt aRectIndex = 0);
+    void ActivateL();
+    TSurfaceId SurfaceId() const;
+    void GetSurfaceParamsL(TSurfaceParamsRemote &aParams);
+    virtual const TText *GetSurfaceTypeStr() const;
+    virtual TInt Notify(TNotification aWhen, TRequestStatus &aStatus, TUint32 aXTimes);
+    virtual TInt WaitFor(TNotification aWhen, TRequestStatus &aStatus, TInt aTimeoutInMicroseconds, TUint32& aTimeStamp);
+
+private:
+    CEglWindowSurface();
+    void ConstructL();
+
+private:
+    EGLContext iContext;
+    EGLSurface iSurface;
+    EGLDisplay iDisplay;
+    CWindow*   iWindow;
+    };
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_execthread.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,403 @@
+// Copyright (c) 2010 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:
+//
+
+#include "egltest_endpoint_engine_execthread.h"
+#include <hal.h>
+
+/* 
+ * This class forms the execution thread for running EGL commands. 
+ * This is primarily so that we can perform EglSwapBuffer (EContentUdpateCase)
+ * BEFORE calling EglReleaseImageNOK on the remote end. Since EglSwapBuffer
+ * does not complete until the EglReleaseImageNOK is called, we must have a
+ * separate thread from the thread performing the table reading/controlling.
+ * 
+ * Here's a summary of the classes/threads, and what role they play:
+ * class CEgltest_Local_Engine
+ *    Controller for the execution of "engine" tables. 
+ *    
+ *    This runs in the thread created by the TestExecute Framework itself
+ *     
+ *    It coordinates the Local and Remote execution of commands from
+ *    the table. 
+ *    
+ *    When the command sequence switches from local to remote a "command" of 
+ *    ESyncLocalCase is automatically inserted into the local command stream,
+ *    and the controller waits for the reply from this Sync before continuing
+ *    with the remote command. There is one exception: when the 
+ *    EContentUpdateCase command is issued with ENoSync flag set, a sync is 
+ *    sent BEFORE the EContentUpdateCase, but no further Sync is performed
+ *    until the remote thread is complete.
+ *    
+ *    The controller also creates a thread to monitor the controller itself
+ *    and the CEgltest_Local_Engine_Exec thread. See further comemnts in the
+ *    source of that class.
+ *    
+ * class CEgltest_Local_Engine_Exec
+ *    Runs in a thread created by the CEgltest_Local_Engine thread.
+ *    
+ *    Performs the Actual "client" commands for the test-sequence. The reason
+ *    for a separate execution thread is outlined above. The reason ALL commands
+ *    must be executed in this thread is that certain EGL commands (e.g. 
+ *    SwapBuffer) must be executed by a single thread.
+ *     
+ * class CEgltest_Remote_Engine
+ *    Runs in a thread created by the Test Renderstage code. 
+ *    
+ *    This thread performs the EglEndpointNOK specific calls. It also does 
+ *    various image comparisons. All commands sent to this thread will be 
+ *    synchronous with the controller execution - meaning that a remote 
+ *    command will be finished by the time the next command in the controller
+ *    is issued.
+ */
+
+const TInt KTerminated = 0xAABBCCDD;
+
+CEgltest_Local_Engine_Exec::CEgltest_Local_Engine_Exec() 
+    : iLogging(EFalse), iVerdict(EPass), iSurfaceTypeDisplayed(EFalse)
+    {
+    HAL::Get(HALData::EFastCounterFrequency, iFastFreq);
+    }
+
+
+CEgltest_Local_Engine_Exec::~CEgltest_Local_Engine_Exec()
+    {
+    iParamsInQueue.Close();
+    iResultOutQueue.Close();
+    }
+
+
+CEgltest_Local_Engine_Exec* CEgltest_Local_Engine_Exec::NewL()
+    {
+    CEgltest_Local_Engine_Exec *self = new (ELeave) CEgltest_Local_Engine_Exec();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+void CEgltest_Local_Engine_Exec::ConstructL()
+    {
+    TInt err = iResultOutQueue.OpenGlobal(KExecResultQueueName, EOwnerThread);
+    ENGINE_ASSERT(err == KErrNone);
+    User::LeaveIfError(err);
+    err = iParamsInQueue.OpenGlobal(KExecParamsQueueName, EOwnerThread);
+    ENGINE_ASSERT(err == KErrNone);
+    User::LeaveIfError(err);
+    }
+
+TInt CEgltest_Local_Engine_Exec::ThreadEntry(TAny */* aDummy */)
+    {
+    CTrapCleanup *cleanUpStack = CTrapCleanup::New();
+    if (!cleanUpStack)
+       {
+       // Can't use INFO_PRINTF here, as we have not yet
+       // created the logger object - nor can we until we have
+       // a working cleanupstack, so we just do our best at a 
+       // reason able error message.
+       RDebug::Printf("Could not allocate memory for cleanupStack!");
+       User::Panic(_L("ExecThread"), __LINE__);
+       return KErrNoMemory;
+       }
+
+    TRAPD(err, ThreadEntryL());
+    delete cleanUpStack;
+    if (err != KErrNone)
+        {
+        User::Panic(_L("ExecThread"), __LINE__);
+        }
+    return err;
+    }
+
+
+void CEgltest_Local_Engine_Exec::ThreadEntryL()
+    {
+    CEgltest_Local_Engine_Exec *self = CEgltest_Local_Engine_Exec::NewL(); 
+    CleanupStack::PushL(self);
+    TInt err = KErrNone;
+    TInt ret = 0;
+    do {
+        self->SetUpL();
+        TRAP(err, ret = self->ThreadLoopL());
+        if (err != KErrNone)
+            {
+            self->SetTestStepResult(EFail);
+            User::Leave(err);
+            }
+        self->TidyUp();
+    } while(ret != KTerminated);
+    CleanupStack::PopAndDestroy(self);
+    }
+
+
+// Initialize EGL, etc. 
+void CEgltest_Local_Engine_Exec::SetUpL()
+    {
+    iDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+    EGLint err;
+    if (iDisplay == EGL_NO_DISPLAY)
+        {
+        err = eglGetError();
+        INFO_PRINTF2(_L("EglInitialize failed: err = %x"), err);
+        User::Leave(KErrNotSupported);
+        }
+
+    if (!eglInitialize(iDisplay, NULL, NULL))
+        {
+        err = eglGetError();
+        INFO_PRINTF2(_L("EglInitialize failed: err = %x"), err);
+        User::Leave(KErrNotSupported);
+        }
+    }
+
+void CEgltest_Local_Engine_Exec::TidyUp()
+    {
+    // Clean up. 
+    Logger().Close();
+    iSurfaceTypeDisplayed = EFalse;
+    for(TInt i = 0; i < KMaxEndpoints; i++)
+        {
+        if(iSurfaces[i])
+            {
+            delete iSurfaces[i];
+            iSurfaces[i] = NULL;
+            }
+        }
+    eglTerminate(iDisplay);
+    eglReleaseThread();
+    }
+
+
+void CEgltest_Local_Engine_Exec::LogDump(const TEngineTestCase& aCase)
+    {
+    const TText *caseName = EngineCaseName(aCase.iCase);
+    Logger().LogExtra(((TText8*)__FILE__), __LINE__, ESevrInfo,
+                    _L("Performing subcase %d (%s), with flags=%d, err=%04x endpointidx=%d, image=%d, args=(%d, %d)"),
+                    aCase.iCase,
+                    caseName,
+                    aCase.iFlags,
+                    aCase.iErrorExpected,
+                    aCase.iEndpointIndex,
+                    aCase.iImageIndex,
+                    aCase.iArg1, aCase.iArg2);
+    }
+
+
+void CEgltest_Local_Engine_Exec::SetTestStepResult(TVerdict aVerdict)
+    {
+    iVerdict = aVerdict;
+    }
+
+TVerdict CEgltest_Local_Engine_Exec::TestStepResult() const
+    {
+    return iVerdict;
+    }
+    
+void CEgltest_Local_Engine_Exec::SendResult(const TExecResult &aResult)
+    {
+    iResultOutQueue.SendBlocking(aResult);
+    }
+
+TInt CEgltest_Local_Engine_Exec::ThreadLoopL()
+    {
+    TBool testFinished = EFalse;
+    TRemoteTestResult result;
+
+    TEndpointUtil::SetLoggerForProcessWrapperL(iLogger);
+    do
+        {
+        TRemoteTestParamsPacket params;
+        iParamsInQueue.ReceiveBlocking(params);
+       
+        const TEngineTestCase& ec = params.iParams.iEndpointEngine.iEngineTestCase;
+
+        TInt index = ec.iImageIndex;
+        TInt endpointIndex = ec.iEndpointIndex;
+        
+        if (iLogging)
+            {
+            LogDump(ec);
+            }
+
+        switch(ec.iCase)
+            {
+            case ECreateSurfaceCase:
+                {
+                ENGINE_ASSERT(endpointIndex < KMaxEndpoints);
+                ENGINE_ASSERT(!iSurfaces[endpointIndex]);
+                TSurfaceType surfType = params.iParams.iEndpointEngine.iSurfaceParams.iSurfaceType;
+                iSurfaces[endpointIndex] = CSurface::SurfaceFactoryL(surfType);
+                if (!iSurfaceTypeDisplayed)
+                    {
+                    INFO_PRINTF2(_L("Using surfaces of type %s"), iSurfaces[endpointIndex]->GetSurfaceTypeStr());
+                    iSurfaceTypeDisplayed = ETrue;
+                    }
+                iSurfaces[endpointIndex]->CreateL(index);
+                }
+                break;
+
+            case EContentUpdateCase:
+                iSurfaces[endpointIndex]->SubmitContentL(!(ec.iFlags & ENoWait), index);
+                break;
+
+            case EDrawContentCase:
+                iSurfaces[endpointIndex]->DrawContentL(index);
+                break;
+
+            case EBufferCountCase:
+                {
+                TSurfaceParamsRemote surfParams;
+                iSurfaces[endpointIndex]->GetSurfaceParamsL(surfParams);
+                TInt buffers = surfParams.iCommonParams.iBuffers;
+                TInt min = ec.iArg1;
+                TInt max = ec.iArg2;
+                TBool pass = ETrue;
+                if (min && buffers < min)
+                    {
+                    pass = EFalse;
+                    }
+                if (max && buffers > max)
+                    {
+                    pass = EFalse;
+                    }
+                if (!pass)
+                    {
+                    INFO_PRINTF4(_L("Surface has %d buffers, test expect [%d..%d] buffers (0 = 'any number') - Test ignored (pass)"),
+                            buffers, min, max);
+                    SendResult(TExecResult(EFail, EPass, ec.iCase));
+                    testFinished = ETrue;
+                    }
+                else
+                    {
+                    SendResult(TExecResult(EPass, EPass, ec.iCase));
+                    }
+                }
+                break;
+
+            case ENotifyWhenCase:
+                {
+                TInt err = iSurfaces[endpointIndex]->Notify((TNotification)index, iStatus[endpointIndex], ec.iArg1);
+                if (err != ec.iErrorExpected)
+                    {
+                    ERR_PRINTF4(_L("Wrong error code from 'NotifyWhen' for notifiction %d - error %d, expected %d"),
+                                index, err, ec.iErrorExpected);
+                    SetTestStepResult(EFail);
+                    }
+                }
+                break;
+
+            case EWaitForCase:
+                {
+#if defined (__WINS__)
+                const TInt KDiffAllowed = 2500000;   // Max 2500ms difference. Not realy testing anything.
+#else
+                const TInt KDiffAllowed = 25000;   // Max 25ms difference.
+#endif
+                TUint32 beginTimeStamp = iTimeStamp[endpointIndex];
+                TUint32 endTimeStamp = User::FastCounter();
+                ENGINE_ASSERT(endpointIndex < KMaxEndpoints);
+                TInt err = iSurfaces[endpointIndex]->WaitFor((TNotification)index,
+                        iStatus[endpointIndex], ec.iArg1, endTimeStamp);
+
+                //Now, figure out the delta in microseconds.
+                TUint32 deltaTime = endTimeStamp - beginTimeStamp;
+                deltaTime *= 1000;
+                deltaTime /= (iFastFreq / 1000);
+
+                if (err != ec.iErrorExpected)
+                    {
+                    ERR_PRINTF4(_L("Wrong error code from 'WaitFor' for notifiction %d - error %d, expected %d"),
+                                index, err, ec.iErrorExpected);
+                    INFO_PRINTF5(_L("Timeout: %d, beginTimeStamp = %u, endTimeStamp = %u, deltaTime = %u"),
+                                 ec.iArg1, beginTimeStamp, endTimeStamp, deltaTime);
+                    SetTestStepResult(EFail);
+                    }
+                // If iArg2 is non-zero, and we waited for "displayed" and no error, check the timestamp.
+                if (index == ENotifyWhenDisplayed && err == KErrNone && ec.iArg2)
+                    {
+                    if (Abs((TInt)deltaTime - ec.iArg2) > KDiffAllowed)
+                        {
+                        ERR_PRINTF3(_L("TimeStamp is incorrect - expected %d microseconds, got %d microseconds"),
+                                ec.iArg2, deltaTime);
+                        INFO_PRINTF4(_L("original timestamp: %u, endpoint ts=%u, iFastFreq=%u"),
+                                endTimeStamp, iTimeStamp[endpointIndex], iFastFreq);
+                        SetTestStepResult(EFail);
+                        }
+                    }
+                }
+                break;
+
+            case ETimeStampCase:
+                iTimeStamp[endpointIndex] = User::FastCounter();
+                break;
+                
+            case EFinishedCase:
+                SendResult(TExecResult(TestStepResult(), ec.iCase));
+                testFinished = ETrue;
+                break;
+                
+            case EBreakPointCase:
+                if (ec.iFlags & EDebugLocal)
+                    {
+                    __BREAKPOINT();
+                    }
+                break;
+                
+            case ELogEnableCase:
+                if (ec.iFlags & EDebugLocal)
+                    {
+                    iLogging = ETrue;
+                    }
+                break;
+                
+            case ESyncLocalCase:
+                {
+                SendResult(TExecResult(TestStepResult(), ec.iCase));
+                }
+                break;
+                
+            case EGetSurfaceParamsCase:
+                {
+                TExecResult result(TestStepResult(), ec.iCase);
+                iSurfaces[endpointIndex]->GetSurfaceParamsL(result.iSurfaceParams);
+                SendResult(result);
+                }
+                break;
+                
+            case ETerminateCase:
+                SendResult(TExecResult(TestStepResult(), ec.iCase));
+                return KTerminated;
+                
+            case EPanicCase:
+                // This part is intended to be used to test the implementation.
+                // In normal tests, this functionality should not be used.
+                // If anyone decides to use this for some purpose in normal
+                // code, then please change the above comment to reflect
+                // that it IS used, and explain why it makes sense.
+                if (ec.iFlags & EDebugLocal)
+                    {
+                    INFO_PRINTF1(_L("Performing intentional panic!"));
+                    User::Panic(_L("EPanicCase"), -1);
+                    }
+                break;
+                
+            default:
+                ERR_PRINTF2(_L("Unknown case: %d"), ec.iCase);
+                ENGINE_ASSERT(0);
+                break;
+            }
+        }
+    while(!testFinished);
+    return KErrNone;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_local.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,455 @@
+// Copyright (c) 2009-2010 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <e32std.h>
+#include <e32math.h>
+#include "egltest_endpoint_engine.h"
+#include "egltest_endpoint_engine_execthread.h"
+
+
+TExecResult::TExecResult(void)
+    {
+    iVerdict = EInconclusive;
+    Mem::FillZ(&iSurfaceParams, sizeof(iSurfaceParams));
+    }
+
+TExecResult::TExecResult(TVerdict aVerdict, TEngineCases aCase)
+    {
+    iCase = aCase;
+    iVerdict = aVerdict;
+    }
+
+TExecResult::TExecResult(TVerdict aBufferCountVerdict, TVerdict aVerdict, TEngineCases aCase)
+    {
+    iCase = aCase;
+    iBufferCountVerdict = aBufferCountVerdict;
+    iVerdict = aVerdict;
+    }
+
+CEgltest_Local_Engine::CEgltest_Local_Engine(const TTestCases *aTestCases, TInt aNumCases) :
+    CLocalTestStepBase(ETestUidEndpointEngine),
+    iTestCases(aTestCases),
+    iNumCases(aNumCases)
+    {
+    }
+
+CEgltest_Local_Engine::~CEgltest_Local_Engine()
+    {
+    }
+
+void CEgltest_Local_Engine::DoPreambleL()
+    {
+    //Register all of the test ids. Do this first so 
+    //that they get logged even if a panic occurs.
+    const TTestCases* outerCases = iTestCases;
+    TInt numOuterCases = iNumCases;
+    for(TInt curOuterCase = 0; curOuterCase < numOuterCases; curOuterCase++)
+        {
+        const TTestCase* innerCases = outerCases[curOuterCase].iCase;
+        TInt numInnerCases = outerCases[curOuterCase].iCount;
+        for(TInt curInnerCase = 0; curInnerCase < numInnerCases; curInnerCase++)
+            {
+            TPtrC testIds(innerCases[curInnerCase].iRelatedTestIds);
+            RegisterTestIdsL(testIds);
+            }
+        }
+    
+    
+    // For details about the threads, see comment in the egltest_local_engine_exec.cpp
+    
+    // Amount of stack-space we allow for the execution thread. 
+    const TInt KStackSize = 12000;
+    // Min/Max Heap Sizes
+    const TInt KHeapMinSize = 16000;
+    const TInt KHeapMaxSize = 1000000;
+    
+    // We don't need a very long queue length here. But it needs to be long enough
+    // to handle a few outstanding requests. 10 seems like a good number.
+    const TInt KMaxQueueLen = 10;
+
+    TInt err = iExecParamsInQueue.CreateGlobal(KExecParamsQueueName, KMaxQueueLen, EOwnerThread);
+    if (err != KErrNone)
+        {
+        INFO_PRINTF1(_L("Could not create message queue for Exec Thread parameters"));
+        User::Leave(err);
+        }
+    
+    err = iExecResultOutQueue.CreateGlobal(KExecResultQueueName, KMaxQueueLen, EOwnerThread);
+    if (err != KErrNone)
+        {
+        INFO_PRINTF1(_L("Could not create message queue for Exec Thread results"));
+        User::Leave(err);
+        }
+   
+    // Copy the current thread so that we can use it in another thread.
+    iControllerThread.Duplicate(RThread(), EOwnerProcess);
+    
+    //Set up for creating unique thread names.
+    TUint32 random = Math::Random();
+    TName threadName;
+    _LIT(KThreadNameFormat, "%S-%u");
+    
+    // Creater a monitor thread. The monitor thread is used to keep track
+    // of the controller (this) thread and the exec thread. If one panics
+    // the monitor thread will ensure the other thread also panics.
+    // The monitor thread shouldn't need much in the way of a heap, so
+    // use min for both the min and max size of the heap.
+    _LIT(KMonitorName, "EpTestLocalMonitor");
+    threadName.Format(KThreadNameFormat, &KMonitorName, random);
+    err = iMonitorThread.Create(threadName, CEgltest_Local_Engine::MonitorThreadEntry, 
+            KStackSize, KHeapMinSize, KHeapMinSize, this, EOwnerThread);  
+    if (err != KErrNone)
+        {
+        INFO_PRINTF1(_L("Could not create monitor thread"));
+        User::Leave(err);
+        }
+    _LIT(KExecName, "EpTestLocalExec");
+    threadName.Format(KThreadNameFormat, &KExecName, random);
+    err = iExecThread.Create(threadName, CEgltest_Local_Engine_Exec::ThreadEntry, 
+            KStackSize, KHeapMinSize, KHeapMaxSize, NULL, EOwnerThread);
+    if (err != KErrNone)
+        {
+        INFO_PRINTF1(_L("Could not create execution thread"));
+        User::Leave(err);
+        }
+    TRequestStatus rendezvous;
+    iMonitorThread.Rendezvous(rendezvous);
+    iMonitorThread.Resume();
+    // Make sure the monitor thread has logged onto the exec thread BEFORE
+    // the exec thread gets to start. Otherwise, there is a small chance
+    // the monitor thread will not have run by the time the exec (or this)
+    // thread panics.
+    User::WaitForRequest(rendezvous);
+    iControllerThread.Close();
+    iExecThread.Resume();
+    }
+
+
+TInt CEgltest_Local_Engine::MonitorThreadEntry(TAny *aParam)
+    {
+    CEgltest_Local_Engine *self = reinterpret_cast<CEgltest_Local_Engine *>(aParam);
+    self->DoMonitorThreadEntry();
+    return 0;
+    }
+
+
+// Forward a the panic from the controller to the exec thread or vice versa.
+void CEgltest_Local_Engine::DoMonitorThreadEntry()
+    {
+    //Duplicate the thread handles into this thread,
+    //and keep them locally so they can't go out of scope.
+    RThread execThread = iExecThread;
+    execThread.Duplicate(iControllerThread, EOwnerThread);
+    RThread controllerThread = iControllerThread;
+    controllerThread.Duplicate(iControllerThread, EOwnerThread);
+    
+    //Logon to the two threads.
+    TRequestStatus execStatus;
+    TRequestStatus controllerStatus;    
+    execThread.Logon(execStatus);
+    controllerThread.Logon(controllerStatus);
+    
+    //Rendevous with our parent then wait for either thread to exit.
+    RThread().Rendezvous(KErrNone);
+    User::WaitForRequest(execStatus, controllerStatus);
+    
+    //Forward the panic from the one thread to the other.
+    //If a panic did occur, terminate EGL.
+    if (execStatus != KRequestPending)
+        {
+        if(execThread.ExitType() == EExitPanic)
+            {
+            controllerThread.Panic(execThread.ExitCategory(), execThread.ExitReason());
+            eglTerminate(eglGetDisplay(EGL_DEFAULT_DISPLAY));
+            eglReleaseThread();
+            }
+        controllerThread.LogonCancel(controllerStatus);
+        User::WaitForRequest(controllerStatus);
+        }
+    else if (controllerStatus != KRequestPending)
+        {
+        if(controllerThread.ExitType() == EExitPanic)
+            {
+            execThread.Panic(controllerThread.ExitCategory(), controllerThread.ExitReason());
+            eglTerminate(eglGetDisplay(EGL_DEFAULT_DISPLAY));
+            eglReleaseThread();
+            }
+        execThread.LogonCancel(execStatus);
+        User::WaitForRequest(execStatus);
+        }
+    
+    controllerThread.Close();
+    execThread.Close();
+    }
+
+
+// Tear down threads.
+void CEgltest_Local_Engine::DoPostambleL()
+    {
+    TRequestStatus status;
+    iExecThread.Logon(status);
+    RunLocalTestCase(ETerminateCase);
+    User::WaitForRequest(status);
+    iExecThread.Close();
+    iMonitorThread.Close();
+    iControllerThread.Close();
+    iExecParamsInQueue.Close();
+    iExecResultOutQueue.Close();
+    }
+
+TVerdict CEgltest_Local_Engine::doTestStepL()
+    {
+    SetTestStepResult(EPass);
+    
+    INFO_PRINTF2(_L("Executing test with %d cases..."), iNumCases);
+    for(TInt runCase = 0; runCase < iNumCases; runCase++)
+        {
+        RunTestCaseL(iTestCases[runCase]);
+        }
+    return TestStepResult();
+    }
+
+
+
+void CEgltest_Local_Engine::RunTestCaseL(const TTestCases &aTestCases)
+    {
+    for(TInt testCase = 0; testCase < aTestCases.iCount; testCase++)
+        {
+        const TTestCase &thisCase = aTestCases.iCase[testCase];
+        
+        //Set the Ids of the test case as the current ones.
+        TPtrC testIds(thisCase.iRelatedTestIds);
+        SetCurrentTestIds(testIds);
+        
+        for(TInt surfIter= 0; surfIter < thisCase.iSurfaceTypeCount; surfIter++)
+            {
+            TSurfaceType surfType = thisCase.iSurfaceTypeList[surfIter];
+            RunOneTestCaseL(thisCase, surfType);
+            }
+        }
+    }
+
+// Wait for a reply from the local execution thread. 
+// All results have a verdict, and we check her to set it
+// if a "non-pass" result is returned.
+void CEgltest_Local_Engine::GetLocalResult(TExecResult &result, TEngineCases aCase)
+    {
+    iExecResultOutQueue.ReceiveBlocking(result);
+    // Check verdict; but only change if it's the FIRST failure.
+    if (result.iVerdict != EPass && TestStepResult() == EPass)
+        {
+        SetTestStepResult(result.iVerdict);
+        }
+    ENGINE_ASSERT(aCase == result.iCase);
+    }
+
+TVerdict CEgltest_Local_Engine::RunRemoteTestCase(TInt aTestCase, const TRemoteTestParams& aMessageIn)
+    {
+    if (iExecState != EExecStateRemote)
+        {
+        DoSyncToLocal();
+        iExecState = EExecStateRemote;
+        }
+    return CLocalTestStepBase::RunRemoteTestCase(aTestCase, aMessageIn);
+    }
+
+// Send Sync command to Local execution thread, then 
+// wait for the reply from that sync. 
+void CEgltest_Local_Engine::DoSyncToLocal()
+    {
+    RunLocalTestCase(ESyncLocalCase);
+    }
+
+
+// Send command to local exec thread.
+void CEgltest_Local_Engine::SendLocalTestCase(const TRemoteTestParams &aParams)
+    {
+    TRemoteTestParamsPacket message(iTestId, aParams.iEndpointEngine.iEngineTestCase.iCase, aParams);
+
+    iExecParamsInQueue.SendBlocking(message);
+    iExecState = EExecStateLocal;
+    }
+
+// Send command to Local execution thread, then 
+// wait for the reply from that command.  
+void CEgltest_Local_Engine::RunLocalTestCase(const TRemoteTestParams& aMessageIn, TExecResult& aResult)
+    {
+    SendLocalTestCase(aMessageIn);
+    GetLocalResult(aResult, aMessageIn.iEndpointEngine.iEngineTestCase.iCase);
+    }
+
+// Wrapper for simple cases where we just want to send 
+// the command with no arguments, and just get the
+// result for the purpose of syncing - so result
+// content is ignored.
+void CEgltest_Local_Engine::RunLocalTestCase(TEngineCases aCase)
+    {
+    TRemoteTestParams params = {};
+    TExecResult result;
+    params.iEndpointEngine.iEngineTestCase.iCase = aCase;
+    RunLocalTestCase(params, result);
+    }
+
+// This function runs one set of table entries for one surface type. 
+void CEgltest_Local_Engine::RunSingleCaseL(const TTestCase& aTestCase, TSurfaceType aSurfType)
+    {
+    const TTestCase& cs = aTestCase;
+
+    TRemoteTestParams params;
+    TExecResult result;
+
+    for(TInt j = 0; cs.iEngineTestCase[j].iCase != EFinishedCase; j++)
+        {
+        const TEngineTestCase& ec = cs.iEngineTestCase[j];
+        params.iEndpointEngine.iEngineTestCase = ec;
+        params.iEndpointEngine.iSurfaceParams.iSurfaceType = aSurfType;
+
+        switch(ec.iCase)
+            {
+            // Work done locally. 
+            case ECreateSurfaceCase:
+            case EDrawContentCase:
+            case ENotifyWhenCase:
+            case EWaitForCase:
+            case ETimeStampCase:
+                SendLocalTestCase(params);
+                break;
+                
+            // Special case: 
+            case EContentUpdateCase:
+                if (ec.iFlags & ENoSync)
+                    {
+                    // We sync here to make sure local commands sent
+                    // BEFORE the ContentUpdate have completed!
+                    DoSyncToLocal();
+                    }
+                SendLocalTestCase(params);
+                if (ec.iFlags & ENoSync)
+                    {
+                    // Delay an arbitrary amount to allow SUS
+                    // to receive the update!
+                    User::After(300 * 1000);  // 300 ms.
+                    iExecState = EExecStateRemote;
+                    }
+                break;
+                
+            case EBufferCountCase:
+                RunLocalTestCase(params, result);
+                if (result.iBufferCountVerdict == EFail)
+                    {
+                    RunRemoteTestCase(ETerminateCase, params);
+                    }
+                break;
+                
+            // These commands are all sent to the remote side.
+            // By definition, they are synchronous, as the RunRemoteTestCase
+            // waits for a reply from the remote side before returning.
+            case EAcquireImageCase:
+            case EEndStreamingCase:
+            case EReleaseImageCase:
+            case EDestroyEndpointCase:
+            case EBeginStreamingCase:
+            case EInitializeCase:
+            case ETerminateCase:
+            case EGetAttribCase:
+            case ESetAttribCase:
+            case ECompareImageCase:
+            case ECreateVgImageCase:
+            case EDestroyVgImageCase:
+            case EDestroyEglImageCase:
+            case ETestVgImageValidCase:
+            case ERequestNotificationCase:
+            case ECancelNotificationCase:
+            case EWaitForNotificationCase:
+            case EGetEndpointDirtyAreaCase:
+                RunRemoteTestCase(ec.iCase, params);
+                break;
+
+            // Special case: Need surface parameters filled in first. 
+            case ECreateEndpointCase:
+                {
+                // Copy parameters.
+                TRemoteTestParams tempParams = params;
+                tempParams.iEndpointEngine.iEngineTestCase.iCase = EGetSurfaceParamsCase;
+                RunLocalTestCase(tempParams, result);
+                params.iEndpointEngine.iSurfaceParams = result.iSurfaceParams;
+               
+                // The above code syncs the execution so no need to sync again!
+                iExecState = EExecStateRemote;
+                RunRemoteTestCase(ec.iCase, params);
+                }
+                break;
+
+            // Some commands that go to BOTH local and remote side!
+            case ELogEnableCase:
+                SendLocalTestCase(params);
+                RunRemoteTestCase(ec.iCase, params);
+                break;
+                
+            case EBreakPointCase:
+                if (ec.iFlags & EDebugController)
+                    {
+                    __BREAKPOINT();
+                    }
+                SendLocalTestCase(params);
+                RunRemoteTestCase(ec.iCase, params);
+                break;
+                
+            case EPanicCase:
+                if (ec.iFlags & EDebugController)
+                    {
+                    User::Panic(_L("EPanicCase"), -1);
+                    }
+                SendLocalTestCase(params);
+                RunRemoteTestCase(ec.iCase, params);
+                break;
+
+           default:
+                ERR_PRINTF2(_L("Unknown case: %d"), ec.iCase);
+                SetTestStepResult(EFail);
+                break;
+            }
+        }
+    // Tell local execution thread we are finished.
+    RunLocalTestCase(EFinishedCase);
+    }
+
+
+
+void CEgltest_Local_Engine::RunOneTestCaseL(const TTestCase& aTestCase, TSurfaceType aSurfType)
+    {
+    INFO_PRINTF3(_L("Running testcase GRAPHICS-EGL-%s: %s"),
+            aTestCase.iRelatedTestIds, aTestCase.iName);
+    static const TRemoteTestParams nullParams = {};
+    StartRemoteTestStep(nullParams);
+
+    TRAPD(err2, RunSingleCaseL(aTestCase, aSurfType));
+    if (err2 != KErrNone)
+        {
+        INFO_PRINTF2(_L("RunSingleCaseL left with an error: %d"), err2);
+        }
+    else
+        {
+        INFO_PRINTF1(_L("testcase finished..."));
+        }
+
+    EndRemoteTestStep(nullParams);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_remote.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,696 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <e32std.h>
+#include "egltest_endpoint_engine.h"
+#include "egltest_endpoint_images.h"
+#include "egltest_surface.h"
+#include "egltest_parameters.h"
+
+CEgltest_Remote_Engine::CEgltest_Remote_Engine()
+    : CRemoteTestStepBase(ETestUidEndpointEngine), iTestVerdict(ERtvPass), iLogging(EFalse), iSurface(0)
+    {
+    for (TInt i = 0; i < KMaxEndpoints; i++)
+        {
+        iEndpoints[i] = EGL_NO_ENDPOINT_NOK;
+        iEglImage[i] = EGL_NO_IMAGE_KHR;
+        iVgImage[i] = NULL;
+        iRequestStatus[i] = KRequestPending;
+        }
+    }
+
+CEgltest_Remote_Engine::~CEgltest_Remote_Engine()
+    {
+    // Note: This is run from a different thread an on a different heap than the one
+    // used during the execution of DoRunRemoteTestCaseL(). So any allocation done
+    // during DoRunRemoteTestCaseL must be de-allocated in DoEndRemoteTestStepL()
+    }
+
+TRemoteTestVerdict CEgltest_Remote_Engine::DoStartRemoteTestStepL(
+        const TRemoteTestParams& /* aParams */)
+    {
+    iLogging = EFalse;
+    return ERtvPass;
+    }
+
+TRemoteTestVerdict CEgltest_Remote_Engine::DoEndRemoteTestStepL(
+        const TRemoteTestParams& /* aParams */)
+    {
+    delete iSurface;
+    return ERtvPass;
+    }
+
+
+void CEgltest_Remote_Engine::CheckReturn(TInt aRetval,
+        const TEngineTestCase& aEngineTestCase, TInt aFailValue,
+        const TText* aFailSymbol, const TText* aFunction)
+    {
+    TBool isEqual = (aRetval == aFailValue);
+    TBool expectFail = (aEngineTestCase.iFlags & EExpectFailureMask) != 0;
+
+    EGLint err = eglGetError();
+    if (err != aEngineTestCase.iErrorExpected)
+        {
+        REMOTE_ERR_PRINTF3(_L("testcase failed: expected %04x, got %04x"), aEngineTestCase.iErrorExpected, err);
+        iTestVerdict = ERtvFail;
+        }
+
+    if (!isEqual && expectFail)
+        {
+        REMOTE_ERR_PRINTF5(
+                _L("return value when failing from %s is not expected fail value %s (%d). Value returned is %d"),
+                aFunction, aFailSymbol, aFailValue, aRetval);
+        iTestVerdict = ERtvFail;
+        }
+    else if (isEqual && !expectFail)
+        {
+        REMOTE_ERR_PRINTF5(
+                _L("return value when succeeding from %s is equal to expected fail value %s (%d). Value returned is %d"),
+                aFunction, aFailSymbol, aFailValue, aRetval);
+        iTestVerdict = ERtvFail;
+        }
+    if (isEqual != expectFail)
+        {
+        RDebug::Printf(
+                "%s:%d: Called for %s, with expected fail %s, flags = %d",
+                __FILE__, __LINE__, aFunction, aFailSymbol,
+                aEngineTestCase.iFlags);
+        iTestVerdict = ERtvFail;
+        }
+    // Now check
+    if (expectFail && err == EGL_SUCCESS)
+        {
+        REMOTE_ERR_PRINTF2(_L("Got EGL_SUCCESS in error when calling %s, when we expected an error"),
+                aFunction);
+        iTestVerdict = ERtvFail;
+        }
+    // Didn't expect to fail, so we
+    else if (!expectFail && err != EGL_SUCCESS)
+        {
+        REMOTE_ERR_PRINTF3(_L("Got an error (%x) on successful call to %s, when expecting EGL_SUCCESS"),
+                err, aFunction);
+        iTestVerdict = ERtvFail;
+        }
+    }
+
+#define CHECK_RETURN(retval, failval, func) \
+    CheckReturn((retval), si, (failval), _S(#failval), func)
+
+#define CHECK_RETURN_CAST(retval, failval, func) \
+    CheckReturn(reinterpret_cast<int>(retval), si, reinterpret_cast<int>(failval), _S(#failval), func)
+
+#define CHECK_BOOL_RET(func, funcName) \
+{  \
+    EGLBoolean ret = EglEndpoint().func(dpy, endpoint);     \
+    CheckReturn(ret, si, EGL_FALSE, _S("EGL_FALSE"), _S(funcName));  \
+}
+
+void CEgltest_Remote_Engine::LogDump(const TEngineTestCase& aCase)
+    {
+    const TText *caseName = EngineCaseName(aCase.iCase);
+
+    Log(((TText8*)__FILE__), __LINE__, ESevrInfo,
+                    _L("Performing subcase %d (%s), with flags=%d, err=%04x endpointidx=%d, image=%d, args=(%d, %d)"),
+                    aCase.iCase,
+                    caseName,
+                    aCase.iFlags,
+                    aCase.iErrorExpected,
+                    aCase.iEndpointIndex,
+                    aCase.iImageIndex,
+                    aCase.iArg1, aCase.iArg2);
+    }
+
+TRemoteTestVerdict CEgltest_Remote_Engine::DoRunRemoteTestCaseL(
+        TInt aTestCase, const TRemoteTestParams &aParams)
+    {
+    TRemoteTestArgs args;
+    iTestVerdict = ERtvPass;
+    const TEngineTestCase &si = aParams.iEndpointEngine.iEngineTestCase;
+
+    CDisplayParams* displayParams = CDisplayParams::NewLC(!!(si.iFlags & EUseBadDisplay), eglGetDisplay(EGL_DEFAULT_DISPLAY));
+    TInt dpyParamsCount = displayParams->Count();
+    CEndpointParams* endpointParams = CEndpointParams::NewLC(!!(si.iFlags & EUseBadEndpoint), iEndpoints, KMaxEndpoints, si.iEndpointIndex);
+    TInt endpointCount  = endpointParams->Count();
+    CImageParams* imageParams = CImageParams::NewLC(!!(si.iFlags & EUseBadEglImage), iEglImage, KMaxEndpoints, si.iImageIndex);
+    TInt imageCount = imageParams->Count();
+
+    for(TInt dpyIter = 0; dpyIter < dpyParamsCount; dpyIter++)
+        {
+        args.iDisplay = (*displayParams)[dpyIter];
+        for(TInt epIter = 0; epIter < endpointCount; epIter++)
+            {
+            args.iEndpoint = (*endpointParams)[epIter];
+
+            for(TInt imageIter = 0; imageIter < imageCount; imageIter++)
+                {
+                args.iImage = (*imageParams)[imageIter];
+
+                RunCaseL(aTestCase, aParams, args);
+                if (iTestVerdict != ERtvPass || iLogging)
+                    {
+                    if (iTestVerdict != ERtvPass)
+                        {
+                        REMOTE_INFO_PRINTF1(_L("Test failed:"));
+                        }
+                    LogDump(si);
+                    REMOTE_INFO_PRINTF4(_L("Using values: display: %d, endpoint: %d, image: %d"),
+                            args.iDisplay, args.iEndpoint, args.iImage);
+                    }
+                }
+            }
+        }
+    CleanupStack::PopAndDestroy(3);
+    return iTestVerdict;
+    }
+
+
+void CEgltest_Remote_Engine::ActivateVgContextL()
+    {
+    if (!iSurface)
+        {
+        iSurface = CEglWindowSurface::NewL();
+        RDebug::Printf("%s:%d: iSurface = %08x", __FILE__, __LINE__, iSurface);
+        iSurface->CreateL(EStandardSurface);
+        }
+    iSurface->ActivateL();
+    }
+
+
+void CEgltest_Remote_Engine::RunCaseL(TInt aTestCase, const TRemoteTestParams &aParams, const TRemoteTestArgs& aArgs)
+    {
+    const TEngineTestCase &si = aParams.iEndpointEngine.iEngineTestCase;
+    EGLDisplay dpy = aArgs.iDisplay;
+    EGLImageKHR image = aArgs.iImage;
+    EGLEndpointNOK endpoint = aArgs.iEndpoint;
+
+    switch (aTestCase)
+        {
+        case EInitializeCase:
+            REMOTE_INFO_PRINTF1(_L("calling EglStartL()"));
+            EglStartL();
+            break;
+
+        case ECreateEndpointCase:
+            CreateEndpointCaseL(aParams, aArgs);
+            break;
+
+        case EAcquireImageCase:
+            image = EglEndpoint().AcquireImage(dpy, endpoint);
+            CHECK_RETURN(image, EGL_NO_IMAGE_KHR, _S("eglAcquireImage"));
+            if (image != EGL_NO_IMAGE_KHR)
+                {
+                iEglImage[si.iEndpointIndex] = image;
+                }
+            break;
+
+        case ECompareImageCase:
+            if (iEglImage[si.iEndpointIndex] == EGL_NO_IMAGE_KHR)
+                {
+                REMOTE_ERR_PRINTF2(_L("Image at index %d is not a valid eglImage"), si.iEndpointIndex);
+                iTestVerdict = ERtvFail;
+                }
+            else
+                {
+                ActivateVgContextL();
+
+                CTestCFbsImage *image = CTestCFbsImage::NewL(si.iImageIndex);
+                CleanupStack::PushL(image);
+                CTestVgEglImage *vgImage = CTestVgEglImage::NewL(iEglImage[si.iEndpointIndex]);
+                CleanupStack::PushL(vgImage);
+                TBool res = vgImage->CompareImageL(image, !!(si.iFlags & EExpectError));
+                if (res != !(si.iFlags & EExpectError))
+                    {
+                    REMOTE_ERR_PRINTF1(_L("Pixel comparison failed...."));
+                    iTestVerdict = ERtvFail;
+                    }
+                else if (!(si.iFlags & EExpectError))
+                    {
+                    TInt imageIndex2 = (si.iImageIndex + 1) % CTestImage::KImageCount;
+                    CTestCFbsImage *image2 = CTestCFbsImage::NewL(imageIndex2);
+                    CleanupStack::PushL(image2);
+                    res = vgImage->CompareImageL(image2, !(si.iFlags & EExpectError));
+                    if (res == !(si.iFlags & EExpectError))
+                        {
+                        REMOTE_ERR_PRINTF1(_L("Pixel comparison didn't fail - two images the same?...."));
+                        iTestVerdict = ERtvFail;
+                        }
+                    CleanupStack::PopAndDestroy(image2);
+                    }
+                CleanupStack::PopAndDestroy(2, image);
+                }
+            break;
+
+        case EReleaseImageCase:
+            ReleaseImageCaseL(aParams, aArgs);
+            break;
+
+        case EBeginStreamingCase:
+            CHECK_BOOL_RET(EndpointBeginStreaming, "eglEndpointBeginStreaming");
+            break;
+
+        case EEndStreamingCase:
+            CHECK_BOOL_RET(EndpointEndStreaming, "eglEndpointEndStreaming");
+            break;
+
+        case EDestroyEndpointCase:
+            CHECK_BOOL_RET(DestroyEndpoint, "eglDestroyEndpoint");
+            break;
+
+        case EGetAttribCase:
+            {
+            TInt value = EglEndpoint().GetEndpointAttrib(dpy, endpoint, si.iArg1);
+            // We can't use the macro CHECK_RETURN_L here, as the return value for
+            // "success" can be any integer value, including "EGL_FALSE". So we can
+            // only check when we expect failure.
+            if (si.iFlags & EExpectFailureMask)
+                {
+                CheckReturn(value, si, EGL_FALSE,_S("EGL_FALSE") ,_S("eglGetEndpointAttrib"));
+                }
+            else
+                {
+                EGLint err = eglGetError();
+                if (err != EGL_SUCCESS)
+                    {
+                    REMOTE_ERR_PRINTF2(_L("Got an error (%x) on successful call to eglGetEndpointAttrib, when expecting EGL_SUCCESS in error"),
+                            err);
+                    iTestVerdict = ERtvFail;
+                    }
+                }
+            if (value != si.iArg2)
+                {
+                REMOTE_ERR_PRINTF4(_L("GetEndpointAttrib(%04x), got %d, expected %d"), si.iArg1, value, si.iArg2);
+                iTestVerdict = ERtvFail;
+                }
+            }
+            break;
+
+        case ESetAttribCase:
+            {
+            EGLBoolean ret = EglEndpoint().SetEndpointAttrib(dpy, endpoint, si.iArg1, si.iArg2);
+            CHECK_RETURN(ret, EGL_FALSE, _S("eglSetEndpointAttrib"));
+            }
+            break;
+
+        case EDestroyEglImageCase:
+            {
+            EGLBoolean ret = EglEndpoint().DestroyImage(dpy, image);
+            CHECK_RETURN(ret, EGL_FALSE, _S("eglDestroyImageKHR"));
+            }
+			break;
+
+        case ECreateVgImageCase:
+            {
+            // For a VgImage to be possible to create, we need to have a EglSurface.
+            ActivateVgContextL();
+
+            TRAPD(err, iVgImage[si.iImageIndex] = CTestVgEglImage::NewL(iEglImage[si.iEndpointIndex]));
+            if ((si.iFlags & EExpectFailureMask) && err == KErrNone)
+                {
+                REMOTE_ERR_PRINTF1(_L("Successfully created VGImage when we expected an error"));
+                iTestVerdict = ERtvFail;
+                delete iVgImage[si.iImageIndex];
+                iVgImage[si.iImageIndex] = NULL;
+                }
+            else if (!(si.iFlags & EExpectFailureMask) && err != KErrNone)
+                {
+                REMOTE_ERR_PRINTF1(_L("Failed to create VGImage when we expected to succeed"));
+                iTestVerdict = ERtvFail;
+                }
+            }
+            break;
+
+        // Test that a vgImage can be used. We do NOT test the content for anything in particular, since
+        // the current usage of this is to do checking on a vgImage after endpoint is destroyed, and the
+        // specification is that the vgImage is undefined under this condition.
+        case ETestVgImageValidCase:
+            {
+            ActivateVgContextL();
+            CTestVgEglImage *vgImage = iVgImage[si.iImageIndex];
+            if (!vgImage)
+                {
+                // Image not usable!
+                REMOTE_ERR_PRINTF1(_L("VGImage is not present"));
+                iTestVerdict = ERtvFail;
+                }
+            else
+                {
+                vgDrawImage(vgImage->VGImage());
+                VGint err = vgGetError();
+                if (err != VG_NO_ERROR)
+                    {
+                    iTestVerdict = ERtvFail;
+                    }
+#if 0
+                TSize size = vgImage->Size();
+                // Now read the pixels in four corners and the middle to check if the image is still "working".
+                vgImage->Pixel(0, 0);
+                vgImage->Pixel(size.iWidth-1, size.iHeight-1);
+                vgImage->Pixel(0, size.iHeight-1);
+                vgImage->Pixel(size.iWidth-1, 0);
+                vgImage->Pixel(size.iWidth >> 1, size.iHeight >> 1);
+#endif
+                }
+            // If we get here, the image is "working" - we expect to panic or crash if it's not...
+            }
+            break;
+
+        case EDestroyVgImageCase:
+            delete iVgImage[si.iImageIndex];
+            iVgImage[si.iImageIndex] = NULL;
+            break;
+
+        case ERequestNotificationCase:
+            RequestNotificationL(aParams, aArgs);
+            break;
+
+        case ECancelNotificationCase:
+            CHECK_BOOL_RET(EndpointCancelNotification, "eglEndpointCancelNotification");
+            break;
+
+        case EWaitForNotificationCase:
+            {
+            RTimer timer;
+            TInt err = timer.CreateLocal();
+            if (err != KErrNone)
+                {
+                REMOTE_INFO_PRINTF2(_L("Could not create timer. Error=%d"), err);
+                iTestVerdict = ERtvFail;
+                }
+            else
+                {
+                TRequestStatus timerStatus = KRequestPending;
+                timer.HighRes(timerStatus, si.iArg1);
+                // Note that the requeststatus is set to KRequestPending by
+                // eglEndpointRequestNotificationNOK(), so we don't do that
+                // before waiting. See below for more comments.
+                TRequestStatus *requestStatus = &iRequestStatus[si.iEndpointIndex];
+                User::WaitForRequest(timerStatus, *requestStatus);
+                TInt result = KErrNotReady;  // Give it some ERROR value that is unlikely to happen later.
+                timer.Cancel();
+                timer.Close();
+                if (timerStatus == KErrNone && *requestStatus == KRequestPending)
+                    {
+                    result = KErrTimedOut;
+                    }
+                else
+                    {
+                    result = requestStatus->Int();
+                    }
+                // Reset the request - this allows us to (ab-)use this request to
+                // wait for things that aren't completing, etc.
+                *requestStatus = KRequestPending;
+                if ((si.iFlags & EExpectError) && result >= KErrNone)
+                    {
+                    iTestVerdict = ERtvFail;
+                    REMOTE_INFO_PRINTF1(_L("Expected failure, but result was a success"));
+                    }
+                else if (!(si.iFlags & EExpectError) && result < KErrNone)
+                    {
+                    iTestVerdict = ERtvFail;
+                    REMOTE_INFO_PRINTF1(_L("Expected success, but result was a failure"));
+                    }
+                if (result != si.iErrorExpected)
+                    {
+                    iTestVerdict = ERtvFail;
+                    REMOTE_INFO_PRINTF3(_L("EWaitForNotificationCase: Expected error %d, got %d"), si.iErrorExpected, result);
+                    }
+                }
+            }
+            break;
+
+        case EGetEndpointDirtyAreaCase:
+            GetEndpointDirtyAreaL(aParams, aArgs);
+            break;
+
+        case ETerminateCase:
+            REMOTE_INFO_PRINTF1(_L("calling EglEndL()"));
+            EglEndL();
+            break;
+
+        /*
+         * Debug cases
+         */
+
+        case EBreakPointCase:
+            if (si.iFlags & EDebugRemote)
+                {
+                __BREAKPOINT();
+                }
+            break;
+
+        case ELogEnableCase:
+            if (si.iFlags & EDebugRemote)
+                {
+                iLogging = ETrue;
+                }
+            break;
+            
+        case EPanicCase:
+            if (si.iFlags & EDebugRemote)
+                {
+                User::Panic(_L("EPanicCase"), -1);
+                }
+            break;
+
+        default:
+            REMOTE_ERR_PRINTF2(_L("Invalid testcase %d"), aTestCase);
+            User::Invariant();
+            break;
+        }
+    }
+
+
+void CEgltest_Remote_Engine::CreateEndpointCaseL(const TRemoteTestParams &aParams, const TRemoteTestArgs& aArgs)
+    {
+    const TEngineTestCase &si = aParams.iEndpointEngine.iEngineTestCase;
+    EGLDisplay dpy = aArgs.iDisplay;
+    EGLEndpointNOK endpoint = aArgs.iEndpoint;
+    const TSurfaceParamsRemote& cp = aParams.iEndpointEngine.iSurfaceParams;
+
+    CEnumParams* endpointTypeParams = CEnumParams::NewLC(!!(si.iFlags & EUseBadEndpointType),
+                                                            EGL_ENDPOINT_TYPE_CONSUMER_NOK);
+    CEnumParams* sourceParams = CEnumParams::NewLC(!!(si.iFlags & EUseBadSourceType),
+                                                   EGL_TSURFACEID_NOK);
+    CSurfaceIdParams *surfParams = CSurfaceIdParams::NewLC(!!(si.iFlags & EUseBadSurfaceId),
+                                                           cp.iSurfaceId);
+
+    TInt endpointTypeCount = endpointTypeParams->Count();
+    TInt sourceCount = sourceParams->Count();
+    TInt surfCount = surfParams->Count();
+
+    for(TInt typeIter = 0; typeIter < endpointTypeCount; typeIter++)
+        {
+        EGLenum type = (*endpointTypeParams)[typeIter];
+        for(TInt sourceIter = 0; sourceIter < sourceCount; sourceIter++)
+            {
+            EGLenum source_type = (*sourceParams)[sourceIter];
+
+            for(TInt surfIter = 0; surfIter < surfCount; surfIter++)
+                {
+                EGLEndpointSourceNOK source = (EGLEndpointSourceNOK)(&(*surfParams)[surfIter]);
+                EGLint *attrib_list = cp.iCommonParams.iUseAttribList?
+                    const_cast<EGLint *>(cp.iCommonParams.iAttribs):NULL;
+
+                endpoint = EglEndpoint().CreateEndpoint(dpy, type, source_type, source, attrib_list);
+                CHECK_RETURN_CAST(endpoint, EGL_NO_ENDPOINT_NOK, _S("eglCreateEndpoint"));
+                if (endpoint != EGL_NO_ENDPOINT_NOK)
+                    {
+                    iEndpoints[si.iEndpointIndex] = endpoint;
+                    }
+                }
+            }
+        }
+    CleanupStack::PopAndDestroy(3);
+    }
+
+
+void CEgltest_Remote_Engine::ReleaseImageCaseL(const TRemoteTestParams& aParams, const TRemoteTestArgs& aArgs)
+    {
+    const TEngineTestCase &si = aParams.iEndpointEngine.iEngineTestCase;
+    EGLDisplay dpy = aArgs.iDisplay;
+    EGLImageKHR image = aArgs.iImage;
+    EGLEndpointNOK endpoint = aArgs.iEndpoint;
+
+    static const EGLenum validAPIs[] = { EGL_OPENVG_API, EGL_OPENGL_API, EGL_OPENGL_ES_API };
+    const TInt validAPIcount = sizeof(validAPIs) / sizeof(validAPIs[0]);
+
+    CEnumParams* enumParams = CEnumParams::NewLC(!!(si.iFlags & EUseBadApi),
+            validAPIs, validAPIcount, 0);
+    for(TInt enumIter = 0; enumIter < enumParams->Count(); enumIter++)
+        {
+        EGLenum api = (*enumParams)[enumIter];
+        EGLBoolean ret = EglEndpoint().ReleaseImage(dpy, endpoint, image, api);
+        CHECK_RETURN(ret, EGL_FALSE, _S("eglReleaseImage"));
+        }
+    CleanupStack::PopAndDestroy(enumParams);
+    }
+
+void CEgltest_Remote_Engine::RequestNotificationL(const TRemoteTestParams& aParams, const TRemoteTestArgs &aArgs)
+    {
+    const TEngineTestCase &si = aParams.iEndpointEngine.iEngineTestCase;
+    EGLDisplay dpy = aArgs.iDisplay;
+    EGLEndpointNOK endpoint = aArgs.iEndpoint;
+
+    CSyncParams* enumParams = CSyncParams::NewLC(!!(si.iFlags & EUseBadSync), &iRequestStatus[si.iEndpointIndex]);
+    for(TInt enumIter = 0; enumIter < enumParams->Count(); enumIter++)
+        {
+        TRequestStatus* sync = (*enumParams)[enumIter];
+        EGLBoolean ret = EglEndpoint().EndpointRequestNotification(dpy, endpoint, sync);
+        CHECK_RETURN(ret, EGL_FALSE, _S("eglEndpointRequestNotification"));
+        }
+    CleanupStack::PopAndDestroy(enumParams);
+    }
+
+// Mark either side of "rects" with something that we can detect.
+// Must not be a valid rect coordinate - which is unlikely for this
+// number (regardless of endianness), since it's roughly 0x40000000.
+static const EGLint KMarker = 'NTCH';
+// Allow space for this number of rectangles either side of the actual buffer.
+static const TInt KBufferArea = 2;
+
+void CEgltest_Remote_Engine::DoCheckRectsL(EGLint *aRectsBuffer, EGLint aRectCount, EGLint aMaxRects,
+                                           TInt aRectsIndex, const TRect aSurfaceRect)
+    {
+    // Right now, this testing only supports "full surface" rectangles.
+    ASSERT(aRectsIndex == 0);
+    EGLint *rects = aRectsBuffer+KBufferArea * 4;
+
+    // First, check the rects returned by the call. Should not be equal to KMarker.
+    // For example, if we ask for 4 rects, and only two rects are filled in, index
+    // 0 and 1 are checked that they are properly filled in.
+    for (TInt i = 0; i < aRectCount * 4; i++)
+        {
+        if (rects[i] == KMarker)
+            {
+            iTestVerdict = ERtvFail;
+            REMOTE_INFO_PRINTF3(_L("Seems the dirty area wasn't filled in properly! Got 0x%08x at %d"), rects[i], i);
+            }
+        }
+    // Check the area not supposed to be filled in! All this should contain KMArker!
+    // Check that the dirty area get call didn't fill in any memory
+    // beyond the rectangles returned. Say we asked for 4 rectangles,
+    // and two were returned, this will check that index 2 & 3 were
+    // not modified. If we ask for 4 rects and get 4 rects back, nothing
+    // is done here.
+    for(TInt i = aRectCount * 4; i < aMaxRects * 4; i++)
+        {
+        if (rects[i] != KMarker)
+            {
+            iTestVerdict = ERtvFail;
+            REMOTE_INFO_PRINTF3(_L("Seems the dirty area filled beyond the number of rects that it returned! Got 0x%08x at %d"), rects[i], i);
+            }
+        }
+    // Check the "bufferaea" before the actual rects - MUST not be touched.
+    for(TInt i = 0; i < KBufferArea * 4; i++)
+        {
+        if (aRectsBuffer[i] != KMarker)
+            {
+            iTestVerdict = ERtvFail;
+            REMOTE_INFO_PRINTF3(_L("Seems the dirty area walked outside it's allowed memory! Got 0x%08x at %d"), rects[i], i);
+            }
+        }
+    // Check the buffer area AFTER the buffer we gave - again, the
+    // production code should ABSOLUTELY not write here.
+    for(TInt i = (aMaxRects + KBufferArea) * 4; i < (aMaxRects + KBufferArea * 2) * 4; i++)
+        {
+        if (aRectsBuffer[i] != KMarker)
+            {
+            iTestVerdict = ERtvFail;
+            REMOTE_INFO_PRINTF3(_L("Seems the dirty area walked outside it's allowed memory! Got 0x%08x at %d"), rects[i], i);
+            }
+        }
+    if (aRectsIndex == 0)
+        {
+        // Check that rectangle matches the full surface extent.
+        // We should only have ONE rectangle in this case!
+        if (aRectCount != 1)
+            {
+            REMOTE_INFO_PRINTF2(_L("Expected 1 rectangle returned - got %d"), aRectCount);
+            iTestVerdict = ERtvFail;
+            }
+        else
+            {
+            TRect returnedRect = TRect(rects[0], rects[1], rects[2], rects[3]);
+            if (returnedRect != aSurfaceRect)
+                {
+                REMOTE_INFO_PRINTF1(_L("rectangles do not match!"));
+                }
+            }
+        }
+    // TODO: To support flexible sets of dirty area we need an else on the
+    // above if-statement. However, with the current reference and the planned
+    // third party known at this point, only "full surface" will ever be
+    // returned.
+    }
+
+void CEgltest_Remote_Engine::GetEndpointDirtyAreaL(const TRemoteTestParams& aParams, const TRemoteTestArgs& aArgs)
+    {
+    const TEngineTestCase &si = aParams.iEndpointEngine.iEngineTestCase;
+    EGLDisplay dpy = aArgs.iDisplay;
+    EGLEndpointNOK endpoint = aArgs.iEndpoint;
+
+    EGLint *rects;
+    EGLint *rectsBuffer = NULL;
+    const TInt actualRectsSize = (si.iArg2 + KBufferArea * 2) * 4;
+    // We don't use the "parameter expansion" for bad rects value.
+    // This is because it's so easy to just add it here, and there is only one bad
+    // value that is recognisable.
+    if (si.iFlags & (EUseNullRects | EUseBadRects))
+        {
+        rects = NULL;
+        }
+    else
+        {
+        rectsBuffer = new EGLint[actualRectsSize];
+        CleanupStack::PushL(rectsBuffer);
+        rects = rectsBuffer + (KBufferArea * 4);
+        for(TInt i = 0; i < actualRectsSize; i++)
+            {
+            rectsBuffer[i] = KMarker;
+            }
+        }
+    EGLBoolean collapse = (si.iFlags & EUseCollapseArea)?EGL_TRUE:EGL_FALSE;
+    EGLint ret = EglEndpoint().GetEndpointDirtyArea(dpy, endpoint, rects, si.iArg1, si.iArg2, collapse);
+    if (!(si.iFlags & EExpectFailureMask))
+        {
+        if (rectsBuffer)
+            {
+            TInt rectsIndex = si.iImageIndex;  // ImageIndex is used for rects!
+            const TSurfaceParamsRemote &surfParams = aParams.iEndpointEngine.iSurfaceParams;
+            // TODO: If the surface has been downscaled, we need to modify this rectangle.
+            // We can only know if it's downsampled by getting the image, converting to a VGImage,
+            // and getting the size of the VGImage. It can be done, but we would need to make
+            // sure the imageindex matches the endpointindex, as imageindex is used by the
+            // rectsindex (above).
+            TRect surfaceRect = TRect(0, 0, surfParams.iCommonParams.iXSize-1, surfParams.iCommonParams.iYSize-1);
+            DoCheckRectsL(rectsBuffer, ret, si.iArg2, rectsIndex, surfaceRect);
+            }
+        }
+    if (rectsBuffer)
+        {
+        CleanupStack::PopAndDestroy(rectsBuffer);
+        }
+    if (ret != 0 || (si.iFlags & EExpectFailureMask))
+        {
+        CHECK_RETURN(ret, EGL_FALSE, _S("eglGetEndpointDirtyArea"));
+        }
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_images.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,374 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "egltest_endpoint_images.h"
+
+_LIT(KImage1, "z:\\resource\\apps\\egltest_endpoint\\image1.mbm");
+_LIT(KImage2, "z:\\resource\\apps\\egltest_endpoint\\image2.mbm");
+_LIT(KImage3, "z:\\resource\\apps\\egltest_endpoint\\image3.mbm");
+_LIT(KImage4, "z:\\resource\\apps\\egltest_endpoint\\image4.mbm");
+
+
+const static TDesC *KImageList[]=
+{
+        &KImage1,
+        &KImage2,
+        &KImage3,
+        &KImage4,
+};
+
+typedef VGImage (*PFNCreateFromEglImage)(EGLImageKHR);
+
+const TInt CTestImage::KImageCount = sizeof(KImageList)/sizeof(KImageList[0]);
+
+CTestImage::~CTestImage()
+    {
+    }
+
+CTestImage::CTestImage()
+    {
+    }
+
+TBool CTestImage::ComparePixel(TRgb aPixel1, TRgb aPixel2, TBool aExpectError)
+    {
+    // In a 16-bit per pixel scenario, we allow (8 bits - 5 bits) = 3 bits,
+    // which gives a value of 8  worth of difference.
+    const TInt KMargin = 8;
+    TBool match = ETrue;
+    if (Abs(aPixel1.Red()-aPixel2.Red()) > KMargin ||
+        Abs(aPixel1.Green()-aPixel2.Green()) > KMargin ||
+        Abs(aPixel1.Blue()-aPixel2.Blue()) > KMargin)
+        {
+        if (!aExpectError)
+            {
+            RDebug::Printf("%s:%d: pixel %08x doesn't match %08x", __FILE__, __LINE__, aPixel1.Color16MA(), aPixel2.Color16MA());
+            }
+        match = EFalse;
+        }
+    else if (aExpectError)
+        {
+        RDebug::Printf("%s:%d: pixel %08x matches %08x", __FILE__, __LINE__, aPixel1.Color16MA(), aPixel2.Color16MA());
+        }
+    return match;
+    }
+
+
+// Compare the this image with the aImage.
+// Images must be same size.
+TBool CTestImage::CompareImageL(const CTestImage *aImage, TBool aExpectError) const
+    {
+    TSize size = Size();
+    TSize otherSize = aImage->Size();
+    if (otherSize != size)
+        {
+        size.iHeight = Min(size.iHeight, otherSize.iHeight);
+        size.iWidth  = Min(size.iWidth, otherSize.iWidth);
+        }
+
+    RArray<TPoint> points;
+    CleanupClosePushL(points);
+    points.AppendL(TPoint(0, 0));     // Top left.
+    points.AppendL(TPoint(size.iWidth-1, 0));  // Top right.
+    points.AppendL(TPoint(0, size.iHeight-1)); // Bottom left.
+    points.AppendL(TPoint(size.iWidth-1, size.iHeight-1)); // Bottom right
+    points.AppendL(TPoint(size.iWidth >> 1, size.iHeight >> 1));   // Middle
+
+    TBool retVal = ETrue;
+    for(TInt i = 0; i < points.Count(); i++)
+        {
+        TInt x = points[i].iX;
+        TInt y = points[i].iY;
+        if (!ComparePixel(Pixel(x, y), aImage->Pixel(x, y), aExpectError))
+            {
+            retVal = EFalse;
+            break;
+            }
+        }
+
+    CleanupStack::PopAndDestroy(&points);
+    return retVal;
+    }
+
+
+//Checks if the image is a solid colour.
+//Only checks corners and middle pixel.
+TBool CTestImage::IsSolidColourL() const
+    {
+    //Points in image to compare (corners and middle).
+    TSize size = Size();
+    RArray<TPoint> points;
+    CleanupClosePushL(points);
+    points.AppendL(TPoint(0, 0));                                // Top left.
+    points.AppendL(TPoint(size.iWidth-1, 0));                    // Top right.
+    points.AppendL(TPoint(0, size.iHeight-1));                   // Bottom left.
+    points.AppendL(TPoint(size.iWidth-1, size.iHeight-1));       // Bottom right.
+    points.AppendL(TPoint(size.iWidth >> 1, size.iHeight >> 1)); // Middle.
+
+    //Check that all points contain the same colour.
+    TBool retVal = ETrue;
+    for(TInt i = 1; i < points.Count(); ++i)
+        {
+        if(Pixel(points[i-1].iX, points[i-1].iY) != Pixel(points[i].iX, points[i].iY))
+            {
+            retVal = EFalse;
+            break;
+            }
+        }
+
+    CleanupStack::PopAndDestroy(&points);
+    return retVal;
+    }
+
+
+CTestCFbsImage *CTestCFbsImage::NewL(TInt aIndex)
+    {
+    CTestCFbsImage* self = new (ELeave) CTestCFbsImage;
+    CleanupStack::PushL(self);
+    self->ConstructL(aIndex);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+
+void CTestCFbsImage::ConstructL(TInt aIndex)
+    {
+    // Do this before we leave - else we may disconnect more than we connect!
+    RFbsSession::Connect();
+    if (aIndex >= KImageCount)
+        {
+        User::Leave(KErrOverflow);
+        }
+    iBitmap = new (ELeave) CFbsBitmap;
+    TInt err = iBitmap->Load(*KImageList[aIndex], 0);
+    if (err != KErrNone)
+        {
+        RDebug::Printf("Image load error %d for image %d (name=%S)", err, aIndex, KImageList[aIndex]);
+        User::Leave(err);
+        }
+
+    // Check if it's a 24bpp image. If so, we must convert it to 32bpp.
+    // as vgImages can't be 24bpp [in the Hybrid EGL/VG implementation],
+    // and we (may) want to make this into a vg-image at some point in future.
+    if(iBitmap->DisplayMode() == EColor16M)
+        {
+        CFbsBitmap *newBitmap = new (ELeave) CFbsBitmap;
+        CleanupStack::PushL(newBitmap);
+        TSize size = iBitmap->SizeInPixels();
+        newBitmap->Create(size, EColor16MU);
+        TInt32 *b = new TInt32[size.iWidth];
+        TPtr8 buf((TUint8*)b, size.iWidth * sizeof(*b));
+        for (TInt y=0; y<size.iHeight; ++y)
+            {
+            iBitmap->GetScanLine(buf, TPoint(0, y), size.iWidth, EColor16MU);
+            newBitmap->SetScanLine(buf, y);
+            }
+        delete b;
+        delete iBitmap;
+        CleanupStack::Pop(newBitmap);
+        iBitmap = newBitmap;
+        }
+    }
+
+
+CFbsBitmap *CTestCFbsImage::Bitmap()
+    {
+    return iBitmap;
+    }
+
+
+CTestCFbsImage::CTestCFbsImage()
+    {
+    iBitmap = NULL;
+    }
+
+
+CTestCFbsImage::~CTestCFbsImage()
+    {
+    delete iBitmap;
+    RFbsSession::Disconnect();
+    }
+
+TSize CTestCFbsImage::Size() const
+    {
+    ASSERT(iBitmap);
+    return iBitmap->SizeInPixels();
+    }
+
+TRgb CTestCFbsImage::Pixel(TInt x, TInt y) const
+    {
+    TRgb rgb;
+    iBitmap->GetPixel(rgb, TPoint(x, y));
+    return rgb;
+    }
+
+// CTestVgImage...
+CTestVgImage::CTestVgImage()
+    {
+    iVgImage = VG_INVALID_HANDLE;
+    iDataFormat = VG_IMAGE_FORMAT_INVALID;
+    }
+
+
+CTestVgImage::~CTestVgImage()
+    {
+    vgDestroyImage(iVgImage);
+    }
+
+
+CTestVgImage *CTestVgImage::NewL(TInt aIndex)
+    {
+    CTestVgImage *self = new (ELeave) CTestVgImage;
+    CleanupStack::PushL(self);
+    self->ConstructL(aIndex);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+
+void CTestVgImage::ConstructL(TInt aIndex)
+    {
+    CTestCFbsImage* bmp = CTestCFbsImage::NewL(aIndex);
+    CleanupStack::PushL(bmp);
+    CFbsBitmap *bitmap = bmp->Bitmap();
+    ASSERT(bitmap);
+    TUint8* address = (TUint8*)bitmap->DataAddress();
+    TSize size = bitmap->SizeInPixels();
+    iDataFormat = VG_IMAGE_FORMAT_INVALID;
+    TDisplayMode mode = bitmap->DisplayMode();
+    switch(mode)
+        {
+        case EColor64K:
+            iDataFormat = VG_sRGB_565;
+            break;
+        case EColor16MAP:
+            iDataFormat = VG_sARGB_8888_PRE;
+            break;
+        case EColor16MU:
+            iDataFormat = VG_sXRGB_8888;
+            break;
+        case EColor16MA:
+            iDataFormat = VG_sARGB_8888;
+            break;
+        }
+    if (iDataFormat == VG_IMAGE_FORMAT_INVALID)
+        {
+        User::Leave(KErrBadHandle);
+        }
+    VGint width = size.iWidth;
+    VGint height = size.iHeight;
+    VGint dataStride = bitmap->DataStride();
+
+    //this allows us to copy the image correctly into vg coordinates
+    address += ((height) - 1) * (dataStride);
+    dataStride = 0 - (dataStride);
+
+    //Create VGImage and load Symbian bitmap into it
+    iVgImage = vgCreateImage(iDataFormat, width, height, VG_IMAGE_QUALITY_NONANTIALIASED);
+    if (iVgImage == VG_INVALID_HANDLE)
+        {
+        VGint err = vgGetError();
+        RDebug::Printf("%s:%d: Could not create vgimage: error = 0x%x", err);
+        User::Leave(KErrNotSupported);
+        }
+    vgImageSubData(iVgImage, address, dataStride, iDataFormat, 0, 0, width, height);
+    CleanupStack::PopAndDestroy(bmp);
+    }
+
+VGImage CTestVgImage::VGImage()
+    {
+    return iVgImage;
+    }
+
+
+TSize CTestVgImage::Size() const
+    {
+    VGint x, y;
+    // If this is called a lot, maybe we should cache the value.
+    x = vgGetParameteri(iVgImage, VG_IMAGE_WIDTH);
+    y = vgGetParameteri(iVgImage, VG_IMAGE_HEIGHT);
+    return TSize(x, y);
+    }
+
+
+TRgb CTestVgImage::Pixel(TInt x, TInt y) const
+    {
+    TRgb rgb;
+    TSize size = Size();
+    if (size.iHeight <= y || size.iWidth <= x)
+        {
+        ASSERT(0 && "Asked for pixel outside image size");
+        return TRgb(0, 0, 0);
+        }
+    // VG images are "y = 0, x = 0 => bottom left", so we translate it from "y = 0, x = 0 => top left".
+    y = (size.iHeight - 1) - y;
+    switch(iDataFormat)
+        {
+        case VG_sRGB_565:
+            {
+            TUint16 intPixelSample;
+            vgGetImageSubData(iVgImage, &intPixelSample, sizeof(intPixelSample), iDataFormat, x, y, 1, 1);
+            rgb = TRgb::Color64K(intPixelSample);
+            }
+            break;
+        case VG_sARGB_8888:
+        case VG_sXRGB_8888:
+        case VG_sARGB_8888_PRE:
+            {
+            TUint32 intPixelSample;
+            vgGetImageSubData(iVgImage, &intPixelSample, sizeof(intPixelSample), iDataFormat, x, y, 1, 1);
+            rgb = TRgb::Color16MA(intPixelSample);
+            }
+            break;
+        default:
+            ASSERT(0 && "Invalid dataformat");
+            break;
+        }
+    VGint err = vgGetError();
+    __ASSERT_ALWAYS(err == VG_NO_ERROR, User::Panic(_L("Pixel"), __LINE__));
+    return rgb;
+    }
+
+CTestVgEglImage::CTestVgEglImage()
+    {
+    }
+
+CTestVgEglImage* CTestVgEglImage::NewL(EGLImageKHR aEglImage)
+    {
+    CTestVgEglImage *self = new (ELeave) CTestVgEglImage;
+    CleanupStack::PushL(self);
+    self->ConstructL(aEglImage);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+
+void CTestVgEglImage::ConstructL(EGLImageKHR aEglImage)
+    {
+    PFNCreateFromEglImage createFromEglTarget =
+        reinterpret_cast<PFNCreateFromEglImage>(eglGetProcAddress("vgCreateEGLImageTargetKHR"));
+    iVgImage = createFromEglTarget(aEglImage);
+    if (iVgImage == VG_INVALID_HANDLE)
+        {
+        RDebug::Printf("%s:%d: Unable to create VGImage from EGLImage: Error code=%d", __FILE__, __LINE__, vgGetError());
+        User::Leave(KErrBadHandle);
+        }
+    iDataFormat = static_cast<VGImageFormat>(vgGetParameteri(iVgImage, VG_IMAGE_FORMAT));
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_util.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,110 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+// A "utility class" that contains a number of static functions that don't 
+// have anywhere else obvious to live.
+
+#include "egltest_endpoint_util.h"
+#include <test/testexecuteserverbase.h>
+
+
+/**
+Cut and paste from CTestStep::SetLogger() - which is not exported
+As the name suggests, this is for use by the egl test process wrapper
+*/
+void TEndpointUtil::SetLoggerForProcessWrapperL(CTestExecuteLogger& aLogger)
+    {
+    // Create a cinidata object for parsing the testexecute.ini
+    CTestExecuteIniData* parseTestExecuteIni = NULL;
+    TBuf<KMaxTestExecuteNameLength> resultFilePath;
+    TBuf<KMaxTestExecuteNameLength> xmlFilePath;
+    TInt logMode;
+    TInt logLevel;
+
+    TRAPD(err,parseTestExecuteIni = CTestExecuteIniData::NewL());
+    if (err == KErrNone)
+        {
+        CleanupStack::PushL(parseTestExecuteIni);
+        parseTestExecuteIni->ExtractValuesFromIni();
+        parseTestExecuteIni->GetKeyValueFromIni(KTEFHtmlKey, resultFilePath);
+        parseTestExecuteIni->GetKeyValueFromIni(KTEFXmlKey, xmlFilePath);
+        parseTestExecuteIni->GetKeyValueFromIni(KTEFLogMode, logMode);
+        parseTestExecuteIni->GetKeyValueFromIni(KTEFLogSeverityKey, logLevel);
+        }
+    else
+        {
+        resultFilePath.Copy(KTestExecuteLogPath);
+        xmlFilePath.Copy(KTestExecuteLogPath);
+        logMode = TLoggerOptions(ELogHTMLOnly);
+        logLevel = RFileFlogger::TLogSeverity(ESevrAll);
+        }
+    aLogger.SetLoggerOptions(logMode);
+
+    // Initialise a handle to the file logger
+    User::LeaveIfError(aLogger.Connect());
+    RFs fS;
+    User::LeaveIfError(fS.Connect());
+    CleanupClosePushL(fS);
+    RFile file;
+    TBuf<KMaxTestExecuteNameLength> xmlLogFile(xmlFilePath);
+    TBuf<KMaxTestExecuteNameLength> logFile;
+    TBuf<KMaxTestExecuteNameLength> logFileNameFile(resultFilePath);
+    logFileNameFile.Append(KTestExecuteScheduleTestLogCompatibilityNameFile);
+    if(file.Open(fS,logFileNameFile,EFileRead | EFileShareAny) != KErrNone)
+        {
+        User::Panic(_L("Unsupported"), -1);
+        }
+    else
+        {
+        CleanupClosePushL(file);
+        TBuf8<KMaxTestExecuteNameLength> logFile8;
+        TInt fileSize;
+        User::LeaveIfError(file.Size(fileSize));
+        User::LeaveIfError(file.Read(logFile8,fileSize));
+        logFile.Copy(logFile8);
+        xmlLogFile.Append(logFile);
+        _LIT(KXmlExtension,".xml");
+        xmlLogFile.Append(KXmlExtension);
+        _LIT(KHtmExtension,".htm");
+        logFile.Append(KHtmExtension);
+        CleanupStack::Pop(&file);
+        file.Close();
+        }
+    TBuf<KMaxTestExecuteLogFilePath> logFilePath(resultFilePath);
+    logFilePath.Append(logFile);
+    CleanupStack::Pop(&fS);
+    fS.Close();
+
+    if (logMode == 0 || logMode == 2)
+        {
+        User::LeaveIfError(aLogger.HtmlLogger().CreateLog(logFilePath,RTestExecuteLogServ::ELogModeAppend));
+        aLogger.HtmlLogger().SetLogLevel(TLogSeverity(logLevel));
+        }
+    if (logMode == 1 || logMode == 2)
+        {
+        User::LeaveIfError(aLogger.XmlLogger().CreateLog(xmlLogFile,RFileFlogger::ELogModeAppend));
+        aLogger.XmlLogger().SetLogLevel(RFileFlogger::TLogSeverity(logLevel));
+        }
+    if (parseTestExecuteIni != NULL)
+        {
+        CleanupStack::PopAndDestroy(parseTestExecuteIni);
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointacquire_local.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,519 @@
+// Copyright (c) 2009-2010 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "egltest_endpointacquire.h"
+
+
+static const TTestCase KAcquirePositiveCases[] =
+{
+    // Test "working case"
+    {
+        TESTIDS("547A"),
+        CASETITLE("Functional: Positive: eglAcquireImageNOK with Valid Parameters: Basic Working case"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    // Positive: Acquire twice with release
+    {
+        TESTIDS("547B"),
+        CASETITLE("Functional: Positive: eglAcquireImageNOK with Valid Parameters: Acquire twice (with release)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   ENoSync, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("547C"),
+        CASETITLE("Functional: Positive: eglAcquireImageNOK with Valid Parameters: Two endpoints, acquire from each of them"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface},
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 1, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS, 0, 0},      // Endpoint 0, image(surface) 0
+        { ECreateEndpointCase,  0, EGL_SUCCESS, 1, 1},      // Endpoint 1, image(surface) 1
+        { EDrawContentCase,     0, EGL_SUCCESS, 0, 0 },     // Surface 0, Image 0
+        { EContentUpdateCase,   0, EGL_SUCCESS, 0 },        // Surface 0
+        { EDrawContentCase,     0, EGL_SUCCESS, 1, 1 },     // Surface 1, Image 1
+        { EContentUpdateCase,   0, EGL_SUCCESS, 1 },        // Surface 1
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 0 },        // Endpoint 0.
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 1 },        // Endpoint 1.
+        { EAcquireImageCase,    0, EGL_SUCCESS, 1 },        // Endpoint 1
+        { EAcquireImageCase,    0, EGL_SUCCESS, 0 },        // Endpoint 0
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 0 },     // eglImage 0, image 0
+        { ECompareImageCase,    0, EGL_SUCCESS, 1, 1 },     // eglImage 1, image 1
+        { EReleaseImageCase,    0, EGL_SUCCESS, 0, 0 },     // Endpoint 0, image 0
+        { EReleaseImageCase,    0, EGL_SUCCESS, 1, 1 },     // Endpoint 1, image 1
+        { EEndStreamingCase,    0, EGL_SUCCESS, 0 },        // Endpoint 0
+        { EEndStreamingCase,    0, EGL_SUCCESS, 1 },        // Endpoint 1
+        { EDestroyEndpointCase, 0, EGL_SUCCESS, 0 },        // Endpoint 0
+        { EDestroyEndpointCase, 0, EGL_SUCCESS, 1 },        // Endpoint 1
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    // Positive: Acquire, early destroy...
+    {
+        TESTIDS("547D"),
+        CASETITLE("Functional: Positive: eglAcquireImageNOK with Valid Parameters: Acquire and destroy without release"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    // Positive: Acquire, early endstreaming...
+    {
+        TESTIDS("547E"),
+        CASETITLE("Functional: Positive: eglAcquireImageNOK with Valid Parameters: Acquire and endstreaming without release"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS }, // We need to acquire again to see that it actually works correctly.
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+
+static const TTestCase KAcquireNegativeCases[] =
+{
+    {
+        TESTIDS("555A"),
+        CASETITLE("Functional: Negative: eglAcquireImageNOK with Bad Parameters: Not ready"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    EExpectError, EGL_BAD_ACCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("555B"),
+        CASETITLE("Functional: Negative: eglAcquireImageNOK with Bad Parameters: Not streaming"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EAcquireImageCase,    EExpectError, EGL_BAD_ACCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    // Negative: Acquire twice with no release
+    {
+        TESTIDS("555C"),
+        CASETITLE("Functional: Negative: eglAcquireImageNOK with Bad Parameters: Acquire twice (no release)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        // Note that when a bad acquire is done, the eglimage value is not stored.
+        // so we can still use the same image slot for the release later on.
+        { EAcquireImageCase,    EExpectError, EGL_BAD_ACCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    // Negative: Release bad eglImage then release the proper one, and acquire another (to ensure all worked).
+    {
+        TESTIDS("555D"),
+        CASETITLE("Functional: Negative: eglAcquireImageNOK with Bad Parameters: release bad image then release correct one"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    EUseBadEglImage, EGL_BAD_PARAMETER },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    }
+};
+
+static const TTestCase KAcquireBadParamCases[] =
+{
+    {
+        TESTIDS("555E"),
+        CASETITLE("Functional: Negative: eglAcquireImageNOK with Bad Parameters: Various bad Parameters(Not Ready state)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    EUseBadDisplay,  EGL_BAD_DISPLAY },
+        { EAcquireImageCase,    EUseBadDisplay | EUseBadEndpoint,    EGL_BAD_DISPLAY },
+        { EAcquireImageCase,    EUseBadEndpoint,  EGL_BAD_ENDPOINT_NOK },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+    {
+        TESTIDS("555F"),
+        CASETITLE("Functional: Negative: eglAcquireImageNOK with Bad Parameters: Various bad Parameters(Ready state)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EAcquireImageCase,    EUseBadDisplay,  EGL_BAD_DISPLAY },
+        { EAcquireImageCase,    EUseBadDisplay | EUseBadEndpoint,    EGL_BAD_DISPLAY },
+        { EAcquireImageCase,    EUseBadEndpoint,  EGL_BAD_ENDPOINT_NOK },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+    {
+        TESTIDS("555G"),
+        CASETITLE("Functional: Negative: eglAcquireImageNOK with Bad Parameters: Various bad Parameters(Streaming state)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    EUseBadDisplay,  EGL_BAD_DISPLAY },
+        { EAcquireImageCase,    EUseBadDisplay | EUseBadEndpoint,    EGL_BAD_DISPLAY },
+        { EAcquireImageCase,    EUseBadEndpoint,  EGL_BAD_ENDPOINT_NOK },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+    {
+        TESTIDS("555H"),
+        CASETITLE("Functional: Negative: eglAcquireImageNOK with Bad Parameters: Various bad Parameters(Image Acquired state)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { EAcquireImageCase,    EUseBadDisplay,  EGL_BAD_DISPLAY },
+        { EAcquireImageCase,    EUseBadDisplay | EUseBadEndpoint,    EGL_BAD_DISPLAY },
+        { EAcquireImageCase,    EUseBadEndpoint,  EGL_BAD_ENDPOINT_NOK },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+};
+
+
+static const TTestCase KReleaseBadParamCases[] =
+{
+    {
+        TESTIDS("556A"),
+        CASETITLE("Functional: Negative: eglReleaseImageNOK with Bad Parameters: Various bad Parameters(Not Ready state)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EReleaseImageCase,    EUseBadEglImage, EGL_BAD_PARAMETER },
+        { EReleaseImageCase,    EUseBadEglImage | EUseBadDisplay, EGL_BAD_DISPLAY },
+        { EReleaseImageCase,    EUseBadEglImage | EUseBadDisplay | EUseBadEndpoint, EGL_BAD_DISPLAY },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+    {
+        TESTIDS("556B"),
+        CASETITLE("Functional: Negative: eglReleaseImageNOK with Bad Parameters: Various bad Parameters(Ready state)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EReleaseImageCase,    EUseBadEglImage, EGL_BAD_PARAMETER },
+        { EReleaseImageCase,    EUseBadEglImage | EUseBadDisplay, EGL_BAD_DISPLAY },
+        { EReleaseImageCase,    EUseBadEglImage | EUseBadDisplay | EUseBadEndpoint, EGL_BAD_DISPLAY },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+    {
+        TESTIDS("556C"),
+        CASETITLE("Functional: Negative: eglReleaseImageNOK with Bad Parameters: Bad Parameters(Streaming state)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EReleaseImageCase,    EUseBadEglImage, EGL_BAD_PARAMETER },
+        { EReleaseImageCase,    EUseBadEglImage | EUseBadDisplay, EGL_BAD_DISPLAY },
+        { EReleaseImageCase,    EUseBadEglImage | EUseBadDisplay | EUseBadEndpoint, EGL_BAD_DISPLAY },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+    {
+        TESTIDS("556D"),
+        CASETITLE("Functional: Negative: eglReleaseImageNOK with Bad Parameters: Various bad Parameters(Image Acquired state)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    EUseBadDisplay, EGL_BAD_DISPLAY },
+        { EReleaseImageCase,    EUseBadEndpoint, EGL_BAD_ENDPOINT_NOK },
+        { EReleaseImageCase,    EUseBadEglImage, EGL_BAD_PARAMETER },
+        { EReleaseImageCase,    EUseBadApi, EGL_BAD_PARAMETER },
+        { EReleaseImageCase,    EUseBadDisplay | EUseBadEndpoint, EGL_BAD_DISPLAY },
+        { EReleaseImageCase,    EUseBadDisplay | EUseBadEglImage, EGL_BAD_DISPLAY },
+        { EReleaseImageCase,    EUseBadDisplay | EUseBadApi, EGL_BAD_DISPLAY },
+        { EReleaseImageCase,    EUseBadEglImage | EUseBadApi, EGL_BAD_PARAMETER },
+        { EReleaseImageCase,    EUseBadDisplay | EUseBadEndpoint | EUseBadEglImage, EGL_BAD_DISPLAY },
+        { EReleaseImageCase,    EUseBadDisplay | EUseBadEndpoint | EUseBadApi, EGL_BAD_DISPLAY },
+        { EReleaseImageCase,    EUseBadDisplay | EUseBadEglImage | EUseBadApi, EGL_BAD_DISPLAY },
+        { EReleaseImageCase,    EUseBadDisplay | EUseBadEndpoint | EUseBadEglImage | EUseBadApi, EGL_BAD_DISPLAY },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+};
+
+
+static const TTestCase KReleasePositiveCases[] =
+{
+    {
+        TESTIDS("548A"),
+        CASETITLE("Functional: Positive: eglReleaseImageNOK with Valid Parameters: Simple acquire then release"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+    {
+        TESTIDS("548B"),
+        CASETITLE("Functional: Positive: eglReleaseImageNOK with Valid Parameters: Acquire, release twice"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        // Should fail.
+        { EReleaseImageCase,    EExpectError, EGL_BAD_PARAMETER },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+};
+
+static const TTestCase KReleaseNegativeCases[] =
+{
+    {
+        TESTIDS("548C"),
+        CASETITLE("Functional: Negative: eglReleaseImageNOK with Valid Parameters: Two EPs, acquire, then release on wrong EP."),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 1, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS, 0, 0 },
+        { ECreateEndpointCase,  0, EGL_SUCCESS, 1, 1 },
+        { EDrawContentCase,     0, EGL_SUCCESS, 0, 0 },
+        { EContentUpdateCase,   0, EGL_SUCCESS, 0 },
+        { EDrawContentCase,     0, EGL_SUCCESS, 1, 1 },
+        { EContentUpdateCase,   0, EGL_SUCCESS, 1 },
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 0 },
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 1 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 1, 1 },
+        // Swapping the release of the image - should fail.
+        { EReleaseImageCase,    EExpectError, EGL_BAD_PARAMETER, 0, 1 },
+        { EReleaseImageCase,    EExpectError, EGL_BAD_PARAMETER, 1, 0 },
+        // Check that the originally acquired images are still there...
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { ECompareImageCase,    0, EGL_SUCCESS, 1, 1 },
+        // Now do it the right way around
+        { EReleaseImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS, 0 },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS, 1 },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+    {
+        TESTIDS("619"),
+        CASETITLE("Functional: Negative: eglDestroyImageKHR can not be used for images acquired from endpoint."),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS, },
+        { EDrawContentCase,     0, EGL_SUCCESS, },
+        { EContentUpdateCase,   0, EGL_SUCCESS, },
+        { EBeginStreamingCase,  0, EGL_SUCCESS, },
+        { EAcquireImageCase,    0, EGL_SUCCESS, },
+        { EDestroyEglImageCase, EExpectError, EGL_BAD_ACCESS },
+        // Compare Image to make sure it's still "there".
+        { ECompareImageCase,    0, EGL_SUCCESS, },
+        { EReleaseImageCase,    0, EGL_SUCCESS, },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS, },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        },
+    },
+
+};
+
+
+static const TTestCases KTestCases[] =
+{
+        TestCase(KAcquirePositiveCases),
+        TestCase(KAcquireNegativeCases),
+        TestCase(KAcquireBadParamCases),
+        TestCase(KReleasePositiveCases),
+        TestCase(KReleaseBadParamCases),
+        TestCase(KReleaseNegativeCases),
+};
+
+const TInt KNumberTestCases = sizeof(KTestCases) / sizeof(KTestCases[0]);
+
+
+CEglTest_LocalTestStep_EndpointAcquire::CEglTest_LocalTestStep_EndpointAcquire():
+    CEgltest_Local_Engine(KTestCases, KNumberTestCases)
+    {
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointapiexposure_local.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,137 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include "egltest_endpointapiexposure.h"
+
+
+CEglTest_LocalTestStep_EndpointApiExposure::CEglTest_LocalTestStep_EndpointApiExposure() :
+    CLocalTestStepBase(ETestUidEndpointApiExposure)
+    {
+    //Temp solution. We probably want a local side Egl helper class.
+    //If this fails, the test will fail in a round about way with EGL_NOT_INITIALIZED.
+    eglInitialize(eglGetDisplay(EGL_DEFAULT_DISPLAY), NULL, NULL);
+    }
+
+
+CEglTest_LocalTestStep_EndpointApiExposure::~CEglTest_LocalTestStep_EndpointApiExposure()
+    {
+    //Temp Solution. See note above.
+    eglTerminate(eglGetDisplay(EGL_DEFAULT_DISPLAY));
+    }
+
+
+void CEglTest_LocalTestStep_EndpointApiExposure::DoPreambleL()
+    {
+    //Register the test id.
+    _LIT(KTestId, "563");
+    RegisterTestIdsL(KTestId);
+    SetCurrentTestIds(KTestId);
+    }
+
+
+TVerdict CEglTest_LocalTestStep_EndpointApiExposure::doTestStepL()
+    {
+    //First, test the local side.
+
+    //temp solution. We probably want an Egl helper class for the local side too.
+    eglInitialize(eglGetDisplay(EGL_DEFAULT_DISPLAY), NULL, NULL);
+
+    //Check that the extension does not exist in the egl implementation.
+    TPtrC8 extensionString((TUint8*)eglQueryString(eglGetDisplay(EGL_DEFAULT_DISPLAY), EGL_EXTENSIONS));
+    _LIT8(KExtensionName, "EGL_NOK_image_endpoint");
+    if(extensionString.Find(KExtensionName) != KErrNotFound)
+        {
+        ERR_PRINTF1(_L("Incorrect result for extensionString"));
+        INFO_PRINTF1(_L("Rest of test is being skipped due to failure."));
+        eglTerminate(eglGetDisplay(EGL_DEFAULT_DISPLAY));
+        SetTestStepResult(EFail);
+        return TestStepResult();
+        }
+    else
+        {
+        INFO_PRINTF1(_L("Correct result for extensionString"));
+        }
+
+    //If this function leaves, a function pointer was returned from EGL.
+    //Since we are outside wserv, we expect EGL never to advertise the existance
+    //of the Endpoint API.
+    TRAPD(err, AttemptToGetProcAddressForAllEndpointFunctionsL());
+    if(err != KErrNone)
+        {
+        INFO_PRINTF1(_L("Rest of test is being skipped due to failure."));
+        eglTerminate(eglGetDisplay(EGL_DEFAULT_DISPLAY));
+        SetTestStepResult(EFail);
+        return TestStepResult();
+        }
+
+    eglTerminate(eglGetDisplay(EGL_DEFAULT_DISPLAY));
+
+
+    //Now test remote side.
+
+    //Params for the remote test step.
+    TRemoteTestParams params;
+
+    //Run the test step and return the result.
+    StartRemoteTestStep(TRemoteTestParams());
+    RunRemoteTestCase(0, params);
+    EndRemoteTestStep(TRemoteTestParams());
+
+    return TestStepResult();
+    }
+
+
+void CEglTest_LocalTestStep_EndpointApiExposure::AttemptToGetProcAddressForAllEndpointFunctionsL()
+    {
+    //Attempt to get the proc address for each endpoint function. The expected outcome is
+    //for them all to fail. If any succeed, ProcAddressL() will leave.
+    ProcAddressL("eglCreateEndpointNOK");
+    ProcAddressL("eglDestroyEndpointNOK");
+    ProcAddressL("eglGetEndpointAttribNOK");
+    ProcAddressL("eglSetEndpointAttribNOK");
+    ProcAddressL("eglEndpointBeginStreamingNOK");
+    ProcAddressL("eglEndpointEndStreamingNOK");
+    ProcAddressL("eglAcquireImageNOK");
+    ProcAddressL("eglReleaseImageNOK");
+    ProcAddressL("eglGetEndpointDirtyAreaNOK");
+    ProcAddressL("eglEndpointRequestNotificationNOK");
+    ProcAddressL("eglEndpointCancelNotificationNOK");
+    }
+
+
+void CEglTest_LocalTestStep_EndpointApiExposure::ProcAddressL(const char *aProcName)
+    {
+    //Convert the 8bit string to a 16 bit descriptor for logging.
+    //None of the function names are longer than 128 chars.
+    TBuf<128> procName;
+    procName.Copy(TPtrC8((TText8*)aProcName));
+
+    //Attempt to get the function pointer. We are expecting to fail since we are outside wserv.
+    if(eglGetProcAddress(aProcName) != NULL)
+        {
+        ERR_PRINTF2(_L("Incorrect result for funcPtr: %S"), &procName);
+        User::Leave(KErrUnknown);
+        }
+    else
+        {
+        INFO_PRINTF2(_L("Correct result for funcPtr: %S"), &procName);
+        }
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointapiexposure_remote.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,115 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include "egltest_endpointapiexposure.h"
+
+
+CEglTest_RemoteTestStep_EndpointApiExposure::CEglTest_RemoteTestStep_EndpointApiExposure() :
+    CRemoteTestStepBase(ETestUidEndpointApiExposure)
+    {
+    //Temp solution. We probably want a remote side Egl helper class.
+    //If this fails, the test will fail in a round about way with EGL_NOT_INITIALIZED.
+    eglInitialize(eglGetDisplay(EGL_DEFAULT_DISPLAY), NULL, NULL);
+    }
+
+
+CEglTest_RemoteTestStep_EndpointApiExposure::~CEglTest_RemoteTestStep_EndpointApiExposure()
+    {
+    //Temp Solution. See note above.
+    eglTerminate(eglGetDisplay(EGL_DEFAULT_DISPLAY));
+    }
+
+
+TRemoteTestVerdict CEglTest_RemoteTestStep_EndpointApiExposure::DoRunRemoteTestCaseL(TInt aTestCase, const TRemoteTestParams& aParams)
+    {
+    switch(aTestCase)
+        {
+        case 0:     return RemoteApiExposureTestCase(aParams);
+        default:    return ERtvAbort;
+        }
+    }
+
+
+TRemoteTestVerdict CEglTest_RemoteTestStep_EndpointApiExposure::RemoteApiExposureTestCase(const TRemoteTestParams& /*aParams*/)
+    {
+    //Check that the extension exists in the egl implementation.
+    TPtrC8 extensionString((TUint8*)eglQueryString(eglGetDisplay(EGL_DEFAULT_DISPLAY), EGL_EXTENSIONS));
+    _LIT8(KExtensionName, "EGL_NOK_image_endpoint");
+    if(extensionString.Find(KExtensionName) == KErrNotFound)
+        {
+        REMOTE_ERR_PRINTF1(_L("Incorrect result for extensionString"));
+        REMOTE_INFO_PRINTF1(_L("Rest of test is being skipped due to failure."));
+        return ERtvFail;
+        }
+    else
+        {
+        REMOTE_INFO_PRINTF1(_L("Correct result for extensionString"));
+        }
+
+    //If this function leaves, a function pointer was not returned from EGL.
+    //Since we are inside wserv, we expect EGL to always advertise the existance
+    //of the Endpoint API.
+    TRAPD(err, AttemptToGetProcAddressForAllEndpointFunctionsL());
+    if(err != KErrNone)
+        {
+        REMOTE_INFO_PRINTF1(_L("Rest of test is being skipped due to failure."));
+        return ERtvFail;
+        }
+
+    return ERtvPass;
+    }
+
+
+void CEglTest_RemoteTestStep_EndpointApiExposure::AttemptToGetProcAddressForAllEndpointFunctionsL()
+    {
+    //Attempt to get the proc address for each endpoint function. The expected outcome is
+    //for them all to succeed. If any fail, ProcAddressL() will leave.
+    ProcAddressL("eglCreateEndpointNOK");
+    ProcAddressL("eglDestroyEndpointNOK");
+    ProcAddressL("eglGetEndpointAttribNOK");
+    ProcAddressL("eglSetEndpointAttribNOK");
+    ProcAddressL("eglEndpointBeginStreamingNOK");
+    ProcAddressL("eglEndpointEndStreamingNOK");
+    ProcAddressL("eglAcquireImageNOK");
+    ProcAddressL("eglReleaseImageNOK");
+    ProcAddressL("eglGetEndpointDirtyAreaNOK");
+    ProcAddressL("eglEndpointRequestNotificationNOK");
+    ProcAddressL("eglEndpointCancelNotificationNOK");
+    }
+
+
+void CEglTest_RemoteTestStep_EndpointApiExposure::ProcAddressL(const char *aProcName)
+    {
+    //Convert the 8bit string to a 16 bit descriptor for logging.
+    //None of the function names are longer than 128 chars.
+    TBuf<128> procName;
+    procName.Copy(TPtrC8((TText8*)aProcName));
+
+    //Attempt to get the function pointer. We are expecting to succeed since we are inside wserv.
+    if(eglGetProcAddress(aProcName) == NULL)
+        {
+        REMOTE_ERR_PRINTF2(_L("Incorrect result for funcPtr: %S"), &procName);
+        User::Leave(KErrUnknown);
+        }
+    else
+        {
+        REMOTE_INFO_PRINTF2(_L("Correct result for funcPtr: %S"), &procName);
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointattrib_local.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,331 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "egltest_endpointattrib.h"
+
+const TInt KBadAttribValue = EGL_BAD_ATTRIBUTE;  // Use error code as a "invalid attribute value".
+
+// For testing flexibility of the concept. Not actually used in the testcode at this point in time.
+static const TTestCase KAttribBadParameterCases[] =
+{
+    {
+        TESTIDS("551A"),
+        CASETITLE("Functional: Negative: eglGetEndpointAttribNOK with Bad Parameters: bad display is error code when getting attributes"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EGetAttribCase,       EUseBadDisplay, EGL_BAD_DISPLAY, 0, 0, EGL_ENDPOINT_READY_NOK, 0},
+        // Use bad endpoint with bad display - should give bad display.
+        { EGetAttribCase,       EUseBadEndpoint | EUseBadDisplay,
+                EGL_BAD_DISPLAY, 0, 0, EGL_ENDPOINT_READY_NOK, 0},
+        { EGetAttribCase,       EUseBadEndpoint,
+                EGL_BAD_ENDPOINT_NOK, 0, 0, EGL_ENDPOINT_READY_NOK, 0},
+        { EGetAttribCase,       EUseBadDisplay, EGL_BAD_DISPLAY, 0, 0, EGL_DELAY_NOK, 0 },
+        // Use bad endpoint with bad display - should give bad display.
+        { EGetAttribCase,       EUseBadEndpoint | EUseBadDisplay,
+                EGL_BAD_DISPLAY, 0, 0, EGL_DELAY_NOK, 0},
+        { EGetAttribCase,       EUseBadEndpoint,EGL_BAD_ENDPOINT_NOK, 0, 0, EGL_DELAY_NOK, 0},
+        { EGetAttribCase,       EUseBadDisplay, EGL_BAD_DISPLAY, 0, 0, KBadAttribValue, 0},
+        { EGetAttribCase,       EExpectError,   EGL_BAD_PARAMETER, 0, 0, KBadAttribValue, 0},
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("551B"),
+        CASETITLE("Functional: Negative: eglGetEndpointAttribNOK with Bad Parameters: bad parameter is error code when requesting invalid attribute"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        // First check that bad display is issued even when the attribute is bad.
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    // SetEndpointAttrib tests.
+    {
+        TESTIDS("552A"),
+        CASETITLE("Functional: Negative: eglSetEndpointAttribNOK with Bad Parameters: bad display is error code when setting endpoint ready"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { ESetAttribCase,       EUseBadDisplay, EGL_BAD_DISPLAY, 0, 0, EGL_ENDPOINT_READY_NOK, 0},
+        { ESetAttribCase,       EUseBadDisplay, EGL_BAD_DISPLAY, 0, 0, EGL_ENDPOINT_READY_NOK, 0},
+        // Use bad endpoint with bad display - should give bad display.
+        { ESetAttribCase,       EUseBadEndpoint | EUseBadDisplay,
+                EGL_BAD_DISPLAY, 0, 0, EGL_ENDPOINT_READY_NOK, 0},
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("552B"),
+        CASETITLE("Functional: Negative: eglSetEndpointAttribNOK with Bad Parameters: bad display is error code when setting endpoint delay"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { ESetAttribCase,       EUseBadDisplay, EGL_BAD_DISPLAY, 0, 0, EGL_DELAY_NOK, 0 },
+        // Use bad endpoint with bad display - should give bad display.
+        { ESetAttribCase,       EUseBadEndpoint | EUseBadDisplay,
+                EGL_BAD_DISPLAY, 0, 0, EGL_DELAY_NOK, 0},
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("552C"),
+        CASETITLE("Functional: Negative: eglSetEndpointAttribNOK with Bad Parameters: bad endpoint is error code when setting endpoint delay"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { ESetAttribCase,       EUseBadEndpoint,EGL_BAD_ENDPOINT_NOK, 0, 0, EGL_DELAY_NOK, 0},
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("552D"),
+        CASETITLE("Functional: Negative: eglSetEndpointAttribNOK with Bad Parameters: bad parameter is error code when setting invalid attribute"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        // First check that bad display is issued even when the attribute is bad.
+        { ESetAttribCase,       EUseBadDisplay, EGL_BAD_DISPLAY, 0, 0, KBadAttribValue, 0},
+        { ESetAttribCase,       EExpectError,   EGL_BAD_PARAMETER, 0, 0, KBadAttribValue, 0},
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("552E"),
+        CASETITLE("Functional: Negative: eglSetEndpointAttribNOK with Bad Parameters: bad parameter is error code when setting EGL_ENDPOINT_READY_NOK"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { ESetAttribCase,       EExpectError,   EGL_BAD_PARAMETER, 0, 0, EGL_ENDPOINT_READY_NOK, 0},
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+static const TTestCase KAttribPositiveCases[] =
+{
+    {
+        TESTIDS("543A"),
+        CASETITLE("Functional: Positive: eglGetEndpointAttribNOK with Valid Parameters: check that EGL_ENDPOINT_READY_NOK returns EGL_FALSE when not ready"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_ENDPOINT_READY_NOK, EGL_FALSE },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("543B"),
+        CASETITLE("Functional: Positive: eglGetEndpointAttribNOK with Valid Parameters: check that EGL_ENDPOINT_READY_NOK returns EGL_TRUE when ready"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_ENDPOINT_READY_NOK, EGL_TRUE },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("543C"),
+        CASETITLE("Functional: Positive: eglGetEndpointAttribNOK with Valid Parameters: Two endpoints, check EGL_ENDPOINT_READY_NOK returns EGL_TRUE for one but not other endpoint"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 1, EUnalignedPixelSizeSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 1 },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_ENDPOINT_READY_NOK, EGL_TRUE },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 1, 0, EGL_ENDPOINT_READY_NOK, EGL_FALSE },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 1 },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("543D"),
+        CASETITLE("Functional: Positive: eglGetEndpointAttribNOK with Valid Parameters: check that EGL_DELAY_NOK returns 0 for a new endpoint"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 0 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    // SetEndpointAttribute tests.
+    {
+        TESTIDS("544A"),
+        CASETITLE("Functional: Positive: eglSetEndpointAttribNOK with Valid Parameters: set EGL_DELAY_NOK"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { ESetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 100 },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 100 },
+        // Check that we can set a relatively large value, 250 ms, and that it remains.
+        { ESetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 250000 },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 250000 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("544B"),
+        CASETITLE("Functional: Positive: eglSetEndpointAttribNOK with Valid Parameters: set EGL_DELAY_NOK, then set again to a different value"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { ESetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 100 },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 100 },
+        { ESetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 208 },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 208 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("544C"),
+        CASETITLE("Functional: Positive: eglSetEndpointAttribNOK with Valid Parameters: set EGL_DELAY_NOK, then with draw/update between set and get, then set again"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { ESetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 100 },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 100 },
+        { ESetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 208 },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 208 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("544D"),
+        CASETITLE("Functional: Positive: eglSetEndpointAttribNOK with Valid Parameters: set EGL_DELAY_NOK on two endpoints, with different values"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 1, EUnalignedPixelSizeSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 0, 0 },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 1, 1 },
+        { ESetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 100 },
+        { ESetAttribCase,       0,              EGL_SUCCESS, 1, 0, EGL_DELAY_NOK, 208 },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 1, 0, EGL_DELAY_NOK, 208 },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 100 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 1, 1 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 0, 0 },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("544E"),
+        CASETITLE("Functional: Positive: eglSetEndpointAttribNOK with Valid Parameters: set EGL_DELAY_NOK on two endpoints, with different values, and swapping buffers between"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 1, EUnalignedPixelSizeSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 0, 0 },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 1, 1 },
+        { ESetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 100 },
+        { ESetAttribCase,       0,              EGL_SUCCESS, 1, 0, EGL_DELAY_NOK, 208 },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 1, 0, EGL_DELAY_NOK, 208 },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 100 },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 1, 0, EGL_ENDPOINT_READY_NOK, EGL_FALSE },
+        { EGetAttribCase,       0,              EGL_SUCCESS, 0, 0, EGL_ENDPOINT_READY_NOK, EGL_TRUE },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 1, 1 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 0, 0 },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+static const TTestCases KTestCases[] =
+{
+        TestCase(KAttribPositiveCases),
+        TestCase(KAttribBadParameterCases),
+};
+
+const TInt KNumberTestCases = sizeof(KTestCases) / sizeof(KTestCases[0]);
+
+CEglTest_LocalTestStep_EndpointAttrib::CEglTest_LocalTestStep_EndpointAttrib():
+    CEgltest_Local_Engine(KTestCases, KNumberTestCases)
+    {
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointcreate_local.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,344 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "egltest_endpointcreate.h"
+
+/**
+@SYMTestCaseID GRAPHICS-EGL-0406
+
+@SYMTestPriority 1
+
+@SYMPREQ 2670
+
+@SYMREQ 13245
+
+@SYMTestCaseDesc
+Test the beahviour of eglCreateEndpointNOK and eglDestroyEndpoint with good and bad parameters.
+
+@SYMTestActions
+Create a number of surfaces
+For each test case in a loop
+    *   Send a commands with parameters to the windows server process test render stage to
+        perform operations. These parameters include any error codes which should be
+        generated.  The remote side checks the error code if any, and returns the result to the
+        local side engine (test application), which sets the verdict of the test .
+    *   Log any failures
+If the procedure was successful release all the resources and check the heap for memory leaks.
+No memory or handle leaks.
+
+@SYMTestExpectedResults
+If an error is generated, the value EGL_NO_ENDPOINT_NOK is returned.
+If dpy is not the handle of a valid EGLDisplay object, the error EGL_BAD_DISPLAY is generated.
+If type is not EGL_ENDPOINT_TYPE_CONSUMER_NOK, error EGL_BAD_PARAMETER is generated.
+If source is not a pointer to a valid TSurfaceId, the error EGL_BAD_PARAMETER is generated.
+If source_type is not EGL_TSURFACEID_NOK, the error EGL_BAD_PARAMETER is generated.
+If attrib_list is not NULL or empty, the error EGL_BAD_PARAMETER is generated.
+*/
+
+static const TTestCase KCreatePositiveCases[] =
+{
+    {
+        TESTIDS("541A, 542A"),
+        CASETITLE("Functional: Positive: eglCreateEndpointNOK & eglDestroyEndpointNOK with Valid Parameters: Create and destroy one endpoint"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("541B, 542B"),
+        CASETITLE("Functional: Positive: eglCreateEndpointNOK & eglDestroyEndpointNOK with Valid Parameters: Create and destroy two endpoints, sequential"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 0, EStandardSurface },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("541C, 542C"),
+        CASETITLE("Functional: Positive: eglCreateEndpointNOK & eglDestroyEndpointNOK with Valid Parameters: Create and destroy three endpoints, parallel, destroy in order"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 1, EStandardSurface },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 2, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 0, 0 },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 1, 1 },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 2, 2 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 0, 0 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 1, 1 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 2, 2 },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("541D, 542D"),
+        CASETITLE("Functional: Positive: eglCreateEndpointNOK & eglDestroyEndpointNOK with Valid Parameters: Create and destroy three endpoints, parallel, destroy reverse order"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 1, EStandardSurface },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 2, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 0, 0 },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 1, 1 },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 2, 2 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 2, 2 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 1, 1 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 0, 0 },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("541E, 542E"),
+        CASETITLE("Functional: Positive: eglCreateEndpointNOK & eglDestroyEndpointNOK with Valid Parameters: Create and destroy three endpoints, parallel, destroy out of order"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 1, EStandardSurface },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 2, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 0, 0 },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 1, 1 },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 2, 2 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 2, 2 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 0, 0 },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS, 1, 1 },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("541F"),
+        CASETITLE("Functional: Positive: eglCreateEndpointNOK & eglTerminate with Valid Parameters: Create one endpoint then terminate EGL"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("541G"),
+        CASETITLE("Functional: Positive: eglCreateEndpointNOK & eglTerminate with Valid Parameters: Create three endpoints then terminate EGL"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 1, EStandardSurface },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 2, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 0, 0 },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 1, 1 },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS, 2, 2 },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+static const TTestCase KCreateBadParameterCases[] =
+{
+    {
+        TESTIDS("549A"),
+        CASETITLE("Functional: Negative: eglCreateEndpointNOK with Bad parameters: Create with bad display and various other bad parameters"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  EUseBadDisplay, EGL_BAD_DISPLAY },
+        { ECreateEndpointCase,  EUseBadDisplay | EUseBadEndpointType, EGL_BAD_DISPLAY },
+        { ECreateEndpointCase,  EUseBadDisplay | EUseBadSourceType, EGL_BAD_DISPLAY },
+        { ECreateEndpointCase,  EUseBadDisplay | EUseBadSourceType | EUseBadEndpointType, EGL_BAD_DISPLAY },
+        { ECreateEndpointCase,  EUseBadEndpointType, EGL_BAD_PARAMETER },
+        { ECreateEndpointCase,  EUseBadSourceType, EGL_BAD_PARAMETER },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("549B"),
+        CASETITLE("Functional: Negative: eglCreateEndpointNOK with Bad parameters: Create with bad attributes"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,                EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,                EGL_SUCCESS, 0, EBadAttribSurface },
+        { ECreateEndpointCase,  EUseBadDisplay,   EGL_BAD_DISPLAY },
+        { ECreateEndpointCase,  EUseBadDisplay | EUseBadEndpointType, EGL_BAD_DISPLAY },
+        { ECreateEndpointCase,  EUseBadDisplay | EUseBadSourceType, EGL_BAD_DISPLAY },
+        { ECreateEndpointCase,  EUseBadDisplay | EUseBadSourceType | EUseBadEndpointType, EGL_BAD_DISPLAY },
+        // Now, try with correct parameters aside from the attribute set - this should give us bad parameter.
+        { ECreateEndpointCase,  EExpectError, EGL_BAD_PARAMETER },
+        { ETerminateCase,       0,                EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("549C"),
+        CASETITLE("Functional: Negative: eglCreateEndpointNOK with Bad parameters: Create with bad surfaceid"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+            { EInitializeCase,      0,                EGL_SUCCESS },
+            { ECreateSurfaceCase,   0,                EGL_SUCCESS },
+            // Check that bad display takes precedence over bad surface!
+            { ECreateEndpointCase,  EUseBadDisplay | EUseBadSurfaceId, EGL_BAD_DISPLAY },
+            { ECreateEndpointCase,  EUseBadSurfaceId, EGL_BAD_PARAMETER },
+            // Now create an endpoint to see that nothing got messed up.
+            { ECreateEndpointCase,  0,                EGL_SUCCESS },
+            { EDestroyEndpointCase, 0,                EGL_SUCCESS },
+            { ETerminateCase,       0,                EGL_SUCCESS },
+            { EFinishedCase }
+        }
+    },
+};
+
+// Note that some cases of "destroy" are tested as part of AcquireImage tests - they are
+// borderline between the two functions, e.g. destroy when an image is acquired.
+// Also, destroyendpoint is tested in the streaming tests, for the case where endstreaming
+// is not performed before the destroyendpoint.
+static const TTestCase KCreateNegativeCases[] =
+{
+    {
+        TESTIDS("549D"),
+        CASETITLE("Functional: Negative: eglCreateEndpointNOK with Bad parameters: check that creating an endpoint twice gives correct error"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,                EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,                EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,                EGL_SUCCESS },
+        { ECreateEndpointCase,  EExpectError,     EGL_BAD_PARAMETER },
+        { EDestroyEndpointCase, 0,                EGL_SUCCESS },
+        { ETerminateCase,       0,                EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+static const TTestCase KDestroyBadParameterCases[] =
+{
+    {
+        TESTIDS("550A"),
+        CASETITLE("Functional: Negative: eglDestroyEndpointNOK with Bad parameters: check various trivial bad parameters"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, EUseBadDisplay, EGL_BAD_DISPLAY },
+        { EDestroyEndpointCase, EUseBadDisplay, EGL_BAD_DISPLAY },
+        // Now use bad endpoint WITH bad display - should give bad display.
+        { EDestroyEndpointCase, EUseBadDisplay | EUseBadEndpoint, EGL_BAD_DISPLAY },
+        // And bad endpoint on it's own, should give bad-endpoint.
+        { EDestroyEndpointCase, EUseBadEndpoint, EGL_BAD_ENDPOINT_NOK },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+static const TTestCase KDestroyNegativeCases[] =
+{
+    {
+        TESTIDS("550B"),
+        CASETITLE("Functional: Negative: eglDestroyEndpointNOK with Bad parameters: check that destroying the endpoint twice gives correct error"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,                EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,                EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,                EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,                EGL_SUCCESS },
+        { EDestroyEndpointCase, EExpectError,     EGL_BAD_ENDPOINT_NOK },
+        { ETerminateCase,       0,                EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+
+static const TTestCase KDestroyEndpointClosesAllReferences[] =
+{
+    {
+        TESTIDS("564A"),
+        CASETITLE("Functional: General: eglDestroyEndpoint closes all references: try to begin streaming after destroy endpoint"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  EExpectError,   EGL_BAD_ENDPOINT_NOK },
+        { EAcquireImageCase,    EExpectError,   EGL_BAD_ENDPOINT_NOK },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("564B"),
+        CASETITLE("Functional: General: eglDestroyEndpoint closes all references: try to create vg image from egl image after destroy endpoint"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EAcquireImageCase,    0,              EGL_SUCCESS },
+        { ECompareImageCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ECreateVgImageCase,   EExpectError,   EFalse },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+static const TTestCases KTestCases[] =
+{
+        TestCase(KCreatePositiveCases),
+        TestCase(KCreateBadParameterCases),
+        TestCase(KCreateNegativeCases),
+        // Note: No positive tests for destroy - that is already done as part of
+        // the positive create tests.
+        TestCase(KDestroyBadParameterCases),
+        TestCase(KDestroyNegativeCases),
+        TestCase(KDestroyEndpointClosesAllReferences),
+};
+
+const TInt KNumberTestCases = sizeof(KTestCases) / sizeof(KTestCases[0]);
+
+CEglTest_LocalTestStep_EndpointCreate::CEglTest_LocalTestStep_EndpointCreate():
+    CEgltest_Local_Engine(KTestCases, KNumberTestCases)
+    {
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointdirtyarea.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,146 @@
+// Copyright (c) 2010 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:
+// Testing of eglEndpointDirtyAreaNOK functionality.
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "egltest_endpointdirtyarea.h"
+
+static const TTestCase KDirtyAreaPositiveCases[] =
+{
+    {
+        TESTIDS("614"),
+        CASETITLE("Functional: Postive: eglGetEndpointDirtyArea basic test."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,           0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,        0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,       0,              EGL_SUCCESS },
+        { EDrawContentCase,          0,              EGL_SUCCESS },
+        { EContentUpdateCase,        0,              EGL_SUCCESS },
+        { EBeginStreamingCase,       0,              EGL_SUCCESS },
+        { EAcquireImageCase,         0,              EGL_SUCCESS },
+        { EGetEndpointDirtyAreaCase, 0,              EGL_SUCCESS, 0, 0, 0, 1 },
+        { EReleaseImageCase,         0,              EGL_SUCCESS },
+        { EDestroyEndpointCase,      0,              EGL_SUCCESS },
+        { ETerminateCase,            0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("615"),
+        CASETITLE("Functional: Postive: eglGetEndpointDirtyArea simple working test - collapse area."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,           0,                EGL_SUCCESS },
+        { ECreateSurfaceCase,        0,                EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,       0,                EGL_SUCCESS },
+        { EDrawContentCase,          0,                EGL_SUCCESS },
+        { EContentUpdateCase,        0,                EGL_SUCCESS },
+        { EBeginStreamingCase,       0,                EGL_SUCCESS },
+        { EAcquireImageCase,         0,                EGL_SUCCESS },
+        { EGetEndpointDirtyAreaCase, EUseCollapseArea, EGL_SUCCESS, 0, 0, 0, 2 },
+        { EReleaseImageCase,         0,                EGL_SUCCESS },
+        { EDestroyEndpointCase,      0,                EGL_SUCCESS },
+        { ETerminateCase,            0,                EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("617"),
+        CASETITLE("Functional: Postive: eglGetEndpointDirtyArea - check number of rects avialable"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,           0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,        0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,       0,              EGL_SUCCESS },
+        { EDrawContentCase,          0,              EGL_SUCCESS },
+        { EContentUpdateCase,        0,              EGL_SUCCESS },
+        { EBeginStreamingCase,       0,              EGL_SUCCESS },
+        { EAcquireImageCase,         0,              EGL_SUCCESS },
+        { EGetEndpointDirtyAreaCase, EUseNullRects,  EGL_SUCCESS, 0, 0, 0, 0 },
+        { EReleaseImageCase,         0,              EGL_SUCCESS },
+        { EDestroyEndpointCase,      0,              EGL_SUCCESS },
+        { ETerminateCase,            0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+static const TTestCase KDirtyAreaNegativeCases[] =
+{
+    {
+        TESTIDS("616"),
+        CASETITLE("Functional: Negative: eglRequestNotification bad parameter test."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,           0,                    EGL_SUCCESS },
+        { ECreateSurfaceCase,        0,                    EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,       0,                    EGL_SUCCESS },
+        { EDrawContentCase,          0,                    EGL_SUCCESS },
+        { EContentUpdateCase,        0,                    EGL_SUCCESS },
+        { EBeginStreamingCase,       0,                    EGL_SUCCESS },
+        { EAcquireImageCase,         0,                    EGL_SUCCESS },
+        // Bad display
+        { EGetEndpointDirtyAreaCase, EUseBadDisplay,       EGL_BAD_DISPLAY },
+        { EGetEndpointDirtyAreaCase, EUseBadDisplay | EUseBadEndpoint, EGL_BAD_DISPLAY },
+        { EGetEndpointDirtyAreaCase, EUseBadDisplay | EUseBadRects, EGL_BAD_DISPLAY },
+        { EGetEndpointDirtyAreaCase, EUseBadDisplay | EUseBadEndpoint | EUseBadRects, EGL_BAD_DISPLAY },
+        { EGetEndpointDirtyAreaCase, EUseBadEndpoint,      EGL_BAD_ENDPOINT_NOK },
+        { EGetEndpointDirtyAreaCase, EUseBadRects,         EGL_BAD_PARAMETER, 0, 0, 0, 1 },
+        // All zeros, but not NULL rects -> bad parameter error.
+        { EGetEndpointDirtyAreaCase, EExpectError,         EGL_BAD_PARAMETER, 0, 0, 0, 0 },
+        { EDestroyEndpointCase, 0,                         EGL_SUCCESS },
+        { ETerminateCase,       0,                         EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("618"),
+        CASETITLE("Functional: Negative: eglRequestNotification no acquired image."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,           0,                    EGL_SUCCESS },
+        { ECreateSurfaceCase,        0,                    EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,       0,                    EGL_SUCCESS },
+        { EDrawContentCase,          0,                    EGL_SUCCESS },
+        { EContentUpdateCase,        0,                    EGL_SUCCESS },
+        { EBeginStreamingCase,       0,                    EGL_SUCCESS },
+        { EGetEndpointDirtyAreaCase, EExpectError,         EGL_BAD_ACCESS, 0, 0, 0, 1 },
+        { EGetEndpointDirtyAreaCase, EUseNullRects|EExpectError, EGL_BAD_ACCESS, 0, 0, 0, 0 },
+        { EDestroyEndpointCase, 0,                         EGL_SUCCESS },
+        { ETerminateCase,       0,                         EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+
+};
+
+
+static const TTestCases KTestCases[] =
+{
+        TestCase(KDirtyAreaPositiveCases),
+        TestCase(KDirtyAreaNegativeCases),
+};
+
+const TInt KNumberTestCases = sizeof(KTestCases) / sizeof(KTestCases[0]);
+
+CEglTest_LocalTestStep_EndpointDirtyArea::CEglTest_LocalTestStep_EndpointDirtyArea():
+    CEgltest_Local_Engine(KTestCases, KNumberTestCases)
+    {
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointimage_local.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,536 @@
+// Copyright (c) 2009-2010 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "egltest_endpointimage.h"
+
+
+static const TTestCase KImagePositiveCases[] =
+{
+    {
+        TESTIDS("565A"),
+        CASETITLE("Functional: Positive: Image content preservation with single update"),
+        // TODO: Add video- and viewfinder surfaces.
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("566A"),
+        CASETITLE("Functional: Positive: Image content preservation with multiple updates"),
+        // TODO: Add video- and viewfinder surfaces.
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeRawSingleBuffered, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        // Draw and compare four times.
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+
+        { EDrawContentCase,     0, EGL_SUCCESS, 0, 1 },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 1 },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+
+        { EDrawContentCase,     0, EGL_SUCCESS, 0, 1 },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 1 },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("567A"),
+        CASETITLE("Functional: Positive: Image content preservation in multiple endpoints with single update"),
+        // TODO: Add video- and viewfinder surfaces.
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeRawSingleBuffered, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 1, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS, 0, 0 },
+        { ECreateEndpointCase,  0, EGL_SUCCESS, 1, 1 },
+        // Draw and compare four times.
+        { EDrawContentCase,     0, EGL_SUCCESS, 0, 0 },
+        { EDrawContentCase,     0, EGL_SUCCESS, 1, 1 },
+        { EContentUpdateCase,   0, EGL_SUCCESS, 0 },
+        { EContentUpdateCase,   0, EGL_SUCCESS, 1 },
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 0 },
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 1 },
+
+        { EAcquireImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 0},
+        { ECompareImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 1, 1 },
+
+        { EAcquireImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 0},
+        { ECompareImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 1, 1 },
+
+        { EAcquireImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { ECompareImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 0, 0 },
+
+        { EAcquireImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { ECompareImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 0},
+        { EReleaseImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 1, 1 },
+
+        { EEndStreamingCase,    0, EGL_SUCCESS, 0 },
+        { EEndStreamingCase,    0, EGL_SUCCESS, 1 },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS, 0 },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS, 1 },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("567B"),
+        CASETITLE("Functional: Positive: Image content preservation in multiple endpoints with multiple updates"),
+        // TODO: Add video- and viewfinder surfaces.
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeRawSingleBuffered, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 1, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS, 0, 0 },
+        { ECreateEndpointCase,  0, EGL_SUCCESS, 1, 1 },
+        // Draw and compare four times.
+        { EDrawContentCase,     0, EGL_SUCCESS, 0, 0 },
+        { EDrawContentCase,     0, EGL_SUCCESS, 1, 1 },
+        { EContentUpdateCase,   0, EGL_SUCCESS, 0 },
+        { EContentUpdateCase,   0, EGL_SUCCESS, 1 },
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 0 },
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 1 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 0},
+        { ECompareImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 1, 1 },
+
+        { EDrawContentCase,     0, EGL_SUCCESS, 0, 2 },
+        { EDrawContentCase,     0, EGL_SUCCESS, 1, 3 },
+        { EContentUpdateCase,   0, EGL_SUCCESS, 0 },
+        { EContentUpdateCase,   0, EGL_SUCCESS, 1 },
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 0 },
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 1 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 2},
+        { ECompareImageCase,    0, EGL_SUCCESS, 1, 3 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 1, 1 },
+
+        { EDrawContentCase,     0, EGL_SUCCESS, 0, 0 },
+        { EDrawContentCase,     0, EGL_SUCCESS, 1, 1 },
+        { EContentUpdateCase,   0, EGL_SUCCESS, 0 },
+        { EContentUpdateCase,   0, EGL_SUCCESS, 1 },
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 0 },
+        { EBeginStreamingCase,  0, EGL_SUCCESS, 1 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EAcquireImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 0},
+        { ECompareImageCase,    0, EGL_SUCCESS, 1, 1 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 0, 0 },
+        { EReleaseImageCase,    0, EGL_SUCCESS, 1, 1 },
+
+        { EEndStreamingCase,    0, EGL_SUCCESS, 0 },
+        { EEndStreamingCase,    0, EGL_SUCCESS, 1 },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS, 0 },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS, 1 },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+	//569 tests cause a panic
+    {
+        TESTIDS("569A"),
+        CASETITLE("Functional: Positive: VGImage handle remains valid after EGLImage goes out of scope"),
+        // TODO: Add video- and viewfinder surfaces.
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeRawSingleBuffered, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECreateVgImageCase,   0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETestVgImageValidCase, 0, EGL_SUCCESS },
+        { EDestroyVgImageCase,  0, EGL_SUCCESS },
+        { ECreateVgImageCase,   EExpectError, VG_BAD_HANDLE_ERROR },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        }
+    },
+    {
+        TESTIDS("569B"),
+        CASETITLE("Functional: Positive: VGImage handle remains valid after EGLImage goes out of scope"),
+        // TODO: Add video- and viewfinder surfaces.
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeRawSingleBuffered, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECreateVgImageCase,   0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { ETestVgImageValidCase,     0, EGL_SUCCESS },
+        { EDestroyVgImageCase,  0, EGL_SUCCESS },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ECreateVgImageCase,   EExpectError, VG_BAD_HANDLE_ERROR },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        }
+    },
+    {
+        TESTIDS("569C"),
+        CASETITLE("Functional: Positive: VGImage handle remains valid after EGLImage goes out of scope"),
+        // TODO: Add video- and viewfinder surfaces.
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeRawSingleBuffered, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECreateVgImageCase,   0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { ETestVgImageValidCase,     0, EGL_SUCCESS },
+        { EDestroyVgImageCase,  0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ECreateVgImageCase,   EExpectError, VG_BAD_HANDLE_ERROR },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        }
+    },
+    {
+        TESTIDS("569D"),
+        CASETITLE("Functional: Positive: VGImage handle remains valid after EGLImage goes out of scope with two VG images"),
+        // TODO: Add video- and viewfinder surfaces.
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeRawSingleBuffered, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,       0, EGL_SUCCESS },
+        { ECreateSurfaceCase,    0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,   0, EGL_SUCCESS },
+        { EDrawContentCase,      0, EGL_SUCCESS },
+        { EContentUpdateCase,    0, EGL_SUCCESS },
+        { EBeginStreamingCase,   0, EGL_SUCCESS },
+        { EAcquireImageCase,     0, EGL_SUCCESS },
+        { ECreateVgImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,     0, EGL_SUCCESS },
+        { EDrawContentCase,      0, EGL_SUCCESS, 0, 1 },
+        { EContentUpdateCase,    0, EGL_SUCCESS },
+        { EAcquireImageCase,     0, EGL_SUCCESS },
+        { ECreateVgImageCase,    0, EGL_SUCCESS, 0, 1 },
+        { EEndStreamingCase,     0, EGL_SUCCESS },
+        { ETestVgImageValidCase, 0, EGL_SUCCESS },
+        { ETestVgImageValidCase, 0, EGL_SUCCESS, 0, 1 },
+        { EDestroyVgImageCase,   0, EGL_SUCCESS },
+        { EDestroyVgImageCase,   0, EGL_SUCCESS, 0, 1 },
+        { EDestroyEndpointCase,  0, EGL_SUCCESS },
+        { ECreateVgImageCase,    EExpectError, VG_BAD_HANDLE_ERROR },
+        { ETerminateCase,        0, EGL_SUCCESS },
+        { EFinishedCase }
+        }
+    },
+    {
+        TESTIDS("569E"),
+        CASETITLE("Functional: Positive: VGImage handle remains valid after EGLImage goes out of scope with two VG images"),
+        // TODO: Add video- and viewfinder surfaces.
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeRawSingleBuffered, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,       0, EGL_SUCCESS },
+        { ECreateSurfaceCase,    0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,   0, EGL_SUCCESS },
+        { EDrawContentCase,      0, EGL_SUCCESS },
+        { EContentUpdateCase,    0, EGL_SUCCESS },
+        { EBeginStreamingCase,   0, EGL_SUCCESS },
+        { EAcquireImageCase,     0, EGL_SUCCESS },
+        { ECreateVgImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,     0, EGL_SUCCESS },
+        { EDrawContentCase,      0, EGL_SUCCESS, 0, 1 },
+        { EContentUpdateCase,    0, EGL_SUCCESS },
+        { EAcquireImageCase,     0, EGL_SUCCESS },
+        { ECreateVgImageCase,    0, EGL_SUCCESS, 0, 1 },
+        { EEndStreamingCase,     0, EGL_SUCCESS },
+        { EDestroyEndpointCase,  0, EGL_SUCCESS },
+        { ETestVgImageValidCase, 0, EGL_SUCCESS },
+        { ETestVgImageValidCase, 0, EGL_SUCCESS, 0, 1 },
+        { EDestroyVgImageCase,   0, EGL_SUCCESS },
+        { EDestroyVgImageCase,   0, EGL_SUCCESS, 0, 1 },
+        { ECreateVgImageCase,    EExpectError, VG_BAD_HANDLE_ERROR },
+        { ETerminateCase,        0, EGL_SUCCESS },
+        { EFinishedCase }
+        }
+    },
+    {
+        TESTIDS("569F"),
+        CASETITLE("Functional: Positive: VGImage handle remains valid after EGLImage goes out of scope with two VG images"),
+        // TODO: Add video- and viewfinder surfaces.
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeRawSingleBuffered, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,       0, EGL_SUCCESS },
+        { ECreateSurfaceCase,    0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,   0, EGL_SUCCESS },
+        { EDrawContentCase,      0, EGL_SUCCESS },
+        { EContentUpdateCase,    0, EGL_SUCCESS },
+        { EBeginStreamingCase,   0, EGL_SUCCESS },
+        { EAcquireImageCase,     0, EGL_SUCCESS },
+        { ECreateVgImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,     0, EGL_SUCCESS },
+        { EDrawContentCase,      0, EGL_SUCCESS, 0, 1 },
+        { EContentUpdateCase,    0, EGL_SUCCESS },
+        { EAcquireImageCase,     0, EGL_SUCCESS },
+        { ECreateVgImageCase,    0, EGL_SUCCESS, 0, 1 },
+        { EEndStreamingCase,     0, EGL_SUCCESS },
+        { ETestVgImageValidCase, 0, EGL_SUCCESS },
+        { EDestroyVgImageCase,   0, EGL_SUCCESS },
+        { EDestroyEndpointCase,  0, EGL_SUCCESS },
+        { ETestVgImageValidCase, 0, EGL_SUCCESS, 0, 1 },
+        { EDestroyVgImageCase,   0, EGL_SUCCESS, 0, 1 },
+        { ECreateVgImageCase,    EExpectError, VG_BAD_HANDLE_ERROR },
+        { ETerminateCase,        0, EGL_SUCCESS },
+        { EFinishedCase }
+        }
+    },
+    {
+        TESTIDS("570"),
+        CASETITLE("Functional: Positive: Acquired EGLImage is not corrupted by submitting new content to surface"),
+        // TODO: Add triple buffered, video- and viewfinder surfaces.
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeEglWindow),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EDrawContentCase,     0, EGL_SUCCESS, 0, 1 },
+        { EContentUpdateCase,   ENoSync, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS, 0, 1 },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+
+        { EEndStreamingCase,    0, EGL_SUCCESS, 0 },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS, 0 },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+
+static const TTestCases KTestCases[] =
+{
+        TestCase(KImagePositiveCases),
+};
+
+const TInt KNumberTestCases = sizeof(KTestCases) / sizeof(KTestCases[0]);
+
+
+CEglTest_LocalTestStep_EndpointImage::CEglTest_LocalTestStep_EndpointImage():
+    CEgltest_Local_Engine(KTestCases, KNumberTestCases)
+    {
+    }
+
+
+// Class for lifetime testing - we need to create another process and use endpoints from that process...
+_LIT(KEglEndpointLifetimeExe, "eglendpointlifetimetesthelper.exe");
+
+
+CEglTest_LocalTestStep_EndpointImageLifetime::CEglTest_LocalTestStep_EndpointImageLifetime()
+: CLocalTestStepBase(ETestUidEndpointEngine)  // We use the engine to do the remote side functionality.
+    {
+    }
+
+void CEglTest_LocalTestStep_EndpointImageLifetime::DoPreambleL()
+    {
+    //Register the test id.
+    _LIT(KTestId, "568");
+    RegisterTestIdsL(KTestId);
+    SetCurrentTestIds(KTestId);
+    
+    TInt err= iProcessResultInQueue.CreateGlobal(KResultProcessQueueName, 5);
+    User::LeaveIfError(err);
+    err = iProcessParamsOutQueue.CreateGlobal(KParamsProcessQueueName, 1);
+    User::LeaveIfError(err);
+    }
+
+
+void CEglTest_LocalTestStep_EndpointImageLifetime::DoPostambleL()
+    {
+    iProcessResultInQueue.Close();
+    iProcessParamsOutQueue.Close();
+    }
+
+CEglTest_LocalTestStep_EndpointImageLifetime::~CEglTest_LocalTestStep_EndpointImageLifetime()
+    {
+    iProcessResultInQueue.Close();
+    iProcessParamsOutQueue.Close();
+    }
+
+void CEglTest_LocalTestStep_EndpointImageLifetime::RunScript(
+        const TEngineTestCase *aTestCases,
+        TRemoteTestParams &params)
+    {
+    for(TInt i = 0; aTestCases[i].iCase != EFinishedCase; i++)
+        {
+        params.iEndpointEngine.iEngineTestCase = aTestCases[i];
+        RunRemoteTestCase(aTestCases[i].iCase, params);
+        }
+    }
+
+void CEglTest_LocalTestStep_EndpointImageLifetime::EndpointLifetimeTestL(TSurfaceType aSurfaceType, TInt aExitType)
+    {
+    // Create an external process that creates a surface.
+    TInt err = iProcessStatus.iProcess.Create(KEglEndpointLifetimeExe, KNullDesC);
+    User::LeaveIfError(err);
+    iProcessStatus.iProcess.Logon(iProcessStatus.iStatus);
+    iProcessStatus.iProcess.Resume();
+
+
+    iProcessResultInQueue.SendBlocking(aSurfaceType);
+
+    TSurfaceId id;
+    iProcessParamsOutQueue.ReceiveBlocking(id);
+    // Now perform a bit of engine stuff...
+
+    TRemoteTestParams params = {};
+
+    params.iEndpointEngine.iSurfaceParams.iSurfaceId = id;
+
+    static const TEngineTestCase createEndpointSteps[] =
+    {
+        { EInitializeCase,     0, EGL_SUCCESS },
+        { ECreateEndpointCase, 0, EGL_SUCCESS },
+        { EFinishedCase,       0, EGL_SUCCESS },
+    };
+
+    RunScript(createEndpointSteps, params);
+
+    // Now that we have an endpoint, we can continue the other process.
+    iProcessResultInQueue.SendBlocking(aExitType);
+
+    User::WaitForRequest(iProcessStatus.iStatus);
+
+    INFO_PRINTF2(_L("External Process finished with status = %d"), iProcessStatus.iStatus.Int());
+
+    // Check the endpoint content.
+    static const TEngineTestCase checkEndpointSteps[] =
+    {
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EAcquireImageCase,    0, EGL_SUCCESS },
+        { ECompareImageCase,    0, EGL_SUCCESS },
+        { EReleaseImageCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { EFinishedCase,        0, EGL_SUCCESS },
+    };
+
+    RunScript(checkEndpointSteps, params);
+    }
+
+TVerdict CEglTest_LocalTestStep_EndpointImageLifetime::doTestStepL()
+    {
+    static const TRemoteTestParams nullParams = {};
+    StartRemoteTestStep(nullParams);
+
+    TSurfaceType surfaceTypes[] = { ESurfTypeEglWindow, ESurfTypeRaw, ESurfTypeRawSingleBuffered };
+    for(TInt i = 0; i < sizeof(surfaceTypes) / sizeof(surfaceTypes[0]); i++)
+        {
+        TSurfaceType sType = surfaceTypes[i];
+        EndpointLifetimeTestL(sType, EEndpointLifetimeNormalExit);
+        EndpointLifetimeTestL(sType, EEnfpointLifetimePanicExit);
+        }
+
+    EndRemoteTestStep(nullParams);
+    INFO_PRINTF1(_L("Lifetime test finished"));
+    return TestStepResult();
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointimagelifetime.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,153 @@
+// Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "egltest_endpointimage.h"
+#include "egltest_surface.h"
+#include "egltest_endpoint_util.h"
+
+CEglTest_LocalTestStep_EndpointImageLifetimeProcess::CEglTest_LocalTestStep_EndpointImageLifetimeProcess()
+    {
+    TRAPD(err, TEndpointUtil::SetLoggerForProcessWrapperL(Logger()));
+    if (err != KErrNone)
+        {
+        RDebug::Printf("Logging is not set up... Err = %d. Panicking...", err);
+        ENGINE_ASSERT(0);
+        }
+    }
+
+
+//function used for creating the queues.
+TVerdict CEglTest_LocalTestStep_EndpointImageLifetimeProcess::doTestStepPreambleL()
+    {
+    //Open the queues.
+    User::LeaveIfError(iResultOutQueue.OpenGlobal(KResultProcessQueueName));
+    User::LeaveIfError(iParamsInQueue.OpenGlobal(KParamsProcessQueueName));
+    SetTestStepResult(EPass);
+    return EPass;
+    }
+
+TVerdict CEglTest_LocalTestStep_EndpointImageLifetimeProcess::doTestStepPostambleL()
+    {
+    iResultOutQueue.Close();
+    iParamsInQueue.Close();
+    return EPass;
+    }
+
+CEglTest_LocalTestStep_EndpointImageLifetimeProcess::~CEglTest_LocalTestStep_EndpointImageLifetimeProcess()
+    {
+    //closing an already closed handle is harmless
+    iResultOutQueue.Close();
+    iParamsInQueue.Close();
+    }
+
+
+TVerdict CEglTest_LocalTestStep_EndpointImageLifetimeProcess::doTestStepL()
+    {
+    EGLDisplay dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+
+    if (!eglInitialize(dpy, NULL, NULL))
+        {
+        INFO_PRINTF2(_L("EglInitialize failed, error %x"), eglGetError());
+        User::Leave(KErrNotFound);
+        }
+
+    TInt surfType;
+    iResultOutQueue.ReceiveBlocking(surfType);
+
+    CSurface *surface = CSurface::SurfaceFactoryL(static_cast<TSurfaceType>(surfType));
+    CleanupStack::PushL(surface);
+
+    surface->CreateL(EStandardSurface);
+    INFO_PRINTF2(_L("Using surface type %s"), surface->GetSurfaceTypeStr());
+    TSurfaceId id = surface->SurfaceId();
+    iParamsInQueue.SendBlocking(id);
+
+    TInt result;
+    iResultOutQueue.ReceiveBlocking(result);
+
+    // Draw something.
+    surface->DrawContentL(0);
+    surface->SubmitContentL(EFalse);
+
+    if (result)
+        {
+        User::Panic(_L("Expected Panic"), 1);
+        }
+
+    eglTerminate(dpy);
+    eglReleaseThread();
+    CleanupStack::PopAndDestroy(surface);
+    return EPass;
+    }
+
+
+// static
+void CEglTest_LocalTestStep_EndpointImageLifetimeProcess::MainL()
+    {
+#ifdef __WINS__
+    // Construct and destroy a process-wide state object in emulator builds.
+    // This will cause initialisation of PLS for EGL and SgDriver
+    // and allow checking for leaks in tests
+    eglReleaseThread();
+#endif //__WINS__
+
+    // Create test step and perform CTestStep style initialisation (e.g. logging)
+    CEglTest_LocalTestStep_EndpointImageLifetimeProcess* testStep = new CEglTest_LocalTestStep_EndpointImageLifetimeProcess();
+    if (testStep == NULL)
+        {
+        User::Leave(KErrNotFound);
+        }
+    CleanupStack::PushL(testStep);
+
+    // perform CTestStep pre-amble
+    User::LeaveIfError(testStep->doTestStepPreambleL());
+
+    testStep->doTestStepL();
+    // perform CTestStep post-amble
+    User::LeaveIfError(testStep->doTestStepPostambleL());
+
+    //clean-up
+    CleanupStack::PopAndDestroy(testStep);
+    }
+
+
+GLDEF_C TInt E32Main()
+    {
+    //When EGL Logging is enabled this causes a file server session to be allocated
+    //Which needs to be done before any allocation checks otherwise the test will fail
+    eglReleaseThread();
+
+    __UHEAP_MARK;
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+    if(cleanup == NULL)
+        {
+        return KErrNoMemory;
+        }
+
+    TRAPD(err, CEglTest_LocalTestStep_EndpointImageLifetimeProcess::MainL());
+
+    delete cleanup;
+    __UHEAP_MARKEND;
+
+    return err;
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointlocking_local.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,209 @@
+/*
+* Copyright (c) 2010 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
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "egltest_endpointlocking.h"
+
+/**
+@SYMTestCaseID GRAPHICS-EGL-057x
+
+@SYMTestPriority 2
+
+@SYMPREQ 2670
+
+@SYMREQ
+
+@SYMTestCaseDesc
+Testing if the implementation exhibits correct locking behaviour in multiple buffer surface cases.
+
+@SYMTestActions
+Create a number of surfaces
+For each test case in a loop
+    *   start the test in the remote windows server side to create endpoints
+    *   in the client side call a surface update on any surface which should have the ready
+        attribute set
+    *   Send commands with parameters to the windows server process test render stage to
+        begin/end streaming on an end point. These parameters include any error codes which
+        is expected.
+    *   Log any failures
+If the procedure was successful release all the resources and check the heap for memory leaks.
+No memory or handle leaks.
+
+@SYMTestExpectedResults
+If the function fails, the return value is undefined and an error is generated.
+If endpoint is not a valid EGLEndpointNOK object, the error EGL_BAD_ENDPOINT_NOK is
+generated for both BeginStreaming and EndStreaming.
+If there is a timeout expected from a wait function then KErrTimedOut is received instead
+of a valid notification.
+*/
+
+static const TTestCase KLockingMultibufferCases[] =
+{
+    {
+        TESTIDS("571"),
+        CASETITLE("Functional Locking: Multiple Buffers: Surface Update Server Basic Notifications"),
+        SurfaceTypes1(ESurfTypeRaw),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { ESetAttribCase,       0,              EGL_SUCCESS,  0, 0, EGL_DELAY_NOK, 50000 }, //50ms delay
+        { ENotifyWhenCase,      0,              KErrNone,     0, ENotifyWhenAvailable },
+        { EContentUpdateCase,   ENoWait,        EGL_SUCCESS },
+        { EAcquireImageCase,    0,              EGL_SUCCESS },
+        { EWaitForCase,         0,              KErrTimedOut,     0, ENotifyWhenAvailable, 100000, 50000 }, //100 ms timeout, timestamp not used
+        { EReleaseImageCase,    0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EAcquireImageCase,    0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EWaitForCase,         0,              KErrNone,     0, ENotifyWhenAvailable, 100000, 50000 }, //100 ms timeout, timestamp not used
+        { EReleaseImageCase,    0,              EGL_SUCCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("575"),
+        CASETITLE("Functional Locking: Multiple Buffers: Update Server Notifications with eglEndpointEndStreamingNOK"),
+        SurfaceTypes1(ESurfTypeRaw),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { ESetAttribCase,       0,              EGL_SUCCESS,  0, 0, EGL_DELAY_NOK, 50000 }, //50ms delay
+        { ENotifyWhenCase,      0,              KErrNone,     0, ENotifyWhenAvailable },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EAcquireImageCase,    0,              EGL_SUCCESS },
+        { EWaitForCase,         0,              KErrTimedOut,     0, ENotifyWhenAvailable, 100000, 50000 }, //100 ms timeout, timestamp not used
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EWaitForCase,         0,              KErrNone,     0, ENotifyWhenAvailable, 100000, 50000 }, //100 ms timeout, timestamp not used
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("611"),
+        CASETITLE("Functional Locking: Update Server Notifications with acquire and release"),
+        SurfaceTypes1(ESurfTypeRaw),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { ESetAttribCase,       0,              EGL_SUCCESS,  0, 0, EGL_DELAY_NOK, 50000 }, //50ms delay
+        { ENotifyWhenCase,      0,              KErrNone,     0, ENotifyWhenAvailable },
+        { EContentUpdateCase,   ENoWait,        EGL_SUCCESS },
+        { EAcquireImageCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { EWaitForCase,         0,              KErrNone,     0, ENotifyWhenAvailable, 100000, 50000 }, //100 ms timeout, timestamp not used
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("576"),
+        CASETITLE("Functional Locking: Multiple Buffers: Update Server Notifications with eglDestroyEndpointNOK"),
+        SurfaceTypes1(ESurfTypeRaw),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { ESetAttribCase,       0,              EGL_SUCCESS,  0, 0, EGL_DELAY_NOK, 50000 }, //50ms delay
+        { ENotifyWhenCase,      0,              KErrNone,     0, ENotifyWhenAvailable },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EAcquireImageCase,    0,              EGL_SUCCESS },
+        { EWaitForCase,         0,              KErrTimedOut,     0, ENotifyWhenAvailable, 100000, 50000 }, //100 ms timeout, timestamp not used
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { EWaitForCase,         0,              KErrNone,     0, ENotifyWhenAvailable, 100000, 50000 }, //100 ms timeout, timestamp not used
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("577"),
+        CASETITLE("Functional Locking: Multiple Buffer: DestroyEndpoint results in EndStreaming if in streaming mode."),
+        SurfaceTypes1(ESurfTypeRaw),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EContentUpdateCase,   ENoWait,        EGL_SUCCESS },
+        { EAcquireImageCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { EGetAttribCase,       EExpectError,   EGL_BAD_ENDPOINT_NOK, 0, 0, EGL_ENDPOINT_READY_NOK, EGL_FALSE},
+        { EEndStreamingCase,    EExpectError,   EGL_BAD_ENDPOINT_NOK },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("578"),
+        CASETITLE("Functional Locking: Multiple Buffers: Destroy Endpoint results in ReleaseImage"),
+        SurfaceTypes1(ESurfTypeRaw),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EContentUpdateCase,   ENoWait,        EGL_SUCCESS },
+        { EAcquireImageCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ECreateVgImageCase,   EExpectError,   EFalse},
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+
+static const TTestCases KTestCases[] =
+{
+    TestCase(KLockingMultibufferCases),
+};
+
+const TInt KNumberTestCases = sizeof(KTestCases) / sizeof(KTestCases[0]);
+
+CEglTest_LocalTestStep_EndpointLocking::CEglTest_LocalTestStep_EndpointLocking():
+    CEgltest_Local_Engine(KTestCases, KNumberTestCases)
+    {
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointnotification.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,294 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "egltest_endpointnotification.h"
+
+static const TTestCase KNotifcationPositiveCases[] =
+{
+    {
+        TESTIDS("559,561"),
+        CASETITLE("Functional: Positive: eglRequestNotification basic test."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { ERequestNotificationCase, 0,          EGL_SUCCESS },
+        { ECancelNotificationCase, 0,           EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("604"),
+        CASETITLE("Functional: Positive: eglRequestNotification with submitupdate."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,          0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS },
+        { EDrawContentCase,         0,              EGL_SUCCESS },
+        { EContentUpdateCase,       0,              EGL_SUCCESS },
+        { EWaitForNotificationCase, 0,              KErrNone,    0, 0, 100000 },
+        { ECancelNotificationCase,  0,              EGL_SUCCESS },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS },
+        { ETerminateCase,           0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("605"),
+        CASETITLE("Functional: Positive: eglRequestNotification with no submitupdate."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,          0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS,  0, EStandardSurface },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS },
+        { EWaitForNotificationCase, EExpectError,   KErrTimedOut, 0, 0, 100000 },
+        { ECancelNotificationCase,  0,              EGL_SUCCESS },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS },
+        { ETerminateCase,           0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("606"),
+        CASETITLE("Functional: Positive: eglRequestNotification with submitupdate first."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,          0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS },
+        { EDrawContentCase,         0,              EGL_SUCCESS },
+        { EContentUpdateCase,       0,              EGL_SUCCESS },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS },
+        { EWaitForNotificationCase, 0,              KErrNone,    0, 0, 100000 },
+        { ECancelNotificationCase,  0,              EGL_SUCCESS },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS },
+        { ETerminateCase,           0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("607A"),
+        CASETITLE("Functional: Positive: eglRequestNotification with multiple endpoints."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,          0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS,  0, EStandardSurface },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS,  1, EStandardSurface },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS,  0, 0 },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS,  1, 1},
+        { EDrawContentCase,         0,              EGL_SUCCESS,  0, 0 },
+        { EContentUpdateCase,       0,              EGL_SUCCESS,  0, 0 },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS,  0, 0 },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS,  1, 1 },
+        { EWaitForNotificationCase, 0,              KErrNone,     0, 0, 100000 },
+        { EWaitForNotificationCase, EExpectError,   KErrTimedOut, 1, 1, 100000 },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS,  0, 0 },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS,  1, 1 },
+        { ETerminateCase,           0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("607B"),
+        CASETITLE("Functional: Positive: Three endpoints, varying async notifications."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,          0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS,  0, EStandardSurface },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS,  1, EStandardSurface },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS,  2, EStandardSurface },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS,  0, 0 },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS,  1, 1},
+        { ECreateEndpointCase,      0,              EGL_SUCCESS,  2, 2},
+        { ERequestNotificationCase, 0,              EGL_SUCCESS,  0, 0 },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS,  1, 1 },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS,  2, 2 },
+        { EDrawContentCase,         0,              EGL_SUCCESS,  1, 1 },
+        { EContentUpdateCase,       0,              EGL_SUCCESS,  1, 1 },
+        { EWaitForNotificationCase, 0,              KErrNone,     1, 1, 100000 },
+        { EWaitForNotificationCase, EExpectError,   KErrTimedOut, 0, 0, 100000 },
+        { EWaitForNotificationCase, EExpectError,   KErrTimedOut, 2, 2, 100000 },
+        { EDrawContentCase,         0,              EGL_SUCCESS,  2, 2 },
+        { EContentUpdateCase,       0,              EGL_SUCCESS,  2, 2 },
+        { EWaitForNotificationCase, 0,              KErrNone,     2, 2, 100000 },
+        { EWaitForNotificationCase, EExpectError,   KErrTimedOut, 0, 0, 100000 },
+        { EWaitForNotificationCase, EExpectError,   KErrTimedOut, 1, 1, 100000 },
+        { ECancelNotificationCase,  0,              EGL_SUCCESS,  0, 0 },
+        { EWaitForNotificationCase, EExpectError,   KErrCancel,   0, 0, 10000 },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS,  0, 0 },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS,  1, 1 },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS,  2, 2 },
+        { ETerminateCase,           0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("608"),
+        CASETITLE("Functional: Positive: Multiple eglRequestNotification with no acquire."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,          0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS },
+        { EDrawContentCase,         0,              EGL_SUCCESS },
+        { EContentUpdateCase,       0,              EGL_SUCCESS },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS },
+        { EWaitForNotificationCase, 0,              KErrNone,    0, 0, 100000 },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS },
+        { EWaitForNotificationCase, 0,              KErrNone,    0, 0, 100000 },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS },
+        { ETerminateCase,           0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("609"),
+        CASETITLE("Functional: Positive: Notifications need submitupdate after acquire."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,          0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS },
+        { EDrawContentCase,         0,              EGL_SUCCESS },
+        { EContentUpdateCase,       0,              EGL_SUCCESS },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS },
+        { EWaitForNotificationCase, 0,              KErrNone,   0, 0, 100000 },
+        { EBeginStreamingCase,      0,              EGL_SUCCESS },
+        { EAcquireImageCase,        0,              EGL_SUCCESS },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS },
+        { EWaitForNotificationCase, EExpectError,   KErrTimedOut,0, 0, 100000 },
+        { EContentUpdateCase,       ENoSync,        EGL_SUCCESS },
+        { EWaitForNotificationCase, 0,              KErrNone,    0, 0, 100000 },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS },
+        { ETerminateCase,           0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("610"),
+        CASETITLE("Functional: Positive: Destroy Endpoint acts as eglCancelNotificationNOK."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,          0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS },
+        { EWaitForNotificationCase, EExpectError,   KErrCancel, 0, 0, 100000 },
+        { ETerminateCase,           0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("612"),
+        CASETITLE("Functional: Positive: eglCancelNotificationNOK completes with KErrCancel."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,          0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS },
+        { ECancelNotificationCase,  0,              EGL_SUCCESS },
+        { EWaitForNotificationCase, EExpectError,   KErrCancel, 0, 0, 100000 },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS },
+        { ETerminateCase,           0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("613"),
+        CASETITLE("Functional: Positive: eglCancelNotificationNOK works after notification completed."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,          0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,       0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,      0,              EGL_SUCCESS },
+        { ERequestNotificationCase, 0,              EGL_SUCCESS },
+        { EContentUpdateCase,       0,              EGL_SUCCESS },
+        { EWaitForNotificationCase, 0,              KErrNone,    0, 0, 100000 },
+        { ECancelNotificationCase,  0,              EGL_SUCCESS },
+        { EWaitForNotificationCase, EExpectError,   KErrTimedOut,0, 0, 100000 },
+        { EDestroyEndpointCase,     0,              EGL_SUCCESS },
+        { ETerminateCase,           0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+static const TTestCase KNotifcationNegativeCases[] =
+{
+    {
+        TESTIDS("560"),
+        CASETITLE("Functional: Negative: eglRequestNotification bad parameter test."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        // Bad display
+        { ERequestNotificationCase, EUseBadDisplay, EGL_BAD_DISPLAY },
+        { ERequestNotificationCase, EUseBadDisplay | EUseBadEndpoint, EGL_BAD_DISPLAY },
+        { ERequestNotificationCase, EUseBadDisplay | EUseBadSync, EGL_BAD_DISPLAY },
+        { ERequestNotificationCase, EUseBadDisplay | EUseBadEndpoint | EUseBadSync, EGL_BAD_DISPLAY },
+        { ERequestNotificationCase, EUseBadEndpoint, EGL_BAD_ENDPOINT_NOK },
+        { ERequestNotificationCase, EUseBadSync, EGL_BAD_PARAMETER },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("562"),
+        CASETITLE("Functional: Negative: eglCancelNotification bad parameter test."),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        // Bad display
+        { ECancelNotificationCase, EUseBadDisplay, EGL_BAD_DISPLAY },
+        { ECancelNotificationCase, EUseBadDisplay | EUseBadEndpoint, EGL_BAD_DISPLAY },
+        { ECancelNotificationCase, EUseBadEndpoint, EGL_BAD_ENDPOINT_NOK },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+
+
+static const TTestCases KTestCases[] =
+{
+        TestCase(KNotifcationPositiveCases),
+        TestCase(KNotifcationNegativeCases),
+};
+
+const TInt KNumberTestCases = sizeof(KTestCases) / sizeof(KTestCases[0]);
+
+CEglTest_LocalTestStep_EndpointNotification::CEglTest_LocalTestStep_EndpointNotification():
+    CEgltest_Local_Engine(KTestCases, KNumberTestCases)
+    {
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointstreaming_local.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,321 @@
+// Copyright (c) 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:
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "egltest_endpointstreaming.h"
+
+
+/**
+@SYMTestCaseID GRAPHICS-EGL-04xx
+
+@SYMTestPriority 1
+
+@SYMPREQ 2670
+
+@SYMREQ
+
+@SYMTestCaseDesc
+Test the behaviour of eglEndpointBeginStreamingNOK and eglEndpointEndStreamingNOK with and
+without bad parameters.
+
+@SYMTestActions
+Create a number of surfaces
+For each test case in a loop
+    *   start the test in the remote windows server side to create endpoints
+    *   in the client side call a surface update on any surface which should have the ready
+        attribute set
+    *   Send commands with parameters to the windows server process test render stage to
+        begin/end streaming on an end point. These parameters include any error codes which
+        is expected.
+    *   Log any failures
+If the procedure was successful release all the resources and check the heap for memory leaks.
+No memory or handle leaks.
+
+@SYMTestExpectedResults
+If the function fails, the return value is undefined and an error is generated.
+If dpy is not the handle of a valid EGLDisplay object, the error EGL_BAD_DISPLAY is
+generated for both BeginSreaming and EndStraming
+If endpoint is not a valid EGLEndpointNOK object, the error EGL_BAD_ENDPOINT_NOK is
+generated for both BeginStreaming and EndStraming.
+If the endpoint is not ready,EGL_BAD_ACCESS is generated for calling BeginStreaming.
+*/
+
+
+static const TTestCase KStreamingPositiveCases[] =
+{
+    {
+        TESTIDS("545A, 546A"),
+        CASETITLE("Functional: Positive: eglEndpointBeginStreamingNOK & eglEndpointEndStreamingNOK with Valid Parameters: Begin and Endstreaming only"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("545B, 546B"),
+        CASETITLE("Functional: Positive: eglEndpointBeginStreamingNOK & eglEndpointEndStreamingNOK with Valid Parameters: Begin, twice, then Endstreaming"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("545C, 546C"),
+        CASETITLE("Functional: Positive: eglEndpointBeginStreamingNOK & eglEndpointEndStreamingNOK with Valid Parameters: Begin then Endstreaming twice"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    // Now check that we can and can't acquire images when in or out of a streaming block.
+    {
+        TESTIDS("545D, 546D"),
+        CASETITLE("Functional: Positive: eglEndpointBeginStreamingNOK & eglEndpointEndStreamingNOK with Valid Parameters: Beginstreaming, acquire, endstreaming"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EAcquireImageCase,    0,              EGL_SUCCESS },
+        { ECompareImageCase,    0,              EGL_SUCCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("545E, 546E"),
+        CASETITLE("Functional: Positive: eglEndpointBeginStreamingNOK & eglEndpointEndStreamingNOK with Valid Parameters: Beginstreaming, endstreaming, acquire"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EAcquireImageCase,    EExpectError,   EGL_BAD_ACCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("545F, 546F"),
+        CASETITLE("Functional: Positive: eglEndpointBeginStreamingNOK & eglEndpointEndStreamingNOK with Valid Parameters: Beginstreaming twice, endstreaming, acquire"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EAcquireImageCase,    EExpectError,   EGL_BAD_ACCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("545G, 546G"),
+        CASETITLE("Functional: Positive: eglEndpointBeginStreamingNOK & eglEndpointEndStreamingNOK with Valid Parameters: Beginstreaming, endstreaming twice, beginstreaming, acquire"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EAcquireImageCase,    0,              EGL_SUCCESS },
+        { ECompareImageCase,    0,              EGL_SUCCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("545H, 546H"),
+        CASETITLE("Functional: Positive: eglEndpointBeginStreamingNOK & eglEndpointEndStreamingNOK with Valid Parameters: Beginstreaming, destroy, create, acquire (not ready)"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        // We should get bad access, as the endpoint is not ready!
+        { EAcquireImageCase,    EExpectError,   EGL_BAD_ACCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("545I, 546I"),
+        CASETITLE("Functional: Positive: eglEndpointBeginStreamingNOK & eglEndpointEndStreamingNOK with Valid Parameters: Beginstreaming, destroy, create, acquire (ready)"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        // We should get bad access, as the endpoint is not in a streaming block!
+        { EAcquireImageCase,    EExpectError,   EGL_BAD_ACCESS },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+static const TTestCase KStreamingBadParameterCases[] =
+{
+    {
+        TESTIDS("553A"),
+        CASETITLE("Functional: Negative: eglEndpointBeginStreamingNOK with Bad Parameters: Test eglEndpointBeginStreaming bad parameter variations"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        // Bad display on it's own.
+        { EBeginStreamingCase,  EUseBadDisplay, EGL_BAD_DISPLAY },
+        // Bad display should be priority over the bad endpoint
+        { EBeginStreamingCase,  EUseBadDisplay | EUseBadEndpoint, EGL_BAD_DISPLAY },
+        // Bad endpoint should result in "BAD_ENDPOINT" error.
+        { EBeginStreamingCase,  EUseBadEndpoint, EGL_BAD_ENDPOINT_NOK },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("554A"),
+        CASETITLE("Functional: Negative: eglEndpointEndStreamingNOK with Bad Parameters: Test eglEndpointEndStreaming bad parameter variations"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        // Bad display on it's own.
+        { EEndStreamingCase,    EUseBadDisplay, EGL_BAD_DISPLAY },
+        // Bad display should be priority over the bad endpoint
+        { EEndStreamingCase,    EUseBadDisplay | EUseBadEndpoint, EGL_BAD_DISPLAY },
+        { EEndStreamingCase,    EUseBadEndpoint, EGL_BAD_ENDPOINT_NOK },
+        { EEndStreamingCase,    0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+static const TTestCase KStreamingNegativeCases[] =
+{
+    {
+        TESTIDS("553B"),
+        CASETITLE("Functional: Negative: eglEndpointBeginStreamingNOK with Bad Parameters: eglEndpointBeginStreaming with no contentupdate"),
+        SurfaceTypes3(ESurfTypeRaw, ESurfTypeEglWindow, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0,              EGL_SUCCESS },
+        { ECreateSurfaceCase,   0,              EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  EExpectError,   EGL_BAD_ACCESS },
+        { EDrawContentCase,     0,              EGL_SUCCESS },
+        { EContentUpdateCase,   0,              EGL_SUCCESS },
+        { EBeginStreamingCase,  0,              EGL_SUCCESS },
+        { EDestroyEndpointCase, 0,              EGL_SUCCESS },
+        { ETerminateCase,       0,              EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+static const TTestCases KTestCases[] =
+{
+    TestCase(KStreamingPositiveCases),
+    TestCase(KStreamingBadParameterCases),
+    TestCase(KStreamingNegativeCases),
+};
+
+const TInt KNumberTestCases = sizeof(KTestCases) / sizeof(KTestCases[0]);
+
+CEglTest_LocalTestStep_EndpointStreaming::CEglTest_LocalTestStep_EndpointStreaming():
+    CEgltest_Local_Engine(KTestCases, KNumberTestCases)
+    {
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointstreamingtests_local.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,315 @@
+/*
+* Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include "egltest_endpointstreamingtests.h"
+#include "egltest_surface.h"
+
+
+static const TTestCase KStreamingTestCases[] =
+{
+    {
+        TESTIDS("582"),
+        CASETITLE("Functional: Streaming: aStatusDisplayed behaves properly within streaming block"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { ESetAttribCase,       0, EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 50000 },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { ETimeStampCase,       0, KErrNone },
+        { ENotifyWhenCase,      0, KErrNone, 0, ENotifyWhenDisplayed },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EWaitForCase,         0, KErrNone, 0, ENotifyWhenDisplayed, 55000, 50000 },
+        { ESetAttribCase,       0, EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 100000 },
+        { ETimeStampCase,       0, KErrNone },
+        { ENotifyWhenCase,      0, KErrNone, 0, ENotifyWhenDisplayed },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EWaitForCase,         0, KErrNone, 0, ENotifyWhenDisplayed, 110000, 100000 },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("584"),
+        CASETITLE("Functional: Streaming: aStatusDisplayed behaves properly outside of streaming block"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { ESetAttribCase,       0, EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 50000 },
+        { ENotifyWhenCase,      0, KErrNone, 0, ENotifyWhenDisplayed },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EWaitForCase,         0, KErrNotVisible, 0, ENotifyWhenDisplayed, 55000 },
+        { ENotifyWhenCase,      0, KErrNone, 0, ENotifyWhenDisplayed },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EWaitForCase,         0, KErrNotVisible, 0, ENotifyWhenDisplayed, 5000 },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("585"),
+        CASETITLE("Functional: Streaming: aStatusDisplayedXTimes behaves properly outside streaming block"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { ESetAttribCase,       0, EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 50000 },
+        { ENotifyWhenCase,      0, KErrNone, 0, ENotifyWhenDispXTimes, 2 },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EWaitForCase,         0, KErrNotVisible, 0, ENotifyWhenDispXTimes, 5000 },
+        { ENotifyWhenCase,      0, KErrNone, 0, ENotifyWhenDispXTimes, 10 },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EWaitForCase,         0, KErrNotVisible, 0, ENotifyWhenDispXTimes, 5000 },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("586"),
+        CASETITLE("Functional: Streaming: Additional SubmitUpdate issued before aStatusDisplayed is notified results in error KErrOverflow"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { ESetAttribCase,       0, EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 20000 },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { ENotifyWhenCase,      0, KErrNone, 0, ENotifyWhenDisplayed },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EWaitForCase,         0, KErrOverflow, 0, ENotifyWhenDisplayed, 10000 },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("587A"),
+        CASETITLE("Functional: Streaming: aStatusDisplayed behaves properly on transition out of streaming block (variant 1)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { ESetAttribCase,       0, EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 20000 },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { ENotifyWhenCase,      0, KErrNone, 0, ENotifyWhenDisplayed },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EWaitForCase,         0, KErrNone, 0, ENotifyWhenDisplayed, 25000 },
+        { EEndStreamingCase,    0, EGL_SUCCESS },
+        { ENotifyWhenCase,      0, KErrNone, 0, ENotifyWhenDisplayed },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EWaitForCase,         0, KErrNotVisible, 0, ENotifyWhenDisplayed, 25000 },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+    {
+        TESTIDS("587B"),
+        CASETITLE("Functional: Streaming: aStatusDisplayed behaves properly on transition out of streaming block (variant 2)"),
+        SurfaceTypes2(ESurfTypeRaw, ESurfTypeRawSingleBuffered),
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateSurfaceCase,   0, EGL_SUCCESS, 0, EStandardSurface },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { ESetAttribCase,       0, EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 20000 },
+        { EContentUpdateCase,   0, EGL_SUCCESS },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { ENotifyWhenCase,      0, KErrNone, 0, ENotifyWhenDisplayed },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EWaitForCase,         0, KErrNone, 0, ENotifyWhenDisplayed, 25000 },
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ENotifyWhenCase,      0, KErrNone, 0, ENotifyWhenDisplayed },
+        { EContentUpdateCase,   ENoWait, EGL_SUCCESS },
+        { EWaitForCase,         0, KErrSurfaceNotRegistered, 0, ENotifyWhenDisplayed, 25000 },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase }
+        },
+    },
+};
+
+
+static const TTestCases KTestCases[] =
+{
+    TestCase(KStreamingTestCases),
+};
+
+const TInt KNumberTestCases = sizeof(KTestCases) / sizeof(KTestCases[0]);
+
+
+CEglTest_LocalTestStep_EndpointStreamingTests::CEglTest_LocalTestStep_EndpointStreamingTests():
+    CEgltest_Local_Engine(KTestCases, KNumberTestCases)
+    {
+    }
+
+
+//------------------------------------------------------
+// GRAPHICS-EGL-583 can only be implemented with code...
+//------------------------------------------------------
+
+
+CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream::CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream()
+: CLocalTestStepBase(ETestUidEndpointEngine)  // We use the engine to do the remote side functionality.
+    {
+    }
+
+void CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream::DoPreambleL()
+    {
+    }
+
+void CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream::DoPostambleL()
+    {
+    }
+
+CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream::~CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream()
+    {
+    }
+
+void CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream::RunScript(const TEngineTestCase *aTestCases, TRemoteTestParams &params)
+    {
+    for(TInt i = 0; aTestCases[i].iCase != EFinishedCase; i++)
+        {
+        params.iEndpointEngine.iEngineTestCase = aTestCases[i];
+        RunRemoteTestCase(aTestCases[i].iCase, params);
+        }
+    }
+
+TUint CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream::TicksForDisplayXTimesL(CSurface* aSurface, TInt aNumTimes)
+    {
+    //Calculate timeout by assuming low framerate of 10 fps, 
+    //multiplying period by number of times and an extra factor of 3.
+    //This should be plenty. Measured in microseconds.
+    TInt timeout = 3 * aNumTimes * TInt(1000000.0f / 10.0f);
+    
+    TRequestStatus dispXTimesRs;
+    User::LeaveIfError(aSurface->Notify(ENotifyWhenDispXTimes, dispXTimesRs, aNumTimes));
+    
+    TUint startTickCount = User::TickCount();
+    aSurface->SubmitContentL(EFalse);
+    
+    TUint32 dummyTimeStamp;
+    TInt err = aSurface->WaitFor(ENotifyWhenDispXTimes, dispXTimesRs, timeout, dummyTimeStamp);
+    if(err != KErrNone)
+        {
+        ERR_PRINTF3(_L("Waiting for ENotifyWhenDispXTimes returned %d when we expected %d."), err, KErrNone);
+        User::Leave(err);
+        }
+    
+    return User::TickCount() - startTickCount;
+    }
+    
+void CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream::DispXTimesInStreamTestL(TSurfaceType aSurfaceType)
+    {
+    //Local: Create surface and save the id for the remote side.
+    CSurface* surface = CSurface::SurfaceFactoryL(aSurfaceType);
+    CleanupStack::PushL(surface);
+    surface->CreateL(EStandardSurface);
+    surface->GetSurfaceParamsL(iParams.iEndpointEngine.iSurfaceParams);
+    
+    //Remote: Init remote side and create an endpoint from the surface. (tidy up ops are on cleanup stack)
+    static const TEngineTestCase createEndpointSteps[] = 
+        {
+        { EInitializeCase,      0, EGL_SUCCESS },
+        { ECreateEndpointCase,  0, EGL_SUCCESS },
+        { EFinishedCase,        0, EGL_SUCCESS },
+        };
+    RunScript(createEndpointSteps, iParams);
+    CleanupStack::PushL(TCleanupItem(CleanupRemoteTestStep, this));
+    
+    //Local: Submit update for the surface so that the endpoint enters the ready state.
+    surface->SubmitContentL(EFalse);
+    
+    //Remote: Set the EGL_DELAY_NOK value and begin streaming on the endpoint.
+    static const TEngineTestCase setDelayAndBeginStreamingSteps[] = 
+        {
+        { ESetAttribCase,       0, EGL_SUCCESS, 0, 0, EGL_DELAY_NOK, 5000 },
+        { EBeginStreamingCase,  0, EGL_SUCCESS },
+        { EFinishedCase,        0, EGL_SUCCESS },
+        };
+    RunScript(setDelayAndBeginStreamingSteps, iParams);
+    
+    //Local: Get number of ticks between submitting content and X frames being displayed.
+    TUint ticksForDisp20Times = TicksForDisplayXTimesL(surface, 20);
+    INFO_PRINTF2(_L("ticksForDisp20Times = %d"), ticksForDisp20Times);
+    TUint ticksForDisp200Times = TicksForDisplayXTimesL(surface, 200);
+    INFO_PRINTF2(_L("ticksForDisp200Times = %d"), ticksForDisp200Times);
+    
+    //check to see if ticksForDisp200Times = 10 * ticksForDisp20Times (with some fuzz).
+    if( (ticksForDisp200Times < 5*ticksForDisp20Times) || (ticksForDisp200Times > 15*ticksForDisp20Times) )
+        {
+        ERR_PRINTF1(_L("Ratio between time for display 20 times and display 200 times not within limits."));
+        User::Leave(EFail);
+        }
+    else
+        {
+        INFO_PRINTF1(_L("Ratio between time for display 20 times and display 200 times is within limits."));
+        }
+    
+    CleanupStack::PopAndDestroy(2, surface);
+    }
+
+TVerdict CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream::doTestStepL()
+    {
+    static const TRemoteTestParams nullParams = {};
+    StartRemoteTestStep(nullParams);
+    
+    DispXTimesInStreamTestL(ESurfTypeRaw);
+    DispXTimesInStreamTestL(ESurfTypeRawSingleBuffered);
+    
+    EndRemoteTestStep(nullParams);
+    INFO_PRINTF1(_L("EndpointStreamingDispXTimesInStream test finished"));
+    return TestStepResult();
+    }
+
+void CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream::CleanupRemoteTestStep(TAny* aStreamingDispXTimesInStream)
+    {
+    CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream* self = 
+                static_cast<CEglTest_LocalTestStep_EndpointStreamingDispXTimesInStream*>(aStreamingDispXTimesInStream);
+    
+    //Remote: Destroy the endpoint and terminate EGL.
+    static const TEngineTestCase destroyEndpointSteps[] = 
+        {
+        { EDestroyEndpointCase, 0, EGL_SUCCESS },
+        { ETerminateCase,       0, EGL_SUCCESS },
+        { EFinishedCase },
+        };
+    self->RunScript(destroyEndpointSteps, self->iParams);
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointtearing_local.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,238 @@
+/*
+* Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include "egltest_endpointtearing.h"
+#include "egltest_surface.h"
+#include <e32atomics.h>
+
+
+/**
+@SYMTestCaseID GRAPHICS-EGL-573
+
+@SYMTestPriority medium
+
+@SYMPREQ 2670
+
+@SYMTestCaseDesc
+Image tearing test with raw surface manager surface.
+Check that there is no buffer tearing and that locks are implemented correctly.
+
+@SYMTestActions
+Create a Raw Surface Manager surface.
+1)  Thread B (test application): Fill the buffers with colours mostly red, and 
+    mostly blue, and mostly green if triple buffered.  This is done so that 
+    there is a value greater than zero in all colour channels.
+2)  Thread A (wserve): Create an endpoint from the surface belonging to the window
+3)  Thread B: Submit update.
+4)  Thread A: Begin streaming block
+5)  Thread A in the windows server for ten seconds, as fast as possible:
+6)  Thread A: Acquire an EGLImage from this endpoint
+7)  Thread A: Check that the resulting image all a solid colour.  Five samples, 
+    one at the centre and at the four corners should be sufficient.
+8)  Thread A: Release the EGLImage
+9)  In thread B, whilst thread A is running: fill surface with different solid 
+    colours, and call Submit Update. Run this thread as fast a possible, with the 
+    same priority as thread A. The solid colour used should be varied for each 
+    iteration.  Do not synchronize threads A and B, but random waits (using delay 
+    loops) may be used to give each thread a variation and reduce any 
+    synchronization in the EGL code.
+10) Thread A: End the streaming block
+11) Thread A & B: Close and delete resources.
+
+@SYMTestExpectedResults
+Each acquired image from the endpoint is a solid colour, 
+calculated by comparing all the corners and the center pixel.
+*/
+
+
+CEglTest_LocalTestStep_EndpointTearing::CEglTest_LocalTestStep_EndpointTearing() :
+    CLocalTestStepBase(ETestUidEndpointTearing)
+    {
+    }
+
+
+CEglTest_LocalTestStep_EndpointTearing::~CEglTest_LocalTestStep_EndpointTearing()
+    {
+    }
+
+void CEglTest_LocalTestStep_EndpointTearing::DoPreambleL()
+    {
+    //Register the test id.
+    _LIT(KTestId, "573");
+    RegisterTestIdsL(KTestId);
+    SetCurrentTestIds(KTestId);
+    
+    //If this fails, the test will fail in a round about way with EGL_NOT_INITIALIZED.
+    eglInitialize(eglGetDisplay(EGL_DEFAULT_DISPLAY), NULL, NULL);
+    
+    //Create the fast locaks used for comms between the test thread and the draw thread.
+    User::LeaveIfError(iStartDraw.CreateLocal());
+    User::LeaveIfError(iFirstDrawDone.CreateLocal());
+    }
+
+
+void CEglTest_LocalTestStep_EndpointTearing::DoPostambleL()
+    {
+    iStartDraw.Close();
+    iFirstDrawDone.Close();
+    eglTerminate(eglGetDisplay(EGL_DEFAULT_DISPLAY));
+    }
+
+
+TVerdict CEglTest_LocalTestStep_EndpointTearing::doTestStepL()
+    {
+    //Acquire the start drawing lock to force the draw thread to wait until we signal.
+    iStartDraw.Wait();
+    
+    //Start drawing thread. When this returns, iSurfaceId
+    //contains the surface handle for the surface the thread uses
+    //and the draw thread is waiting on iStartDraw.
+    StartDrawThreadL();
+    
+    //Params for the remote test step.
+    TRemoteTestParams params;
+    params.iEndpointTearing.iSurfaceId = iSurfaceId;
+    
+    //Setup the remote test step. (creates an endpoint).
+    StartRemoteTestStep(params);
+    
+    //Tell the draw thread to continously fill the surface 
+    //with a block colour and submit the buffer, honoring the
+    //notifyWhenAvailable semantics. 
+    iStartDraw.Signal();
+    
+    //Wait for the first buffer to be drawn, so that the remote side
+    //is guaranteed to be able to begin streaming on the endpoint
+    //when we run the remote test case. The remote side continuously
+    //checks that each acquired image is a solid colour for a set time.
+    iFirstDrawDone.Wait();
+    RunRemoteTestCase(0, TRemoteTestParams());
+    
+    //Stop the drawing thread, so that it does not report a 'not 
+    //registered' error when we end the remote test step (destroy ep).
+    StopDrawThread();
+    EndRemoteTestStep(TRemoteTestParams());
+    
+    return TestStepResult();
+    }
+
+
+void CEglTest_LocalTestStep_EndpointTearing::StartDrawThreadL()
+    {
+    //Stack and heap sizes.
+    static const TInt KStackSize =   0x2000;      //  8KB
+    static const TInt KHeapMinSize = 0x1000;      //  4KB
+    static const TInt KHeapMaxSize = 0x1000000;   // 16MB
+
+    //Create draw thread and wait for rendezvous.
+    User::LeaveIfError(iDrawThread.Create(KNullDesC, DrawThreadEntryPoint, KStackSize, KHeapMinSize, KHeapMaxSize, this));
+    CleanupClosePushL(iDrawThread);
+    iDrawThread.Resume();
+    TRequestStatus rendezvous;
+    iDrawThread.Rendezvous(rendezvous);
+    User::WaitForRequest(rendezvous);
+    User::LeaveIfError(rendezvous.Int());
+    CleanupStack::Pop(&iDrawThread);
+    }
+
+
+void CEglTest_LocalTestStep_EndpointTearing::StopDrawThread()
+    {
+    TRequestStatus logon;
+    iDrawThread.Logon(logon);
+    __e32_atomic_store_rel32(&iStopDrawing, ETrue);
+    User::WaitForRequest(logon);
+    iDrawThread.Close();
+    }
+
+
+TInt CEglTest_LocalTestStep_EndpointTearing::DrawThreadEntryPoint(TAny* aSelf)
+    {
+    CEglTest_LocalTestStep_EndpointTearing* self = static_cast<CEglTest_LocalTestStep_EndpointTearing*>(aSelf);
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+    
+    TRAPD(err,
+        //Create active scheduler.
+        CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
+        CleanupStack::PushL(scheduler);
+        CActiveScheduler::Install(scheduler);
+
+        //Setup the draw loop.
+        self->EnterDrawLoopL();
+
+        //Clean up.
+        CleanupStack::PopAndDestroy(scheduler);
+        );
+    
+    __ASSERT_ALWAYS(err == KErrNone, User::PanicUnexpectedLeave());
+    delete cleanup;
+    
+    return KErrNone;
+    }
+
+
+void CEglTest_LocalTestStep_EndpointTearing::EnterDrawLoopL()
+    {
+    //Create a standard surface. 
+    CSurface* surface = CSurface::SurfaceFactoryL(ESurfTypeRaw);
+    CleanupStack::PushL(surface);
+    surface->CreateL(ELargeSurface);
+    
+    TRequestStatus availableStat[2];
+    TInt currentStat = 0;
+    TInt currentColour = 0x88CC44;
+    
+    //Take the FirstDrawDone fast lock, save the surfaceId then rendezvous.
+    iFirstDrawDone.Wait();
+    iSurfaceId = surface->SurfaceId();
+    RThread().Rendezvous(KErrNone);
+    
+    //Wait for the signal to draw the first buffer.
+    iStartDraw.Wait();
+    surface->DrawContentL(TRgb(currentColour, 255));
+    surface->Notify(ENotifyWhenAvailable, availableStat[currentStat++ & 1], 0);
+    surface->SubmitContentL(EFalse);
+    iFirstDrawDone.Signal();
+    
+    //Loop until we are told to stop drawing.
+    while(!__e32_atomic_load_acq32(&iStopDrawing))
+        {
+        //Draw content, ask for notification when the buffer we have drawn to is available and submit.
+        surface->DrawContentL(TRgb(currentColour, 255));
+        surface->Notify(ENotifyWhenAvailable, availableStat[currentStat++ & 1], 0);
+        surface->SubmitContentL(EFalse);
+        
+        //Wait until the other buffer is free, so we don't tear. There are 2 buffers 
+        //in the surface: We asked for ELargeSurface, which is double buffered.
+        TUint32 dummyTimeStamp;
+        TInt err = surface->WaitFor(ENotifyWhenAvailable, availableStat[currentStat & 1], 1000, dummyTimeStamp);
+        User::LeaveIfError(err);
+        
+        //Modify the colour that we draw.
+        currentColour += 16;
+        }
+    
+    CleanupStack::PopAndDestroy(surface);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointtearing_remote.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,181 @@
+/*
+* Copyright (c) 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include "egltest_endpointtearing.h"
+#include "egltest_endpoint_images.h"
+
+
+CEglTest_RemoteTestStep_EndpointTearing::CEglTest_RemoteTestStep_EndpointTearing() :
+    CRemoteTestStepBase(ETestUidEndpointTearing)
+    {
+    }
+
+
+CEglTest_RemoteTestStep_EndpointTearing::~CEglTest_RemoteTestStep_EndpointTearing()
+    {
+    }
+
+
+TRemoteTestVerdict CEglTest_RemoteTestStep_EndpointTearing::DoStartRemoteTestStepL(const TRemoteTestParams& aMessageIn)
+    {
+    REMOTE_INFO_PRINTF1(_L("Starting Remote Test Step."));
+    
+    EglStartL();
+    iDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+    
+    TSurfaceId surface = aMessageIn.iEndpointTearing.iSurfaceId; 
+    iEndpoint = EglEndpoint().CreateEndpoint(iDisplay, EGL_ENDPOINT_TYPE_CONSUMER_NOK, EGL_TSURFACEID_NOK, &surface, NULL);
+    if(iEndpoint == EGL_NO_ENDPOINT_NOK)
+        {
+        REMOTE_ERR_PRINTF2(_L("Failed to create endpoint. err = %d"), eglGetError());
+        User::Leave(KErrBadHandle);
+        }
+    REMOTE_INFO_PRINTF1(_L("Endpoint created."));
+    
+    return ERtvPass;
+    }
+
+
+TRemoteTestVerdict CEglTest_RemoteTestStep_EndpointTearing::DoEndRemoteTestStepL(const TRemoteTestParams& /*aMessageIn*/)
+    {
+    REMOTE_INFO_PRINTF1(_L("Ending Remote Test Step."));
+    EglEndpoint().DestroyEndpoint(iDisplay, iEndpoint);
+    EglEndL();
+    return ERtvPass;
+    }
+
+
+TRemoteTestVerdict CEglTest_RemoteTestStep_EndpointTearing::DoRunRemoteTestCaseL(TInt aTestCase, const TRemoteTestParams& aParams)
+    {
+    switch(aTestCase)
+        {
+        case 0:     return TearingTestCaseL(aParams);
+        default:    return ERtvAbort;
+        }
+    }
+
+
+TRemoteTestVerdict CEglTest_RemoteTestStep_EndpointTearing::TearingTestCaseL(const TRemoteTestParams& /*aParams*/)
+    {
+    //Begin streaming.
+    EGLBoolean result = EglEndpoint().EndpointBeginStreaming(iDisplay, iEndpoint);
+    if(result == EGL_FALSE)
+        {
+        REMOTE_ERR_PRINTF2(_L("Failed to enter streaming block. err = %d"), eglGetError());
+        User::Leave(KErrBadHandle);
+        }
+    
+    //Create an EglWindowSurface so we have a current context for vg operations.
+    CEglWindowSurface* surface = CEglWindowSurface::NewL();
+    CleanupStack::PushL(surface);
+    surface->CreateL(EStandardSurface);
+    surface->ActivateL();
+    
+    REMOTE_INFO_PRINTF1(_L("Repeatedly acquiring images and checking for evidence of tearing."));
+    
+    //The test should run for 7 seconds so we use a timer 
+    //and loop while the request status is KRequestPending.
+    TRequestStatus notifyTimeDone;
+    RTimer timer;
+    User::LeaveIfError(timer.CreateLocal());
+    CleanupClosePushL(timer);
+    timer.After(notifyTimeDone, 7 * 1000000);
+    
+    //Acquire and check that image is solid colour in a loop while the timer has not fired.
+    TRemoteTestVerdict retVal = ERtvPass;
+    TInt numIters = 0;
+    while(notifyTimeDone.Int() == KRequestPending)
+        {
+        TRAPD(err, retVal = AcquireAndCheckImageL());
+        if(err != KErrNone)
+            {
+            //Cancel the timer, wait for the notification and re-leave.
+            timer.Cancel();
+            User::WaitForRequest(notifyTimeDone);
+            User::Leave(err);
+            }
+        if(retVal != ERtvPass)
+            {
+            REMOTE_ERR_PRINTF2(_L("Detected tearing in aquired image number %d"), numIters);
+            timer.Cancel();
+            break;
+            }
+        ++numIters;
+        }
+    
+    //Tidy up the thread semaphore.
+    User::WaitForRequest(notifyTimeDone);
+    
+    REMOTE_ERR_PRINTF2(_L("Number of successful iterations: %d"), numIters);
+    
+    CleanupStack::PopAndDestroy(2, surface);
+    EglEndpoint().EndpointEndStreaming(iDisplay, iEndpoint);
+    return retVal;
+    }
+
+
+TRemoteTestVerdict CEglTest_RemoteTestStep_EndpointTearing::AcquireAndCheckImageL()
+    {
+    //Acquire an image from the endpoint.
+    EGLImageKHR eglImage = EglEndpoint().AcquireImage(iDisplay, iEndpoint);
+    if(eglImage == EGL_NO_IMAGE_KHR)
+        {
+        REMOTE_ERR_PRINTF2(_L("Failed to acquire image from endpoint. err = %d"), eglGetError());
+        User::Leave(KErrBadHandle);
+        }
+    
+    //Check the image. This bit can leave, so we trap it so we 
+    //have an opportunity to release the image before re-leaving.
+    TRemoteTestVerdict retVal = ERtvPass;
+    TRAPD(err, retVal = CheckImageL(eglImage));
+    
+    //Release the image back to the endpoint.
+    EGLBoolean err2 = EglEndpoint().ReleaseImage(iDisplay, iEndpoint, eglImage, EGL_OPENVG_API);
+    
+    //Report the 1st error.
+    User::LeaveIfError(err);
+    if(err2 == EGL_FALSE)
+        {
+        REMOTE_ERR_PRINTF2(_L("Failed to release image back to endpoint. err = %d"), eglGetError());
+        User::Leave(KErrBadHandle);
+        }
+    
+    return retVal;
+    }
+
+
+TRemoteTestVerdict CEglTest_RemoteTestStep_EndpointTearing::CheckImageL(EGLImageKHR aEglImage)
+    {
+    //Convert the image to a CTestVgEglImage
+    CTestVgEglImage* vgEglImage = CTestVgEglImage::NewL(aEglImage);
+    CleanupStack::PushL(vgEglImage);
+    
+    //Check the corners and center pixel are the same colour. 
+    TBool retVal = vgEglImage->IsSolidColourL();
+    
+    CleanupStack::PopAndDestroy(vgEglImage);
+    return retVal ? ERtvPass : ERtvFail;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_surface.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,730 @@
+// 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
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include "egltest_surface.h"
+#include "egltest_endpoint_images.h"
+#include <graphics/surfaceconfiguration.h>
+
+#define SURF_ASSERT(x) { if (!(x)) { RDebug::Printf("ASSERT(%s) failed at %s:%d", #x, __FILE__, __LINE__); User::Panic(_L("ASSERT SURF"), __LINE__); }}
+
+// Macros for indicating what is what.
+#define SIZE(x, y) x, y
+#define Buffers(x) x
+#define DefaultAlignment 32  // Pick some value that is valid.
+#define Alignment(x) x
+#define Stride(x) x
+#define DefaultStride 0
+// Note: Offset to first buffer.
+#define Offset(x) x
+#define WindowPos(x, y)  x, y
+#define WindowMode(m) m
+
+static const TSurfaceParamsCommon KSurfaceParams[] =
+{
+    {
+        EStandardSurface,
+        SIZE(100, 100),
+        Buffers(2),
+        DefaultAlignment,
+        DefaultStride,
+        Offset(0),
+        EUidPixelFormatARGB_8888_PRE,
+        EFalse,
+        { 0 },
+        WindowPos(0, 0),
+        WindowMode(EColor16MAP)
+    },
+    {
+        EBadAttribSurface,
+        SIZE(100, 100),
+        Buffers(2),
+        DefaultAlignment,
+        DefaultStride,
+        Offset(0),
+        EUidPixelFormatARGB_8888_PRE,
+        ETrue,
+        { 1, 1, EGL_NONE },
+        WindowPos(0, 0),
+        WindowMode(EColor16MAP)
+    },
+    {
+        EEmptyAttribSurface,
+        SIZE(100, 100),
+        Buffers(2),
+        DefaultAlignment,
+        DefaultStride,
+        Offset(0),
+        EUidPixelFormatARGB_8888_PRE,
+        ETrue,
+        { EGL_NONE },
+        WindowPos(0, 0),
+        WindowMode(EColor16MAP)
+    },
+    {
+        EStandard128sqSurface,
+        SIZE(128, 128),
+        Buffers(3),
+        DefaultAlignment,
+        DefaultStride,
+        Offset(0),
+        EUidPixelFormatARGB_8888_PRE,
+        EFalse,
+        { 0 },
+        WindowPos(20, 20),
+        WindowMode(EColor16MAP)
+    },
+    {
+        EUnusualStrideSurface,
+        SIZE(167,263),
+        Buffers(2),
+        Alignment(8),
+        Stride(167*4+64),
+        Offset(200),
+        EUidPixelFormatARGB_8888_PRE,
+        EFalse,
+        { 0 },
+        WindowPos(0, 0),
+        WindowMode(EColor16MAP)
+    },
+    {
+        EUnalignedPixelSizeSurface,
+        SIZE(103, 107),
+        Buffers(2),
+        Alignment(8),
+        Stride(103*4),
+        Offset(0),
+        EUidPixelFormatARGB_8888_PRE,
+        EFalse,
+        { 0 },
+        WindowPos(0, 0),
+        WindowMode(EColor16MAP)
+    },
+    {
+        ELargeSurface,
+        SIZE(800, 600),
+        Buffers(2),
+        DefaultAlignment,
+        DefaultStride,
+        Offset(0),
+        EUidPixelFormatARGB_8888_PRE,
+        EFalse,
+        { 0 },
+        WindowPos(0, 0),
+        WindowMode(EColor16MAP)
+    },
+};
+
+
+TInt KSurfaceMaxIndex = sizeof(KSurfaceParams) / sizeof(KSurfaceParams[0]);
+
+CRawSurface* CRawSurface::NewL()
+    {
+    CRawSurface* obj = new (ELeave) CRawSurface();
+    CleanupStack::PushL(obj);
+    obj->ConstructL();
+    CleanupStack::Pop(obj);
+    return obj;
+    }
+
+
+CRawSurface::CRawSurface() : iDrawBuffer(0), iBuffers(0)
+    {
+    }
+
+
+void CRawSurface::ConstructL()
+    {
+    iSurfaceId = TSurfaceId::CreateNullId();
+    User::LeaveIfError(iSurfaceManager.Open());
+    User::LeaveIfError(iSurfaceUpdate.Connect(5));
+    }
+
+
+CRawSurface::~CRawSurface()
+    {
+    iSurfaceUpdate.Close();
+    if(!iSurfaceId.IsNull())
+        {
+        iSurfaceManager.CloseSurface(iSurfaceId);
+        }
+    iSurfaceManager.Close();
+    }
+
+
+TInt CRawSurface::PixelSize(TUidPixelFormat aPixelFormat)
+    {
+    switch(aPixelFormat)
+        {
+        case EUidPixelFormatARGB_8888_PRE:
+        case EUidPixelFormatARGB_8888:
+        case EUidPixelFormatABGR_8888:
+        case EUidPixelFormatABGR_8888_PRE:
+            return 4;
+
+        case EUidPixelFormatARGB_4444:
+        case EUidPixelFormatRGB_565:
+            return 2;
+
+        default:
+            SURF_ASSERT(0);
+            break;
+        }
+    return 0; // Make sure no compiler moans about "not all paths return a value".
+    }
+
+
+void CRawSurface::GetSurfAttribs(RSurfaceManager::TSurfaceCreationAttributesBuf &aSurfaceAttribs, TInt aIndex)
+    {
+    SURF_ASSERT(aIndex < KSurfaceMaxIndex);
+    SURF_ASSERT(aIndex == KSurfaceParams[aIndex].iIndex);
+    iParamIndex = aIndex;
+    aSurfaceAttribs().iSize = TSize(KSurfaceParams[aIndex].iXSize, KSurfaceParams[aIndex].iYSize);
+    iBuffers = KSurfaceParams[aIndex].iBuffers;
+    aSurfaceAttribs().iBuffers = iBuffers;
+    aSurfaceAttribs().iPixelFormat = KSurfaceParams[aIndex].iPixelFormat;
+    TInt stride = KSurfaceParams[aIndex].iStrideInBytes;
+    if (stride == 0)
+        {
+        stride = KSurfaceParams[aIndex].iXSize * PixelSize(KSurfaceParams[aIndex].iPixelFormat);
+        }
+    aSurfaceAttribs().iStride = stride;
+    aSurfaceAttribs().iOffsetToFirstBuffer = KSurfaceParams[aIndex].iOffsetToFirstBuffer;
+    aSurfaceAttribs().iAlignment = KSurfaceParams[aIndex].iAlignment;
+    aSurfaceAttribs().iContiguous = EFalse;
+    aSurfaceAttribs().iCacheAttrib = RSurfaceManager::ECached;
+    aSurfaceAttribs().iOffsetBetweenBuffers = 0;
+    aSurfaceAttribs().iSurfaceHints = NULL;
+    aSurfaceAttribs().iHintCount = 0;
+    aSurfaceAttribs().iMappable = ETrue;
+    }
+
+
+//From CSurface.
+void CRawSurface::CreateL(TInt aIndex)
+    {
+    RSurfaceManager::TSurfaceCreationAttributesBuf surfaceAttribs;
+
+    GetSurfAttribs(surfaceAttribs, aIndex);
+    TInt err = iSurfaceManager.CreateSurface(surfaceAttribs, iSurfaceId);
+    User::LeaveIfError(err);
+    }
+
+
+TUint8* CRawSurface::MapSurfaceAndGetInfoLC(RSurfaceManager::TSurfaceInfoV01& aInfo)
+    {
+    SURF_ASSERT(!iSurfaceId.IsNull());
+    User::LeaveIfError(iSurfaceManager.MapSurface(iSurfaceId, iSurfaceChunk));
+    CleanupClosePushL(iSurfaceChunk);
+    RSurfaceManager::TInfoBuf infoBuf;
+    User::LeaveIfError(iSurfaceManager.SurfaceInfo(iSurfaceId, infoBuf));
+    aInfo = infoBuf();
+    TInt offset = -1000;  // So we hopefully detect when it goes horribly wrong.
+    User::LeaveIfError(iSurfaceManager.GetBufferOffset(iSurfaceId, iDrawBuffer, offset));
+    return iSurfaceChunk.Base() + offset;
+    }
+
+
+void CRawSurface::DrawContentL(TInt aImageIndex)
+    {
+    CTestCFbsImage *image = CTestCFbsImage::NewL(aImageIndex);
+    CleanupStack::PushL(image);
+
+    RSurfaceManager::TSurfaceInfoV01 info;
+    TUint8 *dataAddress = MapSurfaceAndGetInfoLC(info);
+    TInt stride = info.iStride;
+
+    CFbsBitmap *bitmap = image->Bitmap();
+    TDisplayMode displaymode = bitmap->DisplayMode();
+    TInt pixelStride = stride / CFbsBitmap::ScanLineLength(1, displaymode);
+    for(TInt y = 0; y < image->Size().iHeight; y++)
+        {
+        TPtr8 buf(dataAddress + y * stride, stride);
+
+        // TODO: We need to check that the bitsperpixel matches between the surface and bitmap.
+        bitmap->GetScanLine(buf, TPoint(0, y), pixelStride, displaymode);
+        }
+
+    CleanupStack::PopAndDestroy(2, image);
+    }
+
+
+void CRawSurface::DrawContentL(const TRgb& aColour)
+    {
+    //Map the surface and get its info.
+    RSurfaceManager::TSurfaceInfoV01 surfaceInfo;
+    TUint32* buffer = (TUint32*)MapSurfaceAndGetInfoLC(surfaceInfo);
+
+    //Currently this function only supports drawing into ARGB_8888_PRE surfaces.
+    //This is because the only test that uses this function uses this type of surface.
+    //If this functionallity needs expanding, you must correctly convert the TRgb colour
+    //and pack it into the surface buffer correctly.
+    SURF_ASSERT(surfaceInfo.iPixelFormat == EUidPixelFormatARGB_8888_PRE);
+
+    TUint32 fillColour = aColour._Color16MAP();
+
+    //Loop over each pixel in the surface and colour it.
+    //This is deliberately slow since it is only used for the tearing test
+    //and we want to spend most of our time drawing so that the chances of the other thread
+    //picking up a buffer in the middle of drawing is increased.
+    for(TInt y=0; y < surfaceInfo.iSize.iHeight; ++y)
+        {
+        for(TInt x=0; x < surfaceInfo.iSize.iWidth; ++x)
+            {
+            buffer[x] = fillColour;
+            }
+        buffer += surfaceInfo.iStride >> 2;
+        }
+
+    CleanupStack::PopAndDestroy();
+    }
+
+
+void CRawSurface::SubmitContentL(TBool aShouldWaitForDisplay, TInt /* aRectsIndex */)
+    {
+    TRequestStatus displayNotify = KRequestPending;
+    TTimeStamp timeStamp;
+
+    if(aShouldWaitForDisplay)
+        {
+        Notify(ENotifyWhenDisplayed, displayNotify, 0);
+        }
+
+    TInt err = iSurfaceUpdate.SubmitUpdate(KAllScreens, iSurfaceId, iDrawBuffer, NULL);
+    User::LeaveIfError(err);
+    iDrawBuffer = (iDrawBuffer + 1) % iBuffers;
+
+    if(aShouldWaitForDisplay)
+        {
+        TUint32 dummy;
+        TInt err = WaitFor(ENotifyWhenDisplayed, displayNotify, 100 * 1000, dummy);
+        if (err != KErrNone && err != KErrNotVisible && err != KErrOverflow)
+            {
+            RDebug::Printf("%s:%d: NotifyWhenDisplayed gave unexpected error %d", __FILE__, __LINE__, err);
+            User::Leave(err);
+            }
+        }
+    }
+
+
+TSurfaceId CRawSurface::SurfaceId() const
+    {
+    return iSurfaceId;
+    }
+
+
+void CRawSurface::GetSurfaceParamsL(TSurfaceParamsRemote &aParams)
+    {
+    aParams.iCommonParams = KSurfaceParams[iParamIndex];
+    aParams.iCommonParams.iBuffers = iBuffers; // May have been changed if it's a single buffered surface...
+    aParams.iSurfaceId = SurfaceId();
+    }
+
+const TText *CRawSurface::GetSurfaceTypeStr() const
+    {
+    return _S("CRawSurface");
+    }
+
+TInt CRawSurface::Notify(TNotification aWhen, TRequestStatus& aStatus, TUint32 aXTimes)
+    {
+    aStatus = KRequestPending;
+    switch(aWhen)
+        {
+        case ENotifyWhenAvailable:
+            iSurfaceUpdate.NotifyWhenAvailable(aStatus);
+            break;
+        case ENotifyWhenDisplayed:
+            iSurfaceUpdate.NotifyWhenDisplayed(aStatus, iTimeStamp);
+            break;
+        case ENotifyWhenDispXTimes:
+            iSurfaceUpdate.NotifyWhenDisplayedXTimes(aXTimes, aStatus);
+            break;
+        default:
+            RDebug::Printf("%s:%d: Invalid notification: %d. Panicking...", __FILE__, __LINE__, aWhen);
+            User::Panic(_L("CRawSurface::Notify()"), __LINE__);
+            break;
+        }
+    return KErrNone;
+    }
+
+
+TInt CRawSurface::WaitFor(TNotification aWhen, TRequestStatus& aStatus, TInt aTimeoutInMicroSeconds, TUint32& aTimeStamp)
+    {
+    RTimer timer;
+    TInt err = timer.CreateLocal();
+    if (err != KErrNone)
+        {
+        return err;
+        }
+    TRequestStatus timerStatus = KRequestPending;
+#if __WINS__
+    // Windows timer isn't very precise - add some "fuzz" to the timeout to ensure we do not wait "too little".
+    const TInt KTimeOutExtra = 20000;
+#else
+    // On hardware, we should be able to run with less "fuzz".
+    const TInt KTimeOutExtra = 10000;
+#endif
+    timer.HighRes(timerStatus, aTimeoutInMicroSeconds + KTimeOutExtra);
+    User::WaitForRequest(timerStatus, aStatus);
+    if (aStatus == KRequestPending)
+        {
+        if (aWhen == ENotifyWhenDisplayed)
+            {
+            aTimeStamp = User::FastCounter();
+            }
+        return KErrTimedOut;
+        }
+    if (aWhen == ENotifyWhenDisplayed)
+        {
+        aTimeStamp = iTimeStamp();
+        }
+    timer.Cancel();
+    timer.Close();
+    TInt result = aStatus.Int();
+    aStatus = KRequestPending;
+    return result;
+    }
+
+
+
+const TText *CRawSingleBufferSurface::GetSurfaceTypeStr() const
+    {
+    return _S("CRawSingleBufferedSurface");
+    }
+
+CRawSingleBufferSurface *CRawSingleBufferSurface::NewL()
+    {
+    CRawSingleBufferSurface* obj = new (ELeave) CRawSingleBufferSurface();
+    CleanupStack::PushL(obj);
+    obj->ConstructL();
+    CleanupStack::Pop(obj);
+    return obj;
+    }
+
+
+void CRawSingleBufferSurface::CreateL(TInt aIndex)
+    {
+    RSurfaceManager::TSurfaceCreationAttributesBuf surfaceAttribs;
+
+    GetSurfAttribs(surfaceAttribs, aIndex);
+
+    iBuffers = 1;
+    surfaceAttribs().iBuffers = 1;
+
+    TInt err = iSurfaceManager.CreateSurface(surfaceAttribs, iSurfaceId);
+    User::LeaveIfError(err);
+    }
+
+CRawSingleBufferSurface::~CRawSingleBufferSurface()
+    {
+    }
+
+class CWindow: public CBase
+    {
+public:
+    static CWindow *NewL(TInt aIndex);
+    RWindow& Window();
+    ~CWindow();
+private:
+    void ConstructL(TInt aIndex);
+    CWindow();
+
+private:
+    RWindow iWindow;
+    RWindowGroup iWindowGroup;
+    RWsSession iWsSession;
+    };
+
+
+CWindow* CWindow::NewL(TInt aIndex)
+    {
+    CWindow *self = new (ELeave) CWindow;
+    CleanupStack::PushL(self);
+    self->ConstructL(aIndex);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+
+void CWindow::ConstructL(TInt aIndex)
+    {
+    RFbsSession::Connect();
+    if (aIndex >= KSurfaceMaxIndex)
+        {
+        User::Leave(KErrOverflow);
+        }
+    User::LeaveIfError(iWsSession.Connect());
+    iWindowGroup = RWindowGroup(iWsSession);
+    User::LeaveIfError(iWindowGroup.Construct((TUint32)this));
+    iWindow = RWindow(iWsSession);
+    User::LeaveIfError(iWindow.Construct(iWindowGroup, -1U));
+    const TSurfaceParamsCommon& winAttrib = KSurfaceParams[aIndex];
+    iWindow.SetExtent(TPoint(winAttrib.iXPos, winAttrib.iYPos), TSize(winAttrib.iXSize, winAttrib.iYSize));
+    iWindow.SetRequiredDisplayMode(winAttrib.iDisplayMode);
+    iWindow.Activate();
+    }
+
+
+CWindow::~CWindow()
+    {
+    iWindow.Close();
+    iWindowGroup.Close();
+    iWsSession.Close();
+    RFbsSession::Disconnect();
+    }
+
+
+CWindow::CWindow()
+    {
+    }
+
+
+RWindow& CWindow::Window()
+    {
+    return iWindow;
+    }
+
+
+CEglWindowSurface* CEglWindowSurface::NewL()
+    {
+    CEglWindowSurface* self = new (ELeave) CEglWindowSurface;
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+
+void CEglWindowSurface::ConstructL()
+    {
+    }
+
+
+CEglWindowSurface::CEglWindowSurface()
+    {
+    }
+
+
+void CEglWindowSurface::CreateL(TInt aIndex)
+    {
+    SURF_ASSERT(aIndex < KSurfaceMaxIndex);
+    SURF_ASSERT(aIndex == KSurfaceParams[aIndex].iIndex);
+    iParamIndex = aIndex;
+    iWindow = CWindow::NewL(aIndex);
+    iDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+    EGLint err;
+    if (iDisplay == EGL_NO_DISPLAY)
+        {
+        err = eglGetError();
+        RDebug::Printf("%s:%d: err = %d", __FILE__, __LINE__, err);
+        User::Leave(KErrNotSupported);
+        }
+
+    EGLConfig config;
+    EGLint nConfigs = 0;
+
+    // TODO: Need to use differnet config attribs based on aIndex.
+    static const EGLint KConfigAttribs[] =
+    {
+        EGL_BUFFER_SIZE,    32,
+        EGL_RED_SIZE,       8,
+        EGL_GREEN_SIZE,     8,
+        EGL_BLUE_SIZE,      8,
+        EGL_ALPHA_SIZE,     8,
+        EGL_SURFACE_TYPE,   EGL_WINDOW_BIT,
+        EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
+        EGL_NONE
+    };
+
+    // Need some way to configure the attribs ...
+    eglChooseConfig(iDisplay, KConfigAttribs, &config, 1, &nConfigs);
+    if (!nConfigs)
+        {
+        err = eglGetError();
+        RDebug::Printf("%s:%d: err = %d", __FILE__, __LINE__, err);
+        User::Leave(KErrNotSupported);
+        }
+
+    if (!eglBindAPI(EGL_OPENVG_API))
+        {
+        err = eglGetError();
+        RDebug::Printf("%s:%d: err = %d", __FILE__, __LINE__, err);
+        User::Leave(KErrNotSupported);
+        }
+    iContext = eglCreateContext(iDisplay, config, 0, NULL);
+    if (iContext == EGL_NO_CONTEXT)
+        {
+        err = eglGetError();
+        RDebug::Printf("%s:%d: err = %d", __FILE__, __LINE__, err);
+        User::Leave(KErrNotSupported);
+        }
+
+    iSurface = eglCreateWindowSurface(iDisplay, config, &iWindow->Window(), NULL);
+    if (iSurface == EGL_NO_SURFACE)
+        {
+        err = eglGetError();
+        RDebug::Printf("%s:%d: err = %d", __FILE__, __LINE__, err);
+        User::Leave(KErrNotSupported);
+        }
+    }
+
+void CEglWindowSurface::SubmitContentL(TBool aShouldWaitForDisplay, TInt /* aRectsIndex */)
+    {
+    ActivateL();
+    if (!eglSwapBuffers(iDisplay, iSurface))
+        {
+        User::Leave(KErrBadHandle);
+        }
+    if (aShouldWaitForDisplay)
+        {
+        // We are cheating: We just wait for a bit to ensure that the swapbuffer is actually finished.
+        // There is no way to determine how long this takes, so we just grab a number that should be
+        // large enough...
+        User::After(100 * 1000);  // Wait 100ms.
+        }
+    }
+
+void CEglWindowSurface::ActivateL()
+    {
+    if (!eglMakeCurrent(iDisplay, iSurface, iSurface, iContext))
+        {
+        User::Leave(KErrBadHandle);
+        }
+    }
+
+CEglWindowSurface::~CEglWindowSurface()
+    {
+    eglMakeCurrent(iDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+    if (iSurface != EGL_NO_SURFACE)
+        {
+        eglDestroySurface(iDisplay, iSurface);
+        iSurface = EGL_NO_SURFACE;
+        }
+
+    if (iDisplay != EGL_NO_DISPLAY)
+        {
+        eglDestroyContext(iDisplay, iContext);
+        }
+
+    delete iWindow;
+    }
+
+TSurfaceId CEglWindowSurface::SurfaceId() const
+    {
+    // Default constructor for id sets it to a NULL-value, so if no window is created, we get
+    // a defined surface id value that is invalid.
+    TSurfaceId id;
+    if (iWindow)
+        {
+        TSurfaceConfiguration surfConfig;
+        iWindow->Window().GetBackgroundSurface(surfConfig);
+        surfConfig.GetSurfaceId(id);
+        }
+    return id;
+    }
+
+
+void CEglWindowSurface::DrawContentL(const TRgb& aColour)
+    {
+    ActivateL();
+
+    TSize size;
+    eglQuerySurface(iDisplay, iSurface, EGL_WIDTH, &size.iWidth);
+    eglQuerySurface(iDisplay, iSurface, EGL_HEIGHT, &size.iHeight);
+
+    VGfloat fillColour[4];
+    fillColour[0] = (VGfloat)aColour.Red() / 255.0f;
+    fillColour[1] = (VGfloat)aColour.Green() / 255.0f;
+    fillColour[2] = (VGfloat)aColour.Blue() / 255.0f;
+    fillColour[3] = (VGfloat)aColour.Alpha() / 255.0f;
+
+    vgSetfv(VG_CLEAR_COLOR, 4, fillColour);
+    vgClear(0, 0, size.iWidth, size.iHeight);
+    }
+
+
+void CEglWindowSurface::DrawContentL(TInt aIndex)
+    {
+    ActivateL();
+    CTestVgImage *vgImage = CTestVgImage::NewL(aIndex);
+    CleanupStack::PushL(vgImage);
+    vgDrawImage(vgImage->VGImage());
+    CleanupStack::PopAndDestroy(vgImage);
+    }
+
+void CEglWindowSurface::GetSurfaceParamsL(TSurfaceParamsRemote &aParams)
+    {
+    RSurfaceManager surfaceManager;
+    User::LeaveIfError(surfaceManager.Open());
+    RSurfaceManager::TInfoBuf infoBuf;
+    TInt err = surfaceManager.SurfaceInfo(SurfaceId(), infoBuf);
+    User::LeaveIfError(err);
+    surfaceManager.Close();
+    RSurfaceManager::TSurfaceInfoV01& info = infoBuf();
+    aParams.iSurfaceId = SurfaceId();
+    aParams.iCommonParams.iAlignment = -1;  // N/A
+    aParams.iCommonParams.iBuffers = info.iBuffers;
+    aParams.iCommonParams.iOffsetToFirstBuffer = -1;
+    aParams.iCommonParams.iPixelFormat = info.iPixelFormat;
+    aParams.iCommonParams.iStrideInBytes = info.iStride;
+    aParams.iCommonParams.iXSize = info.iSize.iWidth;
+    aParams.iCommonParams.iYSize = info.iSize.iHeight;
+    aParams.iCommonParams.iUseAttribList = KSurfaceParams[iParamIndex].iUseAttribList;
+    for(TInt i = 0; i < KNumAttribs; i++)
+        {
+        aParams.iCommonParams.iAttribs[i] = KSurfaceParams[iParamIndex].iAttribs[i];
+        }
+    }
+
+const TText *CEglWindowSurface::GetSurfaceTypeStr() const
+    {
+    return _S("CEglWindowSurface");
+    }
+
+TInt CEglWindowSurface::Notify(TNotification /*aWhen*/, TRequestStatus& /*aStatus*/, TUint32 /*aXTImes*/)
+    {
+    return KErrNotSupported;
+    }
+
+TInt CEglWindowSurface::WaitFor(TNotification /*aWhen*/, TRequestStatus& /*aStatus*/,
+        TInt /*aTimeoutinMicroseconds*/, TUint32 & /*aTimeStamp*/)
+    {
+    return KErrNotSupported;
+    }
+
+
+// Factory function.
+CSurface *CSurface::SurfaceFactoryL(TSurfaceType aSurfaceType)
+    {
+    switch(aSurfaceType)
+        {
+        case ESurfTypeRaw:
+            return CRawSurface::NewL();
+        case ESurfTypeEglWindow:
+            return CEglWindowSurface::NewL();
+        case ESurfTypeRawSingleBuffered:
+            return CRawSingleBufferSurface::NewL();
+        default:
+            SURF_ASSERT(0);
+            return NULL;
+        }
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/group/bld.inf	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,26 @@
+// Copyright (c) 2010 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
+ @internalComponent - Internal Symbian test code 
+*/
+
+
+#include "../automated/group/bld.inf"
+
+
+PRJ_TESTEXPORTS
+../rom/eglendpointtestsuite.iby    					/epoc32/rom/include/eglendpointtestsuite.iby
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/egltest/endpointtestsuite/rom/eglendpointtestsuite.iby	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,24 @@
+// Copyright (c) 2009-2010 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:
+//
+
+
+#ifndef __EGLENDPOINTTESTSUITE_IBY__
+#define __EGLENDPOINTTESTSUITE_IBY__
+
+
+#include <egltestendpointauto.iby>
+
+
+#endif // __EGLENDPOINTTESTSUITE_IBY__
--- a/egl/egltest/group/bld.inf	Thu May 27 14:13:51 2010 +0300
+++ b/egl/egltest/group/bld.inf	Fri Jun 11 14:58:47 2010 +0300
@@ -62,3 +62,5 @@
 ../scripts/egltest_t_stress_sgimage.script					z:/egltest/egltest_t_stress_sgimage.script
 ../scripts/egltest_t_benchmark_swapbuffers.script			z:/egltest/egltest_t_benchmark_swapbuffers.script
 
+//Include the endpoint test suite
+#include "../endpointtestsuite/group/bld.inf"
--- a/egl/egltest/group/graphics_egltest.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/egl/egltest/group/graphics_egltest.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_egltest
 
 source	\sf\os\graphics\egl\egltest
--- a/egl/egltest/rom/egltest.iby	Thu May 27 14:13:51 2010 +0300
+++ b/egl/egltest/rom/egltest.iby	Fri Jun 11 14:58:47 2010 +0300
@@ -35,6 +35,9 @@
 #include <graphics_tprofiler.iby>
 #include <graphics_simload.iby>
 
+//Include the endpoint test suite
+#include <eglendpointtestsuite.iby>
+
 // test server
 file=ABI_DIR\DEBUG_DIR\egltest.dll                              sys\bin\egltest.dll
 file=ABI_DIR\DEBUG_DIR\egltestserver.exe                        sys\bin\egltestserver.exe
--- a/fbs/fontandbitmapserver/group/graphics_fbserv.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/fbs/fontandbitmapserver/group/graphics_fbserv.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_fbserv
 source	\sf\os\graphics\fbs\fontandbitmapserver
 binary	\sf\os\graphics\fbs\fontandbitmapserver\group	all
--- a/fbs/fontandbitmapserver/sfbs/HASHMAP.CPP	Thu May 27 14:13:51 2010 +0300
+++ b/fbs/fontandbitmapserver/sfbs/HASHMAP.CPP	Fri Jun 11 14:58:47 2010 +0300
@@ -1,20 +1,13 @@
-/*
-* Copyright (c) 1995 - 2010 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: 
-*
-*/
-
+// HASHMAP.CPP
+//
+// This file holds the class methods for the CHashMap
+// A hash function for hash table lookup.  Assumes input data length is a multiple of 8-bits.
+// 
+// The original hash function was sourced from http://burtleburtle.net/bob/hash/index.html
+// "By Bob Jenkins, 1996.  bob_jenkins@burtleburtle.net.  You may use this code any way you wish, 
+// private, educational, or commercial.  It's free."
+// portions Copyright (c) 1995 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+//
 
 #include "SERVER.H"
 
--- a/graphics_info/graphics_metadata/graphics_metadata.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphics_info/graphics_metadata/graphics_metadata.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component           graphics_metadata
 source   \sf\os\graphics\graphics_info\graphics_metadata 
 source   \sf\os\graphics\package_definition.xml
--- a/graphics_info/graphicsdocs/graphics_documentation.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphics_info/graphicsdocs/graphics_documentation.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_documentation
 
 source	\sf\os\graphics\graphics_info\graphicsdocs\
--- a/graphicsapitest/graphicssvs/group/graphicssvs.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsapitest/graphicssvs/group/graphicssvs.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphicssvs
 source			\sf\os\graphics\graphicsapitest\graphicssvs
 notes_source	\sf\os\graphics\graphicsapitest\graphicssvs\group\release.txt
--- a/graphicscomposition/openwfcinterface/group/graphics_openwfcinterface.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/openwfcinterface/group/graphics_openwfcinterface.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_openwfcinterface
 
 source	\sf\os\graphics\graphicscomposition\openwfcinterface
--- a/graphicscomposition/openwfcompositionengine/adaptation/src/Platform/Graphics/symbian/owfnativestreamstub.cpp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/openwfcompositionengine/adaptation/src/Platform/Graphics/symbian/owfnativestreamstub.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -336,7 +336,7 @@
                                 pixelSize);
         if (format)
             {   //translate format. If error then OWF_IMAGE_NOT_SUPPORTED is set.
-            PixelFormatConversion(symFormat,*format);
+            PixelFormatConversion(static_cast<TUidPixelFormat>(symFormat),*format);
             }
         }
 
--- a/graphicscomposition/openwfsupport/inc/streammap.h	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/openwfsupport/inc/streammap.h	Fri Jun 11 14:58:47 2010 +0300
@@ -21,14 +21,12 @@
 #include <e32base.h>
 #include <e32std.h>			//for RFastLock
 #include <e32hashtab.h>		//for RHashMap
-#include <graphics/surfacemanager.h>
-
-#include <graphics/updateserverprovider.h>
 
 class CSurfaceStream;
 class TSurfaceId;
 class MSurfaceUpdateServerProvider;
 class CExtensionContainer;
+class RSurfaceManager;
 
 NONSHARABLE_CLASS(COpenWfcStreamMap): public CBase
 	{
@@ -198,7 +196,7 @@
 		/**
 		 * Surface manager
 		 */
-		RSurfaceManager iSurfaceManager;
+		RSurfaceManager* iSurfaceManager;
 
 		RHeap *iMainHeap; //< --This points to main thread's heap--
 		
--- a/graphicscomposition/openwfsupport/inc/symbianstream.h	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/openwfsupport/inc/symbianstream.h	Fri Jun 11 14:58:47 2010 +0300
@@ -26,7 +26,6 @@
 typedef struct struct_TSurfaceId TSurfaceId;
 #endif
 #include <KHR/khrplatform.h>
-#include <pixelformats.h>
 typedef khronos_int32_t khronos_bool;
 typedef khronos_int32_t TErrCode;
 
@@ -89,7 +88,7 @@
 typedef khronos_int32_t	MultipleSymbianStreamEventBits;
 typedef khronos_int32_t	SymNativeStreamEvent;
 typedef khronos_int32_t SymbianStreamBuffer;
-typedef TUidPixelFormat	SymOwfPixelFormat;
+typedef khronos_int32_t	SymOwfPixelFormat;
 typedef	khronos_int32_t SymOwfBool;
 
 typedef enum
@@ -388,7 +387,7 @@
 @panic NativeStream 1000002 Null return value pointer
 @panic NativeStream 1000003 Null Native Stream
 **/
-  IMPORT_C void SymbianStreamGetHeader( SymbianStreamType aStream, khronos_int32_t* aWidth, khronos_int32_t* aHeight, khronos_int32_t* aStride, TUidPixelFormat* aFormat, khronos_int32_t* aPixelSize);
+  IMPORT_C void SymbianStreamGetHeader( SymbianStreamType aStream, khronos_int32_t* aWidth, khronos_int32_t* aHeight, khronos_int32_t* aStride, khronos_int32_t* aFormat, khronos_int32_t* aPixelSize);
 
 /** Returns extra details of the format of the image data stored in the Native Stream.
  This method is intended to allow compositors to access the SurfaceManager hints associated with the 
--- a/graphicscomposition/openwfsupport/src/openwfcstream.cpp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/openwfsupport/src/openwfcstream.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -18,6 +18,7 @@
 
 //  Include Files  
 #include <e32def.h>
+#include <pixelformats.h>
 #include <graphics/suerror.h>
 #include "symbianstream.h"
 #include "surfacestream.h"
@@ -137,7 +138,7 @@
                             khronos_int32_t* aWidth, 
                             khronos_int32_t* aHeight, 
                             khronos_int32_t* aStride, 
-                            TUidPixelFormat* aFormat, 
+                            khronos_int32_t* aFormat, 
                             khronos_int32_t* aPixelSize)
 	{
 	CSurfaceStream*	stream=CSurfaceStream::FromHandle(aStream);
--- a/graphicscomposition/openwfsupport/src/streammap.cpp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/openwfsupport/src/streammap.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -17,6 +17,7 @@
 
 #include "streammap.h"
 #include <graphics/updateserverprovider.h>
+#include <graphics/surfacemanager.h>
 #include <e32property.h>
 #include <e32std.h>
 #include <e32cmn.h>
@@ -119,7 +120,8 @@
 
 RSurfaceManager& COpenWfcStreamMap::SurfaceManager()
 	{
-	return iSurfaceManager;
+    WFCI_ASSERT_DEBUG(iSurfaceManager, EOwfPanicInvalidHasMap);
+	return *iSurfaceManager;
 	}
 
 TInt COpenWfcStreamMap::LockDestroy(CSurfaceStream* aStream)
@@ -157,6 +159,7 @@
 
 COpenWfcStreamMap::COpenWfcStreamMap():
 iMap(THashFunction32<TSurfaceId>(COpenWfcStreamMap::HashFunction), TIdentityRelation<TSurfaceId>()),
+iSurfaceManager(NULL),
 iRegisteredUpdaters()
 	{
 	}
@@ -202,7 +205,12 @@
             }
         }
 	iMap.Close();
-	iSurfaceManager.Close();
+    if (iSurfaceManager)
+        {
+        iSurfaceManager->Close();
+        delete iSurfaceManager;
+        iSurfaceManager = NULL;
+        }
 	iMutex.Signal();
 	iMutex.Close();
 	
@@ -241,7 +249,8 @@
 	TSurfaceId surface = TSurfaceId::CreateNullId();
 	User::LeaveIfError(iMap.Insert(surface, NULL));
 
-	User::LeaveIfError(iSurfaceManager.Open());
+	iSurfaceManager = new(ELeave) RSurfaceManager();
+	User::LeaveIfError(iSurfaceManager->Open());
 	RProcess process;
 	TUidType uidType = process.Type();
 	const TInt32 KWservUid = 268450592;
--- a/graphicscomposition/openwfsupport/test/tstreamoperation/tnativestream.cpp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/openwfsupport/test/tstreamoperation/tnativestream.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -947,14 +947,14 @@
         TInt32 attWidth = 0;
         TInt32 attHeight = 0;
         TInt32 attStreamStride = 0;
-        TUidPixelFormat attStreamFormat = EUidPixelFormatUnknown;
+        TInt32 attStreamFormat = EUidPixelFormatUnknown;
         TInt32 attStreamPixelSize = 0;
         
         SymbianStreamGetHeader(ns, &attWidth, &attHeight, &attStreamStride, &attStreamFormat, &attStreamPixelSize);		
             
         ASSERT_EQUALS(attWidth, width);
         ASSERT_EQUALS(attHeight, height);
-        ASSERT_EQUALS(attStreamFormat, supportedFormats[x].symbianPixelFormat);
+        ASSERT_EQUALS(attStreamFormat, (TInt32)supportedFormats[x].symbianPixelFormat);
         if (BytesPerPixel(supportedFormats[x].symbianPixelFormat) > 0)
             {
             ASSERT_EQUALS(attStreamStride, (streamPixelSize * width));
@@ -4678,14 +4678,14 @@
     TInt32 preFlipWidth = 0;
     TInt32 preFlipHeight = 0;
     TInt32 preFlipStreamStride = 0;
-    TUidPixelFormat preFlipStreamFormat = EUidPixelFormatUnknown;
+    TInt32 preFlipStreamFormat = EUidPixelFormatUnknown;
     TInt32 preFlipStreamPixelSize = 0;
     
     // For header variables after flipping
     TInt32 width = 0;
     TInt32 height = 0;
     TInt32 streamStride = 0;
-    TUidPixelFormat streamFormat = EUidPixelFormatUnknown;
+    TInt32 streamFormat = EUidPixelFormatUnknown;
     TInt32 streamPixelSize = 0;
     
     for (TInt ii = 0; ii < size; ii++)
--- a/graphicscomposition/surfaceupdate/group/graphics_surfaceupdate.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/surfaceupdate/group/graphics_surfaceupdate.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_surfaceupdate
 source	\sf\os\graphics\graphicscomposition\surfaceupdate
 binary	\sf\os\graphics\graphicscomposition\surfaceupdate\group		all
--- a/graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmh	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmh	Fri Jun 11 14:58:47 2010 +0300
@@ -13,7 +13,7 @@
 // Description:
 //
 
-CAPABILITY PowerMgmt ReadDeviceData WriteDeviceData ProtServ
+CAPABILITY All -tcb
 targettype        DLL
 VENDORID 0x70000001
 
--- a/graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmp	Fri Jun 11 14:58:47 2010 +0300
@@ -23,4 +23,6 @@
 target	surfaceupdateserver.dll
 uid		0x1000008D 0x10283036
 
+EPOCALLOWDLLDATA
+
 SMPSAFE
--- a/graphicscomposition/surfaceupdate/group/tsurfaceupdateserver.mmp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/surfaceupdate/group/tsurfaceupdateserver.mmp	Fri Jun 11 14:58:47 2010 +0300
@@ -48,6 +48,6 @@
 
 deffile           surfaceupdateserver.def
 
-
+EPOCALLOWDLLDATA
 
 SMPSAFE
--- a/graphicscomposition/surfaceupdate/inc/surfaceupdateserver.h	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/surfaceupdate/inc/surfaceupdateserver.h	Fri Jun 11 14:58:47 2010 +0300
@@ -186,6 +186,7 @@
 	TBool IsActive() const;
 	CUpdateReceiverNotification* UpdateReceiverNotification(TInt aReceiverPriority = 0);
 	void CheckForReuse();
+	void SetNumUpdateReceivers(TInt aNumUpdateReceivers);
 #ifdef TEST_SURFACE_UPDATE
 	CSurfaceUpdateServer* Server();
 	void IncNumberPendingNotifications();
--- a/graphicscomposition/surfaceupdate/src/surfaceupdateserver.cpp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/surfaceupdate/src/surfaceupdateserver.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -23,11 +23,13 @@
 #ifdef TEST_SURFACE_UPDATE
 #include "surfaceupdatetest.h"
 #endif
-
+#include <e32atomics.h>
 
 
 const TUint KDefaultHeapSize=0x10000;
 
+void *gProvider = NULL;
+RFastLock gProviderFastLock;
 
 /**
 The server maintains session with the clients. 
@@ -351,12 +353,14 @@
 	{
 	TInt numElement = iUpdateReceiverNotificationBatches.Count();
 	CUpdateReceiverNotificationBatch* notifier = NULL;
+	CSurfaceUpdateServer* server = (CSurfaceUpdateServer*) Server();
 	for(TInt index = 0; index < numElement; index++)
 		{
 		notifier = iUpdateReceiverNotificationBatches[index];
 		if(notifier->iType == EUpdateSrvReusable)
 			{
 			__ASSERT_ALWAYS(notifier->iMsg.IsNull(), CSurfaceUpdateServer::PanicServer(EUpdateServPanicDataIntegrity));
+            notifier->SetNumUpdateReceivers(server->NumUpdateReceivers());
 			if(numElement > index + 1)
 				{
 			//to improve a search, append the element to the end of the array
@@ -367,7 +371,6 @@
 			}
 		}
 	
-	CSurfaceUpdateServer* server = (CSurfaceUpdateServer*) Server();
 	notifier = new (ELeave) CUpdateReceiverNotificationBatch(this, server->NumUpdateReceivers());
 	CleanupStack::PushL(notifier);
 	iUpdateReceiverNotificationBatches.AppendL(notifier);
@@ -883,6 +886,11 @@
 	}
 #endif
 
+void CUpdateReceiverNotificationBatch::SetNumUpdateReceivers(TInt aNumUpdateReceivers)
+    {
+    __ASSERT_DEBUG(iType == EUpdateSrvReusable, CSurfaceUpdateServer::PanicServer(EUpdateServPanicDataIntegrity));
+    iNumUpdateReceivers = aNumUpdateReceivers;
+    }
 /**
 
 The class will be used by composition receiver
@@ -955,6 +963,10 @@
 
 	if(thread.Open(iThreadId) == KErrNone)
 		{
+	    TInt err = gProviderFastLock.CreateLocal();
+		//ignore error on double create.
+	    gProviderFastLock.Wait();
+	    gProvider = NULL;
 		if (iServer)
 			{
 			while((static_cast<CSurfaceUpdateServer*> (iServer))-> iNumberPendingNotification)
@@ -969,7 +981,7 @@
 		User::WaitForRequest(status1);
 		thread.Close();
 		
-		Dll::SetTls(NULL);
+     	gProviderFastLock.Close();
 		}
 #endif
 	}
@@ -1034,10 +1046,21 @@
 #else
 	TPtrC serverName(KTestSurfaceUpdateServerName);
 #endif
-	TAny *provider = Dll::Tls();
+	//locking
+	TInt err = gProviderFastLock.CreateLocal();
+	
+	if (err != KErrNone && err != KErrAlreadyExists)
+	    {
+        return err;
+	    }
+	
+	gProviderFastLock.Wait();
+
+	TAny *provider = gProvider;
 	if(provider)
 		{
 		aSurfaceUpdateServerProvider = static_cast <MSurfaceUpdateServerProvider*> (provider);
+		gProviderFastLock.Signal();
 		return KErrNone;
 		}
 	TFullName   name;
@@ -1054,6 +1077,7 @@
 		TRAP(res, tm.FormatL(buf, _L("_%H%T%S%C")));
 		if(res != KErrNone)	
 			{
+			gProviderFastLock.Signal();
 			return res;
 			}
 		TBuf<128> threadName(serverName);
@@ -1077,7 +1101,7 @@
 			serverThread.Resume();
 			User::WaitForRequest(rendezvousStatus);
 			res = rendezvousStatus.Int();
-			Dll::SetTls(aSurfaceUpdateServerProvider);
+			gProvider = aSurfaceUpdateServerProvider;
 			}
     // The thread has not been created - clearly there's been a problem.
 		else
@@ -1085,5 +1109,6 @@
 			serverThread.Close();
 			}
 		}
+       gProviderFastLock.Signal();
 		return res;
 	}
--- a/graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.cpp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -1759,56 +1759,6 @@
 	}
 
 /**
-  @SYMTestCaseID GRAPHICS-SURFACEUPDATE-0019
-
-
-  @SYMPREQ 1007
-  
-  @SYMREQ 8223
-
-  @SYMTestCaseDesc Starting the surface update server in two different threads.
-
-  @SYMTestPriority High
-
-  @SYMTestStatus Implemented
-
-  @SYMTestActions Start the surface update server in two different threads.
-  	
-  @SYMTestExpectedResults Thread 1: KErrNone
-     Thread 2: KErrAlreadyExists.
-*/
-void CTSurfaceUpdate::TestCase12L()
-	{
-	MSurfaceUpdateServerProvider *surfaceUpdateProvider = NULL;
-	TInt res = StartSurfaceUpdateServer(surfaceUpdateProvider);
-	TEST(res == KErrNone);
-	User::LeaveIfError(res);
-
-	_LIT(KThreadName, "TestServerStartupTwoThreads");
-	TTime tm;
-	TBuf<32> buf;
-	tm.UniversalTime();
-	TRAP(res, tm.FormatL(buf, _L("_%H%T%S%C")));
-	TEST(res == KErrNone);
-	User::LeaveIfError(res);
-	TBuf<128> threadName(KThreadName);
-	threadName.Append(buf); //guarantee uniqueness  of the thread name
-	RThread thread;
-	res = thread.Create(threadName,
-			TestServerStartupTwoThreads,
-			KDefaultStackSize,
-			&User::Heap(),
-			NULL);
-	TEST(res == KErrNone);
-	User::LeaveIfError(res);
-	TRequestStatus rendezvousStatus;
-	thread.Rendezvous(rendezvousStatus);
-	thread.Resume();
-	User::WaitForRequest(rendezvousStatus);
-	TEST(KErrAlreadyExists == rendezvousStatus.Int());
-	}
-	
-/**
 Starting the update server in another thread - called from TestCase12
 */
 TInt CTSurfaceUpdate::TestServerStartupTwoThreads(TAny*)
@@ -2252,28 +2202,20 @@
 		}
 	case 12:
  		{
- 		((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0019"));
- 		INFO_PRINTF1(_L("TestCase12"));
- 		TRAPD(ret, TestCase12L());
- 		TEST(ret == KErrNone);
- 		break;
-		}
-	case 13:
- 		{
  		((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0020"));
  		INFO_PRINTF1(_L("TestCase13L"));
  		TRAPD(ret, TestCase13L());
  		TEST(ret == KErrNone);
  		break;
 		}
-	case 14:
+	case 13:
  		{
  		((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0022"));
  		INFO_PRINTF1(_L("TestCase14"));
  		TestCase14();
  		break;
 		}
-	case 15:
+	case 14:
  		{
 		((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0023"));
  		INFO_PRINTF1(_L("TestCase15"));
@@ -2281,7 +2223,7 @@
  		TEST(ret == KErrNone);
  		break;
 		}
-	case 16:
+	case 15:
  		{
 		((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0024"));
  		INFO_PRINTF1(_L("TestCase16"));
@@ -2289,7 +2231,7 @@
  		TEST(ret == KErrNone);
  		break;
 		}
-	case 17:
+	case 16:
  		{
 		((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0028"));
  		INFO_PRINTF1(_L("TestCase17"));
@@ -2297,7 +2239,7 @@
  		TEST(ret == KErrNone);
  		break;
 		}
-	case 18:
+	case 17:
  		{
 		((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0025"));
  		INFO_PRINTF1(_L("TestCase18"));
@@ -2305,7 +2247,7 @@
  		TEST(ret == KErrNone);
  		break;
 		}
-	case 19:
+	case 18:
 		{
 		((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0027"));
 	 	INFO_PRINTF1(_L("TestCaseNotifyWhenAvailableGlobal"));
@@ -2313,7 +2255,7 @@
  		TEST(ret == KErrNone);
  		break;
 		}
-	case 20:
+	case 19:
 		{
 		((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0029"));
 	 	INFO_PRINTF1(_L("TestCaseRegisterIdenticalPrioritiesL"));
@@ -2321,7 +2263,7 @@
  		TEST(ret == KErrNone);
  		break;
 		}
-	case 21:
+	case 20:
  		{//should be the last test case
 		((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0021"));
  		INFO_PRINTF1(_L("TestCaseTerminateServer"));
--- a/graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.h	Thu May 27 14:13:51 2010 +0300
+++ b/graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.h	Fri Jun 11 14:58:47 2010 +0300
@@ -52,7 +52,6 @@
 	void TestCase9L();
 	void TestCase10();
 	void TestCase11();
-	void TestCase12L();
 	void TestCase13L();
 	void TestCase14();
 	void TestCase15();
--- a/graphicsdeviceinterface/bitgdi/group/graphics_bitgdi.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsdeviceinterface/bitgdi/group/graphics_bitgdi.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_bitgdi
 source	\sf\os\graphics\graphicsdeviceinterface\bitgdi
 binary	\sf\os\graphics\graphicsdeviceinterface\bitgdi\group	all
--- a/graphicsdeviceinterface/colourpalette/group/graphics_palette.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsdeviceinterface/colourpalette/group/graphics_palette.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_palette
 source	\sf\os\graphics\graphicsdeviceinterface\colourpalette
 binary	\sf\os\graphics\graphicsdeviceinterface\colourpalette\group	all
--- a/graphicsdeviceinterface/directgdi/group/graphics_directgdi.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsdeviceinterface/directgdi/group/graphics_directgdi.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_directgdi
 source	\sf\os\graphics\graphicsdeviceinterface\directgdi
 binary	\sf\os\graphics\graphicsdeviceinterface\directgdi\group	all
--- a/graphicsdeviceinterface/directgdiadaptation/group/graphics_directgdiadapter.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsdeviceinterface/directgdiadaptation/group/graphics_directgdiadapter.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_directgdiadapter
 source	\sf\os\graphics\graphicsdeviceinterface\directgdiadaptation
 binary	\sf\os\graphics\graphicsdeviceinterface\directgdiadaptation\group	all
--- a/graphicsdeviceinterface/directgdiinterface/group/graphics_directgdiheaders.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsdeviceinterface/directgdiinterface/group/graphics_directgdiheaders.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_directgdiheaders
 source	\sf\os\graphics\graphicsdeviceinterface\directgdiinterface
 binary	\sf\os\graphics\graphicsdeviceinterface\directgdiinterface\group	all
--- a/graphicsdeviceinterface/screendriver/group/graphics_screendriver.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsdeviceinterface/screendriver/group/graphics_screendriver.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_screendriver
 source	\sf\os\graphics\graphicsdeviceinterface\screendriver
 binary	\sf\os\graphics\graphicsdeviceinterface\screendriver\group	all
--- a/graphicshwdrivers/surfacemgr/group/graphics_surfacemanager.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicshwdrivers/surfacemgr/group/graphics_surfacemanager.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_surfacemanager
 source	\sf\os\graphics\graphicshwdrivers\surfacemgr
 binary	\sf\os\graphics\graphicshwdrivers\surfacemgr\group		all
--- a/graphicsresourceservices/graphicsresource/group/graphics_graphicsresource.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsresourceservices/graphicsresource/group/graphics_graphicsresource.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_graphicsresource
 source	\sf\os\graphics\graphicsresourceservices\graphicsresource
 binary	\sf\os\graphics\graphicsresourceservices\graphicsresource\group	all
--- a/graphicsresourceservices/graphicsresourceadaptation/group/graphics_graphicsresourceadapter.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsresourceservices/graphicsresourceadaptation/group/graphics_graphicsresourceadapter.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_graphicsresourceadapter
 source	\sf\os\graphics\graphicsresourceservices\graphicsresourceadaptation
 binary	\sf\os\graphics\graphicsresourceservices\graphicsresourceadaptation\group	all
--- a/graphicsresourceservices/graphicsresourceimplementation/group/graphics_graphicsresourceimplementation.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsresourceservices/graphicsresourceimplementation/group/graphics_graphicsresourceimplementation.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_graphicsresourceimplementation
 source	\sf\os\graphics\graphicsresourceservices\graphicsresourceimplementation
 binary	\sf\os\graphics\graphicsresourceservices\graphicsresourceimplementation\group	all
--- a/graphicsresourceservices/graphicsresourceinterface/group/graphics_graphicsresourceinterface.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsresourceservices/graphicsresourceinterface/group/graphics_graphicsresourceinterface.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_graphicsresourceinterface
 source	\sf\os\graphics\graphicsresourceservices\graphicsresourceinterface
 binary	\sf\os\graphics\graphicsresourceservices\graphicsresourceinterface\group	all
--- a/graphicstest/graphicstestharness/automation/graphicssystemgui.sysdef.xml	Thu May 27 14:13:51 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/graphicssystemgui.sysdef.xml	Fri Jun 11 14:58:47 2010 +0300
@@ -172,6 +172,9 @@
 					<component name="EGL Test">
 						<unit bldFile="sf\os\graphics\egl\egltest\group" mrp="sf\os\graphics\egl\egltest\group\graphics_egltest.mrp"/>
 					</component>
+					<component name="EGL Test Ext">
+						<unit bldFile="sf\os\graphics\egl\egltestext\group" mrp="sf\os\graphics\egl\egltestext\group\graphics_egltestext.mrp"/>
+					</component>
 					<component name="EGL Interface">
 						<unit bldFile="sf\os\graphics\egl\eglinterface\group" mrp="sf\os\graphics\egl\eglinterface\group\graphics_eglheaders.mrp"/>
 					</component>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/automation/h4/roms.endpoint.txt	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,32 @@
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics0a_armv5_dpdef','Graphics Test ROM (0a) DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_00a.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby outlineshadow.iby FntStoreRebootTests.iby','-D__MMC -DGRAPHICS_MISTRAL_ROM -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DGRAPHICS_EXCLUDE_FREETYPE','h4hrp_graphics0b_armv5_dpdef','Graphics Test ROM (0b) - Outline Shadow DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_00b.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','h4hrp_graphics0c_armv5_dpdef','Graphics Test ROM (0c) - Example Rasterizer Included DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_00c.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test1.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics1_armv5_dpdef','Graphics Test ROM (1) DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_01.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test1.iby fbsrasterizertests.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','h4hrp_graphics1a_armv5_dpdef','Graphics Test ROM (1a) - FbsRasterizer DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_01a.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test2.iby internaltestfonts.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics2_armv5_dpdef','Graphics Test ROM (2) DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_02.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby openvgtest.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics3_armv5_dpdef','Graphics Test ROM (3) - OpenVG DP Default','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_03.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby supplieropenvgtest.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics3a_armv5_dpdef','Graphics Test ROM (3a) - OpenVG tests requiring USB/Memory Card support DP Default','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_03a.txt' ,'')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics4_armv5_dpdef','Graphics Test ROM (4) - WServ DP Default','\epoc32\data\z\system\data\ws_test.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_04.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics4ct_armv5_dpdef','Graphics Test ROM (4ct) - WServ Change Tracking DP Default','\epoc32\data\z\system\data\ws_test_changetracking.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_04ct.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby te_uibench.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','h4hrp_graphics5a_armv5_dpdef','Graphics Test ROM (5a) - UIBench DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_05a.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby internaltestfonts.iby te_outlineshadow.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DGRAPHICS_EXCLUDE_FREETYPE','h4hrp_graphics5b_armv5_dpdef','Graphics Test ROM (5b) - UIBench - Outline Shadow DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_05b.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby te_uibench_s60.iby egl.iby opengles.iby openvg.iby internaltestfonts.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','h4hrp_uibench_s60_armv5_dpdef','Graphics Test ROM UIBench S60 DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_uibench_s60.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test2.iby wservtest.iby csc_plugin.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics7_armv5_dpdef','Graphics Test ROM (7) DP Default','\epoc32\data\z\graphics\wsini_integ_color64k.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_07.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec t_wservinteg.iby opengles.iby graphics_testharness.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics8_armv5_dpdef','Graphics Test ROM (8) - WServ Integ DP Default','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini;\epoc32\data\z\system\data\testexecute_modified.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_08.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom textshell platsec surfacemanagertest.iby wservtest.iby gce_tests.iby tdisplaychannel.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','h4hrp_graphics9_armv5_dpdef','Graphics Test ROM (9) - Hybrid GCE DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_09.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test2.iby wservtest.iby csc_plugin.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics12_armv5_dpdef','Graphics Test ROM (12) DP Default','\epoc32\data\z\graphics\wsini_integ_color16ma.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_12.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby t_wservgenericplugin.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics13_armv5_dpdef','Graphics Test ROM (13) - Generic Plugin DP Default','\epoc32\data\z\wstest\genericplugin\wsini_nga.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_13.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby twservstresstest.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','h4hrp_graphics15_armv5_dpdef','Graphics Test ROM (15) - Stress DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_15.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby t_extendedbitmaprenderstage.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','h4hrp_graphics16_armv5_dpdef','Graphics Test ROM (16) - Extended Bitmap Render Stage DP Default','\epoc32\data\z\wstest\textendedbitmap\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_16.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby t_ratelimiter.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','h4hrp_graphics17_armv5_dpdef','Graphics Test ROM (17) - Rate Limiter DP Default','\epoc32\data\z\wstest\ratelimiter\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_17.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby openvgtest.iby surfaceupdatetest_integ.iby t_gcenotification.iby graphics_test2.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','h4hrp_graphics18_armv5_dpdef','Graphics Test ROM (18) - Composited Screen Capture DP Default','\epoc32\data\z\wstest\wsini_csc_nga_qvga.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_18.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby egltesthybrid.iby egltestendpointauto.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','h4hrp_graphicseglhybrid_armv5_dpdef','Graphics Test ROM (eglhybrid) - EGL Hybrid Graphics Implementation DP Default','\epoc32\data\z\egltest\endpoint_autotest_wsini.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_eglhybrid.endpoint.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby egltestref.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_USE_EGL_REF','h4hrp_graphicseglref_armv5_dpdef','Graphics Test ROM (eglref) - EGL Reference Graphics Implementation DP Default','\epoc32\data\z\wstest\wsini_csc_nga_qvga.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_eglref.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby talf.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','h4hrp_graphics23_armv5_dpdef','Graphics Test ROM (23) - ALF/ChangeTracking DP Default','\epoc32\data\z\talf\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_23.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby t_eventchecker.iby t_bitgdirenderstage.iby wserv.oby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DRVT','h4hrp_graphics24_armv5_dpdef','Graphics Test ROM (24) - BitGDI Renderstage DP Default','\epoc32\data\z\wstest\tbitgdirenderstage\arm\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_24.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby graphics_testharness.iby talf.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics25_armv5_dpdef','Graphics Test ROM (25) - ALF/ChangeTracking per screen DP Default','\epoc32\data\z\talf\wsini_ct_per_screen.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_25.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby tlayercompositiontest.iby csc_plugin.iby tcsc.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics29a_armv5_dpdef','Graphics Test ROM (29a) - Layer Composition DP Default','\epoc32\data\z\tlayercomposition\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_29a.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby tlayercompositiontest.iby csc_plugin.iby tcsc.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics29b_armv5_dpdef','Graphics Test ROM (29b) - Layer Composition, No Autoclear DP Default','\epoc32\data\z\tlayercomposition\wsini_noautoclear.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_29b.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec appfwk_test.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -D_DEBUG','h4hrp_uiframeworks_armv5_dpdef','UI Frameworks DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_uif.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby sgresourcetest.iby opengles.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphicsresource_armv5_dpdef','Graphics Test ROM (GRI) - Graphics Resource DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_gri.txt','')
+Rom('armv5', 'h4hrp minigui', '-nosymbols -D__MMC -DUSE_SDIO_SD_MMC', 'h4hrp_minigui', 'MiniGUI ROM', '' )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/automation/h4/roms.endpoint.wdp.txt	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,35 @@
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics0a_armv5_wdp','Graphics Test ROM (0a) WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_00a.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby outlineshadow.iby FntStoreRebootTests.iby dptestcons.oby','-D__MMC -DGRAPHICS_MISTRAL_ROM -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DGRAPHICS_EXCLUDE_FREETYPE -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics0b_armv5_wdp','Graphics Test ROM (0b) - Outline Shadow WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_00b.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>" -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics0c_armv5_wdp','Graphics Test ROM (0c) - Example Rasterizer Included WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_00c.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test1.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics1_armv5_wdp','Graphics Test ROM (1) WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_01.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test1.iby fbsrasterizertests.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>" -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics1a_armv5_wdp','Graphics Test ROM (1a) - FbsRasterizer WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_01a.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test2.iby internaltestfonts.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics2_armv5_wdp','Graphics Test ROM (2) WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_02.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby openvgtest.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics3_armv5_wdp','Graphics Test ROM (3) - OpenVG WDP','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_03.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby supplieropenvgtest.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics3a_armv5_wdp','Graphics Test ROM (3a) - OpenVG tests requiring USB/Memory Card support WDP','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_03a.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics4_armv5_wdp','Graphics Test ROM (4) - WServ WDP','\epoc32\data\z\system\data\ws_test.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_04.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics4ct_armv5_wdp','Graphics Test ROM (4ct) - WServ Change Tracking WDP','\epoc32\data\z\system\data\ws_test_changetracking.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_04ct.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby te_uibench.iby internaltestfonts.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>" -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics5a_armv5_wdp','Graphics Test ROM (5a) - UIBench WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_05a.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby internaltestfonts.iby te_outlineshadow.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DGRAPHICS_EXCLUDE_FREETYPE -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics5b_armv5_wdp','Graphics Test ROM (5b) - UIBench - Outline Shadow WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_05b.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby te_uibench_s60.iby egl.iby opengles.iby openvg.iby internaltestfonts.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>" -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_uibench_s60_armv5_wdp','Graphics Test ROM UIBench S60 WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_uibench_s60.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test2.iby wservtest.iby csc_plugin.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics7_armv5_wdp','Graphics Test ROM (7) WDP','\epoc32\data\z\graphics\wsini_integ_color64k.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_07.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec t_wservinteg.iby opengles.iby graphics_testharness.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics8_armv5_wdp','Graphics Test ROM (8) - WServ Integ WDP','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_08.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom textshell platsec surfacemanagertest.iby wservtest.iby gce_tests.iby tdisplaychannel.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics9_armv5_wdp','Graphics Test ROM (9) - Hybrid GCE WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_09.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test2.iby wservtest.iby csc_plugin.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics12_armv5_wdp','Graphics Test ROM (12) WDP','\epoc32\data\z\graphics\wsini_integ_color16ma.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_12.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby t_wservgenericplugin.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics13_armv5_wdp','Graphics Test ROM (13) - Generic Plugin WDP','\epoc32\data\z\wstest\genericplugin\wsini_nga.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_13.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby twservstresstest.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics15_armv5_wdp','Graphics Test ROM (15) - Stress WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_15.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby t_extendedbitmaprenderstage.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics16_armv5_wdp','Graphics Test ROM (16) - Extended Bitmap Render Stage WDP','\epoc32\data\z\wstest\textendedbitmap\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_16.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby t_ratelimiter.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics17_armv5_wdp','Graphics Test ROM (17) - Rate Limiter WDP','\epoc32\data\z\wstest\ratelimiter\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_17.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby t_gcenotification.iby openvgtest.iby surfaceupdatetest_integ.iby graphics_test2.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics18_armv5_wdp','Graphics Test ROM (18) - Composited Screen Capture WDP','\epoc32\data\z\wstest\wsini_csc_nga_qvga.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_18.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby egltesthybrid.iby dptestcons.oby egltestendpointauto.iby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphicseglhybrid_armv5_wdp','Graphics Test ROM (eglhybrid) - EGL Hybrid Graphics Implementation WDP','\epoc32\data\z\egltest\endpoint_autotest_wsini.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_eglhybrid.endpoint.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby egltestref.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_USE_EGL_REF -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphicseglref_armv5_wdp','Graphics Test ROM (eglref) - EGL Reference Implementation WDP','\epoc32\data\z\wstest\wsini_csc_nga_qvga.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_eglref.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test1.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DSYMBIAN_GRAPHICS_FBSERV_PAGEDDATA -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics19_armv5_wdp','Graphics Test ROM (19) WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_19.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test1.iby t_wdp.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DSYMBIAN_GRAPHICS_FBSERV_UNPAGEDDATA -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics20_armv5_wdp','Graphics Test ROM (20) WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_20.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test1.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DSYMBIAN_GRAPHICS_FBSERV_PAGE_BITMAP_DATA_ONLY -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics21_armv5_wdp','Graphics Test ROM (21) WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_21.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_test1.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DSYMBIAN_GRAPHICS_FBSERV_PAGE_BITMAP_DATA_AND_SHARED_HEAP_ONLY -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics22_armv5_wdp','Graphics Test ROM (22) WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_22.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby talf.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics23_armv5_wdp','Graphics Test ROM (23) - ALF/ChangeTracking WDP','\epoc32\data\z\talf\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_23.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby t_eventchecker.iby t_bitgdirenderstage.iby wserv.oby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DRVT -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics24_armv5_wdp','Graphics Test ROM (24) - BitGDI Renderstage WDP','\epoc32\data\z\wstest\tbitgdirenderstage\arm\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_24.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby graphics_testharness.iby talf.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics25_armv5_wdp','Graphics Test ROM (25) - ALF/ChangeTracking per screen configuration WDP','\epoc32\data\z\talf\wsini_ct_per_screen.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_25.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby tlayercompositiontest.iby csc_plugin.iby tcsc.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics29a_armv5_wdp','Graphics Test ROM (29a) - Layer Composition WDP','\epoc32\data\z\tlayercomposition\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_29a.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby tlayercompositiontest.iby csc_plugin.iby tcsc.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics29b_armv5_wdp','Graphics Test ROM (29b) - Layer Composition, No Autoclear WDP','\epoc32\data\z\tlayercomposition\wsini_noautoclear.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_29b.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec appfwk_test.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -D_DEBUG -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_uiframeworks_armv5_wdp','UI Frameworks WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_uif.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby sgresourcetest.iby opengles.iby dptestcons.oby','-D__MMC -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphicsresource_armv5_wdp','Graphics Test ROM (GRI) - Graphics Resource WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_gri.txt','')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/automation/h4/tests_eglhybrid.endpoint.txt	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,48 @@
+# tests_eglhybrid.txt
+# Copyright (c) 1995-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:
+
+# program,log,commdb,script,timeout,release,pre cmd,post cmd
+
+# EGL
+TESTEXECUTE, \logs\testexecute\egltest_t_basicegl.htm,                          , z:\egltest\egltest_t_basicegl.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_hybrid.htm,                           	, z:\egltest\egltest_t_hybrid.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_nativepixmaptype_hg.htm,               , z:\egltest\egltest_t_nativepixmaptype_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_createpixmapsurface_hg.htm,            , z:\egltest\egltest_t_createpixmapsurface_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_hg.htm,                          , z:\egltest\egltest_t_image_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_negative_hg.htm,                 , z:\egltest\egltest_t_image_negative_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_internalapi.htm,                       , z:\egltest\egltest_t_internalapi.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_lowmemory.htm,                         , z:\egltest\egltest_t_lowmemory.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_windowresize.htm,                      , z:\egltest\egltest_t_windowresize.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_swapbehavior.htm,                      , z:\egltest\egltest_t_swapbehavior.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_benchmark_swapbuffers.htm,             , z:\egltest\egltest_t_benchmark_swapbuffers.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_unittest.htm,                          , z:\egltest\egltest_t_unittest.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_texturing.htm,                         , z:\egltest\egltest_t_texturing.script, 600
+
+# EGL - Hybrid Graphics Implementation (Common tests)
+TESTEXECUTE, \logs\testexecute\egltest_t_geterroranddisplay.htm,                , z:\egltest\egltest_t_geterroranddisplay.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_general.htm,                           , z:\egltest\egltest_t_general.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_syncobject.htm,                        , z:\egltest\egltest_t_syncobject.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_syncobject_flush.htm,                  , z:\egltest\egltest_t_syncobject_flush.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_nativepixmaptype.htm,                  , z:\egltest\egltest_t_nativepixmaptype.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_createpixmapsurface.htm,               , z:\egltest\egltest_t_createpixmapsurface.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image.htm,                             , z:\egltest\egltest_t_image.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_multithread.htm,                 , z:\egltest\egltest_t_image_multithread.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_multiprocess.htm,                , z:\egltest\egltest_t_image_multiprocess.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_negative.htm,                    , z:\egltest\egltest_t_image_negative.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_sibling.htm,                           , z:\egltest\egltest_t_sibling.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_vgimagetosurfaces.htm,                 , z:\egltest\egltest_t_vgimagetosurfaces.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_benchmark_sgimage.htm,                 , z:\egltest\egltest_t_benchmark_sgimage.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_endpoint.htm,                          , z:\egltest\egltest_t_endpoint.script, 600
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/automation/h6/roms.endpoint.txt	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,32 @@
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_test.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics0a_armv5_dpdef','Graphics Test ROM (0a) DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_00a.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby outlineshadow.iby FntStoreRebootTests.iby','-D__MMC -DGRAPHICS_MISTRAL_ROM -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DGRAPHICS_EXCLUDE_FREETYPE','34xx_sdp_graphics0b_armv5_dpdef','Graphics Test ROM (0b) - Outline Shadow DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_00b.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_test.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','34xx_sdp_graphics0c_armv5_dpdef','Graphics Test ROM (0c) - Example Rasterizer Included DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_00c.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_test1.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics1_armv5_dpdef','Graphics Test ROM (1) DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_01.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_test1.iby fbsrasterizertests.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','34xx_sdp_graphics1a_armv5_dpdef','Graphics Test ROM (1a) - FbsRasterizer DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_01a.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_test2.iby internaltestfonts.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics2_armv5_dpdef','Graphics Test ROM (2) DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_02.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby openvgtest.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics3_armv5_dpdef','Graphics Test ROM (3) - OpenVG DP Default','\epoc32\data\z\graphics\wsini_integ_h6.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_03.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby supplieropenvgtest.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics3a_armv5_dpdef','Graphics Test ROM (3a) - OpenVG tests requiring USB/Memory Card support DP Default','\epoc32\data\z\graphics\wsini_integ_h6.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_03a.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec wserv.oby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics4_armv5_dpdef','Graphics Test ROM (4) - WServ DP Default','\epoc32\data\z\system\data\ws_test.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_04.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec wserv.oby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics4ct_armv5_dpdef','Graphics Test ROM (4ct) - WServ Change Tracking DP Default','\epoc32\data\z\system\data\wservu_om_h6_changetracking.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_04ct.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby te_uibench.iby internaltestfonts.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','34xx_sdp_graphics5a_armv5_dpdef','Graphics Test ROM (5a) - UIBench DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_05a.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby internaltestfonts.iby te_outlineshadow.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DGRAPHICS_EXCLUDE_FREETYPE','34xx_sdp_graphics5b_armv5_dpdef','Graphics Test ROM (5b) - UIBench - Outline Shadow DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_05b.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby te_uibench_s60.iby egl.iby opengles.iby openvg.iby internaltestfonts.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','34xx_sdp_uibench_s60_armv5_dpdef','Graphics Test ROM UIBench S60 DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_uibench_s60.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_test2.iby wservtest.iby csc_plugin.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics7_armv5_dpdef','Graphics Test ROM (7) DP Default','\epoc32\data\z\wstest\wsini-h6gcedsa.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_07.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec t_wservinteg.iby opengles.iby graphics_testharness.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics8_armv5_dpdef','Graphics Test ROM (8) - WServ Integ DP Default','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_08.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom textshell platsec surfacemanagertest.iby wservtest.iby gce_tests.iby tdisplaychannel.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','34xx_sdp_graphics9_armv5_dpdef','Graphics Test ROM (9) - Hybrid GCE DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_09.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_test2.iby wservtest.iby csc_plugin.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics12_armv5_dpdef','Graphics Test ROM (12) DP Default','\epoc32\data\z\graphics\wsini_integ_h6_color16ma.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_12.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby t_wservgenericplugin.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics13_armv5_dpdef','Graphics Test ROM (13) - Generic Plugin DP Default','\epoc32\data\z\wstest\genericplugin\wsini_nga.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_13.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby twservstresstest.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','34xx_sdp_graphics15_armv5_dpdef','Graphics Test ROM (15) - Stress DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_15.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby t_extendedbitmaprenderstage.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','34xx_sdp_graphics16_armv5_dpdef','Graphics Test ROM (16) - Extended Bitmap Render Stage DP Default','\epoc32\data\z\wstest\textendedbitmap\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_16.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby t_ratelimiter.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','34xx_sdp_graphics17_armv5_dpdef','Graphics Test ROM (17) - Rate Limiter DP Default','\epoc32\data\z\wstest\ratelimiter\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_17.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby t_gcenotification.iby openvgtest.iby surfaceupdatetest_integ.iby graphics_test2.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','34xx_sdp_graphics18_armv5_dpdef','Graphics Test ROM (18) - Composited Screen Capture DP Default','\epoc32\data\z\wstest\wsini_csc_nga_h6.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_18.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby egltesthybrid.iby egltestendpointauto.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','34xx_sdp_graphicseglhybrid_armv5_dpdef','Graphics Test ROM (eglhybrid) - EGL Hybrid Graphics Implementation DP Default','\epoc32\data\z\egltest\endpoint_autotest_wsini.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_eglhybrid.endpoint.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby egltestref.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_USE_EGL_REF','34xx_sdp_graphicseglref_armv5_dpdef','Graphics Test ROM (eglref) - EGL Reference Graphics Implementation DP Default','\epoc32\data\z\wstest\wsini_csc_nga_h6.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_eglref.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby talf.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','34xx_sdp_graphics23_armv5_dpdef','Graphics Test ROM (23) - ALF/ChangeTracking DP Default','\epoc32\data\z\talf\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_23.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby t_eventchecker.iby t_bitgdirenderstage.iby wserv.oby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DRVT','34xx_sdp_graphics24_armv5_dpdef','Graphics Test ROM (24) - BitGDI Renderstage DP Default','\epoc32\data\z\wstest\tbitgdirenderstage\arm\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_24.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec wserv.oby graphics_testharness.iby talf.iby','-D__MMC -D_NAND2 -DWITH_TVOUT -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics25_armv5_dpdef','Graphics Test ROM (25) - ALF/ChangeTracking per screen DP Default','\epoc32\data\z\talf\wsini_ct_recovery.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_25.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby tlayercompositiontest.iby csc_plugin.iby tcsc.iby','-D__MMC -D_NAND2 -DWITH_TVOUT -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics29a_armv5_dpdef','Graphics Test ROM (29a) - Layer Composition DP Default','\epoc32\data\z\tlayercomposition\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_29a.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby tlayercompositiontest.iby csc_plugin.iby tcsc.iby','-D__MMC -D_NAND2 -DWITH_TVOUT -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics29b_armv5_dpdef','Graphics Test ROM (29b) - Layer Composition, No Autoclear DP Default','\epoc32\data\z\tlayercomposition\wsini_noautoclear.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_29b.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec appfwk_test.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -D_DEBUG','34xx_sdp_uiframeworks_armv5_dpdef','UI Frameworks DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_uif.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby sgresourcetest.iby opengles.iby','-D__MMC -D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphicsresource_armv5_dpdef','Graphics Test ROM (GRI) - Graphics Resource DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_gri.txt','')
+Rom('armv5', '34xx_sdp minigui', '-nosymbols -D__MMC -DUSE_SDIO_SD_MMC', '34xx_sdp_minigui', 'MiniGUI ROM', '' )
--- a/graphicstest/graphicstestharness/automation/h6/runroms.cmd	Thu May 27 14:13:51 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/h6/runroms.cmd	Fri Jun 11 14:58:47 2010 +0300
@@ -13,34 +13,34 @@
 rem Description:
 rem
 
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphicsresource_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics0a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics0b_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics0c_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics1_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics1a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics2_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics3_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics3a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600 --sendFiles "stress_tests,stress_tests;functional_tests,functional_tests" --retrieveFiles "functional_results_copy/test_results,functional_results/test_results;functional_tests,functional_results/functional_tests;stress_results_copy/test_results,stress_results/test_results"
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics4_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics4ct_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics5a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics5b_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_uibench_s60_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics7_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics8_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics9_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics12_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics13_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics15_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics16_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics17_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics18_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphicseglhybrid_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphicseglref_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics23_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics24_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics25_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics29a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics29b_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
-call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_uiframeworks_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphicsresource_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics0a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics0b_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics0c_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics1_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics1a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics2_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics3_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics3a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600 --sendFiles "stress_tests,stress_tests;functional_tests,functional_tests" --retrieveFiles "functional_results_copy/test_results,functional_results/test_results;functional_tests,functional_results/functional_tests;stress_results_copy/test_results,stress_results/test_results"
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics4_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics4ct_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics5a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics5b_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_uibench_s60_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics7_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics8_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics9_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics12_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics13_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics15_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics16_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics17_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics18_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphicseglhybrid_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphicseglref_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics23_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics24_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics25_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics29a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics29b_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call  ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_uiframeworks_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/automation/h6/tests_eglhybrid.endpoint.txt	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,48 @@
+# tests_eglhybrid.txt
+# Copyright (c) 1995-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:
+
+# program,log,commdb,script,timeout,release,pre cmd,post cmd
+
+# EGL
+TESTEXECUTE, \logs\testexecute\egltest_t_basicegl.htm,                          , z:\egltest\egltest_t_basicegl.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_hybrid.htm,                           	, z:\egltest\egltest_t_hybrid.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_nativepixmaptype_hg.htm,               , z:\egltest\egltest_t_nativepixmaptype_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_createpixmapsurface_hg.htm,            , z:\egltest\egltest_t_createpixmapsurface_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_hg.htm,                          , z:\egltest\egltest_t_image_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_negative_hg.htm,                 , z:\egltest\egltest_t_image_negative_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_internalapi.htm,                       , z:\egltest\egltest_t_internalapi.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_lowmemory.htm,                         , z:\egltest\egltest_t_lowmemory.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_windowresize.htm,                      , z:\egltest\egltest_t_windowresize.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_swapbehavior.htm,                      , z:\egltest\egltest_t_swapbehavior.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_benchmark_swapbuffers.htm,             , z:\egltest\egltest_t_benchmark_swapbuffers.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_unittest.htm,                          , z:\egltest\egltest_t_unittest.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_texturing.htm,                         , z:\egltest\egltest_t_texturing.script, 600
+
+# EGL - Hybrid Graphics Implementation (Common tests)
+TESTEXECUTE, \logs\testexecute\egltest_t_geterroranddisplay.htm,                , z:\egltest\egltest_t_geterroranddisplay.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_general.htm,                           , z:\egltest\egltest_t_general.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_syncobject.htm,                        , z:\egltest\egltest_t_syncobject.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_syncobject_flush.htm,                  , z:\egltest\egltest_t_syncobject_flush.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_nativepixmaptype.htm,                  , z:\egltest\egltest_t_nativepixmaptype.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_createpixmapsurface.htm,               , z:\egltest\egltest_t_createpixmapsurface.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image.htm,                             , z:\egltest\egltest_t_image.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_multithread.htm,                 , z:\egltest\egltest_t_image_multithread.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_multiprocess.htm,                , z:\egltest\egltest_t_image_multiprocess.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_negative.htm,                    , z:\egltest\egltest_t_image_negative.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_sibling.htm,                           , z:\egltest\egltest_t_sibling.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_vgimagetosurfaces.htm,                 , z:\egltest\egltest_t_vgimagetosurfaces.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_benchmark_sgimage.htm,                 , z:\egltest\egltest_t_benchmark_sgimage.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_endpoint.htm,                          , z:\egltest\egltest_t_endpoint.script, 600
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/automation/ne1/roms.endpoint.txt	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,29 @@
+RomAndAutoRom('armv5','naviengine techview platsec graphics_test.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics0a_armv5','Graphics Test ROM (0a)','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_00a.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_test.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','naviengine_graphics0c_armv5','Graphics Test ROM (0c) - Example Rasterizer Included','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_00c.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_test1.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics1_armv5','Graphics Test ROM (1)','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_01.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_test1.iby fbsrasterizertests.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','naviengine_graphics1a_armv5','Graphics Test ROM (1a) - FbsRasterizer','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_01a.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_test2.iby internaltestfonts.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics2_armv5','Graphics Test ROM (2)','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_02.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby openvgtest.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics3_armv5','Graphics Test ROM (3) - OpenVG','\epoc32\data\z\graphics\wsini_integ_norotation.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_03.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec wserv.oby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics4_armv5','Graphics Test ROM (4) - WServ','\epoc32\data\z\system\data\ws_test_singlescreen.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_04.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec wserv.oby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics4ct_armv5','Graphics Test ROM (4ct) - WServ Change Tracking','\epoc32\data\z\system\data\wservu_om_singlescreen_changetracking.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_04ct.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby te_uibench.iby internaltestfonts.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','naviengine_graphics5a_armv5','Graphics Test ROM (5a) - UIBench','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_05a.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby internaltestfonts.iby te_outlineshadow.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DGRAPHICS_EXCLUDE_FREETYPE','naviengine_graphics5b_armv5','Graphics Test ROM (5b) - UIBench - Outline Shadow','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_05b.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby te_uibench_s60.iby egl.iby opengles.iby openvg.iby internaltestfonts.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24UBPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','naviengine_uibench_s60_armv5','Graphics Test ROM UIBench S60 DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_uibench_s60.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_test2.iby wservtest.iby csc_plugin.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics7_armv5','Graphics Test ROM (7)','\epoc32\data\z\graphics\wsini_integ_naviengine_color64k.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_07.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec t_wservinteg.iby opengles.iby graphics_testharness.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics8_armv5','Graphics Test ROM (8) - WServ Integ','\epoc32\data\z\graphics\wsini_integ_norotation.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_08.txt','')
+RomAndAutoRom('armv5','naviengine textshell platsec surfacemanagertest.iby wservtest.iby gce_tests.iby tdisplaychannel.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','naviengine_graphics9_armv5','Graphics Test ROM (9) - Hybrid GCE','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_09.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_test2.iby wservtest.iby csc_plugin.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics12_armv5','Graphics Test ROM (12)','\epoc32\data\z\graphics\wsini_integ_naviengine_color16ma.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_12.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby t_wservgenericplugin.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics13_armv5','Graphics Test ROM (13) - Generic Plugin','\epoc32\data\z\wstest\genericplugin\wsini_nga_onescreen.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_13.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby twservstresstest.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','naviengine_graphics15_armv5','Graphics Test ROM (15) - Stress','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_15.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby t_extendedbitmaprenderstage.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','naviengine_graphics16_armv5','Graphics Test ROM (16) - Extended Bitmap Render Stage','\epoc32\data\z\wstest\textendedbitmap\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_16.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby t_ratelimiter.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','naviengine_graphics17_armv5','Graphics Test ROM (17) - Rate Limiter','\epoc32\data\z\wstest\ratelimiter\wsini_hw_singlescreen.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_17.txt','')
+RomAndAutoRom('armv5','naviengine minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby openvgtest.iby surfaceupdatetest_integ.iby t_gcenotification.iby graphics_test2.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','naviengine_graphics18_armv5','Graphics Test ROM (18) - Composited Screen Capture','\epoc32\data\z\wstest\wsini_csc_nga_naviengine.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_18.txt','')
+RomAndAutoRom('armv5','naviengine minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby egltesthybrid.iby egltestendpointauto.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','naviengine_graphicseglhybrid_armv5','Graphics Test ROM (eglhybrid) - EGL Hybrid Graphics Implementation','\epoc32\data\z\egltest\endpoint_autotest_wsini.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_eglhybrid.endpoint.txt','')
+RomAndAutoRom('armv5','naviengine minigui platsec graphics_testharness.iby csc_plugin.iby tcsc.iby egltestref.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_USE_EGL_REF','naviengine_graphicseglref_armv5','Graphics Test ROM (eglref) - EGL Reference Graphics Implementation','\epoc32\data\z\wstest\wsini_csc_nga_naviengine.ini,\epoc32\data\z\wsini_minigui.ini;\epoc32\data\z\graphicstest\testexecute_minigui.ini,\epoc32\data\z\system\data\testexecute.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_eglref.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby talf.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE','naviengine_graphics23_armv5','Graphics Test ROM (23) - ALF/ChangeTracking','\epoc32\data\z\talf\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_23.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby t_eventchecker.iby t_bitgdirenderstage.iby wserv.oby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DRVT','naviengine_graphics24_armv5','Graphics Test ROM (24) - BitGDI Renderstage','\epoc32\data\z\wstest\tbitgdirenderstage\arm\wsini-single-screen-no-rotation.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_24.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec wserv.oby graphics_testharness.iby talf.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics25_armv5','Graphics Test ROM (25) - ALF/ChangeTracking per screen','\epoc32\data\z\talf\wsini_ct_recovery.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_25.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby tlayercompositiontest.iby csc_plugin.iby tcsc.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics29a_armv5','Graphics Test ROM (29a) - Layer Composition','\epoc32\data\z\tlayercomposition\wsini.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_29a.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby tlayercompositiontest.iby csc_plugin.iby tcsc.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics29b_armv5','Graphics Test ROM (29b) - Layer Composition, No Autoclear','\epoc32\data\z\tlayercomposition\wsini_noautoclear.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_29b.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec appfwk_test.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -D_DEBUG','naviengine_uiframeworks_armv5','UI Frameworks','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_uif.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby sgresourcetest.iby opengles.iby','-D__MMC -DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphicsresource_armv5','Graphics Test ROM (GRI) - Graphics Resource','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_gri.txt','')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/automation/ne1/tests_eglhybrid.endpoint.txt	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,47 @@
+# tests_eglhybrid.txt
+# Copyright (c) 1995-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:
+# program,log,commdb,script,timeout,release,pre cmd,post cmd
+
+# EGL
+TESTEXECUTE, \logs\testexecute\egltest_t_basicegl.htm,                          , z:\egltest\egltest_t_basicegl.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_hybrid.htm,                           	, z:\egltest\egltest_t_hybrid.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_nativepixmaptype_hg.htm,               , z:\egltest\egltest_t_nativepixmaptype_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_createpixmapsurface_hg.htm,            , z:\egltest\egltest_t_createpixmapsurface_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_hg.htm,                          , z:\egltest\egltest_t_image_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_negative_hg.htm,                 , z:\egltest\egltest_t_image_negative_hg.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_internalapi.htm,                       , z:\egltest\egltest_t_internalapi.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_lowmemory.htm,                         , z:\egltest\egltest_t_lowmemory.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_windowresize.htm,                      , z:\egltest\egltest_t_windowresize.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_swapbehavior.htm,                      , z:\egltest\egltest_t_swapbehavior.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_benchmark_swapbuffers.htm,             , z:\egltest\egltest_t_benchmark_swapbuffers.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_unittest.htm,                          , z:\egltest\egltest_t_unittest.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_texturing.htm,                         , z:\egltest\egltest_t_texturing.script, 600
+
+# EGL - Hybrid Graphics Implementation (Common tests)
+TESTEXECUTE, \logs\testexecute\egltest_t_geterroranddisplay.htm,                , z:\egltest\egltest_t_geterroranddisplay.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_general.htm,                           , z:\egltest\egltest_t_general.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_syncobject.htm,                        , z:\egltest\egltest_t_syncobject.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_syncobject_flush.htm,                  , z:\egltest\egltest_t_syncobject_flush.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_nativepixmaptype.htm,                  , z:\egltest\egltest_t_nativepixmaptype.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_createpixmapsurface.htm,               , z:\egltest\egltest_t_createpixmapsurface.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image.htm,                             , z:\egltest\egltest_t_image.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_multithread.htm,                 , z:\egltest\egltest_t_image_multithread.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_multiprocess.htm,                , z:\egltest\egltest_t_image_multiprocess.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_image_negative.htm,                    , z:\egltest\egltest_t_image_negative.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_sibling.htm,                           , z:\egltest\egltest_t_sibling.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_vgimagetosurfaces.htm,                 , z:\egltest\egltest_t_vgimagetosurfaces.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_benchmark_sgimage.htm,                 , z:\egltest\egltest_t_benchmark_sgimage.script, 600
+TESTEXECUTE, \logs\testexecute\egltest_t_endpoint.htm,                          , z:\egltest\egltest_t_endpoint.script, 600
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/automation/winscw/tests.endpoint.txt	Fri Jun 11 14:58:47 2010 +0300
@@ -0,0 +1,498 @@
+# program,log,commdb,script,timeout,release,pre cmd,post cmd
+
+# NOTE: Execution order is essentially alphabetical, except where noted.
+
+# DUMMY TEST 
+# workaround for DEF059510 to prevent first test case randomly failing
+appfwk_test_dummytest, epocwind.out, , , 180
+
+# ANIMATION TESTS
+TESTEXECUTE, C:\logs\testexecute\animationtest_t_basic.htm,     , z:\animationtest\animationtest_t_basic.script,  600
+TESTEXECUTE, C:\logs\testexecute\animationtest_t_custom.htm,    , z:\animationtest\animationtest_t_custom.script, 600
+TESTEXECUTE, C:\logs\testexecute\animationtest_t_frames.htm,    , z:\animationtest\animationtest_t_frames.script, 600
+TESTEXECUTE, C:\logs\testexecute\animationtest_t_mng.htm,       , z:\animationtest\animationtest_t_mng.script,    600
+TESTEXECUTE, C:\logs\testexecute\animationtest_t_oom.htm,       , z:\animationtest\animationtest_t_oom.script,    600
+TESTEXECUTE, C:\logs\testexecute\animationtest_t_synch.htm,     , z:\animationtest\animationtest_t_synch.script,  600
+
+# BMPANIM TESTS
+TESTEXECUTE, C:\logs\testexecute\bmpanimtest_t_autoan.htm,      , z:\bmpanimtest\bmpanimtest_t_autoan.script,     600
+TESTEXECUTE, C:\logs\testexecute\bmpanimtest_t_bmpanim.htm,     , z:\bmpanimtest\bmpanimtest_t_bmpanim.script,    600
+
+# CLOCK TESTS
+TESTEXECUTE, C:\logs\testexecute\clocktest_t_clck0.htm,         , z:\clocktest\clocktest_t_clck0.script,          600
+TESTEXECUTE, C:\logs\testexecute\clocktest_t_clck1.htm,         , z:\clocktest\clocktest_t_clck1.script,          600
+TESTEXECUTE, C:\logs\testexecute\clocktest_t_msgwin0.htm,       , z:\clocktest\clocktest_t_msgwin0.script,        600
+
+# CONE TESTS
+TESTEXECUTE, C:\logs\testexecute\conetest_t_background.htm,     	, z:\conetest\conetest_t_background.script,       600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_coedatastorage.htm, 	, z:\conetest\conetest_t_coedatastorage.script,   600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_cone0.htm,          	, z:\conetest\conetest_t_cone0.script,            600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_cone1.htm,          	, z:\conetest\conetest_t_cone1.script,            600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_cone2.htm,          	, z:\conetest\conetest_t_cone2.script,            600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_cone3.htm,          	, z:\conetest\conetest_t_cone3.script,            600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_cone4exe.htm,       	, z:\conetest\conetest_t_cone4exe.script,         600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_cone5.htm,          	, z:\conetest\conetest_t_cone5.script,            600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_cone6.htm,          	, z:\conetest\conetest_t_cone6.script,            600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_cone7.htm,          	, z:\conetest\conetest_t_cone7.script,            600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_conecoecntss.htm, 		, z:\conetest\conetest_t_conecoecntss.script,     600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_coneerrormsg.htm,   	, z:\conetest\conetest_t_coneerrormsg.script,     600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_conehelptext.htm,   	, z:\conetest\conetest_t_conehelptext.script,     600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_coneinvalidate.htm, 	, z:\conetest\conetest_t_coneinvalidate.script,   600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_conetransition.htm, 	, z:\conetest\conetest_t_conetransition.script,   600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_conevisibility.htm, 	, z:\conetest\conetest_t_conevisibility.script,   600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_conezoomfont.htm,   	, z:\conetest\conetest_t_conezoomfont.script,     600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_multiplescreens.htm,	, z:\conetest\conetest_t_multiplescreens.script,  600, , z\appfwk\test\mulscreens_sw_test.cmd install, z\appfwk\test\mulscreens_sw_test.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\conetest_t_coneresourceloader.htm,	, z:\conetest\conetest_t_coneresourceloader.script,  800
+TESTEXECUTE, C:\logs\testexecute\conetest_t_conestateobs.htm,		, z:\conetest\conetest_t_conestateobs.script,  		800
+TESTEXECUTE, C:\logs\testexecute\conetest_t_conetransparency.htm,	, z:\conetest\conetest_t_conetransparency.script,  	600
+TESTEXECUTE, C:\logs\testexecute\conetest_t_conestateobs.htm,		, z:\conetest\conetest_t_conestateobs.script,  		800
+TESTEXECUTE, C:\logs\testexecute\conetest_t_conemultiptr.htm,		, z:\conetest\conetest_t_conemultiptr.script,    	800
+TESTEXECUTE, C:\logs\testexecute\conetest_t_conemultiptrcompound.htm, , z:\conetest\conetest_t_conemultiptrcompound.script,    	800
+
+# CONE MENU TESTS
+TESTEXECUTE, C:\logs\testexecute\menutest_t_menu0.htm,          , z:\conetest\menutest_t_menu0.script,            600
+TESTEXECUTE, C:\logs\testexecute\menutest_t_menu1.htm,          , z:\conetest\menutest_t_menu1.script,            600
+TESTEXECUTE, C:\logs\testexecute\menutest_t_vwa.htm,            , z:\conetest\menutest_t_vwa.script,              600
+
+# EGUL TESTS
+TESTEXECUTE, C:\logs\testexecute\egultest_t_alignment.htm,      , z:\egultest\egultest_t_alignment.script,        600
+TESTEXECUTE, C:\logs\testexecute\egultest_t_border.htm,         , z:\egultest\egultest_t_border.script,           600
+TESTEXECUTE, C:\logs\testexecute\egultest_t_color.htm,          , z:\egultest\egultest_t_color.script,            600
+TESTEXECUTE, C:\logs\testexecute\egultest_t_digitwidth.htm,     , z:\egultest\egultest_t_digitwidth.script,       600
+
+# ETUL TESTS
+TESTEXECUTE, C:\logs\testexecute\etultest_t_addressstringtokenizer.htm,      ,z:\etultest\etultest_t_addressstringtokenizer.script,        800
+TESTEXECUTE, C:\logs\testexecute\etultest_t_phonenumberutils.htm,         , z:\etultest\etultest_t_phonenumberutils.script,           800
+TESTEXECUTE, C:\logs\testexecute\etultest_t_textresourceutils.htm,          , z:\etultest\etultest_t_textresourceutils.script,            800
+
+# FEPBASE TESTS
+TESTEXECUTE, C:\logs\testexecute\fepbasetest_t_appmorse.htm,    , z:\fepbasetest\fepbasetest_t_appmorse.script,   600
+TESTEXECUTE, C:\logs\testexecute\fepbasetest_t_fepgen.htm,      , z:\fepbasetest\fepbasetest_t_fepgen.script,     600
+
+# FEP TESTS
+TESTEXECUTE, C:\logs\testexecute\fepbasetest_t_defocusingedwin.htm, , z:\fepbasetest\fepbasetest_t_defocusingedwin.script,    600
+TESTEXECUTE, C:\logs\testexecute\fepbasetest_t_fep1testtarget.htm,  , z:\fepbasetest\fepbasetest_t_fep1testtarget.script,     600
+TESTEXECUTE, C:\logs\testexecute\fepbasetest_t_keyboardlogger.htm,  , z:\fepbasetest\fepbasetest_t_keyboardlogger.script,     600
+
+# GFXTRANSEFFECT TESTS
+TESTEXECUTE, C:\logs\testexecute\gfxtranstest_t_gfxtranseffect.htm, , z:\gfxtranstest\gfxtranstest_t_gfxtranseffect.script,    800
+
+# GRID TESTS
+TESTEXECUTE, C:\logs\testexecute\gridtest_t_cogrid.htm,         , z:\gridtest\gridtest_t_cogrid.script,           600
+TESTEXECUTE, C:\logs\testexecute\gridtest_t_glay.htm,           , z:\gridtest\gridtest_t_glay.script,             600
+TESTEXECUTE, C:\logs\testexecute\gridtest_t_grid0.htm,          , z:\gridtest\gridtest_t_grid0.script,            600
+
+# PRINT TESTS
+TESTEXECUTE, C:\logs\testexecute\printtest_t_fpr.htm,           , z:\printtest\printtest_t_fpr.script,            600
+TESTEXECUTE, C:\logs\testexecute\printtest_t_stream.htm,        , z:\printtest\printtest_t_stream.script,         600
+
+# UIK TESTS
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_addlibrary.htm,                , z:\uiktest\uiktest_t_addlibrary.script,                600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_applicationlanguage.htm,       , z:\uiktest\uiktest_t_applicationlanguage.script,       600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_applicationlanguagefrench.htm, , z:\uiktest\uiktest_t_applicationlanguagefrench.script, 600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_applicationlanguagenotset.htm, , z:\uiktest\uiktest_t_applicationlanguagenotset.script, 600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_applicationlanguagesc.htm,     , z:\uiktest\uiktest_t_applicationlanguagesc.script,     600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_applicationlanguagezulu.htm,   , z:\uiktest\uiktest_t_applicationlanguagezulu.script,   600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_autoLib.htm,                   , z:\uiktest\uiktest_t_autoLib.script,                   600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_backup.htm,      			  , z:\uiktest\uiktest_t_backup.script,      			   600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_brdrcol.htm,                   , z:\uiktest\uiktest_t_brdrcol.script,                   600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_capability1.htm,               , z:\uiktest\uiktest_t_capability1.script,               600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_capability2.htm,               , z:\uiktest\uiktest_t_capability2.script,               600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_colovr.htm,                    , z:\uiktest\uiktest_t_colovr.script,                    600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_colscm.htm,                    , z:\uiktest\uiktest_t_colscm.script,                    600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_disableexitchecks.htm,         , z:\uiktest\uiktest_t_disableexitchecks.script,         600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_eikenv.htm,                    , z:\uiktest\uiktest_t_eikenv.script,                    600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_error.htm,                     , z:\uiktest\uiktest_t_error.script,                     600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_fileutils.htm,                 , z:\uiktest\uiktest_t_fileutils.script,                 600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_focus.htm,                     , z:\uiktest\uiktest_t_focus.script,                     600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_hlsprite.htm,                  , z:\uiktest\uiktest_t_hlsprite.script,                  600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_msg.htm,                       , z:\uiktest\uiktest_t_msg.script,                       600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_multiplealarm.htm,         	  , z:\uiktest\uiktest_t_multiplealarm.script,        	   600, ,z\uiktest\multiplealarm_setup.bat install, z\uiktest\multiplealarm_setup.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_nonfocus.htm,                  , z:\uiktest\uiktest_t_nonfocus.script,                  600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_notdial.htm,                   , z:\uiktest\uiktest_t_notdial.script,                   600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_package.htm,                   , z:\uiktest\uiktest_t_package.script,                   600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_parent.htm,                    , z:\uiktest\uiktest_t_parent.script,                    600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_shutter.htm,                   , z:\uiktest\uiktest_t_shutter.script,                   600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_spane.htm,                     , z:\uiktest\uiktest_t_spane.script,                     600
+TESTEXECUTE, C:\logs\testexecute\uiktest_t_syscolor.htm,         		  , z:\uiktest\uiktest_t_syscolor.script,                  600
+
+# program,log,commdb,script,timeout,release,pre cmd,post cmd
+
+# DUMMY TEST 
+# workaround for DEF059510 to prevent first test case randomly failing
+dummytest, epocwind.out, , , 90
+
+# BitGDI OutlineShadow
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_outlineandshadowfonts.htm,		, z:\bitgdiTest\bitgdiTest_T_outlineandshadowfonts.script, 1800, ,z\ityperast_config.cmd install, z\ityperast_config.cmd uninstall
+
+# BitGDI
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_Accelerator.htm,			, z:\bitgdiTest\bitgdiTest_T_Accelerator.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_AlphaBlending.htm,		, z:\bitgdiTest\bitgdiTest_T_AlphaBlending.script, 900,  , z\graphics\t_graphics_config_inifiles.bat install multiple_screen surfwin, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_Auto.htm,					, z:\bitgdiTest\bitgdiTest_T_Auto.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_BitBlt.htm,				, z:\bitgdiTest\bitgdiTest_T_BitBlt.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_Clip.htm,					, z:\bitgdiTest\bitgdiTest_T_Clip.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_Clip2.htm,				, z:\bitgdiTest\bitgdiTest_T_Clip2.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_Defect.htm,				, z:\bitgdiTest\bitgdiTest_T_Defect.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_Defect2.htm,				, z:\bitgdiTest\bitgdiTest_T_Defect2.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_Font.htm,					, z:\bitgdiTest\bitgdiTest_T_Font.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_FontSelect.htm,			, z:\bitgdiTest\bitgdiTest_T_FontSelect.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_Gdi.htm,					, z:\bitgdiTest\bitgdiTest_T_Gdi.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_Param.htm,				, z:\bitgdiTest\bitgdiTest_T_Param.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_Scaling.htm,				, z:\bitgdiTest\bitgdiTest_T_Scaling.script, 600
+TESTEXECUTE, C:\logs\testexecute\bitgdiTest_T_Switch.htm,				, z:\bitgdiTest\bitgdiTest_T_Switch.script, 600
+
+# FBServ
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_Alloc.htm,					, z:\fbstest\fbstest_T_Alloc.script, 600
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_Bitmap.htm,					, z:\fbstest\fbstest_T_Bitmap.script, 1200
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_Clean.htm,					, z:\fbstest\fbstest_T_Clean.script, 600
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_Compressed.htm,				, z:\fbstest\fbstest_T_Compressed.script, 600
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_Defect.htm,					, z:\fbstest\fbstest_T_Defect.script, 600
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_Fbs.htm,						, z:\fbstest\fbstest_T_Fbs.script, 600
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_File.htm,					, z:\fbstest\fbstest_T_File.script, 600
+TESTEXECUTE, C:\logs\testexecute\fbstest_t_getallbitmapscapability.htm,	, z:\fbstest\fbstest_t_getallbitmapscapability.script, 600
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_IPCTest.htm,					, z:\fbstest\fbstest_T_IPCTest.script, 600
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_Ralc.htm,					, z:\fbstest\fbstest_T_Ralc.script, 600
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_Secure.htm,					, z:\fbstest\fbstest_T_Secure.script, 600
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_StreamIdCache.htm,			, z:\fbstest\fbstest_T_StreamIdCache.script, 600
+TESTEXECUTE, C:\logs\testexecute\fbstest_T_FontTable.htm,			, z:\fbstest\fbstest_T_FontTable.script, 600
+
+# without extended bitmap example rasterizer
+TESTEXECUTE, C:\logs\testexecute\fbstest_t_extendedbitmap.htm,			, z:\fbstest\fbstest_t_extendedbitmap.script,		1200
+TESTEXECUTE, C:\logs\testexecute\bitgditest_t_extendedbitmap.htm,		, z:\bitgditest\bitgditest_t_extendedbitmap.script,	1200
+
+# with extended bitmap example rasterizer
+TESTEXECUTE, C:\logs\testexecute\fbstest_t_extendedbitmap.htm,			, z:\fbstest\fbstest_t_extendedbitmap.script,		1200, ,z\rasterizertest\rasterizer_winscw_install.bat install ,z\rasterizertest\rasterizer_winscw_install.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\rasterizer_t_general.htm,				, z:\rasterizertest\rasterizer_t_general.script,	1200, ,z\rasterizertest\rasterizer_winscw_install.bat install ,z\rasterizertest\rasterizer_winscw_install.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\bitgditest_t_extendedbitmap.htm,		, z:\bitgditest\bitgditest_t_extendedbitmap.script,	1200, ,z\rasterizertest\rasterizer_winscw_install.bat install ,z\rasterizertest\rasterizer_winscw_install.bat uninstall
+
+
+# FntStore
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_CorruptFonts.htm,				, z:\fntstoretest\fntstoretest_T_CorruptFonts.script, 600
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_Fnt.htm,						, z:\fntstoretest\fntstoretest_T_Fnt.script,  600
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_FntMem.htm,						, z:\fntstoretest\fntstoretest_T_FntMem.script,  600
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_FontBitmap.htm,					, z:\fntstoretest\fntstoretest_T_FontBitmap.script,  600
+TESTEXECUTE, c:\logs\testexecute\fntstoretest_T_FontMetrics.htm,				, z:\fntstoretest\fntstoretest_T_FontMetrics.script,  800
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_FsOpen.htm,						, z:\fntstoretest\fntstoretest_T_FsOpen.script,  600
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_GetNearestFont.htm,				, z:\fntstoretest\fntstoretest_T_GetNearestFont.script,  600
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_t_getnearestfontcapability.htm,	, z:\fntstoretest\fntstoretest_t_getnearestfontcapability.script,  600
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_GlyphTreeDel.htm,				, z:\fntstoretest\fntstoretest_T_GlyphTreeDel.script,  600
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_MatchFonts.htm,					, z:\fntstoretest\fntstoretest_T_MatchFonts.script,  600
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_OpenFontTypes.htm,				, z:\fntstoretest\fntstoretest_T_OpenFontTypes.script,  600
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_t_setdefaulttypefacename.htm,		, z:\fntstoretest\fntstoretest_t_setdefaulttypefacename.script,  600
+TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_ShaperCache.htm,				, z:\fntstoretest\fntstoretest_T_ShaperCache.script,  600
+
+# FreeType
+TESTEXECUTE, C:\logs\testexecute\FreeTypeTest_T_Ft.htm,							, z:\FreeTypeTest\FreeTypeTest_T_Ft.script,  600
+TESTEXECUTE, C:\logs\testexecute\FreeTypeTest_T_GetExtensionFontMetrics.htm,	, z:\FreeTypeTest\FreeTypeTest_T_GetExtensionFontMetrics.script,  600
+TESTEXECUTE, C:\logs\testexecute\FreeTypeTest_T_GlyphIndex.htm,					, z:\FreeTypeTest\FreeTypeTest_T_GlyphIndex.script,  600
+TESTEXECUTE, C:\logs\testexecute\FreeTypeTest_T_GlyphPointInFontUnits.htm,		, z:\FreeTypeTest\FreeTypeTest_T_GlyphPointInFontUnits.script,  600
+TESTEXECUTE, C:\logs\testexecute\FreeTypeTest_T_GlyphPointInHintedPixels.htm,	, z:\FreeTypeTest\FreeTypeTest_T_GlyphPointInHintedPixels.script,  600
+TESTEXECUTE, C:\logs\testexecute\FreeTypeTest_T_RasterizeGlyph.htm,				, z:\FreeTypeTest\FreeTypeTest_T_RasterizeGlyph.script,  600
+TESTEXECUTE, C:\logs\testexecute\FreeTypeTest_T_TypeTypeTable.htm,				, z:\FreeTypeTest\FreeTypeTest_T_TypeTypeTable.script,  600
+
+# GDI
+TESTEXECUTE, C:\logs\testexecute\gditest_T_BiDi.htm,					, z:\gditest\gditest_T_BiDi.script, 600
+TESTEXECUTE, C:\logs\testexecute\gditest_T_BiDiDefect.htm,				, z:\gditest\gditest_T_BiDiDefect.script, 600
+TESTEXECUTE, C:\logs\testexecute\gditest_T_GlyphSelection.htm,			, z:\gditest\gditest_T_GlyphSelection.script, 600
+TESTEXECUTE, C:\logs\testexecute\gditest_T_LineBreak.htm,				, z:\gditest\gditest_T_LineBreak.script, 600
+TESTEXECUTE, C:\logs\testexecute\gditest_T_Rgb.htm,						, z:\gditest\gditest_T_Rgb.script, 600
+TESTEXECUTE, C:\logs\testexecute\gditest_T_Types.htm,					, z:\gditest\gditest_T_Types.script, 600
+
+#IcuLayoutEngine
+TC_SHAP_SHAPETEXT, epocwind.out, , ,6000
+
+# OpenVG - Hybrid driver
+DRIVER,	C:\stress_results_copy\test_results\general_log.txt, , stress c,  			600, , z\openvgtest\openvgtest_driver_setup_sw.bat winscw install stress, 		z\openvgtest\openvgtest_driver_setup_sw.bat winscw copy stress
+DRIVER,	C:\functional_results_copy\test_results\general_log.txt, , functional c,  	1200, , z\openvgtest\openvgtest_driver_setup_sw.bat winscw install functional, 	z\openvgtest\openvgtest_driver_setup_sw.bat winscw copy functional
+ 
+# PDRStore
+TESTEXECUTE, C:\logs\testexecute\pdrstoretest_T_Pdr.htm,				, z:\pdrstoretest\pdrstoretest_T_Pdr.script,  	 600
+TESTEXECUTE, C:\logs\testexecute\pdrstoretest_T_PdrLst.htm,				, z:\pdrstoretest\pdrstoretest_T_PdrLst.script,  600
+TESTEXECUTE, C:\logs\testexecute\pdrstoretest_T_PdrMem.htm,				, z:\pdrstoretest\pdrstoretest_T_PdrMem.script,  600
+
+# ScreenDriver
+TESTEXECUTE, C:\logs\testexecute\scdvtest_t_LowLevel.htm,				, z:\scdvtest\scdvtest_t_LowLevel.script, 1800
+TESTEXECUTE, C:\logs\testexecute\scdvtest_t_LowLevel1.htm,				, z:\scdvtest\scdvtest_t_LowLevel1.script, 1800
+TESTEXECUTE, C:\logs\testexecute\scdvtest_t_RWindows.htm,				, z:\scdvtest\scdvtest_t_RWindows.script, 600
+TESTEXECUTE, C:\logs\testexecute\scdvtest_t_Scaling.htm,				, z:\scdvtest\scdvtest_t_Scaling.script, 600
+TESTEXECUTE, C:\logs\testexecute\scdvtest_t_Scdv.htm,					, z:\scdvtest\scdvtest_t_Scdv.script, 600
+
+# WServ
+TESTEXECUTE, C:\logs\testexecute\graphics-wserv-capcheck-tsizemode.htm,	, z:\graphics\graphics-wserv-capcheck-tsizemode.script,       600
+TESTEXECUTE, C:\logs\testexecute\graphics-wserv-screenconstruct-color4k.htm,			, z:\wstest\screenconstruct\graphics-wserv-screenconstruct-color4k.script, 300,  , z\wstest\screenconstruct\tscreenconstruct.bat install color4k, z\wstest\screenconstruct\tscreenconstruct.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\graphics-wserv-screenconstruct-color64k.htm,			, z:\wstest\screenconstruct\graphics-wserv-screenconstruct-color64k.script, 300,  , z\wstest\screenconstruct\tscreenconstruct.bat install color64k, z\wstest\screenconstruct\tscreenconstruct.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\graphics-wserv-screenconstruct-color16m.htm,			, z:\wstest\screenconstruct\graphics-wserv-screenconstruct-color16m.script, 300,  , z\wstest\screenconstruct\tscreenconstruct.bat install color16m, z\wstest\screenconstruct\tscreenconstruct.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\graphics-wserv-screenconstruct-screenconstruct.htm,		, z:\wstest\screenconstruct\graphics-wserv-screenconstruct-screenconstruct.script, 300,  , z\wstest\screenconstruct\tscreenconstruct.bat install screenconstruct, z\wstest\screenconstruct\tscreenconstruct.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\graphics-wserv-screenconstruct-scrmodes.htm,			, z:\wstest\screenconstruct\graphics-wserv-screenconstruct-scrmodes.script, 300,  , z\wstest\screenconstruct\tscreenconstruct.bat install scrmodes, z\wstest\screenconstruct\tscreenconstruct.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\wservstresstest.htm,		, z:\wstest\wservstresstest.script, 4200
+
+# PREQ2102 tests
+TESTEXECUTE, C:\logs\testexecute\tdisplayconfiguration.htm, 	, z:\commonheadertest\tdisplayconfiguration.script, 600
+
+
+# EGL - Reference Implementation
+TESTEXECUTE, C:\logs\testexecute\egltest_t_reference.htm,					, z:\egltest\egltest_t_reference.script, 					300, , z\graphics\t_graphics_config_inifiles.bat install egl_ref, z\graphics\t_graphics_config_inifiles.bat uninstall
+# EGL - Reference Implementation (Common tests)
+TESTEXECUTE, C:\logs\testexecute\egltest_t_geterroranddisplay.htm,			, z:\egltest\egltest_t_geterroranddisplay.script, 			300, , z\graphics\t_graphics_config_inifiles.bat install egl_ref, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_general.htm,						, z:\egltest\egltest_t_general.script, 						300, , z\graphics\t_graphics_config_inifiles.bat install egl_ref, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_syncobject.htm,					, z:\egltest\egltest_t_syncobject.script, 					300, , z\graphics\t_graphics_config_inifiles.bat install egl_ref, z\graphics\t_graphics_config_inifiles.bat uninstall
+
+# EGL - Hybrid Graphics Implementation
+TESTEXECUTE, C:\logs\testexecute\egltest_t_basicegl.htm,					, z:\egltest\egltest_t_basicegl.script, 					300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_hybrid.htm,						, z:\egltest\egltest_t_hybrid.script, 						300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_nativepixmaptype_hg.htm,			, z:\egltest\egltest_t_nativepixmaptype_hg.script, 			300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_createpixmapsurface_hg.htm,		, z:\egltest\egltest_t_createpixmapsurface_hg.script, 		300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_image_hg.htm,					, z:\egltest\egltest_t_image_hg.script, 					600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_image_negative_hg.htm,			, z:\egltest\egltest_t_image_negative_hg.script, 			600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_internalapi.htm,					, z:\egltest\egltest_t_internalapi.script, 					600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_lowmemory.htm,					, z:\egltest\egltest_t_lowmemory.script, 					600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_windowresize.htm,				, z:\egltest\egltest_t_windowresize.script, 			    600, , z\graphicstest\minigui.cmd z\graphics\t_graphics_config_inifiles.bat install csc_nga, z\graphicstest\unminigui.cmd z\graphicstest\retain_files.cmd logs\testexecute\screencomparison screencomparison z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_swapbehavior.htm,                , z:\egltest\egltest_t_swapbehavior.script, 				300, , z\graphicstest\minigui.cmd z\graphics\t_graphics_config_inifiles.bat install csc_nga, z\graphicstest\unminigui.cmd z\graphicstest\retain_files.cmd logs\testexecute\screencomparison screencomparison z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_benchmark_swapbuffers.htm,		, z:\egltest\egltest_t_benchmark_swapbuffers.script,		120, , z\graphicstest\minigui.cmd z\graphics\t_graphics_config_inifiles.bat install csc_nga, z\graphicstest\unminigui.cmd z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_unittest.htm,                    , z:\egltest\egltest_t_unittest.script, 					300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_texturing.htm,                   , z:\egltest\egltest_t_texturing.script, 					300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+# EGL - Hybrid Graphics Implementation (Common tests)
+TESTEXECUTE, C:\logs\testexecute\egltest_t_geterroranddisplay.htm,			, z:\egltest\egltest_t_geterroranddisplay.script, 			300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_general.htm,						, z:\egltest\egltest_t_general.script, 						300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_syncobject.htm,					, z:\egltest\egltest_t_syncobject.script, 					300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_syncobject_flush.htm,			, z:\egltest\egltest_t_syncobject_flush.script,				600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_nativepixmaptype.htm,			, z:\egltest\egltest_t_nativepixmaptype.script, 			300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_createpixmapsurface.htm,			, z:\egltest\egltest_t_createpixmapsurface.script, 			300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_image.htm,						, z:\egltest\egltest_t_image.script, 						600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_image_negative.htm,				, z:\egltest\egltest_t_image_negative.script, 				600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_image_multithread.htm,			, z:\egltest\egltest_t_image_multithread.script,			600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_image_multiprocess.htm,			, z:\egltest\egltest_t_image_multiprocess.script,			600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_sibling.htm,						, z:\egltest\egltest_t_sibling.script, 						600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_vgimagetosurfaces.htm,			, z:\egltest\egltest_t_vgimagetosurfaces.script, 			600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_benchmark_sgimage.htm,        	, z:\egltest\egltest_t_benchmark_sgimage.script, 			300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_stress_sgimage.htm,			, z:\egltest\egltest_t_stress_sgimage.script, 				600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\egltest_t_endpoint.htm,                	, z:\egltest\egltest_t_endpoint.script, 					300, , z\egltest\endpoint_autotest_ini_config.bat install, z\egltest\endpoint_autotest_ini_config.bat uninstall
+
+
+# GCE
+TESTEXECUTE, C:\logs\testexecute\functionaltest_mandatory.htm,	, z:\gcetest\functionaltest_mandatory.script,  600, , z\gcetest\gcetest_setup_emu.bat install dabs, z\gcetest\gcetest_setup_emu.bat uninstall dabs
+TESTEXECUTE, C:\logs\testexecute\functionaltest_optional.htm,	, z:\gcetest\functionaltest_optional.script,  600, , z\gcetest\gcetest_setup_emu.bat install dabs, z\gcetest\gcetest_setup_emu.bat uninstall dabs
+TESTEXECUTE, C:\logs\testexecute\fastpath.htm,					, z:\gcetest\fastpath.script, 2000, , z\gcetest\gcetest_setup_emu.bat install dabs, z\gcetest\gcetest_setup_emu.bat uninstall dabs
+TESTEXECUTE, C:\logs\testexecute\stresstest.htm,				, z:\gcetest\stresstest.script,  4800, , z\gcetest\gcetest_setup_emu.bat install dabs, z\gcetest\gcetest_setup_emu.bat uninstall dabs
+
+# Graphics Resource
+TESTEXECUTE, C:\logs\testexecute\sgresourcetest_t_generic.htm,		, z:\sgresourcetest\sgresourcetest_t_generic.script,    600
+TESTEXECUTE, C:\logs\testexecute\sgresourcetest_t_internal.htm,		, z:\sgresourcetest\sgresourcetest_t_internal.script,    600
+
+# OpenGLES
+TESTEXECUTE, C:\logs\testexecute\openglestest_t_basicegl.htm,			, z:\openglestest\openglestest_t_basicegl.script, 		600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openglestest_t_lowmemory.htm,			, z:\openglestest\openglestest_t_lowmemory.script, 		600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openglestest_t_pbufferequivegl.htm,	, z:\openglestest\openglestest_t_pbufferequivegl.script, 600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openglestest_t_pixmapequivegl.htm,		, z:\openglestest\openglestest_t_pixmapequivegl.script, 600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openglestest_t_stress.htm,				, z:\openglestest\openglestest_t_stress.script, 		600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openglestest_t_windowequivegl.htm,		, z:\openglestest\openglestest_t_windowequivegl.script, 600, , z\graphicstest\minigui.cmd z\graphics\t_graphics_config_inifiles.bat install csc_nga, z\graphicstest\unminigui.cmd z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openglestest_t_windowresize.htm,		, z:\openglestest\openglestest_t_windowresize.script, 800, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+
+# OpenVG
+TESTEXECUTE, C:\logs\testexecute\openvgtest_t_BasicVG.htm,				, z:\openvgtest\openvgtest_t_BasicVG.script,			300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openvgtest_t_LowMemory.htm,			, z:\openvgtest\openvgtest_t_LowMemory.script,			300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openvgtest_t_MultipleThreads.htm,		, z:\openvgtest\openvgtest_t_MultipleThreads.script,	300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openvgtest_t_PBufferEquivEGL.htm,		, z:\openvgtest\openvgtest_t_PBufferEquivEGL.script,	300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openvgtest_t_PixmaxEquvEGL.htm,		, z:\openvgtest\openvgtest_t_PixmaxEquvEGL.script,		300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openvgtest_t_Stress.htm,				, z:\openvgtest\openvgtest_t_Stress.script,				300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openvgtest_t_multiplewindows.htm,		, z:\openvgtest\openvgtest_t_multiplewindows.script, 	300, , z\graphicstest\minigui.cmd z\graphics\t_graphics_config_inifiles.bat install csc_nga, z\graphicstest\unminigui.cmd z\graphicstest\retain_files.cmd logs\testexecute\multiplewindows1 multiplewindows z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openvgtest_t_multiplewindows2.htm,		, z:\openvgtest\openvgtest_t_multiplewindows2.script, 	300, , z\graphicstest\minigui.cmd z\graphics\t_graphics_config_inifiles.bat install csc_nga, z\graphicstest\unminigui.cmd z\graphicstest\retain_files.cmd logs\testexecute\multiplewindows2 multiplewindows2 z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\openvgtest_t_windowequivegl.htm,		, z:\openvgtest\openvgtest_t_windowequivegl.script, 	300, , z\graphicstest\minigui.cmd z\graphics\t_graphics_config_inifiles.bat install csc_nga, z\graphicstest\unminigui.cmd z\graphics\t_graphics_config_inifiles.bat uninstall
+
+# ScreenDriver
+TESTEXECUTE, C:\logs\testexecute\scdvtest_t_DirectScreenBitmap.htm,		, z:\scdvtest\scdvtest_t_DirectScreenBitmap.script, 600, , z\scdvtest\scdvtest_mnt.cmd installonb, z\scdvtest\scdvtest_mnt.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\scdvtest_t_devorientation.htm,			, z:\scdvtest\scdvtest_t_devorientation.script, 	600
+
+# Surface Manager
+TESTEXECUTE, C:\logs\testexecute\surfacemgtest_T_auto.htm,				, z:\surfacemgtest\surfacemgtest_T_auto.script, 600
+TESTEXECUTE, C:\logs\testexecute\surfacemgtest_T_multiprocess.htm,		, z:\surfacemgtest\surfacemgtest_T_multiprocess.script, 600
+TESTEXECUTE, C:\logs\testexecute\surfacemgtest_T_multithread.htm,		, z:\surfacemgtest\surfacemgtest_T_multithread.script, 600
+
+# Surface Update
+TESTEXECUTE, C:\logs\testexecute\surfaceupdate.htm,			, z:\surfaceupdate\surfaceupdate.script, 600
+TESTEXECUTE, C:\logs\testexecute\surfaceupdateinteg.htm,			, z:\surfaceupdate\surfaceupdateinteg.script, 800, ,  z\graphicstest\minigui.cmd z\graphics\t_graphics_config_inifiles.bat install multiple_screen csc_nga, z\graphicstest\unminigui.cmd z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\graphics-gce-notification.htm,		, z:\graphics\graphics-gce-notification.script,  3600, , z\graphics\t_graphics_config_inifiles.bat install csc_nga, z\graphics\t_graphics_config_inifiles.bat uninstall
+
+# Wserv
+TESTEXECUTE, C:\logs\testexecute\graphics-wserv-genericplugin-load-nga.htm, , z:\wstest\genericplugin\graphics-wserv-genericplugin-load-nga.script, 3600, , z\wstest\genericplugin\t_graphics_wserv_genericplugin.bat install nga, z\wstest\genericplugin\t_graphics_wserv_genericplugin.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\wsgcerotationtests_sw.htm,	   , z:\wstest\wsgcerotationtests_sw.script,   600,  , z\graphics\t_graphics_config_inifiles.bat install multiple_screen, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\wsgcetests_sw_Color64K.htm, 	   , z:\wstest\wsgcetests_sw_Color64K.script,     600,  , z\graphics\t_graphics_config_inifiles.bat install multiple_screen Color64K,  z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\wsgcetests_Color16MA_screen0.htm,         , z:\wstest\wsgcetests_Color16MA_screen0.script,    600,  , z\graphics\t_graphics_config_inifiles.bat install multiple_screen Color16MA, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\wsgcetests_Color16MA_screen1.htm,         , z:\wstest\wsgcetests_Color16MA_screen1.script,    600,  , z\graphics\t_graphics_config_inifiles.bat install multiple_screen Color16MA, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\wsgcedsatests.htm,	           , z:\wstest\wsgcedsatests.script,           600,  , z\graphics\t_graphics_config_inifiles.bat install multiple_screen, z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\wsgcesurfwintest_sw_Color64K.htm, , z:\wstest\wsgcesurfwintest_sw_Color64K.script,    6000,  , z\graphicstest\minigui.cmd z\graphics\t_graphics_config_inifiles.bat install multiple_screen surfwin_Color64K, z\graphicstest\unminigui.cmd z\graphics\t_graphics_config_inifiles.bat uninstall
+TESTEXECUTE, C:\logs\testexecute\wsgcesurfwintest_sw_Color16MA.htm,, z:\wstest\wsgcesurfwintest_sw_Color16MA.script,    8000,  , z\graphicstest\minigui.cmd z\graphics\t_graphics_config_inifiles.bat install multiple_screen surfwin_Color16MA, z\graphicstest\unminigui.cmd z\graphics\t_graphics_config_inifiles.bat uninstall
+
+# Wserv
+TESTEXECUTE, C:\logs\testexecute\wstest_t_mulscreens_nga.htm,	, z:\wstest\wstest_t_mulscreens_nga.script, 600, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+
+# Wserv autotests - Screen0
+TESTEXECUTE, C:\logs\testexecute\wstest_t_alpha_s0_nga.htm,				, z:\wstest\wstest_t_alpha_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_alphawin_s0_nga.htm,			, z:\wstest\wstest_t_alphawin_s0_nga.script, 		1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_animdll_s0_nga.htm,			, z:\wstest\wstest_t_animdll_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_blank_s0_nga.htm,				, z:\wstest\wstest_t_blank_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_client_s0_nga.htm,			, z:\wstest\wstest_t_client_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_crp_s0_nga.htm,				, z:\wstest\wstest_t_crp_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_cursor_s0_nga.htm,			, z:\wstest\wstest_t_cursor_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_derived_s0_nga.htm,			, z:\wstest\wstest_t_derived_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_draw_s0_nga.htm,				, z:\wstest\wstest_t_draw_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_dsa_s0_nga.htm,				, z:\wstest\wstest_t_dsa_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_event_s0_nga.htm,				, z:\wstest\wstest_t_event_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_fade_s0_nga.htm,				, z:\wstest\wstest_t_fade_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_gc_s0_nga.htm,				, z:\wstest\wstest_t_gc_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_gdi_s0_nga.htm,			, z:\wstest\wstest_t_gdi_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_graphicsresource_s0_nga.htm,	, z:\wstest\wstest_t_graphicsresource_s0_nga.script, 1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_key_s0_nga.htm,				, z:\wstest\wstest_t_key_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_multiscreens_s0_nga.htm,		, z:\wstest\wstest_t_multiscreens_s0_nga.script, 	1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_oom_s0_nga.htm,				, z:\wstest\wstest_t_oom_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_panic_s0_nga.htm,				, z:\wstest\wstest_t_panic_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_pointer_s0_nga.htm,			, z:\wstest\wstest_t_pointer_s0_nga.script, 		1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_redraw_s0_nga.htm,			, z:\wstest\wstest_t_redraw_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_region_s0_nga.htm,			, z:\wstest\wstest_t_region_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screen_s0_nga.htm,			, z:\wstest\wstest_t_screen_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screenmodescaling_s0_nga.htm,	, z:\wstest\wstest_t_screenmodescaling_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screendevice_s0_nga.htm,		, z:\wstest\wstest_t_screendevice_s0_nga.script, 	1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screendeviceresswitch_s0_nga.htm,	, z:\wstest\wstest_t_screendeviceresswitch_s0_nga.script, 	1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_security_s0_nga.htm,			, z:\wstest\wstest_t_security_s0_nga.script, 		1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_sprite_s0_nga.htm,	, z:\wstest\wstest_t_sprite_s0_nga.script, 1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_transparentanim_s0_nga.htm,		, z:\wstest\wstest_t_transparentanim_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_window_s0_nga.htm,			, z:\wstest\wstest_t_window_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_windowfunction_s0_nga.htm,		, z:\wstest\wstest_t_windowfunction_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_wsgraphs_s0_nga.htm,			, z:\wstest\wstest_t_wsgraphs_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+
+# Wserv autotests - Screen1
+TESTEXECUTE, C:\logs\testexecute\wstest_t_alpha_s1_nga.htm,				, z:\wstest\wstest_t_alpha_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_alphawin_s1_nga.htm,			, z:\wstest\wstest_t_alphawin_s1_nga.script, 		1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_animdll_s1_nga.htm,				, z:\wstest\wstest_t_animdll_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_blank_s1_nga.htm,				, z:\wstest\wstest_t_blank_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_client_s1_nga.htm,			, z:\wstest\wstest_t_client_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_crp_s1_nga.htm,				, z:\wstest\wstest_t_crp_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_cursor_s1_nga.htm,	, z:\wstest\wstest_t_cursor_s1_nga.script, 1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_draw_s1_nga.htm,				, z:\wstest\wstest_t_draw_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_dsa_s1_nga.htm,				, z:\wstest\wstest_t_dsa_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_event_s1_nga.htm,				, z:\wstest\wstest_t_event_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_fade_s1_nga.htm,				, z:\wstest\wstest_t_fade_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_gdi_s1_nga.htm,			, z:\wstest\wstest_t_gdi_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_graphicsresource_s1_nga.htm,	, z:\wstest\wstest_t_graphicsresource_s1_nga.script, 1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_key_s1_nga.htm,				, z:\wstest\wstest_t_key_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_oom_s1_nga.htm,				, z:\wstest\wstest_t_oom_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_panic_s1_nga.htm,				, z:\wstest\wstest_t_panic_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_pointer_s1_nga.htm,			, z:\wstest\wstest_t_pointer_s1_nga.script, 		1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_redraw_s1_nga.htm,			, z:\wstest\wstest_t_redraw_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_region_s1_nga.htm,			, z:\wstest\wstest_t_region_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screen_s1_nga.htm,			, z:\wstest\wstest_t_screen_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screenmodescaling_s1_nga.htm,	, z:\wstest\wstest_t_screenmodescaling_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screendevice_s1_nga.htm,		, z:\wstest\wstest_t_screendevice_s1_nga.script, 	1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screendeviceresswitch_s1_nga.htm,	, z:\wstest\wstest_t_screendeviceresswitch_s1_nga.script, 	1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_security_s1_nga.htm,			, z:\wstest\wstest_t_security_s1_nga.script, 		1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_sprite_s1_nga.htm,	, z:\wstest\wstest_t_sprite_s1_nga.script, 1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_transparentanim_s1_nga.htm,		, z:\wstest\wstest_t_transparentanim_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_window_s1_nga.htm,			, z:\wstest\wstest_t_window_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_windowfunction_s1_nga.htm,		, z:\wstest\wstest_t_windowfunction_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_wsgraphs_s1_nga.htm,			, z:\wstest\wstest_t_wsgraphs_s1_nga.script, 			1000, , z\wstest\wstest_config.cmd install, z\wstest\wstest_config.cmd uninstall
+
+# Bitgdirenderstage autotests - Screen0
+TESTEXECUTE, C:\logs\testexecute\wstest_t_alpha_s0_nga.htm,				, z:\wstest\wstest_t_alpha_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_alphawin_s0_nga.htm,			, z:\wstest\wstest_t_alphawin_s0_nga.script, 		1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_animdll_s0_nga.htm,				, z:\wstest\wstest_t_animdll_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_blank_s0_nga.htm,				, z:\wstest\wstest_t_blank_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_client_s0_nga.htm,			, z:\wstest\wstest_t_client_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_crp_s0_nga.htm,				, z:\wstest\wstest_t_crp_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_cursor_s0_nga.htm,	, z:\wstest\wstest_t_cursor_s0_nga.script, 1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_draw_s0_nga.htm,				, z:\wstest\wstest_t_draw_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_dsa_s0_nga.htm,				, z:\wstest\wstest_t_dsa_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_event_s0_nga.htm,				, z:\wstest\wstest_t_event_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_fade_s0_nga.htm,				, z:\wstest\wstest_t_fade_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_gdi_s0_nga.htm,			, z:\wstest\wstest_t_gdi_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_graphicsresource_s0_nga.htm,	, z:\wstest\wstest_t_graphicsresource_s0_nga.script, 1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_key_s0_nga.htm,				, z:\wstest\wstest_t_key_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_multiscreens_s0_nga.htm,		, z:\wstest\wstest_t_multiscreens_s0_nga.script, 	1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_oom_s0_nga.htm,				, z:\wstest\wstest_t_oom_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_panic_s0_nga.htm,				, z:\wstest\wstest_t_panic_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_pointer_s0_nga.htm,			, z:\wstest\wstest_t_pointer_s0_nga.script, 		1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_redraw_s0_nga.htm,			, z:\wstest\wstest_t_redraw_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_region_s0_nga.htm,			, z:\wstest\wstest_t_region_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screen_s0_nga.htm,			, z:\wstest\wstest_t_screen_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screenmodescaling_s0_nga.htm,	, z:\wstest\wstest_t_screenmodescaling_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screendevice_s0_nga.htm,		, z:\wstest\wstest_t_screendevice_s0_nga.script, 	1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screendeviceresswitch_s0_nga.htm,	, z:\wstest\wstest_t_screendeviceresswitch_s0_nga.script, 	1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_security_s0_nga.htm,			, z:\wstest\wstest_t_security_s0_nga.script, 		1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_sprite_s0_nga.htm,	, z:\wstest\wstest_t_sprite_s0_nga.script, 1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_transparentanim_s0_nga.htm,		, z:\wstest\wstest_t_transparentanim_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_window_s0_nga.htm,			, z:\wstest\wstest_t_window_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_windowfunction_s0_nga.htm,		, z:\wstest\wstest_t_windowfunction_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_wsgraphs_s0_nga.htm,			, z:\wstest\wstest_t_wsgraphs_s0_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+
+# Bitgdirenderstage autotests - Screen1
+TESTEXECUTE, C:\logs\testexecute\wstest_t_alpha_s1_nga.htm,				, z:\wstest\wstest_t_alpha_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_alphawin_s1_nga.htm,			, z:\wstest\wstest_t_alphawin_s1_nga.script, 		1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_animdll_s1_nga.htm,				, z:\wstest\wstest_t_animdll_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_blank_s1_nga.htm,				, z:\wstest\wstest_t_blank_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_client_s1_nga.htm,			, z:\wstest\wstest_t_client_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_crp_s1_nga.htm,				, z:\wstest\wstest_t_crp_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_cursor_s1_nga.htm,	, z:\wstest\wstest_t_cursor_s1_nga.script, 1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_draw_s1_nga.htm,				, z:\wstest\wstest_t_draw_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_dsa_s1_nga.htm,				, z:\wstest\wstest_t_dsa_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_event_s1_nga.htm,				, z:\wstest\wstest_t_event_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_fade_s1_nga.htm,				, z:\wstest\wstest_t_fade_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_gdi_s1_nga.htm,			, z:\wstest\wstest_t_gdi_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_key_s1_nga.htm,				, z:\wstest\wstest_t_key_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_oom_s1_nga.htm,				, z:\wstest\wstest_t_oom_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_panic_s1_nga.htm,				, z:\wstest\wstest_t_panic_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_pointer_s1_nga.htm,			, z:\wstest\wstest_t_pointer_s1_nga.script, 		1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_redraw_s1_nga.htm,			, z:\wstest\wstest_t_redraw_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_region_s1_nga.htm,			, z:\wstest\wstest_t_region_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screen_s1_nga.htm,			, z:\wstest\wstest_t_screen_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screenmodescaling_s1_nga.htm,	, z:\wstest\wstest_t_screenmodescaling_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screendevice_s1_nga.htm,		, z:\wstest\wstest_t_screendevice_s1_nga.script, 	1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screendeviceresswitch_s1_nga.htm,	, z:\wstest\wstest_t_screendeviceresswitch_s1_nga.script, 	1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_security_s1_nga.htm,			, z:\wstest\wstest_t_security_s1_nga.script, 		1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_sprite_s1_nga.htm,	, z:\wstest\wstest_t_sprite_s1_nga.script, 1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_transparentanim_s1_nga.htm,		, z:\wstest\wstest_t_transparentanim_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_window_s1_nga.htm,			, z:\wstest\wstest_t_window_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_windowfunction_s1_nga.htm,		, z:\wstest\wstest_t_windowfunction_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_wsgraphs_s1_nga.htm,			, z:\wstest\wstest_t_wsgraphs_s1_nga.script, 			1000, , z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Install, z\wstest\tbitgdirenderstage\wstest_t_bitgdirenderstage.bat Uninstall
+
+# Composited screen capture
+TESTEXECUTE, C:\logs\testexecute\wscsc.htm,	, z:\wstest\wscsc.script, 600,  , z\graphics\t_graphics_config_inifiles.bat install csc_nga, z\graphics\t_graphics_config_inifiles.bat uninstall
+
+# PREQ2102
+TESTEXECUTE, C:\logs\testexecute\wsdynamicresbasic_no_scaling.htm,	, z:\wstest\dynamicres\wsdynamicresbasic_no_scaling.script, 1200, , z\gcetest\wstest.cmd report install tv2nd, z\gcetest\wstest.cmd report uninstall
+TESTEXECUTE, C:\logs\testexecute\wsdynamicresbasic_isotropic_scaling.htm,	, z:\wstest\dynamicres\wsdynamicresbasic_isotropic_scaling.script, 1200, , z\gcetest\wstest.cmd report install tv2ndiso, z\gcetest\wstest.cmd report uninstall
+TESTEXECUTE, C:\logs\testexecute\wsdynamicresbasic_anisotropic_scaling.htm,	, z:\wstest\dynamicres\wsdynamicresbasic_anisotropic_scaling.script, 1200, , z\gcetest\wstest.cmd report install tv2ndaniso, z\gcetest\wstest.cmd report uninstall
+TESTEXECUTE, C:\logs\testexecute\wsdynamicresbasic_integer_scaling.htm,	, z:\wstest\dynamicres\wsdynamicresbasic_integer_scaling.script, 1200, , z\gcetest\wstest.cmd report install tv2ndint, z\gcetest\wstest.cmd report uninstall
+TESTEXECUTE, C:\logs\testexecute\tdisplaychannel.htm,	, z:\gcetest\tdisplaychannel.script, 1200, , z\gcetest\wstest.cmd report install tv2nd, z\gcetest\wstest.cmd report uninstall
+
+# CR1577
+TESTEXECUTE, C:\logs\testexecute\talf_unittests.htm,	, z:\talf\talf_unittests.script, 600,	, z\talf\t_graphics_wserv_alf.bat install, z\talf\t_graphics_wserv_alf.bat uninstall  
+
+# PREQ2585
+TESTEXECUTE, C:\logs\testexecute\changetracking_per_screen.htm,	, z:\talf\changetracking_per_screen.script, 600,	, z\talf\t_graphics_wserv_CT_per_screen.bat install, z\talf\t_graphics_wserv_CT_per_screen.bat uninstall  
+
+# Wserv autotests with Changetracking - Screen0
+TESTEXECUTE, C:\logs\testexecute\wstest_t_alpha_s0_nga.htm,				, z:\wstest\wstest_t_alpha_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install  changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_client_s0_nga.htm,			, z:\wstest\wstest_t_client_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_crp_s0_nga.htm,				, z:\wstest\wstest_t_crp_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_draw_s0_nga.htm,				, z:\wstest\wstest_t_draw_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_event_s0_nga.htm,				, z:\wstest\wstest_t_event_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_key_s0_nga.htm,				, z:\wstest\wstest_t_key_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_oom_s0_nga.htm,				, z:\wstest\wstest_t_oom_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_panic_s0_nga.htm,				, z:\wstest\wstest_t_panic_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_pointer_s0_nga.htm,			, z:\wstest\wstest_t_pointer_s0_nga.script, 		1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screenmodescaling_s0_nga.htm,			, z:\wstest\wstest_t_screenmodescaling_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screendevice_s0_nga.htm,		, z:\wstest\wstest_t_screendevice_s0_nga.script, 	1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_screendeviceresswitch_s0_nga.htm,	, z:\wstest\wstest_t_screendeviceresswitch_s0_nga.script, 	1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_security_s0_nga.htm,			, z:\wstest\wstest_t_security_s0_nga.script, 		1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_transparentanim_s0_nga.htm,			, z:\wstest\wstest_t_transparentanim_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+TESTEXECUTE, C:\logs\testexecute\wstest_t_windowfunction_s0_nga.htm,			, z:\wstest\wstest_t_windowfunction_s0_nga.script, 			1000, , z\wstest\wstest_config.cmd install changetracking, z\wstest\wstest_config.cmd uninstall
+
+# PREQ2669
+TESTEXECUTE, C:\logs\testexecute\layercomposition_tests.htm,		, z:\tlayercomposition\layercomposition_tests.script, 600,		, z\tlayercomposition\t_graphics_wserv_layercomposition.bat install, 			z\tlayercomposition\t_graphics_wserv_layercomposition.bat uninstall  
+TESTEXECUTE, C:\logs\testexecute\uilayerdrawing_tests.htm,		, z:\tlayercomposition\uilayerdrawing_tests.script, 600,		, z\tlayercomposition\t_graphics_wserv_layercomposition.bat install, 			z\tlayercomposition\t_graphics_wserv_layercomposition.bat uninstall  
+TESTEXECUTE, C:\logs\testexecute\uilayerdrawing_tests_noautoclear.htm,	, z:\tlayercomposition\uilayerdrawing_tests_noautoclear.script, 600,	, z\tlayercomposition\t_graphics_wserv_layercomposition.bat install noautoclear, 	z\tlayercomposition\t_graphics_wserv_layercomposition.bat uninstall
+
+#PREQ2636
+TESTEXECUTE, C:\logs\testexecute\tfxframework_tests.htm,		, z:\tlayercomposition\tfxframework_tests.script, 600,			, z\tfxframework\wstest_t_tfxrenderstage.bat install, 			z\tfxframework\wstest_t_tfxrenderstage.bat uninstall
+
+# UIBENCH S60
+TESTEXECUTE, C:\logs\testexecute\te_uibench_s60_techview_emulator.htm,	, c:\uibench_s60\te_uibench_s60_techview_emulator.script, 900
--- a/graphicstest/graphicstestharness/automation/winscw/tests.sequential.txt	Thu May 27 14:13:51 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/winscw/tests.sequential.txt	Fri Jun 11 14:58:47 2010 +0300
@@ -5,6 +5,7 @@
 ## Font Store tests - linked font
 # [Begin sequential linked font tests]
 TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_LinkedFonts.htm,				, z:\fntstoretest\fntstoretest_T_LinkedFonts.script,  600, ,z\ityperast_config.cmd install, z\ityperast_config.cmd uninstall
+#TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_LinkedFontUpdateStage1.htm,		, z:\fntstoretest\fntstoretest_T_LinkedFontUpdateStage1.script ,  600, ,z\ityperast_config.cmd install, z\ityperast_config.cmd uninstall
 TESTEXECUTE, C:\logs\testexecute\fntstoretest_T_LinkedFontUpdateStage2.htm,		, z:\fntstoretest\fntstoretest_T_LinkedFontUpdateStage2.script ,  600, ,z\ityperast_config.cmd install, z\ityperast_config.cmd uninstall
 # [End sequential linked font tests]
 
--- a/graphicstest/graphicstestharness/automation/winscw/tests.txt	Thu May 27 14:13:51 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/winscw/tests.txt	Fri Jun 11 14:58:47 2010 +0300
@@ -265,9 +265,9 @@
 TESTEXECUTE, C:\logs\testexecute\egltest_t_sibling.htm,						, z:\egltest\egltest_t_sibling.script, 						600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
 TESTEXECUTE, C:\logs\testexecute\egltest_t_vgimagetosurfaces.htm,			, z:\egltest\egltest_t_vgimagetosurfaces.script, 			600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
 TESTEXECUTE, C:\logs\testexecute\egltest_t_benchmark_sgimage.htm,        	, z:\egltest\egltest_t_benchmark_sgimage.script, 			300, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
-TESTEXECUTE, C:\logs\testexecute\egltest_t_oom_sgimage.htm,                 	, z:\egltest\egltest_t_oom_sgimage.script, 				600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
 TESTEXECUTE, C:\logs\testexecute\egltest_t_stress_sgimage.htm,			, z:\egltest\egltest_t_stress_sgimage.script, 				600, , z\graphics\t_graphics_config_inifiles.bat install, z\graphics\t_graphics_config_inifiles.bat uninstall
 
+
 # GCE
 TESTEXECUTE, C:\logs\testexecute\functionaltest_mandatory.htm,	, z:\gcetest\functionaltest_mandatory.script,  600, , z\gcetest\gcetest_setup_emu.bat install dabs, z\gcetest\gcetest_setup_emu.bat uninstall dabs
 TESTEXECUTE, C:\logs\testexecute\functionaltest_optional.htm,	, z:\gcetest\functionaltest_optional.script,  600, , z\gcetest\gcetest_setup_emu.bat install dabs, z\gcetest\gcetest_setup_emu.bat uninstall dabs
--- a/graphicstest/graphicstestharness/group/graphics_testharness.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicstest/graphicstestharness/group/graphics_testharness.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_testharness
 source	\sf\os\graphics\graphicstest\graphicstestharness
 notes_source	\component_defs\release.src
--- a/graphicstest/graphicstestharness/rom/graphics_testall.iby	Thu May 27 14:13:51 2010 +0300
+++ b/graphicstest/graphicstestharness/rom/graphics_testall.iby	Fri Jun 11 14:58:47 2010 +0300
@@ -40,7 +40,7 @@
 
 #include <openvgtest.iby>
 
-#include <egltest.iby>
+#include <egltestext.iby>
 
 #include <wservtest.iby>
 #include <t_wservcapcheck.iby>
--- a/graphicstest/uibench/group/graphics_ui_bench.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicstest/uibench/group/graphics_ui_bench.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_ui_bench
 source	\sf\os\graphics\graphicstest\uibench
 notes_source	\component_defs\release.src
--- a/graphicstools/bitmapfonttools/group/graphics_gdtran.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicstools/bitmapfonttools/group/graphics_gdtran.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_gdtran
 source	\sf\os\graphics\graphicstools\bitmapfonttools
 binary	\sf\os\graphics\graphicstools\bitmapfonttools\group	all
--- a/graphicstools/gdi_tools/group/graphics_gditools.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicstools/gdi_tools/group/graphics_gditools.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_gditools
 source	\sf\os\graphics\graphicstools\gdi_tools
 binary	\sf\os\graphics\graphicstools\gdi_tools\group	all
--- a/graphicsutils/commongraphicsheaders/group/graphics_commonheader.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/graphicsutils/commongraphicsheaders/group/graphics_commonheader.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_commonheader
 source	\sf\os\graphics\graphicsutils\commongraphicsheaders
 binary	\sf\os\graphics\graphicsutils\commongraphicsheaders\group		all
--- a/opengles/openglesinterface/group/graphics_openglesheaders.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/opengles/openglesinterface/group/graphics_openglesheaders.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 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: 
-#
 #graphics_openglesheaders.mrp
 
 
--- a/openvg/openvginterface/group/graphics_openvgheaders.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/openvg/openvginterface/group/graphics_openvgheaders.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 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: 
-#
 #graphics_openvgheaders.mrp
 
 component	graphics_openvgheaders
--- a/printingservices/printerdrivers/group/graphics_printdrv.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/printingservices/printerdrivers/group/graphics_printdrv.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_printdrv
 source	\sf\os\graphics\printingservices\printerdrivers
 binary	\sf\os\graphics\printingservices\printerdrivers\group	all
--- a/printingservices/printerdriversupport/group/graphics_pdrstore.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/printingservices/printerdriversupport/group/graphics_pdrstore.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_pdrstore
 source	\sf\os\graphics\printingservices\printerdriversupport
 binary	\sf\os\graphics\printingservices\printerdriversupport\group	all
--- a/windowing/windowserver/group/graphics_wserv.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/windowing/windowserver/group/graphics_wserv.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_wserv
 source	\sf\os\graphics\windowing\windowserver
 binary	\sf\os\graphics\windowing\windowserver\group	all
--- a/windowing/windowserver/group/openwfc/graphics_wserv.mrp	Thu May 27 14:13:51 2010 +0300
+++ b/windowing/windowserver/group/openwfc/graphics_wserv.mrp	Fri Jun 11 14:58:47 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 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: 
-#
-
 component	graphics_wserv
 source	\sf\os\graphics\windowing\windowserver
 binary	\sf\os\graphics\windowing\windowserver\group	all
--- a/windowing/windowserver/nga/SERVER/openwfc/CLIENT.CPP	Thu May 27 14:13:51 2010 +0300
+++ b/windowing/windowserver/nga/SERVER/openwfc/CLIENT.CPP	Fri Jun 11 14:58:47 2010 +0300
@@ -548,7 +548,7 @@
 		// Dispatch the command to the WServ object that will process it
 		iDestObj->CommandL(opcode, cmdParams);	// (call #5)
 		} 
-	while(iNextCmd<endCmd && !TWindowServerEvent::EventReceiver()->IsReadyToRun());
+	while(iNextCmd<endCmd);
 	
 	}
 
--- a/windowing/windowserver/test/t_integ/scripts/graphics-wserv-integ-dsa-h6.script	Thu May 27 14:13:51 2010 +0300
+++ b/windowing/windowserver/test/t_integ/scripts/graphics-wserv-integ-dsa-h6.script	Fri Jun 11 14:58:47 2010 +0300
@@ -1,18 +1,3 @@
-//
-// Copyright (c) 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: 
-//
 /////////////////////////////////////////////////////////////////////
 // graphics-wserv-integ-dsa.script
 //
--- a/windowing/windowserverplugins/openwfc/inc/elementwrapper.h	Thu May 27 14:13:51 2010 +0300
+++ b/windowing/windowserverplugins/openwfc/inc/elementwrapper.h	Fri Jun 11 14:58:47 2010 +0300
@@ -54,7 +54,6 @@
         EUpdate_ALL_ATTRIBS                 = 0x000fffff,
         EUpdate_AttributesIllegal           = 0x00100000,   //If set then the owf scene will not be updated because it would be illegal.
         EUpdate_SettingValid                = 0x00200000,
-        EUpdate_DontLockSource              = 0x00400000,
 
         EUpdate_Insert                      = 0x01000000,
         EUpdate_Remove                      = 0x02000000,
--- a/windowing/windowserverplugins/openwfc/src/elementwrapper.cpp	Thu May 27 14:13:51 2010 +0300
+++ b/windowing/windowserverplugins/openwfc/src/elementwrapper.cpp	Fri Jun 11 14:58:47 2010 +0300
@@ -974,9 +974,6 @@
             }
         }
 
-     FlushAttributeChanges(iElement, EUpdate_ALL_ATTRIBS|EUpdate_DontLockSource);
-     wfcInsertElement(iOpenWfcWrapper.Device(),iElement,elementBelow);
-
     LILOG(("### EXIT CElementWrapper::FlushSceneChanges() FALSE"));
     return ETrue;
     }