Renamed functions and structures to GLES (rather than GL) to avoid confusion with the OpenGL renderer, which prior used the same names. Removed references to GL_IMG_texture_format_BGRA8888, which will not be supported here. Made it so renderer no longer caches texture filter mode, because I think that is actually bound to specific textures, so we'd need to cache the currently bound texture too ... I don't want to go through that trouble. DOES cache blend function though. gsoc2008_iphone
authorHolmes Futrell <hfutrell@umail.ucsb.edu>
Sat, 16 Aug 2008 00:25:03 +0000
branchgsoc2008_iphone
changeset 2456 da4fd7cf8745
parent 2455 0416aeddbb86
child 2457 946f43d71626
Renamed functions and structures to GLES (rather than GL) to avoid confusion with the OpenGL renderer, which prior used the same names. Removed references to GL_IMG_texture_format_BGRA8888, which will not be supported here. Made it so renderer no longer caches texture filter mode, because I think that is actually bound to specific textures, so we'd need to cache the currently bound texture too ... I don't want to go through that trouble. DOES cache blend function though.
src/video/glesrenderer/SDL_renderer_gles.c
--- a/src/video/glesrenderer/SDL_renderer_gles.c	Sat Aug 16 00:19:52 2008 +0000
+++ b/src/video/glesrenderer/SDL_renderer_gles.c	Sat Aug 16 00:25:03 2008 +0000
@@ -30,52 +30,52 @@
 #include "SDL_rect_c.h"
 #include "SDL_yuv_sw_c.h"
 
-/* OpenGL ES 1.1 renderer implementation */
+/* OpenGL ES 1.1 renderer implementation, based on the OpenGL renderer */
 
 static const float inv255f = 1.0f / 255.0f;
 
-static SDL_Renderer *GL_CreateRenderer(SDL_Window * window, Uint32 flags);
-static int GL_ActivateRenderer(SDL_Renderer * renderer);
-static int GL_DisplayModeChanged(SDL_Renderer * renderer);
-static int GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture);
-static int GL_QueryTexturePixels(SDL_Renderer * renderer,
+static SDL_Renderer *GLES_CreateRenderer(SDL_Window * window, Uint32 flags);
+static int GLES_ActivateRenderer(SDL_Renderer * renderer);
+static int GLES_DisplayModeChanged(SDL_Renderer * renderer);
+static int GLES_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture);
+static int GLES_QueryTexturePixels(SDL_Renderer * renderer,
                                  SDL_Texture * texture, void **pixels,
                                  int *pitch);
-static int GL_SetTexturePalette(SDL_Renderer * renderer,
+static int GLES_SetTexturePalette(SDL_Renderer * renderer,
                                 SDL_Texture * texture,
                                 const SDL_Color * colors, int firstcolor,
                                 int ncolors);
-static int GL_GetTexturePalette(SDL_Renderer * renderer,
+static int GLES_GetTexturePalette(SDL_Renderer * renderer,
                                 SDL_Texture * texture, SDL_Color * colors,
                                 int firstcolor, int ncolors);
-static int GL_SetTextureColorMod(SDL_Renderer * renderer,
+static int GLES_SetTextureColorMod(SDL_Renderer * renderer,
                                  SDL_Texture * texture);
-static int GL_SetTextureAlphaMod(SDL_Renderer * renderer,
+static int GLES_SetTextureAlphaMod(SDL_Renderer * renderer,
                                  SDL_Texture * texture);
-static int GL_SetTextureBlendMode(SDL_Renderer * renderer,
+static int GLES_SetTextureBlendMode(SDL_Renderer * renderer,
                                   SDL_Texture * texture);
-static int GL_SetTextureScaleMode(SDL_Renderer * renderer,
+static int GLES_SetTextureScaleMode(SDL_Renderer * renderer,
                                   SDL_Texture * texture);
-static int GL_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture,
+static int GLES_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture,
                             const SDL_Rect * rect, const void *pixels,
                             int pitch);
-static int GL_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture,
+static int GLES_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture,
                           const SDL_Rect * rect, int markDirty, void **pixels,
                           int *pitch);
-static void GL_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture);
-static void GL_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture,
+static void GLES_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture);
+static void GLES_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture,
                             int numrects, const SDL_Rect * rects);
-static int GL_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b,
+static int GLES_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b,
                          Uint8 a, const SDL_Rect * rect);
