Phase 9 cleanup: rip out SDL 1.2 video knobs no SDL 3 path uses
After the SDL 3 renderer migration, the engine has exactly one back buffer (a CPU-side ARGB8888 SDL_Surface) and one presentation path (upload to streaming SDL_Texture, RenderPresent). All the SDL 1.2 hardware-surface / page-flipping / depth / driver knobs were dead. Removed from gfxengine_t: - _doublebuf, doublebuffer() setter+getter - _pages, pages() setter - _shadow, shadow() setter+getter - _depth + the depth argument processing in mode() - _driver, driver() setter, gfx_drivers_t enum, GFX_DRIVER_SDL2D - xflags + the extraflags parameter to open() - broken_rgba8 (the OpenGL RGBA→RGBA4 workaround field) - MAX_PAGES + backpage/frontpage + the per-page dirtyrects[]/ dirtytable[]/dirtywtable[] arrays. Collapsed to 1-D dirtytable. - __invalidate(int page, ...) → __invalidate(rect, window). - The per-page invalidate() switch on _pages. - vsync() now hot-applies via SDL_SetRenderVSync (no hide/show cycle). - mode() keeps the int-bits arg for API compat but ignores it. Removed from prefs_t: - videodriver, depth, doublebuf, shadow, pages, broken_rgba8. Their config-file keys are now read as obsolete fields (silently consumed, never re-written) so existing config files load cleanly without breaking on unknown keys. Removed from the options menu: - Display Depth, Display Buffering Mode, Software Shadow Buffer, Display Buffer Pages, Broken RGBA8. Removed from the escape-hammering safe-video-mode reset path the fields that no longer exist (doublebuf, pages, shadow, depth, videodriver). dashboard.cpp: dropped the doublebuffer()-guarded second pass of the loading-animation nibble draw; SDL 3's single back buffer doesn't need it. Build clean, binary still runs. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
acb3925bb4
commit
8d57d63da2
@ -309,8 +309,8 @@ void dashboard_window_t::nibble(int tool)
|
|||||||
}
|
}
|
||||||
gengine->invalidate();
|
gengine->invalidate();
|
||||||
gengine->flip();
|
gengine->flip();
|
||||||
if(gengine->doublebuffer())
|
// SDL 3: one logical back buffer; previously a second pass was
|
||||||
{
|
// only needed when actual hardware double-buffering was in use.
|
||||||
for(i = 0; i < dt * 4; ++i)
|
for(i = 0; i < dt * 4; ++i)
|
||||||
{
|
{
|
||||||
if(last_index >= NIBBLE_TILES)
|
if(last_index >= NIBBLE_TILES)
|
||||||
@ -337,7 +337,6 @@ void dashboard_window_t::nibble(int tool)
|
|||||||
++last_index;
|
++last_index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
mode(DASHBOARD_BLACK);
|
mode(DASHBOARD_BLACK);
|
||||||
gengine->flip();
|
gengine->flip();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,15 +54,10 @@ gfxengine_t::gfxengine_t()
|
|||||||
sf1 = df = dsf = acf = NULL;
|
sf1 = df = dsf = acf = NULL;
|
||||||
gfx = NULL;
|
gfx = NULL;
|
||||||
csengine = NULL;
|
csengine = NULL;
|
||||||
_driver = GFX_DRIVER_SDL2D;
|
|
||||||
_shadow = 1;
|
|
||||||
_doublebuf = 1;
|
|
||||||
_pages = -1;
|
|
||||||
_vsync = 1;
|
_vsync = 1;
|
||||||
_fullscreen = 0;
|
_fullscreen = 0;
|
||||||
_centered = 0;
|
_centered = 0;
|
||||||
use_interpolation = 1;
|
use_interpolation = 1;
|
||||||
_depth = 0;
|
|
||||||
_title = "GfxEngine v0.4";
|
_title = "GfxEngine v0.4";
|
||||||
_icontitle = "GfxEngine";
|
_icontitle = "GfxEngine";
|
||||||
_cursor = 1;
|
_cursor = 1;
|
||||||
@ -71,11 +66,9 @@ gfxengine_t::gfxengine_t()
|
|||||||
_autoinvalidate = 1;
|
_autoinvalidate = 1;
|
||||||
_scalemode = GFX_SCALE_NEAREST;
|
_scalemode = GFX_SCALE_NEAREST;
|
||||||
_clamping = 0;
|
_clamping = 0;
|
||||||
xflags = 0;
|
|
||||||
|
|
||||||
_dither = 0;
|
_dither = 0;
|
||||||
_dither_type = 0;
|
_dither_type = 0;
|
||||||
broken_rgba8 = 0;
|
|
||||||
alpha_threshold = 0;
|
alpha_threshold = 0;
|
||||||
|
|
||||||
_brightness = 1.0;
|
_brightness = 1.0;
|
||||||
@ -94,10 +87,7 @@ gfxengine_t::gfxengine_t()
|
|||||||
for(int i = 0; i < CS_LAYERS ; ++i)
|
for(int i = 0; i < CS_LAYERS ; ++i)
|
||||||
xratio[i] = yratio[i] = 0.0;
|
xratio[i] = yratio[i] = 0.0;
|
||||||
|
|
||||||
dirtyrects[0] = 0;
|
dirtyrects = 0;
|
||||||
dirtyrects[1] = 0;
|
|
||||||
frontpage = 0;
|
|
||||||
backpage = 1;
|
|
||||||
screenshot_count = 0;
|
screenshot_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,75 +150,23 @@ void gfxengine_t::scale(float x, float y)
|
|||||||
|
|
||||||
void gfxengine_t::mode(int bits, int fullscreen)
|
void gfxengine_t::mode(int bits, int fullscreen)
|
||||||
{
|
{
|
||||||
|
// SDL 3 uses the renderer's pixel format directly; the legacy depth
|
||||||
|
// argument is accepted for API compatibility but ignored.
|
||||||
|
(void)bits;
|
||||||
int was_showing = is_showing;
|
int was_showing = is_showing;
|
||||||
hide();
|
hide();
|
||||||
|
|
||||||
int olddepth = _depth;
|
|
||||||
_depth = bits;
|
|
||||||
if(_depth != olddepth)
|
|
||||||
reload();
|
|
||||||
_fullscreen = fullscreen;
|
_fullscreen = fullscreen;
|
||||||
|
|
||||||
if(was_showing)
|
if(was_showing)
|
||||||
show();
|
show();
|
||||||
}
|
}
|
||||||
|
|
||||||
void gfxengine_t::driver(gfx_drivers_t drv)
|
|
||||||
{
|
|
||||||
int was_showing = is_showing;
|
|
||||||
hide();
|
|
||||||
|
|
||||||
_driver = drv;
|
|
||||||
|
|
||||||
if(was_showing)
|
|
||||||
show();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gfxengine_t::doublebuffer(int use)
|
|
||||||
{
|
|
||||||
if(_doublebuf == use)
|
|
||||||
return;
|
|
||||||
|
|
||||||
int was_showing = is_showing;
|
|
||||||
hide();
|
|
||||||
|
|
||||||
_doublebuf = use;
|
|
||||||
|
|
||||||
if(was_showing)
|
|
||||||
show();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gfxengine_t::pages(int np)
|
|
||||||
{
|
|
||||||
_pages = np;
|
|
||||||
}
|
|
||||||
|
|
||||||
void gfxengine_t::vsync(int use)
|
void gfxengine_t::vsync(int use)
|
||||||
{
|
{
|
||||||
if(_vsync == use)
|
if(_vsync == use)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int was_showing = is_showing;
|
|
||||||
hide();
|
|
||||||
|
|
||||||
_vsync = use;
|
_vsync = use;
|
||||||
|
if(sdl_renderer)
|
||||||
if(was_showing)
|
SDL_SetRenderVSync(sdl_renderer, use ? 1 : 0);
|
||||||
show();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gfxengine_t::shadow(int use)
|
|
||||||
{
|
|
||||||
if(_shadow == use)
|
|
||||||
return;
|
|
||||||
|
|
||||||
int was_showing = is_showing;
|
|
||||||
hide();
|
|
||||||
|
|
||||||
_shadow = use;
|
|
||||||
|
|
||||||
if(was_showing)
|
|
||||||
show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gfxengine_t::autoinvalidate(int use)
|
void gfxengine_t::autoinvalidate(int use)
|
||||||
@ -435,9 +373,9 @@ void gfxengine_t::clampcolor(Uint8 r, Uint8 g, Uint8 b, Uint8 a)
|
|||||||
|
|
||||||
void gfxengine_t::dither(int type, int _broken_rgba8)
|
void gfxengine_t::dither(int type, int _broken_rgba8)
|
||||||
{
|
{
|
||||||
|
(void)_broken_rgba8; // legacy OpenGL workaround; no-op in SDL 3
|
||||||
_dither = type >= 0;
|
_dither = type >= 0;
|
||||||
_dither_type = type;
|
_dither_type = type;
|
||||||
broken_rgba8 = _broken_rgba8;
|
|
||||||
|
|
||||||
if(!df)
|
if(!df)
|
||||||
return;
|
return;
|
||||||
@ -678,10 +616,8 @@ void gfxengine_t::on_frame(cs_engine_t *e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int gfxengine_t::open(int objects, int extraflags)
|
int gfxengine_t::open(int objects)
|
||||||
{
|
{
|
||||||
xflags = extraflags;
|
|
||||||
|
|
||||||
if(is_open)
|
if(is_open)
|
||||||
return show();
|
return show();
|
||||||
|
|
||||||
@ -917,42 +853,23 @@ void gfxengine_t::hide(void)
|
|||||||
|
|
||||||
void gfxengine_t::invalidate(SDL_Rect *rect, window_t *window)
|
void gfxengine_t::invalidate(SDL_Rect *rect, window_t *window)
|
||||||
{
|
{
|
||||||
switch(_pages)
|
__invalidate(rect, window);
|
||||||
{
|
|
||||||
case -1:
|
|
||||||
if(_doublebuf)
|
|
||||||
__invalidate(1, rect, window);
|
|
||||||
__invalidate(0, rect, window);
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
__invalidate(0, NULL, NULL);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
__invalidate(2, rect, window);
|
|
||||||
// Fallthrough!
|
|
||||||
case 2:
|
|
||||||
__invalidate(1, rect, window);
|
|
||||||
// Fallthrough!
|
|
||||||
case 1:
|
|
||||||
__invalidate(0, rect, window);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void gfxengine_t::__invalidate(int page, SDL_Rect *rect, window_t *window)
|
void gfxengine_t::__invalidate(SDL_Rect *rect, window_t *window)
|
||||||
{
|
{
|
||||||
if(!screen_surface)
|
if(!screen_surface)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(!rect || (_pages == 0))
|
if(!rect)
|
||||||
{
|
{
|
||||||
dirtyrects[page] = 1;
|
dirtyrects = 1;
|
||||||
dirtytable[page][0].x = 0;
|
dirtytable[0].x = 0;
|
||||||
dirtytable[page][0].y = 0;
|
dirtytable[0].y = 0;
|
||||||
dirtytable[page][0].w = screen_surface->w;
|
dirtytable[0].w = screen_surface->w;
|
||||||
dirtytable[page][0].h = screen_surface->h;
|
dirtytable[0].h = screen_surface->h;
|
||||||
dirtywtable[page][0] = NULL;
|
dirtywtable[0] = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -989,19 +906,18 @@ void gfxengine_t::__invalidate(int page, SDL_Rect *rect, window_t *window)
|
|||||||
if(!dr.w || !dr.h)
|
if(!dr.w || !dr.h)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for(int i = 0; i < dirtyrects[page]; ++i)
|
for(int i = 0; i < dirtyrects; ++i)
|
||||||
if(memcmp(&dirtytable[page][i], &dr, sizeof(dr)) == 0)
|
if(memcmp(&dirtytable[i], &dr, sizeof(dr)) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(dirtyrects[page] < MAX_DIRTYRECTS - 1)
|
if(dirtyrects < MAX_DIRTYRECTS - 1)
|
||||||
{
|
{
|
||||||
dirtytable[page][dirtyrects[page]] = dr;
|
dirtytable[dirtyrects] = dr;
|
||||||
dirtywtable[page][dirtyrects[page]] = window;
|
dirtywtable[dirtyrects] = window;
|
||||||
++dirtyrects[page];
|
++dirtyrects;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
log_printf(ELOG, "gfxengine: Page %d out of dirtyrects!\n",
|
log_printf(ELOG, "gfxengine: Out of dirtyrects!\n");
|
||||||
page);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1268,20 +1184,19 @@ void gfxengine_t::flip()
|
|||||||
// buffer per frame. Keep the dirtyrect iteration only to drive the
|
// buffer per frame. Keep the dirtyrect iteration only to drive the
|
||||||
// phys_refresh() callbacks that window widgets rely on; the upload
|
// phys_refresh() callbacks that window widgets rely on; the upload
|
||||||
// is a single full-surface copy regardless.
|
// is a single full-surface copy regardless.
|
||||||
frontpage = backpage = 0;
|
for(int i = 0; i < dirtyrects; ++i)
|
||||||
for(int i = 0; i < dirtyrects[backpage]; ++i)
|
|
||||||
{
|
{
|
||||||
if(dirtywtable[backpage][i])
|
if(dirtywtable[i])
|
||||||
{
|
{
|
||||||
if(!dirtywtable[backpage][i]->visible())
|
if(!dirtywtable[i]->visible())
|
||||||
continue;
|
continue;
|
||||||
SDL_Rect dr = dirtytable[backpage][i];
|
SDL_Rect dr = dirtytable[i];
|
||||||
dirtywtable[backpage][i]->phys_refresh(&dr);
|
dirtywtable[i]->phys_refresh(&dr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
refresh_rect(&dirtytable[backpage][i]);
|
refresh_rect(&dirtytable[i]);
|
||||||
}
|
}
|
||||||
dirtyrects[backpage] = 0;
|
dirtyrects = 0;
|
||||||
|
|
||||||
SDL_UpdateTexture(fb_texture, NULL, softbuf->pixels, softbuf->pitch);
|
SDL_UpdateTexture(fb_texture, NULL, softbuf->pixels, softbuf->pitch);
|
||||||
SDL_RenderClear(sdl_renderer);
|
SDL_RenderClear(sdl_renderer);
|
||||||
|
|||||||
@ -24,7 +24,6 @@
|
|||||||
|
|
||||||
#define GFX_BANKS 256
|
#define GFX_BANKS 256
|
||||||
#define MAX_DIRTYRECTS 1024
|
#define MAX_DIRTYRECTS 1024
|
||||||
#define MAX_PAGES 3
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -33,11 +32,6 @@
|
|||||||
#include "sprite.h"
|
#include "sprite.h"
|
||||||
#include "cs.h"
|
#include "cs.h"
|
||||||
|
|
||||||
enum gfx_drivers_t
|
|
||||||
{
|
|
||||||
GFX_DRIVER_SDL2D = 0
|
|
||||||
};
|
|
||||||
|
|
||||||
enum gfx_scalemodes_t
|
enum gfx_scalemodes_t
|
||||||
{
|
{
|
||||||
GFX_SCALE_NEAREST = 0,
|
GFX_SCALE_NEAREST = 0,
|
||||||
@ -69,25 +63,11 @@ class gfxengine_t
|
|||||||
void size(int w, int h);
|
void size(int w, int h);
|
||||||
void centered(int c);
|
void centered(int c);
|
||||||
void scale(float x, float y);
|
void scale(float x, float y);
|
||||||
void driver(gfx_drivers_t drv);
|
|
||||||
void mode(int bits, int fullscreen);
|
void mode(int bits, int fullscreen);
|
||||||
|
|
||||||
// 1: Use double buffering if possible
|
|
||||||
void doublebuffer(int use);
|
|
||||||
|
|
||||||
// -1: Use default for shadow() and doublebuffer() settings
|
|
||||||
// 0: None; assume flipping gives you a garbage buffer
|
|
||||||
// 1: Assume flipping leaves the back buffer intact
|
|
||||||
// 2: Assume two buffers that are swapped when flipping
|
|
||||||
// 3: Assume three buffers cycled when flipping
|
|
||||||
void pages(int np);
|
|
||||||
|
|
||||||
// 1: Enable vsync, if available
|
// 1: Enable vsync, if available
|
||||||
void vsync(int use);
|
void vsync(int use);
|
||||||
|
|
||||||
// 1: Use a software shadow back buffer, if possible
|
|
||||||
void shadow(int use);
|
|
||||||
|
|
||||||
void autoinvalidate(int use);
|
void autoinvalidate(int use);
|
||||||
|
|
||||||
void interpolation(int inter);
|
void interpolation(int inter);
|
||||||
@ -102,12 +82,10 @@ class gfxengine_t
|
|||||||
void wrap(int x, int y);
|
void wrap(int x, int y);
|
||||||
|
|
||||||
/* Info */
|
/* Info */
|
||||||
int doublebuffer() { return _doublebuf; }
|
|
||||||
int shadow() { return _shadow; }
|
|
||||||
int autoinvalidate() { return _autoinvalidate; }
|
int autoinvalidate() { return _autoinvalidate; }
|
||||||
|
|
||||||
/* Engine open/close */
|
/* Engine open/close */
|
||||||
int open(int objects = 1024, int extraflags = 0);
|
int open(int objects = 1024);
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
/* Data management (use while engine is open) */
|
/* Data management (use while engine is open) */
|
||||||
@ -206,7 +184,6 @@ class gfxengine_t
|
|||||||
float yscale() { return ys * (1.f/256.f); }
|
float yscale() { return ys * (1.f/256.f); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
gfx_drivers_t _driver;
|
|
||||||
gfx_scalemodes_t _scalemode;
|
gfx_scalemodes_t _scalemode;
|
||||||
int _clamping;
|
int _clamping;
|
||||||
SDL_Window *sdl_window;
|
SDL_Window *sdl_window;
|
||||||
@ -214,11 +191,9 @@ class gfxengine_t
|
|||||||
SDL_Texture *fb_texture;
|
SDL_Texture *fb_texture;
|
||||||
SDL_Surface *screen_surface; // alias for softbuf in SDL 3
|
SDL_Surface *screen_surface; // alias for softbuf in SDL 3
|
||||||
SDL_Surface *softbuf;
|
SDL_Surface *softbuf;
|
||||||
int backpage;
|
int dirtyrects;
|
||||||
int frontpage;
|
SDL_Rect dirtytable[MAX_DIRTYRECTS];
|
||||||
int dirtyrects[MAX_PAGES];
|
window_t *dirtywtable[MAX_DIRTYRECTS];
|
||||||
SDL_Rect dirtytable[MAX_PAGES][MAX_DIRTYRECTS];
|
|
||||||
window_t *dirtywtable[MAX_PAGES][MAX_DIRTYRECTS];
|
|
||||||
window_t *fullwin;
|
window_t *fullwin;
|
||||||
window_t *window;
|
window_t *window;
|
||||||
window_t *windows; // Linked list
|
window_t *windows; // Linked list
|
||||||
@ -236,23 +211,17 @@ class gfxengine_t
|
|||||||
s_container_t *gfx;
|
s_container_t *gfx;
|
||||||
SoFont *fonts[GFX_BANKS]; // Kludge.
|
SoFont *fonts[GFX_BANKS]; // Kludge.
|
||||||
cs_engine_t *csengine;
|
cs_engine_t *csengine;
|
||||||
int xflags;
|
|
||||||
int _doublebuf;
|
|
||||||
int _pages;
|
|
||||||
int _vsync;
|
int _vsync;
|
||||||
int _shadow;
|
|
||||||
int _fullscreen;
|
int _fullscreen;
|
||||||
int _centered;
|
int _centered;
|
||||||
int _autoinvalidate;
|
int _autoinvalidate;
|
||||||
int use_interpolation;
|
int use_interpolation;
|
||||||
int _width, _height;
|
int _width, _height;
|
||||||
int _depth;
|
|
||||||
const char *_title;
|
const char *_title;
|
||||||
const char *_icontitle;
|
const char *_icontitle;
|
||||||
int _cursor;
|
int _cursor;
|
||||||
int _dither;
|
int _dither;
|
||||||
int _dither_type;
|
int _dither_type;
|
||||||
int broken_rgba8; //Klugde for OpenGL (if RGBA8 ==> RGBA4)
|
|
||||||
int alpha_threshold; //For noalpha()
|
int alpha_threshold; //For noalpha()
|
||||||
float _brightness;
|
float _brightness;
|
||||||
float _contrast;
|
float _contrast;
|
||||||
@ -267,8 +236,7 @@ class gfxengine_t
|
|||||||
|
|
||||||
int screenshot_count;
|
int screenshot_count;
|
||||||
|
|
||||||
void __invalidate(int page, SDL_Rect *rect = NULL,
|
void __invalidate(SDL_Rect *rect = NULL, window_t *window = NULL);
|
||||||
window_t *window = NULL);
|
|
||||||
void refresh_rect(SDL_Rect *r);
|
void refresh_rect(SDL_Rect *r);
|
||||||
|
|
||||||
static void on_frame(cs_engine_t *e);
|
static void on_frame(cs_engine_t *e);
|
||||||
|
|||||||
11
kobo.cpp
11
kobo.cpp
@ -635,7 +635,6 @@ int KOBO_main::init_display(prefs_t *p)
|
|||||||
int dw, dh; // Display size
|
int dw, dh; // Display size
|
||||||
int gw, gh; // Game "window" size
|
int gw, gh; // Game "window" size
|
||||||
gengine->title("Kobo Deluxe " VERSION, "kobodl");
|
gengine->title("Kobo Deluxe " VERSION, "kobodl");
|
||||||
gengine->driver((gfx_drivers_t)p->videodriver);
|
|
||||||
|
|
||||||
dw = p->width;
|
dw = p->width;
|
||||||
dh = p->height;
|
dh = p->height;
|
||||||
@ -689,10 +688,7 @@ int KOBO_main::init_display(prefs_t *p)
|
|||||||
gengine->size(dw, dh);
|
gengine->size(dw, dh);
|
||||||
|
|
||||||
gengine->mode(0, p->fullscreen);
|
gengine->mode(0, p->fullscreen);
|
||||||
gengine->doublebuffer(p->doublebuf);
|
|
||||||
gengine->pages(p->pages);
|
|
||||||
gengine->vsync(p->vsync);
|
gengine->vsync(p->vsync);
|
||||||
gengine->shadow(p->shadow);
|
|
||||||
gengine->cursor(0);
|
gengine->cursor(0);
|
||||||
|
|
||||||
gengine->period(game.speed);
|
gengine->period(game.speed);
|
||||||
@ -1086,7 +1082,7 @@ int KOBO_main::load_graphics(prefs_t *p)
|
|||||||
if(gd->flags & KOBO_NODITHER || !p->use_dither)
|
if(gd->flags & KOBO_NODITHER || !p->use_dither)
|
||||||
gengine->dither(-1);
|
gengine->dither(-1);
|
||||||
else
|
else
|
||||||
gengine->dither(p->dither_type, p->broken_rgba8);
|
gengine->dither(p->dither_type, 0);
|
||||||
|
|
||||||
// Alpha channels
|
// Alpha channels
|
||||||
if(gd->flags & KOBO_NOALPHA || !p->alpha)
|
if(gd->flags & KOBO_NOALPHA || !p->alpha)
|
||||||
@ -1658,14 +1654,9 @@ void kobo_gfxengine_t::frame()
|
|||||||
{
|
{
|
||||||
km.pause_game();
|
km.pause_game();
|
||||||
prefs->fullscreen = 0;
|
prefs->fullscreen = 0;
|
||||||
prefs->videodriver = (int)GFX_DRIVER_SDL2D;
|
|
||||||
prefs->width = 640;
|
prefs->width = 640;
|
||||||
prefs->height = 480;
|
prefs->height = 480;
|
||||||
prefs->aspect = 1000;
|
prefs->aspect = 1000;
|
||||||
prefs->depth = 0;
|
|
||||||
prefs->doublebuf = 0;
|
|
||||||
prefs->pages = -1;
|
|
||||||
prefs->shadow = 1;
|
|
||||||
prefs->scalemode = (int)GFX_SCALE_NEAREST;
|
prefs->scalemode = (int)GFX_SCALE_NEAREST;
|
||||||
prefs->brightness = 100;
|
prefs->brightness = 100;
|
||||||
prefs->contrast = 100;
|
prefs->contrast = 100;
|
||||||
|
|||||||
22
options.cpp
22
options.cpp
@ -177,29 +177,7 @@ void video_options_t::build()
|
|||||||
}
|
}
|
||||||
space();
|
space();
|
||||||
yesno("Fullscreen Display", &prf->fullscreen, OS_RESTART_VIDEO);
|
yesno("Fullscreen Display", &prf->fullscreen, OS_RESTART_VIDEO);
|
||||||
list("Display Depth", &prf->depth, OS_RESTART_VIDEO);
|
|
||||||
item("Default", 0);
|
|
||||||
item("8 bits", 8);
|
|
||||||
item("15 bits", 15);
|
|
||||||
item("16 bits", 16);
|
|
||||||
item("24 bits", 24);
|
|
||||||
item("32 bits", 32);
|
|
||||||
prf->videodriver = GFX_DRIVER_SDL2D;
|
|
||||||
space();
|
|
||||||
xoffs = 0.55;
|
|
||||||
// Only the SDL 2D driver remains since the SDL 3 migration; the
|
|
||||||
// OpenGL driver is now handled by the SDL renderer itself.
|
|
||||||
list("Display Buffering Mode", &prf->doublebuf, OS_RESTART_VIDEO);
|
|
||||||
item("Single", 0);
|
|
||||||
item("Double", 1);
|
|
||||||
yesno("Software Shadow Buffer", &prf->shadow, OS_RESTART_VIDEO);
|
|
||||||
yesno("Vertical Retrace Sync", &prf->vsync, OS_RESTART_VIDEO);
|
yesno("Vertical Retrace Sync", &prf->vsync, OS_RESTART_VIDEO);
|
||||||
list("Display Buffer Pages", &prf->pages, OS_UPDATE_ENGINE);
|
|
||||||
item("Assume Standard", -1);
|
|
||||||
item("Always Repaint", 0);
|
|
||||||
item("Single", 1);
|
|
||||||
item("Double", 2);
|
|
||||||
item("Triple", 3);
|
|
||||||
big();
|
big();
|
||||||
space();
|
space();
|
||||||
xoffs = 0.5;
|
xoffs = 0.5;
|
||||||
|
|||||||
20
prefs.cpp
20
prefs.cpp
@ -82,25 +82,18 @@ void prefs_t::init()
|
|||||||
|
|
||||||
comment("--- Video settings -------------------------");
|
comment("--- Video settings -------------------------");
|
||||||
yesno("fullscreen", fullscreen, 0); desc("Fullscreen Display");
|
yesno("fullscreen", fullscreen, 0); desc("Fullscreen Display");
|
||||||
key("videodriver", videodriver, GFX_DRIVER_SDL2D);
|
|
||||||
desc("Display Driver");
|
|
||||||
key("width", width, 640); desc("Horizontal Resolution");
|
key("width", width, 640); desc("Horizontal Resolution");
|
||||||
key("height", height, 480); desc("Vertical Resolution");
|
key("height", height, 480); desc("Vertical Resolution");
|
||||||
key("aspect", aspect, 1000); desc("Pixel Aspect Ratio");
|
key("aspect", aspect, 1000); desc("Pixel Aspect Ratio");
|
||||||
key("depth", depth, 0); desc("Display Depth");
|
|
||||||
key("maxfps", max_fps, 100); desc("Maximum fps");
|
key("maxfps", max_fps, 100); desc("Maximum fps");
|
||||||
key("maxfpsstrict", max_fps_strict, 0); desc("Strictly Regulated fps");
|
key("maxfpsstrict", max_fps_strict, 0); desc("Strictly Regulated fps");
|
||||||
key("buffer", doublebuf, 1); desc("Display Buffer Mode");
|
|
||||||
yesno("shadow", shadow, 1); desc("Use Software Shadow Buffer");
|
|
||||||
key("videomode", videomode, 0x04330); desc("Video Mode");
|
key("videomode", videomode, 0x04330); desc("Video Mode");
|
||||||
yesno("vsync", vsync, 1); desc("Enable Vertical Sync");
|
yesno("vsync", vsync, 1); desc("Enable Vertical Sync");
|
||||||
key("videopages", pages, -1); desc("Number of Video Pages");
|
|
||||||
|
|
||||||
comment("--- Graphics settings ----------------------");
|
comment("--- Graphics settings ----------------------");
|
||||||
key("scalemode", scalemode, 1); desc("Scaling Filter Mode");
|
key("scalemode", scalemode, 1); desc("Scaling Filter Mode");
|
||||||
yesno("dither", use_dither, 1); desc("Use Dithering");
|
yesno("dither", use_dither, 1); desc("Use Dithering");
|
||||||
key("dither_type", dither_type, 0); desc("Dither Type");
|
key("dither_type", dither_type, 0); desc("Dither Type");
|
||||||
yesno("broken_rgba8", broken_rgba8, 0); desc("Broken RGBA (OpenGL)");
|
|
||||||
yesno("alpha", alpha, 1); desc("Use Alpha Blending");
|
yesno("alpha", alpha, 1); desc("Use Alpha Blending");
|
||||||
key("brightness", brightness, 100); desc("Brightness");
|
key("brightness", brightness, 100); desc("Brightness");
|
||||||
key("contrast", contrast, 100); desc("Contrast");
|
key("contrast", contrast, 100); desc("Contrast");
|
||||||
@ -120,6 +113,14 @@ void prefs_t::init()
|
|||||||
key("release", o_release, 50, 0); desc("Limiter Speed");
|
key("release", o_release, 50, 0); desc("Limiter Speed");
|
||||||
key("internalres", o_internalres, 1, 0); desc("Texture Resolution");
|
key("internalres", o_internalres, 1, 0); desc("Texture Resolution");
|
||||||
|
|
||||||
|
// SDL 1.2-era video keys, ignored under SDL 3.
|
||||||
|
key("videodriver", o_videodriver, 0, 0); desc("Display Driver");
|
||||||
|
key("depth", o_depth, 0, 0); desc("Display Depth");
|
||||||
|
key("buffer", o_doublebuf, 1, 0); desc("Display Buffer Mode");
|
||||||
|
yesno("shadow", o_shadow, 1, 0); desc("Software Shadow Buffer");
|
||||||
|
key("videopages", o_pages, -1, 0); desc("Number of Video Pages");
|
||||||
|
yesno("broken_rgba8", o_broken_rgba8, 0, 0); desc("Broken RGBA (OpenGL)");
|
||||||
|
|
||||||
comment("--- Temporary variables --------------------");
|
comment("--- Temporary variables --------------------");
|
||||||
key("last_profile", last_profile, 0);
|
key("last_profile", last_profile, 0);
|
||||||
desc("Last used player profile");
|
desc("Last used player profile");
|
||||||
@ -170,9 +171,4 @@ void prefs_t::postload()
|
|||||||
log_printf(ELOG, "Radar sweep mode broken and disabled!\n");
|
log_printf(ELOG, "Radar sweep mode broken and disabled!\n");
|
||||||
scrollradar = 2;
|
scrollradar = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only the SDL 2D driver remains since the SDL 3 migration; collapse
|
|
||||||
// any legacy GLSDL setting onto it.
|
|
||||||
if(videodriver != GFX_DRIVER_SDL2D)
|
|
||||||
videodriver = GFX_DRIVER_SDL2D;
|
|
||||||
}
|
}
|
||||||
|
|||||||
15
prefs.h
15
prefs.h
@ -73,24 +73,18 @@ class prefs_t : public config_parser_t
|
|||||||
|
|
||||||
//Video settings
|
//Video settings
|
||||||
int fullscreen; //Use fullscreen mode
|
int fullscreen; //Use fullscreen mode
|
||||||
int videodriver; //Internal video driver
|
|
||||||
int width; //Screen/window width
|
int width; //Screen/window width
|
||||||
int height; //Screen/window height
|
int height; //Screen/window height
|
||||||
int aspect; //Pixel aspect ratio * 1000
|
int aspect; //Pixel aspect ratio * 1000
|
||||||
int depth; //Bits per pixel
|
|
||||||
int max_fps; //Maximum fps
|
int max_fps; //Maximum fps
|
||||||
int max_fps_strict; //Strictly regulated fps limiter
|
int max_fps_strict; //Strictly regulated fps limiter
|
||||||
int doublebuf; //Use double buffering
|
int videomode; //Selected entry from the vidmodes table
|
||||||
int shadow; //Use software shadow buffer
|
|
||||||
int videomode; //New video mode codes
|
|
||||||
int vsync; //Vertical (retrace) sync
|
int vsync; //Vertical (retrace) sync
|
||||||
int pages; //Number of physical video pages
|
|
||||||
|
|
||||||
//Graphics settings
|
//Graphics settings
|
||||||
int scalemode; //Scaling filter mode
|
int scalemode; //Scaling filter mode
|
||||||
int use_dither;
|
int use_dither;
|
||||||
int dither_type;
|
int dither_type;
|
||||||
int broken_rgba8; //For some OpenGL setups
|
|
||||||
int alpha; //Alpha blending
|
int alpha; //Alpha blending
|
||||||
int brightness; //Graphics brightness
|
int brightness; //Graphics brightness
|
||||||
int contrast; //Graphics contrast
|
int contrast; //Graphics contrast
|
||||||
@ -108,6 +102,13 @@ class prefs_t : public config_parser_t
|
|||||||
int o_threshold; //Limiter threshold
|
int o_threshold; //Limiter threshold
|
||||||
int o_release; //Limiter release rate
|
int o_release; //Limiter release rate
|
||||||
int o_internalres; //Internal resolution for OpenGL
|
int o_internalres; //Internal resolution for OpenGL
|
||||||
|
// SDL 1.2 video settings, read for back-compat but unused under SDL 3
|
||||||
|
int o_videodriver;
|
||||||
|
int o_depth;
|
||||||
|
int o_doublebuf;
|
||||||
|
int o_shadow;
|
||||||
|
int o_pages;
|
||||||
|
int o_broken_rgba8;
|
||||||
|
|
||||||
//"Hidden" stuff ("to remember until next startup")
|
//"Hidden" stuff ("to remember until next startup")
|
||||||
int last_profile; //Last used player profile
|
int last_profile; //Last used player profile
|
||||||
|
|||||||
@ -1600,7 +1600,6 @@ void st_options_base_t::select(int tag)
|
|||||||
gengine->timefilter(prefs->timefilter * 0.01f);
|
gengine->timefilter(prefs->timefilter * 0.01f);
|
||||||
gengine->interpolation(prefs->filter);
|
gengine->interpolation(prefs->filter);
|
||||||
gengine->vsync(prefs->vsync);
|
gengine->vsync(prefs->vsync);
|
||||||
gengine->pages(prefs->pages);
|
|
||||||
}
|
}
|
||||||
cfg_form->clearstatus(OS_UPDATE);
|
cfg_form->clearstatus(OS_UPDATE);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user