# HG changeset patch # User Pat Downey # Date 1277375162 -3600 # Node ID f4d9a5ce46048c05ddc6305813a7a750c910a475 # Parent bf7481649c981c6aa987b5ff5c56d5adaf8c73de# Parent 509acdbd8bddd403048881e35968ee2b0d060e86 Re-merge fixes for bug 1362, bug 1666, bug 1863, KhronosRI and bld.inf. diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/eglinterface/group/graphics_eglheaders.mrp --- a/egl/eglinterface/group/graphics_eglheaders.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/egl/eglinterface/group/graphics_eglheaders.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/eglinterface/include/1.4/eglext.h --- a/egl/eglinterface/include/1.4/eglext.h Wed Jun 02 13:14:22 2010 +0100 +++ b/egl/eglinterface/include/1.4/eglext.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/eglrefimpl/group/graphics_eglrefimpl.mrp --- a/egl/eglrefimpl/group/graphics_eglrefimpl.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/egl/eglrefimpl/group/graphics_eglrefimpl.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/eglswitch/group/graphics_eglswitch.mrp --- a/egl/eglswitch/group/graphics_eglswitch.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/egl/eglswitch/group/graphics_eglswitch.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/group/bld.inf Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/group/eglendpointlifetimetesthelper.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/group/eglendpointlifetimetesthelper.mmp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/group/eglendpointremotetest.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/group/eglendpointremotetest.mmp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/group/eglendpointtestserver.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/group/eglendpointtestserver.mmp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/inc/eglendpointwrap.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/inc/eglendpointwrap.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include +#include + + +//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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/inc/egltest_commscommon.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/inc/egltest_commscommon.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include +#include +#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 iFile; + TInt iLine; + TInt iSeverity; + TBuf8 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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/inc/localtestbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/inc/localtestbase.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include +#include +//#include +#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 iRegisteredTestIds; + RArray 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 iResultOutQueue; + RMsgQueue iParamsInQueue; + +protected: + const TTestUid iTestId; + TInt iCurrentTestCase; + TBool iIsInTestStep; + TVerdict iTestIdVerdict; + TBool iHasCurrentTestIds; + CTestIdResultLogger* iResultLog; + }; + + +#endif // __EGLENDPOINTTESTSERVER_H__ diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/inc/log.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/inc/log.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 aFmt, ...)=0; + }; + +#endif // __LOG_H__ diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/inc/remotetestbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/inc/remotetestbase.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include +#include +#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 iResultOutQueue; + RMsgQueue 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 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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/inc/renderstage.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/inc/renderstage.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include + + +//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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/inc/renderstagefactory.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/inc/renderstagefactory.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include + + +//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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/res/Image1.bmp Binary file egl/egltest/endpointtestsuite/automated/res/Image1.bmp has changed diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/res/Image2.bmp Binary file egl/egltest/endpointtestsuite/automated/res/Image2.bmp has changed diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/res/Image3.bmp Binary file egl/egltest/endpointtestsuite/automated/res/Image3.bmp has changed diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/res/Image4.bmp Binary file egl/egltest/endpointtestsuite/automated/res/Image4.bmp has changed diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/res/eglendpointremotetest.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/res/eglendpointremotetest.rss Thu Jun 24 11:26:02 2010 +0100 @@ -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 + + +//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 = ""; + } + }; + } + }; + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/res/endpoint_autotest_ini_config.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/res/endpoint_autotest_ini_config.bat Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/res/endpoint_autotest_wsini.ini Binary file egl/egltest/endpointtestsuite/automated/res/endpoint_autotest_wsini.ini has changed diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/rom/egltestendpointauto.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/rom/egltestendpointauto.iby Thu Jun 24 11:26:02 2010 +0100 @@ -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__ diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/scripts/egltest_t_endpoint.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/scripts/egltest_t_endpoint.script Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/src/eglendpointwrap.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/src/eglendpointwrap.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#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(ProcAddressL("eglCreateEndpointNOK")); + ipfnEglDestroyEndpointNOK = reinterpret_cast(ProcAddressL("eglDestroyEndpointNOK")); + ipfnEglGetEndpointAttribNOK = reinterpret_cast(ProcAddressL("eglGetEndpointAttribNOK")); + ipfnEglSetEndpointAttribNOK = reinterpret_cast(ProcAddressL("eglSetEndpointAttribNOK")); + ipfnEglEndpointBeginStreamingNOK = reinterpret_cast(ProcAddressL("eglEndpointBeginStreamingNOK")); + ipfnEglEndpointEndStreamingNOK = reinterpret_cast(ProcAddressL("eglEndpointEndStreamingNOK")); + ipfnEglAcquireImageNOK = reinterpret_cast(ProcAddressL("eglAcquireImageNOK")); + ipfnEglReleaseImageNOK = reinterpret_cast(ProcAddressL("eglReleaseImageNOK")); + ipfnEglGetEndpointDirtyAreaNOK = reinterpret_cast(ProcAddressL("eglGetEndpointDirtyAreaNOK")); + ipfnEglEndpointRequestNotificationNOK = reinterpret_cast(ProcAddressL("eglEndpointRequestNotificationNOK")); + ipfnEglEndpointCancelNotificationNOK = reinterpret_cast(ProcAddressL("eglEndpointCancelNotificationNOK")); + ipfnEglDestroyImageKHR = reinterpret_cast(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(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); + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/src/egltest_localteststepfactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/src/egltest_localteststepfactory.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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; + } + + + diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/src/egltest_remoteteststepfactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/src/egltest_remoteteststepfactory.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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; + } + diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/src/localtestbase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/src/localtestbase.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include +#include +#include +#include +#include +#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 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(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; + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/src/remotetestbase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/src/remotetestbase.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include + + +// 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(eglGetProcAddress("egliDebugHeapMarkStart")); + if (heapMarkStart) + { + heapMarkStart(); + } +#endif + } + +void CRemoteTestEnv::DoEglHeapCheck() + { +#if USE_EGLHEAP_CHECKING + typedef EGLint (*TEglDebugHeapMarkEndPtr)(EGLint count); + + TEglDebugHeapMarkEndPtr heapMarkEnd = reinterpret_cast(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(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 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; + } + +//-------------------------------------------------------------------------------- diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/src/renderstage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/src/renderstage.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 + + +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; + } + diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/src/renderstagefactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/src/renderstagefactory.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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(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; + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/src/resolver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/src/resolver.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#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; + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 iExecResultOutQueue; + RMsgQueue 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__ diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine_execthread.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine_execthread.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include +#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 iResultOutQueue; + RMsgQueue 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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine_types.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_engine_types.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_images.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_images.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include +#include +#include +#include + +// 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__ diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_util.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpoint_util.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 + +// Forward declare +class CTestExecuteLogger; + +NONSHARABLE_CLASS(TEndpointUtil) + { +public: + static void SetLoggerForProcessWrapperL(CTestExecuteLogger& aLogger); + }; + +#endif diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointacquire.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointacquire.h Thu Jun 24 11:26:02 2010 +0100 @@ -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__ diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointapiexposure.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointapiexposure.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 + diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointattrib.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointattrib.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointcreate.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointcreate.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointdirtyarea.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointdirtyarea.h Thu Jun 24 11:26:02 2010 +0100 @@ -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__ diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointimage.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointimage.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 iProcessResultInQueue; + RMsgQueue 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 iResultOutQueue; + RMsgQueue iParamsInQueue; + }; + +#endif // __EGLTEST_ENDPOINTIMAGE_H__ diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointlocking.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointlocking.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointnotification.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointnotification.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointstreaming.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointstreaming.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointstreamingtests.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointstreamingtests.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointtearing.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_endpointtearing.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_parameters.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_parameters.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include +#include + + +//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 +class CParameters : public CBase + { +public: + static CParameters* NewLC(TBool aCreateBadParams, const RArray& 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& aValidParamsArray, TInt aIndex); + void ConstructL(TBool aCreateBadParams, const T* aValidParamsArray, TInt aCount, TInt aIndex); + void ConstructL(TBool aCreateBadParams, T aValidParam); + + void MakeBadParamsL(const RArray& aValidParamsArray); + void MakeGoodParamsL(const RArray& aValidParamsArray, TInt aIndex); + + TBool IsErrorValue(const T aValue) const; +private: + RArray iParams; + }; + + +typedef CParameters CDisplayParams; +typedef CParameters CEndpointParams; +typedef CParameters CImageParams; +typedef CParameters CEnumParams; +typedef CParameters CIntParams; +typedef CParameters CSurfaceIdParams; +typedef CParameters CSyncParams; + +template +CParameters* CParameters::NewLC(TBool aCreateBadParams, const RArray& aValidParamsArray, TInt aIndex) + { + CParameters* obj = new (ELeave) CParameters(); + CleanupStack::PushL(obj); + obj->ConstructL(aCreateBadParams, aValidParamsArray); + return obj; + } + + +template +CParameters* CParameters::NewLC(TBool aCreateBadParams, const T* aValidParamsArray, TInt aCount, TInt aIndex) + { + CParameters* obj = new (ELeave) CParameters(); + CleanupStack::PushL(obj); + obj->ConstructL(aCreateBadParams, aValidParamsArray, aCount, aIndex); + return obj; + } + + +template +CParameters* CParameters::NewLC(TBool aCreateBadParams, T aValidParam) + { + CParameters* obj = new (ELeave) CParameters(); + CleanupStack::PushL(obj); + obj->ConstructL(aCreateBadParams, aValidParam); + return obj; + } + +template +CParameters::CParameters() + { + } + + +template +void CParameters::ConstructL(TBool aCreateBadParams, const RArray& aValidParamsArray, TInt aIndex) + { + if(aCreateBadParams) + { + MakeBadParamsL(aValidParamsArray); + } + else + { + MakeGoodParamsL(aValidParamsArray, aIndex); + } + } + + +template +void CParameters::ConstructL(TBool aCreateBadParams, const T* aValidParamsArray, TInt aCount, TInt aIndex) + { + RArray validParamsArray; + CleanupClosePushL(validParamsArray); + for(TInt i=0; i < aCount; i++) + { + validParamsArray.AppendL(aValidParamsArray[i]); + } + ConstructL(aCreateBadParams, validParamsArray, aIndex); + CleanupStack::PopAndDestroy(1); + } + + +template +void CParameters::ConstructL(TBool aCreateBadParams, T aValidParam) + { + ConstructL(aCreateBadParams, &aValidParam, 1, 0); + } + + +template +void CParameters::MakeGoodParamsL(const RArray& aValidParamsArray, TInt aIndex) + { + ASSERT(iParams.Count() == 0); + iParams.AppendL(aValidParamsArray[aIndex]); + } + + +template +void CParameters::MakeBadParamsL(const RArray& aValidParamsArray) + { + RArray 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 +TBool CParameters::IsErrorValue(const T aValue) const + { + return aValue == 0; // Default value, eg. EGL_NO_DISPLAY + } + +template <> +TBool CParameters::IsErrorValue(const TSurfaceId aValue) const + { + return aValue.IsNull(); + } + +template +CParameters::~CParameters() + { + iParams.Close(); + } + + +template +TInt CParameters::Count() const + { + return iParams.Count(); + } + + +template +T& CParameters::operator[](TInt aIndex) + { + return iParams[aIndex]; + } + + +template +const T& CParameters::operator[](TInt aIndex) const + { + return iParams[aIndex]; + } + +template<> +void CParameters::MakeBadParamsL(const RArray& aValidParamsArray) + { + RArray 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::MakeBadParamsL(const RArray& /* 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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tinc/egltest_surface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tinc/egltest_surface.h Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include +#include +#include +#include +#include +#include + +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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_execthread.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_execthread.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 + +/* + * 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; + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_local.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_local.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#include +#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(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); + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_remote.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_engine_remote.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 +#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(retval), si, reinterpret_cast(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(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")); + } + } + diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_images.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_images.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 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 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; yGetScanLine(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(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(vgGetParameteri(iVgImage, VG_IMAGE_FORMAT)); + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_util.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpoint_util.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 + + +/** +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 resultFilePath; + TBuf 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 xmlLogFile(xmlFilePath); + TBuf logFile; + TBuf logFileNameFile(resultFilePath); + logFileNameFile.Append(KTestExecuteScheduleTestLogCompatibilityNameFile); + if(file.Open(fS,logFileNameFile,EFileRead | EFileShareAny) != KErrNone) + { + User::Panic(_L("Unsupported"), -1); + } + else + { + CleanupClosePushL(file); + TBuf8 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 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); + } + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointacquire_local.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointacquire_local.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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) + { + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointapiexposure_local.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointapiexposure_local.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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); + } + } + diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointapiexposure_remote.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointapiexposure_remote.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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); + } + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointattrib_local.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointattrib_local.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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) + { + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointcreate_local.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointcreate_local.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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) + { + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointdirtyarea.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointdirtyarea.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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) + { + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointimage_local.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointimage_local.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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(); + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointimagelifetime.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointimagelifetime.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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(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; + } + + diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointlocking_local.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointlocking_local.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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) + { + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointnotification.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointnotification.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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) + { + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointstreaming_local.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointstreaming_local.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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) + { + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointstreamingtests_local.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointstreamingtests_local.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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(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); + } + diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointtearing_local.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointtearing_local.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 + + +/** +@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(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); + } diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointtearing_remote.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_endpointtearing_remote.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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; + } + diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/automated/tsrc/egltest_surface.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/tsrc/egltest_surface.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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 + +#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; + } + } + diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/group/bld.inf Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/endpointtestsuite/rom/eglendpointtestsuite.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/rom/eglendpointtestsuite.iby Thu Jun 24 11:26:02 2010 +0100 @@ -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 + + +#endif // __EGLENDPOINTTESTSUITE_IBY__ diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/group/bld.inf --- a/egl/egltest/group/bld.inf Wed Jun 02 13:14:22 2010 +0100 +++ b/egl/egltest/group/bld.inf Thu Jun 24 11:26:02 2010 +0100 @@ -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" diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/group/graphics_egltest.mrp --- a/egl/egltest/group/graphics_egltest.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/egl/egltest/group/graphics_egltest.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 egl/egltest/rom/egltest.iby --- a/egl/egltest/rom/egltest.iby Wed Jun 02 13:14:22 2010 +0100 +++ b/egl/egltest/rom/egltest.iby Thu Jun 24 11:26:02 2010 +0100 @@ -35,6 +35,9 @@ #include #include +//Include the endpoint test suite +#include + // test server file=ABI_DIR\DEBUG_DIR\egltest.dll sys\bin\egltest.dll file=ABI_DIR\DEBUG_DIR\egltestserver.exe sys\bin\egltestserver.exe diff -r 509acdbd8bdd -r f4d9a5ce4604 fbs/fontandbitmapserver/group/graphics_fbserv.mrp --- a/fbs/fontandbitmapserver/group/graphics_fbserv.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/fbs/fontandbitmapserver/group/graphics_fbserv.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 fbs/fontandbitmapserver/sfbs/HASHMAP.CPP --- a/fbs/fontandbitmapserver/sfbs/HASHMAP.CPP Wed Jun 02 13:14:22 2010 +0100 +++ b/fbs/fontandbitmapserver/sfbs/HASHMAP.CPP Thu Jun 24 11:26:02 2010 +0100 @@ -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" diff -r 509acdbd8bdd -r f4d9a5ce4604 graphics_info/graphics_metadata/graphics_metadata.mrp --- a/graphics_info/graphics_metadata/graphics_metadata.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphics_info/graphics_metadata/graphics_metadata.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphics_info/graphicsdocs/graphics_documentation.mrp --- a/graphics_info/graphicsdocs/graphics_documentation.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphics_info/graphicsdocs/graphics_documentation.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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\ diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsapitest/graphicssvs/group/graphicssvs.mrp --- a/graphicsapitest/graphicssvs/group/graphicssvs.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsapitest/graphicssvs/group/graphicssvs.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/openwfcinterface/group/graphics_openwfcinterface.mrp --- a/graphicscomposition/openwfcinterface/group/graphics_openwfcinterface.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/openwfcinterface/group/graphics_openwfcinterface.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/openwfcompositionengine/adaptation/src/Platform/Graphics/symbian/owfnativestreamstub.cpp --- a/graphicscomposition/openwfcompositionengine/adaptation/src/Platform/Graphics/symbian/owfnativestreamstub.cpp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/openwfcompositionengine/adaptation/src/Platform/Graphics/symbian/owfnativestreamstub.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -336,7 +336,7 @@ pixelSize); if (format) { //translate format. If error then OWF_IMAGE_NOT_SUPPORTED is set. - PixelFormatConversion(symFormat,*format); + PixelFormatConversion(static_cast(symFormat),*format); } } diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/openwfsupport/inc/streammap.h --- a/graphicscomposition/openwfsupport/inc/streammap.h Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/openwfsupport/inc/streammap.h Thu Jun 24 11:26:02 2010 +0100 @@ -21,14 +21,12 @@ #include #include //for RFastLock #include //for RHashMap -#include - -#include 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-- diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/openwfsupport/inc/symbianstream.h --- a/graphicscomposition/openwfsupport/inc/symbianstream.h Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/openwfsupport/inc/symbianstream.h Thu Jun 24 11:26:02 2010 +0100 @@ -26,7 +26,6 @@ typedef struct struct_TSurfaceId TSurfaceId; #endif #include -#include 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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/openwfsupport/src/openwfcstream.cpp --- a/graphicscomposition/openwfsupport/src/openwfcstream.cpp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/openwfsupport/src/openwfcstream.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -18,6 +18,7 @@ // Include Files #include +#include #include #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); diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/openwfsupport/src/streammap.cpp --- a/graphicscomposition/openwfsupport/src/streammap.cpp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/openwfsupport/src/streammap.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -17,6 +17,7 @@ #include "streammap.h" #include +#include #include #include #include @@ -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(COpenWfcStreamMap::HashFunction), TIdentityRelation()), +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; diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/openwfsupport/test/tstreamoperation/tnativestream.cpp --- a/graphicscomposition/openwfsupport/test/tstreamoperation/tnativestream.cpp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/openwfsupport/test/tstreamoperation/tnativestream.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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++) diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/surfaceupdate/group/graphics_surfaceupdate.mrp --- a/graphicscomposition/surfaceupdate/group/graphics_surfaceupdate.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/surfaceupdate/group/graphics_surfaceupdate.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmh --- a/graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmh Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmh Thu Jun 24 11:26:02 2010 +0100 @@ -13,7 +13,7 @@ // Description: // -CAPABILITY PowerMgmt ReadDeviceData WriteDeviceData ProtServ +CAPABILITY All -tcb targettype DLL VENDORID 0x70000001 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmp --- a/graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/surfaceupdate/group/surfaceupdateserver.mmp Thu Jun 24 11:26:02 2010 +0100 @@ -23,4 +23,6 @@ target surfaceupdateserver.dll uid 0x1000008D 0x10283036 +EPOCALLOWDLLDATA + SMPSAFE diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/surfaceupdate/group/tsurfaceupdateserver.mmp --- a/graphicscomposition/surfaceupdate/group/tsurfaceupdateserver.mmp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/surfaceupdate/group/tsurfaceupdateserver.mmp Thu Jun 24 11:26:02 2010 +0100 @@ -48,6 +48,6 @@ deffile surfaceupdateserver.def - +EPOCALLOWDLLDATA SMPSAFE diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/surfaceupdate/inc/surfaceupdateserver.h --- a/graphicscomposition/surfaceupdate/inc/surfaceupdateserver.h Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/surfaceupdate/inc/surfaceupdateserver.h Thu Jun 24 11:26:02 2010 +0100 @@ -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(); diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/surfaceupdate/src/surfaceupdateserver.cpp --- a/graphicscomposition/surfaceupdate/src/surfaceupdateserver.cpp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/surfaceupdate/src/surfaceupdateserver.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -23,11 +23,13 @@ #ifdef TEST_SURFACE_UPDATE #include "surfaceupdatetest.h" #endif - +#include 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 (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 (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; } diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.cpp --- a/graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.cpp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.cpp Thu Jun 24 11:26:02 2010 +0100 @@ -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")); diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.h --- a/graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.h Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.h Thu Jun 24 11:26:02 2010 +0100 @@ -52,7 +52,6 @@ void TestCase9L(); void TestCase10(); void TestCase11(); - void TestCase12L(); void TestCase13L(); void TestCase14(); void TestCase15(); diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsdeviceinterface/bitgdi/group/graphics_bitgdi.mrp --- a/graphicsdeviceinterface/bitgdi/group/graphics_bitgdi.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsdeviceinterface/bitgdi/group/graphics_bitgdi.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsdeviceinterface/colourpalette/group/graphics_palette.mrp --- a/graphicsdeviceinterface/colourpalette/group/graphics_palette.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsdeviceinterface/colourpalette/group/graphics_palette.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsdeviceinterface/directgdi/group/graphics_directgdi.mrp --- a/graphicsdeviceinterface/directgdi/group/graphics_directgdi.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsdeviceinterface/directgdi/group/graphics_directgdi.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsdeviceinterface/directgdiadaptation/group/graphics_directgdiadapter.mrp --- a/graphicsdeviceinterface/directgdiadaptation/group/graphics_directgdiadapter.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsdeviceinterface/directgdiadaptation/group/graphics_directgdiadapter.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsdeviceinterface/directgdiinterface/group/graphics_directgdiheaders.mrp --- a/graphicsdeviceinterface/directgdiinterface/group/graphics_directgdiheaders.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsdeviceinterface/directgdiinterface/group/graphics_directgdiheaders.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsdeviceinterface/screendriver/group/graphics_screendriver.mrp --- a/graphicsdeviceinterface/screendriver/group/graphics_screendriver.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsdeviceinterface/screendriver/group/graphics_screendriver.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicshwdrivers/surfacemgr/group/graphics_surfacemanager.mrp --- a/graphicshwdrivers/surfacemgr/group/graphics_surfacemanager.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicshwdrivers/surfacemgr/group/graphics_surfacemanager.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsresourceservices/graphicsresource/group/graphics_graphicsresource.mrp --- a/graphicsresourceservices/graphicsresource/group/graphics_graphicsresource.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsresourceservices/graphicsresource/group/graphics_graphicsresource.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsresourceservices/graphicsresourceadaptation/group/graphics_graphicsresourceadapter.mrp --- a/graphicsresourceservices/graphicsresourceadaptation/group/graphics_graphicsresourceadapter.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsresourceservices/graphicsresourceadaptation/group/graphics_graphicsresourceadapter.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsresourceservices/graphicsresourceimplementation/group/graphics_graphicsresourceimplementation.mrp --- a/graphicsresourceservices/graphicsresourceimplementation/group/graphics_graphicsresourceimplementation.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsresourceservices/graphicsresourceimplementation/group/graphics_graphicsresourceimplementation.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsresourceservices/graphicsresourceinterface/group/graphics_graphicsresourceinterface.mrp --- a/graphicsresourceservices/graphicsresourceinterface/group/graphics_graphicsresourceinterface.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsresourceservices/graphicsresourceinterface/group/graphics_graphicsresourceinterface.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/graphicssystemgui.sysdef.xml --- a/graphicstest/graphicstestharness/automation/graphicssystemgui.sysdef.xml Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicstest/graphicstestharness/automation/graphicssystemgui.sysdef.xml Thu Jun 24 11:26:02 2010 +0100 @@ -172,6 +172,9 @@ + + + diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/h4/roms.endpoint.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicstest/graphicstestharness/automation/h4/roms.endpoint.txt Thu Jun 24 11:26:02 2010 +0100 @@ -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', '' ) diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/h4/roms.endpoint.wdp.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicstest/graphicstestharness/automation/h4/roms.endpoint.wdp.txt Thu Jun 24 11:26:02 2010 +0100 @@ -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','') diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/h4/tests_eglhybrid.endpoint.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicstest/graphicstestharness/automation/h4/tests_eglhybrid.endpoint.txt Thu Jun 24 11:26:02 2010 +0100 @@ -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 + diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/h6/roms.endpoint.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicstest/graphicstestharness/automation/h6/roms.endpoint.txt Thu Jun 24 11:26:02 2010 +0100 @@ -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', '' ) diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/h6/runroms.cmd --- a/graphicstest/graphicstestharness/automation/h6/runroms.cmd Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicstest/graphicstestharness/automation/h6/runroms.cmd Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/h6/tests_eglhybrid.endpoint.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicstest/graphicstestharness/automation/h6/tests_eglhybrid.endpoint.txt Thu Jun 24 11:26:02 2010 +0100 @@ -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 + diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/ne1/roms.endpoint.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicstest/graphicstestharness/automation/ne1/roms.endpoint.txt Thu Jun 24 11:26:02 2010 +0100 @@ -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','') diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/ne1/tests_eglhybrid.endpoint.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicstest/graphicstestharness/automation/ne1/tests_eglhybrid.endpoint.txt Thu Jun 24 11:26:02 2010 +0100 @@ -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 + diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/winscw/tests.endpoint.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicstest/graphicstestharness/automation/winscw/tests.endpoint.txt Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/winscw/tests.sequential.txt --- a/graphicstest/graphicstestharness/automation/winscw/tests.sequential.txt Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicstest/graphicstestharness/automation/winscw/tests.sequential.txt Thu Jun 24 11:26:02 2010 +0100 @@ -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] diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/automation/winscw/tests.txt --- a/graphicstest/graphicstestharness/automation/winscw/tests.txt Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicstest/graphicstestharness/automation/winscw/tests.txt Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/group/graphics_testharness.mrp --- a/graphicstest/graphicstestharness/group/graphics_testharness.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicstest/graphicstestharness/group/graphics_testharness.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/graphicstestharness/rom/graphics_testall.iby --- a/graphicstest/graphicstestharness/rom/graphics_testall.iby Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicstest/graphicstestharness/rom/graphics_testall.iby Thu Jun 24 11:26:02 2010 +0100 @@ -40,7 +40,7 @@ #include -#include +#include #include #include diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstest/uibench/group/graphics_ui_bench.mrp --- a/graphicstest/uibench/group/graphics_ui_bench.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicstest/uibench/group/graphics_ui_bench.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstools/bitmapfonttools/group/graphics_gdtran.mrp --- a/graphicstools/bitmapfonttools/group/graphics_gdtran.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicstools/bitmapfonttools/group/graphics_gdtran.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicstools/gdi_tools/group/graphics_gditools.mrp --- a/graphicstools/gdi_tools/group/graphics_gditools.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicstools/gdi_tools/group/graphics_gditools.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 graphicsutils/commongraphicsheaders/group/graphics_commonheader.mrp --- a/graphicsutils/commongraphicsheaders/group/graphics_commonheader.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/graphicsutils/commongraphicsheaders/group/graphics_commonheader.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 opengles/openglesinterface/group/graphics_openglesheaders.mrp --- a/opengles/openglesinterface/group/graphics_openglesheaders.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/opengles/openglesinterface/group/graphics_openglesheaders.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 openvg/openvginterface/group/graphics_openvgheaders.mrp --- a/openvg/openvginterface/group/graphics_openvgheaders.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/openvg/openvginterface/group/graphics_openvgheaders.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 printingservices/printerdrivers/group/graphics_printdrv.mrp --- a/printingservices/printerdrivers/group/graphics_printdrv.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/printingservices/printerdrivers/group/graphics_printdrv.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 printingservices/printerdriversupport/group/graphics_pdrstore.mrp --- a/printingservices/printerdriversupport/group/graphics_pdrstore.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/printingservices/printerdriversupport/group/graphics_pdrstore.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 windowing/windowserver/group/graphics_wserv.mrp --- a/windowing/windowserver/group/graphics_wserv.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/windowing/windowserver/group/graphics_wserv.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 windowing/windowserver/group/openwfc/graphics_wserv.mrp --- a/windowing/windowserver/group/openwfc/graphics_wserv.mrp Wed Jun 02 13:14:22 2010 +0100 +++ b/windowing/windowserver/group/openwfc/graphics_wserv.mrp Thu Jun 24 11:26:02 2010 +0100 @@ -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 diff -r 509acdbd8bdd -r f4d9a5ce4604 windowing/windowserver/nga/SERVER/openwfc/CLIENT.CPP --- a/windowing/windowserver/nga/SERVER/openwfc/CLIENT.CPP Wed Jun 02 13:14:22 2010 +0100 +++ b/windowing/windowserver/nga/SERVER/openwfc/CLIENT.CPP Thu Jun 24 11:26:02 2010 +0100 @@ -548,7 +548,7 @@ // Dispatch the command to the WServ object that will process it iDestObj->CommandL(opcode, cmdParams); // (call #5) } - while(iNextCmdIsReadyToRun()); + while(iNextCmd