9 ms·
Original source code for the PowerVR Series 1 GPUs
- pabs3 5y agoIs this likely to be useful for more recent but still ancient PowerVR mobile GPUs?
- megous 5y agoSGX544 next... that could actually be useful to someone. Like people with 8 year old already outdated tablets.
- snvzz 5y agoFor the drivers. Not the GPUs.
- Simon_Fe 5y agoI think the "simulator" code is also bundled in there.
- greatgib 5y agoAwesome, after so many years they finally open source it!
- WalterGR 5y agoA bit more context here: https://www.phoronix.com/scan.php?page=news_item&px=PowerVR-Series-1-Open-Source https://www.phoronix.com/scan.php?page=news_item&px=PowerVR-...
- marcodiego 5y agoWhat does it means for linux/android on old iphones?
- Aissen 5y agoIt's really nice to see Imagination's newly gained openness (see https://www.phoronix.com/scan.php?page=news_item&px=Open-Source-PowerVR-Vulkan https://www.phoronix.com/scan.php?page=news_item&px=Open-Sou... for more context). The company's peak is behind it since Apple slowly dropped their IP. Despite being hurt by their policies during the poulsbo days, I still hope that this isn't a swan song and that it will help their business. Nobody wins with a heavily concentrated GPU market.
- ksec 5y ago>The company's peak is behind it since Apple slowly dropped their IP. They never did. They are still using IMG's IP even today. Just look at their PVRTC support. It was possibly one of the biggest lie ever and caused their stock to collapse. Now they are sold to a Chinese Capital and are pushing towards competing in PC GPU market.
- Aissen 5y agoHum, thanks for the headsup, it was my understanding that the Apple "GPU" compute part was mostly built in-house, and that only the fixed-function part were from Imagination at some point, then dropped. I didn't know they were still using it. Would you have more details ?
- ribit 5y agoI think you have all of this right. Parts of IMG IP Apple still uses is the TBDR stuff, compression and some other fixed-function things. It is unclear how much of it Apple has modified. The actual compute and scheduling engine is Apple's own.
- Pulcinella 5y agoImagination and Apple signed some kind of new agreement in 2020 but what that exactly was I am not sure if the details are officially avail able. https://www.imaginationtech.com/news/imagination-and-apple-sign-new-agreement/ https://www.imaginationtech.com/news/imagination-and-apple-s...
- marcodiego 5y agoLooks like it is from 90's era cards, right? Anything that could be of value for modern devices?
- pavlov 5y agoI had one of these around 1997. It was pretty fast and affordable, but had some major holes in its feature set. I remember it didn’t support OpenGL style custom blending, so a game that rendered explosions using an additive-blended sphere would just display an opaque expanding sphere. Games that were specifically tuned for its feature set could look great though. These cards had sharper VGA output than the 3dfx Voodoo which required an analog passthrough from a separate 2D graphics card (the Voodoo was a pure 3D accelerator). I thought about getting a 3dfx Voodoo but then realized I don’t really play 3D games anyway. The PowerVR clocked in maybe four hours of total use by me, and nobody wanted the card because of its reputation.
- rasz 5y ago>These cards had sharper VGA output than the 3dfx Voodoo These cards had no VGA output whatsoever, and rendered straight to dedicated 2D cards framebuffer.
- wsc981 5y agoAh that makes me wonder if my father’s PC had a similar GPU. I played Half-life at the time, and shortly after the tentacle boss, you’d had to swim underwater. However this water was just rendered in a opaque color, so at that point I could not finish the game. Not an idea where to go.
- justsomehnguy 5y ago(A 20 years late) hint - just switch to software mode, duh.
- kmeisthax 5y ago"Explosions don't alpha-blend correctly" is particularly odd given that TBDR's strength was supposed to be alpha blending.
- Simon_Fe 5y agoSeries 1, eg, PCX1 and PCX2 had (SRC_Alpha, 1 - SRC_Alpha) blending, but not the full set of OpenGL options. When series 2 was released (Eg, ARC1, Dreamcast, Neon250), it had the full set including support for destination alpha, which IIRC wasn't available on eg 3dfx.
- marcodiego 5y agoCode is problematic: multilne defines: https://github.com/powervr-graphics/PowerVR-Series1/blob/c8c11cbe29c5b758ed1ef9600fc8614fc8da618e/Source/dlines.c#L859 https://github.com/powervr-graphics/PowerVR-Series1/blob/c8c... Looks like they didn't know the "do{...}while(0)" trick.
- tom_ 5y agoDefines in a .c file (or .cpp, .m, etc.) are special-purpose and don't have to be suitable for use in all contexts.
- Simon_Fe 5y agoCan you explain what you meant by that? (Today, that code might be done with inline functions but that wasn't an option back then)
- marcodiego 5y agoSuppose we do #define multiline insns1;\ insns2; and then, on my code I use: if(cond) multiline; then insns2 will be executed regardless of cond. Even if we do #define multiline {\ insns1;\ insns2;\ } then, if we use if(cond) multiline; else other; will give us a syntax error before "else". The usual way to make multiline defines work correctly for any case is: #define multiline do {\ insns1;\ insns2;\ }while(0) This will force the programmer to add ';' after using it and it won't break. This is used in many high-profile projects including the linux kernel.
- Simon_Fe 5y agoFair enough. I've certainly used that in other code (eg wrappers around mallocs with checks etc) but this was specifically for that ".c" file so it didn't really matter. (Also, not sure we could assume the code optimisation was all that great on the compilers back then :-) )
- JoachimS 5y agoPlease update the title to clarify that it is the source for the driver, not the GPU chip.
- anthk 5y ago>powerVR I was hoping for the source code of Intel GMA and such, but no luck :p.
- jbverschoor 5y agoTitle is wrong... misleading.. clickbait.. and the whole post is super irrelevant because of it.
- LelouBil 5y agoI really like the fact that they are open sourcing stuff recently ! I'm helping to make linux distros run on chromebooks and mine(the acer chromebook R13) is using a powerVR GPU (https://github.com/hexdump0815/linux-mainline-mediatek-mt81xx-kernel/issues/1 https://github.com/hexdump0815/linux-mainline-mediatek-mt81x...) , I struggled a lot trying to use their drivers. I hope I will be able to use their drivers soon enough !
- w0mbat 5y agoThis is what the company pivoted to in the 90s when their VideoLogic video overlay card business went out of fashion. They have been adept at changing course multiple times.
- david-gpu 5y agoGrandpa story time! My first job was at Imagination Technologies in 2006, working on the first SGX chips that shipped in the iPhone 3GS and the first iPad. I did not last long. At that time the folks at Apple would send us mockup UI apps with placeholder textures, just to test the performance on the chip. They told us they were building the next generation of the Apple TV -- only much later we learned we had been working on the first iPad. Working there was a pretty surreal experience. We were understaffed and underpaid. To a first approximation the teams consisted of a core group of British engineers alongside with a revolving door of young European immigrants like myself. Every Friday morning we would be offered free doughnuts in the canteen, and since the nicest ones were in short supply, some people would arrive early and wait. The coffee came from a vending machine and was terrible, though. There were some heroic efforts to ship stuff on time, especially on the hardware side of things. I have mad respect for the people who worked there under those circumstances.
- jacquesm 5y agoIt is always frustrating to see the people that underpin these massive financial successes mistreated like this.
- ChuckNorris89 5y agoIt's pretty standard in Europe semi/HW sector as it's no SV, so there's no massive cluster where people can quickly find alternate employment at a competitor across the road if they get mistreated by an employer. In the EU semi space, changing jobs, often means changing country, which implies a lot of friction many people can't or don't want to deal with.
- dboreham 5y agoVending machine coffee was pretty standard back then in UK tech offices.
- astrange 5y agoAmerican ones too - there may have been an espresso bar, but the free option for us was a Starbucks “iCup” machine whose output tasted and smelled nasty. Now that I think about it, maybe we should’ve checked the water supply.
- mrpippy 5y agoThere's some mentions of (classic) Mac and RAVE support in the code, but I don't remember any mention of PowerVR cards, games, drivers, etc. on the Mac back in the day. Anyone else?
- bronson 5y agoDiamond Multimedia got the hardware working on Macs in 1996. The demos were just outstanding. Trying to make it reliable for real-world games, though, was tedious. Endless triangle mismatches. Nobody was sure how much additional effort would be required to produce a reliable product for sale. At the time, Diamond's desire for additional Mac revenue was dwindling, along with its share price, so leadership probably made the right call to cancel the project (along with all their future Mac products).
- nebula8804 5y agoThis is exciting! If they open source Power VR 2 then would help enable deeper understanding of the Sega Dreamcast's GPU right? If I recall correctly the SH-4 CPU arch is already open. Just imagine documenting the console completely at a deep level! Wonder if it might enable some now innovative ideas. We see lots of those open source "retro" consoles popping up that rely on old now open and documented 8-bit CPUs. Maybe this could allow the creation of some "Retro" 3d consoles?
- stuaxo 5y ago> As of right now, due to licensing concerns we have been unable to supply some libraries and headers provided by SciTech Software for "The Universal VESA VBE" However, this was only used for the Tomb raider port, in order to tell the PCX hardware the details of the framebuffer. Fair enough - who can we contact to try and get UniVBE open sourced? There's a lot of early graphic card info locked in there.
- rubycon 5y agoThe code [1] includes an implementation of the FastInvSqrt that date back at least to 1996. There's an assembly and a C version, referred as SLOW_SQRT_DIV :). It uses float/int pruning through union (in C) and one or two rounds of Newton-Raphson refinements. Interestingly corrections aren't done with a fixed value (part of the famous 0x5F3759DF) but through a LUT [2], which I guess, yield better results but was a bit slower on 90's arch. [1] https://github.com/powervr-graphics/PowerVR-Series1/blob/main/Source/sgl_mat2.h#134 https://github.com/powervr-graphics/PowerVR-Series1/blob/mai... [2] https://github.com/powervr-graphics/PowerVR-Series1/blob/main/Source/sgl_math.c#L933 https://github.com/powervr-graphics/PowerVR-Series1/blob/mai...