Add Linux projects for Radiance.

Bug 18621031

Change-Id: I33429da66221ccb2c4f46fda91d501d28a2e4aec
Reviewed-on: https://swiftshader-review.googlesource.com/1590
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Radiance/libRAD/Surface.cpp b/src/Radiance/libRAD/Surface.cpp
index 14cb562..e126627 100644
--- a/src/Radiance/libRAD/Surface.cpp
+++ b/src/Radiance/libRAD/Surface.cpp
@@ -33,7 +33,11 @@
 {

 	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);

+	#if defined(_WIN32)

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

+	#else

+	sw::FrameBuffer *createFrameBuffer(void *display, Window window, int width, int height);

+	#endif

 }

 

 namespace egl

@@ -89,13 +93,13 @@
 }

 

 void Surface::release()

-{	

+{

     if(mDepthStencil)

     {

         mDepthStencil->release();

         mDepthStencil = NULL;

     }

-	

+

 	if(backBuffer)

 	{

 		backBuffer->release();

@@ -122,7 +126,7 @@
 	#else

 		XWindowAttributes windowAttributes;

 		XGetWindowAttributes(mDisplay->getNativeDisplay(), mWindow, &windowAttributes);

-		

+

 		return reset(windowAttributes.width, windowAttributes.height);

 	#endif

 }

@@ -217,7 +221,7 @@
     {

         return;

     }

-    

+

     mSwapInterval = interval;

     mSwapInterval = std::max(mSwapInterval, mDisplay->getMinSwapInterval());

     mSwapInterval = std::min(mSwapInterval, mDisplay->getMaxSwapInterval());

diff --git a/src/Radiance/libRAD/exports.map b/src/Radiance/libRAD/exports.map
index 7d08ed0..ac0b017 100644
--- a/src/Radiance/libRAD/exports.map
+++ b/src/Radiance/libRAD/exports.map
@@ -1,184 +1,19 @@
 {
 global:
-    glActiveTexture;
-    glAttachShader;
-    glBindAttribLocation;
-    glBindBuffer;
-    glBindFramebuffer;
-    glBindRenderbuffer;
-    glBindTexture;
-    glBlendColor;
-    glBlendEquation;
-    glBlendEquationSeparate;
-    glBlendFunc;
-    glBlendFuncSeparate;
-    glBufferData;
-    glBufferSubData;
-    glCheckFramebufferStatus;
-    glClear;
-    glClearColor;
-    glClearDepthf;
-    glClearStencil;
-    glColorMask;
-    glCompileShader;
-    glCompressedTexImage2D;
-    glCompressedTexSubImage2D;
-    glCopyTexImage2D;
-    glCopyTexSubImage2D;
-    glCreateProgram;
-    glCreateShader;
-    glCullFace;
-    glDeleteBuffers;
-    glDeleteFramebuffers;
-    glDeleteProgram;
-    glDeleteRenderbuffers;
-    glDeleteShader;
-    glDeleteTextures;
-    glDepthFunc;
-    glDepthMask;
-    glDepthRangef;
-    glDetachShader;
-    glDisable;
-    glDisableVertexAttribArray;
-    glDrawArrays;
-    glDrawElements;
-    glEnable;
-    glEnableVertexAttribArray;
-    glFinish;
-    glFlush;
-    glFramebufferRenderbuffer;
-    glFramebufferTexture2D;
-    glFrontFace;
-    glGenBuffers;
-    glGenFramebuffers;
-    glGenRenderbuffers;
-    glGenTextures;
-    glGenerateMipmap;
-    glGetActiveAttrib;
-    glGetActiveUniform;
-    glGetAttachedShaders;
-    glGetAttribLocation;
-    glGetBooleanv;
-    glGetBufferParameteriv;
-    glGetError;
-    glGetFloatv;
-    glGetFramebufferAttachmentParameteriv;
-    glGetIntegerv;
-    glGetProgramInfoLog;
-    glGetProgramiv;
-    glGetRenderbufferParameteriv;
-    glGetShaderInfoLog;
-    glGetShaderPrecisionFormat;
-    glGetShaderSource;
-    glGetShaderiv;
-    glGetString;
-    glGetTexParameterfv;
-    glGetTexParameteriv;
-    glGetUniformLocation;
-    glGetUniformfv;
-    glGetUniformiv;
-    glGetVertexAttribPointerv;
-    glGetVertexAttribfv;
-    glGetVertexAttribiv;
-    glHint;
-    glIsBuffer;
-    glIsEnabled;
-    glIsFramebuffer;
-    glIsProgram;
-    glIsRenderbuffer;
-    glIsShader;
-    glIsTexture;
-    glLineWidth;
-    glLinkProgram;
-    glPixelStorei;
-    glPolygonOffset;
-    glReadPixels;
-    glReleaseShaderCompiler;
-    glRenderbufferStorage;
-    glSampleCoverage;
-    glScissor;
-    glShaderBinary;
-    glShaderSource;
-    glStencilFunc;
-    glStencilFuncSeparate;
-    glStencilMask;
-    glStencilMaskSeparate;
-    glStencilOp;
-    glStencilOpSeparate;
-    glTexImage2D;
-    glTexParameterf;
-    glTexParameterfv;
-    glTexParameteri;
-    glTexParameteriv;
-    glTexSubImage2D;
-    glUniform1f;
-    glUniform1fv;
-    glUniform1i;
-    glUniform1iv;
-    glUniform2f;
-    glUniform2fv;
-    glUniform2i;
-    glUniform2iv;
-    glUniform3f;
-    glUniform3fv;
-    glUniform3i;
-    glUniform3iv;
-    glUniform4f;
-    glUniform4fv;
-    glUniform4i;
-    glUniform4iv;
-    glUniformMatrix2fv;
-    glUniformMatrix3fv;
-    glUniformMatrix4fv;
-    glUseProgram;
-    glValidateProgram;
-    glVertexAttrib1f;
-    glVertexAttrib1fv;
-    glVertexAttrib2f;
-    glVertexAttrib2fv;
-    glVertexAttrib3f;
-    glVertexAttrib3fv;
-    glVertexAttrib4f;
-    glVertexAttrib4fv;
-    glVertexAttribPointer;
-    glViewport;
-
-    # Extensions
-    glTexImage3DOES;
-    glBlitFramebufferANGLE;
-    glRenderbufferStorageMultisampleANGLE;
-    glDeleteFencesNV;
-    glFinishFenceNV;
-    glGenFencesNV;
-    glGetFenceivNV;
-    glIsFenceNV;
-    glSetFenceNV;
-    glTestFenceNV;
-    glGetGraphicsResetStatusEXT;
-    glReadnPixelsEXT;
-    glGetnUniformfvEXT;
-    glGetnUniformivEXT;
-    glGenQueriesEXT;
-    glDeleteQueriesEXT;
-    glIsQueryEXT;
-    glBeginQueryEXT;
-    glEndQueryEXT;
-    glGetQueryivEXT;
-    glGetQueryObjectuivEXT;
-
-    # EGL dependencies
-    glCreateContext;
-    glDestroyContext;
-    glMakeCurrent;
-    glGetCurrentContext;
-    glGetProcAddress;
-    glBindTexImage;
-
-    createFrameBuffer;
-    createBackBuffer;
-    createDevice;
-
-    Register;
+	radGetProcAddress;

+

+	eglBindAPI;

+	eglChooseConfig;

+	eglCreateContext;

+	eglCreateWindowSurface;

+	eglGetDisplay;

+	eglGetError;

+	eglGetProcAddress;

+	eglInitialize;

+	eglMakeCurrent;

+	eglTerminate;

+

+	Register;
 
 local:
     *;
diff --git a/src/Radiance/libRAD/libEGL.cbp b/src/Radiance/libRAD/libEGL.cbp
deleted file mode 100644
index 72049bf..0000000
--- a/src/Radiance/libRAD/libEGL.cbp
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
-<CodeBlocks_project_file>
-	<FileVersion major="1" minor="6" />
-	<Project>
-		<Option title="libEGL" />
-		<Option pch_mode="2" />
-		<Option compiler="gcc" />
-		<Build>
-			<Target title="Debug x86">
-				<Option output="./../../bin/x86/Debug/libEGL.so.1" prefix_auto="0" extension_auto="0" />
-				<Option object_output="obj/x86/Debug/" />
-				<Option type="3" />
-				<Option compiler="gcc" />
-				<Option createDefFile="1" />
-				<Option createStaticLib="1" />
-				<Compiler>
-					<Add option="-g" />
-					<Add option="-m32" />
-				</Compiler>
-				<Linker>
-					<Add option="-m32" />
-				</Linker>
-			</Target>
-			<Target title="Release x86">
-				<Option output="./../../bin/x86/Release/libEGL.so.1" prefix_auto="0" extension_auto="0" />
-				<Option object_output="obj/x86/Release/" />
-				<Option type="3" />
-				<Option compiler="gcc" />
-				<Option createDefFile="1" />
-				<Option createStaticLib="1" />
-				<Compiler>
-					<Add option="-O2" />
-					<Add option="-m32" />
-					<Add option="-DNDEBUG" />
-					<Add option="-DANGLE_DISABLE_TRACE" />
-				</Compiler>
-				<Linker>
-					<Add option="-s" />
-					<Add option="-m32" />
-				</Linker>
-			</Target>
-			<Target title="Debug x64">
-				<Option output="./../../bin/x64/Debug/libEGL.so.1" prefix_auto="0" extension_auto="0" />
-				<Option object_output="obj/x64/Debug/" />
-				<Option type="3" />
-				<Option compiler="gcc" />
-				<Option createDefFile="1" />
-				<Option createStaticLib="1" />
-				<Compiler>
-					<Add option="-g" />
-					<Add option="-m64" />
-					<Add option="-fPIC" />
-				</Compiler>
-				<Linker>
-					<Add option="-m64" />
-				</Linker>
-			</Target>
-			<Target title="Release x64">
-				<Option output="./../../bin/x64/Release/libEGL.so.1" prefix_auto="0" extension_auto="0" />
-				<Option object_output="obj/x64/Release/" />
-				<Option type="3" />
-				<Option compiler="gcc" />
-				<Option createDefFile="1" />
-				<Option createStaticLib="1" />
-				<Compiler>
-					<Add option="-march=core2" />
-					<Add option="-O2" />
-					<Add option="-m64" />
-					<Add option="-fPIC" />
-					<Add option="-DNDEBUG" />
-					<Add option="-DANGLE_DISABLE_TRACE" />
-				</Compiler>
-				<Linker>
-					<Add option="-s" />
-					<Add option="-m64" />
-				</Linker>
-			</Target>
-		</Build>
-		<Compiler>
-			<Add option="-Wall" />
-			<Add option="-fexceptions" />
-			<Add directory="./../include/" />
-			<Add directory="./../" />
-			<Add directory="./../../" />
-		</Compiler>
-		<Linker>
-			<Add library="pthread" />
-		</Linker>
-		<Unit filename="../common/debug.cpp" />
-		<Unit filename="./Config.cpp" />
-		<Unit filename="./Config.h" />
-		<Unit filename="./Display.cpp" />
-		<Unit filename="./Display.h" />
-		<Unit filename="./Surface.cpp" />
-		<Unit filename="./Surface.h" />
-		<Unit filename="./libEGL.cpp" />
-		<Unit filename="./main.cpp" />
-		<Unit filename="./main.h" />
-		<Extensions>
-			<code_completion />
-			<debugger />
-		</Extensions>
-	</Project>
-</CodeBlocks_project_file>
diff --git a/src/Radiance/libRAD/libRAD.cbp b/src/Radiance/libRAD/libRAD.cbp
index 651969c..68a0a6f 100644
--- a/src/Radiance/libRAD/libRAD.cbp
+++ b/src/Radiance/libRAD/libRAD.cbp
@@ -1,367 +1,359 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

-<CodeBlocks_project_file>

-	<FileVersion major="1" minor="6" />

-	<Project>

-		<Option title="libRAD" />

-		<Option pch_mode="2" />

-		<Option compiler="gcc" />

-		<Build>

-			<Target title="Debug x86">

-				<Option output="./../../bin/x86/Debug/libRAD.so.2" prefix_auto="0" extension_auto="0" />

-				<Option object_output="obj/x86/Debug/" />

-				<Option type="3" />

-				<Option compiler="gcc" />

-				<Option createDefFile="1" />

-				<Option createStaticLib="1" />

-				<Compiler>

-					<Add option="-g" />

-					<Add option="-m32" />

-				</Compiler>

-				<Linker>

-					<Add option="-m32" />

-					<Add library="./../../LLVM/bin/x86/Debug/libLLVM.a" />

-				</Linker>

-			</Target>

-			<Target title="Release x86">

-				<Option output="./../../bin/x86/Release/libRAD.so.2" prefix_auto="0" extension_auto="0" />

-				<Option object_output="obj/x86/Release/" />

-				<Option type="3" />

-				<Option compiler="gcc" />

-				<Option createDefFile="1" />

-				<Option createStaticLib="1" />

-				<Compiler>

-					<Add option="-march=i686" />

-					<Add option="-fomit-frame-pointer" />

-					<Add option="-O2" />

-					<Add option="-m32" />

-					<Add option="-ffunction-sections" />

-					<Add option="-fdata-sections" />

-					<Add option="-DNDEBUG" />

-					<Add option="-DANGLE_DISABLE_TRACE" />

-				</Compiler>

-				<Linker>

-					<Add option="-s" />

-					<Add option="-m32" />

-					<Add option="-Wl,--gc-sections" />

-					<Add library="./../../LLVM/bin/x86/Release/libLLVM.a" />

-				</Linker>

-			</Target>

-			<Target title="Debug x64">

-				<Option output="./../../bin/x64/Debug/libRAD.so.2" prefix_auto="0" extension_auto="0" />

-				<Option object_output="obj/x64/Debug/" />

-				<Option type="3" />

-				<Option compiler="gcc" />

-				<Option createDefFile="1" />

-				<Option createStaticLib="1" />

-				<Compiler>

-					<Add option="-g" />

-					<Add option="-m64" />

-					<Add option="-fPIC" />

-				</Compiler>

-				<Linker>

-					<Add option="-m64" />

-					<Add library="./../../LLVM/bin/x64/Debug/libLLVM.a" />

-				</Linker>

-			</Target>

-			<Target title="Release x64">

-				<Option output="./../../bin/x64/Release/libRAD.so.2" prefix_auto="0" extension_auto="0" />

-				<Option object_output="obj/x64/Release/" />

-				<Option type="3" />

-				<Option compiler="gcc" />

-				<Option createDefFile="1" />

-				<Option createStaticLib="1" />

-				<Compiler>

-					<Add option="-march=core2" />

-					<Add option="-fomit-frame-pointer" />

-					<Add option="-O2" />

-					<Add option="-m64" />

-					<Add option="-fPIC" />

-					<Add option="-ffunction-sections" />

-					<Add option="-fdata-sections" />

-					<Add option="-DNDEBUG" />

-					<Add option="-DANGLE_DISABLE_TRACE" />

-				</Compiler>

-				<Linker>

-					<Add option="-s" />

-					<Add option="-m64" />

-					<Add option="-Wl,--gc-sections" />

-					<Add library="./../../LLVM/bin/x64/Release/libLLVM.a" />

-				</Linker>

-			</Target>

-		</Build>

-		<Compiler>

-			<Add option="-Wall" />

-			<Add option="-fexceptions" />

-			<Add option="-fno-operator-names" />

-			<Add option="-ffriend-injection" />

-			<Add option="-msse2" />

-			<Add option="-D__STDC_LIMIT_MACROS" />

-			<Add option="-D__STDC_CONSTANT_MACROS" />

-			<Add directory="./../" />

-			<Add directory="./../include/" />

-			<Add directory="./../../" />

-			<Add directory="./../../LLVM/include-linux/" />

-			<Add directory="./../../LLVM/include/" />

-			<Add directory="./../../LLVM/lib/Target/X86" />

-			<Add directory="./../../Renderer/" />

-			<Add directory="./../../Common/" />

-			<Add directory="./../../Shader/" />

-			<Add directory="./../../Main/" />

-		</Compiler>

-		<Linker>

-			<Add option="-Wl,--version-script=./exports.map" />

-			<Add library="pthread" />

-			<Add library="X11" />

-			<Add library="Xext" />

-		</Linker>

-		<Unit filename="./../../Common/CPUID.cpp" />

-		<Unit filename="./../../Common/CPUID.hpp" />

-		<Unit filename="./../../Common/Configurator.cpp" />

-		<Unit filename="./../../Common/Configurator.hpp" />

-		<Unit filename="./../../Common/Debug.cpp" />

-		<Unit filename="./../../Common/Debug.hpp" />

-		<Unit filename="./../../Common/ExceptionHandling.hpp" />

-		<Unit filename="./../../Common/Half.cpp" />

-		<Unit filename="./../../Common/Half.hpp" />

-		<Unit filename="./../../Common/Math.cpp" />

-		<Unit filename="./../../Common/Math.hpp" />

-		<Unit filename="./../../Common/Memory.cpp" />

-		<Unit filename="./../../Common/Memory.hpp" />

-		<Unit filename="./../../Common/MetaMacro.hpp" />

-		<Unit filename="./../../Common/MutexLock.hpp" />

-		<Unit filename="./../../Common/Resource.cpp" />

-		<Unit filename="./../../Common/Resource.hpp" />

-		<Unit filename="./../../Common/Socket.cpp" />

-		<Unit filename="./../../Common/Socket.hpp" />

-		<Unit filename="./../../Common/Thread.cpp" />

-		<Unit filename="./../../Common/Thread.hpp" />

-		<Unit filename="./../../Common/Timer.cpp" />

-		<Unit filename="./../../Common/Timer.hpp" />

-		<Unit filename="./../../Common/Types.hpp" />

-		<Unit filename="./../../Common/Version.h" />

-		<Unit filename="./../common/debug.cpp" />

-		<Unit filename="./../common/debug.h" />

-		<Unit filename="../compiler/AnalyzeCallDepth.cpp" />

-		<Unit filename="../compiler/AnalyzeCallDepth.h" />

-		<Unit filename="../compiler/BaseTypes.h" />

-		<Unit filename="../compiler/Common.h" />

-		<Unit filename="../compiler/Compiler.cpp" />

-		<Unit filename="../compiler/ConstantUnion.h" />

-		<Unit filename="../compiler/Diagnostics.cpp" />

-		<Unit filename="../compiler/Diagnostics.h" />

-		<Unit filename="../compiler/DirectiveHandler.cpp" />

-		<Unit filename="../compiler/DirectiveHandler.h" />

-		<Unit filename="../compiler/ExtensionBehavior.h" />

-		<Unit filename="../compiler/InfoSink.cpp" />

-		<Unit filename="../compiler/InfoSink.h" />

-		<Unit filename="../compiler/Initialize.cpp" />

-		<Unit filename="../compiler/Initialize.h" />

-		<Unit filename="../compiler/InitializeDll.cpp" />

-		<Unit filename="../compiler/InitializeDll.h" />

-		<Unit filename="../compiler/InitializeGlobals.h" />

-		<Unit filename="../compiler/InitializeParseContext.cpp" />

-		<Unit filename="../compiler/InitializeParseContext.h" />

-		<Unit filename="../compiler/IntermTraverse.cpp" />

-		<Unit filename="../compiler/Intermediate.cpp" />

-		<Unit filename="../compiler/MMap.h" />

-		<Unit filename="../compiler/OutputASM.cpp" />

-		<Unit filename="../compiler/OutputASM.h" />

-		<Unit filename="../compiler/ParseHelper.cpp" />

-		<Unit filename="../compiler/ParseHelper.h" />

-		<Unit filename="../compiler/PoolAlloc.cpp" />

-		<Unit filename="../compiler/PoolAlloc.h" />

-		<Unit filename="../compiler/Pragma.h" />

-		<Unit filename="../compiler/RemoveTree.cpp" />

-		<Unit filename="../compiler/RemoveTree.h" />

-		<Unit filename="../compiler/ShHandle.h" />

-		<Unit filename="../compiler/ShaderLang.cpp" />

-		<Unit filename="../compiler/SymbolTable.cpp" />

-		<Unit filename="../compiler/SymbolTable.h" />

-		<Unit filename="../compiler/TranslatorASM.cpp" />

-		<Unit filename="../compiler/TranslatorASM.h" />

-		<Unit filename="../compiler/Types.h" />

-		<Unit filename="../compiler/ValidateLimitations.cpp" />

-		<Unit filename="../compiler/ValidateLimitations.h" />

-		<Unit filename="../compiler/debug.cpp" />

-		<Unit filename="../compiler/debug.h" />

-		<Unit filename="../compiler/glslang.h" />

-		<Unit filename="../compiler/glslang_lex.cpp" />

-		<Unit filename="../compiler/glslang_tab.cpp" />

-		<Unit filename="../compiler/glslang_tab.h" />

-		<Unit filename="../compiler/intermOut.cpp" />

-		<Unit filename="../compiler/intermediate.h" />

-		<Unit filename="../compiler/localintermediate.h" />

-		<Unit filename="../compiler/osinclude.h" />

-		<Unit filename="../compiler/ossource_posix.cpp" />

-		<Unit filename="../compiler/parseConst.cpp" />

-		<Unit filename="../compiler/preprocessor/Diagnostics.cpp" />

-		<Unit filename="../compiler/preprocessor/Diagnostics.h" />

-		<Unit filename="../compiler/preprocessor/DirectiveHandler.cpp" />

-		<Unit filename="../compiler/preprocessor/DirectiveHandler.h" />

-		<Unit filename="../compiler/preprocessor/DirectiveParser.cpp" />

-		<Unit filename="../compiler/preprocessor/DirectiveParser.h" />

-		<Unit filename="../compiler/preprocessor/ExpressionParser.cpp" />

-		<Unit filename="../compiler/preprocessor/ExpressionParser.h" />

-		<Unit filename="../compiler/preprocessor/Input.cpp" />

-		<Unit filename="../compiler/preprocessor/Input.h" />

-		<Unit filename="../compiler/preprocessor/Lexer.cpp" />

-		<Unit filename="../compiler/preprocessor/Lexer.h" />

-		<Unit filename="../compiler/preprocessor/Macro.cpp" />

-		<Unit filename="../compiler/preprocessor/Macro.h" />

-		<Unit filename="../compiler/preprocessor/MacroExpander.cpp" />

-		<Unit filename="../compiler/preprocessor/MacroExpander.h" />

-		<Unit filename="../compiler/preprocessor/Preprocessor.cpp" />

-		<Unit filename="../compiler/preprocessor/Preprocessor.h" />

-		<Unit filename="../compiler/preprocessor/SourceLocation.h" />

-		<Unit filename="../compiler/preprocessor/Token.cpp" />

-		<Unit filename="../compiler/preprocessor/Token.h" />

-		<Unit filename="../compiler/preprocessor/Tokenizer.cpp" />

-		<Unit filename="../compiler/preprocessor/Tokenizer.h" />

-		<Unit filename="../compiler/preprocessor/length_limits.h" />

-		<Unit filename="../compiler/preprocessor/numeric_lex.h" />

-		<Unit filename="../compiler/preprocessor/pp_utils.h" />

-		<Unit filename="../compiler/util.cpp" />

-		<Unit filename="../compiler/util.h" />

-		<Unit filename="./../include/EGL/egl.h" />

-		<Unit filename="./../include/EGL/eglext.h" />

-		<Unit filename="./../include/EGL/eglplatform.h" />

-		<Unit filename="./../include/GLES2/gl2.h" />

-		<Unit filename="./../include/GLES2/gl2ext.h" />

-		<Unit filename="./../include/GLES2/gl2platform.h" />

-		<Unit filename="./../include/GLSLANG/ShaderLang.h" />

-		<Unit filename="./../include/KHR/khrplatform.h" />

-		<Unit filename="./../libRAD/Buffer.cpp" />

-		<Unit filename="./../libRAD/Buffer.h" />

-		<Unit filename="./../libRAD/Context.cpp" />

-		<Unit filename="./../libRAD/Context.h" />

-		<Unit filename="./../libRAD/Device.cpp" />

-		<Unit filename="./../libRAD/Device.hpp" />

-		<Unit filename="./../libRAD/Fence.cpp" />

-		<Unit filename="./../libRAD/Fence.h" />

-		<Unit filename="./../libRAD/Framebuffer.cpp" />

-		<Unit filename="./../libRAD/Framebuffer.h" />

-		<Unit filename="./../libRAD/HandleAllocator.cpp" />

-		<Unit filename="./../libRAD/HandleAllocator.h" />

-		<Unit filename="./../libRAD/Image.cpp" />

-		<Unit filename="./../libRAD/Image.hpp" />

-		<Unit filename="./../libRAD/IndexDataManager.cpp" />

-		<Unit filename="./../libRAD/IndexDataManager.h" />

-		<Unit filename="./../libRAD/Program.cpp" />

-		<Unit filename="./../libRAD/Program.h" />

-		<Unit filename="./../libRAD/Query.cpp" />

-		<Unit filename="./../libRAD/Query.h" />

-		<Unit filename="./../libRAD/RefCountObject.cpp" />

-		<Unit filename="./../libRAD/RefCountObject.h" />

-		<Unit filename="./../libRAD/Renderbuffer.cpp" />

-		<Unit filename="./../libRAD/Renderbuffer.h" />

-		<Unit filename="./../libRAD/ResourceManager.cpp" />

-		<Unit filename="./../libRAD/ResourceManager.h" />

-		<Unit filename="./../libRAD/Shader.cpp" />

-		<Unit filename="./../libRAD/Shader.h" />

-		<Unit filename="./../libRAD/Texture.cpp" />

-		<Unit filename="./../libRAD/Texture.h" />

-		<Unit filename="./../libRAD/Unknown.hpp" />

-		<Unit filename="./../libRAD/VertexDataManager.cpp" />

-		<Unit filename="./../libRAD/VertexDataManager.h" />

-		<Unit filename="./../libRAD/libRAD.cpp" />

-		<Unit filename="./../libRAD/main.cpp" />

-		<Unit filename="./../libRAD/main.h" />

-		<Unit filename="./../libRAD/mathutil.h" />

-		<Unit filename="./../libRAD/resource.h" />

-		<Unit filename="./../libRAD/utilities.cpp" />

-		<Unit filename="./../libRAD/utilities.h" />

-		<Unit filename="./../libRAD/vertexconversion.h" />

-		<Unit filename="./../../Main/Config.cpp" />

-		<Unit filename="./../../Main/Config.hpp" />

-		<Unit filename="./../../Main/FrameBuffer.cpp" />

-		<Unit filename="./../../Main/FrameBuffer.hpp" />

-		<Unit filename="./../../Main/FrameBufferX11.cpp" />

-		<Unit filename="./../../Main/FrameBufferX11.hpp" />

-		<Unit filename="./../../Main/Logo.cpp" />

-		<Unit filename="./../../Main/Register.cpp" />

-		<Unit filename="./../../Main/Register.hpp" />

-		<Unit filename="./../../Main/SwiftConfig.cpp" />

-		<Unit filename="./../../Main/SwiftConfig.hpp" />

-		<Unit filename="./../../Main/crc.c">

-			<Option compilerVar="CC" />

-		</Unit>

-		<Unit filename="./../../Main/crc.h" />

-		<Unit filename="./../../Main/serialcommon.h" />

-		<Unit filename="./../../Main/serialvalid.cpp" />

-		<Unit filename="./../../Main/serialvalid.h" />

-		<Unit filename="./../../Reactor/Routine.cpp" />

-		<Unit filename="./../../Reactor/Routine.hpp" />

-		<Unit filename="./../../Reactor/RoutineManager.cpp" />

-		<Unit filename="./../../Reactor/RoutineManager.hpp" />

-		<Unit filename="./../../Reactor/Nucleus.cpp" />

-		<Unit filename="./../../Reactor/Nucleus.hpp" />

-		<Unit filename="./../../Reactor/Reactor.hpp" />

-		<Unit filename="./../../Reactor/x86.hpp" />

-		<Unit filename="./../../Renderer/Blitter.cpp" />

-		<Unit filename="./../../Renderer/Blitter.hpp" />

-		<Unit filename="./../../Renderer/Clipper.cpp" />

-		<Unit filename="./../../Renderer/Clipper.hpp" />

-		<Unit filename="./../../Renderer/Color.cpp" />

-		<Unit filename="./../../Renderer/Color.hpp" />

-		<Unit filename="./../../Renderer/Context.cpp" />

-		<Unit filename="./../../Renderer/Context.hpp" />

-		<Unit filename="./../../Renderer/LRUCache.hpp" />

-		<Unit filename="./../../Renderer/Matrix.cpp" />

-		<Unit filename="./../../Renderer/Matrix.hpp" />

-		<Unit filename="./../../Renderer/PixelProcessor.cpp" />

-		<Unit filename="./../../Renderer/PixelProcessor.hpp" />

-		<Unit filename="./../../Renderer/Plane.cpp" />

-		<Unit filename="./../../Renderer/Plane.hpp" />

-		<Unit filename="./../../Renderer/Point.cpp" />

-		<Unit filename="./../../Renderer/Point.hpp" />

-		<Unit filename="./../../Renderer/Polygon.hpp" />

-		<Unit filename="./../../Renderer/Primitive.hpp" />

-		<Unit filename="./../../Renderer/QuadRasterizer.cpp" />

-		<Unit filename="./../../Renderer/QuadRasterizer.hpp" />

-		<Unit filename="./../../Renderer/Rasterizer.cpp" />

-		<Unit filename="./../../Renderer/Rasterizer.hpp" />

-		<Unit filename="./../../Renderer/Renderer.cpp" />

-		<Unit filename="./../../Renderer/Renderer.hpp" />

-		<Unit filename="./../../Renderer/Sampler.cpp" />

-		<Unit filename="./../../Renderer/Sampler.hpp" />

-		<Unit filename="./../../Renderer/SetupProcessor.cpp" />

-		<Unit filename="./../../Renderer/SetupProcessor.hpp" />

-		<Unit filename="./../../Renderer/Stream.hpp" />

-		<Unit filename="./../../Renderer/Surface.cpp" />

-		<Unit filename="./../../Renderer/Surface.hpp" />

-		<Unit filename="./../../Renderer/TextureStage.cpp" />

-		<Unit filename="./../../Renderer/TextureStage.hpp" />

-		<Unit filename="./../../Renderer/Triangle.hpp" />

-		<Unit filename="./../../Renderer/Vector.cpp" />

-		<Unit filename="./../../Renderer/Vector.hpp" />

-		<Unit filename="./../../Renderer/Vertex.hpp" />

-		<Unit filename="./../../Renderer/VertexProcessor.cpp" />

-		<Unit filename="./../../Renderer/VertexProcessor.hpp" />

-		<Unit filename="./../../Shader/Constants.cpp" />

-		<Unit filename="./../../Shader/Constants.hpp" />

-		<Unit filename="./../../Shader/PixelRoutine.cpp" />

-		<Unit filename="./../../Shader/PixelRoutine.hpp" />

-		<Unit filename="./../../Shader/PixelShader.cpp" />

-		<Unit filename="./../../Shader/PixelShader.hpp" />

-		<Unit filename="./../../Shader/SamplerCore.cpp" />

-		<Unit filename="./../../Shader/SamplerCore.hpp" />

-		<Unit filename="./../../Shader/SetupRoutine.cpp" />

-		<Unit filename="./../../Shader/SetupRoutine.hpp" />

-		<Unit filename="./../../Shader/Shader.cpp" />

-		<Unit filename="./../../Shader/Shader.hpp" />

-		<Unit filename="./../../Shader/ShaderCore.cpp" />

-		<Unit filename="./../../Shader/ShaderCore.hpp" />

-		<Unit filename="./../../Shader/VertexPipeline.cpp" />

-		<Unit filename="./../../Shader/VertexPipeline.hpp" />

-		<Unit filename="./../../Shader/VertexProgram.cpp" />

-		<Unit filename="./../../Shader/VertexProgram.hpp" />

-		<Unit filename="./../../Shader/VertexRoutine.cpp" />

-		<Unit filename="./../../Shader/VertexRoutine.hpp" />

-		<Unit filename="./../../Shader/VertexShader.cpp" />

-		<Unit filename="./../../Shader/VertexShader.hpp" />

-		<Extensions>

-			<code_completion />

-			<debugger />

-		</Extensions>

-	</Project>

-</CodeBlocks_project_file>

+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="6" />
+	<Project>
+		<Option title="libRAD" />
+		<Option pch_mode="2" />
+		<Option compiler="clang" />
+		<Build>
+			<Target title="Debug x86">
+				<Option output="./../../../lib/Debug_x86/libRAD.so" prefix_auto="0" extension_auto="0" />
+				<Option object_output="obj/x86/Debug/" />
+				<Option type="3" />
+				<Option compiler="clang" />
+				<Option createDefFile="1" />
+				<Option createStaticLib="1" />
+				<Compiler>
+					<Add option="-g" />
+					<Add option="-m32" />
+				</Compiler>
+				<Linker>
+					<Add option="-m32" />
+					<Add library="./../../LLVM/bin/x86/Debug/libLLVM.a" />
+				</Linker>
+			</Target>
+			<Target title="Release x86">
+				<Option output="./../../../lib/Release_x86/libRAD.so" prefix_auto="0" extension_auto="0" />
+				<Option object_output="obj/x86/Release/" />
+				<Option type="3" />
+				<Option compiler="clang" />
+				<Option createDefFile="1" />
+				<Option createStaticLib="1" />
+				<Compiler>
+					<Add option="-march=i686" />
+					<Add option="-fomit-frame-pointer" />
+					<Add option="-O2" />
+					<Add option="-m32" />
+					<Add option="-ffunction-sections" />
+					<Add option="-fdata-sections" />
+					<Add option="-DNDEBUG" />
+					<Add option="-DANGLE_DISABLE_TRACE" />
+				</Compiler>
+				<Linker>
+					<Add option="-s" />
+					<Add option="-m32" />
+					<Add option="-Wl,--gc-sections" />
+					<Add library="./../../LLVM/bin/x86/Release/libLLVM.a" />
+				</Linker>
+			</Target>
+			<Target title="Debug x64">
+				<Option output="./../../../lib/Debug_x64/libRAD.so" prefix_auto="0" extension_auto="0" />
+				<Option object_output="obj/x64/Debug/" />
+				<Option type="3" />
+				<Option compiler="clang" />
+				<Option createDefFile="1" />
+				<Option createStaticLib="1" />
+				<Compiler>
+					<Add option="-g" />
+					<Add option="-m64" />
+					<Add option="-fPIC" />
+				</Compiler>
+				<Linker>
+					<Add option="-m64" />
+					<Add library="./../../LLVM/bin/x64/Debug/libLLVM.a" />
+				</Linker>
+			</Target>
+			<Target title="Release x64">
+				<Option output="./../../../lib/Release_x64/libRAD.so" prefix_auto="0" extension_auto="0" />
+				<Option object_output="obj/x64/Release/" />
+				<Option type="3" />
+				<Option compiler="clang" />
+				<Option createDefFile="1" />
+				<Option createStaticLib="1" />
+				<Compiler>
+					<Add option="-march=core2" />
+					<Add option="-fomit-frame-pointer" />
+					<Add option="-O2" />
+					<Add option="-m64" />
+					<Add option="-fPIC" />
+					<Add option="-ffunction-sections" />
+					<Add option="-fdata-sections" />
+					<Add option="-DNDEBUG" />
+					<Add option="-DANGLE_DISABLE_TRACE" />
+				</Compiler>
+				<Linker>
+					<Add option="-s" />
+					<Add option="-m64" />
+					<Add option="-Wl,--gc-sections" />
+					<Add library="./../../LLVM/bin/x64/Release/libLLVM.a" />
+				</Linker>
+			</Target>
+		</Build>
+		<Compiler>
+			<Add option="-Wall" />
+			<Add option="-std=c++11" />
+			<Add option="-fexceptions" />
+			<Add option="-fno-operator-names" />
+			<Add option="-msse2" />
+			<Add option="-D__STDC_LIMIT_MACROS" />
+			<Add option="-D__STDC_CONSTANT_MACROS" />
+			<Add directory="./../" />
+			<Add directory="./../include/" />
+			<Add directory="./../../" />
+			<Add directory="./../../LLVM/include-linux/" />
+			<Add directory="./../../LLVM/include/" />
+			<Add directory="./../../LLVM/lib/Target/X86" />
+			<Add directory="./../../Renderer/" />
+			<Add directory="./../../Common/" />
+			<Add directory="./../../Shader/" />
+			<Add directory="./../../Main/" />
+		</Compiler>
+		<Linker>
+			<Add option="-Wl,--version-script=./exports.map" />
+			<Add library="pthread" />
+			<Add library="X11" />
+			<Add library="Xext" />
+		</Linker>
+		<Unit filename="../../Common/CPUID.cpp" />
+		<Unit filename="../../Common/CPUID.hpp" />
+		<Unit filename="../../Common/Configurator.cpp" />
+		<Unit filename="../../Common/Configurator.hpp" />
+		<Unit filename="../../Common/Debug.cpp" />
+		<Unit filename="../../Common/Debug.hpp" />
+		<Unit filename="../../Common/ExceptionHandling.hpp" />
+		<Unit filename="../../Common/Half.cpp" />
+		<Unit filename="../../Common/Half.hpp" />
+		<Unit filename="../../Common/Math.cpp" />
+		<Unit filename="../../Common/Math.hpp" />
+		<Unit filename="../../Common/Memory.cpp" />
+		<Unit filename="../../Common/Memory.hpp" />
+		<Unit filename="../../Common/MetaMacro.hpp" />
+		<Unit filename="../../Common/MutexLock.hpp" />
+		<Unit filename="../../Common/Resource.cpp" />
+		<Unit filename="../../Common/Resource.hpp" />
+		<Unit filename="../../Common/Socket.cpp" />
+		<Unit filename="../../Common/Socket.hpp" />
+		<Unit filename="../../Common/Thread.cpp" />
+		<Unit filename="../../Common/Thread.hpp" />
+		<Unit filename="../../Common/Timer.cpp" />
+		<Unit filename="../../Common/Timer.hpp" />
+		<Unit filename="../../Common/Types.hpp" />
+		<Unit filename="../../Common/Version.h" />
+		<Unit filename="../../Main/Config.cpp" />
+		<Unit filename="../../Main/Config.hpp" />
+		<Unit filename="../../Main/FrameBuffer.cpp" />
+		<Unit filename="../../Main/FrameBuffer.hpp" />
+		<Unit filename="../../Main/FrameBufferX11.cpp" />
+		<Unit filename="../../Main/FrameBufferX11.hpp" />
+		<Unit filename="../../Main/Logo.cpp" />
+		<Unit filename="../../Main/Register.cpp" />
+		<Unit filename="../../Main/Register.hpp" />
+		<Unit filename="../../Main/SwiftConfig.cpp" />
+		<Unit filename="../../Main/SwiftConfig.hpp" />
+		<Unit filename="../../Main/crc.cpp" />
+		<Unit filename="../../Main/crc.h" />
+		<Unit filename="../../Main/serialcommon.h" />
+		<Unit filename="../../Main/serialvalid.cpp" />
+		<Unit filename="../../Main/serialvalid.h" />
+		<Unit filename="../../Reactor/Nucleus.cpp" />
+		<Unit filename="../../Reactor/Nucleus.hpp" />
+		<Unit filename="../../Reactor/Reactor.hpp" />
+		<Unit filename="../../Reactor/Routine.cpp" />
+		<Unit filename="../../Reactor/Routine.hpp" />
+		<Unit filename="../../Reactor/RoutineManager.cpp" />
+		<Unit filename="../../Reactor/RoutineManager.hpp" />
+		<Unit filename="../../Reactor/x86.hpp" />
+		<Unit filename="../../Renderer/Blitter.cpp" />
+		<Unit filename="../../Renderer/Blitter.hpp" />
+		<Unit filename="../../Renderer/Clipper.cpp" />
+		<Unit filename="../../Renderer/Clipper.hpp" />
+		<Unit filename="../../Renderer/Color.cpp" />
+		<Unit filename="../../Renderer/Color.hpp" />
+		<Unit filename="../../Renderer/Context.cpp" />
+		<Unit filename="../../Renderer/Context.hpp" />
+		<Unit filename="../../Renderer/LRUCache.hpp" />
+		<Unit filename="../../Renderer/Matrix.cpp" />
+		<Unit filename="../../Renderer/Matrix.hpp" />
+		<Unit filename="../../Renderer/PixelProcessor.cpp" />
+		<Unit filename="../../Renderer/PixelProcessor.hpp" />
+		<Unit filename="../../Renderer/Plane.cpp" />
+		<Unit filename="../../Renderer/Plane.hpp" />
+		<Unit filename="../../Renderer/Point.cpp" />
+		<Unit filename="../../Renderer/Point.hpp" />
+		<Unit filename="../../Renderer/Polygon.hpp" />
+		<Unit filename="../../Renderer/Primitive.hpp" />
+		<Unit filename="../../Renderer/QuadRasterizer.cpp" />
+		<Unit filename="../../Renderer/QuadRasterizer.hpp" />
+		<Unit filename="../../Renderer/Rasterizer.cpp" />
+		<Unit filename="../../Renderer/Rasterizer.hpp" />
+		<Unit filename="../../Renderer/Renderer.cpp" />
+		<Unit filename="../../Renderer/Renderer.hpp" />
+		<Unit filename="../../Renderer/Sampler.cpp" />
+		<Unit filename="../../Renderer/Sampler.hpp" />
+		<Unit filename="../../Renderer/SetupProcessor.cpp" />
+		<Unit filename="../../Renderer/SetupProcessor.hpp" />
+		<Unit filename="../../Renderer/Stream.hpp" />
+		<Unit filename="../../Renderer/Surface.cpp" />
+		<Unit filename="../../Renderer/Surface.hpp" />
+		<Unit filename="../../Renderer/TextureStage.cpp" />
+		<Unit filename="../../Renderer/TextureStage.hpp" />
+		<Unit filename="../../Renderer/Triangle.hpp" />
+		<Unit filename="../../Renderer/Vector.cpp" />
+		<Unit filename="../../Renderer/Vector.hpp" />
+		<Unit filename="../../Renderer/Vertex.hpp" />
+		<Unit filename="../../Renderer/VertexProcessor.cpp" />
+		<Unit filename="../../Renderer/VertexProcessor.hpp" />
+		<Unit filename="../../Shader/Constants.cpp" />
+		<Unit filename="../../Shader/Constants.hpp" />
+		<Unit filename="../../Shader/PixelRoutine.cpp" />
+		<Unit filename="../../Shader/PixelRoutine.hpp" />
+		<Unit filename="../../Shader/PixelShader.cpp" />
+		<Unit filename="../../Shader/PixelShader.hpp" />
+		<Unit filename="../../Shader/SamplerCore.cpp" />
+		<Unit filename="../../Shader/SamplerCore.hpp" />
+		<Unit filename="../../Shader/SetupRoutine.cpp" />
+		<Unit filename="../../Shader/SetupRoutine.hpp" />
+		<Unit filename="../../Shader/Shader.cpp" />
+		<Unit filename="../../Shader/Shader.hpp" />
+		<Unit filename="../../Shader/ShaderCore.cpp" />
+		<Unit filename="../../Shader/ShaderCore.hpp" />
+		<Unit filename="../../Shader/VertexPipeline.cpp" />
+		<Unit filename="../../Shader/VertexPipeline.hpp" />
+		<Unit filename="../../Shader/VertexProgram.cpp" />
+		<Unit filename="../../Shader/VertexProgram.hpp" />
+		<Unit filename="../../Shader/VertexRoutine.cpp" />
+		<Unit filename="../../Shader/VertexRoutine.hpp" />
+		<Unit filename="../../Shader/VertexShader.cpp" />
+		<Unit filename="../../Shader/VertexShader.hpp" />
+		<Unit filename="../common/debug.cpp" />
+		<Unit filename="../common/debug.h" />
+		<Unit filename="../compiler/AnalyzeCallDepth.cpp" />
+		<Unit filename="../compiler/AnalyzeCallDepth.h" />
+		<Unit filename="../compiler/BaseTypes.h" />
+		<Unit filename="../compiler/Common.h" />
+		<Unit filename="../compiler/Compiler.cpp" />
+		<Unit filename="../compiler/ConstantUnion.h" />
+		<Unit filename="../compiler/Diagnostics.cpp" />
+		<Unit filename="../compiler/Diagnostics.h" />
+		<Unit filename="../compiler/DirectiveHandler.cpp" />
+		<Unit filename="../compiler/DirectiveHandler.h" />
+		<Unit filename="../compiler/ExtensionBehavior.h" />
+		<Unit filename="../compiler/InfoSink.cpp" />
+		<Unit filename="../compiler/InfoSink.h" />
+		<Unit filename="../compiler/Initialize.cpp" />
+		<Unit filename="../compiler/Initialize.h" />
+		<Unit filename="../compiler/InitializeDll.cpp" />
+		<Unit filename="../compiler/InitializeDll.h" />
+		<Unit filename="../compiler/InitializeGlobals.h" />
+		<Unit filename="../compiler/InitializeParseContext.cpp" />
+		<Unit filename="../compiler/InitializeParseContext.h" />
+		<Unit filename="../compiler/IntermTraverse.cpp" />
+		<Unit filename="../compiler/Intermediate.cpp" />
+		<Unit filename="../compiler/MMap.h" />
+		<Unit filename="../compiler/OutputASM.cpp" />
+		<Unit filename="../compiler/OutputASM.h" />
+		<Unit filename="../compiler/ParseHelper.cpp" />
+		<Unit filename="../compiler/ParseHelper.h" />
+		<Unit filename="../compiler/PoolAlloc.cpp" />
+		<Unit filename="../compiler/PoolAlloc.h" />
+		<Unit filename="../compiler/Pragma.h" />
+		<Unit filename="../compiler/ShHandle.h" />
+		<Unit filename="../compiler/ShaderLang.cpp" />
+		<Unit filename="../compiler/SymbolTable.cpp" />
+		<Unit filename="../compiler/SymbolTable.h" />
+		<Unit filename="../compiler/TranslatorASM.cpp" />
+		<Unit filename="../compiler/TranslatorASM.h" />
+		<Unit filename="../compiler/Types.h" />
+		<Unit filename="../compiler/ValidateLimitations.cpp" />
+		<Unit filename="../compiler/ValidateLimitations.h" />
+		<Unit filename="../compiler/debug.cpp" />
+		<Unit filename="../compiler/debug.h" />
+		<Unit filename="../compiler/glslang.h" />
+		<Unit filename="../compiler/glslang_lex.cpp" />
+		<Unit filename="../compiler/glslang_tab.cpp" />
+		<Unit filename="../compiler/glslang_tab.h" />
+		<Unit filename="../compiler/intermOut.cpp" />
+		<Unit filename="../compiler/intermediate.h" />
+		<Unit filename="../compiler/localintermediate.h" />
+		<Unit filename="../compiler/osinclude.h" />
+		<Unit filename="../compiler/ossource_posix.cpp" />
+		<Unit filename="../compiler/parseConst.cpp" />
+		<Unit filename="../compiler/preprocessor/Diagnostics.cpp" />
+		<Unit filename="../compiler/preprocessor/Diagnostics.h" />
+		<Unit filename="../compiler/preprocessor/DirectiveHandler.cpp" />
+		<Unit filename="../compiler/preprocessor/DirectiveHandler.h" />
+		<Unit filename="../compiler/preprocessor/DirectiveParser.cpp" />
+		<Unit filename="../compiler/preprocessor/DirectiveParser.h" />
+		<Unit filename="../compiler/preprocessor/ExpressionParser.cpp" />
+		<Unit filename="../compiler/preprocessor/ExpressionParser.h" />
+		<Unit filename="../compiler/preprocessor/Input.cpp" />
+		<Unit filename="../compiler/preprocessor/Input.h" />
+		<Unit filename="../compiler/preprocessor/Lexer.cpp" />
+		<Unit filename="../compiler/preprocessor/Lexer.h" />
+		<Unit filename="../compiler/preprocessor/Macro.cpp" />
+		<Unit filename="../compiler/preprocessor/Macro.h" />
+		<Unit filename="../compiler/preprocessor/MacroExpander.cpp" />
+		<Unit filename="../compiler/preprocessor/MacroExpander.h" />
+		<Unit filename="../compiler/preprocessor/Preprocessor.cpp" />
+		<Unit filename="../compiler/preprocessor/Preprocessor.h" />
+		<Unit filename="../compiler/preprocessor/SourceLocation.h" />
+		<Unit filename="../compiler/preprocessor/Token.cpp" />
+		<Unit filename="../compiler/preprocessor/Token.h" />
+		<Unit filename="../compiler/preprocessor/Tokenizer.cpp" />
+		<Unit filename="../compiler/preprocessor/Tokenizer.h" />
+		<Unit filename="../compiler/preprocessor/length_limits.h" />
+		<Unit filename="../compiler/preprocessor/numeric_lex.h" />
+		<Unit filename="../compiler/preprocessor/pp_utils.h" />
+		<Unit filename="../compiler/util.cpp" />
+		<Unit filename="../compiler/util.h" />
+		<Unit filename="../include/EGL/egl.h" />
+		<Unit filename="../include/EGL/eglext.h" />
+		<Unit filename="../include/EGL/eglplatform.h" />
+		<Unit filename="../include/GLES/egl.h" />
+		<Unit filename="../include/GLES/gl.h" />
+		<Unit filename="../include/GLES/glext.h" />
+		<Unit filename="../include/GLES/glplatform.h" />
+		<Unit filename="../include/GLES2/gl2.h" />
+		<Unit filename="../include/GLES2/gl2ext.h" />
+		<Unit filename="../include/GLES2/gl2platform.h" />
+		<Unit filename="../include/GLSLANG/ShaderLang.h" />
+		<Unit filename="../include/KHR/khrplatform.h" />
+		<Unit filename="../include/RAD/rad.h" />
+		<Unit filename="Config.cpp" />
+		<Unit filename="Config.h" />
+		<Unit filename="Context.cpp" />
+		<Unit filename="Context.h" />
+		<Unit filename="Context.hpp" />
+		<Unit filename="Device.cpp" />
+		<Unit filename="Device.hpp" />
+		<Unit filename="Display.cpp" />
+		<Unit filename="Display.h" />
+		<Unit filename="Fence.cpp" />
+		<Unit filename="Fence.h" />
+		<Unit filename="Image.cpp" />
+		<Unit filename="Image.hpp" />
+		<Unit filename="ImageEGL.hpp" />
+		<Unit filename="Program.cpp" />
+		<Unit filename="Program.h" />
+		<Unit filename="Shader.cpp" />
+		<Unit filename="Shader.h" />
+		<Unit filename="Surface.cpp" />
+		<Unit filename="Surface.h" />
+		<Unit filename="Texture.cpp" />
+		<Unit filename="Texture.h" />
+		<Unit filename="Texture2D.hpp" />
+		<Unit filename="exports.map" />
+		<Unit filename="libEGL.cpp" />
+		<Unit filename="libRAD.cpp" />
+		<Unit filename="main.cpp" />
+		<Unit filename="main.h" />
+		<Unit filename="mainEGL.h" />
+		<Unit filename="mathutil.h" />
+		<Unit filename="utilities.cpp" />
+		<Unit filename="utilities.h" />
+		<Extensions>
+			<code_completion />
+			<debugger />
+		</Extensions>
+	</Project>
+</CodeBlocks_project_file>
diff --git a/src/SwiftShader.workspace b/src/SwiftShader.workspace
index bceebc3..cc2679f 100644
--- a/src/SwiftShader.workspace
+++ b/src/SwiftShader.workspace
@@ -13,5 +13,11 @@
 			<Depends filename="OpenGL/libEGL/libEGL.cbp" />
 			<Depends filename="OpenGL/libGLESv2/libGLESv2.cbp" />
 		</Project>
+		<Project filename="Radiance/libRAD/libRAD.cbp">
+			<Depends filename="LLVM/LLVM.cbp" />
+		</Project>
+		<Project filename="../tests/HelloRAD/rad.cbp">
+			<Depends filename="Radiance/libRAD/libRAD.cbp" />
+		</Project>
 	</Workspace>
 </CodeBlocks_workspace_file>
diff --git a/tests/HelloRAD/rad.cbp b/tests/HelloRAD/rad.cbp
new file mode 100644
index 0000000..4b201ed
--- /dev/null
+++ b/tests/HelloRAD/rad.cbp
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="6" />
+	<Project>
+		<Option title="rad" />
+		<Option pch_mode="2" />
+		<Option compiler="clang" />
+		<Build>
+			<Target title="Debug x86">
+				<Option output="rad" prefix_auto="1" extension_auto="1" />
+				<Option working_dir="../../lib/Debug_x86" />
+				<Option object_output="obj/Debug_x86" />
+				<Option type="1" />
+				<Option compiler="clang" />
+				<Compiler>
+					<Add option="-g" />
+					<Add option="-m32" />
+				</Compiler>
+				<Linker>
+					<Add option="-m32" />
+					<Add directory="../../lib/Debug_x86" />
+				</Linker>
+			</Target>
+			<Target title="Release x86">
+				<Option output="rad" prefix_auto="1" extension_auto="1" />
+				<Option working_dir="../../lib/Release_x86" />
+				<Option object_output="obj/Release_x86" />
+				<Option type="1" />
+				<Option compiler="clang" />
+				<Compiler>
+					<Add option="-O2" />
+					<Add option="-m32" />
+					<Add option="-DNDEBUG" />
+					<Add option="-DANGLE_DISABLE_TRACE" />
+					<Add directory="./src/GL" />
+				</Compiler>
+				<ResourceCompiler>
+					<Add directory="./src/GL" />
+				</ResourceCompiler>
+				<Linker>
+					<Add option="-s" />
+					<Add option="-m32" />
+					<Add directory="../../lib/Release_x86" />
+				</Linker>
+			</Target>
+			<Target title="Debug x64">
+				<Option output="rad" prefix_auto="1" extension_auto="1" />
+				<Option working_dir="../../lib/Debug_x64" />
+				<Option object_output="obj/Debug_x64" />
+				<Option type="1" />
+				<Option compiler="clang" />
+				<Compiler>
+					<Add option="-g" />
+					<Add option="-m64" />
+				</Compiler>
+				<Linker>
+					<Add option="-m64" />
+					<Add directory="../../lib/Debug_x64" />
+				</Linker>
+			</Target>
+			<Target title="Release x64">
+				<Option output="rad" prefix_auto="1" extension_auto="1" />
+				<Option working_dir="../../lib/Release_x64" />
+				<Option object_output="obj/Release_x64" />
+				<Option type="1" />
+				<Option compiler="clang" />
+				<Compiler>
+					<Add option="-O2" />
+					<Add option="-march=core2" />
+					<Add option="-m64" />
+					<Add option="-fPIC" />
+					<Add option="-DNDEBUG" />
+					<Add option="-DANGLE_DISABLE_TRACE" />
+					<Add directory="./src/GL" />
+				</Compiler>
+				<ResourceCompiler>
+					<Add directory="./src/GL" />
+				</ResourceCompiler>
+				<Linker>
+					<Add option="-s" />
+					<Add option="-m64" />
+					<Add directory="../../lib/Release_x64" />
+				</Linker>
+			</Target>
+		</Build>
+		<Compiler>
+			<Add option="-Wall" />
+			<Add option="-fexceptions" />
+			<Add directory="./src/include/" />
+		</Compiler>
+		<Linker>
+			<Add library="X11" />
+			<Add library="RAD" />
+		</Linker>
+		<Unit filename="src/app/rad_LinuxX11.cpp" />
+		<Unit filename="src/app/radexample.cpp" />
+		<Unit filename="src/app/radfnptrinit.c">
+			<Option compilerVar="CC" />
+		</Unit>
+		<Unit filename="src/app/radfnptrinit.h" />
+		<Unit filename="src/include/RAD/rad.h" />
+		<Extensions>
+			<code_completion />
+			<debugger />
+		</Extensions>
+	</Project>
+</CodeBlocks_project_file>
diff --git a/tests/HelloRAD/src/app/rad_LinuxX11.cpp b/tests/HelloRAD/src/app/rad_LinuxX11.cpp
new file mode 100644
index 0000000..b077549
--- /dev/null
+++ b/tests/HelloRAD/src/app/rad_LinuxX11.cpp
@@ -0,0 +1,511 @@
+/*******************************************************************************************************************************************
+
+ @File         rad_LinuxX11.cpp
+
+ @Title        Radiance HelloAPI Tutorial
+
+ @Version
+
+ @Copyright    Copyright (c) Imagination Technologies Limited.
+
+ @Platform
+
+ @Description  Basic Tutorial that shows step-by-step how to initialize Radiance, use it for drawing a triangle and terminate it.
+               Entry Point: main
+
+*******************************************************************************************************************************************/
+/*******************************************************************************************************************************************
+ Include Files
+*******************************************************************************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "X11/Xlib.h"
+#include "X11/Xutil.h"
+
+#include <EGL/egl.h>
+#include "RAD/rad.h"
+
+/*******************************************************************************************************************************************
+ Defines
+*******************************************************************************************************************************************/
+// Name of the application
+#define APPLICATION_NAME "HelloAPI"
+
+// Width and height of the window
+#define WINDOW_WIDTH	500
+#define WINDOW_HEIGHT	500
+
+// Index to bind the attributes to vertex shaders
+#define VERTEX_ARRAY	0
+
+/*******************************************************************************************************************************************
+ Helper Functions
+*******************************************************************************************************************************************/
+
+/*!*****************************************************************************************************************************************
+ @Function		TestEGLError
+ @Input			functionLastCalled          Function which triggered the error
+ @Return		True if no EGL error was detected
+ @Description	Tests for an EGL error and prints it.
+*******************************************************************************************************************************************/
+bool TestEGLError(const char* functionLastCalled)
+{
+	/*	eglGetError returns the last error that occurred using EGL, not necessarily the status of the last called function. The user has to
+		check after every single EGL call or at least once every frame. Usually this would be for debugging only, but for this example
+		it is enabled always.
+	*/
+	EGLint lastError = eglGetError();
+	if (lastError != EGL_SUCCESS)
+	{
+		printf("%s failed (%x).\n", functionLastCalled, lastError);
+		return false;
+	}
+
+	return true;
+}
+
+/*!*****************************************************************************************************************************************
+ @Function		HandleX11Errors
+ @Input			nativeDisplay               Handle to the display
+ @Input			error                       The error event to handle
+ @Return		Result code to send to the X window system
+ @Description	Processes event messages for the main window
+*******************************************************************************************************************************************/
+int HandleX11Errors(Display *nativeDisplay, XErrorEvent *error)
+{
+	// Get the X Error
+	char errorStringBuffer[256];
+	XGetErrorText(nativeDisplay, error->error_code, errorStringBuffer, 256);
+
+	// Print the error
+	printf("%s", errorStringBuffer);
+
+	// Exit the application
+	exit(-1);
+
+	return 0;
+}
+
+/*******************************************************************************************************************************************
+ Application Functions
+*******************************************************************************************************************************************/
+
+/*!*****************************************************************************************************************************************
+ @Function		CreateNativeDisplay
+ @Output		nativeDisplay				Native display to create
+ @Return		Whether the function succeeded or not.
+ @Description	Creates a native isplay for the application to render into.
+*******************************************************************************************************************************************/
+bool CreateNativeDisplay(Display** nativeDisplay)
+{
+	// Check for a valid display
+	if (!nativeDisplay)
+	{
+		return false;
+	}
+
+	// Open the display
+	*nativeDisplay = XOpenDisplay( 0 );
+	if (!*nativeDisplay)
+	{
+		printf("Error: Unable to open X display\n");
+		return false;
+	}
+
+	return true;
+}
+
+/*!*****************************************************************************************************************************************
+ @Function		CreateNativeWindow
+ @Input			nativeDisplay				Native display used by the application
+ @Output		nativeWindow			    Native window type to create
+ @Return		Whether the function succeeded or not.
+ @Description	Creates a native window for the application to render into.
+*******************************************************************************************************************************************/
+bool CreateNativeWindow(Display* nativeDisplay, Window* nativeWindow)
+{
+	// Get the default screen for the display
+	int defaultScreen = XDefaultScreen(nativeDisplay);
+
+	// Get the default depth of the display
+	int defaultDepth = DefaultDepth(nativeDisplay, defaultScreen);
+
+	// Select a visual info
+	XVisualInfo* visualInfo = new XVisualInfo;
+	XMatchVisualInfo( nativeDisplay, defaultScreen, defaultDepth, TrueColor, visualInfo);
+	if (!visualInfo)
+	{
+		printf("Error: Unable to acquire visual\n");
+		return false;
+	}
+
+	// Get the root window for the display and default screen
+	Window rootWindow = RootWindow(nativeDisplay, defaultScreen);
+
+	// Create a colour map from the display, root window and visual info
+	Colormap colourMap = XCreateColormap(nativeDisplay, rootWindow, visualInfo->visual, AllocNone);
+
+	// Now setup the final window by specifying some attributes
+	XSetWindowAttributes windowAttributes;
+
+	// Set the colour map that was just created
+	windowAttributes.colormap = colourMap;
+
+	// Set events that will be handled by the app, add to these for other events.
+	windowAttributes.event_mask = StructureNotifyMask | ExposureMask | ButtonPressMask;
+
+	// Create the window
+	*nativeWindow =XCreateWindow(nativeDisplay,               // The display used to create the window
+	                             rootWindow,                   // The parent (root) window - the desktop
+						  		 0,                            // The horizontal (x) origin of the window
+								 0,                            // The vertical (y) origin of the window
+								 WINDOW_WIDTH,                 // The width of the window
+								 WINDOW_HEIGHT,                // The height of the window
+								 0,                            // Border size - set it to zero
+	                             visualInfo->depth,            // Depth from the visual info
+								 InputOutput,                  // Window type - this specifies InputOutput.
+								 visualInfo->visual,           // Visual to use
+								 CWEventMask | CWColormap,     // Mask specifying these have been defined in the window attributes
+								 &windowAttributes);           // Pointer to the window attribute structure
+
+	// Make the window viewable by mapping it to the display
+	XMapWindow(nativeDisplay, *nativeWindow);
+
+	// Set the window title
+	XStoreName(nativeDisplay, *nativeWindow, APPLICATION_NAME);
+
+	// Setup the window manager protocols to handle window deletion events
+	Atom windowManagerDelete = XInternAtom(nativeDisplay, "WM_DELETE_WINDOW", True);
+	XSetWMProtocols(nativeDisplay, *nativeWindow, &windowManagerDelete , 1);
+
+	// Delete the visual info
+	delete visualInfo;
+
+	return true;
+}
+
+/*!*****************************************************************************************************************************************
+ @Function		CreateEGLDisplay
+ @Input			nativeDisplay               The native display used by the application
+ @Output		eglDisplay				    EGLDisplay created from nativeDisplay
+ @Return		Whether the function succeeded or not.
+ @Description	Creates an EGLDisplay from a native native display, and initialises it.
+*******************************************************************************************************************************************/
+bool CreateEGLDisplay( Display* nativeDisplay, EGLDisplay &eglDisplay )
+{
+	/*	Get an EGL display.
+		EGL uses the concept of a "display" which in most environments corresponds to a single physical screen. After creating a native
+		display for a given windowing system, EGL can use this handle to get a corresponding EGLDisplay handle to it for use in rendering.
+		Should this fail, EGL is usually able to provide access to a default display.
+	*/
+	eglDisplay = eglGetDisplay((EGLNativeDisplayType)nativeDisplay);
+	// If a display couldn't be obtained, return an error.
+	if (eglDisplay == EGL_NO_DISPLAY)
+	{
+		printf("Failed to get an EGLDisplay");
+		return false;
+	}
+
+	/*	Initialize EGL.
+		EGL has to be initialized with the display obtained in the previous step. All EGL functions other than eglGetDisplay
+		and eglGetError need an initialised EGLDisplay.
+		If an application is not interested in the EGL version number it can just pass NULL for the second and third parameters, but they
+		are queried here for illustration purposes.
+	*/
+	EGLint eglMajorVersion, eglMinorVersion;
+	if (!eglInitialize(eglDisplay, &eglMajorVersion, &eglMinorVersion))
+	{
+		printf("Failed to initialise the EGLDisplay");
+		return false;
+	}
+
+	return true;
+}
+
+/*!*****************************************************************************************************************************************
+ @Function		ChooseEGLConfig
+ @Input			eglDisplay                  The EGLDisplay used by the application
+ @Output		eglConfig                   The EGLConfig chosen by the function
+ @Return		Whether the function succeeded or not.
+ @Description	Chooses an appropriate EGLConfig and return it.
+*******************************************************************************************************************************************/
+bool ChooseEGLConfig( EGLDisplay eglDisplay, EGLConfig& eglConfig )
+{
+	/*	Specify the required configuration attributes.
+		An EGL "configuration" describes the capabilities an application requires and the type of surfaces that can be used for drawing.
+		Each implementation exposes a number of different configurations, and an application needs to describe to EGL what capabilities it
+		requires so that an appropriate one can be chosen. The first step in doing this is to create an attribute list, which is an array
+		of key/value pairs which describe particular capabilities requested. In this application nothing special is required so we can query
+		the minimum of needing it to render to a window, and being OpenGL ES 2.0 capable.
+	*/
+	const EGLint configurationAttributes[] =
+	{
+		EGL_SURFACE_TYPE,		EGL_WINDOW_BIT,
+		EGL_RENDERABLE_TYPE,	EGL_OPENGL_ES2_BIT,
+		EGL_NONE
+	};
+
+	/*	Find a suitable EGLConfig
+		eglChooseConfig is provided by EGL to provide an easy way to select an appropriate configuration. It takes in the capabilities
+		specified in the attribute list, and returns a list of available configurations that match or exceed the capabilities requested.
+		Details of all the possible attributes and how they are selected for by this function are available in the EGL reference pages here:
+		http://www.khronos.org/registry/egl/sdk/docs/man/xhtml/eglChooseConfig.html
+		It is also possible to simply get the entire list of configurations and use a custom algorithm to choose a suitable one, as many
+		advanced applications choose to do. For this application however, taking the first EGLConfig that the function returns suits
+		its needs perfectly, so we limit it to returning a single EGLConfig.
+	*/
+	EGLint configsReturned;
+	if (!eglChooseConfig(eglDisplay, configurationAttributes, &eglConfig, 1, &configsReturned) || (configsReturned != 1))
+	{
+		printf("Failed to choose a suitable config.");
+		return false;
+	}
+
+	return true;
+}
+
+/*!*****************************************************************************************************************************************
+ @Function		CreateEGLSurface
+ @Input			nativeWindow                A native window that's been created
+ @Input			eglDisplay                  The EGLDisplay used by the application
+ @Input			eglConfig                   An EGLConfig chosen by the application
+ @Output		eglSurface					The EGLSurface created from the native window.
+ @Return		Whether the function succeeds or not.
+ @Description	Creates an EGLSurface from a native window
+*******************************************************************************************************************************************/
+bool CreateEGLSurface( Window nativeWindow, EGLDisplay eglDisplay, EGLConfig eglConfig, EGLSurface& eglSurface)
+{
+	/*	Create an EGLSurface for rendering.
+		Using a native window created earlier and a suitable eglConfig, a surface is created that can be used to render OpenGL ES calls to.
+		There are three main surface types in EGL, which can all be used in the same way once created but work slightly differently:
+		 - Window Surfaces  - These are created from a native window and are drawn to the screen.
+		 - Pixmap Surfaces  - These are created from a native windowing system as well, but are offscreen and are not displayed to the user.
+		 - PBuffer Surfaces - These are created directly within EGL, and like Pixmap Surfaces are offscreen and thus not displayed.
+		The offscreen surfaces are useful for non-rendering contexts and in certain other scenarios, but for most applications the main
+		surface used will be a window surface as performed below.
+	*/
+	eglSurface = eglCreateWindowSurface(eglDisplay, eglConfig, (EGLNativeWindowType)nativeWindow, NULL);
+	if (!TestEGLError("eglCreateWindowSurface"))
+	{
+		return false;
+	}
+
+	return true;
+}
+
+/*!*****************************************************************************************************************************************
+ @Function		SetupEGLContext
+ @Input			eglDisplay                  The EGLDisplay used by the application
+ @Input			eglConfig                   An EGLConfig chosen by the application
+ @Input			eglSurface					The EGLSurface created from the native window.
+ @Output		eglContext                  The EGLContext created by this function
+ @Input			nativeWindow                A native window, used to display error messages
+ @Return		Whether the function succeeds or not.
+ @Description	Sets up the EGLContext, creating it and then installing it to the current thread.
+*******************************************************************************************************************************************/
+bool SetupEGLContext( EGLDisplay eglDisplay, EGLConfig eglConfig, EGLSurface eglSurface, EGLContext& eglContext )
+{
+	/*	Create a context.
+		EGL has to create what is known as a context for OpenGL ES. The concept of a context is OpenGL ES's way of encapsulating any
+		resources and state. What appear to be "global" functions in OpenGL actually only operate on the current context. A context
+		is required for any operations in OpenGL ES.
+		Similar to an EGLConfig, a context takes in a list of attributes specifying some of its capabilities. However in most cases this
+		is limited to just requiring the version of the OpenGL ES context required - In this case, OpenGL ES 2.0.
+	*/
+	EGLint contextAttributes[] =
+	{
+		EGL_CONTEXT_CLIENT_VERSION, 2,
+		EGL_NONE
+	};
+
+	// Create the context with the context attributes supplied
+	eglContext = eglCreateContext(eglDisplay, eglConfig, NULL, contextAttributes);
+	if (!TestEGLError("eglCreateContext"))
+	{
+		return false;
+	}
+
+	/*	Make OpenGL ES the current API.
+		After creating the context, EGL needs a way to know that any subsequent EGL calls are going to be affecting OpenGL ES,
+		rather than any other API (such as OpenVG).
+	*/
+	eglBindAPI(EGL_OPENGL_ES_API);
+	if (!TestEGLError("eglBindAPI"))
+	{
+		return false;
+	}
+
+	/*	Bind the context to the current thread.
+		Due to the way OpenGL uses global functions, contexts need to be made current so that any function call can operate on the correct
+		context. Specifically, make current will bind the context to the thread it's called from, and unbind it from any others. To use
+		multiple contexts at the same time, users should use multiple threads and synchronise between them.
+	*/
+	eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);
+	if (!TestEGLError("eglMakeCurrent"))
+	{
+		return false;
+	}
+
+
+
+	return true;
+}
+
+/*!*****************************************************************************************************************************************
+ @Function		RenderScene
+ @Input			nativeDisplay				The native display used by the application
+ @Return		Whether the function succeeds or not.
+ @Description	Renders the scene to the framebuffer. Usually called within a loop.
+*******************************************************************************************************************************************/
+bool RenderScene( Display* nativeDisplay )
+{
+	void TestRAD();
+    TestRAD();
+
+	// Check for messages from the windowing system.
+	int numberOfMessages = XPending(nativeDisplay);
+	for( int i = 0; i < numberOfMessages; i++ )
+	{
+		XEvent event;
+		XNextEvent(nativeDisplay, &event);
+
+		switch( event.type )
+		{
+			// Exit on window close
+		case ClientMessage:
+			// Exit on mouse click
+		case ButtonPress:
+		case DestroyNotify:
+			return false;
+		default:
+			break;
+		}
+	}
+
+	return true;
+}
+
+/*!*****************************************************************************************************************************************
+ @Function		ReleaseEGLState
+ @Input			eglDisplay                   The EGLDisplay used by the application
+ @Description	Releases all resources allocated by EGL
+*******************************************************************************************************************************************/
+void ReleaseEGLState(EGLDisplay eglDisplay)
+{
+	if(eglDisplay != NULL)
+	{
+		// To release the resources in the context, first the context has to be released from its binding with the current thread.
+		eglMakeCurrent(eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+
+		// Terminate the display, and any resources associated with it (including the EGLContext)
+		eglTerminate(eglDisplay);
+	}
+}
+
+/*!*****************************************************************************************************************************************
+ @Function		ReleaseWindowAndDisplay
+ @Input			nativeDisplay               The native display to release
+ @Input			nativeWindow                The native window to destroy
+ @Description	Releases all resources allocated by the windowing system
+*******************************************************************************************************************************************/
+void ReleaseNativeResources(Display* nativeDisplay, Window nativeWindow)
+{
+	// Destroy the window
+	if (nativeWindow)
+	{
+		XDestroyWindow(nativeDisplay, nativeWindow);
+	}
+
+	// Release the display.
+	if (nativeDisplay)
+	{
+		XCloseDisplay(nativeDisplay);
+	}
+}
+
+/*!*****************************************************************************************************************************************
+ @Function		main
+ @Input			argc                        Number of arguments passed to the application, ignored.
+ @Input			argv           Command line strings passed to the application, ignored.
+ @Return		Result code to send to the Operating System
+ @Description	Main function of the program, executes other functions.
+*******************************************************************************************************************************************/
+int main(int /*argc*/, char **/*argv*/)
+{
+	// X11 variables
+	Display* nativeDisplay = NULL;
+	Window nativeWindow = 0;
+
+	// EGL variables
+	EGLDisplay			eglDisplay = NULL;
+	EGLConfig			eglConfig = NULL;
+	EGLSurface			eglSurface = NULL;
+	EGLContext			eglContext = NULL;
+
+	// Get access to a native display
+	if (!CreateNativeDisplay(&nativeDisplay))
+	{
+		goto cleanup;
+	}
+
+	// Setup the windowing system, create a window
+	if (!CreateNativeWindow(nativeDisplay, &nativeWindow))
+	{
+		goto cleanup;
+	}
+
+	// Create and Initialise an EGLDisplay from the native display
+	if (!CreateEGLDisplay(nativeDisplay, eglDisplay))
+	{
+		goto cleanup;
+	}
+
+	// Choose an EGLConfig for the application, used when setting up the rendering surface and EGLContext
+	if (!ChooseEGLConfig(eglDisplay, eglConfig))
+	{
+		goto cleanup;
+	}
+
+	// Create an EGLSurface for rendering from the native window
+	if (!CreateEGLSurface(nativeWindow, eglDisplay, eglConfig, eglSurface))
+	{
+		goto cleanup;
+	}
+
+	// Setup the EGL Context from the other EGL constructs created so far, so that the application is ready to submit OpenGL ES commands
+	if (!SetupEGLContext(eglDisplay, eglConfig, eglSurface, eglContext))
+	{
+		goto cleanup;
+	}
+
+	// Initialise the fragment and vertex shaders used in the application
+	void InitRAD();
+	InitRAD();
+
+	// Renders a triangle for 800 frames using the state setup in the previous function
+	for (int i = 0; i < 800; ++i)
+	{
+		if (!RenderScene(nativeDisplay))
+		{
+			break;
+		}
+	}
+
+cleanup:
+    void CleanRAD();
+	CleanRAD();
+
+	// Release the EGL State
+	ReleaseEGLState(eglDisplay);
+
+	// Release the windowing system resources
+	ReleaseNativeResources(nativeDisplay, nativeWindow);
+
+	// Destroy the eglWindow
+	return 0;
+}
+
+/*******************************************************************************************************************************************
+ End of file (rad_LinuxX11.cpp)
+*******************************************************************************************************************************************/