psx_gpu: do enhanced lines
[pcsx_rearmed.git] / plugins / gpu-gles / gpuTexture.c
index f057951..2f96482 100644 (file)
  \r
 #define _IN_TEXTURE\r
 \r
-#ifdef _WINDOWS\r
-#include "stdafx.h"\r
-\r
-#include "externals.h"\r
-#include "texture.h"\r
-#include "gpu.h"\r
-#include "prim.h"\r
-#else\r
 #include "gpuStdafx.h"\r
 \r
 #include "gpuDraw.h"\r
@@ -83,7 +75,7 @@
 #include "gpuTexture.h"\r
 #include "gpuPlugin.h"\r
 #include "gpuPrim.h"\r
-#endif\r
+\r
 #define CLUTCHK   0x00060000\r
 #define CLUTSHIFT 17\r
 \r
@@ -98,11 +90,7 @@ GLuint        gTexFrameName=0;
 int           iTexGarbageCollection=1;\r
 unsigned long dwTexPageComp=0;\r
 int           iVRamSize=0;\r
-#ifdef _WINDOWS\r
-int           iClampType=GL_CLAMP;\r
-#else\r
 int           iClampType=GL_CLAMP_TO_EDGE;\r
-#endif\r
 int iFilter = GL_LINEAR;\r
 void               (*LoadSubTexFn) (int,int,short,short);\r
 unsigned long      (*PalTexturedColourFn)  (unsigned long);\r
@@ -166,10 +154,6 @@ unsigned short (*PTCF[2]) (unsigned short);
 // texture cache implementation\r
 ////////////////////////////////////////////////////////////////////////\r
 \r
-#ifdef _WINDOWS\r
-#pragma pack(1)\r
-#endif\r
-\r
 // "texture window" cache entry\r
 \r
 typedef struct textureWndCacheEntryTag\r
@@ -195,9 +179,6 @@ typedef struct textureSubCacheEntryTagS
  unsigned char   Opaque;\r
 } textureSubCacheEntryS;\r
 \r
-#ifdef _WINDOWS\r
-#pragma pack()\r
-#endif\r
 \r
 //---------------------------------------------\r
 \r
@@ -491,6 +472,9 @@ void CheckTextureMemory(void)
    return;\r
   }\r
 \r
+#if 1\r
+ iSortTexCnt=MAXSORTTEX;\r
+#else // below vram detector supposedly crashes some drivers\r
 \r
         iTSize=256;\r
  p=(char *)malloc(iTSize*iTSize*4);\r
@@ -527,6 +511,7 @@ void CheckTextureMemory(void)
  else  iSortTexCnt=iCnt-3+min(1,0);       // place for menu&texwnd\r
 \r
  if(iSortTexCnt<8) iSortTexCnt=8;\r
+#endif\r
 } \r
 \r
 ////////////////////////////////////////////////////////////////////////\r
@@ -589,6 +574,7 @@ void CleanupTextureStore()
  int i,j;textureWndCacheEntry * tsx;\r
  //----------------------------------------------------//\r
  glBindTexture(GL_TEXTURE_2D,0);\r
+ glError();\r
  //----------------------------------------------------//\r
  free(texturepart);                                    // free tex part\r
  texturepart=0;\r
@@ -603,34 +589,41 @@ void CleanupTextureStore()
   {\r
    if(tsx->texname)                                    // -> some tex?\r
     glDeleteTextures(1,&tsx->texname);                 // --> delete it\r
+    glError();\r
   }\r
  iMaxTexWnds=0;                                        // no more tex wnds\r
  //----------------------------------------------------//\r
  if(gTexMovieName!=0)                                  // some movie tex?\r
   glDeleteTextures(1, &gTexMovieName);                 // -> delete it\r
+  glError();\r
  gTexMovieName=0;                                      // no more movie tex\r
  //----------------------------------------------------//\r
  if(gTexFrameName!=0)                                  // some 15bit framebuffer tex?\r
   glDeleteTextures(1, &gTexFrameName);                 // -> delete it\r
