When the PS3 homebrew scene started, a lot of people were complaining that it wasn’t possible to write 3D games for the PS3 because of its lack of OpenGL library.
Almost a year ago, Alex Betts thought he would tackle this problem and he started working on RSXGL... an implementation of the OpenGL 3.1 specification written from scratch targeting the PS3′s RSX.
Anyone in their right mind would say that it’s impossible, that it’s too much work, but Alex spent the last year working on it, alone, until it became usable. You can read some news about it here.
For some reason though, no one used it to build their own apps. Maybe the status of the project was scaring them, it was said to be incomplete, there was no GLSL support, etc...
I am writing today to tell you that RSXGL is perfectly usable! It supports online GLSL compilation, as well as any feature you might want. As proof, I have written a new hardware accelerated engine for the EFL using RSXGL and it worked great!
Alex and I spent a lot of time testing and fixing all the issues that were in RSXGL that were made visible by the EFL’s GL engine and I am happy to say that it’s working now. Expedite is able to run most of its tests at 50 to 60 fps on 1080p resolution (instead of the average of 5 to 10 fps it had on 720p before).
You can see performance tests right here (Running some tests from expedite) :
eng_output_resize called : 1280x720
EGL surface size is : 1280x720
5.43 , Widgets File Icons
28.61 , Widgets File Icons 2
35.00 , Widgets File Icons 2 Grouped
39.51 , Widgets File Icons 2 Same
48.14 , Widgets File Icons 2 Same Grouped
10.81 , Widgets File Icons 3
56.57 , Widgets File Icons 4
56.78 , Widgets List
58.22 , Widgets List Grouped
58.23 , Widgets List 2
58.25 , Widgets List 2 Grouped
56.10 , Widgets List 3
56.18 , Widgets List 3 Grouped
56.17 , Widgets List 4
56.18 , Widgets List 4 Grouped
51.26 , Image Blend Unscaled
11.30 , Image Blend Solid Middle Unscaled
60.63 , Image Blend Fade Unscaled
60.41 , Image Blend Fade Power 2 Unscaled
46.28 , Image Blend Solid Unscaled
60.82 , Image Blend Solid Fade Unscaled
60.42 , Image Blend Solid Fade Power 2 Unscaled
59.95 , Image Blend Nearest Scaled
57.85 , Image Blend Nearest Solid Scaled
60.29 , Image Blend Smooth Scaled
57.83 , Image Blend Smooth Solid Scaled
60.43 , Image Blend Nearest Same Scaled
59.88 , Image Blend Nearest Solid Same Scaled
60.49 , Image Blend Smooth Same Scaled
59.89 , Image Blend Smooth Solid Same Scaled
59.97 , Image Blend Border
38.29 , Image Blend Solid Middle Border
38.64 , Image Blend Solid Border
59.54 , Image Blend Border Recolor
60.45 , Image Map Rotate
60.43 , Image Map Solid Rotate
60.41 , Image Map Nearest Rotate
60.42 , Image Map Nearest Solid Rotate
60.40 , Image Map Color Rotate
60.43 , Image Map Color Solid Rotate
60.42 , Image Map Color Nearest Rotate
60.44 , Image Map Color Nearest Solid Rotate
60.40 , Image Map Color Alpha Rotate
60.42 , Image Map Color Alpha Solid Rotate
60.40 , Image Map Color Alpha Nearest Rotate
60.42 , Image Map Color Alpha Nearest Solid Rotate
49.76 , Image Map 3D 1
60.41 , Image Map 3D 2
60.26 , Image Map 3D 3
60.43 , Image Map 3D 4
49.40 , Image Map 3D 5
60.41 , Image Map 3D 6
27.65 , Image Map 3D Flow
57.00 , Image Quality Scale
50.69 , Image Data ARGB
16.60 , Image Data ARGB Alpha
58.65 , Image Data YCbCr 601 Pointer List
58.99 , Image Data YCbCr 601 Pointer List Wide Stride
59.13 , Image Data YCbCr 601 Pointer List Map Solid Rotate
59.01 , Image Data YCbCr 601 Pointer List Map Nearest Solid Rotate
50.49 , Image Crossfade
59.31 , Text Basic
6.87 , Text Styles
5.31 , Text Styles Different Strings
22.79 , Text Change
51.44 , Textblock Basic
61.10 , Textblock text_append
44.35 , Rect Blend
44.55 , Rect Blend Power 2
29.77 , Rect Solid
61.03 , Rect Blend Few
60.40 , Rect Blend Power 2 Few
60.41 , Rect Solid Few
51.14 , Image Blend Occlude 1 Few
60.90 , Image Blend Occlude 2 Few
61.87 , Image Blend Occlude 3 Few
65.58 , Image Blend Occlude 1
60.42 , Image Blend Occlude 2
60.39 , Image Blend Occlude 3
27.06 , Image Blend Occlude 1 Many
33.53 , Image Blend Occlude 2 Many
56.23 , Image Blend Occlude 3 Many
0.93 , Image Blend Occlude 1 Very Many
1.42 , Image Blend Occlude 2 Very Many
3.09 , Image Blend Occlude 3 Very Many
26.48 , Polygon Blend
60.46 , Image Blend Unscaled Proxy
25.86 , Proxy Text Fixed
Please give RSXGL a try. Also, you can get the latest EFL version from my repository, which includes the gl engine for PS3. Now, any EFL application will be automatically hardware accelerated thanks to RSXGL. I hope we can see some new games (or old GL games being ported) soon!
Stay tuned for more PS3 Hacks and PS3 CFW news, follow us on Twitter and be sure to drop by the PS3 Hacks and PS3 Custom Firmware Forums for the latest PlayStation 3 scene updates and homebrew releases!
Please pardon my ignorance here, but would this allow allow for improvements to the existing emulators & possibly new ones incl N64, PS1/PS2, Dreamcast, Sega Saturn etc and perhaps more sophisticated & graphically complex homebrew..?
Would it also enable HW acceleration of HD video playback..?
There are also some more info's about the GPU, which I like to post to this article.
The RSX is a graphical processor unit (GPU) based off of the nVidia 7800GTX graphics processor, and is a G70/G71 hybrid with some modifications. The RSX has separate vertex and pixel shader pipelines.
The following is a small sample of serial numbers of the RSX by model number.
The following are relevant facts about the RSX
8 vertex shaders at 500Mhz
28 pixel shaders (4 redundant, 24 active) at 550Mhz
28 texture units (4 redundant, 24 active)
8 Raster Operations Pipeline units (ROPs)
Includes 256MB GDDR3 650Mhz clocked graphics memory
Earlier PS3 Models: Samsung K4J52324QC-SC14 rated at 700Mhz
Later PS3 Models: Qimonda HYB18H512322AF-14
GDDR3 Memory interface bus width: 128bit
Rambus XDR Memory interface bus width: 56bit out of 64bit (serial)
More features are revealed in the following chart delineating the differences between the RSX and the nVidia 7800 GTX.
Other RSX features/differences include:
More shader instructions
[LIST] Extra texture lookup logic (helps RSX transport data from XDR)
Fast vector normalize
Note that the cache (Post Transform and Lighting Vertext Cache) is located between the vector shader and the triangle setup.
A sample flow of data inside the RSX would see them first processed by 8 vertex shaders. The output are then sent to the 24 active pixel shaders, which can involve the 24 active texture units. Finally, the data is passed to the 8 Raster Operation Pipeline units (ROPs), and on out to the GDDR3. Note that the pixel shaders are grouped into groups of four (called Quads). There are 7 Quads, with 1 redundant, leaving 6 Quads active, which provides us with the 24 active pixel shaders listed above (6 times 4 equals 24). Since each Quad has 96kB of L1 and L2 cache, the total RSX texture cache is 576kB. General RSX features include 2x and 4x hardware anti-aliasing, and support for Shader Model 3.0.
Although the RSX has 256MB of GDDR3 RAM, not all of it is useable. The last 4MB is reserved for keeping track of the RSX internal state and issued commands. The 4MB of GPU Data contains RAMIN, RAMHT, RAMFC, DMA Objects, Graphic Objects, and the Graphic Context. The following is a breakdown of the address within 256MB of the RSX.
The RSX is dedicated to 3D graphics, and developers are able to use different API libraries to access its features. The easiest way is to use high level PSGL, which is basicially OpenGL|ES with programmable pipeline added in. At a lower level developers can use LibGCM, which is an API that talks to the RSX at a lower level. PSGL is actually implemented on top of LibGCM. For the advanced programmer, you can program the RSX by sending commands to it directly using C or assembly. This can be done by setting up commands (via FIFO Context) and DMA Objects and issuing them to the RSX via DMA calls.
Upgrading the PS3 is theoretically possible of course but it really wouldn't be viable at all. Not only would be it overcomplicated and cost too much to make sense but it just wouldn't be worth doing considering realistically the old hardware would only be a tiny fraction of the processing power necessary.
That's also ignoring the fact that the old hardware isn't going to last that long. It'd be dandy if all of the PS3s lasted 20 years but the fact is a lot of them broke down after 2, which is partially because the average Joe doesn't know that it is essentially a computer that needs maintenance... the dust needs to be cleaned out, the original thermal compound needs to be replaced, you can't throw it in a volcano and still expect it to work, etc. That aside it's upsetting and actually disturbing to see how much Sony stinged out on quality.
They practically used mud for thermal paste, the heatsink's finish actually greatly interferes with contact (oddly enough) and the heatsink itself might as well have been replaced with a rock... it's made of extremely low quality material. I'm not sure about modern PS3s but the fat ones I've seen the inside of didn't even use solid state capacitors, they used the "1 cent for 20 billion" electrolytic capacitors made in Taiwan which are notorious for having massive amounts of batches in the 2000s which literally blew up after a few months of use. I personally experienced that with several motherboards.
What I've always hoped for is that the next generation of consoles would stop using alien mumbo jumbo and switch to a standard x86-64 architecture for the purpose of interfacing with a standard PC to use that as an "upgrade". That way those who don't care about graphics can have their 720p at 30 frames and be happy about it and those of us who do care can use the PCs we likely already have.
yeah i agree i think the ps4 should be released by mid 2012 myself.what would be nice is if you can get a plug in upgrade/adapter for ps3 to make it more powerful.. but i'm not sure if its possible.. i remember seeing something about it being patented by sony here 3 or 4 months ago.. would be good as i have a few 60gig consoles to sell.. LOL
i agree totally also mate but last time i said ps3 was outdated etc i got flamed at.. LOL