• Home
  • Downloads
  • EBOOT Fixes
  • Forums
  • New Posts
  • Register
    • Welcome, Register Now! 
    • Premium VIP Membership
    • PS3 Sticky
      • PS3 CFW & MFW
      • PS3 Debug Firmware
      • PS3 Decrypted PSN Links for CFW
      • PS3 Downloads
      • PS3 EBOOT.BIN Original File Links
      • PS3 Firmware
      • PS3 Game Releases List
      • PS3 Guides & Tutorials
      • PS3 Hacking Guides and Tutorials
      • PS3 Hacks & JailBreak
      • PS3 Help & Support
      • PS3 JailBreak Game Compatibility List
      • PS3 JB2 / True Blue (TB) Game Links
      • PS3 multiMAN Updates
      • PS3 Resources
      • PS3 Reviews
      • PS3 Save Files Repository
      • PS3 Themes
      • PS3 Trophies List
      • PS3 Videos
      • PS Vita Trophies List
    • Quick Links
      • Affiliates
      • Contact Us
      • FAQ
      • Post News
      • Site Rules
      • Tag Cloud
 

OedipusRSX PS3 RSX Reality Synthesizer Documentation Surfaces

Category: PS3 Hacks & JailBreak  By: PS3 News - (twitter.com)
Tags: oedipusrsx oedipusrsx ps3 ps3 rsx ps3 reality synthesizer ps3 rsx documentation gitbrew

93w ago - Today Sony PlayStation 3 hacker durandal has released OedipusRSX PS3 RSX Reality Synthesizer documentation for other developers to improve graphics utilized in PS3 homebrew applications and games.

Download: OedipusRSX PS3 RSX Documentation / OedipusRSX PS3 RSX Documentation (Mirror)

Below is some background on the PS3 RSX 'Reality Synthesizer' via Wikipedia, as follows:

The RSX 'Reality Synthesizer' is a proprietary graphics processing unit (GPU) codeveloped by Nvidia and Sony for the PlayStation 3 game console.

Unless otherwise noted, the following specifications are based on a press release by Sony at the E3 2005 conference, slides from the same conference, and slides from a Sony presentation at the 2006 Game Developer's Conference.

Specifications:

  • 500 MHz on 90 nm process (shrunk to 65 nm in 2008 and to 40 nm in 2010)
  • Based on NV47 Chip (Nvidia GeForce 7800 Architecture)
  • 300+ million transistors
  • Multi-way programmable parallel floating-point shader pipelines
  • Independent pixel/vertex shader architecture
  • 24 parallel pixel-shader ALU pipes clocked @ 550 MHz
  • 5 ALU operations per pipeline, per cycle (2 vector4 , 2 scalar/dual/co-issue and fog ALU, 1 Texture ALU)
  • 16 floating-point operations per pipeline, per cycle
  • 8 parallel vertex pipelines @ 500 MHz
  • 2 ALU operations per pipeline, per cycle (1 vector4 and 1 scalar, dual issue)[citation needed]
  • 10 FLOPS per pipeline, per cycle
  • Floating Point Operations: 251.2 Gigaflops [(24*16* 550)+(8*10*500)]
  • 74 billion shader operations per second [(24 Pixel Shader Pipelines*5 ALUs*550 MHz) + (8 Vertex Shader Pipelines*2 ALUs*500 MHz)]
  • 24 texture filtering units (TF) and 8 vertex texture addressing units (TA)
  • 24 filtered samples per clock
  • Maximum texel fillrate: 12.0 GigaTexels per second (24 textures * 500 MHz)
  • 32 unfiltered texture samples per clock, (8 TA x 4 texture samples)
  • 8 Render Output units / pixel rendering pipelines
  • Peak pixel fillrate (theoretical): 4.0 Gigapixel per second
  • Maximum Z sample rate: 8.0 GigaSamples per second (2 Z-samples * 8 ROPs * 500 MHz)
  • Maximum Dot product operations: 28.6 billion per second
  • 128-bit pixel precision offers rendering of scenes with High dynamic range rendering (HDR)
  • 256 MB GDDR3 RAM at 650 MHz
  • Access to additional 256 MB XDR RAM
  • 128-bit memory bus width
  • 22.4 GB/s read and write bandwidth
  • Cell FlexIO bus interface
  • 20 GB/s read to the Cell and XDR memory
  • 15 GB/s write to the Cell and XDR memory
  • Support for PSGL (OpenGL ES 1.1 + Nvidia Cg)
  • Support for S3TC texture compression

