Merge libEGL into libRAD.

Bug 18621031

Change-Id: I9a0cc1864bb573aef48a851e8094c6f675a3395b
Reviewed-on: https://swiftshader-review.googlesource.com/1592
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Radiance/libEGL/libEGL.def b/src/Radiance/libEGL/libEGL.def
deleted file mode 100644
index 441b6da..0000000
--- a/src/Radiance/libEGL/libEGL.def
+++ /dev/null
@@ -1,38 +0,0 @@
-LIBRARY	libEGL
-EXPORTS
-	eglBindAPI                      @14
-	eglChooseConfig                 @7
-	eglCopyBuffers                  @33
-	eglCreateContext                @23
-	eglCreatePbufferFromClientBuffer        @18
-	eglCreatePbufferSurface         @10
-	eglCreatePixmapSurface          @11
-	eglCreateWindowSurface          @9
-	eglDestroyContext               @24
-	eglDestroySurface               @12
-	eglGetConfigAttrib              @8
-	eglGetConfigs                   @6
-	eglGetCurrentContext            @26
-	eglGetCurrentDisplay            @28
-	eglGetCurrentSurface            @27
-	eglGetDisplay                   @2
-	eglGetError                     @1
-	eglGetProcAddress               @34
-	eglInitialize                   @3
-	eglMakeCurrent                  @25
-	eglQueryAPI                     @15
-	eglQueryContext                 @29
-	eglQueryString                  @5
-	eglQuerySurface                 @13
-	eglReleaseThread                @17
-	eglSurfaceAttrib                @19
-	eglSwapBuffers                  @32
-	eglSwapInterval                 @22
-	eglTerminate                    @4
-	eglWaitClient                   @16
-	eglWaitGL                       @30
-	eglWaitNative                   @31
-
-	; Functions that don't change the error code, for use by client APIs
-	clientGetCurrentContext
-	clientGetCurrentDisplay
\ No newline at end of file
diff --git a/src/Radiance/libEGL/libEGL.rc b/src/Radiance/libEGL/libEGL.rc
deleted file mode 100644
index 2ca933e..0000000
--- a/src/Radiance/libEGL/libEGL.rc
+++ /dev/null
@@ -1,135 +0,0 @@
-// Microsoft Visual C++ generated resource script.

-//

-#include "resource.h"

-

-#define APSTUDIO_READONLY_SYMBOLS

-/////////////////////////////////////////////////////////////////////////////

-//

-// Generated from the TEXTINCLUDE 2 resource.

-//

-#include <windows.h>

-#include "../../common/Version.h"

-

-/////////////////////////////////////////////////////////////////////////////

-#undef APSTUDIO_READONLY_SYMBOLS

-

-/////////////////////////////////////////////////////////////////////////////

-// English (United States) resources

-

-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

-#pragma code_page(1252)

-

-#ifdef APSTUDIO_INVOKED

-/////////////////////////////////////////////////////////////////////////////

-//

-// TEXTINCLUDE

-//

-

-1 TEXTINCLUDE 

-BEGIN

-    "resource.h\0"

-END

-

-2 TEXTINCLUDE 

-BEGIN

-    "#include ""afxres.h""\r\n"

-    "#include ""../common/version.h""\0"

-END

-

-3 TEXTINCLUDE 

-BEGIN

-    "\r\n"

-    "\0"

-END

-

-#endif    // APSTUDIO_INVOKED

-

-

-/////////////////////////////////////////////////////////////////////////////

-//

-// Version

-//

-

-VS_VERSION_INFO VERSIONINFO

- FILEVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION

- PRODUCTVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION

- FILEFLAGSMASK 0x17L

-#ifdef _DEBUG

- FILEFLAGS 0x1L

-#else

- FILEFLAGS 0x0L

-#endif

- FILEOS 0x4L

- FILETYPE 0x2L

- FILESUBTYPE 0x0L

-BEGIN

-    BLOCK "StringFileInfo"

-    BEGIN

-        BLOCK "040904b0"

-        BEGIN

-            VALUE "FileDescription", "SwiftShader libEGL Dynamic Link Library"

-            VALUE "FileVersion", VERSION_STRING

-            VALUE "InternalName", "libEGL"

-            VALUE "LegalCopyright", "Copyright (C) 2012 TransGaming Inc."

-            VALUE "OriginalFilename", "libEGL.dll"

-            VALUE "PrivateBuild", VERSION_STRING

-            VALUE "ProductName", "SwiftShader libEGL Dynamic Link Library"

-            VALUE "ProductVersion", VERSION_STRING

-        END

-    END

-    BLOCK "VarFileInfo"

-    BEGIN

-        VALUE "Translation", 0x409, 1200

-    END

-END

-

-

-/////////////////////////////////////////////////////////////////////////////

-//

-// Dialog

-//

-

-IDD_DIALOG1 DIALOGEX 0, 0, 129, 47

-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU

-CAPTION "Waiting for debugger"

-FONT 8, "MS Shell Dlg", 400, 0, 0x1

-BEGIN

-    PUSHBUTTON      "Cancel",IDCANCEL,72,26,50,14

-    LTEXT           "Attach a debugger or ESC to cancel",IDC_STATIC,7,7,115,8

-END

-

-

-/////////////////////////////////////////////////////////////////////////////

-//

-// DESIGNINFO

-//

-

-#ifdef APSTUDIO_INVOKED

-GUIDELINES DESIGNINFO

-BEGIN

-    IDD_DIALOG1, DIALOG

-    BEGIN

-        LEFTMARGIN, 7

-        RIGHTMARGIN, 122

-        TOPMARGIN, 7

-        BOTTOMMARGIN, 40

-    END

-END

-#endif    // APSTUDIO_INVOKED

-

-#endif    // English (United States) resources

-/////////////////////////////////////////////////////////////////////////////

-

-

-

-#ifndef APSTUDIO_INVOKED

-/////////////////////////////////////////////////////////////////////////////

-//

-// Generated from the TEXTINCLUDE 3 resource.

-//

-

-

-/////////////////////////////////////////////////////////////////////////////

-#endif    // not APSTUDIO_INVOKED

-

diff --git a/src/Radiance/libEGL/libEGL.vcxproj b/src/Radiance/libEGL/libEGL.vcxproj
deleted file mode 100644
index 3e57389..0000000
--- a/src/Radiance/libEGL/libEGL.vcxproj
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>

-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

-  <ItemGroup Label="ProjectConfigurations">

-    <ProjectConfiguration Include="Debug|Win32">

-      <Configuration>Debug</Configuration>

-      <Platform>Win32</Platform>

-    </ProjectConfiguration>

-    <ProjectConfiguration Include="Profile|Win32">

-      <Configuration>Profile</Configuration>

-      <Platform>Win32</Platform>

-    </ProjectConfiguration>

-    <ProjectConfiguration Include="Release|Win32">

-      <Configuration>Release</Configuration>

-      <Platform>Win32</Platform>

-    </ProjectConfiguration>

-  </ItemGroup>

-  <PropertyGroup Label="Globals">

-    <ProjectGuid>{2F6770B5-F168-4FCD-8A56-4DD95BEC8893}</ProjectGuid>

-    <RootNamespace>libEGL</RootNamespace>

-    <Keyword>Win32Proj</Keyword>

-  </PropertyGroup>

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

-    <ConfigurationType>DynamicLibrary</ConfigurationType>

-    <CharacterSet>NotSet</CharacterSet>

-    <WholeProgramOptimization>true</WholeProgramOptimization>

-    <PlatformToolset>v120</PlatformToolset>

-  </PropertyGroup>

-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="Configuration">

-    <ConfigurationType>DynamicLibrary</ConfigurationType>

-    <CharacterSet>NotSet</CharacterSet>

-    <WholeProgramOptimization>true</WholeProgramOptimization>

-    <PlatformToolset>v120</PlatformToolset>

-  </PropertyGroup>

-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

-    <ConfigurationType>DynamicLibrary</ConfigurationType>

-    <CharacterSet>NotSet</CharacterSet>

-    <PlatformToolset>v120</PlatformToolset>

-  </PropertyGroup>

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

-  <ImportGroup Label="ExtensionSettings">

-  </ImportGroup>

-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

-  </ImportGroup>

-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="PropertySheets">

-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

-  </ImportGroup>

-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

-  </ImportGroup>

-  <PropertyGroup Label="UserMacros" />

-  <PropertyGroup>

-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>

-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</OutDir>

-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>

-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>

-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</OutDir>

-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">$(Platform)\$(Configuration)\</OutDir>

-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>

-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">$(Platform)\$(Configuration)\</IntDir>

-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>

-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">false</LinkIncremental>

-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\include;$(DXSDK_DIR)\Include;$(VCInstallDir)PlatformSDK\include;$(IncludePath)</IncludePath>

-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">..\include;$(DXSDK_DIR)\Include;$(VCInstallDir)PlatformSDK\include;$(IncludePath)</IncludePath>

-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\include;$(DXSDK_DIR)\Include;$(VCInstallDir)PlatformSDK\include;$(IncludePath)</IncludePath>

-  </PropertyGroup>

-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <ClCompile>

-      <Optimization>Disabled</Optimization>

-      <AdditionalIncludeDirectories>$(ProjectDir)/..;$(ProjectDir)/../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBEGL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <MinimalRebuild>true</MinimalRebuild>

-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

-      <PrecompiledHeader>

-      </PrecompiledHeader>

-      <WarningLevel>Level3</WarningLevel>

-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

-      <BrowseInformation>true</BrowseInformation>

-    </ClCompile>

-    <Link>

-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>

-      <ModuleDefinitionFile>libEGL.def</ModuleDefinitionFile>

-      <DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>

-      <GenerateDebugInformation>true</GenerateDebugInformation>

-      <SubSystem>Windows</SubSystem>

-      <TargetMachine>MachineX86</TargetMachine>

-    </Link>

-    <PostBuildEvent>

-      <Command>mkdir "$(ProjectDir)..\..\..\lib\$(Configuration)\"

-copy "$(OutDir)libEGL.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)\"</Command>

-    </PostBuildEvent>

-  </ItemDefinitionGroup>

-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <ClCompile>

-      <Optimization>MaxSpeed</Optimization>

-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>

-      <AdditionalIncludeDirectories>$(ProjectDir)/..;$(ProjectDir)/../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBEGL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

-      <PrecompiledHeader>

-      </PrecompiledHeader>

-      <WarningLevel>Level3</WarningLevel>

-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

-    </ClCompile>

-    <Link>

-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>

-      <ModuleDefinitionFile>libEGL.def</ModuleDefinitionFile>

-      <DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>

-      <GenerateDebugInformation>true</GenerateDebugInformation>

-      <SubSystem>Windows</SubSystem>

-      <OptimizeReferences>true</OptimizeReferences>

-      <EnableCOMDATFolding>true</EnableCOMDATFolding>

-      <TargetMachine>MachineX86</TargetMachine>

-    </Link>

-    <PostBuildEvent>

-      <Command>mkdir "$(ProjectDir)..\..\..\lib\$(Configuration)\"

-copy "$(OutDir)libEGL.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)\"</Command>

-    </PostBuildEvent>

-  </ItemDefinitionGroup>

-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">

-    <ClCompile>

-      <Optimization>MaxSpeed</Optimization>

-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>

-      <AdditionalIncludeDirectories>$(ProjectDir)/..;$(ProjectDir)/../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBEGL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

-      <PrecompiledHeader>

-      </PrecompiledHeader>

-      <WarningLevel>Level3</WarningLevel>

-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

-      <OmitFramePointers>false</OmitFramePointers>

