/*************************************************************************/ /*!
@File
@Title          PDUMP definitions header
@Copyright      Copyright (c) Imagination Technologies Ltd. All Rights Reserved
@Description    PDUMP definitions header
@License        Dual MIT/GPLv2

The contents of this file are subject to the MIT license as set out below.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

Alternatively, the contents of this file may be used under the terms of
the GNU General Public License Version 2 ("GPL") in which case the provisions
of GPL are applicable instead of those above.

If you wish to allow use of your version of this file only under the terms of
GPL, and not to allow others to use your version of this file under the terms
of the MIT license, indicate your decision by deleting the provisions above
and replace them with the notice and other provisions required by GPL as set
out in the file called "GPL-COPYING" included in this distribution. If you do
not delete the provisions above, a recipient may use your version of this file
under the terms of either the MIT license or GPL.

This License is also included in this distribution in the file called
"MIT-COPYING".

EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ /**************************************************************************/

#ifndef PDUMPDEFS_H
#define PDUMPDEFS_H

/*! PDump Pixel Format Enumeration */
typedef enum _PDUMP_PIXEL_FORMAT_
{
	PVRSRV_PDUMP_PIXEL_FORMAT_UNSUPPORTED = 0,
	PVRSRV_PDUMP_PIXEL_FORMAT_RGB8 = 1,
	PVRSRV_PDUMP_PIXEL_FORMAT_RGB332 = 2,
	PVRSRV_PDUMP_PIXEL_FORMAT_KRGB555 = 3,
	PVRSRV_PDUMP_PIXEL_FORMAT_RGB565 = 4,
	PVRSRV_PDUMP_PIXEL_FORMAT_ARGB4444 = 5,
	PVRSRV_PDUMP_PIXEL_FORMAT_ARGB1555 = 6,
	PVRSRV_PDUMP_PIXEL_FORMAT_RGB888 = 7,
	PVRSRV_PDUMP_PIXEL_FORMAT_ARGB8888 = 8,
	PVRSRV_PDUMP_PIXEL_FORMAT_YUV8 = 9,
/*	PVRSRV_PDUMP_PIXEL_FORMAT_AYUV4444 = 10, */
	PVRSRV_PDUMP_PIXEL_FORMAT_VY0UY1_8888 = 11,
	PVRSRV_PDUMP_PIXEL_FORMAT_UY0VY1_8888 = 12,
	PVRSRV_PDUMP_PIXEL_FORMAT_Y0UY1V_8888 = 13,
	PVRSRV_PDUMP_PIXEL_FORMAT_Y0VY1U_8888 = 14,
	PVRSRV_PDUMP_PIXEL_FORMAT_YUV888 = 15,
	PVRSRV_PDUMP_PIXEL_FORMAT_UYVY10101010 = 16,
	PVRSRV_PDUMP_PIXEL_FORMAT_VYAUYA8888 = 17,
	PVRSRV_PDUMP_PIXEL_FORMAT_AYUV8888 = 18,
	PVRSRV_PDUMP_PIXEL_FORMAT_AYUV2101010 = 19,
	PVRSRV_PDUMP_PIXEL_FORMAT_YUV101010 = 20,
	PVRSRV_PDUMP_PIXEL_FORMAT_PL12Y8 = 21,
	PVRSRV_PDUMP_PIXEL_FORMAT_YUV_IMC2 = 22,
	PVRSRV_PDUMP_PIXEL_FORMAT_YUV_YV12 = 23,
	PVRSRV_PDUMP_PIXEL_FORMAT_YUV_PL8 = 24,
	PVRSRV_PDUMP_PIXEL_FORMAT_YUV_PL12 = 25,
	PVRSRV_PDUMP_PIXEL_FORMAT_422PL12YUV8 = 26,
	PVRSRV_PDUMP_PIXEL_FORMAT_420PL12YUV8 = 27,
	PVRSRV_PDUMP_PIXEL_FORMAT_PL12Y10 = 28,
	PVRSRV_PDUMP_PIXEL_FORMAT_422PL12YUV10 = 29,
	PVRSRV_PDUMP_PIXEL_FORMAT_420PL12YUV10 = 30,
	PVRSRV_PDUMP_PIXEL_FORMAT_ABGR8888 = 31,
	PVRSRV_PDUMP_PIXEL_FORMAT_BGRA8888 = 32,
	PVRSRV_PDUMP_PIXEL_FORMAT_ARGB8332 = 33,
	PVRSRV_PDUMP_PIXEL_FORMAT_RGB555 = 34,
	PVRSRV_PDUMP_PIXEL_FORMAT_F16 = 35,
	PVRSRV_PDUMP_PIXEL_FORMAT_F32 = 36,
	PVRSRV_PDUMP_PIXEL_FORMAT_L16 = 37,
	PVRSRV_PDUMP_PIXEL_FORMAT_L32 = 38,
	PVRSRV_PDUMP_PIXEL_FORMAT_RGBA8888 = 39,
	PVRSRV_PDUMP_PIXEL_FORMAT_ABGR4444 = 40,
	PVRSRV_PDUMP_PIXEL_FORMAT_RGBA4444 = 41,
	PVRSRV_PDUMP_PIXEL_FORMAT_BGRA4444 = 42,
	PVRSRV_PDUMP_PIXEL_FORMAT_ABGR1555 = 43,
	PVRSRV_PDUMP_PIXEL_FORMAT_RGBA5551 = 44,
	PVRSRV_PDUMP_PIXEL_FORMAT_BGRA5551 = 45,
	PVRSRV_PDUMP_PIXEL_FORMAT_BGR565 = 46,
	PVRSRV_PDUMP_PIXEL_FORMAT_A8 = 47,
	PVRSRV_PDUMP_PIXEL_FORMAT_F16F16F16F16 = 49,
	PVRSRV_PDUMP_PIXEL_FORMAT_A4 = 50,
	PVRSRV_PDUMP_PIXEL_FORMAT_ARGB2101010 = 51,
	PVRSRV_PDUMP_PIXEL_FORMAT_RSGSBS888 = 52,
	PVRSRV_PDUMP_PIXEL_FORMAT_F32F32F32F32 = 53,
	PVRSRV_PDUMP_PIXEL_FORMAT_F16F16 = 54,
	PVRSRV_PDUMP_PIXEL_FORMAT_F32F32 = 55,
	PVRSRV_PDUMP_PIXEL_FORMAT_F16F16F16 = 56,
	PVRSRV_PDUMP_PIXEL_FORMAT_F32F32F32 = 57,
	PVRSRV_PDUMP_PIXEL_FORMAT_U8 = 58,
	PVRSRV_PDUMP_PIXEL_FORMAT_U8U8 = 59,
	PVRSRV_PDUMP_PIXEL_FORMAT_U16 = 60,
	PVRSRV_PDUMP_PIXEL_FORMAT_U16U16 = 61,
	PVRSRV_PDUMP_PIXEL_FORMAT_U16U16U16U16 = 62,
	PVRSRV_PDUMP_PIXEL_FORMAT_U32 = 63,
	PVRSRV_PDUMP_PIXEL_FORMAT_U32U32 = 64,
	PVRSRV_PDUMP_PIXEL_FORMAT_U32U32U32U32 = 65,
	PVRSRV_PDUMP_PIXEL_FORMAT_YUV_YV32 = 66,

	PVRSRV_PDUMP_PIXEL_FORMAT_FORCE_I32 = 0x7fffffff

} PDUMP_PIXEL_FORMAT;

