ecere/gfx/newFonts: Fixes to build for Android
authorJerome St-Louis <jerome@ecere.com>
Thu, 23 Jun 2016 18:44:04 +0000 (14:44 -0400)
committerJerome St-Louis <jerome@ecere.com>
Mon, 21 Nov 2016 14:18:48 +0000 (09:18 -0500)
ecere/src/gfx/newFonts/cc/cpuconfig.h
ecere/src/gfx/newFonts/cc/mm.c
ecere/src/gfx/newFonts/drawManager.ec
ecere/src/gfx/newFonts/fontRenderer.ec
ecere/src/gfx/newFonts/textureManager.ec

index fec1979..6670de6 100644 (file)
    //#error "Unknown endianness"
 #endif
 
-#if (defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__) || defined(_WIN64)
+#if (defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__) || defined(_M_X64) || defined(_WIN64)
+
+#if defined(__x86_64__) || defined(_M_X64)
    #define CPUCONF_ARCH_AMD64
+#endif
 
    #define CPUCONF_INTPTR_SIZE (8)
    #define CPUCONF_POINTER_SIZE (8)
    #define CPUCONF_LONG_BITSHIFT ((sizeof(long) == 4) ? 5 : 6)
    #define CPUCONF_LONG_SIZESHIFT ((sizeof(long) == 4) ? 2 : 3)
    #define CPUCONF_LONG_BITS (sizeof(long) * 8)
+
 #else
 
-#if !defined(__EMSCRIPTEN__)
+#if !defined(__EMSCRIPTEN__) && (defined(__i386) || defined(_M_IX86))
    #define CPUCONF_ARCH_IA32
 #endif
 
index c44012f..56753b9 100644 (file)
 
 #if defined(MM_LINUX)
  #include <sys/sysinfo.h>
+#if !defined(__ANDROID__)
  #include <utmpx.h>
 #endif
+#endif
 
 #if defined(MM_WIN32)
  #include <time.h>