-    </ClCompile>

-    <Link>

-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>

-      <ModuleDefinitionFile>libEGL.def</ModuleDefinitionFile>

-      <DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>

-      <GenerateDebugInformation>true</GenerateDebugInformation>

-      <SubSystem>Windows</SubSystem>

-      <OptimizeReferences>true</OptimizeReferences>

-      <EnableCOMDATFolding>true</EnableCOMDATFolding>

-      <TargetMachine>MachineX86</TargetMachine>

-    </Link>

-    <PostBuildEvent>

-      <Command>mkdir "$(ProjectDir)..\..\..\lib\$(Configuration)\"

-copy "$(OutDir)libEGL.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)\"</Command>

-    </PostBuildEvent>

-  </ItemDefinitionGroup>

-  <ItemGroup>

-    <ClCompile Include="Config.cpp" />

-    <ClCompile Include="..\Common\debug.cpp" />

-    <ClCompile Include="Display.cpp" />

-    <ClCompile Include="libEGL.cpp" />

-    <ClCompile Include="main.cpp" />

-    <ClCompile Include="Surface.cpp" />

-  </ItemGroup>

-  <ItemGroup>

-    <ClInclude Include="..\common\debug.h" />

-    <ClInclude Include="..\include\EGL\egl.h" />

-    <ClInclude Include="..\include\EGL\eglext.h" />

-    <ClInclude Include="..\include\EGL\eglplatform.h" />

-    <ClInclude Include="Config.h" />

-    <ClInclude Include="Context.hpp" />

-    <ClInclude Include="Display.h" />

-    <ClInclude Include="Image.hpp" />

-    <ClInclude Include="main.h" />

-    <ClInclude Include="resource.h" />

-    <ClInclude Include="Surface.h" />

-    <ClInclude Include="Texture2D.hpp" />

-  </ItemGroup>

-  <ItemGroup>

-    <None Include="libEGL.def" />

-  </ItemGroup>

-  <ItemGroup>

-    <ResourceCompile Include="libEGL.rc" />

-  </ItemGroup>

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

-  <ImportGroup Label="ExtensionTargets">

-  </ImportGroup>

-</Project>
\ No newline at end of file
diff --git a/src/Radiance/libEGL/libEGL.vcxproj.filters b/src/Radiance/libEGL/libEGL.vcxproj.filters
deleted file mode 100644
index b89cfd5..0000000
--- a/src/Radiance/libEGL/libEGL.vcxproj.filters
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>

-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

-  <ItemGroup>

-    <Filter Include="Source Files">

-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>

-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>

-    </Filter>

-    <Filter Include="Header Files">

-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>

-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>

-    </Filter>

-  </ItemGroup>

-  <ItemGroup>

-    <ClCompile Include="Config.cpp">

-      <Filter>Source Files</Filter>

-    </ClCompile>

-    <ClCompile Include="..\Common\debug.cpp">

-      <Filter>Source Files</Filter>

-    </ClCompile>

-    <ClCompile Include="Display.cpp">

-      <Filter>Source Files</Filter>

-    </ClCompile>

-    <ClCompile Include="libEGL.cpp">

-      <Filter>Source Files</Filter>

-    </ClCompile>

-    <ClCompile Include="main.cpp">

-      <Filter>Source Files</Filter>

-    </ClCompile>

-    <ClCompile Include="Surface.cpp">

-      <Filter>Source Files</Filter>

-    </ClCompile>

-  </ItemGroup>

-  <ItemGroup>

-    <ClInclude Include="Config.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="Display.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="main.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="resource.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="Surface.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="..\include\EGL\egl.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="..\include\EGL\eglext.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="..\include\EGL\eglplatform.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="..\common\debug.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="Context.hpp">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="Texture2D.hpp">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="Image.hpp">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-  </ItemGroup>

-  <ItemGroup>

-    <ResourceCompile Include="libEGL.rc" />

-  </ItemGroup>

-  <ItemGroup>

-    <None Include="libEGL.def" />

-  </ItemGroup>

-</Project>
\ No newline at end of file
diff --git a/src/Radiance/libEGL/main.cpp b/src/Radiance/libEGL/main.cpp
deleted file mode 100644
index a737aea..0000000
--- a/src/Radiance/libEGL/main.cpp
+++ /dev/null
@@ -1,330 +0,0 @@
-// SwiftShader Software Renderer

-//

-// Copyright(c) 2005-2013 TransGaming Inc.

-//

-// 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.

-//

-

-// main.cpp: DLL entry point and management of thread-local data.

-

-#include "main.h"

-

-#include "resource.h"

-#include "Common/Thread.hpp"

-#include "Common/SharedLibrary.hpp"

-#include "common/debug.h"

-

-static sw::Thread::LocalStorageKey currentTLS = TLS_OUT_OF_INDEXES;

-

-#if !defined(_MSC_VER)

-#define CONSTRUCTOR __attribute__((constructor))

-#define DESTRUCTOR __attribute__((destructor))

-#else

-#define CONSTRUCTOR

-#define DESTRUCTOR

-#endif

-

-static void eglAttachThread()

-{

-    TRACE("()");

-

-    egl::Current *current = new egl::Current;

-

-    if(current)

-    {

-        sw::Thread::setLocalStorage(currentTLS, current);

-

-        current->error = EGL_SUCCESS;

-        current->API = EGL_OPENGL_ES_API;

-        current->display = EGL_NO_DISPLAY;

-        current->drawSurface = EGL_NO_SURFACE;

-        current->readSurface = EGL_NO_SURFACE;

-		current->context = EGL_NO_CONTEXT;

-	}

-}

-

-static void eglDetachThread()

-{

-    TRACE("()");

-

-	egl::Current *current = (egl::Current*)sw::Thread::getLocalStorage(currentTLS);

-

-	if(current)

-	{

-        delete current;

-	}

-}

-

-CONSTRUCTOR static bool eglAttachProcess()

-{

-    TRACE("()");

-

-	#if !defined(ANGLE_DISABLE_TRACE)

-        FILE *debug = fopen(TRACE_OUTPUT_FILE, "rt");

-

-        if(debug)

-        {

-            fclose(debug);

-            debug = fopen(TRACE_OUTPUT_FILE, "wt");   // Erase

-            fclose(debug);

-        }

-	#endif

-

-    currentTLS = sw::Thread::allocateLocalStorageKey();

-

-    if(currentTLS == TLS_OUT_OF_INDEXES)

-    {

-        return false;

-    }

-

-	eglAttachThread();

-

-	#if defined(_WIN32)

-	const char *libRAD_lib = "libRAD.dll";

-	#else

-	const char *libRAD_lib = "libRAD.so";

-	#endif

-	

-    libRAD = loadLibrary(libRAD_lib);

-    es2::createContext = (egl::Context *(*)(const egl::Config*, const egl::Context*))getProcAddress(libRAD, "glCreateContext");

-    rad::getProcAddress = (__eglMustCastToProperFunctionPointerType (RADAPIENTRY *)(const char*))getProcAddress(libRAD, "radGetProcAddress");

-	es2::createBackBuffer = (egl::Image *(*)(int, int, const egl::Config*))getProcAddress(libRAD, "createBackBuffer");

-	es2::createDepthStencil = (egl::Image *(*)(unsigned int, unsigned int, sw::Format, int, bool))getProcAddress(libRAD, "createDepthStencil");

-    es2::createFrameBuffer = (sw::FrameBuffer *(*)(EGLNativeDisplayType, EGLNativeWindowType, int, int))getProcAddress(libRAD, "createFrameBuffer");

-

-	return libRAD != 0;

-}

-

-DESTRUCTOR static void eglDetachProcess()

-{

-    TRACE("()");

-

-	eglDetachThread();

-	sw::Thread::freeLocalStorageKey(currentTLS);

-	freeLibrary(libRAD);

-}

-

-#if defined(_WIN32)

-static INT_PTR CALLBACK DebuggerWaitDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

-{

-	RECT rect;

-

-    switch(uMsg)

-    {

-    case WM_INITDIALOG:

-		GetWindowRect(GetDesktopWindow(), &rect);

-		SetWindowPos(hwnd, HWND_TOP, rect.right / 2, rect.bottom / 2, 0, 0, SWP_NOSIZE);

-		SetTimer(hwnd, 1, 100, NULL);

-		return TRUE;

-    case WM_COMMAND:

-        if(LOWORD(wParam) == IDCANCEL)

-		{

-			EndDialog(hwnd, 0);

-		}

-        break;

-    case WM_TIMER:

-		if(IsDebuggerPresent())

-		{

-			EndDialog(hwnd, 0);

-		}

-    }

-

-    return FALSE;

-}

-

-static void WaitForDebugger(HINSTANCE instance)

-{

-    if(!IsDebuggerPresent())

-    {

-        HRSRC dialog = FindResource(instance, MAKEINTRESOURCE(IDD_DIALOG1), RT_DIALOG);

-		DLGTEMPLATE *dialogTemplate = (DLGTEMPLATE*)LoadResource(instance, dialog);

-		DialogBoxIndirect(instance, dialogTemplate, NULL, DebuggerWaitDialogProc);

-    }

-}

-

-extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved)

-{

-    switch(reason)

-    {

-    case DLL_PROCESS_ATTACH:

-		if(false)

-		{

-			WaitForDebugger(instance);

-		}

-        return eglAttachProcess();

-        break;

-    case DLL_THREAD_ATTACH:

-        eglAttachThread();

-        break;

-    case DLL_THREAD_DETACH:

-        eglDetachThread();

-        break;

-    case DLL_PROCESS_DETACH:

-        eglDetachProcess();

-        break;

-    default:

-        break;

-    }

-

-    return TRUE;

-}

-#endif

-

-namespace egl

-{

-static Current *eglGetCurrent(void)

-{

-	Current *current = (Current*)sw::Thread::getLocalStorage(currentTLS);

-

-	if(!current)

-	{

-		eglAttachThread();

-	}

-

-	return (Current*)sw::Thread::getLocalStorage(currentTLS);

-}

-

-void setCurrentError(EGLint error)

-{

-    Current *current = eglGetCurrent();

-

-    current->error = error;

-}

-

-EGLint getCurrentError()

-{

-    Current *current = eglGetCurrent();

-

-    return current->error;

-}

-

-void setCurrentAPI(EGLenum API)

-{

-    Current *current = eglGetCurrent();

-

-    current->API = API;

-}

-

-EGLenum getCurrentAPI()

-{

-    Current *current = eglGetCurrent();

-

-    return current->API;

-}

-

-void setCurrentDisplay(EGLDisplay dpy)

-{

-    Current *current = eglGetCurrent();

-

-    current->display = dpy;

-}

-

-EGLDisplay getCurrentDisplay()

-{

-    Current *current = eglGetCurrent();

-

-    return current->display;

-}

-

-void setCurrentContext(EGLContext ctx)

-{

-    Current *current = eglGetCurrent();

-

-    current->context = ctx;

-}

-

-EGLContext getCurrentContext()

-{

-    Current *current = eglGetCurrent();

-

-    return current->context;

-}

-

-void setCurrentDrawSurface(EGLSurface surface)

-{

-    Current *current = eglGetCurrent();

-

-    current->drawSurface = surface;

-}

-

-EGLSurface getCurrentDrawSurface()

-{

-    Current *current = eglGetCurrent();

-

-    return current->drawSurface;

-}

-

-void setCurrentReadSurface(EGLSurface surface)

-{

-    Current *current = eglGetCurrent();

-

-    current->readSurface = surface;

-}

-

-EGLSurface getCurrentReadSurface()

-{

-    Current *current = eglGetCurrent();

-

-    return current->readSurface;

-}

-}

