mirror of
https://github.com/holub/mame
synced 2025-06-30 07:58:56 +03:00
Moved opengl related stuff to modules/opengl
This commit is contained in:
parent
2c2994aeb5
commit
eb8144a3bb
@ -1,10 +1,6 @@
|
||||
#include <stdio.h> /* snprintf */
|
||||
#include <stdlib.h> /* malloc */
|
||||
|
||||
#ifndef OSD_WINDOWS
|
||||
#include "sdlinc.h"
|
||||
#endif
|
||||
|
||||
#include "osd_opengl.h"
|
||||
|
||||
#include "gl_shader_mgr.h"
|
@ -30,7 +30,7 @@
|
||||
#endif
|
||||
|
||||
// OpenGL headers
|
||||
#include "osd_opengl.h"
|
||||
#include "modules/opengl/osd_opengl.h"
|
||||
|
||||
#ifdef OSD_WINDOWS
|
||||
#define SDLMAME_SDL2 1
|
||||
@ -43,8 +43,8 @@
|
||||
#include "modules/lib/osdobj_common.h"
|
||||
|
||||
|
||||
#include "gl_shader_tool.h"
|
||||
#include "gl_shader_mgr.h"
|
||||
#include "modules/opengl/gl_shader_tool.h"
|
||||
#include "modules/opengl/gl_shader_mgr.h"
|
||||
|
||||
#if defined(SDLMAME_MACOSX)
|
||||
#ifndef APIENTRY
|
||||
@ -770,7 +770,7 @@ static void loadgl_functions(osd_gl_context *context)
|
||||
#define OSD_GL_UNUSED(ret,func,params)
|
||||
|
||||
#define GET_GLFUNC 1
|
||||
#include "osd_opengl.h"
|
||||
#include "modules/opengl/osd_opengl.h"
|
||||
#undef GET_GLFUNC
|
||||
|
||||
if (err_count)
|
||||
|
@ -427,6 +427,7 @@ OBJDIRS += $(SDLOBJ) \
|
||||
$(OSDOBJ)/modules/midi \
|
||||
$(OSDOBJ)/modules/font \
|
||||
$(OSDOBJ)/modules/netdev \
|
||||
$(OSDOBJ)/modules/opengl \
|
||||
|
||||
#-------------------------------------------------
|
||||
# OSD core library
|
||||
@ -821,7 +822,11 @@ endif
|
||||
ifeq ($(NO_OPENGL),1)
|
||||
DEFS += -DUSE_OPENGL=0
|
||||
else
|
||||
OSDOBJS += $(SDLOBJ)/drawogl.o $(SDLOBJ)/gl_shader_tool.o $(SDLOBJ)/gl_shader_mgr.o
|
||||
OSDOBJS += \
|
||||
$(SDLOBJ)/drawogl.o \
|
||||
$(OSDOBJ)/modules/opengl/gl_shader_tool.o \
|
||||
$(OSDOBJ)/modules/opengl/gl_shader_mgr.o
|
||||
|
||||
DEFS += -DUSE_OPENGL=1
|
||||
ifeq ($(USE_DISPATCH_GL),1)
|
||||
DEFS += -DUSE_DISPATCH_GL=1
|
||||
|
@ -107,19 +107,6 @@ private:
|
||||
float m_aspect; // computed/configured aspect ratio of the physical device
|
||||
};
|
||||
|
||||
|
||||
struct osd_window_config
|
||||
{
|
||||
osd_window_config() : aspect(0.0f), width(0), height(0), depth(0), refresh(0) {}
|
||||
|
||||
float aspect; // decoded aspect ratio FIXME: not used on windows
|
||||
int width; // decoded width
|
||||
int height; // decoded height
|
||||
int depth; // decoded depth - only SDL
|
||||
int refresh; // decoded refresh
|
||||
};
|
||||
|
||||
|
||||
struct sdl_video_config
|
||||
{
|
||||
// performance options
|
||||
|
@ -13,12 +13,10 @@
|
||||
#define __SDLWINDOW__
|
||||
|
||||
#include "sdlinc.h"
|
||||
#include "video.h"
|
||||
#include "render.h"
|
||||
#include "modules/sync/osdsync.h"
|
||||
|
||||
#include "osd_opengl.h"
|
||||
#include "osdsdl.h"
|
||||
#include "video.h"
|
||||
|
||||
#include "modules/osdwindow.h"
|
||||
|
||||
// I don't like this, but we're going to get spurious "cast to integer of different size" warnings on
|
||||
// at least one architecture without doing it this way.
|
||||
@ -32,121 +30,6 @@ typedef UINT32 HashT;
|
||||
// TYPE DEFINITIONS
|
||||
//============================================================
|
||||
|
||||
/* ------------------------------------------------------
|
||||
*
|
||||
* All types named osd_* will ultimately be located in
|
||||
* the modules tree. They are temporarily maintained in
|
||||
* window.h until basic code simplification is finished.
|
||||
*
|
||||
*/
|
||||
|
||||
class win_window_info;
|
||||
|
||||
class osd_window
|
||||
{
|
||||
public:
|
||||
osd_window()
|
||||
:
|
||||
#ifdef OSD_SDL
|
||||
#else
|
||||
m_hwnd(0), m_dc(0), m_focus_hwnd(0), m_resize_state(0),
|
||||
#endif
|
||||
m_prescale(1),
|
||||
m_primlist(NULL)
|
||||
{}
|
||||
virtual ~osd_window() { }
|
||||
|
||||
virtual render_target *target() = 0;
|
||||
virtual int fullscreen() const = 0;
|
||||
virtual running_machine &machine() const = 0;
|
||||
|
||||
int prescale() const { return m_prescale; };
|
||||
|
||||
float aspect() const { return monitor()->aspect(); }
|
||||
|
||||
virtual void get_size(int &w, int &h) = 0;
|
||||
|
||||
#ifdef OSD_SDL
|
||||
virtual void blit_surface_size(int &blitwidth, int &blitheight) = 0;
|
||||
virtual sdl_monitor_info *monitor() const = 0;
|
||||
#if (SDLMAME_SDL2)
|
||||
virtual SDL_Window *sdl_window() = 0;
|
||||
#else
|
||||
virtual SDL_Surface *sdl_surface() = 0;
|
||||
#endif
|
||||
#else
|
||||
virtual win_monitor_info *monitor() const = 0;
|
||||
virtual bool win_has_menu() = 0;
|
||||
// FIXME: cann we replace winwindow_video_window_monitor(NULL) with monitor() ?
|
||||
virtual win_monitor_info *winwindow_video_window_monitor(const RECT *proposed) = 0;
|
||||
|
||||
// window handle and info
|
||||
HWND m_hwnd;
|
||||
HDC m_dc; // only used by GDI renderer!
|
||||
// FIXME: this is the same as win_window_list->m_hwnd, i.e. first window.
|
||||
// During modularization, this should be passed in differently
|
||||
HWND m_focus_hwnd;
|
||||
|
||||
int m_resize_state;
|
||||
#endif
|
||||
|
||||
osd_window_config m_win_config;
|
||||
int m_prescale;
|
||||
render_primitive_list *m_primlist;
|
||||
};
|
||||
|
||||
class osd_renderer
|
||||
{
|
||||
public:
|
||||
|
||||
/* Generic flags */
|
||||
static const int FLAG_NONE = 0x0000;
|
||||
static const int FLAG_NEEDS_OPENGL = 0x0001;
|
||||
static const int FLAG_HAS_VECTOR_SCREEN = 0x0002;
|
||||
|
||||
/* SDL 1.2 flags */
|
||||
static const int FLAG_NEEDS_DOUBLEBUF = 0x0100;
|
||||
static const int FLAG_NEEDS_ASYNCBLIT = 0x0200;
|
||||
|
||||
osd_renderer(osd_window *window, const int flags)
|
||||
: m_window(window), m_flags(flags) { }
|
||||
|
||||
virtual ~osd_renderer() { }
|
||||
|
||||
osd_window &window() { return *m_window; }
|
||||
bool has_flags(const int flag) { return ((m_flags & flag)) == flag; }
|
||||
void set_flags(int aflag) { m_flags |= aflag; }
|
||||
void clear_flags(int aflag) { m_flags &= ~aflag; }
|
||||
|
||||
|
||||
void notify_changed() { set_flags(FI_CHANGED); }
|
||||
|
||||
/* Interface to be implemented by render code */
|
||||
|
||||
virtual int create() = 0;
|
||||
virtual render_primitive_list *get_primitives() = 0;
|
||||
|
||||
virtual int draw(const int update) = 0;
|
||||
#ifdef OSD_SDL
|
||||
virtual int xy_to_render_target(const int x, const int y, int *xt, int *yt) = 0;
|
||||
#else
|
||||
virtual void save() = 0;
|
||||
virtual void record() = 0;
|
||||
virtual void toggle_fsfx() = 0;
|
||||
#endif
|
||||
|
||||
virtual void destroy() = 0;
|
||||
|
||||
protected:
|
||||
/* Internal flags */
|
||||
static const int FI_CHANGED = 0x010000;
|
||||
|
||||
private:
|
||||
|
||||
osd_window *m_window;
|
||||
int m_flags;
|
||||
};
|
||||
|
||||
#define OSDWORK_CALLBACK(name) void *name(void *param, ATTR_UNUSED int threadid)
|
||||
|
||||
class sdl_window_info : public osd_window
|
||||
|
@ -64,6 +64,9 @@ static void get_resolution(const char *defdata, const char *data, osd_window_con
|
||||
// video_init
|
||||
//============================================================
|
||||
|
||||
// FIXME: Temporary workaround
|
||||
static osd_window_config windows[MAX_WINDOWS]; // configuration data per-window
|
||||
|
||||
bool windows_osd_interface::video_init()
|
||||
{
|
||||
int index;
|
||||
@ -80,7 +83,7 @@ bool windows_osd_interface::video_init()
|
||||
// create the windows
|
||||
windows_options &options = downcast<windows_options &>(machine().options());
|
||||
for (index = 0; index < video_config.numscreens; index++)
|
||||
winwindow_video_window_create(machine(), index, pick_monitor(options, index), &video_config.window[index]);
|
||||
winwindow_video_window_create(machine(), index, pick_monitor(options, index), &windows[index]);
|
||||
if (video_config.mode != VIDEO_MODE_NONE)
|
||||
SetForegroundWindow(win_window_list->m_hwnd);
|
||||
|
||||
@ -371,10 +374,10 @@ void windows_osd_interface::extract_video_config()
|
||||
|
||||
// per-window options: extract the data
|
||||
const char *default_resolution = options().resolution();
|
||||
get_resolution(default_resolution, options().resolution(0), &video_config.window[0], TRUE);
|
||||
get_resolution(default_resolution, options().resolution(1), &video_config.window[1], TRUE);
|
||||
get_resolution(default_resolution, options().resolution(2), &video_config.window[2], TRUE);
|
||||
get_resolution(default_resolution, options().resolution(3), &video_config.window[3], TRUE);
|
||||
get_resolution(default_resolution, options().resolution(0), &windows[0], TRUE);
|
||||
get_resolution(default_resolution, options().resolution(1), &windows[1], TRUE);
|
||||
get_resolution(default_resolution, options().resolution(2), &windows[2], TRUE);
|
||||
get_resolution(default_resolution, options().resolution(3), &windows[3], TRUE);
|
||||
|
||||
// video options: extract the data
|
||||
stemp = options().video();
|
||||
|
@ -10,7 +10,7 @@
|
||||
#define __WIN_VIDEO__
|
||||
|
||||
#include "render.h"
|
||||
|
||||
//#include "modules/osdwindow.h"
|
||||
|
||||
//============================================================
|
||||
// CONSTANTS
|
||||
@ -67,19 +67,6 @@ private:
|
||||
char * m_name;
|
||||
};
|
||||
|
||||
|
||||
struct osd_window_config
|
||||
{
|
||||
osd_window_config() : aspect(0.0f), width(0), height(0), depth(0), refresh(0) {}
|
||||
|
||||
float aspect; // decoded aspect ratio FIXME: not used on windows
|
||||
int width; // decoded width
|
||||
int height; // decoded height
|
||||
int depth; // decoded depth - only SDL
|
||||
int refresh; // decoded refresh
|
||||
};
|
||||
|
||||
|
||||
struct win_video_config
|
||||
{
|
||||
// global configuration
|
||||
@ -90,7 +77,7 @@ struct win_video_config
|
||||
render_layer_config layerconfig; // default configuration of layers
|
||||
|
||||
// per-window configuration
|
||||
osd_window_config window[MAX_WINDOWS]; // configuration data per-window
|
||||
//osd_window_config window[MAX_WINDOWS]; // configuration data per-window
|
||||
|
||||
// hardware options
|
||||
int mode; // output mode
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "video.h"
|
||||
#include "render.h"
|
||||
|
||||
#include "modules/osdwindow.h"
|
||||
|
||||
//============================================================
|
||||
// PARAMETERS
|
||||
@ -32,121 +33,6 @@
|
||||
// TYPE DEFINITIONS
|
||||
//============================================================
|
||||
|
||||
/* ------------------------------------------------------
|
||||
*
|
||||
* All types named osd_* will ultimately be located in
|
||||
* the modules tree. They are temporarily maintained in
|
||||
* window.h until basic code simplification is finished.
|
||||
*
|
||||
*/
|
||||
|
||||
class win_window_info;
|
||||
|
||||
class osd_window
|
||||
{
|
||||
public:
|
||||
osd_window()
|
||||
:
|
||||
#ifdef OSD_SDL
|
||||
#else
|
||||
m_hwnd(0), m_dc(0), m_focus_hwnd(0), m_resize_state(0),
|
||||
#endif
|
||||
m_prescale(1),
|
||||
m_primlist(NULL)
|
||||
{}
|
||||
virtual ~osd_window() { }
|
||||
|
||||
virtual render_target *target() = 0;
|
||||
virtual int fullscreen() const = 0;
|
||||
virtual running_machine &machine() const = 0;
|
||||
|
||||
int prescale() const { return m_prescale; };
|
||||
|
||||
float aspect() const { return monitor()->aspect(); }
|
||||
|
||||
virtual void get_size(int &w, int &h) = 0;
|
||||
|
||||
#ifdef OSD_SDL
|
||||
virtual void blit_surface_size(int &blitwidth, int &blitheight) = 0;
|
||||
virtual sdl_monitor_info *monitor() const = 0;
|
||||
#if (SDLMAME_SDL2)
|
||||
virtual SDL_Window *sdl_window() = 0;
|
||||
#else
|
||||
virtual SDL_Surface *sdl_surface() = 0;
|
||||
#endif
|
||||
#else
|
||||
virtual win_monitor_info *monitor() const = 0;
|
||||
virtual bool win_has_menu() = 0;
|
||||
// FIXME: cann we replace winwindow_video_window_monitor(NULL) with monitor() ?
|
||||
virtual win_monitor_info *winwindow_video_window_monitor(const RECT *proposed) = 0;
|
||||
|
||||
// window handle and info
|
||||
HWND m_hwnd;
|
||||
HDC m_dc; // only used by GDI renderer!
|
||||
// FIXME: this is the same as win_window_list->m_hwnd, i.e. first window.
|
||||
// During modularization, this should be passed in differently
|
||||
HWND m_focus_hwnd;
|
||||
|
||||
int m_resize_state;
|
||||
#endif
|
||||
|
||||
osd_window_config m_win_config;
|
||||
int m_prescale;
|
||||
render_primitive_list * m_primlist;
|
||||
};
|
||||
|
||||
class osd_renderer
|
||||
{
|
||||
public:
|
||||
|
||||
/* Generic flags */
|
||||
static const int FLAG_NONE = 0x0000;
|
||||
static const int FLAG_NEEDS_OPENGL = 0x0001;
|
||||
static const int FLAG_HAS_VECTOR_SCREEN = 0x0002;
|
||||
|
||||
/* SDL 1.2 flags */
|
||||
static const int FLAG_NEEDS_DOUBLEBUF = 0x0100;
|
||||
static const int FLAG_NEEDS_ASYNCBLIT = 0x0200;
|
||||
|
||||
osd_renderer(osd_window *window, const int flags)
|
||||
: m_window(window), m_flags(flags) { }
|
||||
|
||||
virtual ~osd_renderer() { }
|
||||
|
||||
osd_window &window() { return *m_window; }
|
||||
bool has_flags(const int flag) { return ((m_flags & flag)) == flag; }
|
||||
void set_flags(int aflag) { m_flags |= aflag; }
|
||||
void clear_flags(int aflag) { m_flags &= ~aflag; }
|
||||
|
||||
|
||||
void notify_changed() { set_flags(FI_CHANGED); }
|
||||
|
||||
/* Interface to be implemented by render code */
|
||||
|
||||
virtual int create() = 0;
|
||||
virtual render_primitive_list *get_primitives() = 0;
|
||||
|
||||
virtual int draw(const int update) = 0;
|
||||
#ifdef OSD_SDL
|
||||
virtual int xy_to_render_target(const int x, const int y, int *xt, int *yt) = 0;
|
||||
#else
|
||||
virtual void save() = 0;
|
||||
virtual void record() = 0;
|
||||
virtual void toggle_fsfx() = 0;
|
||||
#endif
|
||||
|
||||
virtual void destroy() = 0;
|
||||
|
||||
protected:
|
||||
/* Internal flags */
|
||||
static const int FI_CHANGED = 0x010000;
|
||||
|
||||
private:
|
||||
|
||||
osd_window *m_window;
|
||||
int m_flags;
|
||||
};
|
||||
|
||||
class win_window_info : public osd_window
|
||||
{
|
||||
public:
|
||||
@ -226,8 +112,6 @@ struct osd_draw_callbacks
|
||||
void (*exit)(void);
|
||||
};
|
||||
|
||||
|
||||
|
||||
//============================================================
|
||||
// GLOBAL VARIABLES
|
||||
//============================================================
|
||||
|
@ -402,8 +402,14 @@ OSDOBJS = \
|
||||
$(OSDOBJ)/modules/netdev/none.o \
|
||||
|
||||
ifdef USE_OPENGL
|
||||
OSDOBJS += $(WINOBJ)/../sdl/drawogl.o $(WINOBJ)/../sdl/gl_shader_tool.o $(WINOBJ)/../sdl/gl_shader_mgr.o
|
||||
OBJDIRS += $(WINOBJ)/../sdl
|
||||
OSDOBJS += \
|
||||
$(WINOBJ)/../sdl/drawogl.o \
|
||||
$(OSDOBJ)/modules/opengl/gl_shader_tool.o \
|
||||
$(OSDOBJ)/modules/opengl/gl_shader_mgr.o
|
||||
|
||||
OBJDIRS += \
|
||||
$(OSDOBJ)/modules/opengl \
|
||||
$(WINOBJ)/../sdl
|
||||
|
||||
DEFS += -DUSE_OPENGL=1
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user