graphicshwdrivers/surfacemgr/inc/surfacemanager.h
branchbug235_bringup_0
changeset 147 af143508cc47
parent 146 4d1fe4a7ce83
child 148 706129140cfc
--- 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__