typedef enum _PDUMP_FBC_SWIZZLE_
{
	PVRSRV_PDUMP_FBC_SWIZZLE_ARGB = 0x0,
	PVRSRV_PDUMP_FBC_SWIZZLE_ARBG = 0x1,
	PVRSRV_PDUMP_FBC_SWIZZLE_AGRB = 0x2,
	PVRSRV_PDUMP_FBC_SWIZZLE_AGBR = 0x3,
	PVRSRV_PDUMP_FBC_SWIZZLE_ABGR = 0x4,
	PVRSRV_PDUMP_FBC_SWIZZLE_ABRG = 0x5,
	PVRSRV_PDUMP_FBC_SWIZZLE_RGBA = 0x8,
	PVRSRV_PDUMP_FBC_SWIZZLE_RBGA = 0x9,
	PVRSRV_PDUMP_FBC_SWIZZLE_GRBA = 0xA,
	PVRSRV_PDUMP_FBC_SWIZZLE_GBRA = 0xB,
	PVRSRV_PDUMP_FBC_SWIZZLE_BGRA = 0xC,
	PVRSRV_PDUMP_FBC_SWIZZLE_BRGA = 0xD,
} PDUMP_FBC_SWIZZLE;

/*! PDump addrmode */
#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_SHIFT			0
#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_MASK			0x000000FF

#define PVRSRV_PDUMP_ADDRMODE_STRIDESENSE_SHIFT			8
#define PVRSRV_PDUMP_ADDRMODE_STRIDESENSE_NEGATIVE		(1U << PVRSRV_PDUMP_ADDRMODE_STRIDESENSE_SHIFT)

#define PVRSRV_PDUMP_ADDRMODE_BIFTILE_MODE_SHIFT		12
#define PVRSRV_PDUMP_ADDRMODE_BIFTILE_MODE_MASK			0x000FF000

#define PVRSRV_PDUMP_ADDRMODE_FBCMODE_SHIFT				20
#define PVRSRV_PDUMP_ADDRMODE_FBCMODE_MASK				0x00F00000

#define PVRSRV_PDUMP_ADDRMODE_FBCDECOR_SHIFT			24

#define PVRSRV_PDUMP_ADDRMODE_FBCLOSSY_SHIFT			25

#define PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_SHIFT			28
#define PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_MASK			0xF0000000

#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_STRIDE			(0U << PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_BIFTILE_STRIDE1 (1U << PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_BIFTILE_STRIDE2 (2U << PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_BIFTILE_STRIDE3 (3U << PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_BIFTILE_STRIDE4 (4U << PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_BIFTILE_STRIDE5 (5U << PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_BIFTILE_STRIDE6 (6U << PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_BIFTILE_STRIDE7 (7U << PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_TWIDDLED		(9U << PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_PAGETILED		(11U << PVRSRV_PDUMP_ADDRMODE_MEMFORMAT_SHIFT)

