Commit Graph

763 Commits

Author SHA1 Message Date
twinaphex d636d4a10a (GL) Add RARCH_GL_MAX_RENDERBUFFER_SIZE 2014-05-22 21:00:17 +02:00
twinaphex 194f90f3f9 (GL) Add custom versions of RARCH_GL_DEPTH_ATTACHMENT and RARCH_GL_STENCIL_ATTACHMENT 2014-05-22 20:58:32 +02:00
twinaphex 9fd55c301c (GL) Define RARCH_GL_RENDERBUFFER and RARCH_GL_DEPTH24_STENCIL8 2014-05-22 20:44:33 +02:00
twinaphex 2eea12e17e COLOR_ATTACHMENT_0 and GL_FRAMEBUFFER_COMPLETE are defined differently
for PSGL and OSX PPC as well
2014-05-22 20:32:51 +02:00
twinaphex 9cbdb708c9 (GL) Turn GL_FRAMEBUFFER into manual define (PSGL needs different
define, so does Mac PPC)
2014-05-22 20:23:02 +02:00
twinaphex f8e40f613b (Input) Move console input drivers to input/ directory - should start getting rid of
all these platform-specific folders cluttering up the codebase tree
(GL) Build fix for PS3 - current MiniGL implementation doesn't support SRGB
(Griffin) shader_common only baked in if HAVE_SHADERS defined
2014-05-13 17:01:27 +02:00
Themaister 38c0777b3c Fix indent. 2014-05-11 22:33:34 +02:00
twinaphex d9e31151ed (Lakka/GL) Take out HAVE_LAKKA hack in gl.c - animations/tweening needs to
be fixed though
2014-05-11 20:47:44 +02:00
Themaister 7559ca12ef Refactor sRGB FBO handling a bit. 2014-05-11 19:35:54 +02:00
Themaister 9d8654cfe2 Nits. 2014-05-11 19:02:01 +02:00
TroggleMonkey 48331e822a Give sRGB FBO's priority over float FBO's:
Both pass through linear RGB similarly, but sRGB should be faster.
If both are enabled, the .cgp author won't need float32-only features like
packing multiple values.  This also makes testing/usage priority the same.
Add sRGB FBO logging to mirror float FBO logging.
Make LUT mipmapping consistent with FBO's (ignore it for magnification.)
2014-05-11 11:53:09 -04:00
Themaister a0da1f040f Check GLES with GL_FRAMEBUFFER_SRGB. 2014-05-11 14:57:35 +02:00
Themaister bc8bb13050 Add mipmapping and sRGB FBO support. 2014-05-11 13:39:04 +02:00
twinaphex b2b5c6daec (Image) Put image functions through abstract interface
(Image) Add image_driver to retroarch.cfg to specify image driver to use
(Menu)  Add Image Driver to Drivers section
2014-05-10 20:26:58 +02:00
twinaphex 0d2752a276 Add driver.menu-ctx->frame triggering inside gl_frame function -
Lakka GL iteration should be invoked here instead of the ifdef.