+  glError();\r
  gTexFrameName=0;                                      // no more movie tex\r
  //----------------------------------------------------//\r
  if(gTexBlurName!=0)                                   // some 15bit framebuffer tex?\r
   glDeleteTextures(1, &gTexBlurName);                  // -> delete it\r
+  glError();\r
  gTexBlurName=0;                                       // no more movie tex\r
  //----------------------------------------------------//\r
  for(i=0;i<3;i++)                                    // -> loop\r
   for(j=0;j<MAXTPAGES;j++)                           // loop tex pages\r
    {\r
     free(pscSubtexStore[i][j]);                      // -> clean mem\r
+    pscSubtexStore[i][j]=0;\r
    }\r
  for(i=0;i<MAXSORTTEX;i++)\r
   {\r
    if(uiStexturePage[i])                             // --> tex used ?\r
     {\r
      glDeleteTextures(1,&uiStexturePage[i]);\r
+     glError();\r
      uiStexturePage[i]=0;                            // --> delete it\r
     }\r
    free(pxSsubtexLeft[i]);                           // -> clean mem\r
+   pxSsubtexLeft[i]=0;\r
   }\r
  //----------------------------------------------------//\r
 }\r
@@ -648,7 +641,7 @@ void ResetTextureArea(BOOL bDelTex)
  dwTexPageComp=0;\r
 \r
  //----------------------------------------------------//\r
- if(bDelTex) {glBindTexture(GL_TEXTURE_2D,0);gTexName=0;}\r
+ if(bDelTex) {glBindTexture(GL_TEXTURE_2D,0); glError();gTexName=0;}\r
  //----------------------------------------------------//\r
  tsx=wcWndtexStore;\r
  for(i=0;i<MAXWNDTEXCACHE;i++,tsx++)\r
@@ -656,7 +649,7 @@ void ResetTextureArea(BOOL bDelTex)
    tsx->used=0;\r
    if(bDelTex && tsx->texname)\r
     {\r
-     glDeleteTextures(1,&tsx->texname);\r
+     glDeleteTextures(1,&tsx->texname); glError();\r
      tsx->texname=0;\r
     }\r
   }\r
@@ -678,7 +671,7 @@ void ResetTextureArea(BOOL bDelTex)
    lu=pxSsubtexLeft[i];\r
    lu->l=0;\r
    if(bDelTex && uiStexturePage[i])\r
-    {glDeleteTextures(1,&uiStexturePage[i]);uiStexturePage[i]=0;}\r
+    {glDeleteTextures(1,&uiStexturePage[i]); glError();uiStexturePage[i]=0;}\r
   }\r
 }\r
 \r
@@ -900,21 +893,25 @@ void DefineTextureWnd(void)
 {\r
  if(gTexName==0)\r
   glGenTextures(1, &gTexName);\r
-\r
+ glError();\r
  glBindTexture(GL_TEXTURE_2D, gTexName);\r
-\r
+ glError();\r
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);\r
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);\r
\r
+ glError(); \r
 {\r
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+   glError();\r
   }\r
 \r
  glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, \r
               TWin.Position.x1, \r
               TWin.Position.y1, \r
               0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+ glError();\r
+ //LOGE("DefineTextureWnd x:%d y:%d",TWin.Position.x1,TWin.Position.y1);\r
+\r
 }\r
 \r
 ////////////////////////////////////////////////////////////////////////\r
@@ -1657,21 +1654,23 @@ void DefinePalTextureWnd(void)
 {\r
  if(gTexName==0)\r
   glGenTextures(1, &gTexName);\r
-\r
+ glError();\r
  glBindTexture(GL_TEXTURE_2D, gTexName);\r
-\r
+ glError();\r
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);\r
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);\r
\r
+ glError();\r
 {\r
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
   }\r
-\r
+ glError();\r
  glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, \r
               TWin.Position.x1, \r
               TWin.Position.y1, \r
               0, GL_RGBA, GL_UNSIGNED_BYTE,texturepart);\r
+  glError();\r
+  //LOGE("DefinePalTextureWnd x:%d y:%d",TWin.Position.x1,TWin.Position.y1);\r
 }\r
 \r
 ///////////////////////////////////////////////////////\r
