Previous 199869 Revisions Next

r36143 Saturday 28th February, 2015 at 13:30:12 UTC by Couriersud
OpenGL on windows now supports glsl options. This worked out of the box
with wine64 and on virtualbox windows7 (64bit).

mametiny.exe gridlee -video opengl -gl_glsl -glsl_shader_mame0
shader/glsl_plain -glsl_shader_mame1 shader/TV/tv  -now
-gl_forcepow2texture -keepaspect

[Couriersud]
[src/osd/modules/lib]osdobj_common.c osdobj_common.h
[src/osd/sdl]osdsdl.h sdlmain.c video.c
[src/osd/windows]video.c winmain.c winmain.h

trunk/src/osd/modules/lib/osdobj_common.c
r244654r244655
8282   { OSDOPTION_SOUND,                        OSDOPTVAL_AUTO, OPTION_STRING,     "sound output method: " },
8383   { OSDOPTION_AUDIO_LATENCY "(1-5)",        "2",   OPTION_INTEGER,    "set audio latency (increase to reduce glitches, decrease for responsiveness)" },
8484
85   { NULL,                                   NULL,   OPTION_HEADER,  "OSD VIDEO OPTIONS" },
86   { OSDOPTION_FILTER ";glfilter;flt",       "1",    OPTION_BOOLEAN, "enable bilinear filtering on screen output" },
87   { OSDOPTION_PRESCALE,                     "1",    OPTION_INTEGER,                 "scale screen rendering by this amount in software" },
88
89#if USE_OPENGL
90   // OpenGL specific options
91   { NULL,                                   NULL,   OPTION_HEADER,  "OpenGL-SPECIFIC OPTIONS" },
92   { OSDOPTION_GL_FORCEPOW2TEXTURE,          "0",    OPTION_BOOLEAN, "force power of two textures  (default no)" },
93   { OSDOPTION_GL_NOTEXTURERECT,             "0",    OPTION_BOOLEAN, "don't use OpenGL GL_ARB_texture_rectangle (default on)" },
94   { OSDOPTION_GL_VBO,                       "1",    OPTION_BOOLEAN, "enable OpenGL VBO,  if available (default on)" },
95   { OSDOPTION_GL_PBO,                       "1",    OPTION_BOOLEAN, "enable OpenGL PBO,  if available (default on)" },
96   { OSDOPTION_GL_GLSL,                      "0",    OPTION_BOOLEAN, "enable OpenGL GLSL, if available (default off)" },
97   { OSDOPTION_GLSL_FILTER,                  "1",    OPTION_STRING,  "enable OpenGL GLSL filtering instead of FF filtering 0-plain, 1-bilinear (default)" },
98   { OSDOPTION_SHADER_MAME "0",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 0" },
99   { OSDOPTION_SHADER_MAME "1",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 1" },
100   { OSDOPTION_SHADER_MAME "2",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 2" },
101   { OSDOPTION_SHADER_MAME "3",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 3" },
102   { OSDOPTION_SHADER_MAME "4",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 4" },
103   { OSDOPTION_SHADER_MAME "5",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 5" },
104   { OSDOPTION_SHADER_MAME "6",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 6" },
105   { OSDOPTION_SHADER_MAME "7",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 7" },
106   { OSDOPTION_SHADER_MAME "8",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 8" },
107   { OSDOPTION_SHADER_MAME "9",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 9" },
108   { OSDOPTION_SHADER_SCREEN "0",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 0" },
109   { OSDOPTION_SHADER_SCREEN "1",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 1" },
110   { OSDOPTION_SHADER_SCREEN "2",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 2" },
111   { OSDOPTION_SHADER_SCREEN "3",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 3" },
112   { OSDOPTION_SHADER_SCREEN "4",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 4" },
113   { OSDOPTION_SHADER_SCREEN "5",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 5" },
114   { OSDOPTION_SHADER_SCREEN "6",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 6" },
115   { OSDOPTION_SHADER_SCREEN "7",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 7" },
116   { OSDOPTION_SHADER_SCREEN "8",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 8" },
117   { OSDOPTION_SHADER_SCREEN "9",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 9" },
118#endif
119
85120   // End of list
86121   { NULL }
87122};
trunk/src/osd/modules/lib/osdobj_common.h
r244654r244655
5555#define OSDOPTION_SOUND                 "sound"
5656#define OSDOPTION_AUDIO_LATENCY         "audio_latency"
5757
58#define OSDOPTION_FILTER                "filter"
59#define OSDOPTION_PRESCALE              "prescale"
60
61#define OSDOPTION_SHADER_MAME           "glsl_shader_mame"
62#define OSDOPTION_SHADER_SCREEN         "glsl_shader_screen"
63#define OSDOPTION_GLSL_FILTER           "gl_glsl_filter"
64#define OSDOPTION_GL_GLSL               "gl_glsl"
65#define OSDOPTION_GL_PBO                "gl_pbo"
66#define OSDOPTION_GL_VBO                "gl_vbo"
67#define OSDOPTION_GL_NOTEXTURERECT      "gl_notexturerect"
68#define OSDOPTION_GL_FORCEPOW2TEXTURE   "gl_forcepow2texture"
69
70
5871#define OSDOPTVAL_AUTO                  "auto"
5972#define OSDOPTVAL_NONE                  "none"
6073
r244654r244655
106119   const char *sound() const { return value(OSDOPTION_SOUND); }
107120   int audio_latency() const { return int_value(OSDOPTION_AUDIO_LATENCY); }
108121
122   // video options
123   bool filter() const { return bool_value(OSDOPTION_FILTER); }
124   int prescale() const { return int_value(OSDOPTION_PRESCALE); }
125
126   // OpenGL specific options
127   bool gl_force_pow2_texture() const { return bool_value(OSDOPTION_GL_FORCEPOW2TEXTURE); }
128   bool gl_no_texture_rect() const { return bool_value(OSDOPTION_GL_NOTEXTURERECT); }
129   bool gl_vbo() const { return bool_value(OSDOPTION_GL_VBO); }
130   bool gl_pbo() const { return bool_value(OSDOPTION_GL_PBO); }
131   bool gl_glsl() const { return bool_value(OSDOPTION_GL_GLSL); }
132   bool glsl_filter() const { return bool_value(OSDOPTION_GLSL_FILTER); }
133   const char *shader_mame(int index) const { astring temp; return value(temp.format("%s%d", OSDOPTION_SHADER_MAME, index)); }
134   const char *shader_screen(int index) const { astring temp; return value(temp.format("%s%d", OSDOPTION_SHADER_SCREEN, index)); }
135
109136private:
110137   static const options_entry s_option_entries[];
111138};
trunk/src/osd/sdl/osdsdl.h
r244654r244655
4343#define SDLOPTION_INIPATH               "inipath"
4444#define SDLOPTION_SDLVIDEOFPS           "sdlvideofps"
4545#define SDLOPTION_USEALLHEADS           "useallheads"
46#define SDLOPTION_FILTER                "filter"
4746#define SDLOPTION_CENTERH               "centerh"
4847#define SDLOPTION_CENTERV               "centerv"
49#define SDLOPTION_PRESCALE              "prescale"
5048
5149#define SDLOPTION_SCALEMODE             "scalemode"
5250
r244654r244655
6462#define SDLOPTION_LIGHTGUNINDEX         "lightgun_index"
6563#endif
6664
67#define SDLOPTION_SHADER_MAME           "glsl_shader_mame"
68#define SDLOPTION_SHADER_SCREEN         "glsl_shader_screen"
69#define SDLOPTION_GLSL_FILTER           "gl_glsl_filter"
70#define SDLOPTION_GL_GLSL               "gl_glsl"
71#define SDLOPTION_GL_PBO                "gl_pbo"
72#define SDLOPTION_GL_VBO                "gl_vbo"
73#define SDLOPTION_GL_NOTEXTURERECT      "gl_notexturerect"
74#define SDLOPTION_GL_FORCEPOW2TEXTURE   "gl_forcepow2texture"
75
7665#define SDLOPTION_AUDIODRIVER           "audiodriver"
7766#define SDLOPTION_VIDEODRIVER           "videodriver"
7867#define SDLOPTION_RENDERDRIVER          "renderdriver"
r244654r244655
125114   bool centerv() const { return bool_value(SDLOPTION_CENTERV); }
126115   const char *scale_mode() const { return value(SDLOPTION_SCALEMODE); }
127116
128   // OpenGL specific options
129   bool filter() const { return bool_value(SDLOPTION_FILTER); }
130   int prescale() const { return int_value(SDLOPTION_PRESCALE); }
131   bool gl_force_pow2_texture() const { return bool_value(SDLOPTION_GL_FORCEPOW2TEXTURE); }
132   bool gl_no_texture_rect() const { return bool_value(SDLOPTION_GL_NOTEXTURERECT); }
133   bool gl_vbo() const { return bool_value(SDLOPTION_GL_VBO); }
134   bool gl_pbo() const { return bool_value(SDLOPTION_GL_PBO); }
135   bool gl_glsl() const { return bool_value(SDLOPTION_GL_GLSL); }
136   bool glsl_filter() const { return bool_value(SDLOPTION_GLSL_FILTER); }
137   const char *shader_mame(int index) const { astring temp; return value(temp.format("%s%d", SDLOPTION_SHADER_MAME, index)); }
138   const char *shader_screen(int index) const { astring temp; return value(temp.format("%s%d", SDLOPTION_SHADER_SCREEN, index)); }
139
140117   // full screen options
141118#ifdef SDLMAME_X11
142119   bool use_all_heads() const { return bool_value(SDLOPTION_USEALLHEADS); }
trunk/src/osd/sdl/sdlmain.c
r244654r244655
107107#else
108108   { SDLOPTION_SCALEMODE ";sm",         OSDOPTVAL_NONE,  OPTION_STRING,     "Scale mode: none, async, yv12, yuy2, yv12x2, yuy2x2 (-video soft only)" },
109109#endif
110#if USE_OPENGL
111   // OpenGL specific options
112   { NULL,                                   NULL,   OPTION_HEADER,  "OpenGL-SPECIFIC OPTIONS" },
113   { SDLOPTION_FILTER ";glfilter;flt",       "1",    OPTION_BOOLEAN, "enable bilinear filtering on screen output" },
114   { SDLOPTION_PRESCALE,                     "1",    OPTION_INTEGER,                 "scale screen rendering by this amount in software" },
115   { SDLOPTION_GL_FORCEPOW2TEXTURE,          "0",    OPTION_BOOLEAN, "force power of two textures  (default no)" },
116   { SDLOPTION_GL_NOTEXTURERECT,             "0",    OPTION_BOOLEAN, "don't use OpenGL GL_ARB_texture_rectangle (default on)" },
117   { SDLOPTION_GL_VBO,                       "1",    OPTION_BOOLEAN, "enable OpenGL VBO,  if available (default on)" },
118   { SDLOPTION_GL_PBO,                       "1",    OPTION_BOOLEAN, "enable OpenGL PBO,  if available (default on)" },
119   { SDLOPTION_GL_GLSL,                      "0",    OPTION_BOOLEAN, "enable OpenGL GLSL, if available (default off)" },
120   { SDLOPTION_GLSL_FILTER,                  "1",    OPTION_STRING,  "enable OpenGL GLSL filtering instead of FF filtering 0-plain, 1-bilinear (default)" },
121   { SDLOPTION_SHADER_MAME "0",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 0" },
122   { SDLOPTION_SHADER_MAME "1",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 1" },
123   { SDLOPTION_SHADER_MAME "2",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 2" },
124   { SDLOPTION_SHADER_MAME "3",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 3" },
125   { SDLOPTION_SHADER_MAME "4",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 4" },
126   { SDLOPTION_SHADER_MAME "5",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 5" },
127   { SDLOPTION_SHADER_MAME "6",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 6" },
128   { SDLOPTION_SHADER_MAME "7",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 7" },
129   { SDLOPTION_SHADER_MAME "8",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 8" },
130   { SDLOPTION_SHADER_MAME "9",     OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader set mame bitmap 9" },
131   { SDLOPTION_SHADER_SCREEN "0",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 0" },
132   { SDLOPTION_SHADER_SCREEN "1",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 1" },
133   { SDLOPTION_SHADER_SCREEN "2",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 2" },
134   { SDLOPTION_SHADER_SCREEN "3",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 3" },
135   { SDLOPTION_SHADER_SCREEN "4",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 4" },
136   { SDLOPTION_SHADER_SCREEN "5",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 5" },
137   { SDLOPTION_SHADER_SCREEN "6",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 6" },
138   { SDLOPTION_SHADER_SCREEN "7",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 7" },
139   { SDLOPTION_SHADER_SCREEN "8",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 8" },
140   { SDLOPTION_SHADER_SCREEN "9",   OSDOPTVAL_NONE,  OPTION_STRING,  "custom OpenGL GLSL shader screen bitmap 9" },
141#endif
142110
143111   // full screen options
144112   #ifdef SDLMAME_X11
trunk/src/osd/sdl/video.c
r244654r244655
477477   aspect = get_aspect(options.aspect(), options.aspect(index), TRUE);
478478
479479   // look for a match in the name first
480   if (scrname != NULL)
480   if (scrname != NULL && (scrname[0] != 0))
481481   {
482482      for (monitor = sdl_monitor_info::list; monitor != NULL; monitor = monitor->next())
483483      {
r244654r244655
654654   video_config.filter        = options().filter();
655655   #endif
656656
657   if (video_config.prescale < 1 || video_config.prescale > 3)
658   {
659      osd_printf_warning("Invalid prescale option, reverting to '1'\n");
660      video_config.prescale = 1;
661   }
657662   #if (USE_OPENGL)
658      if (video_config.prescale < 1 || video_config.prescale > 3)
659      {
660         osd_printf_warning("Invalid prescale option, reverting to '1'\n");
661         video_config.prescale = 1;
662      }
663663      // default to working video please
664664      video_config.forcepow2texture = options().gl_force_pow2_texture();
665665      video_config.allowtexturerect = !(options().gl_no_texture_rect());
trunk/src/osd/windows/video.c
r244654r244655
297297   aspect = get_aspect(options.aspect(), options.aspect(index), TRUE);
298298
299299   // look for a match in the name first
300   if (scrname[0] != 0)
300   if (scrname != NULL && (scrname[0] != 0))
301   {
301302      for (monitor = win_monitor_list; monitor != NULL; monitor = monitor->m_next)
302303      {
303         int rc = 1;
304
305304         moncount++;
306
307         rc = strcmp(scrname, monitor->devicename());
308
309         if (rc == 0)
305         if (strcmp(scrname, monitor->devicename()) == 0)
310306            goto finishit;
311307      }
308   }
312309
313310   // didn't find it; alternate monitors until we hit the jackpot
314311   index %= moncount;
r244654r244655
418415   video_config.filter        = options().filter();
419416   if (video_config.prescale == 0)
420417      video_config.prescale = 1;
418
419   #if (USE_OPENGL)
420      // default to working video please
421      video_config.forcepow2texture = options().gl_force_pow2_texture();
422      video_config.allowtexturerect = !(options().gl_no_texture_rect());
423      video_config.vbo         = options().gl_vbo();
424      video_config.pbo         = options().gl_pbo();
425      video_config.glsl        = options().gl_glsl();
426      if ( video_config.glsl )
427      {
428         int i;
429
430         video_config.glsl_filter = options().glsl_filter();
431
432         video_config.glsl_shader_mamebm_num=0;
433
434         for(i=0; i<GLSL_SHADER_MAX; i++)
435         {
436            stemp = options().shader_mame(i);
437            if (stemp && strcmp(stemp, OSDOPTVAL_NONE) != 0 && strlen(stemp)>0)
438            {
439               video_config.glsl_shader_mamebm[i] = (char *) malloc(strlen(stemp)+1);
440               strcpy(video_config.glsl_shader_mamebm[i], stemp);
441               video_config.glsl_shader_mamebm_num++;
442            } else {
443               video_config.glsl_shader_mamebm[i] = NULL;
444            }
445         }
446
447         video_config.glsl_shader_scrn_num=0;
448
449         for(i=0; i<GLSL_SHADER_MAX; i++)
450         {
451            stemp = options().shader_screen(i);
452            if (stemp && strcmp(stemp, OSDOPTVAL_NONE) != 0 && strlen(stemp)>0)
453            {
454               video_config.glsl_shader_scrn[i] = (char *) malloc(strlen(stemp)+1);
455               strcpy(video_config.glsl_shader_scrn[i], stemp);
456               video_config.glsl_shader_scrn_num++;
457            } else {
458               video_config.glsl_shader_scrn[i] = NULL;
459            }
460         }
461      } else {
462         int i;
463         video_config.glsl_filter = 0;
464         video_config.glsl_shader_mamebm_num=0;
465         for(i=0; i<GLSL_SHADER_MAX; i++)
466         {
467            video_config.glsl_shader_mamebm[i] = NULL;
468         }
469         video_config.glsl_shader_scrn_num=0;
470         for(i=0; i<GLSL_SHADER_MAX; i++)
471         {
472            video_config.glsl_shader_scrn[i] = NULL;
473         }
474      }
475
476   #endif /* USE_OPENGL */
477
421478}
422479
423480
trunk/src/osd/windows/winmain.c
r244654r244655
260260
261261   // video options
262262   { NULL,                                           NULL,       OPTION_HEADER,     "WINDOWS VIDEO OPTIONS" },
263   { WINOPTION_PRESCALE,                             "1",        OPTION_INTEGER,    "scale screen rendering by this amount in software" },
264263   { WINOPTION_MENU,                                 "0",        OPTION_BOOLEAN,    "enable menu bar if available by UI implementation" },
265264
266265   // DirectDraw-specific options
267266   { NULL,                                           NULL,       OPTION_HEADER,     "DIRECTDRAW-SPECIFIC OPTIONS" },
268267   { WINOPTION_HWSTRETCH ";hws",                     "1",        OPTION_BOOLEAN,    "enable hardware stretching" },
269268
270   // Direct3D-specific options
271   { NULL,                                           NULL,       OPTION_HEADER,     "DIRECT3D-SPECIFIC OPTIONS" },
272   { WINOPTION_FILTER ";d3dfilter;flt",              "1",        OPTION_BOOLEAN,    "enable bilinear filtering on screen output" },
273
274269   // post-processing options
275270   { NULL,                                                     NULL,        OPTION_HEADER,     "DIRECT3D POST-PROCESSING OPTIONS" },
276271   { WINOPTION_HLSL_ENABLE";hlsl",                             "0",         OPTION_BOOLEAN,    "enable HLSL post-processing (PS3.0 required)" },
trunk/src/osd/windows/winmain.h
r244654r244655
2727#define WINOPTION_PROFILE               "profile"
2828
2929// video options
30#define WINOPTION_PRESCALE              "prescale"
3130#define WINOPTION_MENU                  "menu"
3231
3332// DirectDraw-specific options
3433#define WINOPTION_HWSTRETCH             "hwstretch"
3534
36// Direct3D-specific options
37#define WINOPTION_FILTER                "filter"
38
3935// core post-processing options
4036#define WINOPTION_HLSL_ENABLE               "hlsl_enable"
4137#define WINOPTION_HLSLPATH                  "hlslpath"
r244654r244655
132128   int profile() const { return int_value(WINOPTION_PROFILE); }
133129
134130   // video options
135   int prescale() const { return int_value(WINOPTION_PRESCALE); }
136131   bool menu() const { return bool_value(WINOPTION_MENU); }
137132
138133   // DirectDraw-specific options
139134   bool hwstretch() const { return bool_value(WINOPTION_HWSTRETCH); }
140135
141   // Direct3D-specific options
142   bool filter() const { return bool_value(WINOPTION_FILTER); }
143
144136   // core post-processing options
145137   const char *screen_post_fx_dir() const { return value(WINOPTION_HLSLPATH); }
146138   bool d3d_hlsl_enable() const { return bool_value(WINOPTION_HLSL_ENABLE); }


Previous 199869 Revisions Next


© 1997-2024 The MAME Team