-static int GL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
+static int GLES_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
                          const SDL_Rect * srcrect, const SDL_Rect * dstrect);
-static void GL_RenderPresent(SDL_Renderer * renderer);
-static void GL_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture);
-static void GL_DestroyRenderer(SDL_Renderer * renderer);
+static void GLES_RenderPresent(SDL_Renderer * renderer);
+static void GLES_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture);
+static void GLES_DestroyRenderer(SDL_Renderer * renderer);
 
 
 SDL_RenderDriver GL_ES_RenderDriver = {
-    GL_CreateRenderer,
+    GLES_CreateRenderer,
     {
      "opengl_es",
      (SDL_RENDERER_SINGLEBUFFER | SDL_RENDERER_PRESENTDISCARD |
@@ -86,16 +86,8 @@
       SDL_TEXTUREBLENDMODE_BLEND | SDL_TEXTUREBLENDMODE_ADD |
       SDL_TEXTUREBLENDMODE_MOD),
      (SDL_TEXTURESCALEMODE_NONE | SDL_TEXTURESCALEMODE_FAST |
-      SDL_TEXTURESCALEMODE_SLOW),
-#ifdef GL_IMG_texture_format_BGRA8888     
-		3,
-#else
-		2,
-#endif
-     {
-#ifdef GL_IMG_texture_format_BGRA8888
-		SDL_PIXELFORMAT_ARGB8888,
-#endif
+      SDL_TEXTURESCALEMODE_SLOW), 2,
+		{
 		SDL_PIXELFORMAT_RGB24,
 		SDL_PIXELFORMAT_ABGR8888,
 		},
@@ -108,7 +100,6 @@
     SDL_GLContext context;
     SDL_bool updateSize;
     int blendMode;
-    int scaleMode;
 	
 #ifndef APIENTRY
 #define APIENTRY
@@ -122,7 +113,7 @@
 	#include "SDL_glesfuncs.h"
 	#undef SDL_PROC
 
-} GL_RenderData;
+} GLES_RenderData;
 
 typedef struct
 {
@@ -135,10 +126,10 @@
     void *pixels;
     int pitch;
     SDL_DirtyRectList dirty;
-} GL_TextureData;
+} GLES_TextureData;
 
 static void
-GL_SetError(const char *prefix, GLenum result)
+GLES_SetError(const char *prefix, GLenum result)
 {
     const char *error;
 
@@ -172,7 +163,7 @@
 }
 
 static int
-GL_LoadFunctions(GL_RenderData * data)
+GLES_LoadFunctions(GLES_RenderData * data)
 {
 	
 	#define SDL_PROC(ret,func,params) \
@@ -184,7 +175,7 @@
 }
 
 void
