jumpingfool
Posts: 2
Joined: Thu Jan 05, 2012 3:22 am

Re: Interfacing with the GPU

Thu Jan 05, 2012 8:50 am

I came across the Raspberry Pi a couple of days ago and have been doing some background reading on the website/wiki - what a great project! I cut my engineering teeth coding ARM assembler on the Acorn back in the 90's and have no doubt placing this level of embedded computing power in the hands of school kid hackers will produce some interesting results.

I have a quick question if I may - hopefully this is the right place for it.

I'm pretty familiar with the capabilities of the ARM 11 but the broadcom GPU it is slaved to is new to me. From what I've read so far it looks as though the SoC package pairs the ARM core with a number of propriatory DSPs which are driven via a closed source software library to perform various media related tasks.

How do userland programs running on the ARM interface with the GPU library? Is there any documentation avalable as yet? In particular I'm interested in the features for encoding H.264, which profiles are supported for acceleration, etc.

I have not used this sortof hardware before so not quite sure what to expect!

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 23663
Joined: Sat Jul 30, 2011 7:41 pm

Re: Interfacing with the GPU

Thu Jan 05, 2012 10:36 am

Graphics : OpenGL ES, OpenVG - these use the standard Linux API to these libraries so docs available on the web.

Decode/Encode: OpenMAX I beleive (not sure yet), but this is a right PITA to use. We will supply a media playerc at launch, but no non-OpenMAX access to the encode at this stage.

Documentation is not yet available for OpenMAX stuff - its horrible and may not be done. as its may be replaced with something else.
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

BKsMassive
Posts: 12
Joined: Thu Jan 05, 2012 4:06 pm

Re: Interfacing with the GPU

Thu Jan 05, 2012 4:27 pm

People saying things like

" Plzplz plzz c4n i haz i7 3960x & GTX590 0n teh n3xt R-pi!!11one! "

Raspberry Pi isn't designed for you to get a cheap gaming computer. It's for people to learn programming.

stuporhero
Posts: 125
Joined: Fri Aug 19, 2011 2:02 pm

Re: Interfacing with the GPU

Thu Jan 05, 2012 5:10 pm

Ollie Barbor said:


People saying things like

" Plzplz plzz c4n i haz i7 3960x & GTX590 0n teh n3xt R-pi!!11one! "

Raspberry Pi isn't designed for you to get a cheap gaming computer. It's for people to learn programming.


But has proved to be able to play Quake 3, so is a nice dev tool for anyone who'd like to write a game. In turn this will lead to people buying them to game (assuming the games are good!) I think there's a lot more to the RasPi and reckon a few enterprising people could give us a game machine from it yet!

hippy
Posts: 5955
Joined: Fri Sep 09, 2011 10:34 pm
Location: UK

Re: Interfacing with the GPU

Thu Jan 05, 2012 7:42 pm

Ollie Barbor said:


People saying things like

" Plzplz plzz c4n i haz i7 3960x & GTX590 0n teh n3xt R-pi!!11one! "

Raspberry Pi isn't designed for you to get a cheap gaming computer. It's for people to learn programming.



But there's a lot of difference between "I want" demands and asking what the R-Pi supports or will allow.

The R-Pi is indeed designed as a tool to learn computing upon but the foundation has acknowledged it will have other uses and such uses are essential to help achieve the foundation's goals. It's reasonable to enquire whether a particular use can be made of the R-Pi or not.

jumpingfool
Posts: 2
Joined: Thu Jan 05, 2012 3:22 am

Re: Interfacing with the GPU

Thu Jan 05, 2012 9:49 pm

JamesH said:


Decode/Encode: OpenMAX I beleive (not sure yet), but this is a right PITA to use. We will supply a media playerc at launch, but no non-OpenMAX access to the encode at this stage.

Documentation is not yet available for OpenMAX stuff - its horrible and may not be done. as its may be replaced with something else.