Currently delta animation goes way too slow if 'frame' function of
lakka driver is hooked up properly - hence the #LAKKA hack is still
in place.
2014-05-09 22:44:40 +02:00
Themaister ef2037abe8 Remove float FBO for GLES.
The extension doesn't work as a rendertarget anyways.
2014-05-09 16:38:56 +02:00
Jean-André Santoni 7dda9f0b00 Lakka menu display and icons 2014-05-08 01:12:51 +07:00
Themaister 583514ae95 Add support for GLES 3.1+. 2014-05-03 15:21:14 +02:00
twinaphex ba46770f3c Rework frontend.c and make it possible to compile without HAVE_MENU
defined again
2014-04-30 04:00:39 +02:00
Themaister e9161f67fe Avoid reading back random RGUI frames in async recording. 2014-04-27 10:40:24 +02:00
Themaister 09d7155c7a Fix GL_DEBUG for GLES. 2014-04-21 14:46:59 +02:00
Themaister 80a12ae1d6 Don't create PBO scaler if not needed. 2014-04-19 17:27:49 +02:00
Themaister c39d27fd8d Add async readback to GLES3.
Have support for PBOs and glMapBufferRange.
2014-04-19 17:22:25 +02:00
Themaister 095718c855 Only bind shared context if necessary. 2014-04-19 16:59:26 +02:00
Themaister 1cbb47229a Make video_shared_context an option.
Might be part of libretro API later if necessary. Must be discussed with
other frontend developers first.
2014-04-19 16:37:39 +02:00
Themaister 105872a42c Add HW context support to X/EGL and KMS/EGL. 2014-04-19 16:06:25 +02:00
Themaister f658112756 Add experimental support for separate HW contexts. 2014-04-19 15:37:00 +02:00
Themaister f8d065eeb6 [HW render] set known blending equation. 2014-04-17 15:32:36 +02:00
Themaister d941f70dff Should fix build on Pi. 2014-03-15 14:16:29 +01:00
Themaister d0302c9800 Begin adding opaque interface to gfx_context. 2014-03-09 16:50:18 +01:00
twinaphex 39c1ec4672 Pass data param to more shader functions 2014-03-07 05:51:56 +01:00
twinaphex 091ae18870 (GL) Fixup params to shader->init 2014-03-07 05:32:17 +01:00
twinaphex ea88399281 (XDK D3D) Refactor initing code completely - make it more inline
with PC D3D driver
2014-03-07 05:31:24 +01:00
twinaphex fcf30143b4 (PS3) Change HAVE_RGL to HAVE_GCMGL 2014-02-25 22:01:46 +01:00
twinaphex fd7f4d45cd Move image files to gfx/image/ 2014-02-25 21:24:15 +01:00
twinaphex c42a00a39f (OSX PPC) Change anonymous unions, define GLint64/GLuint64/GLsync
for Leopard and Snow Leopard, other changes..
2014-02-11 16:07:00 +11:00
Themaister 94a0cef1d4 Fix libretro GL core screenshots. 2014-02-06 23:37:06 +01:00
Themaister 8120198ed8 Make C++ compiler happy. 2014-02-06 22:52:48 +01:00
Themaister 032ba14d3b Properly implement GPU screenshot for GLES.
Have to use GL_RGBA/GL_UNSIGNED_BYTE as well as reading from back buffer
only.
2014-02-06 21:35:57 +01:00
Themaister 8c9e1a5f5c Fix some unused function warnings.
Clang 3.4 is more aggressive on this.
2014-01-22 16:39:39 +01:00
twinaphex f23e41bd17 Safety checks for accessing video_poke function pointers 2014-01-08 19:42:42 +01:00
Themaister 33d50e2010 Check GL_RENDERER for ATI as well. 2014-01-08 18:09:49 +01:00
twinaphex 61218b4a66 (OSX) Get rid of unused variable warning/variable is used before it's initialized 2014-01-06 16:20:20 +01:00
Themaister f2a8a73322 Add workaround for ATI Catalyst's lack of GL_RGB565 support. 2014-01-05 22:29:57 +01:00
Themaister bee70f8318 Fix ifdefs regarding READ_PIXELS. 2014-01-05 22:22:15 +01:00
twinaphex e9ce0aaaa4 (PS3) Custom aspect ratio works now 2014-01-05 18:48:09 +01:00
Themaister 9c218bcf07 Fix unpack row len with 16-bit cores on desktop.
Missed call to UNPACK_ROW_LENGTH :(
2014-01-03 14:42:38 +01:00
Themaister 69b104f9e4 Comment about BGRA8888. 2014-01-01 21:58:02 +01:00
Themaister 08ba1ad14e Use GL_RGB565 internal format when available.
This is a feature from ES2_compat extension.
It fixes the speed issue associated with using 16-bit textures on
desktop GL. Improves performance a bit as well as there's less bandwidth
usage during shading.

On my HD3000 laptop, performance improved with ~10%.
2014-01-01 21:58:02 +01:00
twinaphex 0a15a17d44 Update years on all license headers 2014-01-01 01:50:59 +01:00
Themaister 132c3c46f7 Use struct texture_image instead of video_overlay_image. 2013-12-31 19:05:16 +01:00
Themaister 77a62573a2 Fix crash in GLSL when overlays with many textures are used.
Have to call shader->use() for each set_coords or we overflow
the attribs array cached buffer.
2013-12-26 23:34:40 +01:00
Themaister 1c9895611b Rework performance interface.
Avoids super-ugly macros and retroarch-ifdefs.
2013-12-18 19:21:56 +01:00
twinaphex 9852c5dc4c Rewrite perf interface - exposes callbacks now for RETRO_PERFORMANCE_INIT/RETRO_PERFORMANCE_START/RETRO_PERFORMANCE_STOP calls without messy, hardcoded preprocessor-dependent variables in macros - will update cores accordingly too 2013-12-18 19:03:08 +01:00
twinaphex 69a67b3df2 Change RARCH_PERFORMANCE_ macro calls to RETRO_PERFORMANCE 2013-12-17 19:14:57 +01:00
Themaister 6031590cd3 Add OPENGLES3 context support in libretro GL. 2013-12-13 14:20:49 +01:00
Themaister 46c3dd6d20 Clean up float FBO handling a bit.
Fallback to UNORM if not supported.
2013-12-04 12:55:51 +01:00
twinaphex 6f5b28cd60 (PS3) Get rid of warnings in gl.c 2013-11-29 03:06:04 +01:00
twinaphex 1372df61de (PS3 RGL) Should add float FBO support 2013-11-19 05:18:46 +01:00
Themaister 6d6e964672 Fixup CXX_BUILD.
Cleans lots of sign-related warnings as well.
2013-11-16 17:31:49 +01:00
twinaphex 223448d943 (Apple) Build fix for platforms where we have ARC
enabled - can't use NSAutoreleasePool directly it seems
2013-11-09 01:37:34 +01:00
twinaphex f8c37fc933 (Menu) Simplify menu preprocessor conditionals - there is now
one common catch-all define called HAVE_MENU
2013-11-08 04:36:47 +01:00
twinaphex e3ebfbffa9 Rename frontend_android.h to platform_android.h 2013-11-03 17:02:40 +01:00
twinaphex 9a738278ce (PS3) Expand conditionals of HAVE_LIBDBGFONT 2013-11-02 23:07:27 +01:00
twinaphex c9dc5e62d2 (RGL PS3) Reimplement glpixelStorei 2013-11-02 22:46:56 +01:00
Themaister a61f0dfd61 Fix potential uninitialized variable. 2013-11-02 17:54:52 +01:00
twinaphex f149c387b9 Remove 'start' from video interface 2013-11-01 21:18:38 +01:00
twinaphex 71a23ac18e Slim down global_init_drivers - we can now get rid of the 'start'
function
2013-11-01 21:10:42 +01:00
Themaister dab40b16c0 Pass window width/height to gl_init_font_first. 2013-11-01 17:02:55 +01:00
twinaphex 727dc76db8 (Console/Android) Init input driver from context driver/graphics
driver from now on - just like PC - input driver initing can be
hoisted out of global_drivers_init that way
2013-11-01 16:33:32 +01:00
twinaphex aaa8fc1f37 (GLES2 GL) Query GL_EXT_unpack_subimage and if it's there, use it -
Tegra 4 should support it etc.
2013-10-29 23:21:15 +01:00
Themaister 7aa8b40759 Fixup C89 for loops. 2013-10-22 21:37:56 +02:00
twinaphex d2c87e3039 Convert most C99-style for loop initial declarations to C89-compliant
ones
2013-10-22 15:08:17 +02:00
Themaister 76c92bb0b4 Rework overlay driver interface.
Takes multiple images, each with individual positions, textures, etc.
2013-10-15 16:06:59 +02:00
twinaphex e63639388d (gl.c) Change define to !define(RARCH_CONSOLE) 2013-09-28 21:57:27 +02:00
twinaphex 4f54fd28a0 (PS3) Forcibly disable float FBO textures for now - was creating
all sorts of crashes
2013-09-27 23:04:19 +02:00
Themaister 3e7f101137 Make sure we're reading from backbuffer. 2013-09-12 22:40:11 +02:00
Themaister 178dc692c7 Do proper rounding in set_viewport.
Avoids edge cases where viewport sizes are miscalculated with -1 pixel
due to rounding errors.
2013-09-12 22:23:56 +02:00
Themaister 46c214f964 Small cleanup. 2013-09-07 15:23:09 +02:00
Themaister 870ef37258 Fix libretro GL state bug on frame dupe.
Need to force backbuffer and viewport on duped frames.
2013-09-07 15:04:40 +02:00
Themaister 98c9da9dda Set swap interval correctly in gl_init(). 2013-09-02 09:20:51 +02:00
Themaister b2bf3c12de Add swap_interval support.
Again, mostly useful for 120Hz monitors, and/or playing content which is
a fraction of monitor refresh rate.
2013-09-01 13:20:10 +02:00
Themaister 62c34c7871 Add black_frame_insertion support for 120 Hz monitors. 2013-08-30 09:35:13 +02:00
meancoot a4dfd35ab7 (Apple) Improvements:
Add core gl context support on OSX
	Add support for multiple game pads on OSX
 	Remove block on analog input for Player 2-4's game pads
2013-08-16 13:25:35 -04:00
Themaister 8ebd81edbf Log GL version as well. 2013-08-16 10:18:58 +02:00
Themaister 551fd27204 Add support for wrapping modes.
Not terribly useful atm due to POT, but at least it's there.
Has some use mostly with LUTs ... NPOT + REPEAT requires extension on
GLES2 at least.
2013-08-16 00:30:54 +02:00
Themaister 7236e51af0 Clear out GL error on driver init for robustness.
In case we used cached GL context, we'd error out
if a single GL error has been generated.
2013-08-14 14:58:12 +02:00
Themaister 3b1e65ba08 Add GL_DEBUG ifdef which forces full GL debugging. 2013-08-14 14:13:28 +02:00
Themaister 1389a1e37c Fix compile when GLSL isn't compiled in. 2013-08-11 15:25:04 +02:00
Themaister 7d942adaa3 Should fix build on PS3. 2013-08-11 15:06:42 +02:00
Themaister c19bdc7c2c Kill some stale code. 2013-08-11 01:24:48 +02:00
Themaister 2b28050c15 Build fixups. 2013-08-11 01:16:08 +02:00
Themaister 70de036440 Revert "Add GL sync support to GLES2."
This reverts commit c1bbb6bf89.
2013-08-11 01:09:10 +02:00
Themaister 47c4428d8e Add GL sync support to GLES2. 2013-08-11 01:09:10 +02:00
Themaister 27399deed9 Log vendor/renderer in GL. 2013-08-11 00:57:24 +02:00
Themaister 26d74be8b8 Disable blending per frame with HW render. 2013-08-11 00:56:53 +02:00
Themaister 6b4924c844 Be more conservative about texture memory usage. 2013-08-11 00:56:53 +02:00
Themaister f8eb0c5a62 Query extensions more explicitly. 2013-08-11 00:55:05 +02:00
Themaister 318b26cc0d Fix Android build. 2013-08-11 00:55:05 +02:00
Themaister d64c24248d Use glsym wrapper in libretro-test-gl. 2013-08-11 00:55:05 +02:00
Themaister 2e397b1d6b Win32 fixups. 2013-08-11 00:55:05 +02:00
Themaister e44249b73f Use glsym symbol loader instead of ugly poking. 2013-08-11 00:54:27 +02:00
Themaister 4e5c6b0f9a Fix RGUI when using bottom-left. 2013-08-11 00:53:46 +02:00
Themaister e5abd138ea More fixes to core context. 2013-08-11 00:53:46 +02:00
Themaister 6df083fc0f Add support for bottom-left origin in libretro GL. 2013-08-11 00:53:46 +02:00
Themaister b090f5ab36 Implement WGL core context. 2013-08-11 00:51:05 +02:00
Themaister e28f5d7cc1 Fix incompatibilities with GL core. 2013-08-11 00:50:38 +02:00
Themaister b9fce188ea Initial work on core GL context support. 2013-08-11 00:50:04 +02:00
twinaphex 63aaa7b2b0 (GL) Log vendor/renderer 2013-07-13 01:47:11 +02:00
twinaphex df6dfb4970 (OSX/iOS) Start renaming ios_ namespace -functions we're going to implement for
OSX as well
2013-07-05 04:10:05 +02:00
twinaphex 53df912321 (PS3) Move PS3-specific FPS printing code to ps3_ctx.c 2013-06-14 17:21:44 +02:00
twinaphex 559c4a7964 (RARCH_CONSOLE) Add refresh rate FPS statistics 2013-06-08 01:45:25 +02:00
Themaister 321ffcbca6 Calculate 1:1 PAR from right dimensions.
Frame cache can be stale or have awkward dimensions which
don't really reflect 1:1 PAR semantics.
2013-06-05 21:29:52 +02:00
Themaister 79275b28ff Fallback when initial shader init fails. 2013-06-05 10:44:27 +02:00
Themaister 43a6346d26 Adds video_hard_sync_frames.
Allows to control the maximum amount of frames that can be queued on
GPU.
2013-05-26 13:43:24 +02:00
twinaphex 20fdda8ca9 (RMenu) Move rewind settings to Settings submenu 2013-05-26 00:32:39 +02:00
Themaister 503ce7895c Reset BlendFunc with HW render. 2013-05-22 21:41:10 +02:00
twinaphex 46f29b1178 New define RARCH_MOBILE 2013-05-22 16:02:21 +02:00
Themaister b4b83cdf41 Use VBOs in GLSL.
Future proof a bit as future GL versions
require use of VBOs. Also avoids spamming client-side
data to GL all the time.

VAOs are not used, but that is only relevant if we actually
create a GL3+ context.
2013-05-21 10:44:25 +02:00
Themaister 12288e9b8c Avoid potential performance regressions.
PSGL uses GL_ARGB_SCE, and not GL_RGBA for one ...
2013-05-19 11:25:56 +02:00
Themaister f61cc333e9 Be more explicit about FBO formats.
GLES doesn't support 32-bit FBOs.
They seem to only be exposed via OES_rgb8_rgba8 and ARM_rgba8
extensions.
2013-05-18 21:53:26 +02:00
Themaister c1bd2d25c6 Fix desktop GL build. 2013-05-18 21:23:59 +02:00
Themaister 9406b0a771 More explicit logging of FBO errors. 2013-05-18 16:51:10 +01:00
Themaister e5ba936355 Disallow EGL images when using HW render. 2013-05-18 14:51:36 +01:00
Themaister ef257a6e8e Always use ios_bind_game_view_fbo().
Should hopefully fix libretro-test-gl and co.
2013-05-13 19:33:47 +02:00
Themaister 179b374c39 Add JNI target to libretro-test-gl.
Fixup GLES build.
2013-05-12 03:40:07 +02:00
twinaphex 71c699b5fc (Android/QNX) get_proc_address was not bound in context driver 2013-05-12 01:15:44 +02:00
Themaister 75c5a04e49 Fix GLES build.
GLES doesn't support glReadBuffer() ...
2013-05-11 16:04:46 +02:00
Themaister 74c8afc492 Fix GPU screenshots in GL.
Had to make sure to use GL_FRONT buffer.
2013-05-11 15:50:19 +02:00
Themaister f5d4008018 Check g_settings.video.hard_sync per frame.
Don't use hard_sync default in RGUI.
2013-05-04 22:49:06 +02:00
Themaister 10278786ba Flush before ClientWait. 2013-05-04 00:23:32 +02:00
Themaister 741ed2cc03 Add experimental video_hard_sync. 2013-05-03 14:04:29 +02:00
twinaphex 34619412bc (RARCH_CONSOLE) Get rid of video_stop_func 2013-04-24 16:08:18 +02:00
Themaister 068beedf3c Verify that RGUI texture is non-zero.
If we're converting, just use ARGB8888 in d3d9.
2013-04-21 12:07:57 +02:00
Themaister 6dd7ea935e Add GL_SHADER_STOCK_BLEND.
Replace stock shader with a special shader which does not apply color.
This is a necessary on Android.
2013-04-20 15:46:50 +02:00
Themaister be01a0ea59 Refactor aspect ratio handling.
Rework aspect ratio handling in RGUI.
Custom viewports work on PC. Ensure that aspect_ratio_idx persist
through reentrancy. Change ASPECT_RATIO_AUTO to ASPECT_RATIO_SQUARE to
better signal that it's the square pixel option.

Add ASPECT_RATIO_CONFIG as an option to use config file defined aspect
ratio.
2013-04-20 10:56:04 +02:00
Themaister d2ea83729e Fix uniform integer_scale bug. 2013-04-18 08:57:38 +02:00
twinaphex 639ca3bb97 (GL PS3) Take out glClear at start of gl_frame 2013-04-14 15:02:22 +02:00
twinaphex a6f3210593 (GL) Drop glBlendFunc GL_ONE function call - not needed for RMenu at least 2013-04-14 13:18:09 +02:00
Themaister 7a8628ff41 Don't ifdef update_tex_filter_frame for FBO. 2013-04-14 01:56:13 +02:00
Themaister ca5ff43b6f Add default filtering option to RGUI. 2013-04-14 01:45:33 +02:00
Themaister e1c1e4d414 Call gl_update_tex_filter in set_shader. 2013-04-14 01:31:32 +02:00
Themaister 67a69d0339 Don't delete RGUI texture on reinit. 2013-04-14 00:26:22 +02:00
twinaphex a2438f7b80 (RMenu) Fix - don't want to glDeletTexture RGUI texture when
game texture has to be reinitialized
2013-04-14 00:11:57 +02:00
Themaister c17714ffbb Add full screen mode to set_texture_enable. 2013-04-13 16:49:25 +02:00
Themaister e389220df8 Refactor frame_counter.
Graphics drivers get the task of updating this.
If threaded driver is used, main thread cannot update the counter
due to race conditions.
2013-04-13 14:28:12 +02:00
twinaphex 33798edb27 Drop most of the unnecessary GL shader wrapper functions/macros -
these were necessary before we made the shader backends
2013-04-13 09:01:25 +02:00
twinaphex 0f60833cac (RMenu) Do video rendering in RMenu after input - same as RGUI - will also
avoid having to 'skip' video swap when doing the render cached
frame call
2013-04-11 15:00:58 +02:00
twinaphex 8c777110f7 (RMenu) Run glClear or equivalent function at start of driver_frame function
so that we can use rarch_render_cached_frame for menu purposes at
all times (instead of doing explicit clearing in our menu loops
beforehand for low-RAM modes where no menu texture is being drawn
but we don't want ghosting in the picture)
2013-04-11 13:42:02 +02:00
twinaphex 1171b7576a Get rid of set_blend callback - the rgui draw texture function is
now in charge of making sure texture is properly blended - note
to OV2/maister - test if this breaks D3D9 PC driver and if so
fix accordingly
2013-04-11 13:13:37 +02:00