Finally, according to a rumor via Squarepusher2, Mathieulh of Gitbrew's (irssi, /connect -ssl irc.gitbrew.org) Sony PlayStation 3 Hacking Team also gave Durandal the coveted PS3 CEX-DEX.zip file without permission from PS3 hacker RichDevX.

To quote: BTW Mathieulh I know you gave durandal (Durandal Dokuchayev) that CEX-DEX ZIP, that it wasn't you that bundled that up, and you were not supposed to do so either

[Mathieulh] (mathieulh@oper.gitbrew.org): mathieu
[Mathieulh] &#otheros #opers &#pspdev
[Mathieulh] *.gitbrew.org :Gitbrew
[Mathieulh] is a Deus on Gitbrew
[Mathieulh] is logged in as Mathieulh
[Mathieulh] is using a secure connection
[Mathieulh] idle 00:02:07, signon: Tue Aug 30 13:52:59
[Mathieulh] End of WHOIS list.




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!

Comments 23 Comments - Go to Forum Thread »

Errors

The following errors occurred with your submission

Okay

Quick Reply Quick Reply

  • Decrease Size
    Increase Size
  • Wrap [QUOTE] tags around selected text
Posting Quick Reply - Please Wait Posting Quick Reply - Please Wait
SuperSaiyen's Avatar
#18 - SuperSaiyen - 86w ago
Reply
some progress on the RSX front! baby steps.. then walking, and hopefully then running full speed with Linux homebrew someday in the near future. Nice writeup Gzorin, tribute 2 the great work by all devs!

shummyr's Avatar
#17 - shummyr - 86w ago
Reply
hopefully now that this is released, the devs will have an easier time with graphics and will make homebrew creation a little easier

PS3 News's Avatar
#16 - PS3 News - 86w ago
Reply
Following up on previous news and the PS3 Linux kernel module, this weekend PlayStation 3 developer gzorin (aka Alexander Betts) has made available RSXGL - the RSX Graphics Library for PS3.

Download: https://github.com/gzorin/RSXGL

To quote: RSXGL - The RSX Graphics Library

