Add the ChameleonMan PowerVR sample.
BUG=14598298
Change-Id: Id6dcaebe793cf3d3a10af571348f461023d2a9d2
Reviewed-on: https://swiftshader-review.googlesource.com/1090
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/tests/third_party/PowerVR/Tools/PVRTGlobal.h b/tests/third_party/PowerVR/Tools/PVRTGlobal.h
new file mode 100644
index 0000000..a491949
--- /dev/null
+++ b/tests/third_party/PowerVR/Tools/PVRTGlobal.h
@@ -0,0 +1,307 @@
+/*!****************************************************************************
+
+ @file PVRTGlobal.h
+ @copyright Copyright (c) Imagination Technologies Limited.
+ @brief Global defines and typedefs for PVRTools
+
+******************************************************************************/
+#ifndef _PVRTGLOBAL_H_
+#define _PVRTGLOBAL_H_
+
+/*!***************************************************************************
+ Macros
+*****************************************************************************/
+#define PVRT_MIN(a,b) (((a) < (b)) ? (a) : (b))
+#define PVRT_MAX(a,b) (((a) > (b)) ? (a) : (b))
+#define PVRT_CLAMP(x, l, h) (PVRT_MIN((h), PVRT_MAX((x), (l))))
+
+// avoid warning about unused parameter
+#define PVRT_UNREFERENCED_PARAMETER(x) ((void) x)
+
+#if defined(_WIN32) && !defined(__QT__) && !defined(UNDER_CE) /* Windows desktop */
+#if !defined(_CRTDBG_MAP_ALLOC)
+ #define _CRTDBG_MAP_ALLOC
+#endif
+ #include <windows.h>
+ #include <crtdbg.h>
+ #include <tchar.h>
+#endif
+
+#if defined(UNDER_CE)
+ #include <windows.h>
+
+#ifndef _ASSERT
+ #ifdef _DEBUG
+ #define _ASSERT(X) { (X) ? 0 : DebugBreak(); }
+ #else
+ #define _ASSERT(X)
+ #endif
+#endif
+
+#ifndef _ASSERTE
+ #ifdef _DEBUG
+ #define _ASSERTE _ASSERT
+ #else
+ #define _ASSERTE(X)
+ #endif
+#endif
+ #define _RPT0(a,b)
+ #define _RPT1(a,b,c)
+ #define _RPT2(a,b,c,d)
+ #define _RPT3(a,b,c,d,e)
+ #define _RPT4(a,b,c,d,e,f)
+#else
+
+#if defined(_WIN32) && !defined(__QT__)
+
+#else
+#if defined(__linux__) || defined(__APPLE__)
+ #include <assert.h>
+ #ifdef _DEBUG
+ #ifndef _RPT0
+ #define _RPT0(a,b) printf(b)
+ #endif
+ #ifndef _RPT1
+ #define _RPT1(a,b,c) printf(b,c)
+ #endif
+ #ifndef _ASSERT
+ #define _ASSERT(a) assert(a)
+ #endif
+ #ifndef _ASSERTE
+ #define _ASSERTE(a) assert(a)
+ #endif
+ #else
+ #ifndef _RPT0
+ #define _RPT0(a,b)((void)0)
+ #endif
+ #ifndef _RPT1
+ #define _RPT1(a,b,c)((void)0)
+ #endif
+ #ifndef _ASSERT
+ #define _ASSERT(a)((void)0)
+ #endif
+ #ifndef _ASSERTE
+ #define _ASSERTE(a)((void)0)
+ #endif
+ #endif
+ #ifndef _RPT2
+ #define _RPT2(a,b,c,d)((void)0)
+ #endif
+ #ifndef _RPT3
+ #define _RPT3(a,b,c,d,e)((void)0)
+ #endif
+ #ifndef _RPT4
+ #define _RPT4(a,b,c,d,e,f)((void)0)
+ #endif
+ #include <stdlib.h>
+ #include <string.h>
+ #ifndef BYTE
+ #define BYTE unsigned char
+ #endif
+ #ifndef WORD
+ #define WORD unsigned short
+ #endif
+ #ifndef DWORD
+ #define DWORD unsigned int
+ #endif
+ #if !defined(BOOL) && !defined(OBJC_BOOL_DEFINED)
+ #define BOOL int
+ #endif
+ typedef struct tagRGBQUAD {
+ BYTE rgbBlue;
+ BYTE rgbGreen;
+ BYTE rgbRed;
+ BYTE rgbReserved;
+ } RGBQUAD;
+#if !defined(TRUE)
+ #define TRUE 1
+#endif
+#if !defined(FALSE)
+ #define FALSE 0
+#endif
+#else
+ #define _CRT_WARN 0
+ #define _RPT0(a,b)
+ #define _RPT1(a,b,c)
+ #define _RPT2(a,b,c,d)
+ #define _RPT3(a,b,c,d,e)
+ #define _RPT4(a,b,c,d,e,f)
+ #define _ASSERT(X)
+ #define _ASSERTE(X)
+#endif
+#endif
+#endif
+
+#include <stdio.h>
+
+#define FREE(X) { if(X) { free(X); (X) = 0; } }
+
+// This macro is used to check at compile time that types are of a certain size
+// If the size does not equal the expected size, this typedefs an array of size 0
+// which causes a compile error
+#define PVRTSIZEASSERT(T, size) typedef int (sizeof_##T)[sizeof(T) == (size)]
+#define PVRTCOMPILEASSERT(T, expr) typedef int (assert_##T)[expr]
+
+
+/****************************************************************************
+** Integer types
+****************************************************************************/
+
+typedef char PVRTchar8;
+typedef signed char PVRTint8;
+typedef signed short PVRTint16;
+typedef signed int PVRTint32;
+typedef unsigned char PVRTuint8;
+typedef unsigned short PVRTuint16;
+typedef unsigned int PVRTuint32;
+
+typedef float PVRTfloat32;
+
+#if (defined(__int64) || defined(_WIN32))
+typedef signed __int64 PVRTint64;
+typedef unsigned __int64 PVRTuint64;
+#elif defined(__GNUC__)
+__extension__ typedef signed long long PVRTint64;
+__extension__ typedef unsigned long long PVRTuint64;
+#else
+typedef signed long long PVRTint64;
+typedef unsigned long long PVRTuint64;
+#endif
+
+#if __SIZEOF_WCHAR_T__ == 4 || __WCHAR_MAX__ > 0x10000
+ #define PVRTSIZEOFWCHAR 4
+#else
+ #define PVRTSIZEOFWCHAR 2
+#endif
+
+PVRTSIZEASSERT(PVRTchar8, 1);
+PVRTSIZEASSERT(PVRTint8, 1);
+PVRTSIZEASSERT(PVRTuint8, 1);
+PVRTSIZEASSERT(PVRTint16, 2);
+PVRTSIZEASSERT(PVRTuint16, 2);
+PVRTSIZEASSERT(PVRTint32, 4);
+PVRTSIZEASSERT(PVRTuint32, 4);
+PVRTSIZEASSERT(PVRTint64, 8);
+PVRTSIZEASSERT(PVRTuint64, 8);
+PVRTSIZEASSERT(PVRTfloat32, 4);
+
+/*!**************************************************************************
+ @enum ETextureFilter
+ @brief Enum values for defining texture filtering
+****************************************************************************/
+enum ETextureFilter
+{
+ eFilter_Nearest,
+ eFilter_Linear,
+ eFilter_None,
+
+ eFilter_Size,
+ eFilter_Default = eFilter_Linear,
+ eFilter_MipDefault = eFilter_None
+};
+
+/*!**************************************************************************
+ @enum ETextureWrap
+ @brief Enum values for defining texture wrapping
+****************************************************************************/
+enum ETextureWrap
+{
+ eWrap_Clamp,
+ eWrap_Repeat,
+
+ eWrap_Size,
+ eWrap_Default = eWrap_Repeat
+};
+
+/****************************************************************************
+** swap template function
+****************************************************************************/
+/*!***************************************************************************
+ @brief A swap template function that swaps a and b
+ @param[in] a Type a
+ @param[in] b Type b
+*****************************************************************************/
+
+template <typename T>
+inline void PVRTswap(T& a, T& b)
+{
+ T temp = a;
+ a = b;
+ b = temp;
+}
+
+/*!***************************************************************************
+ @brief A clamp template function that clamps val between min and max.
+ @param[in] val Value to clamp
+ @param[in] min Minimum legal value
+ @param[in] max Maximum legal value
+*****************************************************************************/
+template <typename T>
+inline T PVRTClamp(const T& val, const T& min, const T& max)
+{
+ if(val > max)
+ return max;
+ if(val < min)
+ return min;
+ return val;
+}
+
+/*!***************************************************************************
+ @brief Swaps the endianness of pBytes in place
+ @param[in] pBytes A number
+ @param[in] i32ByteNo Number of bytes in pBytes
+*****************************************************************************/
+inline void PVRTByteSwap(unsigned char* pBytes, int i32ByteNo)
+{
+ int i = 0, j = i32ByteNo - 1;
+
+ while(i < j)
+ PVRTswap<unsigned char>(pBytes[i++], pBytes[j--]);
+}
+
+/*!***************************************************************************
+ @brief Converts the endianness of an unsigned int
+ @param[in] ui32Long A number
+ @return ui32Long with its endianness changed
+*****************************************************************************/
+inline unsigned int PVRTByteSwap32(unsigned int ui32Long)
+{
+ return ((ui32Long&0x000000FF)<<24) + ((ui32Long&0x0000FF00)<<8) + ((ui32Long&0x00FF0000)>>8) + ((ui32Long&0xFF000000) >> 24);
+}
+
+/*!***************************************************************************
+ @brief Converts the endianness of a unsigned short
+ @param[in] ui16Short A number
+ @return ui16Short with its endianness changed
+*****************************************************************************/
+inline unsigned short PVRTByteSwap16(unsigned short ui16Short)
+{
+ return (ui16Short>>8) | (ui16Short<<8);
+}
+
+/*!***************************************************************************
+ @brief Returns true if the platform the code is ran on is little endian
+ @return True if the platform the code is ran on is little endian
+*****************************************************************************/
+inline bool PVRTIsLittleEndian()
+{
+ static bool bLittleEndian;
+ static bool bIsInit = false;
+
+ if(!bIsInit)
+ {
+ short int word = 0x0001;
+ char *byte = (char*) &word;
+ bLittleEndian = byte[0] ? true : false;
+ bIsInit = true;
+ }
+
+ return bLittleEndian;
+}
+
+#endif // _PVRTGLOBAL_H_
+
+/*****************************************************************************
+ End of file (Tools.h)
+*****************************************************************************/
+