#define PVRSRV_PDUMP_ADDRMODE_FBCMODE_NONE				(0U << PVRSRV_PDUMP_ADDRMODE_FBCMODE_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_FBCMODE_8X8_DIRECT		(1U << PVRSRV_PDUMP_ADDRMODE_FBCMODE_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_FBCMODE_16X4_DIRECT		(2U << PVRSRV_PDUMP_ADDRMODE_FBCMODE_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_FBCMODE_32X2_DIRECT		(3U << PVRSRV_PDUMP_ADDRMODE_FBCMODE_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_FBCMODE_8X8_INDIRECT		(4U << PVRSRV_PDUMP_ADDRMODE_FBCMODE_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_FBCMODE_16X4_INDIRECT		(5U << PVRSRV_PDUMP_ADDRMODE_FBCMODE_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_FBCMODE_8X8_INDIRECT_4TILE	(6U << PVRSRV_PDUMP_ADDRMODE_FBCMODE_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_FBCMODE_16X4_INDIRECT_4TILE	(7U << PVRSRV_PDUMP_ADDRMODE_FBCMODE_SHIFT)

#define PVRSRV_PDUMP_ADDRMODE_FBC_DECOR					(1U << PVRSRV_PDUMP_ADDRMODE_FBCDECOR_SHIFT)

#define PVRSRV_PDUMP_ADDRMODE_FBC_LOSSY					(1U << PVRSRV_PDUMP_ADDRMODE_FBCLOSSY_SHIFT)

#define PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_BASE			(1U << PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_ENHANCED		(2U << PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_V2				(3U << PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_V3_SURFACE		(4U << PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_SHIFT)
#define PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_V3_RESOURCE		(5U << PVRSRV_PDUMP_ADDRMODE_FBCCOMPAT_SHIFT)

/*! PDump Poll Operator */
typedef enum _PDUMP_POLL_OPERATOR
{
	PDUMP_POLL_OPERATOR_EQUAL = 0,
	PDUMP_POLL_OPERATOR_LESS = 1,
	PDUMP_POLL_OPERATOR_LESSEQUAL = 2,
	PDUMP_POLL_OPERATOR_GREATER = 3,
	PDUMP_POLL_OPERATOR_GREATEREQUAL = 4,
	PDUMP_POLL_OPERATOR_NOTEQUAL = 5,
} PDUMP_POLL_OPERATOR;


#define PVRSRV_PDUMP_MAX_FILENAME_SIZE			75  /*!< Max length of a pdump log file name */
#define PVRSRV_PDUMP_MAX_COMMENT_SIZE			350 /*!< Max length of a pdump comment */

/*!
	PDump MMU type
	(Maps to values listed in "PowerVR Tools.Pdump2 Script Functions.doc" Sec 2.13)
*/
typedef enum
{
	PDUMP_MMU_TYPE_4KPAGE_32BIT_STDTILE  = 1,
	PDUMP_MMU_TYPE_VARPAGE_32BIT_STDTILE = 2,
	PDUMP_MMU_TYPE_4KPAGE_36BIT_EXTTILE  = 3,
	PDUMP_MMU_TYPE_4KPAGE_32BIT_EXTTILE  = 4,
	PDUMP_MMU_TYPE_4KPAGE_36BIT_STDTILE  = 5,
	PDUMP_MMU_TYPE_VARPAGE_40BIT         = 6,
	PDUMP_MMU_TYPE_VIDEO_40BIT_STDTILE   = 7,
	PDUMP_MMU_TYPE_VIDEO_40BIT_EXTTILE   = 8,
	PDUMP_MMU_TYPE_MIPS_MICROAPTIV       = 9,
	PDUMP_MMU_TYPE_LAST
} PDUMP_MMU_TYPE;

/*!
	PDump states
	These values are used by the bridge call PVRSRVPDumpGetState
*/
#define PDUMP_STATE_CAPTURE_FRAME	(1)		/*!< Flag represents the PDump being in capture range or not*/
#define PDUMP_STATE_CONNECTED		(2)		/*!< Flag represents the PDump Client App being connected on not */
#define PDUMP_STATE_SUSPENDED		(4)		/*!< Flag represents the PDump being suspended or not */

/*!
	PDump Capture modes
	Values used with calls to PVRSRVPDumpSetDefaultCaptureParams
*/
#define PDUMP_CAPMODE_UNSET                     0x00000000UL
#define PDUMP_CAPMODE_FRAMED                    0x00000001UL
#define PDUMP_CAPMODE_CONTINUOUS                0x00000002UL
#define PDUMP_CAPMODE_BLOCKED                   0x00000003UL

#define PDUMP_CAPMODE_MAX                       PDUMP_CAPMODE_BLOCKED


#endif /* PDUMPDEFS_H */

/*****************************************************************************
 End of file (pdumpdefs.h)
*****************************************************************************/
