Add libGLES_CM to the Code::Blocks project.
Change-Id: Id69512842d9a863b110f8c8bf5244c117d96fae7
Reviewed-on: https://swiftshader-review.googlesource.com/1464
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Common/SharedLibrary.hpp b/src/Common/SharedLibrary.hpp
index 790bd29a..b9d5a51 100644
--- a/src/Common/SharedLibrary.hpp
+++ b/src/Common/SharedLibrary.hpp
@@ -94,6 +94,6 @@
inline void *getProcAddress(void *library, const char *name)
{
- return dlsym(library, name);
+ return library ? dlsym(library, name) : 0;
}
#endif
diff --git a/src/Common/Version.h b/src/Common/Version.h
index f358056..e180faa 100644
--- a/src/Common/Version.h
+++ b/src/Common/Version.h
@@ -1,7 +1,7 @@
#define MAJOR_VERSION 3
#define MINOR_VERSION 2
#define BUILD_VERSION 7
-#define BUILD_REVISION 47655
+#define BUILD_REVISION 47656
#define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x)
diff --git a/src/OpenGL/libEGL/exports.map b/src/OpenGL/libEGL/exports.map
new file mode 100644
index 0000000..6a455e7
--- /dev/null
+++ b/src/OpenGL/libEGL/exports.map
@@ -0,0 +1,52 @@
+{
+global:
+ eglBindAPI;
+ eglBindTexImage;
+ eglChooseConfig;
+ eglCopyBuffers;
+ eglCreateContext;
+ eglCreatePbufferFromClientBuffer;
+ eglCreatePbufferSurface;
+ eglCreatePixmapSurface;
+ eglCreateWindowSurface;
+ eglDestroyContext;
+ eglDestroySurface;
+ eglGetConfigAttrib;
+ eglGetConfigs;
+ eglGetCurrentContext;
+ eglGetCurrentDisplay;
+ eglGetCurrentSurface;
+ eglGetDisplay;
+ eglGetError;
+ eglGetProcAddress;
+ eglInitialize;
+ eglMakeCurrent;
+ eglQueryAPI;
+ eglQueryContext;
+ eglQueryString;
+ eglQuerySurface;
+ eglReleaseTexImage;
+ eglReleaseThread;
+ eglSurfaceAttrib;
+ eglSwapBuffers;
+ eglSwapInterval;
+ eglTerminate;
+ eglWaitClient;
+ eglWaitGL;
+ eglWaitNative;
+
+ # Extensions
+ eglCreateImageKHR;
+ eglDestroyImageKHR;
+ eglGetPlatformDisplayEXT;
+ eglCreatePlatformWindowSurfaceEXT;
+ eglCreatePlatformPixmapSurfaceEXT;
+
+ # Functions that don't change the error code, for use by client APIs
+ clientGetCurrentContext;
+ clientGetCurrentDisplay;
+
+local:
+ *;
+};
+
diff --git a/src/OpenGL/libEGL/libEGL.cbp b/src/OpenGL/libEGL/libEGL.cbp
index 73f44aa..88e33f3 100644
--- a/src/OpenGL/libEGL/libEGL.cbp
+++ b/src/OpenGL/libEGL/libEGL.cbp
@@ -97,6 +97,7 @@
<Add directory="./../../" />
</Compiler>
<Linker>
+ <Add option="-Wl,--version-script=./exports.map" />
<Add library="pthread" />
</Linker>
<Unit filename="../../Common/SharedLibrary.hpp" />
diff --git a/src/OpenGL/libGLES_CM/Context.cpp b/src/OpenGL/libGLES_CM/Context.cpp
index db9797c..952a4ef 100644
--- a/src/OpenGL/libGLES_CM/Context.cpp
+++ b/src/OpenGL/libGLES_CM/Context.cpp
@@ -20,7 +20,6 @@
#include "ResourceManager.h"
#include "Buffer.h"
#include "Framebuffer.h"
-#include "Query.h"
#include "Renderbuffer.h"
#include "Texture.h"
#include "VertexDataManager.h"
@@ -172,7 +171,7 @@
{
setVertexAttrib(sw::TexCoord0 + i, 0.0f, 0.0f, 0.0f, 1.0f);
}
-
+
setVertexAttrib(sw::Normal, 0.0f, 0.0f, 1.0f, 1.0f);
mHasBeenCurrent = false;
@@ -186,7 +185,7 @@
{
deleteFramebuffer(mFramebufferMap.begin()->first);
}
-
+
for(int type = 0; type < TEXTURE_TYPE_COUNT; type++)
{
for(int sampler = 0; sampler < MAX_TEXTURE_UNITS; sampler++)
@@ -199,7 +198,7 @@
{
mState.vertexAttribute[i].mBoundBuffer.set(NULL);
}
-
+
mState.arrayBuffer.set(NULL);
mState.elementArrayBuffer.set(NULL);
mState.renderbuffer.set(NULL);
@@ -249,7 +248,7 @@
{
depthStencil->release();
}
-
+
markAllStateDirty();
}
@@ -729,7 +728,7 @@
{
detachBuffer(buffer);
}
-
+
mResourceManager->deleteBuffer(buffer);
}
@@ -749,7 +748,7 @@
{
detachRenderbuffer(renderbuffer);
}
-
+
mResourceManager->deleteRenderbuffer(renderbuffer);
}
@@ -979,7 +978,7 @@
// Please note: DEPTH_CLEAR_VALUE is not included in our internal getIntegerv implementation
// because it is stored as a float, despite the fact that the GL ES 2.0 spec names
// GetIntegerv as its native query function. As it would require conversion in any
- // case, this should make no difference to the calling application. You may find it in
+ // case, this should make no difference to the calling application. You may find it in
// Context::getFloatv.
switch (pname)
{
@@ -1008,7 +1007,7 @@
case GL_STENCIL_CLEAR_VALUE: *params = mState.stencilClearValue; break;
case GL_SUBPIXEL_BITS: *params = 4; break;
case GL_MAX_TEXTURE_SIZE: *params = IMPLEMENTATION_MAX_TEXTURE_SIZE; break;
- case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
+ case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
{
if(S3TC_SUPPORT)
{
@@ -1022,7 +1021,7 @@
}
}
break;
- case GL_SAMPLE_BUFFERS:
+ case GL_SAMPLE_BUFFERS:
case GL_SAMPLES:
{
Framebuffer *framebuffer = getFramebuffer();
@@ -1189,7 +1188,7 @@
// Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation
// is FLOAT rather than INT, as would be suggested by the GL ES 2.0 spec. This is due
// to the fact that it is stored internally as a float, and so would require conversion
- // if returned from Context::getIntegerv. Since this conversion is already implemented
+ // if returned from Context::getIntegerv. Since this conversion is already implemented
// in the case that one calls glGetIntegerv to retrieve a float-typed state variable, we
// place DEPTH_CLEAR_VALUE with the floats. This should make no difference to the calling
// application.
@@ -1290,7 +1289,7 @@
// Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation
// is FLOAT rather than INT, as would be suggested by the GL ES 2.0 spec. This is due
// to the fact that it is stored internally as a float, and so would require conversion
- // if returned from Context::getIntegerv. Since this conversion is already implemented
+ // if returned from Context::getIntegerv. Since this conversion is already implemented
// in the case that one calls glGetIntegerv to retrieve a float-typed state variable, we
// place DEPTH_CLEAR_VALUE with the floats. This should make no difference to the calling
// application.
@@ -1360,7 +1359,7 @@
// Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation
// is FLOAT rather than INT, as would be suggested by the GL ES 2.0 spec. This is due
// to the fact that it is stored internally as a float, and so would require conversion
- // if returned from Context::getIntegerv. Since this conversion is already implemented
+ // if returned from Context::getIntegerv. Since this conversion is already implemented
// in the case that one calls glGetIntegerv to retrieve a float-typed state variable, we
// place DEPTH_CLEAR_VALUE with the floats. This should make no difference to the calling
// application.
@@ -1444,7 +1443,7 @@
{
sw::Rect scissor = {mState.scissorX, mState.scissorY, mState.scissorX + mState.scissorWidth, mState.scissorY + mState.scissorHeight};
scissor.clip(0, 0, width, height);
-
+
device->setScissorRect(scissor);
device->setScissorEnable(true);
}
@@ -1514,7 +1513,7 @@
{
device->setStencilEnable(true);
device->setTwoSidedStencil(true);
-
+
// get the maximum size of the stencil ref
Renderbuffer *stencilbuffer = framebuffer->getStencilbuffer();
GLuint maxStencil = (1 << stencilbuffer->getStencilSize()) - 1;
@@ -1609,7 +1608,7 @@
}
}
}
-
+
if(mState.sampleCoverageInvert)
{
mask = ~mask;
@@ -1680,14 +1679,14 @@
{
return err;
}
-
+
device->resetInputStreams(false);
for(int i = 0; i < MAX_VERTEX_ATTRIBS; i++)
{
sw::Resource *resource = attributes[i].vertexBuffer;
const void *buffer = (char*)resource->getBuffer() + attributes[i].offset;
-
+
int stride = attributes[i].stride;
buffer = (char*)buffer + stride * base;
@@ -1742,7 +1741,7 @@
device->setTextureFilter(sw::SAMPLER_PIXEL, samplerIndex, minFilter);
// device->setTextureFilter(sw::SAMPLER_PIXEL, samplerIndex, es2sw::ConvertMagFilter(magFilter));
device->setMipmapFilter(sw::SAMPLER_PIXEL, samplerIndex, mipFilter);
- device->setMaxAnisotropy(sw::SAMPLER_PIXEL, samplerIndex, maxAnisotropy);
+ device->setMaxAnisotropy(sw::SAMPLER_PIXEL, samplerIndex, maxAnisotropy);
applyTexture(samplerIndex, texture);
@@ -1779,7 +1778,7 @@
}
device->setTextureResource(index, resource);
-
+
if(baseTexture)
{
int levelCount = baseTexture->getLevelCount();
@@ -1830,7 +1829,7 @@
}
GLsizei outputPitch = ComputePitch(width, format, type, mState.packAlignment);
-
+
// Sized query sanity check
if(bufSize)
{
@@ -2005,7 +2004,7 @@
switch(type)
{
case GL_UNSIGNED_SHORT_5_6_5: // IMPLEMENTATION_COLOR_READ_TYPE
- dest16[i + j * outputPitch / sizeof(unsigned short)] =
+ dest16[i + j * outputPitch / sizeof(unsigned short)] =
((unsigned short)(31 * b + 0.5f) << 0) |
((unsigned short)(63 * g + 0.5f) << 5) |
((unsigned short)(31 * r + 0.5f) << 11);
@@ -2039,7 +2038,7 @@
unsigned int color = (unorm<8>(mState.colorClearValue.alpha) << 24) |
(unorm<8>(mState.colorClearValue.red) << 16) |
- (unorm<8>(mState.colorClearValue.green) << 8) |
+ (unorm<8>(mState.colorClearValue.green) << 8) |
(unorm<8>(mState.colorClearValue.blue) << 0);
float depth = clamp01(mState.depthClearValue);
int stencil = mState.stencilClearValue & 0x000000FF;
@@ -2047,7 +2046,7 @@
if(mask & GL_COLOR_BUFFER_BIT)
{
unsigned int rgbaMask = (mState.colorMaskRed ? 0x1 : 0) |
- (mState.colorMaskGreen ? 0x2 : 0) |
+ (mState.colorMaskGreen ? 0x2 : 0) |
(mState.colorMaskBlue ? 0x4 : 0) |
(mState.colorMaskAlpha ? 0x8 : 0);
@@ -2238,12 +2237,12 @@
{
return 1;
}
-
+
if(requested == 2)
{
return 2;
}
-
+
return 4;
}
@@ -2483,7 +2482,7 @@
{
switch(matrixMode)
{
- case GL_MODELVIEW:
+ case GL_MODELVIEW:
return modelViewStack;
case GL_PROJECTION:
return projectionStack;
@@ -2493,7 +2492,7 @@
case 0: return textureStack0;
case 1: return textureStack1;
}
- break;
+ break;
}
UNREACHABLE();
@@ -2533,7 +2532,7 @@
void Context::translate(GLfloat x, GLfloat y, GLfloat z)
{
- currentMatrixStack().translate(x, y, z);
+ currentMatrixStack().translate(x, y, z);
}
void Context::scale(GLfloat x, GLfloat y, GLfloat z)
diff --git a/src/OpenGL/libGLES_CM/exports.map b/src/OpenGL/libGLES_CM/exports.map
index 7d08ed0..565d1bc 100644
--- a/src/OpenGL/libGLES_CM/exports.map
+++ b/src/OpenGL/libGLES_CM/exports.map
@@ -1,184 +1,219 @@
{
global:
+ eglBindTexImage;
+ eglChooseConfig;
+ eglCopyBuffers;
+ eglCreateContext;
+ eglCreatePbufferSurface;
+ eglCreatePixmapSurface;
+ eglCreateWindowSurface;
+ eglDestroyContext;
+ eglDestroySurface;
+ eglGetConfigAttrib;
+ eglGetConfigs;
+ eglGetCurrentContext;
+ eglGetCurrentDisplay;
+ eglGetCurrentSurface;
+ eglGetDisplay;
+ eglGetError;
+ eglGetProcAddress;
+ eglInitialize;
+ eglMakeCurrent;
+ eglQueryContext;
+ eglQueryString;
+ eglQuerySurface;
+ eglReleaseTexImage;
+ eglSurfaceAttrib;
+ eglSwapBuffers;
+ eglSwapInterval;
+ eglTerminate;
+ eglWaitGL;
+ eglWaitNative;
glActiveTexture;
- glAttachShader;
- glBindAttribLocation;
+ glAlphaFunc;
+ glAlphaFuncx;
glBindBuffer;
- glBindFramebuffer;
- glBindRenderbuffer;
glBindTexture;
- glBlendColor;
- glBlendEquation;
- glBlendEquationSeparate;
glBlendFunc;
- glBlendFuncSeparate;
glBufferData;
glBufferSubData;
- glCheckFramebufferStatus;
glClear;
glClearColor;
+ glClearColorx;
glClearDepthf;
+ glClearDepthx;
glClearStencil;
+ glClientActiveTexture;
+ glClipPlanef;
+ glClipPlanex;
+ glColor4f;
+ glColor4ub;
+ glColor4x;
glColorMask;
- glCompileShader;
+ glColorPointer;
glCompressedTexImage2D;
glCompressedTexSubImage2D;
glCopyTexImage2D;
glCopyTexSubImage2D;
- glCreateProgram;
- glCreateShader;
glCullFace;
glDeleteBuffers;
- glDeleteFramebuffers;
- glDeleteProgram;
- glDeleteRenderbuffers;
- glDeleteShader;
glDeleteTextures;
glDepthFunc;
glDepthMask;
glDepthRangef;
- glDetachShader;
+ glDepthRangex;
glDisable;
- glDisableVertexAttribArray;
+ glDisableClientState;
glDrawArrays;
glDrawElements;
glEnable;
- glEnableVertexAttribArray;
+ glEnableClientState;
glFinish;
glFlush;
- glFramebufferRenderbuffer;
- glFramebufferTexture2D;
+ glFogf;
+ glFogfv;
+ glFogx;
+ glFogxv;
glFrontFace;
+ glFrustumf;
+ glFrustumx;
glGenBuffers;
- glGenFramebuffers;
- glGenRenderbuffers;
glGenTextures;
- glGenerateMipmap;
- glGetActiveAttrib;
- glGetActiveUniform;
- glGetAttachedShaders;
- glGetAttribLocation;
glGetBooleanv;
glGetBufferParameteriv;
+ glGetClipPlanef;
+ glGetClipPlanex;
glGetError;
+ glGetFixedv;
glGetFloatv;
- glGetFramebufferAttachmentParameteriv;
glGetIntegerv;
- glGetProgramInfoLog;
- glGetProgramiv;
- glGetRenderbufferParameteriv;
- glGetShaderInfoLog;
- glGetShaderPrecisionFormat;
- glGetShaderSource;
- glGetShaderiv;
+ glGetLightfv;
+ glGetLightxv;
+ glGetMaterialfv;
+ glGetMaterialxv;
+ glGetPointerv;
glGetString;
+ glGetTexEnvfv;
+ glGetTexEnviv;
+ glGetTexEnvxv;
glGetTexParameterfv;
glGetTexParameteriv;
- glGetUniformLocation;
- glGetUniformfv;
- glGetUniformiv;
- glGetVertexAttribPointerv;
- glGetVertexAttribfv;
- glGetVertexAttribiv;
+ glGetTexParameterxv;
glHint;
glIsBuffer;
glIsEnabled;
- glIsFramebuffer;
- glIsProgram;
- glIsRenderbuffer;
- glIsShader;
glIsTexture;
+ glLightModelf;
+ glLightModelfv;
+ glLightModelx;
+ glLightModelxv;
+ glLightf;
+ glLightfv;
+ glLightx;
+ glLightxv;
glLineWidth;
- glLinkProgram;
+ glLineWidthx;
+ glLoadIdentity;
+ glLoadMatrixf;
+ glLoadMatrixx;
+ glLogicOp;
+ glMaterialf;
+ glMaterialfv;
+ glMaterialx;
+ glMaterialxv;
+ glMatrixMode;
+ glMultMatrixf;
+ glMultMatrixx;
+ glMultiTexCoord4f;
+ glMultiTexCoord4x;
+ glNormal3f;
+ glNormal3x;
+ glNormalPointer;
+ glOrthof;
+ glOrthox;
glPixelStorei;
+ glPointParameterf;
+ glPointParameterfv;
+ glPointParameterx;
+ glPointParameterxv;
+ glPointSize;
+ glPointSizex;
glPolygonOffset;
+ glPolygonOffsetx;
+ glPopMatrix;
+ glPushMatrix;
glReadPixels;
- glReleaseShaderCompiler;
- glRenderbufferStorage;
+ glRotatef;
+ glRotatex;
glSampleCoverage;
+ glSampleCoveragex;
+ glScalef;
+ glScalex;
glScissor;
- glShaderBinary;
- glShaderSource;
+ glShadeModel;
glStencilFunc;
- glStencilFuncSeparate;
glStencilMask;
- glStencilMaskSeparate;
glStencilOp;
- glStencilOpSeparate;
+ glTexCoordPointer;
+ glTexEnvf;
+ glTexEnvfv;
+ glTexEnvi;
+ glTexEnviv;
+ glTexEnvx;
+ glTexEnvxv;
glTexImage2D;
glTexParameterf;
glTexParameterfv;
glTexParameteri;
glTexParameteriv;
+ glTexParameterx;
+ glTexParameterxv;
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;
+ glTranslatef;
+ glTranslatex;
+ glVertexPointer;
glViewport;
- # Extensions
- glTexImage3DOES;
- glBlitFramebufferANGLE;
- glRenderbufferStorageMultisampleANGLE;
- glDeleteFencesNV;
- glFinishFenceNV;
- glGenFencesNV;
- glGetFenceivNV;
- glIsFenceNV;
- glSetFenceNV;
- glTestFenceNV;
- glGetGraphicsResetStatusEXT;
- glReadnPixelsEXT;
- glGetnUniformfvEXT;
- glGetnUniformivEXT;
- glGenQueriesEXT;
- glDeleteQueriesEXT;
- glIsQueryEXT;
- glBeginQueryEXT;
- glEndQueryEXT;
- glGetQueryivEXT;
- glGetQueryObjectuivEXT;
+ # Extensions
+ glPointSizePointerOES;
+ glEGLImageTargetTexture2DOES;
+ glEGLImageTargetRenderbufferStorageOES;
+ glIsRenderbufferOES;
+ glBindRenderbufferOES;
+ glDeleteRenderbuffersOES;
+ glGenRenderbuffersOES;
+ glRenderbufferStorageOES;
+ glGetRenderbufferParameterivOES;
+ glIsFramebufferOES;
+ glBindFramebufferOES;
+ glDeleteFramebuffersOES;
+ glGenFramebuffersOES;
+ glCheckFramebufferStatusOES;
+ glFramebufferRenderbufferOES;
+ glFramebufferTexture2DOES;
+ glGetFramebufferAttachmentParameterivOES;
+ glGenerateMipmapOES;
+ glBlendEquationOES;
+ glBlendEquationSeparateOES;
+ glBlendFuncSeparateOES;
+ glDrawTexsOES;
+ glDrawTexiOES;
+ glDrawTexxOES;
+ glDrawTexsvOES;
+ glDrawTexivOES;
+ glDrawTexxvOES;
+ glDrawTexfOES;
+ glDrawTexfvOES;
# EGL dependencies
glCreateContext;
- glDestroyContext;
- glMakeCurrent;
- glGetCurrentContext;
glGetProcAddress;
- glBindTexImage;
- createFrameBuffer;
- createBackBuffer;
- createDevice;
+ createFrameBuffer;
+ createBackBuffer;
+ createDepthStencil;
- Register;
+ Register;
local:
*;
diff --git a/src/OpenGL/libGLES_CM/libGLES_CM.cbp b/src/OpenGL/libGLES_CM/libGLES_CM.cbp
new file mode 100644
index 0000000..e48dd25
--- /dev/null
+++ b/src/OpenGL/libGLES_CM/libGLES_CM.cbp
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+ <FileVersion major="1" minor="6" />
+ <Project>
+ <Option title="libGLES_CM" />
+ <Option pch_mode="2" />
+ <Option compiler="clang" />
+ <Build>
+ <Target title="Debug x86">
+ <Option output="./../../../lib/Debug_x86/libGLES_CM.so.1" 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>
+ <ExtraCommands>
+ <Add after="ln -s -f ./libGLES_CM.so.1 ./../../../lib/Debug_x86/libGLES_CM.so" />
+ </ExtraCommands>
+ </Target>
+ <Target title="Release x86">
+ <Option output="./../../../lib/Release_x86/libGLES_CM.so.1" 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="-fomit-frame-pointer" />
+ <Add option="-O2" />
+ <Add option="-march=i686" />
+ <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>
+ <ExtraCommands>
+ <Add after="ln -s -f ./libGLES_CM.so.1 ./../../../lib/Release_x86/libGLES_CM.so" />
+ </ExtraCommands>
+ </Target>
+ <Target title="Debug x64">
+ <Option output="./../../../lib/Debug_x64/libGLES_CM.so.1" 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>
+ <ExtraCommands>
+ <Add after="ln -s -f ./libGLES_CM.so.1 ./../../../lib/Debug_x64/libGLES_CM.so" />
+ </ExtraCommands>
+ </Target>
+ <Target title="Release x64">
+ <Option output="./../../../lib/Release_x64/libGLES_CM.so.1" 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="-fomit-frame-pointer" />
+ <Add option="-O2" />
+ <Add option="-march=core2" />
+ <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>
+ <ExtraCommands>
+ <Add after="ln -s -f ./libGLES_CM.so.1 ./../../../lib/Release_x64/libGLES_CM.so" />
+ </ExtraCommands>
+ </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="../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="Buffer.cpp" />
+ <Unit filename="Buffer.h" />
+ <Unit filename="Context.cpp" />
+ <Unit filename="Context.h" />
+ <Unit filename="Device.cpp" />
+ <Unit filename="Device.hpp" />
+ <Unit filename="Framebuffer.cpp" />
+ <Unit filename="Framebuffer.h" />
+ <Unit filename="HandleAllocator.cpp" />
+ <Unit filename="HandleAllocator.h" />
+ <Unit filename="Image.cpp" />
+ <Unit filename="Image.hpp" />
+ <Unit filename="IndexDataManager.cpp" />
+ <Unit filename="IndexDataManager.h" />
+ <Unit filename="RefCountObject.cpp" />
+ <Unit filename="RefCountObject.h" />
+ <Unit filename="Renderbuffer.cpp" />
+ <Unit filename="Renderbuffer.h" />
+ <Unit filename="ResourceManager.cpp" />
+ <Unit filename="ResourceManager.h" />
+ <Unit filename="Texture.cpp" />
+ <Unit filename="Texture.h" />
+ <Unit filename="Unknown.hpp" />
+ <Unit filename="VertexDataManager.cpp" />
+ <Unit filename="VertexDataManager.h" />
+ <Unit filename="libGLES_CM.cpp" />
+ <Unit filename="main.cpp" />
+ <Unit filename="main.h" />
+ <Unit filename="mathutil.h" />
+ <Unit filename="resource.h" />
+ <Unit filename="utilities.cpp" />
+ <Unit filename="utilities.h" />
+ <Unit filename="vertexconversion.h" />
+ <Extensions>
+ <code_completion />
+ <debugger />
+ </Extensions>
+ </Project>
+</CodeBlocks_project_file>
diff --git a/src/OpenGL/libGLES_CM/libGLES_CM.cpp b/src/OpenGL/libGLES_CM/libGLES_CM.cpp
index 9280c8b..62359b9 100644
--- a/src/OpenGL/libGLES_CM/libGLES_CM.cpp
+++ b/src/OpenGL/libGLES_CM/libGLES_CM.cpp
@@ -18,7 +18,6 @@
#include "Framebuffer.h"
#include "Renderbuffer.h"
#include "Texture.h"
-#include "Query.h"
#include "common/debug.h"
#include "Common/SharedLibrary.hpp"
#include "Common/Version.h"
@@ -65,7 +64,7 @@
if(compressed)
{
- if((width % 4 != 0 && width != texture->getWidth(target, 0)) ||
+ if((width % 4 != 0 && width != texture->getWidth(target, 0)) ||
(height % 4 != 0 && height != texture->getHeight(target, 0)))
{
return error(GL_INVALID_OPERATION, false);
@@ -899,7 +898,7 @@
void GL_APIENTRY glClientActiveTexture(GLenum texture)
{
TRACE("(GLenum texture = 0x%X)", texture);
-
+
try
{
switch(texture)
@@ -1023,10 +1022,10 @@
UNIMPLEMENTED();
}
-void GL_APIENTRY glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
+void GL_APIENTRY glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
GLint border, GLsizei imageSize, const GLvoid* data)
{
- TRACE("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, GLsizei width = %d, "
+ TRACE("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, GLsizei width = %d, "
"GLsizei height = %d, GLint border = %d, GLsizei imageSize = %d, const GLvoid* data = 0x%0.8p)",
target, level, internalformat, width, height, border, imageSize, data);
@@ -1756,7 +1755,7 @@
default:
return error(GL_INVALID_ENUM);
}
-
+
context->drawElements(mode, count, type, indices);
}
}
@@ -1825,7 +1824,7 @@
void GL_APIENTRY glEnableClientState(GLenum array)
{
TRACE("(GLenum array = 0x%X)", array);
-
+
try
{
es1::Context *context = es1::getContext();
@@ -1906,7 +1905,7 @@
{
es1::Framebuffer *framebuffer = context->getFramebuffer();
GLuint framebufferHandle = context->getFramebufferHandle();
-
+
if(!framebuffer || (framebufferHandle == 0 && renderbuffer != 0))
{
return error(GL_INVALID_OPERATION);
@@ -2277,7 +2276,7 @@
if(!(context->getBooleanv(pname, params)))
{
unsigned int numParams = context->getQueryParameterNum(pname);
-
+
if(numParams < 0)
{
return error(GL_INVALID_ENUM);
@@ -2420,7 +2419,7 @@
if(!(context->getFloatv(pname, params)))
{
unsigned int numParams = context->getQueryParameterNum(pname);
-
+
if(numParams < 0)
{
return error(GL_INVALID_ENUM);
@@ -2486,21 +2485,21 @@
{
return error(GL_INVALID_ENUM);
}
-
+
if(context->getFramebufferHandle() == 0)
{
return error(GL_INVALID_OPERATION);
}
es1::Framebuffer *framebuffer = context->getFramebuffer();
-
+
GLenum attachmentType;
GLuint attachmentHandle;
switch(attachment)
{
- case GL_COLOR_ATTACHMENT0_OES:
+ case GL_COLOR_ATTACHMENT0_OES:
attachmentType = framebuffer->getColorbufferType();
- attachmentHandle = framebuffer->getColorbufferHandle();
+ attachmentHandle = framebuffer->getColorbufferHandle();
break;
case GL_DEPTH_ATTACHMENT_OES:
attachmentType = framebuffer->getDepthbufferType();
@@ -2574,7 +2573,7 @@
if(!(context->getIntegerv(pname, params)))
{
unsigned int numParams = context->getQueryParameterNum(pname);
-
+
if(numParams < 0)
{
return error(GL_INVALID_ENUM);
@@ -2670,7 +2669,7 @@
case GL_RENDERER:
return (GLubyte*)"SwiftShader";
case GL_VERSION:
- return (GLubyte*)"OpenGL ES 1.1 SwiftShader "VERSION_STRING;
+ return (GLubyte*)"OpenGL ES 1.1 SwiftShader " VERSION_STRING;
case GL_EXTENSIONS:
// Keep list sorted in following order:
// OES extensions
@@ -2859,7 +2858,7 @@
case GL_DONT_CARE:
break;
default:
- return error(GL_INVALID_ENUM);
+ return error(GL_INVALID_ENUM);
}
es1::Context *context = es1::getContext();
@@ -3044,7 +3043,7 @@
void GL_APIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat *params)
{
TRACE("(GLenum light = 0x%X, GLenum pname = 0x%X, const GLint *params)", light, pname);
-
+
try
{
es1::Context *context = es1::getContext();
@@ -3385,7 +3384,7 @@
void GL_APIENTRY glPopMatrix(void)
{
TRACE("()");
-
+
try
{
es1::Context *context = es1::getContext();
@@ -3404,7 +3403,7 @@
void GL_APIENTRY glPushMatrix(void)
{
TRACE("()");
-
+
try
{
es1::Context *context = es1::getContext();
@@ -3480,7 +3479,7 @@
if(context)
{
- if(width > es1::IMPLEMENTATION_MAX_RENDERBUFFER_SIZE ||
+ if(width > es1::IMPLEMENTATION_MAX_RENDERBUFFER_SIZE ||
height > es1::IMPLEMENTATION_MAX_RENDERBUFFER_SIZE)
{
return error(GL_INVALID_VALUE);
@@ -3524,7 +3523,7 @@
void GL_APIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
{
TRACE("(GLfloat angle = %f, GLfloat x = %f, GLfloat y = %f, GLfloat z = %f)", angle, x, y, z);
-
+
try
{
es1::Context *context = es1::getContext();
@@ -3572,7 +3571,7 @@
void GL_APIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z)
{
TRACE("(GLfloat x = %f, GLfloat y = %f, GLfloat z = %f)", x, y, z);
-
+
try
{
es1::Context *context = es1::getContext();
@@ -3905,7 +3904,7 @@
return error(GL_INVALID_ENUM);
}
}
-
+
if(target == GL_TEXTURE_2D)
{
es1::Texture2D *texture = context->getTexture2D();
@@ -4148,7 +4147,7 @@
void GL_APIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z)
{
TRACE("(GLfloat x = %f, GLfloat y = %f, GLfloat z = %f)", x, y, z);
-
+
try
{
es1::Context *context = es1::getContext();
@@ -4225,7 +4224,7 @@
if(context)
{
es1::Texture2D *texture = 0;
-
+
switch(target)
{
case GL_TEXTURE_2D: texture = context->getTexture2D(); break;
diff --git a/src/OpenGL/libGLESv2/exports.map b/src/OpenGL/libGLESv2/exports.map
index 7d08ed0..cab96a0 100644
--- a/src/OpenGL/libGLESv2/exports.map
+++ b/src/OpenGL/libGLESv2/exports.map
@@ -158,27 +158,25 @@
glReadnPixelsEXT;
glGetnUniformfvEXT;
glGetnUniformivEXT;
- glGenQueriesEXT;
+ glGenQueriesEXT;
glDeleteQueriesEXT;
glIsQueryEXT;
glBeginQueryEXT;
glEndQueryEXT;
glGetQueryivEXT;
glGetQueryObjectuivEXT;
+ glEGLImageTargetTexture2DOES;
+ glEGLImageTargetRenderbufferStorageOES;
# EGL dependencies
glCreateContext;
- glDestroyContext;
- glMakeCurrent;
- glGetCurrentContext;
glGetProcAddress;
- glBindTexImage;
- createFrameBuffer;
- createBackBuffer;
- createDevice;
+ createFrameBuffer;
+ createBackBuffer;
+ createDepthStencil;
- Register;
+ Register;
local:
*;
diff --git a/src/Reactor/RoutineManager.cpp b/src/Reactor/RoutineManager.cpp
index 27239d9..8428f29 100644
--- a/src/Reactor/RoutineManager.cpp
+++ b/src/Reactor/RoutineManager.cpp
@@ -82,11 +82,11 @@
return 0;
}
- void RoutineManager::endExceptionTable(const llvm::Function *F, uint8_t *TableStart, uint8_t *TableEnd, uint8_t* FrameRegister)
+ void RoutineManager::endExceptionTable(const llvm::Function *F, uint8_t *TableStart, uint8_t *TableEnd, uint8_t* FrameRegister)
{
UNIMPLEMENTED();
}
-
+
uint8_t *RoutineManager::getGOTBase() const
{
ASSERT(!HasGOT);
@@ -113,7 +113,10 @@
void RoutineManager::deallocateExceptionTable(void *ET)
{
- UNIMPLEMENTED();
+ if(ET)
+ {
+ UNIMPLEMENTED();
+ }
}
void RoutineManager::setMemoryWritable()
diff --git a/src/SwiftShader.workspace b/src/SwiftShader.workspace
index d80e076..bceebc3 100644
--- a/src/SwiftShader.workspace
+++ b/src/SwiftShader.workspace
@@ -5,6 +5,9 @@
<Project filename="OpenGL/libGLESv2/libGLESv2.cbp">
<Depends filename="LLVM/LLVM.cbp" />
</Project>
+ <Project filename="OpenGL/libGLES_CM/libGLES_CM.cbp">
+ <Depends filename="LLVM/LLVM.cbp" />
+ </Project>
<Project filename="LLVM/LLVM.cbp" />
<Project filename="../tests/third_party/PowerVR/Examples/Beginner/01_HelloAPI/OGLES2/Build/OGLES2HelloAPI.cbp">
<Depends filename="OpenGL/libEGL/libEGL.cbp" />