Browse Source

Add support for GPU RGB565 (B5G6R5_UNORM) textures with DX11 (#14358)

Kirill Andriiashin 1 month ago
parent
commit
a76fb7b2fb
1 changed files with 7 additions and 0 deletions
  1. 7 0
      src/render/direct3d11/SDL_render_d3d11.c

+ 7 - 0
src/render/direct3d11/SDL_render_d3d11.c

@@ -292,6 +292,8 @@ static DXGI_FORMAT SDLPixelFormatToDXGITextureFormat(Uint32 format, Uint32 outpu
         return DXGI_FORMAT_NV12;
         return DXGI_FORMAT_NV12;
     case SDL_PIXELFORMAT_P010:
     case SDL_PIXELFORMAT_P010:
         return DXGI_FORMAT_P010;
         return DXGI_FORMAT_P010;
+    case SDL_PIXELFORMAT_RGB565:
+        return DXGI_FORMAT_B5G6R5_UNORM;
     default:
     default:
         return DXGI_FORMAT_UNKNOWN;
         return DXGI_FORMAT_UNKNOWN;
     }
     }
@@ -2915,6 +2917,11 @@ static bool D3D11_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL
         return false;
         return false;
     }
     }
 
 
+    // DXGI_FORMAT_B5G6R5_UNORM is supported since Direct3D 11.1 on Windows 8 and later
+    if (data->featureLevel >= D3D_FEATURE_LEVEL_11_1 && WIN_IsWindows8OrGreater()) {
+        SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGB565);
+    }
+
     return true;
     return true;
 }
 }