maciek_urbanski
Member
- Joined
- Oct 3, 2008
- Messages
- 161
This post is edited to provide up-to-date summary of project.
Issue:
Programmable graphics accelerator contained inside Pandora CPU, called SGX is effectively closed-source product. There's no detailed HW specification, description of internal architecture, instruction set or data structures. Driver for SGX contains two parts - open-sourced kernel-space driver (kmd) which contains some basic 2D functionality and is able to pass-though commands to SGX. Second, closed-source part is a user-space driver (umd) that exposes standard OpenGL ES interface to applications. These applications issue OGL ES calls to 'umd' which get compiled into commands and data structures and passed to 'kmd'.
Since all complex work is done on closed-source 'umd' part we cannot easily analyze it for sake of optimization fixing bugs and improvement.
Additionally - HW has more capabilities that OpenGL ES is exposing, limiting both creativity and performance.
Solution:
In this project, unofficially called 'libsgx' we want to decipher and describe inner workings of SGX, its instruction set and all data structures and algorithms necessary to directly access SGX capabilities bypassing closed-source 'umd' driver.
The result of this process will be detailed documentation and sample source code that would allow developers to implement full standard-compliant OpenGL/OpenGL ES driver, or interface to SGX directly. Side (read: optional, secondary) result would be creation of paper-thin API making interfacing to SGX easier.
This project will not result in creation of OpenGL/OpenGL ES driver itself. It will provide basis for other to do it.
How you can help ?:
Legaility:
All the signs suggest that reverse-engineering for sake of improved compatibility, performance and functionality is legal in European Union. In fact, you can find 'legal' commentary and link to EU directive in thread itself. If you're not in EU - you should verify it yourself.
Before submitting questions I encourage to read through this thread before submitting questions (they may already be answered).
And thanks for great input so far!
previous contents:
Hi guys.
I'm thinking about designing paper-thin API to access SGX directly. The chip itself is DirectX 10.1-capable, but for Linux only closed-source OGL ES driver is available (without any 'fancy' extensions).
Driver would allow using SGX to the maximum of it's capabilities, and would be nice baseline for more high-level API...
This of course means that I must either get behavioral specification of SGX or reverse-engineer it. If closed-sourceness of OGL ES driver is any indication - I'm assuming that my questions to Imtec about those docs will not be answered...
I'm capable of reverse-engineer SGX (I'm programming similar architectures on daily basis) - but it would take large amount of time (think 1y+ with community help).
So my question to you all is: Do you feel it's worth the trouble ?
Issue:
Programmable graphics accelerator contained inside Pandora CPU, called SGX is effectively closed-source product. There's no detailed HW specification, description of internal architecture, instruction set or data structures. Driver for SGX contains two parts - open-sourced kernel-space driver (kmd) which contains some basic 2D functionality and is able to pass-though commands to SGX. Second, closed-source part is a user-space driver (umd) that exposes standard OpenGL ES interface to applications. These applications issue OGL ES calls to 'umd' which get compiled into commands and data structures and passed to 'kmd'.
Since all complex work is done on closed-source 'umd' part we cannot easily analyze it for sake of optimization fixing bugs and improvement.
Additionally - HW has more capabilities that OpenGL ES is exposing, limiting both creativity and performance.
Solution:
In this project, unofficially called 'libsgx' we want to decipher and describe inner workings of SGX, its instruction set and all data structures and algorithms necessary to directly access SGX capabilities bypassing closed-source 'umd' driver.
The result of this process will be detailed documentation and sample source code that would allow developers to implement full standard-compliant OpenGL/OpenGL ES driver, or interface to SGX directly. Side (read: optional, secondary) result would be creation of paper-thin API making interfacing to SGX easier.
This project will not result in creation of OpenGL/OpenGL ES driver itself. It will provide basis for other to do it.
How you can help ?:
- If you are programmer with strong 3D knowledge and Linux background (kernel driver development is a plus) - we'll find something interesting for you. :wink:
- If you are non-programmer, but do not afraid of some tinkering (like replacing a kernel with custom one) and lots of testing - we'll have some tests to run and data to collect (when or Pandoras arrive).
- If you have some information (documents, specs.) that you can legally share on SGX (and SGX only) - please share them (PMig me will do).
Legaility:
All the signs suggest that reverse-engineering for sake of improved compatibility, performance and functionality is legal in European Union. In fact, you can find 'legal' commentary and link to EU directive in thread itself. If you're not in EU - you should verify it yourself.
Before submitting questions I encourage to read through this thread before submitting questions (they may already be answered).
And thanks for great input so far!
previous contents:
Hi guys.
I'm thinking about designing paper-thin API to access SGX directly. The chip itself is DirectX 10.1-capable, but for Linux only closed-source OGL ES driver is available (without any 'fancy' extensions).
Driver would allow using SGX to the maximum of it's capabilities, and would be nice baseline for more high-level API...
This of course means that I must either get behavioral specification of SGX or reverse-engineer it. If closed-sourceness of OGL ES driver is any indication - I'm assuming that my questions to Imtec about those docs will not be answered...
I'm capable of reverse-engineer SGX (I'm programming similar architectures on daily basis) - but it would take large amount of time (think 1y+ with community help).
So my question to you all is: Do you feel it's worth the trouble ?