-

-void error(EGLint errorCode)

-{

-    egl::setCurrentError(errorCode);

-

-	if(errorCode != EGL_SUCCESS)

-	{

-		switch(errorCode)

-		{

-		case EGL_NOT_INITIALIZED:     TRACE("\t! Error generated: not initialized\n");     break;

-		case EGL_BAD_ACCESS:          TRACE("\t! Error generated: bad access\n");          break;

-		case EGL_BAD_ALLOC:           TRACE("\t! Error generated: bad alloc\n");           break;

-		case EGL_BAD_ATTRIBUTE:       TRACE("\t! Error generated: bad attribute\n");       break;

-		case EGL_BAD_CONFIG:          TRACE("\t! Error generated: bad config\n");          break;

-		case EGL_BAD_CONTEXT:         TRACE("\t! Error generated: bad context\n");         break;

-		case EGL_BAD_CURRENT_SURFACE: TRACE("\t! Error generated: bad current surface\n"); break;

-		case EGL_BAD_DISPLAY:         TRACE("\t! Error generated: bad display\n");         break;

-		case EGL_BAD_MATCH:           TRACE("\t! Error generated: bad match\n");           break;

-		case EGL_BAD_NATIVE_PIXMAP:   TRACE("\t! Error generated: bad native pixmap\n");   break;

-		case EGL_BAD_NATIVE_WINDOW:   TRACE("\t! Error generated: bad native window\n");   break;

-		case EGL_BAD_PARAMETER:       TRACE("\t! Error generated: bad parameter\n");       break;

-		case EGL_BAD_SURFACE:         TRACE("\t! Error generated: bad surface\n");         break;

-		case EGL_CONTEXT_LOST:        TRACE("\t! Error generated: context lost\n");        break;

-		default:                      TRACE("\t! Error generated: <0x%X>\n", errorCode);   break;

-		}

-	}

-}

-

-extern "C"

-{

-EGLContext clientGetCurrentContext()

-{

-    return egl::getCurrentContext();

-}

-

-EGLContext clientGetCurrentDisplay()

-{

-    return egl::getCurrentDisplay();

-}

-}

-

-namespace es2

-{

-	egl::Context *(*createContext)(const egl::Config *config, const egl::Context *shareContext) = 0;

-

-	egl::Image *(*createBackBuffer)(int width, int height, const egl::Config *config) = 0;

-	egl::Image *(*createDepthStencil)(unsigned int width, unsigned int height, sw::Format format, int multiSampleDepth, bool discard) = 0;

-	sw::FrameBuffer *(*createFrameBuffer)(EGLNativeDisplayType display, EGLNativeWindowType window, int width, int height) = 0;

-}

-

-namespace rad

-{

-	__eglMustCastToProperFunctionPointerType (RADAPIENTRY *getProcAddress)(const char *procname) = 0;

-}

-

-void *libRAD = 0;   // Handle to the libRAD module

diff --git a/src/Radiance/libEGL/main.h b/src/Radiance/libEGL/main.h
deleted file mode 100644
index 3b32f23..0000000
--- a/src/Radiance/libEGL/main.h
+++ /dev/null
@@ -1,103 +0,0 @@
-// SwiftShader Software Renderer
-//
-// Copyright(c) 2005-2012 TransGaming Inc.
-//
-// 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.
-//
-
-// main.h: Management of thread-local data.
-
-#ifndef LIBEGL_MAIN_H_
-#define LIBEGL_MAIN_H_
-
-#define EGLAPI
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-#include <RAD/rad.h>
-
-namespace egl
-{
-	struct Current
-	{
-		EGLint error;
-		EGLenum API;
-		EGLDisplay display;
-		EGLContext context;
-		EGLSurface drawSurface;
-		EGLSurface readSurface;
-	};
-
-	void setCurrentError(EGLint error);
-	EGLint getCurrentError();
-
-	void setCurrentAPI(EGLenum API);
-	EGLenum getCurrentAPI();
-
-	void setCurrentDisplay(EGLDisplay dpy);
-	EGLDisplay getCurrentDisplay();
-
-	void setCurrentContext(EGLContext ctx);
-	EGLContext getCurrentContext();
-
-	void setCurrentDrawSurface(EGLSurface surface);
-	EGLSurface getCurrentDrawSurface();
-
-	void setCurrentReadSurface(EGLSurface surface);
-	EGLSurface getCurrentReadSurface();
-}
-
-void error(EGLint errorCode);
-
-template<class T>
-const T &error(EGLint errorCode, const T &returnValue)
-{
-    error(errorCode);
-
-    return returnValue;
-}
-
-template<class T>
-const T &success(const T &returnValue)
-{
-    egl::setCurrentError(EGL_SUCCESS);
-
-    return returnValue;
-}
-
-namespace egl
-{
-	class Config;
-	class Surface;
-	class Display;
-	class Context;
-	class Image;
-}
-
-namespace sw
-{
-	class FrameBuffer;
-	enum Format : unsigned char;
-}
-
-// libRAD dependencies
-namespace es2
-{
-	extern egl::Context *(*createContext)(const egl::Config *config, const egl::Context *shareContext);
-
-	extern egl::Image *(*createBackBuffer)(int width, int height, const egl::Config *config);
-	extern egl::Image *(*createDepthStencil)(unsigned int width, unsigned int height, sw::Format format, int multiSampleDepth, bool discard);
-	extern sw::FrameBuffer *(*createFrameBuffer)(EGLNativeDisplayType display, EGLNativeWindowType window, int width, int height);
-}
-
-namespace rad
-{
-	extern __eglMustCastToProperFunctionPointerType (RADAPIENTRY *getProcAddress)(const char *procname);
-}
-
-extern void *libRAD;    // Handle to the libRAD module
-
-#endif  // LIBEGL_MAIN_H_
diff --git a/src/Radiance/libEGL/resource.h b/src/Radiance/libEGL/resource.h
deleted file mode 100644
index b60570a..0000000
--- a/src/Radiance/libEGL/resource.h
+++ /dev/null
@@ -1,17 +0,0 @@
-//{{NO_DEPENDENCIES}}

-// Microsoft Visual C++ generated include file.

-// Used by libEGL.rc

-//

-#define IDD_DIALOG1                     101

-#define IDC_STATIC                      -1

-

-// Next default values for new objects

-// 

-#ifdef APSTUDIO_INVOKED

-#ifndef APSTUDIO_READONLY_SYMBOLS

-#define _APS_NEXT_RESOURCE_VALUE        102

-#define _APS_NEXT_COMMAND_VALUE         40001

-#define _APS_NEXT_CONTROL_VALUE         1001

-#define _APS_NEXT_SYMED_VALUE           101

-#endif

-#endif

diff --git a/src/Radiance/libEGL/Config.cpp b/src/Radiance/libRAD/Config.cpp
similarity index 100%
rename from src/Radiance/libEGL/Config.cpp
rename to src/Radiance/libRAD/Config.cpp
diff --git a/src/Radiance/libEGL/Config.h b/src/Radiance/libRAD/Config.h
similarity index 100%
rename from src/Radiance/libEGL/Config.h
rename to src/Radiance/libRAD/Config.h
diff --git a/src/Radiance/libRAD/Context.cpp b/src/Radiance/libRAD/Context.cpp
index efb83a2..b3764f4 100644
--- a/src/Radiance/libRAD/Context.cpp
+++ b/src/Radiance/libRAD/Context.cpp
@@ -21,8 +21,8 @@
 #include "Program.h"

 #include "Shader.h"

 #include "Texture.h"

-#include "libEGL/Display.h"

-#include "libEGL/Surface.h"

+#include "Display.h"

+#include "Surface.h"

 #include "Common/Half.hpp"

 

 #include <EGL/eglext.h>

@@ -704,7 +704,7 @@
                mState.stencilMask != mState.stencilBackMask)

             {

 				ERR("Separate front/back stencil writemasks, reference values, or stencil mask values are invalid under WebGL.");

-                return error(GL_INVALID_OPERATION);

+                return rad::error(GL_INVALID_OPERATION);

             }

 

             // get the maximum size of the stencil ref