@@ -1918,31 +1917,32 @@ void DefinePackedTextureMovie(void)
 {\r
  if(gTexMovieName==0)\r
   {\r
-   glGenTextures(1, &gTexMovieName);\r
+   glEnable(GL_TEXTURE_2D);\r
+   glGenTextures(1, &gTexMovieName); glError();\r
    gTexName=gTexMovieName;\r
-   glBindTexture(GL_TEXTURE_2D, gTexName);\r
+   glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
 \r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
 \r
    if(!bUseFastMdec) \r
     {\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glError();\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glError();\r
     }\r
    else\r
     {\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
     }\r
                                  \r
    glTexImage2D(GL_TEXTURE_2D, 0, //giWantedRGBA, \r
                 GL_RGBA,\r
-                256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+                256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
   }\r
  else \r
   {\r
-   gTexName=gTexMovieName;glBindTexture(GL_TEXTURE_2D, gTexName);\r
+   gTexName=gTexMovieName;glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
   }\r
 \r
  glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,\r
@@ -1950,7 +1950,9 @@ void DefinePackedTextureMovie(void)
                  (xrMovieArea.y1-xrMovieArea.y0), \r
                  GL_RGBA,\r
                  GL_UNSIGNED_SHORT,\r
-                 texturepart);\r
+                 texturepart); glError();\r
+ //LOGE("DefinePackedTextureMovie x:%d y:%d",(xrMovieArea.x1-xrMovieArea.x0),(xrMovieArea.y1-xrMovieArea.y0));\r
+\r
 }\r
 \r
 ////////////////////////////////////////////////////////////////////////\r
@@ -1959,35 +1961,36 @@ void DefineTextureMovie(void)
 {\r
  if(gTexMovieName==0)\r
   {\r
-   glGenTextures(1, &gTexMovieName);\r
+   glGenTextures(1, &gTexMovieName); glError();\r
    gTexName=gTexMovieName;\r
-   glBindTexture(GL_TEXTURE_2D, gTexName);\r
+   glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
 \r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
  \r
    if(!bUseFastMdec) \r
     {\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glError();\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glError();\r
     }\r
    else\r
     {\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
     }\r
 \r
-   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
   }\r
  else \r
   {\r
-   gTexName=gTexMovieName;glBindTexture(GL_TEXTURE_2D, gTexName);\r
+   gTexName=gTexMovieName;glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
   }\r
 \r
  glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,\r
                  (xrMovieArea.x1-xrMovieArea.x0), \r
                  (xrMovieArea.y1-xrMovieArea.y0), \r
-                 GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+                 GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
+ //LOGE("DefineTextureMovie x:%d y:%d",(xrMovieArea.x1-xrMovieArea.x0),(xrMovieArea.y1-xrMovieArea.y0));\r
 }\r
 \r
 ////////////////////////////////////////////////////////////////////////\r
@@ -2241,14 +2244,14 @@ GLuint BlackFake15BitTexture(void)
   {\r
    if(!gTexFrameName)\r
     {\r
-     glGenTextures(1, &gTexFrameName);\r
+     glGenTextures(1, &gTexFrameName); glError();\r
      gTexName=gTexFrameName;\r
-     glBindTexture(GL_TEXTURE_2D, gTexName);\r
+     glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
 \r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
  \r
      {\r
        unsigned long * ta=(unsigned long *)texturepart;\r
@@ -2256,14 +2259,15 @@ GLuint BlackFake15BitTexture(void)
         for(x1=0;x1<=4;x1++)\r
          *ta++=0xff000000;\r
       }\r
-     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
+\r
     }\r
    else\r
     {\r
      gTexName=gTexFrameName;\r
-     glBindTexture(GL_TEXTURE_2D, gTexName);\r
+     glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
     }\r
-\r
+      //LOGE("BlackFake15BitTexture x:%d y:%d",4,4);\r
    ubOpaqueDraw=0;\r
 \r
    return (GLuint)gTexName;\r
@@ -2334,18 +2338,18 @@ GLuint Fake15BitTexture(void)
    if(iResX>640  || iResY>480)  iFTex=1024;\r
    else                         iFTex=512; \r
 \r
-   glGenTextures(1, &gTexFrameName);\r
+   glGenTextures(1, &gTexFrameName); glError();\r
    gTexName=gTexFrameName;\r
-   glBindTexture(GL_TEXTURE_2D, gTexName);\r
+   glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
 \r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
 \r
    p=(char *)malloc(iFTex*iFTex*4);\r
    memset(p,0,iFTex*iFTex*4);\r
-   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, iFTex, iFTex, 0, GL_RGBA, GL_UNSIGNED_BYTE, p);\r
+   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, iFTex, iFTex, 0, GL_RGBA, GL_UNSIGNED_BYTE, p); glError();\r
    free(p);\r
 \r
    glGetError();\r
