--- a/graphicshwdrivers/surfacemgr/inc/surfacemanager.h Fri Aug 13 15:11:40 2010 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,223 +0,0 @@
-// 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:
-// Surface Manager API
-//
-//
-
-/**
- @file
- @publishedPartner
- @prototype
-*/
-
-#ifndef __SURFACEMANAGER_H__
-#define __SURFACEMANAGER_H__
-
-#ifndef __KERNEL_MODE__
-#include <e32std.h>
-#endif
-
-#include <e32cmn.h>
-#include <e32ver.h>
-#include <pixelformats.h>
-#include <graphics/surface.h>
-
-class RSurfaceManagerDriver;
-
-/**
-RSurface Manager User API.
-*/
-class RSurfaceManager
- {
-public:
-
- class THintPair
- {
- public:
- /** UID key number */
- TUid iKey;
- /** Integer key value */
- TInt iValue;
- /** Is the value modifiable */
- TBool iMutable;
- public:
- inline void Set(TUid aKey,TInt aValue,TBool aMutable);
- };
-
- enum TCacheAttribute
- {
- /** CPU cached */
- ECached = 0,
- /** Non CPU cached */
- ENotCached = 1
- };
-
- class TSurfaceCreationAttributes
- {
- public:
- /** Width and height of the surface in pixels. */
- TSize iSize;
- /** Number of buffers in the surface. */
- TInt iBuffers;
- /** The pixel format. */
- TUidPixelFormat iPixelFormat;
- /** Minimum or required number of bytes between start of one line and
- start of next. */
- TInt iStride;
- /** Minimum or required offset to the first buffer from the base of the
- chunk. Typically this will be set to 0. The value specified for the
- offset must comply with the alignment specified in iAlignment.
-
- If iAlignment is page aligned, this value will be rounded up to a
- multiple of the page size when the surface is created, therefore the
- surface info must be queried for the actual value used. */
- TInt iOffsetToFirstBuffer;
- /** Alignment applied to the base address of each buffer in the surface:
- 1, 2, 4, 8 ,16, 32, 64 bytes or EPageAligned. */
- TInt iAlignment;
- /** Require physically contiguous memory. This value will be ignored if
- using a chunk which already exists. */
- TBool iContiguous;
- /** Caching attribute to create chunk memory. This value will be
- ignored if using a chunk which already exists. */
- TCacheAttribute iCacheAttrib;
- /** Minimum or required offset between the start of one buffer and the
- start of the next one in bytes. When set to 0 the surface manager will
- choose how buffers are laid out within the chunk. If it is too small
- and doesn't fit with the alignment, CreateSurface() will return
- KErrArgument. */
- TInt iOffsetBetweenBuffers;
- /** Array of hints which should be associated with the surface. This
- array must not contain duplicate hint keys. */
- THintPair* iSurfaceHints;
- /** Number of hints in the array iSurfaceHints. The number should not
- exceed the maximum number supported by the surface manager, see
- GetSurfaceManagerAttrib(EMaxNumberOfHints). */
- TInt iHintCount;
- /** Should the surface be mappable. If EFalse any call to MapSurface()
- will fail with KErrNotSupported -- Note, some architectures may not
- support mappable surfaces. */
- TBool iMappable;
- public:
- inline TSurfaceCreationAttributes();
- };
-
- class TSurfaceInfoV01
- {
- public:
- /** Width and height of the surface in pixels */
- TSize iSize;
- /** Number of buffers in the surface */
- TInt iBuffers;
- /** The pixel format */
- TUidPixelFormat iPixelFormat;
- /** Number of bytes between start of one line and start of next */
- TInt iStride;
- /** Has physically contiguous memory */
- TBool iContiguous;
- /** Specified if the underlying chunk is CPU cached or not */
- TCacheAttribute iCacheAttrib;
- /** ETrue if the surface can be mapped */
- TBool iMappable;
- };
-
- enum TSurfaceManagerAttrib
- {
- /** Maximum number of hints per surface */
- EMaxNumberOfHints = 0x0
- };
-
- /** Package buf used to pass information about a surface from the driver */
- typedef TPckgBuf<TSurfaceInfoV01> TInfoBuf;
- /** Package buf used to pass the surface creation attributes to the device driver */
- typedef TPckgBuf<TSurfaceCreationAttributes> TSurfaceCreationAttributesBuf;
-
- enum TSyncOperation
- {
- /** Synchronize before non CPU hardware reads from the memory, i.e. if the
- buffer is cached and may have been written to by the CPU, this type of
- synchronisation should be used before a peripheral is used to read from the
- buffer's memory */
- ESyncBeforeNonCPURead,
- /** Synchronize before non CPU hardware writes to the memory, i.e. if the
- buffer is cached and may have been written to by the CPU, this type of
- synchronisation should be used before a peripheral is used to write to the
- buffer's memory */
- ESyncBeforeNonCPUWrite,
- /** Synchronize after non CPU hardware writes to the memory, i.e. if the
- buffer is cached, this type of synchronisation should be used after a
- peripheral has been used to write to the buffer's memory */
- ESyncAfterNonCPUWrite
- };
-
- enum TPageAlignment
- {
- /** Specifies iAlignment is a page alignment */
- EPageAligned = -1
- };
-
-public:
-#ifndef __KERNEL_MODE__
- IMPORT_C RSurfaceManager();
- IMPORT_C TInt Open();
- IMPORT_C void Close();
- IMPORT_C TInt CreateSurface(const TSurfaceCreationAttributesBuf& aReqs, TSurfaceId& aSurfaceId);
- IMPORT_C TInt CreateSurface(const TSurfaceCreationAttributesBuf& aReqs, TSurfaceId& aSurfaceId, const RChunk& aChunkHandle);
- IMPORT_C TInt OpenSurface(const TSurfaceId& aSurfaceId);
- IMPORT_C TInt CloseSurface(const TSurfaceId& aSurfaceId);
- IMPORT_C TInt MapSurface(const TSurfaceId& aSurfaceId, RChunk& aHandle);
- IMPORT_C TInt SurfaceInfo(const TSurfaceId& aSurfaceId, TInfoBuf& aInfo);
- IMPORT_C TInt SynchronizeCache(const TSurfaceId& aSurfaceId, TInt aBuffer, TSyncOperation aOperation);
- IMPORT_C TInt GetSurfaceManagerAttrib(TSurfaceManagerAttrib aAttrib, TInt& aValue);
- IMPORT_C TInt GetSurfaceHint(const TSurfaceId& aSurfaceId, THintPair& aHint);
- IMPORT_C TInt SetSurfaceHint(const TSurfaceId& aSurfaceId, const THintPair& aHint);
- IMPORT_C TInt AddSurfaceHint(const TSurfaceId&aSurface, const THintPair& aHint);
- IMPORT_C TInt GetBufferOffset(const TSurfaceId& aSurfaceId, TInt aBuffer, TInt& aOffset);
-#endif //__KERNEL_MODE__
-private:
- inline RSurfaceManagerDriver& Driver();
-private:
- TInt32 iDriverBuf[4];
- };
-
-//
-// THintPair inline
-//
-
-/**
-Sets key, value and mutability of the hint.
-@param aKeyUid The UID of the key
-@param aValue The value of the hint
-@param aMutable ETrue if the hint value is mutable
-*/
-inline void RSurfaceManager::THintPair::Set(TUid aKeyUid,TInt aValue,TBool aMutable)
- {
- iKey = aKeyUid;
- iValue = aValue;
- iMutable = aMutable;
- }
-
-//
-// TSurfaceCreationAttributes inline
-//
-
-/**
-Default constructor, zero initializes all attributes.
-*/
-inline RSurfaceManager::TSurfaceCreationAttributes::TSurfaceCreationAttributes()
- {
- memclr(this, sizeof(TSurfaceCreationAttributes));
- }
-
-#endif //__SURFACEMANAGER_H__