This library implements parts of the OpenGL 3.1 core profile specification for the PlayStation 3's RSX GPU. It's suitable for use in programs that have exclusive access to the RSX, such as GameOS software (and is likely unsuitable for implementing a multitasking desktop, as the library
doesn't arbitrate access to the RSX).

Please see the STATUS file for up-to-date information about the current capabilities of this library.

Briefly, the following OpenGL 3.1 features haven't been implemented yet (the RSX is capable of supporting most of them):

• Full GLSL support. Currently, GLSL and Cg shaders can be compiled offline and used with a OpenGL ES 2 style API.
• Instanced draw commands.
• Framebuffer objects and multiple render targets.
• glQuery*() objects.
• Point sprites.
• A variety of capabilities related to texture maps (rectangular and cube textures, the behavior of glPixelStore, copying from the framebuffer, mipmap generation, and texture formats, including compressed formats, that require conversion and/or swizzling).
• Client-side vertex array data. OpenGL 3.1's core profile specifically omits this, but it is specified by OpenGL ES 2 (as well as the OpenGL 3 compatibility profile), and is likely still widely used, particularly by smaller demonstration programs.
• Application object namespaces (another feature omitted by OpenGL 3.1, but used by earlier specs).
• Most glGet*() functions haven't been implemented. Some specified behavior of glEnable()/glDisable() likely needs to be implemented as well.

Further details follow:

• FULL GLSL SUPPORT

This is admittedly a large area of missing capability. Currently you can compile GLSL (and Cg) programs offline using NVIDIA's cgc compiler, and use them in an OpenGL program via an API that resembles the OpenGL ES 2 API - glShaderBinary() is used to load shader objects, and exactly two such shader objects (a vertex program and a fragment program) can be linked together by glLinkProgram().

This project certainly hopes to extend its implementation of GLSL further.

Intel contributed a standalone GLSL compiler to Mesa which can emit two intermediate representations that maybe could be translated to the NVIDIA microcode used by the RSX (maybe this compiler does this already; I haven't looked in a few months). Perhaps this compiler could be made to run from within a PS3 program.

Another longer avenue would be to explore writing an NVIDIA microcode backend for the LLVM compiler (my own brief investigation of this suggests that this might be hard, as LLVM possibly requires that its targets model some sort of heap, which the NVIDIA cards don't do).

There are opportunities to creatively implement other, recent OpenGL features. Uniform buffer objects could be supported, since both the vertex and fragment stages of the RSX can fetch from floating point textures. Transform feedback might be implemented by having the GLSL compiler factor out the program paths that compute vertices and generate a separate "fragment" program that renders to a buffer. Newer pipeline stages, like tesselation and geometry programs, could possibly be executed on the PS3's SPU's.

• TEXTURE FORMATS

The RSX can directly read from a handful of texture formats, but the OpenGL spec calls for many more besides. RSXGL currently implements only those formats whereby image data can simply be copied to the RSX's memory; other formats will require pixel-by-pixel type conversion and swizzling. The Mesa library appears to be able to perform many of these conversions.

• STREAMING, SYNCHRONIZATION, CACHING

Right now, RSXGL takes a conservative approach to handling data that streams to the GPU - if an application wants to write to an area of memory that the GPU is using, then the application will wait for the GPU to finish.

This library will implement other strategies. OpenGL specifies a few ways for an application to request synchronization behavior, but
affords implementations a wide latitude for interpreting such requests. Data stores might be partially or fully double-buffered, temporarily or for the entire lifetime of the memory area. Additionally, the PS3 itself makes two equally-sized memory areas available to the RSX, with different transfer speeds in each direction.

RSXGL takes a similarly greedy approach the flushing the GPU's vertex and texture caches - it does this every time a new glDraw*() command is sent by the application. The library will instead use the information it has available to it to determine if these caches really
ought to be flushed or not before drawing.

• COMMAND BUFFER FLUSHING

RSXGL performs the equivalent of a glFlush() when the framebuffer is flipped, and when the application needs to wait for the GPU to finish with a buffer before modifying its contents (in addition to the occasions when flushing is explicitly called for by a GL function
call).

I've noticed that whan a large-ish number of glDraw*() commands (on the order of several thousand) are submitted per frame without any additional flushing that performance degrades considerably. This particularly is the case if program uniform variables (such as an object's transformation matrix) are modified prior to each draw call. Therefore it's currently a good idea for the application to call glFlush() frequently.

Obviously this needs to be handled more transparently by the library itself, but I'm undecided as to a flushing policy - should it happen every draw call, or per a certain number of draw calls, or should it happen based upon the number of vertices being drawn, or the current size of the command buffer? (You can be assured that this will be an application-tunable setting.

I'm unclear as to how expensive an operation glFlush() is - it involves a small write by the PPU to the RSX's control register, allegedly a fast operation (reading from RSX memory by the PPU is not fast), but beyond that I don't know.

I haven't either tried to observe what happens when the command buffer's capacity is exceeded before the framebuffer is flipped (the libEGL implementation creates a command buffer with the capcity for 524288 commands, which is set in rsxgl_config.h and can be overriden at runtime by calling rsxeglInit() before initializing EGL).

• CLIENT VERTEX ARRAYS

The OpenGL ES 2 profile, as well as OpenGL profiles prior to version 3.1, allow an application to specify vertex data from the system's main memory, without specifically asking the library to create a buffer of some predetermined size. This usually requires the library
to implement some strategies to migrate client-side memory to the GPU, and there are likely many ways to try to perform this efficiently.

OpenGL 3.1 requires applications to create buffer objects for any vertex data (though not for index buffers; these can still be migrated
from client memory). This makes life easier for the library implementor, and is one reason why RSXGL implements GL 3.1 and not GL ES 2 (it also helps keep the data structures that the library allocates small).

Nonetheless, many existing programs depend upon the older spec, so it'd be good to support this in RSXGL (even if it's not super-efficient at first). Since supporting this older capability can potentially bloat RSXGL's data structures, this will likely be an
option specified when the library is configured.

Since client memory can be mapped into the RSX's address space, there will also be capability, implemented in the style of an OpenGL extension, for the application to promise that the client pointers submitted via glVertexArrayPointer are so mapped, eliminating a memcpy.

• APPLICATION NAMESPACES

OpenGL 3.1 requires that applications call glGen*() functions to create the names for objects that get created. ES 2 and previous GL
versions made this optional, allowing the application to come up with any unsigned integers it wanted to name objects with. This change was another reason to implement OpenGL 3.1, because it allows for a faster pool-style allocation of object data structures instead of potentially requiring a costly data structure like an associative map.

The older behavior will be supported as a configure option, too, for compatibility with existing programs.

• EXAMPLES

I'm interested in porting the [OpenGL Samples Pack] (http://www.g-truc.net/project-0026.html). They are small demonstration programs that are helpfully organized by the OpenGL profiles that they support.

INSTALL:

RSXGL uses the GNU autotools for its build system and is distributed with a configure script. It requires the following projects:

• [ps3toolchain](http://github.com/ps3dev/ps3toolchain)
• [PSL1GHT](http://github.com/ps3dev/PSL1GHT

NVIDIA's cgc shader compiler, from the Cg toolkit, is also required to use vertex and fragment GPU programs.

The RSXGL library depends upon a toolchain that can generate binaries for the PS3's PPU, and also upon parts of the PSL1GHT SDK. The sample programs also require a few ported libraries, such as libpng, which are provided by the ps3toolchain project. ps3toolchain recommends setting two environment variables to locate these dependencies:


export PS3DEV=/usr/local/ps3dev
export PSL1GHT=$PS3DEV

RSXGL's configure script will use these environment variables if they're set; if they aren't set, by default the script uses the above settings. The PORTLIBS environment variable may also be set to further control were the ported libraries can be found.

Anyway if these variables are set reasonably, then the following commands should build RSXGL and its samples:


./configure --prefix=/location/of/rsxgl
make
make install

(Sample programs are packaged into NPDRM packages, but those packages remain in their build locations; they don't get moved anywhere relative to RSXGL's install path).

By default, configure will create non-debug builds with low optimization settings (-O1). Other options are:


# Debug build, including assertions:
./configure --enable-debug

# Optimized build (-O3):
./configure --enable-ppu-optimize

The locations of the library's dependencies can be specified on the configure command-line, too:


./configure \
--with-ps3dev=/usr/local/ps3dev \
--with-psl1ght=/usr/local/ps3dev/libpsl1ght \
--with-portlibs=/usr/local/ps3dev/portlibs

The configure expects to find versions of the gcc, g++, ar, ranlib, and ld programs that target the PS3's PPU. It tries to find these in $PS3DEV/ppu/bin, but the following environment variables can be set to provide full paths to these programs to the configure script:


PPU_CC Location of C compiler
PPU_CXX Location of C++ compiler
PPU_AR Location of the ar archive utility
PPU_RANLIB Location of the ranlib utility
PPU_LD Location of the ld linker

The following environment variables can also be set to further influence how headers and libraries are located:


PS3DEV_PPU_CPPFLAGS
PS3DEV_PPU_LDFLAGS
PSL1GHT_PPU_CPPFLAGS
PSL1GHT_PPU_LDFLAGS
PORTLIBS_PPU_CPPFLAGS
PORTLIBS_PPU_LDFLAGS

Currently two sample programs are built:

• src/samples/rsxgltest - A very simple test program whose contents and behavior will vary. This program is mainly used to try out various features of the library as they are developed.
• src/samples/rsxglgears - A port of an old chestnut, the "glgears" program that uses OpenGL to render some spinning gears. This port is based upon a version included in the Mesa library, which was itself a port to OpenGL ES 2 after being handed down throughout the ages.

The sample can print debugging information over TCP, in the manner of PSL1GHT's network/debugtest sample. src/samples/rsxgltest/main.c has symbols called TEST_IP and TESTPORT which specify the IP address and port number to try to connect to, and you can use "nc -l portnum" to receive messages.

TO DO:

• Instanced rendering
• Framebuffer objects
• x glMapBuffer* should block if an operation on the buffer is still pending.
• Better-performing glMapBuffer.
• Less conservative approach to buffer mapping & GPU cache invalidation.
• (Finish) object "orphaning" (Programs orphanable, Disposal of orphaned objects)
• x Handle timestamp overflow
• Integer vertex specification.

Textures:

• format conversion (take this from mesa).
• test mipmapping
• cube maps
• rectangular textures (x implement glTexStorage*())
• implement glCopyTexImage*() and glCopyTexSubImage*()
• proxy textures
• implement the effects of glPixelStore
• Support for GLES2-style client vertex data.
• Support for GLES2-style application object namespaces.
• Implement glGet*() functions.
• More GLSL support.
• Make it possible to work with non-EGL configured display.
• Move object storage from globals to context.
• Support multiple contexts with shared objects.
• __restrict keyword where appropriate.
• x Add libstdc++.a to libGL.a, so that client code doesn't need to use g++ to link.
• oglsamples
• Flushing and orphan cleanup policy
• Vertex program textures


More PlayStation 3 News...

PS3 News's Avatar
#15 - PS3 News - 88w ago
Reply
Here is another brief update from glevand via Gitbrew stating that Wireless LAN is now working on Linux for the PS3 console: twitter.com/#!/gitbrew/status/112554073458343936

Wlan now working on slim ps3s. http://git.gitbrew.org/repos/?p=ps3/ps3linux/ps3-jupiter.git;a=summary Linux based for now. Freebsd and petitboot with wireless to come next.

One more update via gitbrew: twitter.com/#!/gitbrew/status/113546748210855936

Freebsd live cd now has a partial rsx driver http://gitbrew.org/~glevand/ps3/freebsd/livecd/ Supported resolution so far - 1920x1080.

Download: http://gitbrew.org/~glevand/ps3/freebsd/livecd/ps3_freebsd_livecd.iso

Pcsx2006's Avatar
#14 - Pcsx2006 - 89w ago
Reply
Atlast RSX drivers are released thanks to hard work by durandal, glevand and gitbrew.

Page 2 of 5 «‹12345›LAST »

Related PS3 News and PS3 CFW Hacks or JailBreak Articles

• PSPMinis / PS3Minis / Bite v1.5.1 Update for PS3 is Now Released
• PS3 Fan Control Utility v1.7 for PS3 CFW CEX 3.41 to 4.41 Arrives
• PSPMinis / PS3Minis / Bite v1.5 for PS3 with PSP Homebrew Support
• PS3 Fan Control Utility v1.6 for PS3 CFW CEX 3.41 to 4.40 Arrives
• OpenSCETool (OSCETool) v0.9.2 By SpacemanSpiff for PS3 is Released
• PUAD GUI v1.5 - PS3 PUP Unpacker, Repacker and Decrypter Out
Affiliates  NewsNow  Privacy  PS3 CFW & MFW  PS3 Hacks & JailBreak  PS3 Reviews  PS3 Videos  © 2013 PlayStation 3 News

PlayStation 3 Links

• Contact Us E-Mail
• PS3 Affiliates
• PS3 CFW & MFW
• PS3 Debug Firmware
• PS3 Decrypted PSN Links for CFW
• PS3 Downloads
• PS3 EBOOT.BIN Original File Links
• PS3 Firmware
• PS3 Game Releases List
• PS3 Guides & Tutorials
• PS3 Hacking Guides and Tutorials
• PS3 Hacks & JailBreak
• PS3 Help & Support
• PS3 JailBreak Game Compatibility List
• PS3 JB2 / True Blue (TB) Game Links
• PS3 multiMAN Updates
• PS3 News Forums
• PS3 News Site FAQ
• PS3 News Site Advertising FAQ
• PS3 News Site Posting FAQ
• PS3 News Site Privacy FAQ
• PS3 News Site Rules
• PS3 News Site Tag Cloud
• PS3 News Site Terms
• PS3 Resources
• PS3 Reviews
• PS3 Save Files Repository
• PS3 Themes
• PS3 Trophies List
• PS3 Videos
• PS Vita Trophies List

PlayStation 3 News Discussions
Change Multiman game background image? - 10m ago

d3adliner's Avatar
Quote I tried adding game_bg_overlay=0 to the config.bin file but that didn't work either. There used to be a view mode called "Game list (user backgro...
By d3adliner with
 3 Comments »
Change Multiman game background image? - 35m ago

d3adliner's Avatar
Quote Tried your suggestion but it only changed the background for every other mode except for the one I want changed, lol....
By d3adliner with
 3 Comments »
Change Multiman game background image? - 2h ago

Azrial's Avatar
Quote I think you go to your images via the MultiMAN XMB view, and select what image you want to use as a wallpaper....
By Azrial with
 3 Comments »
Change Multiman game background image? - 3h ago

d3adliner's Avatar
Quote Is there any way to change the game backgrounds in this view (see attached picture) to a be the same single static image for every game? I remember th...
By d3adliner with
 3 Comments »

Latest PlayStation 3 Trophies
PixelJunk Monsters : Encore : Zero Carat
PixelJunk Monsters : Encore : Wishing Well
PixelJunk Monsters : Encore : Scrooge's Return
PixelJunk Monsters : Encore : Black Flag

Latest PlayStation Vita Trophies
Jacob Jones and the Bigfoot Mystery : Low Notes
Jacob Jones and the Bigfoot Mystery : Unjammed
Jacob Jones and the Bigfoot Mystery : Low Roller
Jacob Jones and the Bigfoot Mystery : Quick Packer

Latest PlayStation 3 Releases
Muvluv Alternative Total Eclipse JPN PS3-HR - 05-17-2013
Skate 2 EUR PS3-Googlecus - 05-16-2013
The Walking Dead A Telltale Games Series PS3-COLLATERAL - 05-15-2013
The Cube PS3-ANTiDOTE - 05-14-2013

Latest PlayStation 3 Themes
Wolverine Origins PS3 Theme - 05-11-2013
Heavy Rain (Official) Dynamic PS3 Theme - 05-09-2013
Wipeout HD Fury Dynamic PS3 Theme - 05-06-2013
Batman Arkham City Dynamic PS3 Theme - 05-04-2013
  • Contact Us
  • -
  • PS3 News