-GL_AddRenderDriver(_THIS)
+GLES_AddRenderDriver(_THIS)
 {
     if (_this->GL_CreateContext) {
         SDL_AddRenderDriver(0, &GL_ES_RenderDriver);
@@ -192,13 +183,11 @@
 }
 
 SDL_Renderer *
-GL_CreateRenderer(SDL_Window * window, Uint32 flags)
+GLES_CreateRenderer(SDL_Window * window, Uint32 flags)
 {
-	
-	printf("gl(es) create renderer ...\n");
-	
+		
     SDL_Renderer *renderer;
-    GL_RenderData *data;
+    GLES_RenderData *data;
     GLint value;
     int doublebuffer;
 
@@ -214,32 +203,32 @@
         return NULL;
     }
 
-    data = (GL_RenderData *) SDL_calloc(1, sizeof(*data));
+    data = (GLES_RenderData *) SDL_calloc(1, sizeof(*data));
     if (!data) {
-        GL_DestroyRenderer(renderer);
+        GLES_DestroyRenderer(renderer);
         SDL_OutOfMemory();
         return NULL;
     }
 
-    renderer->ActivateRenderer = GL_ActivateRenderer;
-    renderer->DisplayModeChanged = GL_DisplayModeChanged;
-    renderer->CreateTexture = GL_CreateTexture;
-    renderer->QueryTexturePixels = GL_QueryTexturePixels;
-    renderer->SetTexturePalette = GL_SetTexturePalette;
-    renderer->GetTexturePalette = GL_GetTexturePalette;
-    renderer->SetTextureColorMod = GL_SetTextureColorMod;
-    renderer->SetTextureAlphaMod = GL_SetTextureAlphaMod;
-    renderer->SetTextureBlendMode = GL_SetTextureBlendMode;
-    renderer->SetTextureScaleMode = GL_SetTextureScaleMode;
-    renderer->UpdateTexture = GL_UpdateTexture;
-    renderer->LockTexture = GL_LockTexture;
-    renderer->UnlockTexture = GL_UnlockTexture;
-    renderer->DirtyTexture = GL_DirtyTexture;
-    renderer->RenderFill = GL_RenderFill;
-    renderer->RenderCopy = GL_RenderCopy;
-    renderer->RenderPresent = GL_RenderPresent;
-    renderer->DestroyTexture = GL_DestroyTexture;
-    renderer->DestroyRenderer = GL_DestroyRenderer;
+    renderer->ActivateRenderer = GLES_ActivateRenderer;
+    renderer->DisplayModeChanged = GLES_DisplayModeChanged;
+    renderer->CreateTexture = GLES_CreateTexture;
+    renderer->QueryTexturePixels = GLES_QueryTexturePixels;
+    renderer->SetTexturePalette = GLES_SetTexturePalette;
+    renderer->GetTexturePalette = GLES_GetTexturePalette;
+    renderer->SetTextureColorMod = GLES_SetTextureColorMod;
+    renderer->SetTextureAlphaMod = GLES_SetTextureAlphaMod;
+    renderer->SetTextureBlendMode = GLES_SetTextureBlendMode;
+    renderer->SetTextureScaleMode = GLES_SetTextureScaleMode;
+    renderer->UpdateTexture = GLES_UpdateTexture;
+    renderer->LockTexture = GLES_LockTexture;
+    renderer->UnlockTexture = GLES_UnlockTexture;
+    renderer->DirtyTexture = GLES_DirtyTexture;
+    renderer->RenderFill = GLES_RenderFill;
+    renderer->RenderCopy = GLES_RenderCopy;
+    renderer->RenderPresent = GLES_RenderPresent;
+    renderer->DestroyTexture = GLES_DestroyTexture;
+    renderer->DestroyRenderer = GLES_DestroyRenderer;
     renderer->info = GL_ES_RenderDriver.info;
     renderer->window = window->id;
     renderer->driverdata = data;
@@ -247,18 +236,18 @@
 	
     renderer->info.flags = (SDL_RENDERER_PRESENTDISCARD | SDL_RENDERER_ACCELERATED);
 
-    if (GL_LoadFunctions(data) < 0) {
-        GL_DestroyRenderer(renderer);
+    if (GLES_LoadFunctions(data) < 0) {
+        GLES_DestroyRenderer(renderer);
         return NULL;
     }
 
     data->context = SDL_GL_CreateContext(window->id);
     if (!data->context) {
-        GL_DestroyRenderer(renderer);
+        GLES_DestroyRenderer(renderer);
         return NULL;
     }
     if (SDL_GL_MakeCurrent(window->id, data->context) < 0) {
-        GL_DestroyRenderer(renderer);
+        GLES_DestroyRenderer(renderer);
         return NULL;
     }
 
@@ -293,7 +282,6 @@
 
     /* Set up parameters for rendering */
     data->blendMode = -1;
-    data->scaleMode = -1;
     data->glDisable(GL_DEPTH_TEST);
     data->glDisable(GL_CULL_FACE);
 	data->glEnable(GL_TEXTURE_2D);
@@ -302,10 +290,10 @@
     return renderer;
 }
 
-static int GL_ActivateRenderer(SDL_Renderer * renderer)
+static int GLES_ActivateRenderer(SDL_Renderer * renderer)
 {
 		
-    GL_RenderData *data = (GL_RenderData *)renderer->driverdata;
+    GLES_RenderData *data = (GLES_RenderData *)renderer->driverdata;
     SDL_Window *window = SDL_GetWindowFromID(renderer->window);
 				
     if (SDL_GL_MakeCurrent(window->id, data->context) < 0) {
@@ -325,9 +313,9 @@
 }
 
 static int
-GL_DisplayModeChanged(SDL_Renderer * renderer)
+GLES_DisplayModeChanged(SDL_Renderer * renderer)
 {
-    GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
+    GLES_RenderData *data = (GLES_RenderData *) renderer->driverdata;
 
     data->updateSize = SDL_TRUE;
     return 0;
@@ -345,11 +333,11 @@
 }
 
 static int
-GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
+GLES_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
 {
-    GL_RenderData *renderdata = (GL_RenderData *) renderer->driverdata;
+    GLES_RenderData *renderdata = (GLES_RenderData *) renderer->driverdata;
     SDL_Window *window = SDL_GetWindowFromID(renderer->window);
-    GL_TextureData *data;
+    GLES_TextureData *data;
     GLint internalFormat;
     GLenum format, type;
     int texture_w, texture_h;
@@ -364,22 +352,11 @@
 		case SDL_PIXELFORMAT_ARGB4444:
 		case SDL_PIXELFORMAT_ARGB1555:
 		case SDL_PIXELFORMAT_BGR24:
-		case SDL_PIXELFORMAT_BGR888: /* can't convert 32 bit format to 24 */
+		case SDL_PIXELFORMAT_BGR888:
 		case SDL_PIXELFORMAT_RGB888:
 		case SDL_PIXELFORMAT_RGBA8888:
 		case SDL_PIXELFORMAT_ARGB2101010:
-			SDL_SetError("Unsupported format");
-			return -1;
 		case SDL_PIXELFORMAT_ARGB8888:
-		#ifdef GL_IMG_texture_format_BGRA8888
-			internalFormat = GL_RGBA;
-			format = GL_RGBA;
-			type = GL_UNSIGNED_BYTE;
-			break;
-		#else
-			SDL_SetError("Unsupported format");
-			return -1;
-		#endif
 		case SDL_PIXELFORMAT_RGB24:
 			internalFormat = GL_RGB;
 			format = GL_RGB;
@@ -412,7 +389,8 @@
 			SDL_SetError("Unsupported texture format");
 			return -1;
     }
-	data = (GL_TextureData *) SDL_calloc(1, sizeof(*data));
+	
+	data = (GLES_TextureData *) SDL_calloc(1, sizeof(*data));
     if (!data) {
         SDL_OutOfMemory();
         return -1;
@@ -434,6 +412,7 @@
     renderdata->glGenTextures(1, &data->texture);
     
 	data->type = GL_TEXTURE_2D;
+	/* no NPOV textures allowed in OpenGL ES (yet) */
 	texture_w = power_of_2(texture->w);
 	texture_h = power_of_2(texture->h);
 	data->texw = (GLfloat) texture->w / texture_w;
@@ -456,17 +435,17 @@
 
     result = renderdata->glGetError();
     if (result != GL_NO_ERROR) {
-        GL_SetError("glTexImage2D()", result);
+        GLES_SetError("glTexImage2D()", result);
         return -1;
     }
     return 0;
 }
 
 static int
-GL_QueryTexturePixels(SDL_Renderer * renderer, SDL_Texture * texture,
+GLES_QueryTexturePixels(SDL_Renderer * renderer, SDL_Texture * texture,
                       void **pixels, int *pitch)
 {
-    GL_TextureData *data = (GL_TextureData *) texture->driverdata;
+    GLES_TextureData *data = (GLES_TextureData *) texture->driverdata;
 
     *pixels = data->pixels;
     *pitch = data->pitch;
@@ -474,7 +453,7 @@
 }
 
 static int
-GL_SetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture,
+GLES_SetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture,
                      const SDL_Color * colors, int firstcolor, int ncolors)
 {
 	SDL_SetError("OpenGL ES does not support paletted textures");
@@ -482,7 +461,7 @@
 }
 
 static int
-GL_GetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture,
+GLES_GetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture,
                      SDL_Color * colors, int firstcolor, int ncolors)
 {
 	SDL_SetError("OpenGL ES does not support paletted textures");
@@ -490,30 +469,30 @@
 }
 
 static void
-SetupTextureUpdate(GL_RenderData * renderdata, SDL_Texture * texture,
+SetupTextureUpdate(GLES_RenderData * renderdata, SDL_Texture * texture,
                    int pitch)
 {
 	
 	
-	GL_TextureData *data = (GL_TextureData *) texture->driverdata;
+	GLES_TextureData *data = (GLES_TextureData *) texture->driverdata;
 	renderdata->glBindTexture(data->type, data->texture);
     renderdata->glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
 }
 
 static int
-GL_SetTextureColorMod(SDL_Renderer * renderer, SDL_Texture * texture)
+GLES_SetTextureColorMod(SDL_Renderer * renderer, SDL_Texture * texture)
 {
     return 0;
 }
 
 static int
-GL_SetTextureAlphaMod(SDL_Renderer * renderer, SDL_Texture * texture)
+GLES_SetTextureAlphaMod(SDL_Renderer * renderer, SDL_Texture * texture)
 {
     return 0;
 }
 
 static int
-GL_SetTextureBlendMode(SDL_Renderer * renderer, SDL_Texture * texture)
+GLES_SetTextureBlendMode(SDL_Renderer * renderer, SDL_Texture * texture)
 {
     switch (texture->blendMode) {
     case SDL_TEXTUREBLENDMODE_NONE:
@@ -530,7 +509,7 @@
 }
 
 static int
-GL_SetTextureScaleMode(SDL_Renderer * renderer, SDL_Texture * texture)
+GLES_SetTextureScaleMode(SDL_Renderer * renderer, SDL_Texture * texture)
 {
     switch (texture->scaleMode) {
     case SDL_TEXTURESCALEMODE_NONE:
@@ -549,11 +528,11 @@
 }
 
 static int
-GL_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture,
+GLES_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture,
                  const SDL_Rect * rect, const void *pixels, int pitch)
 {
-    GL_RenderData *renderdata = (GL_RenderData *) renderer->driverdata;
-    GL_TextureData *data = (GL_TextureData *) texture->driverdata;
+    GLES_RenderData *renderdata = (GLES_RenderData *) renderer->driverdata;
+    GLES_TextureData *data = (GLES_TextureData *) texture->driverdata;
     GLenum result;
 
     SetupTextureUpdate(renderdata, texture, pitch);
@@ -563,18 +542,18 @@
                                 pixels);
     result = renderdata->glGetError();
     if (result != GL_NO_ERROR) {
-        GL_SetError("glTexSubImage2D()", result);
+        GLES_SetError("glTexSubImage2D()", result);
         return -1;
     }
     return 0;
 }
 
 static int
-GL_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture,
+GLES_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture,
                const SDL_Rect * rect, int markDirty, void **pixels,
                int *pitch)
 {
-    GL_TextureData *data = (GL_TextureData *) texture->driverdata;
+    GLES_TextureData *data = (GLES_TextureData *) texture->driverdata;
 
     if (markDirty) {
         SDL_AddDirtyRect(&data->dirty, rect);
@@ -588,15 +567,15 @@
 }
 
 static void
-GL_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture)
+GLES_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture)
 {
 }
 
 static void