@@ -1047,14 +1047,14 @@
 {

     if(!mState.program)

     {

-        return error(GL_INVALID_OPERATION);

+        return rad::error(GL_INVALID_OPERATION);

     }

 

     PrimitiveType primitiveType;

     int primitiveCount;

 

     if(!rad2sw::ConvertPrimitiveType(mode, count, primitiveType, primitiveCount))

-        return error(GL_INVALID_ENUM);

+        return rad::error(GL_INVALID_ENUM);

 

     if(primitiveCount <= 0)

     {

@@ -1071,14 +1071,14 @@
     GLenum err = applyVertexBuffer(0, first);

     if(err != GL_NO_ERROR)

     {

-        return error(err);

+        return rad::error(err);

     }

 

     applyShaders();

 

     if(!mState.program->validateSamplers(false))

     {

-        return error(GL_INVALID_OPERATION);

+        return rad::error(GL_INVALID_OPERATION);

     }

 

     if(!cullSkipsDraw(mode))

@@ -1091,14 +1091,14 @@
 {

     if(!mState.program || !mState.elementArrayBuffer)

     {

-        return error(GL_INVALID_OPERATION);

+        return rad::error(GL_INVALID_OPERATION);

     }

 

     PrimitiveType primitiveType;

     int primitiveCount;

 

     if(!rad2sw::ConvertPrimitiveType(mode, count, primitiveType, primitiveCount))

-        return error(GL_INVALID_ENUM);

+        return rad::error(GL_INVALID_ENUM);

 

     if(primitiveCount <= 0)

     {

@@ -1117,7 +1117,7 @@
     GLenum err = applyVertexBuffer(0, 0);

     if(err != GL_NO_ERROR)

     {

-        return error(err);

+        return rad::error(err);

     }

 

     applyShaders();

@@ -1125,7 +1125,7 @@
 

     if(!mState.program->validateSamplers(false))

     {

-        return error(GL_INVALID_OPERATION);

+        return rad::error(GL_INVALID_OPERATION);

     }

 

     if(!cullSkipsDraw(mode))

@@ -1256,12 +1256,3 @@
 }

 

 }

-

-// Exported functions for use by EGL

-extern "C"

-{

-	es2::Context *glCreateContext(const egl::Config *config, const es2::Context *shareContext)

-	{

-		return new es2::Context(config, shareContext);

-	}

-}

diff --git a/src/Radiance/libRAD/Context.h b/src/Radiance/libRAD/Context.h
index c0d7b6d..e6af360 100644
--- a/src/Radiance/libRAD/Context.h
+++ b/src/Radiance/libRAD/Context.h
@@ -15,7 +15,7 @@
 #ifndef LIBGLESV2_CONTEXT_H_

 #define LIBGLESV2_CONTEXT_H_

 

-#include "libEGL/Context.hpp"

+#include "Context.hpp"

 #include "Image.hpp"

 #include "Renderer/Sampler.hpp"

 

diff --git a/src/Radiance/libEGL/Context.hpp b/src/Radiance/libRAD/Context.hpp
similarity index 100%
rename from src/Radiance/libEGL/Context.hpp
rename to src/Radiance/libRAD/Context.hpp
diff --git a/src/Radiance/libEGL/Display.cpp b/src/Radiance/libRAD/Display.cpp
similarity index 98%
rename from src/Radiance/libEGL/Display.cpp
rename to src/Radiance/libRAD/Display.cpp
index 657a90e..9bc0b93 100644
--- a/src/Radiance/libEGL/Display.cpp
+++ b/src/Radiance/libRAD/Display.cpp
@@ -16,8 +16,8 @@
 #include "Display.h"

 

 #include "main.h"

-#include "libEGL/Surface.h"

-#include "libEGL/Context.hpp"

+#include "Surface.h"

+#include "Context.hpp"

 #include "common/debug.h"

 

 #include <algorithm>

@@ -390,10 +390,7 @@
 

 	if(clientVersion == 2 && config->mRenderableType & EGL_OPENGL_ES2_BIT)

 	{

-		if(es2::createContext != 0)

-		{

-			context = es2::createContext(config, shareContext);

-		}

+		context = new es2::Context(config, static_cast<const es2::Context*>(shareContext));

 	}

 	else

 	{

diff --git a/src/Radiance/libEGL/Display.h b/src/Radiance/libRAD/Display.h
similarity index 100%
rename from src/Radiance/libEGL/Display.h
rename to src/Radiance/libRAD/Display.h
diff --git a/src/Radiance/libRAD/Fence.cpp b/src/Radiance/libRAD/Fence.cpp
index e79077b..0260a92 100644
--- a/src/Radiance/libRAD/Fence.cpp
+++ b/src/Radiance/libRAD/Fence.cpp
@@ -49,7 +49,7 @@
 {

     if(!mQuery)

     {

-        return error(GL_INVALID_OPERATION, GL_TRUE);

+        return rad::error(GL_INVALID_OPERATION, GL_TRUE);

     }

 

 	UNIMPLEMENTED();

@@ -62,7 +62,7 @@
 {

     if(!mQuery)

     {

-        return error(GL_INVALID_OPERATION);

+        return rad::error(GL_INVALID_OPERATION);

     }

 

     while(!testFence())

@@ -75,7 +75,7 @@
 {

     if(!mQuery)

     {

-        return error(GL_INVALID_OPERATION);

+        return rad::error(GL_INVALID_OPERATION);

     }

 

     switch (pname)

@@ -100,7 +100,7 @@
         params[0] = mCondition;

         break;

     default:

-        return error(GL_INVALID_ENUM);

+        return rad::error(GL_INVALID_ENUM);

         break;

     }

 }

diff --git a/src/Radiance/libRAD/Image.hpp b/src/Radiance/libRAD/Image.hpp
index 70baa6d..d77dcdb 100644
--- a/src/Radiance/libRAD/Image.hpp
+++ b/src/Radiance/libRAD/Image.hpp
@@ -13,7 +13,7 @@
 #define gl_Image_hpp
 
 #include "Renderer/Surface.hpp"
-#include "libEGL/Image.hpp"
+#include "ImageEGL.hpp"
 
 #define GL_APICALL
 #include <GLES2/gl2.h>
diff --git a/src/Radiance/libEGL/Image.hpp b/src/Radiance/libRAD/ImageEGL.hpp
similarity index 100%
rename from src/Radiance/libEGL/Image.hpp
rename to src/Radiance/libRAD/ImageEGL.hpp
diff --git a/src/Radiance/libEGL/Surface.cpp b/src/Radiance/libRAD/Surface.cpp
similarity index 90%
rename from src/Radiance/libEGL/Surface.cpp
rename to src/Radiance/libRAD/Surface.cpp
index 46afdd6..14cb562 100644
--- a/src/Radiance/libEGL/Surface.cpp
+++ b/src/Radiance/libRAD/Surface.cpp
@@ -29,6 +29,13 @@
 

 #include <algorithm>

 

+extern "C"

+{

+	es2::Image *createBackBuffer(int width, int height, const egl::Config *config);

+	es2::Image *createDepthStencil(unsigned int width, unsigned int height, sw::Format format, int multiSampleDepth, bool discard);

+	sw::FrameBuffer *createFrameBuffer(HDC display, HWND window, int width, int height);

+}

+

 namespace egl

 {

 

@@ -126,7 +133,7 @@
 

     if(mWindow)

     {

-		frameBuffer = es2::createFrameBuffer(mDisplay->getNativeDisplay(), mWindow, backBufferWidth, backBufferHeight);

+		frameBuffer = createFrameBuffer(mDisplay->getNativeDisplay(), mWindow, backBufferWidth, backBufferHeight);

 

 		if(!frameBuffer)

 		{

@@ -136,7 +143,7 @@
 		}

     }

 

-	backBuffer = es2::createBackBuffer(backBufferWidth, backBufferHeight, mConfig);

+	backBuffer = createBackBuffer(backBufferWidth, backBufferHeight, mConfig);

 

     if(!backBuffer)

     {

@@ -147,7 +154,7 @@
 

     if(mConfig->mDepthStencilFormat != sw::FORMAT_NULL)

     {

-        mDepthStencil = es2::createDepthStencil(backBufferWidth, backBufferHeight, mConfig->mDepthStencilFormat, 1, false);

+        mDepthStencil = createDepthStencil(backBufferWidth, backBufferHeight, mConfig->mDepthStencilFormat, 1, false);

 

 		if(!mDepthStencil)

 		{

diff --git a/src/Radiance/libEGL/Surface.h b/src/Radiance/libRAD/Surface.h
similarity index 100%
rename from src/Radiance/libEGL/Surface.h
rename to src/Radiance/libRAD/Surface.h
diff --git a/src/Radiance/libRAD/Texture.cpp b/src/Radiance/libRAD/Texture.cpp
index 3c31d6b..d84ff80 100644
--- a/src/Radiance/libRAD/Texture.cpp
+++ b/src/Radiance/libRAD/Texture.cpp
@@ -18,8 +18,8 @@
 #include "main.h"

 #include "mathutil.h"

 #include "Device.hpp"

-#include "libEGL/Display.h"

-#include "libEGL/Surface.h"

+#include "Display.h"

+#include "Surface.h"

 #include "common/debug.h"

 

 #include <algorithm>

@@ -45,24 +45,24 @@
 	resource->destruct();

 }

 

-void Texture::addRef()
-{
-	sw::atomicIncrement(&referenceCount);
-}
-
-void Texture::release()
-{
-    ASSERT(referenceCount > 0);
-
-    if(referenceCount > 0)
-	{
-		sw::atomicDecrement(&referenceCount);
-	}
-
-	if(referenceCount == 0)
-	{
-		delete this;
-	}
+void Texture::addRef()

+{

+	sw::atomicIncrement(&referenceCount);

+}

+

+void Texture::release()

+{

+    ASSERT(referenceCount > 0);

+

+    if(referenceCount > 0)

+	{

+		sw::atomicDecrement(&referenceCount);

+	}

+

+	if(referenceCount == 0)

+	{

+		delete this;

+	}

 }

 

 sw::Resource *Texture::getResource() const

@@ -222,22 +222,22 @@
 {

 	if(!image)

 	{

-		return error(GL_INVALID_OPERATION);

+		return rad::error(GL_INVALID_OPERATION);

 	}

 

     if(width + xoffset > image->getWidth() || height + yoffset > image->getHeight())

     {

-        return error(GL_INVALID_VALUE);

+        return rad::error(GL_INVALID_VALUE);

     }

 

     if(IsCompressed(image->getFormat()))

     {

-        return error(GL_INVALID_OPERATION);

+        return rad::error(GL_INVALID_OPERATION);

     }

 

     if(format != image->getFormat())

     {

-        return error(GL_INVALID_OPERATION);

+        return rad::error(GL_INVALID_OPERATION);

     }

 

     if(pixels)

@@ -250,17 +250,17 @@
 {

 	if(!image)

 	{

-		return error(GL_INVALID_OPERATION);

+		return rad::error(GL_INVALID_OPERATION);

 	}

 

     if(width + xoffset > image->getWidth() || height + yoffset > image->getHeight())

     {

-        return error(GL_INVALID_VALUE);

+        return rad::error(GL_INVALID_VALUE);

     }

 

     if(format != image->getFormat())

     {

-        return error(GL_INVALID_OPERATION);

+        return rad::error(GL_INVALID_OPERATION);

     }

 

     if(pixels)

@@ -278,7 +278,7 @@
 

     if(!success)

     {

-        return error(GL_OUT_OF_MEMORY, false);

+        return rad::error(GL_OUT_OF_MEMORY, false);

     }

 

     return true;

@@ -393,7 +393,7 @@
 

 	if(!image[level])

 	{

-		return error(GL_OUT_OF_MEMORY);

+		return rad::error(GL_OUT_OF_MEMORY);

 	}

 

     Texture::setImage(format, type, unpackAlignment, pixels, image[level]);

@@ -410,7 +410,7 @@
 

 	if(!image[level])

 	{

-		return error(GL_OUT_OF_MEMORY);

+		return rad::error(GL_OUT_OF_MEMORY);

 	}

 

     Texture::setCompressedImage(imageSize, pixels, image[level]);

@@ -522,7 +522,7 @@
 

 		if(!image[i])

 		{

-			return error(GL_OUT_OF_MEMORY);

+			return rad::error(GL_OUT_OF_MEMORY);

 		}

 

 		getDevice()->stretchRect(image[i - 1], 0, image[i], 0, true);

@@ -656,7 +656,7 @@
 

 	if(!image[face][level])

 	{

-		return error(GL_OUT_OF_MEMORY);

+		return rad::error(GL_OUT_OF_MEMORY);

 	}

 

     Texture::setCompressedImage(imageSize, pixels, image[face][level]);

@@ -792,7 +792,7 @@
 

 	if(!image[face][level])

 	{

-		return error(GL_OUT_OF_MEMORY);

+		return rad::error(GL_OUT_OF_MEMORY);

 	}

 

     Texture::setImage(format, type, unpackAlignment, pixels, image[face][level]);

@@ -812,7 +812,7 @@
 {

     if(!isCubeComplete())

     {

-        return error(GL_INVALID_OPERATION);

+        return rad::error(GL_INVALID_OPERATION);

     }

 

     unsigned int q = log2(image[0][0]->getWidth());

@@ -830,7 +830,7 @@
 

 			if(!image[f][i])

 			{

-				return error(GL_OUT_OF_MEMORY);

+				return rad::error(GL_OUT_OF_MEMORY);

 			}

 

 			getDevice()->stretchRect(image[f][i - 1], 0, image[f][i], 0, true);

diff --git a/src/Radiance/libRAD/Texture.h b/src/Radiance/libRAD/Texture.h
index 83b0e28..cf9a4c7 100644
--- a/src/Radiance/libRAD/Texture.h
+++ b/src/Radiance/libRAD/Texture.h
@@ -17,7 +17,7 @@
 #define LIBGLESV2_TEXTURE_H_

 

 #include "utilities.h"

-#include "libEGL/Texture2D.hpp"

+#include "Texture2D.hpp"

 #include "common/debug.h"

 

 #define GL_APICALL

@@ -51,7 +51,7 @@
 

     virtual ~Texture();

 

-	virtual void addRef();
+	virtual void addRef();

 	virtual void release();

 

 	sw::Resource *getResource() const;

diff --git a/src/Radiance/libEGL/Texture2D.hpp b/src/Radiance/libRAD/Texture2D.hpp
similarity index 100%
rename from src/Radiance/libEGL/Texture2D.hpp
rename to src/Radiance/libRAD/Texture2D.hpp
diff --git a/src/Radiance/libEGL/libEGL.cbp b/src/Radiance/libRAD/libEGL.cbp
similarity index 100%
rename from src/Radiance/libEGL/libEGL.cbp
rename to src/Radiance/libRAD/libEGL.cbp
diff --git a/src/Radiance/libEGL/libEGL.cpp b/src/Radiance/libRAD/libEGL.cpp
similarity index 81%
rename from src/Radiance/libEGL/libEGL.cpp
rename to src/Radiance/libRAD/libEGL.cpp
index 6aec214..d2f2bf3 100644
--- a/src/Radiance/libEGL/libEGL.cpp
+++ b/src/Radiance/libRAD/libEGL.cpp
@@ -26,12 +26,12 @@
 {

     if(display == EGL_NO_DISPLAY)

     {

-        return error(EGL_BAD_DISPLAY, false);

+        return egl::error(EGL_BAD_DISPLAY, false);

     }

 

     if(!display->isInitialized())

     {

-        return error(EGL_NOT_INITIALIZED, false);

+        return egl::error(EGL_NOT_INITIALIZED, false);

     }

 

     return true;

@@ -46,7 +46,7 @@
 

     if(!display->isValidConfig(config))

     {

-        return error(EGL_BAD_CONFIG, false);

+        return egl::error(EGL_BAD_CONFIG, false);

     }

 

     return true;

@@ -61,7 +61,7 @@
 

     if(!display->isValidContext(context))

     {

-        return error(EGL_BAD_CONTEXT, false);

+        return egl::error(EGL_BAD_CONTEXT, false);

     }

 

     return true;

@@ -76,7 +76,7 @@
 

     if(!display->isValidSurface(surface))

     {

-        return error(EGL_BAD_SURFACE, false);

+        return egl::error(EGL_BAD_SURFACE, false);

     }

 

     return true;

@@ -108,7 +108,7 @@
     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_NO_DISPLAY);

+        return egl::error(EGL_BAD_ALLOC, EGL_NO_DISPLAY);

     }

 

     return EGL_NO_DISPLAY;

@@ -123,24 +123,24 @@
     {

         if(dpy == EGL_NO_DISPLAY)

         {

-            return error(EGL_BAD_DISPLAY, EGL_FALSE);

+            return egl::error(EGL_BAD_DISPLAY, EGL_FALSE);

         }

 

         egl::Display *display = static_cast<egl::Display*>(dpy);

 

         if(!display->initialize())

         {

-            return error(EGL_NOT_INITIALIZED, EGL_FALSE);

+            return egl::error(EGL_NOT_INITIALIZED, EGL_FALSE);

         }

 

         if(major) *major = 1;

         if(minor) *minor = 4;

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -154,18 +154,18 @@
     {

         if(dpy == EGL_NO_DISPLAY)

         {

-            return error(EGL_BAD_DISPLAY, EGL_FALSE);

+            return egl::error(EGL_BAD_DISPLAY, EGL_FALSE);

         }

 

         egl::Display *display = static_cast<egl::Display*>(dpy);

 

         display->terminate();

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -187,23 +187,23 @@
         switch(name)

         {

         case EGL_CLIENT_APIS:

-            return success("OpenGL_ES");

+            return egl::success("OpenGL_ES");

         case EGL_EXTENSIONS:

-            return success("EGL_KHR_gl_texture_2D_image "

+            return egl::success("EGL_KHR_gl_texture_2D_image "

                            "EGL_KHR_gl_texture_cubemap_image "

                            "EGL_KHR_gl_renderbuffer_image "

                            "EGL_KHR_image_base");

         case EGL_VENDOR:

-            return success("TransGaming Inc.");

+            return egl::success("TransGaming Inc.");

         case EGL_VERSION:

-            return success("1.4 SwiftShader " VERSION_STRING);

+            return egl::success("1.4 SwiftShader " VERSION_STRING);

         }

 

-        return error(EGL_BAD_PARAMETER, (const char*)NULL);

+        return egl::error(EGL_BAD_PARAMETER, (const char*)NULL);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, (const char*)NULL);

+        return egl::error(EGL_BAD_ALLOC, (const char*)NULL);

     }

 

     return NULL;

@@ -226,21 +226,21 @@
 

         if(!num_config)

         {

-            return error(EGL_BAD_PARAMETER, EGL_FALSE);

+            return egl::error(EGL_BAD_PARAMETER, EGL_FALSE);

         }

 

         const EGLint attribList[] = {EGL_NONE};

 

         if(!display->getConfigs(configs, attribList, config_size, num_config))

         {

-            return error(EGL_BAD_ATTRIBUTE, EGL_FALSE);

+            return egl::error(EGL_BAD_ATTRIBUTE, EGL_FALSE);

         }

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -263,7 +263,7 @@
 

         if(!num_config)

         {

-            return error(EGL_BAD_PARAMETER, EGL_FALSE);

+            return egl::error(EGL_BAD_PARAMETER, EGL_FALSE);

         }

 

         const EGLint attribList[] = {EGL_NONE};

@@ -275,11 +275,11 @@
 

         display->getConfigs(configs, attrib_list, config_size, num_config);

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -301,14 +301,14 @@
 

         if(!display->getConfigAttrib(config, attribute, value))

         {

-            return error(EGL_BAD_ATTRIBUTE, EGL_FALSE);

+            return egl::error(EGL_BAD_ATTRIBUTE, EGL_FALSE);

         }

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -330,14 +330,14 @@
 

 		if(!display->isValidWindow(window))

 		{

-			return error(EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE);

+			return egl::error(EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE);

 		}

 

         return display->createWindowSurface(window, config, attrib_list);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_NO_SURFACE);

+        return egl::error(EGL_BAD_ALLOC, EGL_NO_SURFACE);

     }

 

     return EGL_NO_SURFACE;

@@ -361,7 +361,7 @@
     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_NO_SURFACE);

+        return egl::error(EGL_BAD_ALLOC, EGL_NO_SURFACE);

     }

 

     return EGL_NO_SURFACE;

@@ -383,11 +383,11 @@
 

         UNIMPLEMENTED();   // FIXME

 

-        return success(EGL_NO_SURFACE);

+        return egl::success(EGL_NO_SURFACE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_NO_SURFACE);

+        return egl::error(EGL_BAD_ALLOC, EGL_NO_SURFACE);

     }

 

     return EGL_NO_SURFACE;

@@ -409,16 +409,16 @@
 

         if(surface == EGL_NO_SURFACE)

         {

-            return error(EGL_BAD_SURFACE, EGL_FALSE);

+            return egl::error(EGL_BAD_SURFACE, EGL_FALSE);

         }

 

         display->destroySurface((egl::Surface*)surface);

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -441,7 +441,7 @@
 

         if(surface == EGL_NO_SURFACE)

         {

-            return error(EGL_BAD_SURFACE, EGL_FALSE);

+            return egl::error(EGL_BAD_SURFACE, EGL_FALSE);

         }

 

         switch(attribute)

@@ -495,14 +495,14 @@
             *value = eglSurface->getWidth();

             break;

           default:

-            return error(EGL_BAD_ATTRIBUTE, EGL_FALSE);

+            return egl::error(EGL_BAD_ATTRIBUTE, EGL_FALSE);

         }

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -518,20 +518,20 @@
         {

           case EGL_OPENGL_API:

           case EGL_OPENVG_API:

-            return error(EGL_BAD_PARAMETER, EGL_FALSE);   // Not supported by this implementation

+            return egl::error(EGL_BAD_PARAMETER, EGL_FALSE);   // Not supported by this implementation

           case EGL_OPENGL_ES_API:

             break;

           default:

-            return error(EGL_BAD_PARAMETER, EGL_FALSE);

+            return egl::error(EGL_BAD_PARAMETER, EGL_FALSE);

         }

 

         egl::setCurrentAPI(api);

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -545,11 +545,11 @@
     {

         EGLenum API = egl::getCurrentAPI();

 

-        return success(API);

+        return egl::success(API);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -563,11 +563,11 @@
     {

         UNIMPLEMENTED();   // FIXME

 

-        return success(0);

+        return egl::success(0);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -581,11 +581,11 @@
     {

         eglMakeCurrent(EGL_NO_DISPLAY, EGL_NO_CONTEXT, EGL_NO_SURFACE, EGL_NO_SURFACE);

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -599,7 +599,7 @@
 

 	UNIMPLEMENTED();

 

-    return error(EGL_BAD_PARAMETER, EGL_NO_SURFACE);

+    return egl::error(EGL_BAD_PARAMETER, EGL_NO_SURFACE);

 }

 

 EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)

@@ -619,11 +619,11 @@
 

         UNIMPLEMENTED();   // FIXME

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -646,16 +646,16 @@
 

         if(draw_surface == NULL)

         {

-            return error(EGL_BAD_SURFACE, EGL_FALSE);

+            return egl::error(EGL_BAD_SURFACE, EGL_FALSE);

         }

 

         draw_surface->setSwapInterval(interval);

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -679,7 +679,7 @@
                 }

                 else

                 {

-                    return error(EGL_BAD_ATTRIBUTE, EGL_NO_CONTEXT);

+                    return egl::error(EGL_BAD_ATTRIBUTE, EGL_NO_CONTEXT);

                 }

             }

         }

@@ -695,7 +695,7 @@
     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_NO_CONTEXT);

+        return egl::error(EGL_BAD_ALLOC, EGL_NO_CONTEXT);

     }

 

     return EGL_NO_CONTEXT;

@@ -717,16 +717,16 @@
 

         if(ctx == EGL_NO_CONTEXT)

         {

-            return error(EGL_BAD_CONTEXT, EGL_FALSE);

+            return egl::error(EGL_BAD_CONTEXT, EGL_FALSE);

         }

 

         display->destroyContext(context);

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -752,7 +752,7 @@
 

 		if(ctx == EGL_NO_CONTEXT && (draw != EGL_NO_SURFACE || read != EGL_NO_SURFACE))

 		{

-			return error(EGL_BAD_MATCH, EGL_FALSE);

+			return egl::error(EGL_BAD_MATCH, EGL_FALSE);

 		}

 

         if(ctx != EGL_NO_CONTEXT && !validateContext(display, context))

@@ -768,7 +768,7 @@
 

 		if((draw != EGL_NO_SURFACE) ^ (read != EGL_NO_SURFACE))

 		{

-			return error(EGL_BAD_MATCH, EGL_FALSE);

+			return egl::error(EGL_BAD_MATCH, EGL_FALSE);

 		}

 

         if(draw != read)

@@ -786,11 +786,11 @@
 			context->makeCurrent(static_cast<egl::Surface*>(draw));

 		}

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -804,11 +804,11 @@
     {

 		EGLContext context = egl::getCurrentContext();

 

-		return success(context);

+		return egl::success(context);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_NO_CONTEXT);

