add ability to set SDL render driver (#1359)

"direct3d11" is about 10% faster than the default. Screenshots are fixed in new
 SDL versions.
This commit is contained in:
Roman Fomin 2024-01-02 15:25:54 +07:00 committed by GitHub
parent ecf153fbac
commit 801c93872b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 2 deletions

View File

@ -73,6 +73,8 @@ fixed_t fractionaltic;
boolean disk_icon; // killough 10/98
int fps; // [FG] FPS counter widget
char *sdl_renderdriver = "";
// [FG] rendering window, renderer, intermediate ARGB frame buffer and texture
static SDL_Window *screen;
@ -1365,6 +1367,8 @@ static void I_InitGraphicsMode(void)
flags |= SDL_RENDERER_PRESENTVSYNC;
}
SDL_SetHint(SDL_HINT_RENDER_DRIVER, sdl_renderdriver);
// [FG] create renderer
renderer = SDL_CreateRenderer(screen, -1, flags);
@ -1388,6 +1392,12 @@ static void I_InitGraphicsMode(void)
I_Error("Error creating renderer for screen window: %s",
SDL_GetError());
}
SDL_RendererInfo info;
if (SDL_GetRendererInfo(renderer, &info) == 0)
{
I_Printf(VB_DEBUG, "SDL render driver: %s", info.name);
}
}
static int CurrentResolutionMode(void)

View File

@ -67,6 +67,8 @@ void I_ToggleVsync(void); // [JN] Calls native SDL vsync toggle
void I_DynamicResolution(void);
extern char *sdl_renderdriver;
extern boolean use_vsync; // killough 2/8/98: controls whether vsync is called
extern boolean disk_icon; // killough 10/98
extern resolution_mode_t resolution_mode, default_resolution_mode;

View File

@ -135,7 +135,25 @@ default_t defaults[] = {
{ // killough 11/98: hires
"resolution_mode", (config_t *) &default_resolution_mode, NULL,
{RES_DRS}, {RES_ORIGINAL, NUM_RES - 1}, number, ss_none, wad_no,
"0 - original 200p, 1 - double 400p, 2 - triple 600p, 4 - native (dynamic)"
"0 - original 200p, 1 - double 400p, 2 - triple 600p, 3 - native (dynamic)"
},
{
"sdl_renderdriver",
(config_t *) &sdl_renderdriver, NULL,
#if defined(_WIN32)
{.s = "direct3d11"},
#else
{.s = "opengl"},
#endif
{0}, string, ss_none, wad_no,
"SDL render driver, possible values are "
#if defined(_WIN32)
"direct3d, direct3d11, direct3d12, "
#elif defined(__APPLE__)
"metal, "
#endif
"opengl, opengles2, opengles, software"
},
{
@ -444,7 +462,7 @@ default_t defaults[] = {
(config_t *) &midi_player, NULL,
{0}, {0, 2},
number, ss_gen, wad_no,
#if defined(_WIN32)
#if defined(_WIN32) || defined (__APPLE__)
"0 for Native (default), "
#else
"0 for SDL2 (default), "