Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenGL ES 2.0 (and GLSL ES) support #25

Open
Hedda opened this issue Jan 28, 2016 · 6 comments
Open

OpenGL ES 2.0 (and GLSL ES) support #25

Hedda opened this issue Jan 28, 2016 · 6 comments

Comments

@Hedda
Copy link

Hedda commented Jan 28, 2016

Any plans for Rustation (and rustation-libretro) renderer to support OpenGL ES 2.0 graphics rendering pipeline (and the GLSL ES shading language?)?

OpenGL ES (OpenGL for Embedded System) instead of the full OpenGL architecture is used by the hardware GPU on most embedded computers and mobile devices these days, including popular single-board-computers such as the Raspberry Pi (2) as well as most mobile phones, tablets, and Linux based Android based game consoles or media players / streamers.

http://en.wikipedia.org/wiki/OpenGL_ES

Most comming support version being the OpenGL ES 2.0 specification which was the first to feature GLSL ES 1.0 (GLSL ES shading language) support and is roughly based on OpenGL 2.0, but it eliminates most of the fixed-function rendering pipeline in favor of a programmable one in a move similar to transition from OpenGL 3.0 to 3.1

https://en.wikipedia.org/wiki/OpenGL_ES#OpenGL_ES_2.0

The OpenGL ES 3.0 specification, which was first publicly released in August 2012, is also backwards compatible with OpenGL ES 2.0 which means that any devices which state that their GPU supports the OpenGL ES 3.0 specification should also be compatible with all applications designed for OpenGL ES 2.0

@simias
Copy link
Owner

simias commented Jan 29, 2016

I can't really think of any platform that would be able to run a PSX emulator without dynarec and require OpenGL ES. Even some of the latest ARM SoCs start to support full blown OpenGL. I don't know if it's really worth investing time adding GLES compatibility.

I'm not against it either if somebody wants to add it in (having a modular architecture would be useful for adding OpenGL4/Vulkan support later, probably) but it's far away on my todo list...

@ADormant
Copy link

The best option in my opinion would be skipping OpenGL ES and even OpenGL4 and concentrating on Vulkan, since rustation has limited manpower. Base Vulkan API without extensions requires OpenGL4.1/ OpenGL 3.1 ES but it'll have the same API for all platforms unlike OpenGL not to mention is supposed to be much faster than opengl.
Compiler is already available.

https://github.com/KhronosGroup/SPIRV-Tools
https://github.com/KhronosGroup/glslang/tree/master/SPIRV
https://github.com/SaschaWillems/Vulkan

https://www.khronos.org/news/archives
https://www.phoronix.com/scan.php?page=search&q=SPIR-V
https://www.khronos.org/registry/spir-v/papers/WhitePaper.pdf
https://www.khronos.org/registry/spir-v/

@Hedda
Copy link
Author

Hedda commented Feb 1, 2016

@simias Raspberry Pi 2 is very popular dispite being only OpenGL ES and it is in fact just fast enough to emulate PS1 smoothly, , at least with the pcsx_reARMed emulator ( which is an ARM optimized PCSX fork based on the PCSX-Reloaded project), see:

https://github.com/notaz/pcsx_rearmed

PCSX ReARMed is yet another PCSX fork based on the PCSX-Reloaded project, which itself contains code from PCSX, PCSX-df and PCSX-Revolution. This version is ARM architecture oriented and features MIPS->ARM recompiler by Ari64, NEON GTE code and more performance improvements. It was created for Pandora handheld, but should be usable on other devices after some code adjustments (N900, GPH Wiz/Caanoo, PlayBook versions are also available).

PCSX ReARMed features ARM NEON GPU by Exophase, that in many cases produces pixel perfect graphics at very high performance. There is also Una-i's GPU plugin from PCSX4ALL project, and traditional P.E.Op.S. one.

http://lifehacker.com/get-a-ps1-emulator-up-and-running-on-a-raspberry-pi-2-1689869367

@ADormant There are hardly any real hardware (embedded) devices out there that supports Vulkan so with only it being support you would signifigantly decrease your user-base, and less users / less popular hardware normally also means fewer interested developers. Regardless, please create a seperate issue for tracking Vulkan and dicussion.

@ADormant
Copy link

ADormant commented Feb 1, 2016

Rearmed uses software rendering nothing to do with opengl es.

@Hedda
Copy link
Author

Hedda commented Feb 1, 2016

I just meant that Raspberry Pi 2 is fast enough to emulate PS1.

@simias
Copy link
Owner

simias commented Feb 5, 2016

I don't think the RPi is fast enough to run a PS1 without dynarec though, so I still think having a dynarec would be a necessary step before attempting to target OpenGL ES.

Maybe very high end ARM SoCs like the Tegra X1 could run a PS1 interpreter but those support the "full" OpenGL anyway.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants