gpu-gles: schtruck/fpse merge: don't delay gl init
[pcsx_rearmed.git] / plugins / gpu-gles / gpuDraw.c
index 597f286..3842503 100644 (file)
 \r
 #define _IN_DRAW\r
 \r
-#ifdef _WINDOWS\r
-#include "stdafx.h"\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <math.h>\r
-#include "externals.h"\r
-#include "gpu.h"\r
-#include "draw.h"\r
-#include "prim.h"\r
-#include "texture.h"\r
-#else\r
+\r
 #include "gpuExternals.h"\r
 #include "gpuPlugin.h"\r
 #include "gpuDraw.h"\r
@@ -48,7 +38,6 @@
 #include <stdio.h>\r
 #include <stdlib.h>\r
 #include <math.h>\r
-#endif\r
 //#include "menu.h"\r
             \r
 ////////////////////////////////////////////////////////////////////////////////////\r
 ////////////////////////////////////////////////////////////////////////////////////\r
 // draw globals\r
 \r
-#ifdef _WINDOWS\r
-HDC            dcGlobal=NULL;\r
-HWND           hWWindow;\r
-#else\r
 void  glBlendEquationEXT(GLenum mode);\r
 void  glColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format,GLenum type, const GLvoid *data);\r
-#endif\r
 \r
 // draw globals; most will be initialized again later (by config or checks) \r
 \r
@@ -158,50 +142,6 @@ GLbitfield     uiBufferBits=GL_COLOR_BUFFER_BIT;
 // Set OGL pixel format\r
 ////////////////////////////////////////////////////////////////////////\r
  \r
-#ifdef _WINDOWS\r
-BOOL bSetupPixelFormat(HDC hDC)\r
-{\r
- int pixelformat;\r
- static PIXELFORMATDESCRIPTOR pfd = \r
-  {\r
-   sizeof(PIXELFORMATDESCRIPTOR),    // size of this pfd\r
-    1,                               // version number\r
-    PFD_DRAW_TO_WINDOW |             // support window\r
-      PFD_SUPPORT_OPENGL |           // support OpenGL\r
-      PFD_DOUBLEBUFFER,              // double buffered\r
-    PFD_TYPE_RGBA,                   // RGBA type\r
-    16,                              // 16-bit color depth  (adjusted later)\r
-    0, 0, 0, 0, 0, 0,                // color bits ignored\r
-    0,                               // no alpha buffer\r
-    0,                               // shift bit ignored\r
-    0,                               // no accumulation buffer\r
-    0, 0, 0, 0,                      // accum bits ignored\r
-    0,                               // z-buffer    \r
-    0,\r
-    0,                               // no auxiliary buffer\r
-    PFD_MAIN_PLANE,                  // main layer\r
-    0,                               // reserved\r
-    0, 0, 0                          // layer masks ignored\r
-  };\r
\r
- pfd.cColorBits=iColDepth;                             // set user color depth\r
- pfd.cDepthBits=iZBufferDepth;                         // set user zbuffer (by psx mask)\r
-\r
- if((pixelformat=ChoosePixelFormat(hDC,&pfd))==0)     \r
-  {\r
-   MessageBox(NULL,"ChoosePixelFormat failed","Error",MB_OK);\r
-   return FALSE;\r
-  }\r
-\r
- if(SetPixelFormat(hDC,pixelformat, &pfd)==FALSE)\r
-  {\r
-   MessageBox(NULL,"SetPixelFormat failed","Error",MB_OK);\r
-   return FALSE;\r
-  }\r
-\r
- return TRUE;\r
-}\r
-#endif\r
 \r
 ////////////////////////////////////////////////////////////////////////\r
 // Get extension infos (f.e. pal textures / packed pixels)\r
@@ -211,16 +151,12 @@ void GetExtInfos(void)
 {\r
  BOOL bPacked=FALSE;                                   // default: no packed pixel support\r
 \r
- if(strstr((s8 *)glGetString(GL_EXTENSIONS),         // packed pixels available?\r
+ if(strstr((char *)glGetString(GL_EXTENSIONS),         // packed pixels available?\r
     "GL_EXT_packed_pixels"))                          \r
   bPacked=TRUE;                                        // -> ok\r
 \r
  \r
- #ifdef _WINDOWS\r
- iClampType=GL_CLAMP;\r
-#else\r
  iClampType=GL_CLAMP_TO_EDGE;\r
-#endif\r
 }\r
 \r
 ////////////////////////////////////////////////////////////////////////\r
@@ -304,15 +240,9 @@ void CreateScanLines(void)
 // Initialize OGL\r
 ////////////////////////////////////////////////////////////////////////\r
 \r
-#ifdef _WINDOWS    \r
-HGLRC GLCONTEXT=NULL;\r
-#endif\r
-\r
-#ifdef MAEMO_CHANGES\r
 #define MODE_RAW 0\r
 #define MODE_X11 1\r
 #define MODE_SDL 2\r
-int pandora_driver_mode = MODE_RAW;\r
 int use_fsaa = 0;\r
 \r
 EGLDisplay display;\r
@@ -345,9 +275,7 @@ EGLint attrib_list_fsaa[] =
 \r
 EGLint attrib_list[] =\r
 {\r
-       EGL_SURFACE_TYPE, EGL_WINDOW_BIT,\r
-       EGL_BUFFER_SIZE,  0,\r
-       EGL_DEPTH_SIZE,   16,\r
+//     EGL_DEPTH_SIZE,   16,\r
        EGL_NONE\r
 };\r
 \r
@@ -368,7 +296,8 @@ bool TestEGLError(const char* pszLocation)
        return TRUE;\r
 }\r
 \r
-void maemoGLinit(){\r
+static void initEGL(void)\r
+{\r
        printf ("GL init\n");\r
 \r
        EGLint numConfigs;\r
@@ -400,15 +329,6 @@ void maemoGLinit(){
        }\r
 \r
 #if defined(USE_X11)\r
-       pandora_driver_mode = MODE_X11; // TODO make configurable\r
-#else\r
-       pandora_driver_mode = MODE_RAW; // TODO make configurable\r
-#endif\r
-       \r
-    switch(pandora_driver_mode)\r
-            {            \r
-#if defined(USE_X11)\r
-        case MODE_X11:\r
             // Initializes the display and screen\r
             x11Display = XOpenDisplay( ":0" );\r
             if (!x11Display)\r
@@ -463,13 +383,9 @@ void maemoGLinit(){
             XSendEvent(x11Display, DefaultRootWindow(x11Display), False, SubstructureRedirectMask | SubstructureNotifyMask, &xev);\r
 \r
             display = eglGetDisplay( (EGLNativeDisplayType)x11Display );\r
-            break;\r
-#endif\r
-        case MODE_RAW:\r
-        default:\r
+#else\r
             display = eglGetDisplay( (EGLNativeDisplayType)0 );\r
-            break;\r
-    }\r
+#endif\r
 \r
        if( display == EGL_NO_DISPLAY )\r
        {\r
@@ -492,18 +408,11 @@ void maemoGLinit(){
                printf( "GLES EGL Error: eglCreateContext failed\n" );\r
        }\r
 \r
-    switch(pandora_driver_mode)\r
-       {\r
 #if defined(USE_X11)\r
-        case MODE_X11:\r
             surface = eglCreateWindowSurface( display, config, (EGLNativeDisplayType)x11Window, NULL );\r
-            break;\r
-#endif\r
-        case MODE_RAW:\r
-        default:\r
+#else\r
             surface = eglCreateWindowSurface( display, config, (EGLNativeDisplayType)0, NULL );\r
-            break;\r
-       }\r
+#endif\r
 \r
     eglMakeCurrent( display, surface, surface, context );\r
     if (!TestEGLError("eglMakeCurrent"))\r
@@ -511,24 +420,11 @@ void maemoGLinit(){
     else\r
         printf("GLES Window Opened\n");\r
 }\r
-#endif\r
 \r
 int GLinitialize() \r
 {\r
- //----------------------------------------------------// \r
-#ifdef _WINDOWS\r
- HGLRC objectRC;\r
- // init\r
- dcGlobal = GetDC(hWWindow);                           // FIRST: dc/rc stuff\r
- objectRC = wglCreateContext(dcGlobal); \r
- GLCONTEXT=objectRC;\r
- wglMakeCurrent(dcGlobal, objectRC);\r
- // CheckWGLExtensions(dcGlobal);\r
- if(bWindowMode) ReleaseDC(hWWindow,dcGlobal);         // win mode: release dc again\r
-#endif\r
-#ifdef MAEMO_CHANGES\r
-        maemoGLinit();\r
-#endif\r
+ initEGL();\r
+\r
  //----------------------------------------------------// \r
 \r
  glViewport(rRatioRect.left,                           // init viewport by ratio rect\r
@@ -616,25 +512,15 @@ void GLcleanup()
 {                                                     \r
  CleanupTextureStore();                                // bye textures\r
 \r
-#ifdef _WINDOWS \r
- wglMakeCurrent(NULL, NULL);                           // bye context\r
- if(GLCONTEXT) wglDeleteContext(GLCONTEXT);\r
- if(!bWindowMode && dcGlobal) \r
-  ReleaseDC(hWWindow,dcGlobal);\r
-#endif\r
-\r
        eglMakeCurrent( display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT );\r
        eglDestroySurface( display, surface );\r
        eglDestroyContext( display, context );\r
        eglTerminate( display );\r
 \r
 #if defined(USE_X11)\r
-       if (pandora_driver_mode == MODE_X11)\r
-       {\r
                if (x11Window) XDestroyWindow(x11Display, x11Window);\r
                if (x11Colormap) XFreeColormap( x11Display, x11Colormap );\r
                if (x11Display) XCloseDisplay(x11Display);\r
-       }\r
 #endif\r
 }\r
 \r
@@ -1335,9 +1221,7 @@ void assignTexture4(void)
 // render pos / buffers\r
 ////////////////////////////////////////////////////////////////////////\r
 \r
-#ifndef _WINDOWS\r
 #define EqualRect(pr1,pr2) ((pr1)->left==(pr2)->left && (pr1)->top==(pr2)->top && (pr1)->right==(pr2)->right && (pr1)->bottom==(pr2)->bottom)\r
-#endif\r
 \r
 ////////////////////////////////////////////////////////////////////////\r
 // SetDisplaySettings: "simply" calcs the new drawing area and updates\r