sdl2-compat: Fix check of SDL_RENDERER_TARGETTEXTURE

From b5e0ec309d0f07330c2efac903ccc53707770798 Mon Sep 17 00:00:00 2001
From: meyraud705 <[EMAIL REDACTED]>
Date: Sat, 29 Jul 2023 14:40:21 +0200
Subject: [PATCH] Fix check of SDL_RENDERER_TARGETTEXTURE

---
 src/sdl2_compat.c | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index d43bc07..a9c1de1 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -3239,15 +3239,25 @@ SDL_GetRenderDriverInfo(int index, SDL_RendererInfo *info)
 DECLSPEC SDL_Renderer *SDLCALL
 SDL_CreateRenderer(SDL_Window *window, int index, Uint32 flags)
 {
+    SDL_Renderer *renderer = NULL;
     const char *name = NULL;
+    int want_targettexture = flags & SDL2_RENDERER_TARGETTEXTURE;
     if (index != -1) {
         name = SDL3_GetRenderDriver(index);
         if (!name) {
             return NULL;  /* assume SDL3_GetRenderDriver set the SDL error. */
         }
     }
+
     flags = flags & ~SDL2_RENDERER_TARGETTEXTURE; /* clear flags removed in SDL3 */
-    return SDL3_CreateRenderer(window, name, flags);
+    renderer = SDL3_CreateRenderer(window, name, flags);
+
+    if (renderer != NULL && want_targettexture && !SDL_RenderTargetSupported(renderer)) {
+        SDL_DestroyRenderer(renderer);
+        SDL_SetError("Couldn't find render driver with SDL_RENDERER_TARGETTEXTURE flags");
+        return NULL;
+    }
+    return renderer;
 }
 
 DECLSPEC SDL_bool SDLCALL
@@ -3257,9 +3267,12 @@ SDL_RenderTargetSupported(SDL_Renderer *renderer)
     SDL_RendererInfo info;
     ret = SDL_GetRendererInfo(renderer, &info);
     if (ret == 0) {
-        if (info.flags & SDL2_RENDERER_TARGETTEXTURE) {
-            return SDL_TRUE;
+        /* SDL_RENDERER_TARGETTEXTURE was removed in SDL3, check by name for 
+         * renderer that does not support render target. */
+        if (SDL3_strcmp(info.name, "opengles") == 0) {
+            return SDL_FALSE;
         }
+        return SDL_TRUE;
     }
     return SDL_FALSE;
 }