+        return egl::error(EGL_BAD_ALLOC, EGL_NO_CONTEXT);

     }

 

     return EGL_NO_CONTEXT;

@@ -823,21 +823,21 @@
         if(readdraw == EGL_READ)

         {

             EGLSurface read = egl::getCurrentReadSurface();

-            return success(read);

+            return egl::success(read);

         }

         else if(readdraw == EGL_DRAW)

         {

             EGLSurface draw = egl::getCurrentDrawSurface();

-            return success(draw);

+            return egl::success(draw);

         }

         else

         {

-            return error(EGL_BAD_PARAMETER, EGL_NO_SURFACE);

+            return egl::error(EGL_BAD_PARAMETER, EGL_NO_SURFACE);

         }

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_NO_SURFACE);

+        return egl::error(EGL_BAD_ALLOC, EGL_NO_SURFACE);

     }

 

     return EGL_NO_SURFACE;

@@ -851,11 +851,11 @@
     {

         EGLDisplay dpy = egl::getCurrentDisplay();

 

-        return success(dpy);

+        return egl::success(dpy);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_NO_DISPLAY);

+        return egl::error(EGL_BAD_ALLOC, EGL_NO_DISPLAY);

     }

 

     return EGL_NO_DISPLAY;

@@ -878,11 +878,11 @@
 

         UNIMPLEMENTED();   // FIXME

 