-GL_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, int numrects,
+GLES_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, int numrects,
                 const SDL_Rect * rects)
 {
-    GL_TextureData *data = (GL_TextureData *) texture->driverdata;
+    GLES_TextureData *data = (GLES_TextureData *) texture->driverdata;
     int i;
 
     for (i = 0; i < numrects; ++i) {
@@ -605,11 +584,11 @@
 }
 
 static int
-GL_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, Uint8 a,
+GLES_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, Uint8 a,
               const SDL_Rect * rect)
 {
  	
-	GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
+	GLES_RenderData *data = (GLES_RenderData *) renderer->driverdata;
     SDL_Window *window = SDL_GetWindowFromID(renderer->window);
 	
 	/* set proper drawing color */
@@ -632,12 +611,12 @@
 }
 
 static int
-GL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
+GLES_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
               const SDL_Rect * srcrect, const SDL_Rect * dstrect)
 {
 		
-    GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
-    GL_TextureData *texturedata = (GL_TextureData *) texture->driverdata;
+    GLES_RenderData *data = (GLES_RenderData *) renderer->driverdata;
+    GLES_TextureData *texturedata = (GLES_TextureData *) texture->driverdata;
     int minx, miny, maxx, maxy;
     GLfloat minu, maxu, minv, maxv;
 	int i;
@@ -692,7 +671,7 @@
         data->glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
     }
 