@@ -2353,9 +2357,9 @@ GLuint Fake15BitTexture(void)
  else \r
   {\r
    gTexName=gTexFrameName;\r
-   glBindTexture(GL_TEXTURE_2D, gTexName);\r
+   glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
   }\r
-\r
+      //LOGE("Fake15BitTexture x:%d y:%d",iFTex,iFTex);\r
  x1+=PreviousPSXDisplay.Range.x0;\r
  y1+=PreviousPSXDisplay.Range.y0;\r
 \r
@@ -2427,14 +2431,14 @@ GLuint Fake15BitTexture(void)
                       iYAdjust,\r
                       rSrc.left+rRatioRect.left,\r
                       iResY-rSrc.bottom-rRatioRect.top,\r
-                      x1,y1);\r
+                      x1,y1); glError();\r
 \r
  if(glGetError()) \r
   {\r
    char * p=(char *)malloc(iFTex*iFTex*4);\r
    memset(p,0,iFTex*iFTex*4);\r
    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, iFTex, iFTex,\r
-                   GL_RGBA, GL_UNSIGNED_BYTE, p);\r
+                   GL_RGBA, GL_UNSIGNED_BYTE, p); glError();\r
    free(p);\r
   }\r
 \r
@@ -3433,29 +3437,30 @@ void DefineSubTextureSortHiRes(void)
 \r
  if(!gTexName)             \r
   {\r
-   glGenTextures(1, &gTexName);\r
-   glBindTexture(GL_TEXTURE_2D, gTexName);\r
+   glGenTextures(1, &gTexName); glError();\r
+   glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
 \r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
 \r
    if(iFilterType)\r
     {\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glError();\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glError();\r
     }\r
    else\r
     {            \r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
     }   \r
-   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturebuffer);\r
+   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturebuffer); glError();\r
   }\r
- else glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ else glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
 \r
  glTexSubImage2D(GL_TEXTURE_2D, 0, XTexS<<1, YTexS<<1,\r
                  DXTexS<<1, DYTexS<<1,\r
-                 GL_RGBA, GL_UNSIGNED_BYTE, texturebuffer);\r
+                 GL_RGBA, GL_UNSIGNED_BYTE, texturebuffer); glError();\r
+ //LOGE("DefineSubTextureSortHiRes x:%d y:%d",XTexS<<1,YTexS<<1);\r
 }\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
@@ -3465,29 +3470,30 @@ void DefineSubTextureSort(void)
 \r
  if(!gTexName)\r
   {\r
-   glGenTextures(1, &gTexName);\r
-   glBindTexture(GL_TEXTURE_2D, gTexName);\r
+   glGenTextures(1, &gTexName); glError();\r
+   glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
 \r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
 \r
    if(iFilterType)\r
     {\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glError();\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glError();\r
     }\r
    else\r
     {\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
-     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
     }\r
-   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0,GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0,GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
   }\r
- else glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ else glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
 \r
  glTexSubImage2D(GL_TEXTURE_2D, 0, XTexS, YTexS,\r
                  DXTexS, DYTexS,\r
-                 GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+                 GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
+                                        //LOGE("DefineSubTextureSort x:%d y:%d w:%d h:%d",XTexS,YTexS,DXTexS,DYTexS);\r
 }\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r