-        return success(0);

+        return egl::success(0);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -896,11 +896,11 @@
     {

         UNIMPLEMENTED();   // FIXME

 

-        return success(0);

+        return egl::success(0);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -914,11 +914,11 @@
     {

         UNIMPLEMENTED();   // FIXME

 

-        return success(0);

+        return egl::success(0);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -940,16 +940,16 @@
 

         if(surface == EGL_NO_SURFACE)

         {

-            return error(EGL_BAD_SURFACE, EGL_FALSE);

+            return egl::error(EGL_BAD_SURFACE, EGL_FALSE);

         }

 

         eglSurface->swap();

 

-        return success(EGL_TRUE);

+        return egl::success(EGL_TRUE);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -971,11 +971,11 @@
 

         UNIMPLEMENTED();   // FIXME

 

-        return success(0);

+        return egl::success(0);

     }

     catch(std::bad_alloc&)

     {

-        return error(EGL_BAD_ALLOC, EGL_FALSE);

+        return egl::error(EGL_BAD_ALLOC, EGL_FALSE);

     }

 

     return EGL_FALSE;

@@ -985,12 +985,7 @@
 {

     TRACE("(const char *procname = \"%s\")", procname);

 

-	if(rad::getProcAddress != 0)

-	{

-		__eglMustCastToProperFunctionPointerType proc = rad::getProcAddress(procname);

-		if(proc) return proc;

-	}

-

-    return NULL;

+	RADPROC RADAPIENTRY radGetProcAddress(const RADchar *procname);

+	return (__eglMustCastToProperFunctionPointerType)radGetProcAddress;

 }

 }

diff --git a/src/Radiance/libRAD/libRAD.cpp b/src/Radiance/libRAD/libRAD.cpp
index 9402e66..5f8d7b1 100644
--- a/src/Radiance/libRAD/libRAD.cpp
+++ b/src/Radiance/libRAD/libRAD.cpp
@@ -18,7 +18,7 @@
 #include "common/debug.h"

 #include "Common/Version.h"

 #include "Main/Register.hpp"

-#include "../libEGL/Surface.h"

+#include "Surface.h"

 

 #define GL_APICALL

 #include <RAD/rad.h>

diff --git a/src/Radiance/libRAD/libRAD.def b/src/Radiance/libRAD/libRAD.def
index 0b301d2..0b3cc3c 100644
--- a/src/Radiance/libRAD/libRAD.def
+++ b/src/Radiance/libRAD/libRAD.def
@@ -2,11 +2,15 @@
 EXPORTS

 	radGetProcAddress

 

-    ; EGL dependencies

-    glCreateContext

-

-	createFrameBuffer

-	createBackBuffer

-	createDepthStencil

+	eglBindAPI

+	eglChooseConfig

+	eglCreateContext

+	eglCreateWindowSurface

+	eglGetDisplay

+	eglGetError

+	eglGetProcAddress

+	eglInitialize

+	eglMakeCurrent

+	eglTerminate

 

 	Register

diff --git a/src/Radiance/libRAD/libRAD.rc b/src/Radiance/libRAD/libRAD.rc
index c8b346a..295f270 100644
--- a/src/Radiance/libRAD/libRAD.rc
+++ b/src/Radiance/libRAD/libRAD.rc
@@ -14,13 +14,11 @@
 #undef APSTUDIO_READONLY_SYMBOLS

 

 /////////////////////////////////////////////////////////////////////////////

-// English (U.S.) resources

+// English (United States) resources

 

 #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

-#ifdef _WIN32

 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

 #pragma code_page(1252)

-#endif //_WIN32

 

 #ifdef APSTUDIO_INVOKED

 /////////////////////////////////////////////////////////////////////////////

@@ -70,13 +68,13 @@
     BEGIN

         BLOCK "040904b0"

         BEGIN

-            VALUE "FileDescription", "SwiftShader libGLESv2 Dynamic Link Library"

+            VALUE "FileDescription", "SwiftShader libRAD Dynamic Link Library"

             VALUE "FileVersion", VERSION_STRING

-            VALUE "InternalName", "libGLESv2"

-            VALUE "LegalCopyright", "Copyright (C) 2012 TransGaming Inc."

-            VALUE "OriginalFilename", "libGLESv2.dll"

+            VALUE "InternalName", "libRAD"

+            VALUE "LegalCopyright", "Copyright (C) 2014 Google Inc."

+            VALUE "OriginalFilename", "libRAD.dll"

             VALUE "PrivateBuild", VERSION_STRING

-            VALUE "ProductName", "SwiftShader libGLESv2 Dynamic Link Library"

+            VALUE "ProductName", "SwiftShader libRAD Dynamic Link Library"

             VALUE "ProductVersion", VERSION_STRING

         END

     END

@@ -86,7 +84,41 @@
     END

 END

 

-#endif    // English (U.S.) resources

+

+/////////////////////////////////////////////////////////////////////////////

+//

+// Dialog

+//

+

+IDD_DIALOG1 DIALOGEX 0, 0, 129, 47

+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU

+CAPTION "Waiting for debugger"

+FONT 8, "MS Shell Dlg", 400, 0, 0x1

+BEGIN

+    PUSHBUTTON      "Cancel",IDCANCEL,72,26,50,14

+    LTEXT           "Attach a debugger or ESC to cancel",IDC_STATIC,7,7,115,8

+END

+

+

+/////////////////////////////////////////////////////////////////////////////

+//

+// DESIGNINFO

+//

+

+#ifdef APSTUDIO_INVOKED

+GUIDELINES DESIGNINFO

+BEGIN

+    IDD_DIALOG1, DIALOG

+    BEGIN

+        LEFTMARGIN, 7

+        RIGHTMARGIN, 122

+        TOPMARGIN, 7

+        BOTTOMMARGIN, 40

+    END

+END

+#endif    // APSTUDIO_INVOKED

+

+#endif    // English (United States) resources

 /////////////////////////////////////////////////////////////////////////////

 

 

@@ -100,3 +132,5 @@
 

 /////////////////////////////////////////////////////////////////////////////

 #endif    // not APSTUDIO_INVOKED

+

+

diff --git a/src/Radiance/libRAD/libRAD.vcxproj b/src/Radiance/libRAD/libRAD.vcxproj
index 27d248a..44406c0 100644
--- a/src/Radiance/libRAD/libRAD.vcxproj
+++ b/src/Radiance/libRAD/libRAD.vcxproj
@@ -160,15 +160,19 @@
     </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemGroup>

+    <ClCompile Include="Config.cpp" />

     <ClCompile Include="Context.cpp" />

     <ClCompile Include="..\common\debug.cpp" />

     <ClCompile Include="Device.cpp" />

+    <ClCompile Include="Display.cpp" />

     <ClCompile Include="Fence.cpp" />

     <ClCompile Include="Image.cpp" />

+    <ClCompile Include="libEGL.cpp" />

     <ClCompile Include="libRAD.cpp" />

     <ClCompile Include="main.cpp" />

     <ClCompile Include="Program.cpp" />

     <ClCompile Include="Shader.cpp" />

+    <ClCompile Include="Surface.cpp" />

     <ClCompile Include="Texture.cpp" />

     <ClCompile Include="utilities.cpp" />

   </ItemGroup>

@@ -177,16 +181,23 @@
     <ClInclude Include="..\include\GLES2\gl2.h" />

     <ClInclude Include="..\include\GLES2\gl2ext.h" />

     <ClInclude Include="..\include\GLES2\gl2platform.h" />

+    <ClInclude Include="Config.h" />

     <ClInclude Include="Context.h" />

+    <ClInclude Include="Context.hpp" />

     <ClInclude Include="Device.hpp" />

+    <ClInclude Include="Display.h" />

     <ClInclude Include="Fence.h" />

     <ClInclude Include="Image.hpp" />

+    <ClInclude Include="ImageEGL.hpp" />

     <ClInclude Include="main.h" />

+    <ClInclude Include="mainEGL.h" />

     <ClInclude Include="mathutil.h" />

     <ClInclude Include="Program.h" />

     <ClInclude Include="resource.h" />

     <ClInclude Include="Shader.h" />

+    <ClInclude Include="Surface.h" />

     <ClInclude Include="Texture.h" />

+    <ClInclude Include="Texture2D.hpp" />

     <ClInclude Include="utilities.h" />

   </ItemGroup>

   <ItemGroup>

diff --git a/src/Radiance/libRAD/libRAD.vcxproj.filters b/src/Radiance/libRAD/libRAD.vcxproj.filters
index 51f456a..c6f4677 100644
--- a/src/Radiance/libRAD/libRAD.vcxproj.filters
+++ b/src/Radiance/libRAD/libRAD.vcxproj.filters
@@ -44,6 +44,18 @@
     <ClCompile Include="Image.cpp">

       <Filter>Source Files</Filter>

     </ClCompile>

+    <ClCompile Include="Config.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+    <ClCompile Include="Display.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+    <ClCompile Include="libEGL.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+    <ClCompile Include="Surface.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

   </ItemGroup>

   <ItemGroup>

     <ClInclude Include="Context.h">

@@ -91,6 +103,27 @@
     <ClInclude Include="..\common\debug.h">

       <Filter>Header Files</Filter>

     </ClInclude>

+    <ClInclude Include="Config.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+    <ClInclude Include="Context.hpp">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+    <ClInclude Include="Display.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+    <ClInclude Include="ImageEGL.hpp">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+    <ClInclude Include="mainEGL.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+    <ClInclude Include="Surface.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+    <ClInclude Include="Texture2D.hpp">

+      <Filter>Header Files</Filter>

+    </ClInclude>

   </ItemGroup>

   <ItemGroup>

     <ResourceCompile Include="libRAD.rc" />

diff --git a/src/Radiance/libRAD/main.cpp b/src/Radiance/libRAD/main.cpp
index 0a9ba74..ccb0cef 100644
--- a/src/Radiance/libRAD/main.cpp
+++ b/src/Radiance/libRAD/main.cpp
@@ -13,10 +13,13 @@
 

 #include "main.h"

 

-#include "libEGL/Surface.h"

+#include "Surface.h"

 #include "Common/Thread.hpp"

 #include "Common/SharedLibrary.hpp"

 #include "common/debug.h"

+#include "resource.h"

+

+static sw::Thread::LocalStorageKey currentTLS = TLS_OUT_OF_INDEXES;

 

 #if !defined(_MSC_VER)

 #define CONSTRUCTOR __attribute__((constructor))

@@ -26,73 +29,283 @@
 #define DESTRUCTOR

 #endif

 

-static void glAttachThread()

+static void eglAttachThread()

 {

-    TRACE("()");

+	TRACE("()");

+

+	egl::Current *current = new egl::Current;

+

+	if(current)

+	{

+		sw::Thread::setLocalStorage(currentTLS, current);

+

+		current->error = EGL_SUCCESS;

+		current->API = EGL_OPENGL_ES_API;

+		current->display = EGL_NO_DISPLAY;

+		current->drawSurface = EGL_NO_SURFACE;

+		current->readSurface = EGL_NO_SURFACE;

+		current->context = EGL_NO_CONTEXT;

+	}

 }

 

-static void glDetachThread()

+static void eglDetachThread()

 {

-    TRACE("()");

+	TRACE("()");

+

+	egl::Current *current = (egl::Current*)sw::Thread::getLocalStorage(currentTLS);

+

+	if(current)

+	{

+		delete current;

+	}

 }

 

-CONSTRUCTOR static bool glAttachProcess()