-    //if (texture->blendMode != data->blendMode) {
+    if (texture->blendMode != data->blendMode) {
         switch (texture->blendMode) {
         case SDL_TEXTUREBLENDMODE_NONE:
             data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
@@ -716,27 +695,24 @@
             break;
         }
         data->blendMode = texture->blendMode;
-   // }
+    }
 
-   // if (texture->scaleMode != data->scaleMode) {
-        switch (texture->scaleMode) {
-        case SDL_TEXTURESCALEMODE_NONE:
-        case SDL_TEXTURESCALEMODE_FAST:
-            data->glTexParameteri(texturedata->type, GL_TEXTURE_MIN_FILTER,
-                                  GL_NEAREST);
-            data->glTexParameteri(texturedata->type, GL_TEXTURE_MAG_FILTER,
-                                  GL_NEAREST);
-            break;
-        case SDL_TEXTURESCALEMODE_SLOW:
-        case SDL_TEXTURESCALEMODE_BEST:
-            data->glTexParameteri(texturedata->type, GL_TEXTURE_MIN_FILTER,
-                                  GL_LINEAR);
-            data->glTexParameteri(texturedata->type, GL_TEXTURE_MAG_FILTER,
-                                  GL_LINEAR);
-            break;
-        }
-        data->scaleMode = texture->scaleMode;
-    //}
+	switch (texture->scaleMode) {
+		case SDL_TEXTURESCALEMODE_NONE:
+		case SDL_TEXTURESCALEMODE_FAST:
+			data->glTexParameteri(texturedata->type, GL_TEXTURE_MIN_FILTER,
+								  GL_NEAREST);
+			data->glTexParameteri(texturedata->type, GL_TEXTURE_MAG_FILTER,
+								  GL_NEAREST);
+			break;
+		case SDL_TEXTURESCALEMODE_SLOW:
+		case SDL_TEXTURESCALEMODE_BEST:
+			data->glTexParameteri(texturedata->type, GL_TEXTURE_MIN_FILTER,
+								  GL_LINEAR);
+			data->glTexParameteri(texturedata->type, GL_TEXTURE_MAG_FILTER,
+								  GL_LINEAR);
+			break;
+	}
 
 	if (data->GL_OES_draw_texture_supported && data->useDrawTexture) {
 		/* this code is a little funny because the viewport is upside down vs SDL's coordinate system */
@@ -790,16 +766,16 @@
 }
 
 static void
-GL_RenderPresent(SDL_Renderer * renderer)
+GLES_RenderPresent(SDL_Renderer * renderer)
 {
     SDL_GL_SwapWindow(renderer->window);
 }
 
 static void
-GL_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture)
+GLES_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture)
 {
-    GL_RenderData *renderdata = (GL_RenderData *) renderer->driverdata;
-    GL_TextureData *data = (GL_TextureData *) texture->driverdata;
+    GLES_RenderData *renderdata = (GLES_RenderData *) renderer->driverdata;
+    GLES_TextureData *data = (GLES_TextureData *) texture->driverdata;
 
     if (!data) {
         return;
@@ -816,9 +792,9 @@
 }
 
 static void
-GL_DestroyRenderer(SDL_Renderer * renderer)
+GLES_DestroyRenderer(SDL_Renderer * renderer)
 {
-    GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
+    GLES_RenderData *data = (GLES_RenderData *) renderer->driverdata;
 
     if (data) {
         if (data->context) {