Apply the Apache 2.0 license.

Change-Id: I4a7aeefedcd2d891093520d5a10ebefadcddb5be
Reviewed-on: https://swiftshader-review.googlesource.com/5320
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libEGL/Config.cpp b/src/OpenGL/libEGL/Config.cpp
index 337ac9b..9a5839e 100644
--- a/src/OpenGL/libEGL/Config.cpp
+++ b/src/OpenGL/libEGL/Config.cpp
@@ -1,13 +1,16 @@
-// SwiftShader Software Renderer
+// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
 //
-// Copyright(c) 2005-2013 TransGaming Inc.
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
 //
-// All rights reserved. No part of this software may be copied, distributed, transmitted,
-// transcribed, stored in a retrieval system, translated into any human or computer
-// language by any means, or disclosed to third parties without the explicit written
-// agreement of TransGaming Inc. Without such an agreement, no rights or licenses, express
-// or implied, including but not limited to any patent rights, are granted to you.
+//    http://www.apache.org/licenses/LICENSE-2.0
 //
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
 
 // Config.cpp: Implements the egl::Config class, describing the format, type
 // and size for an egl::Surface. Implements EGLConfig and related functionality.
@@ -31,96 +34,96 @@
 namespace egl
 {
 Config::Config(sw::Format displayFormat, EGLint minInterval, EGLint maxInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample)
-    : mDisplayFormat(displayFormat), mRenderTargetFormat(renderTargetFormat), mDepthStencilFormat(depthStencilFormat), mMultiSample(multiSample)
+	: mDisplayFormat(displayFormat), mRenderTargetFormat(renderTargetFormat), mDepthStencilFormat(depthStencilFormat), mMultiSample(multiSample)
 {
-    mBindToTextureRGB = EGL_FALSE;
-    mBindToTextureRGBA = EGL_FALSE;
+	mBindToTextureRGB = EGL_FALSE;
+	mBindToTextureRGBA = EGL_FALSE;
 
 	// Initialize to a high value to lower the preference of formats for which there's no native support
-    mNativeVisualID = 0x7FFFFFFF;
+	mNativeVisualID = 0x7FFFFFFF;
 
-    switch(renderTargetFormat)
-    {
-    case sw::FORMAT_A1R5G5B5:
-        mRedSize = 5;
-        mGreenSize = 5;
-        mBlueSize = 5;
-        mAlphaSize = 1;
-        break;
-    case sw::FORMAT_A2R10G10B10:
-        mRedSize = 10;
-        mGreenSize = 10;
-        mBlueSize = 10;
-        mAlphaSize = 2;
-        break;
-    case sw::FORMAT_A8R8G8B8:
-        mRedSize = 8;
-        mGreenSize = 8;
-        mBlueSize = 8;
-        mAlphaSize = 8;
-        mBindToTextureRGBA = EGL_TRUE;
-        #ifdef __ANDROID__
+	switch(renderTargetFormat)
+	{
+	case sw::FORMAT_A1R5G5B5:
+		mRedSize = 5;
+		mGreenSize = 5;
+		mBlueSize = 5;
+		mAlphaSize = 1;
+		break;
+	case sw::FORMAT_A2R10G10B10:
+		mRedSize = 10;
+		mGreenSize = 10;
+		mBlueSize = 10;
+		mAlphaSize = 2;
+		break;
+	case sw::FORMAT_A8R8G8B8:
+		mRedSize = 8;
+		mGreenSize = 8;
+		mBlueSize = 8;
+		mAlphaSize = 8;
+		mBindToTextureRGBA = EGL_TRUE;
+		#ifdef __ANDROID__
 			mNativeVisualID = HAL_PIXEL_FORMAT_BGRA_8888;
 		#else
 			mNativeVisualID = 2;   // Arbitrary; prefer over ABGR
 		#endif
-        break;
+		break;
 	case sw::FORMAT_A8B8G8R8:
-        mRedSize = 8;
-        mGreenSize = 8;
-        mBlueSize = 8;
-        mAlphaSize = 8;
-        mBindToTextureRGBA = EGL_TRUE;
+		mRedSize = 8;
+		mGreenSize = 8;
+		mBlueSize = 8;
+		mAlphaSize = 8;
+		mBindToTextureRGBA = EGL_TRUE;
 		#ifdef __ANDROID__
 			mNativeVisualID = HAL_PIXEL_FORMAT_RGBA_8888;
 		#endif
-        break;
-    case sw::FORMAT_R5G6B5:
-        mRedSize = 5;
-        mGreenSize = 6;
-        mBlueSize = 5;
-        mAlphaSize = 0;
-        #ifdef __ANDROID__
+		break;
+	case sw::FORMAT_R5G6B5:
+		mRedSize = 5;
+		mGreenSize = 6;
+		mBlueSize = 5;
+		mAlphaSize = 0;
+		#ifdef __ANDROID__
 			mNativeVisualID = HAL_PIXEL_FORMAT_RGB_565;
 		#endif
-        break;
-    case sw::FORMAT_X8R8G8B8:
-        mRedSize = 8;
-        mGreenSize = 8;
-        mBlueSize = 8;
-        mAlphaSize = 0;
-        mBindToTextureRGB = EGL_TRUE;
+		break;
+	case sw::FORMAT_X8R8G8B8:
+		mRedSize = 8;
+		mGreenSize = 8;
+		mBlueSize = 8;
+		mAlphaSize = 0;
+		mBindToTextureRGB = EGL_TRUE;
 		#ifdef __ANDROID__
 			mNativeVisualID = 0x1FF;   // HAL_PIXEL_FORMAT_BGRX_8888
 		#else
 			mNativeVisualID = 1;   // Arbitrary; prefer over XBGR
 		#endif
-        break;
+		break;
 	case sw::FORMAT_X8B8G8R8:
-        mRedSize = 8;
-        mGreenSize = 8;
-        mBlueSize = 8;
-        mAlphaSize = 0;
-        mBindToTextureRGB = EGL_TRUE;
+		mRedSize = 8;
+		mGreenSize = 8;
+		mBlueSize = 8;
+		mAlphaSize = 0;
+		mBindToTextureRGB = EGL_TRUE;
 		#ifdef __ANDROID__
 			mNativeVisualID = HAL_PIXEL_FORMAT_RGBX_8888;
 		#endif
-        break;
-    default:
-        UNREACHABLE(renderTargetFormat);
-    }
+		break;
+	default:
+		UNREACHABLE(renderTargetFormat);
+	}
 
-    mLuminanceSize = 0;
-    mBufferSize = mRedSize + mGreenSize + mBlueSize + mLuminanceSize + mAlphaSize;
-    mAlphaMaskSize = 0;
-    mColorBufferType = EGL_RGB_BUFFER;
-    mConfigCaveat = EGL_NONE;
-    mConfigID = 0;
-    mConformant = EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT
+	mLuminanceSize = 0;
+	mBufferSize = mRedSize + mGreenSize + mBlueSize + mLuminanceSize + mAlphaSize;
+	mAlphaMaskSize = 0;
+	mColorBufferType = EGL_RGB_BUFFER;
+	mConfigCaveat = EGL_NONE;
+	mConfigID = 0;
+	mConformant = EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT
 #ifndef __ANDROID__ // Do not allow GLES 3.0 on Android
-        | EGL_OPENGL_ES3_BIT
+		| EGL_OPENGL_ES3_BIT
 #endif
-        ;
+		;
 
 	switch(depthStencilFormat)
 	{
@@ -128,10 +131,10 @@
 		mDepthSize = 0;
 		mStencilSize = 0;
 		break;
-//  case sw::FORMAT_D16_LOCKABLE:
-//      mDepthSize = 16;
-//      mStencilSize = 0;
-//      break;
+//	case sw::FORMAT_D16_LOCKABLE:
+//		mDepthSize = 16;
+//		mStencilSize = 0;
+//		break;
 	case sw::FORMAT_D32:
 		mDepthSize = 32;
 		mStencilSize = 0;
@@ -156,39 +159,39 @@
 		mDepthSize = 16;
 		mStencilSize = 0;
 		break;
-//  case sw::FORMAT_D32F_LOCKABLE:
-//      mDepthSize = 32;
-//      mStencilSize = 0;
-//      break;
-//  case sw::FORMAT_D24FS8:
-//      mDepthSize = 24;
-//      mStencilSize = 8;
-//      break;
+//	case sw::FORMAT_D32F_LOCKABLE:
+//		mDepthSize = 32;
+//		mStencilSize = 0;
+//		break;
+//	case sw::FORMAT_D24FS8:
+//		mDepthSize = 24;
+//		mStencilSize = 8;
+//		break;
 	default:
 		UNREACHABLE(depthStencilFormat);
 	}
 
-    mLevel = 0;
-    mMatchNativePixmap = EGL_NONE;
-    mMaxPBufferWidth = 4096;
-    mMaxPBufferHeight = 4096;
-    mMaxPBufferPixels = mMaxPBufferWidth * mMaxPBufferHeight;
-    mMaxSwapInterval = maxInterval;
-    mMinSwapInterval = minInterval;
-    mNativeRenderable = EGL_FALSE;
-    mNativeVisualType = 0;
-    mRenderableType = EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT
+	mLevel = 0;
+	mMatchNativePixmap = EGL_NONE;
+	mMaxPBufferWidth = 4096;
+	mMaxPBufferHeight = 4096;
+	mMaxPBufferPixels = mMaxPBufferWidth * mMaxPBufferHeight;
+	mMaxSwapInterval = maxInterval;
+	mMinSwapInterval = minInterval;
+	mNativeRenderable = EGL_FALSE;
+	mNativeVisualType = 0;
+	mRenderableType = EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT
 #ifndef __ANDROID__ // Do not allow GLES 3.0 on Android
-        | EGL_OPENGL_ES3_BIT
+		| EGL_OPENGL_ES3_BIT
 #endif
-        ;
-    mSampleBuffers = (multiSample > 0) ? 1 : 0;
-    mSamples = multiSample;
-    mSurfaceType = EGL_PBUFFER_BIT | EGL_WINDOW_BIT | EGL_SWAP_BEHAVIOR_PRESERVED_BIT;
-    mTransparentType = EGL_NONE;
-    mTransparentRedValue = 0;
-    mTransparentGreenValue = 0;
-    mTransparentBlueValue = 0;
+		;
+	mSampleBuffers = (multiSample > 0) ? 1 : 0;
+	mSamples = multiSample;
+	mSurfaceType = EGL_PBUFFER_BIT | EGL_WINDOW_BIT | EGL_SWAP_BEHAVIOR_PRESERVED_BIT;
+	mTransparentType = EGL_NONE;
+	mTransparentRedValue = 0;
+	mTransparentGreenValue = 0;
+	mTransparentBlueValue = 0;
 
 	mRecordableAndroid = EGL_TRUE;
 	mFramebufferTargetAndroid = (displayFormat == renderTargetFormat) ? EGL_TRUE : EGL_FALSE;
@@ -196,112 +199,112 @@
 
 EGLConfig Config::getHandle() const
 {
-    return (EGLConfig)(size_t)mConfigID;
+	return (EGLConfig)(size_t)mConfigID;
 }
 
 // This ordering determines the config ID
 bool CompareConfig::operator()(const Config &x, const Config &y) const
 {
-    #define SORT_SMALLER(attribute)                \
-        if(x.attribute != y.attribute)             \
-        {                                          \
-            return x.attribute < y.attribute;      \
-        }
+	#define SORT_SMALLER(attribute)                \
+		if(x.attribute != y.attribute)             \
+		{                                          \
+			return x.attribute < y.attribute;      \
+		}
 
-    META_ASSERT(EGL_NONE < EGL_SLOW_CONFIG && EGL_SLOW_CONFIG < EGL_NON_CONFORMANT_CONFIG);
-    SORT_SMALLER(mConfigCaveat);
+	META_ASSERT(EGL_NONE < EGL_SLOW_CONFIG && EGL_SLOW_CONFIG < EGL_NON_CONFORMANT_CONFIG);
+	SORT_SMALLER(mConfigCaveat);
 
-    META_ASSERT(EGL_RGB_BUFFER < EGL_LUMINANCE_BUFFER);
-    SORT_SMALLER(mColorBufferType);
+	META_ASSERT(EGL_RGB_BUFFER < EGL_LUMINANCE_BUFFER);
+	SORT_SMALLER(mColorBufferType);
 
 	SORT_SMALLER(mRedSize);
 	SORT_SMALLER(mGreenSize);
 	SORT_SMALLER(mBlueSize);
 	SORT_SMALLER(mAlphaSize);
-    
+
 	SORT_SMALLER(mBufferSize);
-    SORT_SMALLER(mSampleBuffers);
-    SORT_SMALLER(mSamples);
-    SORT_SMALLER(mDepthSize);
-    SORT_SMALLER(mStencilSize);
-    SORT_SMALLER(mAlphaMaskSize);
-    SORT_SMALLER(mNativeVisualType);
+	SORT_SMALLER(mSampleBuffers);
+	SORT_SMALLER(mSamples);
+	SORT_SMALLER(mDepthSize);
+	SORT_SMALLER(mStencilSize);
+	SORT_SMALLER(mAlphaMaskSize);
+	SORT_SMALLER(mNativeVisualType);
 	SORT_SMALLER(mNativeVisualID);
 
-    #undef SORT_SMALLER
+	#undef SORT_SMALLER
 
 	// Strict ordering requires sorting all non-equal fields above
 	assert(memcmp(&x, &y, sizeof(Config)) == 0);
 
-    return false;
+	return false;
 }
 
 // Function object used by STL sorting routines for ordering Configs according to [EGL] section 3.4.1 page 24.
 class SortConfig
 {
 public:
-    explicit SortConfig(const EGLint *attribList);
+	explicit SortConfig(const EGLint *attribList);
 
-    bool operator()(const Config *x, const Config *y) const;
+	bool operator()(const Config *x, const Config *y) const;
 
 private:
-    EGLint wantedComponentsSize(const Config *config) const;
+	EGLint wantedComponentsSize(const Config *config) const;
 
-    bool mWantRed;
-    bool mWantGreen;
-    bool mWantBlue;
-    bool mWantAlpha;
-    bool mWantLuminance;
+	bool mWantRed;
+	bool mWantGreen;
+	bool mWantBlue;
+	bool mWantAlpha;
+	bool mWantLuminance;
 };
 
 SortConfig::SortConfig(const EGLint *attribList)
-    : mWantRed(false), mWantGreen(false), mWantBlue(false), mWantAlpha(false), mWantLuminance(false)
+	: mWantRed(false), mWantGreen(false), mWantBlue(false), mWantAlpha(false), mWantLuminance(false)
 {
 	// [EGL] section 3.4.1 page 24
-    // Sorting rule #3: by larger total number of color bits,
+	// Sorting rule #3: by larger total number of color bits,
 	// not considering components that are 0 or don't-care.
-    for(const EGLint *attr = attribList; attr[0] != EGL_NONE; attr += 2)
-    {
-        if(attr[1] != 0 && attr[1] != EGL_DONT_CARE)
-        {
-            switch (attr[0])
-            {
-            case EGL_RED_SIZE:       mWantRed = true;       break;
-            case EGL_GREEN_SIZE:     mWantGreen = true;     break;
-            case EGL_BLUE_SIZE:      mWantBlue = true;      break;
-            case EGL_ALPHA_SIZE:     mWantAlpha = true;     break;
-            case EGL_LUMINANCE_SIZE: mWantLuminance = true; break;
-            }
-        }
-    }
+	for(const EGLint *attr = attribList; attr[0] != EGL_NONE; attr += 2)
+	{
+		if(attr[1] != 0 && attr[1] != EGL_DONT_CARE)
+		{
+			switch(attr[0])
+			{
+			case EGL_RED_SIZE:       mWantRed = true;       break;
+			case EGL_GREEN_SIZE:     mWantGreen = true;     break;
+			case EGL_BLUE_SIZE:      mWantBlue = true;      break;
+			case EGL_ALPHA_SIZE:     mWantAlpha = true;     break;
+			case EGL_LUMINANCE_SIZE: mWantLuminance = true; break;
+			}
+		}
+	}
 }
 
 EGLint SortConfig::wantedComponentsSize(const Config *config) const
 {
-    EGLint total = 0;
+	EGLint total = 0;
 
-    if(mWantRed)       total += config->mRedSize;
-    if(mWantGreen)     total += config->mGreenSize;
-    if(mWantBlue)      total += config->mBlueSize;
-    if(mWantAlpha)     total += config->mAlphaSize;
-    if(mWantLuminance) total += config->mLuminanceSize;
+	if(mWantRed)       total += config->mRedSize;
+	if(mWantGreen)     total += config->mGreenSize;
+	if(mWantBlue)      total += config->mBlueSize;
+	if(mWantAlpha)     total += config->mAlphaSize;
+	if(mWantLuminance) total += config->mLuminanceSize;
 
-    return total;
+	return total;
 }
 
 bool SortConfig::operator()(const Config *x, const Config *y) const
 {
-    #define SORT_SMALLER(attribute)                \
-        if(x->attribute != y->attribute)           \
-        {                                          \
-            return x->attribute < y->attribute;    \
-        }
+	#define SORT_SMALLER(attribute)                \
+		if(x->attribute != y->attribute)           \
+		{                                          \
+			return x->attribute < y->attribute;    \
+		}
 
-    META_ASSERT(EGL_NONE < EGL_SLOW_CONFIG && EGL_SLOW_CONFIG < EGL_NON_CONFORMANT_CONFIG);
-    SORT_SMALLER(mConfigCaveat);
+	META_ASSERT(EGL_NONE < EGL_SLOW_CONFIG && EGL_SLOW_CONFIG < EGL_NON_CONFORMANT_CONFIG);
+	SORT_SMALLER(mConfigCaveat);
 
-    META_ASSERT(EGL_RGB_BUFFER < EGL_LUMINANCE_BUFFER);
-    SORT_SMALLER(mColorBufferType);
+	META_ASSERT(EGL_RGB_BUFFER < EGL_LUMINANCE_BUFFER);
+	SORT_SMALLER(mColorBufferType);
 
 	// By larger total number of color bits, only considering those that are requested to be > 0.
 	EGLint xComponentsSize = wantedComponentsSize(x);
@@ -311,18 +314,18 @@
 		return xComponentsSize > yComponentsSize;
 	}
 
-    SORT_SMALLER(mBufferSize);
-    SORT_SMALLER(mSampleBuffers);
-    SORT_SMALLER(mSamples);
-    SORT_SMALLER(mDepthSize);
-    SORT_SMALLER(mStencilSize);
-    SORT_SMALLER(mAlphaMaskSize);
-    SORT_SMALLER(mNativeVisualType);
-    SORT_SMALLER(mConfigID);
+	SORT_SMALLER(mBufferSize);
+	SORT_SMALLER(mSampleBuffers);
+	SORT_SMALLER(mSamples);
+	SORT_SMALLER(mDepthSize);
+	SORT_SMALLER(mStencilSize);
+	SORT_SMALLER(mAlphaMaskSize);
+	SORT_SMALLER(mNativeVisualType);
+	SORT_SMALLER(mConfigID);
 
-    #undef SORT_SMALLER
+	#undef SORT_SMALLER
 
-    return false;
+	return false;
 }
 
 ConfigSet::ConfigSet()
@@ -331,28 +334,28 @@
 
 void ConfigSet::add(sw::Format displayFormat, EGLint minSwapInterval, EGLint maxSwapInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample)
 {
-    Config config(displayFormat, minSwapInterval, maxSwapInterval, renderTargetFormat, depthStencilFormat, multiSample);
+	Config config(displayFormat, minSwapInterval, maxSwapInterval, renderTargetFormat, depthStencilFormat, multiSample);
 
-    mSet.insert(config);
+	mSet.insert(config);
 }
 
 size_t ConfigSet::size() const
 {
-    return mSet.size();
+	return mSet.size();
 }
 
 bool ConfigSet::getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig)
 {
-    vector<const Config*> passed;
-    passed.reserve(mSet.size());
+	vector<const Config*> passed;
+	passed.reserve(mSet.size());
 
-    for(Iterator config = mSet.begin(); config != mSet.end(); config++)
-    {
-        bool match = true;
-        const EGLint *attribute = attribList;
+	for(Iterator config = mSet.begin(); config != mSet.end(); config++)
+	{
+		bool match = true;
+		const EGLint *attribute = attribList;
 
-        while(attribute[0] != EGL_NONE)
-        {
+		while(attribute[0] != EGL_NONE)
+		{
 			if(attribute[1] != EGL_DONT_CARE)
 			{
 				switch(attribute[0])
@@ -403,45 +406,45 @@
 				}
 			}
 
-            attribute += 2;
-        }
+			attribute += 2;
+		}
 
-        if(match)
-        {
-            passed.push_back(&*config);
-        }
-    }
+		if(match)
+		{
+			passed.push_back(&*config);
+		}
+	}
 