+CONSTRUCTOR static void eglAttachProcess()

 {

-    TRACE("()");

+	TRACE("()");

 

-    glAttachThread();

+#if !defined(ANGLE_DISABLE_TRACE)

+	FILE *debug = fopen(TRACE_OUTPUT_FILE, "rt");

 

-    #if defined(_WIN32)

-	const char *libEGL_lib = "libEGL.dll";

-	#else

-	const char *libEGL_lib = "libEGL.so.1";

-	#endif

+	if(debug)

+	{

+		fclose(debug);

+		debug = fopen(TRACE_OUTPUT_FILE, "wt");   // Erase

+		fclose(debug);

+	}

+#endif

 

-	libEGL = loadLibrary(libEGL_lib);

-	egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "clientGetCurrentContext");

-	egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "clientGetCurrentDisplay");

+	currentTLS = sw::Thread::allocateLocalStorageKey();

 

-    return libEGL != 0;

+	if(currentTLS == TLS_OUT_OF_INDEXES)

+	{

+		return;

+	}

+

+	eglAttachThread();

 }

 

-DESTRUCTOR static void glDetachProcess()

+DESTRUCTOR static void eglDetachProcess()

 {

-    TRACE("()");

+	TRACE("()");

 

-	glDetachThread();

-	freeLibrary(libEGL);

+	eglDetachThread();

+	sw::Thread::freeLocalStorageKey(currentTLS);

 }

 

 #if defined(_WIN32)

+static INT_PTR CALLBACK DebuggerWaitDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

+{

+	RECT rect;

+

+	switch(uMsg)

+	{

+	case WM_INITDIALOG:

+		GetWindowRect(GetDesktopWindow(), &rect);

+		SetWindowPos(hwnd, HWND_TOP, rect.right / 2, rect.bottom / 2, 0, 0, SWP_NOSIZE);

+		SetTimer(hwnd, 1, 100, NULL);

+		return TRUE;

+	case WM_COMMAND:

+		if(LOWORD(wParam) == IDCANCEL)

+		{

+			EndDialog(hwnd, 0);

+		}

+		break;

+	case WM_TIMER:

+		if(IsDebuggerPresent())

+		{

+			EndDialog(hwnd, 0);

+		}

+	}

+

+	return FALSE;

+}

+

+static void WaitForDebugger(HINSTANCE instance)

+{

+	if(!IsDebuggerPresent())

+	{

+		HRSRC dialog = FindResource(instance, MAKEINTRESOURCE(IDD_DIALOG1), RT_DIALOG);

+		DLGTEMPLATE *dialogTemplate = (DLGTEMPLATE*)LoadResource(instance, dialog);

+		DialogBoxIndirect(instance, dialogTemplate, NULL, DebuggerWaitDialogProc);

+	}

+}

+

 extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved)

 {

-    switch(reason)

-    {

-    case DLL_PROCESS_ATTACH:

-        return glAttachProcess();

-        break;

-    case DLL_THREAD_ATTACH:

-        glAttachThread();

-        break;

-    case DLL_THREAD_DETACH:

-        glDetachThread();

-        break;

-    case DLL_PROCESS_DETACH:

-        glDetachProcess();

-        break;

-    default:

-        break;

-    }

+	switch(reason)

+	{

+	case DLL_PROCESS_ATTACH:

+		if(false)

+		{

+			WaitForDebugger(instance);

+		}

+		eglAttachProcess();

+		break;

+	case DLL_THREAD_ATTACH:

+		eglAttachThread();

+		break;

+	case DLL_THREAD_DETACH:

+		eglDetachThread();

+		break;

+	case DLL_PROCESS_DETACH:

+		eglDetachProcess();

+		break;

+	default:

+		break;

+	}

 

-    return TRUE;

+	return TRUE;

 }

 #endif

 

+namespace egl

+{

+	static Current *eglGetCurrent(void)

+	{

+		Current *current = (Current*)sw::Thread::getLocalStorage(currentTLS);

+

+		if(!current)

+		{

+			eglAttachThread();

+		}

+

+		return (Current*)sw::Thread::getLocalStorage(currentTLS);

+	}

+

+	void setCurrentError(EGLint error)

+	{

+		Current *current = eglGetCurrent();

+

+		current->error = error;

+	}

+

+	EGLint getCurrentError()

+	{

+		Current *current = eglGetCurrent();

+

+		return current->error;

+	}

+

+	void setCurrentAPI(EGLenum API)

+	{

+		Current *current = eglGetCurrent();

+

+		current->API = API;

+	}

+

+	EGLenum getCurrentAPI()

+	{

+		Current *current = eglGetCurrent();

+

+		return current->API;

+	}

+

+	void setCurrentDisplay(EGLDisplay dpy)

+	{

+		Current *current = eglGetCurrent();

+

+		current->display = dpy;

+	}

+

+	EGLDisplay getCurrentDisplay()

+	{

+		Current *current = eglGetCurrent();

+

+		return current->display;

+	}

+

+	void setCurrentContext(EGLContext ctx)

+	{

+		Current *current = eglGetCurrent();

+

+		current->context = ctx;

+	}

+

+	EGLContext getCurrentContext()

+	{

+		Current *current = eglGetCurrent();

+

+		return current->context;

+	}

+

+	void setCurrentDrawSurface(EGLSurface surface)

+	{

+		Current *current = eglGetCurrent();

+

+		current->drawSurface = surface;

+	}

+

+	EGLSurface getCurrentDrawSurface()

+	{

+		Current *current = eglGetCurrent();

+

+		return current->drawSurface;

+	}

+

+	void setCurrentReadSurface(EGLSurface surface)

+	{

+		Current *current = eglGetCurrent();

+

+		current->readSurface = surface;

+	}

+

+	EGLSurface getCurrentReadSurface()

+	{

+		Current *current = eglGetCurrent();

+

+		return current->readSurface;

+	}

+}

+

+namespace egl

+{

+	void error(EGLint errorCode)

+	{

+		egl::setCurrentError(errorCode);

+

+		if(errorCode != EGL_SUCCESS)

+		{

+			switch(errorCode)

+			{

+			case EGL_NOT_INITIALIZED:     TRACE("\t! Error generated: not initialized\n");     break;

+			case EGL_BAD_ACCESS:          TRACE("\t! Error generated: bad access\n");          break;

+			case EGL_BAD_ALLOC:           TRACE("\t! Error generated: bad alloc\n");           break;

+			case EGL_BAD_ATTRIBUTE:       TRACE("\t! Error generated: bad attribute\n");       break;

+			case EGL_BAD_CONFIG:          TRACE("\t! Error generated: bad config\n");          break;

+			case EGL_BAD_CONTEXT:         TRACE("\t! Error generated: bad context\n");         break;

+			case EGL_BAD_CURRENT_SURFACE: TRACE("\t! Error generated: bad current surface\n"); break;

+			case EGL_BAD_DISPLAY:         TRACE("\t! Error generated: bad display\n");         break;

+			case EGL_BAD_MATCH:           TRACE("\t! Error generated: bad match\n");           break;

+			case EGL_BAD_NATIVE_PIXMAP:   TRACE("\t! Error generated: bad native pixmap\n");   break;

+			case EGL_BAD_NATIVE_WINDOW:   TRACE("\t! Error generated: bad native window\n");   break;

+			case EGL_BAD_PARAMETER:       TRACE("\t! Error generated: bad parameter\n");       break;

+			case EGL_BAD_SURFACE:         TRACE("\t! Error generated: bad surface\n");         break;

+			case EGL_CONTEXT_LOST:        TRACE("\t! Error generated: context lost\n");        break;

+			default:                      TRACE("\t! Error generated: <0x%X>\n", errorCode);   break;

+			}

+		}

+	}

+}

+

+extern "C"

+{

+	EGLContext clientGetCurrentContext()

+	{

+		return egl::getCurrentContext();

+	}

+

+	EGLContext clientGetCurrentDisplay()

+	{

+		return egl::getCurrentDisplay();

+	}

+}

