--- 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 ¶ms);
+ 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 ¶ms);
+ 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 ¶ms)
+ {
+ 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 ¶ms)
+ {
+ 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;
}