-    if(configs)
-    {
-        sort(passed.begin(), passed.end(), SortConfig(attribList));
+	if(configs)
+	{
+		sort(passed.begin(), passed.end(), SortConfig(attribList));
 
-        EGLint index;
-        for(index = 0; index < configSize && index < static_cast<EGLint>(passed.size()); index++)
-        {
-            configs[index] = passed[index]->getHandle();
-        }
+		EGLint index;
+		for(index = 0; index < configSize && index < static_cast<EGLint>(passed.size()); index++)
+		{
+			configs[index] = passed[index]->getHandle();
+		}
 
-        *numConfig = index;
-    }
-    else
-    {
-        *numConfig = static_cast<EGLint>(passed.size());
-    }
+		*numConfig = index;
+	}
+	else
+	{
+		*numConfig = static_cast<EGLint>(passed.size());
+	}
 
-    return true;
+	return true;
 }
 
 const egl::Config *ConfigSet::get(EGLConfig configHandle)
 {
-    for(Iterator config = mSet.begin(); config != mSet.end(); config++)
-    {
-        if(config->getHandle() == configHandle)
-        {
-            return &(*config);
-        }
-    }
+	for(Iterator config = mSet.begin(); config != mSet.end(); config++)
+	{
+		if(config->getHandle() == configHandle)
+		{
+			return &(*config);
+		}
+	}
 
-    return NULL;
+	return nullptr;
 }
 }