+

 namespace es2

 {

 es2::Context *getContext()

 {

-	egl::Context *context = egl::getCurrentContext();

+	egl::Context *context = static_cast<egl::Context*>(egl::getCurrentContext());

 	

 	if(context && context->getClientVersion() == 2)

 	{

@@ -104,7 +317,7 @@
 

 egl::Display *getDisplay()

 {

-    return egl::getCurrentDisplay();

+    return static_cast<egl::Display*>(egl::getCurrentDisplay());

 }

 

 Device *getDevice()

@@ -119,50 +332,45 @@
 {

 GLint getClientVersion()

 {

-	Context *context = egl::getCurrentContext();

+	Context *context = static_cast<egl::Context*>(egl::getCurrentContext());

 

     return context ? context->getClientVersion() : 0;

 }

 }

 

-// Records an error code

-void error(GLenum errorCode)

+namespace rad

 {

-    es2::Context *context = es2::getContext();

+	// Records an error code

+	void error(GLenum errorCode)

+	{

+		es2::Context *context = es2::getContext();

 

-    if(context)

-    {

-        switch(errorCode)

-        {

-        case GL_INVALID_ENUM:

-            context->recordInvalidEnum();

-            TRACE("\t! Error generated: invalid enum\n");

-            break;

-        case GL_INVALID_VALUE:

-            context->recordInvalidValue();

-            TRACE("\t! Error generated: invalid value\n");

-            break;

-        case GL_INVALID_OPERATION:

-            context->recordInvalidOperation();

-            TRACE("\t! Error generated: invalid operation\n");

-            break;

-        case GL_OUT_OF_MEMORY:

-            context->recordOutOfMemory();

-            TRACE("\t! Error generated: out of memory\n");

-            break;

-        case GL_INVALID_FRAMEBUFFER_OPERATION:

-            context->recordInvalidFramebufferOperation();

-            TRACE("\t! Error generated: invalid framebuffer operation\n");

-            break;

-        default: UNREACHABLE();

-        }

-    }

+		if(context)

+		{

+			switch(errorCode)

+			{

+			case GL_INVALID_ENUM:

+				context->recordInvalidEnum();

+				TRACE("\t! Error generated: invalid enum\n");

+				break;

+			case GL_INVALID_VALUE:

+				context->recordInvalidValue();

+				TRACE("\t! Error generated: invalid value\n");

+				break;

+			case GL_INVALID_OPERATION:

+				context->recordInvalidOperation();

+				TRACE("\t! Error generated: invalid operation\n");

+				break;

+			case GL_OUT_OF_MEMORY:

+				context->recordOutOfMemory();

+				TRACE("\t! Error generated: out of memory\n");

+				break;

+			case GL_INVALID_FRAMEBUFFER_OPERATION:

+				context->recordInvalidFramebufferOperation();

+				TRACE("\t! Error generated: invalid framebuffer operation\n");

+				break;

+			default: UNREACHABLE();

+			}

+		}

+	}

 }

-

-namespace egl

-{

-	egl::Context *(*getCurrentContext)() = 0;

-	egl::Display *(*getCurrentDisplay)() = 0;

-}

-

-void *libEGL = 0;   // Handle to the libEGL module

diff --git a/src/Radiance/libRAD/main.h b/src/Radiance/libRAD/main.h
index ef95881..6c8982a 100644
--- a/src/Radiance/libRAD/main.h
+++ b/src/Radiance/libRAD/main.h
@@ -17,7 +17,7 @@
 #include "Context.h"
 #include "Device.hpp"
 #include "common/debug.h"
-#include "libEGL/Display.h"
+#include "Display.h"
 
 #define GL_APICALL
 #include <GLES2/gl2.h>
@@ -35,6 +35,8 @@
 	GLint getClientVersion();
 }
 
+namespace rad
+{
 void error(GLenum errorCode);
 
 template<class T>
@@ -44,14 +46,66 @@
 
     return returnValue;
 }
-
-// libEGL dependencies
-namespace egl
-{
-	extern egl::Context *(*getCurrentContext)();
-	extern egl::Display *(*getCurrentDisplay)();
 }
 
-extern void *libEGL;       // Handle to the libEGL module
+#define EGLAPI
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+#include <RAD/rad.h>
+
+namespace egl
+{
+	struct Current
+	{
+		EGLint error;
+		EGLenum API;
+		EGLDisplay display;
+		EGLContext context;
+		EGLSurface drawSurface;
+		EGLSurface readSurface;
+	};
+
+	void setCurrentError(EGLint error);
+	EGLint getCurrentError();
+
+	void setCurrentAPI(EGLenum API);
+	EGLenum getCurrentAPI();
+
+	void setCurrentDisplay(EGLDisplay dpy);
+	EGLDisplay getCurrentDisplay();
+
+	void setCurrentContext(EGLContext ctx);
+	EGLContext getCurrentContext();
+
+	void setCurrentDrawSurface(EGLSurface surface);
+	EGLSurface getCurrentDrawSurface();
+
+	void setCurrentReadSurface(EGLSurface surface);
+	EGLSurface getCurrentReadSurface();
+
+	void error(EGLint errorCode);
+
+	template<class T>
+	const T &error(EGLint errorCode, const T &returnValue)
+	{
+		error(errorCode);
+
+		return returnValue;
+	}
+
+	template<class T>
+	const T &success(const T &returnValue)
+	{
+		egl::setCurrentError(EGL_SUCCESS);
+
+		return returnValue;
+	}
+
+	class Config;
+	class Surface;
+	class Display;
+	class Context;
+	class Image;
+}
 
 #endif   // LIBGLESV2_MAIN_H_
diff --git a/src/Radiance/libRAD/mainEGL.h b/src/Radiance/libRAD/mainEGL.h
new file mode 100644
index 0000000..e3670fa
--- /dev/null
+++ b/src/Radiance/libRAD/mainEGL.h
@@ -0,0 +1,26 @@
+// SwiftShader Software Renderer
+//
+// Copyright(c) 2005-2012 TransGaming Inc.
+//
+// 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.
+//
+
+// main.h: Management of thread-local data.
+
+#ifndef LIBEGL_MAIN_H_
+#define LIBEGL_MAIN_H_
+
+
+
+namespace sw
+{
+	class FrameBuffer;
+	enum Format : unsigned char;
+}
+
+
+#endif  // LIBEGL_MAIN_H_
diff --git a/src/Radiance/libRAD/resource.h b/src/Radiance/libRAD/resource.h
index 0292bf5..75e51d8 100644
--- a/src/Radiance/libRAD/resource.h
+++ b/src/Radiance/libRAD/resource.h
@@ -1,14 +1,17 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by libRAD.rc
-
-// Next default values for new objects
-// 
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        101
-#define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1001
-#define _APS_NEXT_SYMED_VALUE           101
-#endif
-#endif
+//{{NO_DEPENDENCIES}}

+// Microsoft Visual C++ generated include file.

+// Used by libRAD.rc

+//

+#define IDD_DIALOG1                     101

+#define IDC_STATIC                      -1

+

+// Next default values for new objects

+// 

+#ifdef APSTUDIO_INVOKED

+#ifndef APSTUDIO_READONLY_SYMBOLS

+#define _APS_NEXT_RESOURCE_VALUE        102

+#define _APS_NEXT_COMMAND_VALUE         40001

+#define _APS_NEXT_CONTROL_VALUE         1001

+#define _APS_NEXT_SYMED_VALUE           101

+#endif

+#endif

diff --git a/src/SwiftShader.sln b/src/SwiftShader.sln
index 351be64..a100064 100644
--- a/src/SwiftShader.sln
+++ b/src/SwiftShader.sln
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 12.00

 # Visual Studio 2013

-VisualStudioVersion = 12.0.30110.0

+VisualStudioVersion = 12.0.31101.0

 MinimumVisualStudioVersion = 10.0.40219.1

 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LLVM", "LLVM", "{B408B98A-E888-4ECF-81E0-7A37A6854B17}"

 EndProject

@@ -239,17 +239,9 @@
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{B7E24D8E-6BE9-4DEF-A8B9-6A6E60CA60E9}"

 EndProject

 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libRAD", "Radiance\libRAD\libRAD.vcxproj", "{A08DD1A8-998C-4FBB-8710-89B80D0BC3AD}"

-	ProjectSection(ProjectDependencies) = postProject

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893} = {2F6770B5-F168-4FCD-8A56-4DD95BEC8893}

-	EndProjectSection

 EndProject

 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Radiance", "Radiance", "{CA0EBD66-3F60-4F3D-8143-B31F14458B40}"

 EndProject

-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libEGL", "Radiance\libEGL\libEGL.vcxproj", "{2F6770B5-F168-4FCD-8A56-4DD95BEC8893}"

-	ProjectSection(ProjectDependencies) = postProject

-		{7B02CB19-4CDF-4F79-BC9B-7F3F6164A003} = {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}

-	EndProjectSection

-EndProject

 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Compiler", "Radiance\compiler\Compiler.vcxproj", "{5AEBF8B8-3454-4984-9D77-A8F13BC0377B}"

 EndProject

 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "preprocessor", "Radiance\compiler\preprocessor\preprocessor.vcxproj", "{6303975E-7060-4CE7-8090-CB2DE0B840B4}"

@@ -257,7 +249,6 @@
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rad", "..\tests\HelloRAD\rad.vcxproj", "{B4537008-1302-4EE7-98C8-6897472B9E36}"

 	ProjectSection(ProjectDependencies) = postProject

 		{A08DD1A8-998C-4FBB-8710-89B80D0BC3AD} = {A08DD1A8-998C-4FBB-8710-89B80D0BC3AD}

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893} = {2F6770B5-F168-4FCD-8A56-4DD95BEC8893}

 	EndProjectSection

 EndProject

 Global

@@ -675,15 +666,6 @@
 		{A08DD1A8-998C-4FBB-8710-89B80D0BC3AD}.Release|Win32.ActiveCfg = Release|Win32

 		{A08DD1A8-998C-4FBB-8710-89B80D0BC3AD}.Release|Win32.Build.0 = Release|Win32

 		{A08DD1A8-998C-4FBB-8710-89B80D0BC3AD}.Release|x64.ActiveCfg = Release|Win32

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893}.Debug|Win32.ActiveCfg = Debug|Win32

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893}.Debug|Win32.Build.0 = Debug|Win32

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893}.Debug|x64.ActiveCfg = Debug|Win32

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893}.Profile|Win32.ActiveCfg = Profile|Win32

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893}.Profile|Win32.Build.0 = Profile|Win32

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893}.Profile|x64.ActiveCfg = Profile|Win32

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893}.Release|Win32.ActiveCfg = Release|Win32

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893}.Release|Win32.Build.0 = Release|Win32

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893}.Release|x64.ActiveCfg = Release|Win32

 		{5AEBF8B8-3454-4984-9D77-A8F13BC0377B}.Debug|Win32.ActiveCfg = Debug|Win32

 		{5AEBF8B8-3454-4984-9D77-A8F13BC0377B}.Debug|Win32.Build.0 = Debug|Win32

 		{5AEBF8B8-3454-4984-9D77-A8F13BC0377B}.Debug|x64.ActiveCfg = Debug|Win32

@@ -716,6 +698,8 @@
 		HideSolutionNode = FALSE

 	EndGlobalSection

 	GlobalSection(NestedProjects) = preSolution

+		{B5871A7A-968C-42E3-A33B-981E6F448E78} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}

+		{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}

 		{97EDF19C-6360-4770-9255-EBA2F1A13E9B} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}

 		{7BE5F26F-0525-42BB-AAED-56C5B4582B99} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}

 		{00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}

@@ -737,21 +721,18 @@
 		{531B1D71-5EE6-4576-971E-9CC28B0B3868} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}

 		{E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}

 		{1F8587CB-0779-44BB-AFA4-03DD8A036D75} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}

-		{B5871A7A-968C-42E3-A33B-981E6F448E78} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}

-		{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}

 		{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}

 		{92940255-AB4B-42FB-A2C4-0FAB19C3C48A} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}

-		{235B1D85-E6B6-45E2-BA5D-5C60396428FF} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}

 		{9DAFEE32-19F6-4410-AA09-2B564FB86F62} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

 		{9CF4408B-9B08-481F-95DA-3DF0846DABE4} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

-		{B7E24D8E-6BE9-4DEF-A8B9-6A6E60CA60E9} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

-		{04FC5430-3F1B-42A2-A18A-D8BB7E5B2733} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

-		{AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

-		{B4537008-1302-4EE7-98C8-6897472B9E36} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

 		{09ABE661-9BC0-4152-A820-1FB0522CAC01} = {B7E24D8E-6BE9-4DEF-A8B9-6A6E60CA60E9}

+		{04FC5430-3F1B-42A2-A18A-D8BB7E5B2733} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

+		{235B1D85-E6B6-45E2-BA5D-5C60396428FF} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}

+		{AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

+		{B7E24D8E-6BE9-4DEF-A8B9-6A6E60CA60E9} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

 		{A08DD1A8-998C-4FBB-8710-89B80D0BC3AD} = {CA0EBD66-3F60-4F3D-8143-B31F14458B40}

-		{2F6770B5-F168-4FCD-8A56-4DD95BEC8893} = {CA0EBD66-3F60-4F3D-8143-B31F14458B40}

 		{5AEBF8B8-3454-4984-9D77-A8F13BC0377B} = {CA0EBD66-3F60-4F3D-8143-B31F14458B40}

 		{6303975E-7060-4CE7-8090-CB2DE0B840B4} = {CA0EBD66-3F60-4F3D-8143-B31F14458B40}

+		{B4537008-1302-4EE7-98C8-6897472B9E36} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

 	EndGlobalSection

 EndGlobal

diff --git a/tests/HelloRAD/rad.vcxproj b/tests/HelloRAD/rad.vcxproj
index 7d9e226..eac2f0b 100644
--- a/tests/HelloRAD/rad.vcxproj
+++ b/tests/HelloRAD/rad.vcxproj
@@ -109,9 +109,6 @@
     <Text Include="ReadMe.txt" />

   </ItemGroup>

   <ItemGroup>

-    <ProjectReference Include="..\..\src\Radiance\libEGL\libEGL.vcxproj">

-      <Project>{2f6770b5-f168-4fcd-8a56-4dd95bec8893}</Project>

-    </ProjectReference>

     <ProjectReference Include="..\..\src\Radiance\libRAD\libRAD.vcxproj">

       <Project>{a08dd1a8-998c-4fbb-8710-89b80d0bc3ad}</Project>

     </ProjectReference>

diff --git a/tests/HelloRAD/src/app/radexample.cpp b/tests/HelloRAD/src/app/radexample.cpp
index bcc45bb..216c170 100644
--- a/tests/HelloRAD/src/app/radexample.cpp
+++ b/tests/HelloRAD/src/app/radexample.cpp
@@ -105,7 +105,6 @@
 

 void InitRAD()

 {

-    // obfuscated string for radGetProcAddress

 	PFNRADGETPROCADDRESSPROC getProc = (PFNRADGETPROCADDRESSPROC)eglGetProcAddress("radGetProcAddress");

     radLoadProcs(getProc);