Thanks - I had a quick look at the OpenMAX site (http://www.khronos.org/openmax/ if anyone else is interested) and I can see how it might be a PITA to use.

Great to hear that you're planning to ship a media player with the launch distro - at least the source from that will give a base to work from on the decode side.

Probably a long shot but do Broadcom offer a reference implementations for VideoCore that they would be happy to share with the community? I know TI have some reference code for common applications of their media accelerators (video conferencing, etc), which they share with registered developers under NDA.

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 23663
Joined: Sat Jul 30, 2011 7:41 pm

Re: Interfacing with the GPU

Fri Jan 06, 2012 9:04 am

jumpingfool said:


JamesH said:


Decode/Encode: OpenMAX I beleive (not sure yet), but this is a right PITA to use. We will supply a media playerc at launch, but no non-OpenMAX access to the encode at this stage.

Documentation is not yet available for OpenMAX stuff - its horrible and may not be done. as its may be replaced with something else.


Thanks - I had a quick look at the OpenMAX site (http://www.khronos.org/openmax/ if anyone else is interested) and I can see how it might be a PITA to use.

Great to hear that you're planning to ship a media player with the launch distro - at least the source from that will give a base to work from on the decode side.

Probably a long shot but do Broadcom offer a reference implementations for VideoCore that they would be happy to share with the community? I know TI have some reference code for common applications of their media accelerators (video conferencing, etc), which they share with registered developers under NDA.


I'm not sure the source of the media player is being released - it's a binary AFAIK. Sorry.

I'm not sure about reference implementations - there are lots of examples that go to customers, but they pay *a lot* for that level of support.

I really don't enough about the licencing and what software is being supplied/intended to add much else. The priority at the moment is to get the HW sorted, once that is done we can concentrate on the software side.
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

User avatar
cnxsoft
Posts: 191
Joined: Sat Oct 15, 2011 2:33 pm
Location: Chiang Mai, Thailand
Contact: Website

Re: Interfacing with the GPU

Fri Jan 06, 2012 2:12 pm

I understood that the player source code would be released and that it could be used as a sample to implement hardware decoding in other projects.

How is XBMC team doing to port XBMC to R-Pi if they don't have documentation or samples ?

User avatar
cnxsoft
Posts: 191
Joined: Sat Oct 15, 2011 2:33 pm
Location: Chiang Mai, Thailand
Contact: Website

Re: Interfacing with the GPU

Fri Jan 06, 2012 2:13 pm

Unless of course, we are just supposed to call sample app to play videos...

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 23663
Joined: Sat Jul 30, 2011 7:41 pm

Re: Interfacing with the GPU

Fri Jan 06, 2012 2:37 pm

cnxsoft said:


I understood that the player source code would be released and that it could be used as a sample to implement hardware decoding in other projects.

How is XBMC team doing to port XBMC to R-Pi if they don't have documentation or samples ?


I was under the impression the source was closed, but I can check. I may well be wrong.
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

Svartalf
Posts: 596
Joined: Fri Jul 29, 2011 6:50 pm

Re: Interfacing with the GPU

Thu Jan 12, 2012 2:24 am

jumpingfool said:

Probably a long shot but do Broadcom offer a reference implementations for VideoCore that they would be happy to share with the community? I know TI have some reference code for common applications of their media accelerators (video conferencing, etc), which they share with registered developers under NDA.
The official means is through OpenMAX on TI as well.  They have a proprietary interface to the Ducati engine- but they've not open-sourced that even though they've promised it.

User avatar
Jessie
Posts: 1754
Joined: Fri Nov 04, 2011 7:40 pm
Location: C/S CO USA

Re: Interfacing with the GPU

Thu Jan 12, 2012 5:04 am

cnxsoft said:


I understood that the player source code would be released and that it could be used as a sample to implement hardware decoding in other projects.

How is XBMC team doing to port XBMC to R-Pi if they don't have documentation or samples ?



Magic, they are using magic...  They are going to use libraries and function calls just like any other developer does.  Do you think that game developers do anything other than include a library and call functions from it?  The blob will take care of the interfacing from the GPU to these libraries, just like any other GPU avalible out there.  How many applications out there do you think people write bare to metal for AMD or nVidia GPUs?  My guess would be less than 1%.  They just make function calls within the Direct X or Open GL libraries and the driver does the rest.  The same will happen here.

User avatar
cnxsoft
Posts: 191
Joined: Sat Oct 15, 2011 2:33 pm
Location: Chiang Mai, Thailand
Contact: Website

Re: Interfacing with the GPU

Thu Jan 12, 2012 5:21 am

Jessie said:


cnxsoft said:


I understood that the player source code would be released and that it could be used as a sample to implement hardware decoding in other projects.

How is XBMC team doing to port XBMC to R-Pi if they don't have documentation or samples ?



Magic, they are using magic...  They are going to use libraries and function calls just like any other developer does.  Do you think that game developers do anything other than include a library and call functions from it?  The blob will take care of the interfacing from the GPU to these libraries, just like any other GPU avalible out there.  How many applications out there do you think people write bare to metal for AMD or nVidia GPUs?  My guess would be less than 1%.  They just make function calls within the Direct X or Open GL libraries and the driver does the rest.  The same will happen here.


Yes, I understand that and I've never asked to access the GPU internals or driver source. The problem is that the library API are not available for BCM 2835 as there are been no confirmation of which standard could be used to access the video decoder. OpenMAX IL was mentioned, but after it was not sure.

User avatar
Jessie
Posts: 1754
Joined: Fri Nov 04, 2011 7:40 pm
Location: C/S CO USA

Re: Interfacing with the GPU

Thu Jan 12, 2012 5:30 am

Right now I can't say.  The XBMC team dosn't want the foundation to spoil their announcement, and the foundation is still working out the legals before video decode specifics are released.  At this moment video playback with XBMC is using hardware decode so they must have gotten some documentation, libraries, or something to make this happen from the foundation or Broadcom.  I have no clue how they got full hardware decode, but I'm sure after they make their announcement it will become clear.

Return to “Other projects”