Deal with renderer magic numbers
This commit is contained in:
40
src/include/86box/renderdefs.h
Normal file
40
src/include/86box/renderdefs.h
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* 86Box A hypervisor and IBM PC system emulator that specializes in
|
||||||
|
* running old operating systems and software designed for IBM
|
||||||
|
* PC systems and compatibles from 1981 through fairly recent
|
||||||
|
* system designs based on the PCI bus.
|
||||||
|
*
|
||||||
|
* This file is part of the 86Box distribution.
|
||||||
|
*
|
||||||
|
* definitions for renderers
|
||||||
|
*
|
||||||
|
* Authors: Jasmine Iwanek, <jriwanek@gmail.com>
|
||||||
|
*
|
||||||
|
* Copyright 2025 Jasmine Iwanek.
|
||||||
|
*/
|
||||||
|
#ifndef EMU_RENDERDEFS_H
|
||||||
|
#define EMU_RENDERDEFS_H
|
||||||
|
|
||||||
|
#define RENDERER_NAME_DEFAULT "default"
|
||||||
|
#define RENDERER_NAME_SYSTEM "system"
|
||||||
|
#define RENDERER_NAME_QT_SOFTWARE "qt_software"
|
||||||
|
#define RENDERER_NAME_QT_OPENGL "qt_opengl"
|
||||||
|
#define RENDERER_NAME_QT_OPENGLES "qt_opengles"
|
||||||
|
#define RENDERER_NAME_QT_OPENGL3 "qt_opengl3"
|
||||||
|
#define RENDERER_NAME_QT_VULKAN "qt_vulkan"
|
||||||
|
#define RENDERER_NAME_VNC "vnc"
|
||||||
|
|
||||||
|
#define RENDERER_SOFTWARE 0
|
||||||
|
#define RENDERER_OPENGL3 1
|
||||||
|
#define RENDERER_VULKAN 2
|
||||||
|
#define RENDERER_VNC 3
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /*EMU_RENDERDEFS_H*/
|
||||||
39
src/qt/qt.c
39
src/qt/qt.c
@@ -28,6 +28,7 @@
|
|||||||
#include <86box/plat.h>
|
#include <86box/plat.h>
|
||||||
#include <86box/timer.h>
|
#include <86box/timer.h>
|
||||||
#include <86box/nvr.h>
|
#include <86box/nvr.h>
|
||||||
|
#include <86box/renderdefs.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
qt_nvr_save(void)
|
qt_nvr_save(void)
|
||||||
@@ -38,16 +39,16 @@ qt_nvr_save(void)
|
|||||||
int
|
int
|
||||||
plat_vidapi(const char *api)
|
plat_vidapi(const char *api)
|
||||||
{
|
{
|
||||||
if (!strcasecmp(api, "default") || !strcasecmp(api, "system"))
|
if (!strcasecmp(api, RENDERER_NAME_DEFAULT) || !strcasecmp(api, RENDERER_NAME_SYSTEM))
|
||||||
return 0;
|
return RENDERER_SOFTWARE;
|
||||||
else if (!strcasecmp(api, "qt_software"))
|
else if (!strcasecmp(api, RENDERER_NAME_QT_SOFTWARE))
|
||||||
return 0;
|
return RENDERER_SOFTWARE;
|
||||||
else if (!strcasecmp(api, "qt_opengl") || !strcasecmp(api, "qt_opengles") || !strcasecmp(api, "qt_opengl3"))
|
else if (!strcasecmp(api, RENDERER_NAME_QT_OPENGL) || !strcasecmp(api, RENDERER_NAME_QT_OPENGLES) || !strcasecmp(api, RENDERER_NAME_QT_OPENGL3))
|
||||||
return 1;
|
return RENDERER_OPENGL3;
|
||||||
else if (!strcasecmp(api, "qt_vulkan"))
|
else if (!strcasecmp(api, RENDERER_NAME_QT_VULKAN))
|
||||||
return 2;
|
return RENDERER_VULKAN;
|
||||||
else if (!strcasecmp(api, "vnc"))
|
else if (!strcasecmp(api, RENDERER_NAME_VNC))
|
||||||
return 3;
|
return RENDERER_VNC;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -55,20 +56,20 @@ plat_vidapi(const char *api)
|
|||||||
char *
|
char *
|
||||||
plat_vidapi_name(int api)
|
plat_vidapi_name(int api)
|
||||||
{
|
{
|
||||||
char *name = "default";
|
char *name = RENDERER_NAME_DEFAULT;
|
||||||
|
|
||||||
switch (api) {
|
switch (api) {
|
||||||
case 0:
|
case RENDERER_SOFTWARE:
|
||||||
name = "qt_software";
|
name = RENDERER_NAME_QT_SOFTWARE;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case RENDERER_OPENGL3:
|
||||||
name = "qt_opengl3";
|
name = RENDERER_NAME_QT_OPENGL3;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case RENDERER_VULKAN:
|
||||||
name = "qt_vulkan";
|
name = RENDERER_NAME_QT_VULKAN;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case RENDERER_VNC:
|
||||||
name = "vnc";
|
name = RENDERER_NAME_VNC;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fatal("Unknown renderer: %i\n", api);
|
fatal("Unknown renderer: %i\n", api);
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
#include <86box/gdbstub.h>
|
#include <86box/gdbstub.h>
|
||||||
#include <86box/version.h>
|
#include <86box/version.h>
|
||||||
|
#include <86box/renderdefs.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef Q_OS_WINDOWS
|
#ifdef Q_OS_WINDOWS
|
||||||
@@ -835,7 +836,7 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* Set the PAUSE mode depending on the renderer. */
|
/* Set the PAUSE mode depending on the renderer. */
|
||||||
#ifdef USE_VNC
|
#ifdef USE_VNC
|
||||||
if (vid_api == 3)
|
if (vid_api == RENDERER_VNC)
|
||||||
plat_pause(1);
|
plat_pause(1);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ extern "C" {
|
|||||||
#include <86box/apm.h>
|
#include <86box/apm.h>
|
||||||
#include <86box/nvr.h>
|
#include <86box/nvr.h>
|
||||||
#include <86box/acpi.h>
|
#include <86box/acpi.h>
|
||||||
|
#include <86box/renderdefs.h>
|
||||||
|
|
||||||
#ifdef USE_VNC
|
#ifdef USE_VNC
|
||||||
# include <86box/vnc.h>
|
# include <86box/vnc.h>
|
||||||
@@ -421,16 +422,16 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ((QApplication::platformName().contains("eglfs") || QApplication::platformName() == "haiku")) {
|
if ((QApplication::platformName().contains("eglfs") || QApplication::platformName() == "haiku")) {
|
||||||
if (vid_api >= 1)
|
if ((vid_api == RENDERER_OPENGL3) || (vid_api == RENDERER_VULKAN))
|
||||||
fprintf(stderr, "OpenGL renderers are unsupported on %s.\n", QApplication::platformName().toUtf8().data());
|
fprintf(stderr, "OpenGL renderers are unsupported on %s.\n", QApplication::platformName().toUtf8().data());
|
||||||
vid_api = 0;
|
vid_api = RENDERER_SOFTWARE;
|
||||||
ui->actionVulkan->setVisible(false);
|
ui->actionVulkan->setVisible(false);
|
||||||
ui->actionOpenGL_3_0_Core->setVisible(false);
|
ui->actionOpenGL_3_0_Core->setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef USE_VNC
|
#ifndef USE_VNC
|
||||||
if (vid_api == 3)
|
if (vid_api == RENDERER_VNC)
|
||||||
vid_api = 0;
|
vid_api = RENDERER_SOFTWARE;
|
||||||
ui->actionVNC->setVisible(false);
|
ui->actionVNC->setVisible(false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -450,8 +451,8 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
if (!vulkanAvailable)
|
if (!vulkanAvailable)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (vid_api == 2)
|
if (vid_api == RENDERER_VULKAN)
|
||||||
vid_api = 0;
|
vid_api = RENDERER_SOFTWARE;
|
||||||
ui->actionVulkan->setVisible(false);
|
ui->actionVulkan->setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -465,7 +466,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
connect(actGroup, &QActionGroup::triggered, [this](QAction *action) {
|
connect(actGroup, &QActionGroup::triggered, [this](QAction *action) {
|
||||||
vid_api = action->property("vid_api").toInt();
|
vid_api = action->property("vid_api").toInt();
|
||||||
#ifdef USE_VNC
|
#ifdef USE_VNC
|
||||||
if (vnc_enabled && vid_api != 3) {
|
if (vnc_enabled && vid_api != RENDERER_VNC) {
|
||||||
startblit();
|
startblit();
|
||||||
vnc_enabled = 0;
|
vnc_enabled = 0;
|
||||||
vnc_close();
|
vnc_close();
|
||||||
@@ -477,17 +478,17 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
switch (vid_api) {
|
switch (vid_api) {
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
case 0:
|
case RENDERER_SOFTWARE:
|
||||||
newVidApi = RendererStack::Renderer::Software;
|
newVidApi = RendererStack::Renderer::Software;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case RENDERER_OPENGL3:
|
||||||
newVidApi = RendererStack::Renderer::OpenGL3;
|
newVidApi = RendererStack::Renderer::OpenGL3;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case RENDERER_VULKAN:
|
||||||
newVidApi = RendererStack::Renderer::Vulkan;
|
newVidApi = RendererStack::Renderer::Vulkan;
|
||||||
break;
|
break;
|
||||||
#ifdef USE_VNC
|
#ifdef USE_VNC
|
||||||
case 3:
|
case RENDERER_VNC:
|
||||||
{
|
{
|
||||||
newVidApi = RendererStack::Renderer::Software;
|
newVidApi = RendererStack::Renderer::Software;
|
||||||
startblit();
|
startblit();
|
||||||
|
|||||||
Reference in New Issue
Block a user