@@ -180,7 +182,7 @@ void mmInit()
   {
     mmcontext.nodecount = 1;
     sysmemory = -1;
- #if defined(MM_LINUX)
+ #if defined(MM_LINUX) && !defined(__ANDROID__)
     mmcontext.cpucount = get_nprocs();
     mmcontext.pagesize = sysconf(_SC_PAGESIZE);
  #elif defined(MM_UNIX)
index 34868c0..5336333 100644 (file)
@@ -17,6 +17,13 @@ import "OpenGLDisplayDriver"
    #include <GLES2/gl2.h>
 #endif
 
+#if defined(__ANDROID__) || defined(__ODROID__)
+#if !defined(_GLES)
+   #define _GLES
+#endif
+   #include <GLES/gl.h>
+#endif
+
 #if !defined(__ANDROID__) && !defined(__EMSCRIPTEN__) && !defined(__ODROID__)
 #  if defined(SHADERS)
 //#     include "gl_core_3_3.h"
@@ -50,7 +57,7 @@ import "OpenGLDisplayDriver"
 
 #endif
 
-#if defined(ES1_1) || defined(ES2) || defined(SHADERS)
+#if defined(_GLES) || defined(_GLES2) || defined(SHADERS)
 
    #undef glRecti
    #undef glBegin
@@ -335,6 +342,7 @@ static inline void OpenGLErrorCheck( const char *file, int line )
 #define DM_TEXCOORD_NORMSHIFT (13)
 #define DM_TEXCOORD_NORMFACTOR (8192.0 /*f*/)
 
+#ifdef SHADERS
 static GLuint dmCreateShader( GLenum type, const char *shadersource, const char *optionstring )
 {
   GLuint shader;
@@ -365,7 +373,6 @@ static GLuint dmCreateShader( GLenum type, const char *shadersource, const char
   return shader;
 }
 
-
 static bool dmCreateProgram( DMProgram program, const char *vertexsource, const char *fragmentsource, char *optionstring )
 {
   GLint status;
@@ -576,7 +583,7 @@ const char *dmFragmentShaderAlphaIntensityExtColor =
 ;
 
 ////
-
+#endif
 
 static void matrixOrtho( float *m, float left, float right, float bottom, float top, float nearval, float farval )
 {
@@ -650,18 +657,23 @@ public class DrawManager
       DMProgram *program = &shaderPrograms[ programIndex ];
       if( !program->flags.valid)
       {
+#ifdef SHADERS
          glUseProgram( 0 );
+#endif
          return 0;
       }
 
+#ifdef SHADERS
       glUseProgram( program->glProgram );
+#endif
       if( program->lastUpdateCount != this.updateCount )
       {
+#ifdef SHADERS
          glUniformMatrix4fv( program->matrixloc, 1, GL_FALSE, this.matrix );
          glUniform1i( program->texbaseloc, 0 );
+#endif
          program->lastUpdateCount = this.updateCount;
       }
-
       return program;
    }
 
@@ -705,7 +717,7 @@ public class DrawManager
      DMImage *image, *bindimage;
      Texture texture, bindTexture;
      DMDrawBuffer *drawBuffer;
-     DMDrawVertexFlat *vboVertex;
+     DMDrawVertexFlat *vboVertex = null;
      DMProgram *program;
 
      ERRORCHECK();
@@ -721,7 +733,9 @@ public class DrawManager
         drawBuffer = &this.drawBuffer[drawBufferIndex];
         drawBufferIndex = ( drawBufferIndex + 1 ) % DM_CONTEXT_DRAW_BUFFER_COUNT;
         glBindBuffer( GL_ARRAY_BUFFER, drawBuffer->vbo );
+#if !defined(_GLES) && !defined(_GLES2)  // TODO:
         vboVertex = glMapBuffer( GL_ARRAY_BUFFER, GL_WRITE_ONLY );
+#endif
         vertexCount = 0;
 
         glActiveTexture( GL_TEXTURE0 );
@@ -759,7 +773,9 @@ public class DrawManager
           {
             if( vertexCount )
             {
+#if !defined(_GLES) && !defined(_GLES2)    // TODO:
               glUnmapBuffer( GL_ARRAY_BUFFER );
+#endif
               // Flush font manager texture updates
               flush( );
               // Render buffered images
@@ -767,7 +783,9 @@ public class DrawManager
               drawBuffer = &this.drawBuffer[drawBufferIndex];
               drawBufferIndex = ( drawBufferIndex + 1 ) % DM_CONTEXT_DRAW_BUFFER_COUNT;
               glBindBuffer( GL_ARRAY_BUFFER, drawBuffer->vbo );
+#if !defined(_GLES) && !defined(_GLES2)    // TODO:
               vboVertex = glMapBuffer( GL_ARRAY_BUFFER, GL_WRITE_ONLY );
+#endif
               vertexCount = 0;
             }
 
@@ -882,7 +900,9 @@ public class DrawManager
           vertexCount += 6;
         }
 
+#if !defined(_GLES) && !defined(_GLES2) // TODO:
         glUnmapBuffer( GL_ARRAY_BUFFER );
+#endif
 
         // Flush font manager texture updates
         flush();
@@ -897,7 +917,8 @@ public class DrawManager
    }
 #endif
 
-   void flushRenderDrawBuffer( DMDrawBuffer drawBuffer, DMProgram program, int vertexCount )
+#ifdef SHADERS
+   static void flushRenderDrawBuffer( DMDrawBuffer drawBuffer, DMProgram program, int vertexCount )
    {
       glabCurArrayBuffer = 0;
 
@@ -939,8 +960,10 @@ public class DrawManager
       glFlush();
    #endif
    }
+#endif
 
-   void flushDrawImages( )
+#ifdef SHADERS
+   static void flushDrawImages( )
    {
       int index, stateblend, vertexcount, flushflag, programIndex;
       float vx0, vx1, vx2, vx3, vy0, vy1, vy2, vy3;
@@ -952,7 +975,7 @@ public class DrawManager
       DMImage *image, *bindimage;
       Texture texture, bindtexture;
       DMDrawBuffer *drawBuffer;
-      DMDrawVertex *vboVertex;
+      DMDrawVertex *vboVertex = null;
       DMProgram *program;
 
       glabCurArrayBuffer = 0;
@@ -971,7 +994,7 @@ public class DrawManager
          this.drawBufferIndex = ( this.drawBufferIndex + 1 ) % DM_CONTEXT_DRAW_BUFFER_COUNT;
          glBindBuffer( GL_ARRAY_BUFFER, drawBuffer->vbo );
 
-#if !defined(__EMSCRIPTEN__)
+#if !defined(_GLES) && !defined(_GLES2) // TODO:
          vboVertex = glMapBuffer( GL_ARRAY_BUFFER, GL_WRITE_ONLY );
 #endif
          vertexcount = 0;
@@ -1010,7 +1033,7 @@ public class DrawManager
           {
             if( vertexcount )
             {
-#if !defined(__EMSCRIPTEN__)
+#if !defined(_GLES) && !defined(_GLES2)  // TODO:
               glUnmapBuffer( GL_ARRAY_BUFFER );
 #endif
               // Flush font manager texture updates
@@ -1021,7 +1044,7 @@ public class DrawManager
               drawBuffer = &this.drawBuffer[this.drawBufferIndex];
               this.drawBufferIndex = ( this.drawBufferIndex + 1 ) % DM_CONTEXT_DRAW_BUFFER_COUNT;
               glBindBuffer( GL_ARRAY_BUFFER, drawBuffer->vbo );
-#if !defined(__EMSCRIPTEN__)
+#if !defined(_GLES) && !defined(_GLES2)   // TODO:
               vboVertex = glMapBuffer( GL_ARRAY_BUFFER, GL_WRITE_ONLY );
 #endif
               vertexcount = 0;
@@ -1130,7 +1153,7 @@ public class DrawManager
           vertexcount += 6;
         }
 
-#if !defined(__EMSCRIPTEN__)
+#if !defined(_GLES) && !defined(_GLES2)      // TODO:
         glUnmapBuffer( GL_ARRAY_BUFFER );
 #endif
         // Flush font manager texture updates
@@ -1142,6 +1165,7 @@ public class DrawManager
         ERRORCHECK();
       }
    }
+#endif
 
 public:
 
@@ -1151,7 +1175,7 @@ public:
 
    bool init( DrawManagerFlags flags )
    {
-      int drawBufferIndex, programIndex;
+      int drawBufferIndex;
       DMDrawBuffer *drawBuffer;
       uint vertexSize;
 
@@ -1166,7 +1190,9 @@ public:
          vertexSize = sizeof(DMDrawVertexFlat);
       else
       {
+#ifdef SHADERS
          DMProgram *program;
+         int programIndex;
          for( programIndex = 0 ; programIndex < DM_PROGRAM_COUNT ; programIndex++ )
          {
             program = &shaderPrograms[ programIndex ];
@@ -1187,6 +1213,7 @@ public:
             return false;
          // glUseProgram( 0 );
          vertexSize = sizeof(DMDrawVertex);
+#endif
       }
 
       for( drawBufferIndex = 0 ; drawBufferIndex < DM_CONTEXT_DRAW_BUFFER_COUNT ; drawBufferIndex++ )
@@ -1237,15 +1264,17 @@ public:
    {
       int mindex;
       float norminv;
+#ifdef SHADERS
       if(!flags.prehistoricOpenGL && !prevProgram)
          glGetIntegerv(GL_CURRENT_PROGRAM, (GLint *)&prevProgram);
+#endif
       // while(glGetError());
 
       // ERRORCHECK();
 
       // Save OpenGL state
       // FIXME: no glPushAttrib() in core profile
-#if !defined(__EMSCRIPTEN__)
+#if !defined(_GLES) && !defined(_GLES2)      // TODO:
       glPushClientAttrib( GL_CLIENT_ALL_ATTRIB_BITS );
       glPushAttrib( GL_ALL_ATTRIB_BITS );
 #endif
@@ -1423,12 +1452,15 @@ public:
 
    void flushImages( )
    {
-#if !defined(__EMSCRIPTEN__)
-     if( flags.prehistoricOpenGL )
-       flushDrawImagesArchaic( );
-     else
+#if !defined(_GLES2)
+      if(flags.prehistoricOpenGL)
+         flushDrawImagesArchaic();
+#endif
+
+#if defined(SHADERS)
+      if(!flags.prehistoricOpenGL)
+         flushDrawImages( );
 #endif
-       flushDrawImages( );
    }
 
    void finish()
@@ -1438,11 +1470,13 @@ public:
      if(vboAvailable)
         glBindBuffer( GL_ARRAY_BUFFER, 0 );
      glabCurArrayBuffer = 0;
+#ifdef SHADERS
      if( !flags.prehistoricOpenGL )
          glUseProgram( prevProgram );
+#endif
       // Restore OpenGL state
       // FIXME: no glPushAttrib() in core profile
-#if !defined(__EMSCRIPTEN__)
+#if !defined(_GLES) && !defined(_GLES2)       // TODO:
       glPopAttrib();
       glPopClientAttrib();
 #endif
index d8011d2..2d178b9 100644 (file)
@@ -30,6 +30,13 @@ import "Color"
    #include <GLES2/gl2.h>
 #endif
 
+#if defined(__ANDROID__) || defined(__ODROID__)
+#if !defined(_GLES)
+   #define _GLES
+#endif
+   #include <GLES/gl.h>
+#endif
+
 #include "cc.h"
 #include "mm.h"
 
@@ -113,7 +120,7 @@ public:
    {
      if(texture)
      {
-#if defined(SHADERS) && !defined(__EMSCRIPTEN__)
+#if defined(SHADERS) && !defined(_GLES2)
         int glformat = GL_RED;
 #else
         int glformat = GL_ALPHA;
@@ -122,7 +129,7 @@ public:
         int h = rect[3] - rect[1];
 
         if( channelcount == 1 );
-#if !defined(__EMSCRIPTEN__)
+#if !defined(_GLES) && !defined(_GLES2)
         else if( channelcount == 2 )
           glformat = GL_RG;
 #endif
@@ -132,19 +139,19 @@ public:
           glformat = GL_RGBA;
 
         // FIXME: no glPushAttrib() in core profile
-#if !defined(__EMSCRIPTEN__)
+#if !defined(_GLES) && !defined(_GLES2)
         glPushClientAttrib( GL_CLIENT_PIXEL_STORE_BIT );
         glPushAttrib( GL_TEXTURE_BIT );
 #endif
         glBindTexture( GL_TEXTURE_2D, texture.glTex );
         glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
-#if !defined(__EMSCRIPTEN__)
+#if !defined(_GLES) && !defined(_GLES2)
         glPixelStorei( GL_UNPACK_ROW_LENGTH, textureWidth );
         glPixelStorei( GL_UNPACK_SKIP_PIXELS, rect[0] );
         glPixelStorei( GL_UNPACK_SKIP_ROWS, rect[1] );
 #endif
         glTexSubImage2D( GL_TEXTURE_2D, 0, rect[0], rect[1], w, h, glformat, GL_UNSIGNED_BYTE, data );
-#if !defined(__EMSCRIPTEN__)
+#if !defined(_GLES) && !defined(_GLES2)
         glPopAttrib();
         glPopClientAttrib();
 #endif
index 96676ff..9571308 100644 (file)
@@ -22,6 +22,13 @@ import "instance"
    #include <GLES2/gl2.h>
 #endif
 
+#if defined(__ANDROID__) || defined(__ODROID__)
+#if !defined(_GLES)
+   #define _GLES
+#endif
+   #include <GLES/gl.h>
+#endif
+
 // TOFIX:
 int GL_ARB_texture_non_power_of_two = 1;
 int GL_EXT_texture_filter_anisotropic = 1;