Turning a Raspberry Pi Pico into a GPU!
ฝัง
- เผยแพร่เมื่อ 4 พ.ค. 2024
- Everything can become a GPU if you're weird enough, right!? Clem surely has the weirdness required here, as he attempts to take a Raspberry Pi Pico and turn it into a DVI graphics card for use with single board computers, microcontrollers, and especially his Sudosom module that runs Linux on an ESP32S3.
His project is an iteration on the amazing work of the Pico-DVI project by Luke Wren (link below), and Clem aims for compatibility with the popular Adafruit graphics library commands.
Discuss the episode, find all files, and ask Clem questions on the element14 Community! bit.ly/3wsLbyP
Pico dvi github.com/Wren6991/PicoDVI
DVI Sock github.com/Wren6991/Pico-DVI-...
Engage with the element14 presents team on the element14 Community - suggest builds, find project files, and see behind the scenes video: bit.ly/3tmdewv
Visit the element14 Community for more great activities and free hardware: bit.ly/3q6YMpu
Tech Spotlights: bit.ly/3qPrDhM
RoadTest and Reviews: bit.ly/3pV5Bux
Project14: bit.ly/31wbnJY
#0:00 Welcome to element14 presents
#0:19 Overview
#2:17 Pico DVI
#5:09 But Is It a GPU?
#10:06 Code and Test
#12:24 Last Minute PCB!
#14:46 What's Next?
#15:33 Give Your Feedback
#raspberrypi #raspberrypiprojects #raspberrypipico #raspberrypiprojectcenters #gpu #linux - วิทยาศาสตร์และเทคโนโลยี
I made a project using a Pico as HDMI generator, my Samsung TV needed the 5v before it would allow me select the HDMI input. (My monitors work fine without the 5v)
Ah well that confirms my theory!
I Ran into that once, all you have to do is double click the input and it will work
The term GPU was introduced by Nvidia as a marketing term for GeForce 256 because it was a vector processor. Before that we had "3D accelerators" (with no geometry math) and "video cards" (usually with GDI and overlay acceleration).
But there was another unit before officially called the GPU, it was the video subsystem of the original PlayStation.
So I think until it does at least 3D, it's just a PPU or VDP or whatever.
Technically it could do low res 3d givrn the right code
correct
Interesting. Thanks for sharing that!
A 3D engine utilizing PIO would be sweet...but how much of the PIO is already being used to bit bang?
The pio pins are driving the dvi signals, not related to 3d,such a 3d engine is just a piece of code living on the host system. @@joshuavincent7884
Clem, you are... resolute. Blogging this tomorrow!
thanks! thats awesome!
the raspberry itself
Delicious 😋
hi raspberry
@@magmadiverr LEAVE ME ALONE
**Sus Boykisser fan art**
AAAHHHHH
**Even sussier Boykisser fan art**
Akira
akira
ₐₖᵢᵣₐ
AAAAHHHHHH
I can't wait to run Stable Diffusion on my pi pico!
Might take until next video of mine....😂
With an XOR-net, you can do a surprising amount of stuff.
It's funny you used the ZX81 as an example, as that machine actually used the Z80 processor to generate the display without a dedicated display chip. It had a shift register and some logic chips, but when it was time to generate the frame, the Z80 would be fed NOP instructions, so it would just increment the value on its address bus and that, plus the 74 series logic would clock out the pixels. It's actually a very cool hack!
the zx81 is a fascinating machine in its simplicity, the one I showed was heavily moded back inthe day by the previous owner, i hope to one day get it working and find out what al lthese mods did.
Love it! Can't wait to see the board working!
Ditto, hope it works first try! :)
@@JeffGeerlingwe see, but i have high hopes😂
Me too! I really hope it works, it's just what I need for a little x86 openwrt router I'm working on (but then the pcie card would have to be redesigned to be ultra low profile of course).
Damn! Good to see you here 😂@@JeffGeerling
Amazing Video Clen.. loved it.. very informative 😃😃
You have passion for your projects and you explain complex topics in an amusing manner.. Loved it.
Eagerly waiting for the video part-2 👍👍
thanks!
I love your videos and projects. Thank you!
You are welcome!
I recommend you put a pair of psrams and a mux on the PCIe board. That way you can port the Pimoroni PicoVision to this PCI system and have a frame buffer. In their system, the GPU Pico has no flash and is programmed via JTAG from the CPU Pico.
Interesting approach😮
I can actually see real life productive use for the PCIe variant:
Open Source test GPU
So far the only alternative was stashing old graphics cards for that. And that has its own set of issues.
yep, just imagine chucking one into any system to have an indeoendent debugging or status output to not hamper the actual gpu performance.or just use it to see if a mobo is working as intended
It can be Integrated with my FPGA board for VIdeo handling. I am amazed how can dual core micro with 256k ram is doing such a wonderful stuff.
Its incredinle what the little rp2040 can do with a bit of creative code!
The Amiga 1000 did also have 256kB ram in the first variant :) So its not that amazing, but still amazing.
This looks like an interesting project. Hope you get the board soon so we can see the result.
It has arrived on the meantime, but waits for assembly...😂
@@MAYERMAKES Great!
Awesome! Thanks for sharing 😊
thanks!
There is a significant difference between a high performance 3d accelerator and a display adapter. A lot of arm socs do have gpus embedded. I have old Odriod C1+s.
this was great !
the funniest part is just yesterday, i hijacked the DDC of my pc's VGA port (while using displayport for video) and then connected a minature display using linux to extend my monitor (although in black and white dither, at 128x64...)
ok but isn't like that even too much bandwidth for something that is supposed to only control monitor functions?
So this is how an open source gpu looks!
There can be many looks but this one is mine😂
This is knowledge I will never need, on a video that was randomly recommended to me that still managed to grab my attention.
10/10
wait for it , this video is like that piece of wood your dad never threw away because he will eventually need it.
@@MAYERMAKES The fact is: My father did exactly this and has the basement full of wood and 'things'. Much to my wife's dismay, I inherited alot of this behavior... 😂
Me: that's the stupidest thing i've ever heard.
Also me after watching the video: that's the coolest thing i've ever seen.
😂😂😂😂
You have been foobarred my foo
Try to port Mesa OpenGL. If Pico have enough RAM for double buffer then it can generate 3D graphics using soft renderer in Mesa.
All you have to do is to encode OpenGL commands and send from host to "gpu" over I²C.
If i only would know nearly enough coding to do that...
There seems to be a market for this. Like an board with a spi chip with hdmi output and a 1 mb framebuffer for less than 5 euro.
Less than 5 will be very hard with propper parts and not total garbage
Tiny tapeout has a clever solution where they put several designs into one chip. This way you can possibly have a bigger market.
This would be awesome to start a new hardware stream specifically for pi and soc pi based computers..
Yep thats the point
Brilliant... Thank you.
you are welcome!
I have an other idea of achieving the goal of drawing picture to the HDMI LCD: there is RGB on ESP32S3, we can make it with a RGB-to-HDMI chip.
Cool. But can you do one for regular PCI and even ISA for use in old retro computers?
This actually might be a useful project if you can make it work with a headless server which only needs terminal output.
Yep thats a good application
I love my Pico's. It became MMBasic for everything and I learn a lot.
Great little boards!
I attached a Pico to the CD-ROM bus cable in my sega mega cd so I could try to figure out how that bus works whilst it's running a game with the intention of one day making an optical drive emulator for that system.. So far all I've managed to do is make myself realise I still have a sh*t load more learning to do.😅
Story of my life😂, the realization happens on almost every project i start
@Element14Presents
Thanks for this excellent video.
And YES!!! You should most definitively make more "PC Hardware Hacking" videos !!! Please...please please :)
Best regards-
thank you!
Bloody hell. That's like a cliffhanger worthy of the latest HBO series!
kinda, it was unplanned but a happy little accident.
To be clear: I gave you an instant thumb-up on this video for your Arrow-on-a-Stick! 😁
that arrow is btw. the first thing I ever 3d designed myself. was doen in tinkercad and that is still the original print from 2015.
Some TVs/displays don't even have their SoC talking over I2C, they just have the HDMI linked to an EEPROM.
That eeprom talks on the i2c bus
me, who just so happened to need a custom GPU:
8:30 “Is it a GPU?”
Well, at least a GIU - ‘Graphics Interface Unit”, not really processing so much… I guess it is _translating_ its input to something viewable on a screen, like bitmaps of ASCII character set, and timing-generating the expected compound signal?
Some load taken off the tiny ESP32 impersonating a dedicated CPU… 🤓
yes as long as it just executes pre determined commands its more an oldschool graphics adapter like a GIU..the things that would make it a gpu would be if it can on its own determine these commands... but a fitting way of doing graphics....it will be two microcontrollers cosplaying as a single board computer..like the two kids in a trenchcoat.
@@MAYERMAKES Absolutely… I clearly admit that towards the end of the video, this was about much more than displaying characters.
I know, I shouldn’t comment too early, but.. but…🙈😅
@@musiqteeevery comment count, why not coment twice one during watchign it and one afterwards!
@@MAYERMAKES 😂 Well, this is the third comment…
I’m inspired, since I have both boards around. Plan is to have the ESP32 run a tiny Linux with SSH. Add a big red “emergency button”, when pressed, it will terminate and shutdown the homelab servers.
It’s just so tedious to SSH into them when/if there’s a thunderstorm coming (during summer)… And yes, in time, automated from weather data… 😅👍
I have a couple of Coral TPUs and a couple Picos, will tinker at some point.
😮😮
Looking at the AdaFruit drawing libraries it should be possible to swap out the drawing code with communication to I2C then at the other end decode and send that to HDMI
Yes a fork of the lib /a new mode would be ideal
Thanks for answering my long time question how windows know the resolution, and mess up display when changing monitor !
😂
awesome
Would be great if you could make one that could be used with Mame to output 240p RGBS over VGA port
Thats a lot easier than one might expect, vga can be done on an esp32, no need for the picos pio that are crucial for dvi
@@MAYERMAKES would be great for the retro gaming/arcade community if we could use a pi instead of 10 year old Radeon cards to create emulation machines that can output to arcade monitors or standard def crt
@@markc871sounds like a project
... Honestly I could see the utility of a little X1 card like that, for driving an in-case micro-display, for instance. Have it read CPU temps or whatever. the idea of making a PCIE device in KiCad never occured to me... that's above my knowledge grade.
yes the idea occured to me thinking of development and benchmark tasks, where the little psudo-gpu board would output logging data, FPS temps or whatever you need to know during operation without influencing other components of the system.
using a pico as the graphics chip in a retro computer would be cool, like what if someone made something like ARMSID but for the Vic-II chip in C64s and gave native hdmi out too.
oh yes that is certainly a fitting application for this!
Awesome!
thanks!
Why did you usedthe 12V power from the PCIe slot when it also provides 3.3V?
The 3v3 rail does not provide enough current, and i need (,optional )5v as well, so it is a safe bet. I would not rely on the 3v3 on pcie to power anything above 100mA
Very interesting content. I have another idea as make special (linux)image which will allow to connect arm with gpu through tyceC. (Redmi9 and pi4 my victims)
Interesting idea, 😮
Hmm... would be cool do some kind of old school (GPU like stuff)... 1 of the processor could emulate the hardware for example of the Amiga with fixed resolution (320*200 NTSC or 320*256 PAL) with really optimized assembler (128 colors, you might getaway with 32k emulator and the rest is a framebuffer=100k) (Blitter, and copper and other stuff) and then with the leftover (100k?) the other processor runs a ported AROS Amiga libraries that has some stuff for computing and drawing to the "buffer" with modern addons ofc (basic 3D stuff Voodoo)...
Then the "computer" side which could also be ESP32 kind of thing could run a mini miniGL sort of thing.
Or just make the smallest rasterizer with 1 processor and then make a custom fit "GPU" with the other processor with all the RAM left over... then do some sort of graphics library that would fit... and make sense
But the "dream" would be make use of both processors and make it so if connect 2 ESP32's (Pico Pi variants) it does everything just a bit faster... and you could just "SLI" with more Pico Pi's... but that would be a serious undertaking... fun... and maybe if done right, it could be the bomb... because the basic concept then could be transferred to a sellable product... getting a "daughterboard" GPU for you computer and then add just mass produced (+2 Ghz) cheapish arms processors cards get your GPU (with the exact driver) a bit faster...
I do wonder what lets say a 16 cheap ARM SoCS (quad core with cheap GPU cores) connected the best way possible and shared lets say 6 GB fast RAM (but cheap again)... and with a controller (also a ARM processor) could do with a driver that built for the purpose... lets say it only does 1080p and this driver knows what it has and how to achieve it best way possible. I guess you could do some "SLI" thing or PowerVR might be even better... 64 general processors could make the driver updates fun (someone will in the end will do every trick possible and lets say the cheapish arm SoCS has 2 GPU cores... so 32 GPU cores... so they have to deal with a 60*33 pixel square in the best case...
I think that would be really cheap very upgradeable "GPU" and do at least as good as lets say a 10 year old GPU... with some tricks (because of all the general purpose CPU's) it could probably be a bit futureproof...
The GPU i'm sitting on atm is pretty much 10 years old... and it's pretty much fixed in stone it seems... but a card like this "dream" card would be software upgradable much more then this... and people would love to tinker with it... all opensource...
Maybe get manufacturer to get perfect "ARM" spec, maybe cheapish GPU design SoC that has more GPU power and less general purpose CPU... like dual CPU and quad GPU if that would make it better..
But I guess it all has to to with connectivity (fastest possible way every SoC has access to RAM) and then some software wizardry (but if that software wizardry is opensource, it will find "life" and get really cool I think... and if it's done right the possibility is endless...
We really need "GPU's" today that are not that pricey but still can run stuff... and has upgradeability... I think... a good framework for "PowerVR"/SLI kind of stuff that works...
Then the fun can begin :-)
It does have it's own built-in GPU. It's not like you're turning it into a GPU but rather you're using it's already existing GPU.
@element14, have been wondering who i could ask this question for a while ..
Pico-schmico!
Can i take my Ryzen APU / mini-pc and use its nvme socket to connect it to the PCI-E of a PC as a device or to another Ryzen APU as a peer (or device etc.)
?
Well, the answer to that is "no, I can't", so can I ask "can you?" instead
At the rate RP2040 PIO based projects are advancing, soon we'll see whole clusters of them doing real-time ray tracing on the PIO pins somehow /s
"Get into the chopper!"
Thx for the content, though. Austrian english is always a drag, I know
*get to the choppah
@@MAYERMAKES i'm austrian 😎
😅@@sintaklaas6427
Given you intense experience with boards, I have 2 RTX A4000, that have connectors for nVlink but it is officially unsupported, would you know a way to make it 'supported' given the already existing physical connections, or would it work out of the box?
sadly I can't help with that, since its physically present it might just need adifferent firmware flashed, but I doubt you can actually get that. Very often featured are designed into the products that never get implemented just to make sure they are there in case they need them after all.
6:33 those cables send data, not "video signals." a VGA cable does that, but DVI and on it's all digital data.. no analogue at all.
I sometimes make simplifications for the sake of simplicity, but of course youare correct.
7:12 😂
😶🌫
Don't know much about hacking electronics, but is it possible to make a networked cluster of these Pico's to do real-time 3D software rendering?
No
@@altosack Cool, thanks for answering.
I made a 3D render engine for the pico! It is a raytracer.
Awesome!
we need to see a followup , where is the pico pci card? :)
we will get there eventually..need to do some other episodes inbetween
Hello, I hae a question. On the pcie card are you just using the power pins to get power and using the usb on the pico to connect to the pc internal USB for the data?
No. as explained in the video I use the SMbus present on the pcie conenctor for communication as wel las the power provided by the pcie connector. the Pico is deirectly talking on the SMbus with the host system exactly i nthe same way any other addon card would do.
@@MAYERMAKES thank you and sorry I misunderstood that part.
Could a version with multiple Picos work?
Could this be done with an arduino?
You mean to have multiple dvi outputs?yes. For dvi you need an rp2040/pico but composite and vga can be done with arduinos or esp32
anyway to add 16mb of ram to it? asrock has a m2 gpu for servers, which would be pretty handy if cheap. M2_VGA is what asrock rack calls it
adding is not as hard as utilizing it.
@@MAYERMAKES You think I meant adding the ram for decoration on the board or what?
@@hectororestes2752I mean writing the code to utilize that ram is not a small nor easy task
What about PCI DMA? Is it possible with Raspberry Pi Pico?
Does not look like it, but maybe dme genius figures that out😂
What is the cryptic 14th Element. Is it Silicon or Silicone?
Silicon the stuff electronic dreams are made of!
If you are able to run w-okada voice-changer on a raspberry pi (no matter what model) you would drive me crazy. I remembered why this program depends on the GPU XD.
you look like young Steve Jobs
😅😅😅wtf
Pls give us the results, really want to know the result of PCI eith this board
will be in a future video, so you better subscribe !
Build a gpu mining rig out of them.
Mining is so last season...AI is thr new hot stuff😂
you should take the worlds most powerfull microcontroller or anything like that to make it an actual GPU so it can do 3D rendering
you would wonder how little power it actually takes to render a low res 3d scene.
@@clemensmayer9171 how much power do you need
@@TheGamingDinosaurRobloxonly one way to find out....
Well we know the Pico can run DOOM, and that's pseudo-3D, so...
@@Stabby666 ok and talking a esp32 running at 240MHZ
How much would you charge ro make a half hwifhr pico gpu? I am a disabled IT student.f
I'm not doing any comissions atm, but you will likely find someone who does on the element14community and you can use the free base files I provided to get started!
Check out the extended code videos! Link in description!😊
that must be the reason why you're wearing glasses I guess
probably
why is everything i think of now being turned into youtube videos?! so creepy/cool
we are rent free living in your miiiiiiiiind
They actually did that before, haven't they?
Imagine using this on an se/30 macintosh 🤔🤓
maybe an fpga into gpu on a pci-e connector. or a gpu on soc fpga using it on the hps operating system linux. or make a gpu as mister core and use it on hps. yes opengl shader gpu with cores. not only the output video signal. well usb-c video output.
someone has to try running doom on one of these.
Doom runs perfectly on a pico, we had a setup where people could play it at electronika 2022;
Instead of a PI pico and some library you can also consider a FTDI EVE FT8XX series:
"FTDI Chip has ... with Embedded Video Engine (EVE) technology. The EVE family combines display, audio and touch into a single chip, providing an optimized solution with high quality graphics that output to 1/16th pixel resolution for WVGA, VGA, SVGA (FT81x), WQVGA and QVGA (FT80x) TFT display panels."
It has everything on board including a frame buffer and extensive graphics operations and anti-aliased text output.
I watched this, but I'm too ignorant of all the elements at play
So I don't understand....
Thats no problem , just start googling snything new and the puzzle will start to make sense
cool but... can it run crysis?
if the host system can run crysis then yes..and this one could outptu the fps counter for example...
'ice cross sea' .. what is it? ... is this how you spelling I2C? it gets me confused every time you pronounce it..
"I squared C "------thats how I hear i pronounced on the web
@@MAYERMAKES gahh.. i was always read it as I TOO SEE..
the notation with square was hardly appears in docs anywhere.. that explains why i get confused when i hear 'squared' instead of 'two'
But can it play Doom?
actually yes, Doom runs very well on the pico
But can you play Crysis with it?
*but does it run crysis
@@MAYERMAKES
Google Translate, i'm from Germany.
@@Alchemy.C64-AMIGA.DemoScener der meme Text bleibt auch auf deutsch gleich. aber leider nein, dafür läuft Doom.
Is this a pigeon?
well yes but actually no
According to Nvidia, a GPU isnt a GPU unless it does 4D rendering.
according to me a brand name should have a vowel where it is supposed to be for the ease of pronounciation for most customers, but that didn´t stop them so why would I care about their definition of gpu?
@@MAYERMAKES Envidia. Also I was making a joke. Nvidia are such desparate tryhards.
Can you turn a pico into a 4090?
Not yet...😂😂😂
Hey there, I am building AI Hardware would love to connect and collaborate
But can it play Doom 🤔
Yes it can.
You know you have an acid trap on that pseudo board right?
In these days acid traps are not crucial anymore. My main concern wad to get the files ready asap so cosmetivs were not my main concern.
Acid traps are just big a big lye propaganda.
why not actually put the part two? on TH-cam where you put what ended up only being part one part one? I like this project, but am not search all over different platforms for something than never published? I sub-scribed your channel here? and would expect any up dates, follow-ups yo at least have something published here, even only the content is somewhere else, if if you want go have a look? 🙂rant over, can we have the part two here to, please?
No need to rant, I'll put the outcome in a video on here anyway. Not the next one but you will eventually see it on this channel.
On the socials i csn make spontaneuos posts so you might see it there sooner.😊
@@MAYERMAKES not rant just that project time scales slide some times, and new things comes along, and thing never second part? 🙂( if you getting runing good, even stick big box PC like easter egg, in a un used slot?
Can you send pictures?
😳at least take me out to dinner first...
You see no difference? Clean your glasses then 🤪
I actually havent cleaned them in a year. .and wont
But does it run DOOM?
you are the 10th perosn to ask..and yes it does of course
But can it run crysis? 😂
the amount of bleeding edge cringe on this video from such a once great channel is disappointing 👀
Just dont post the video if your content isnt complete...
Now go back and and watch the video again because you clearly did not pay enough attention. The project is complete. the pcie board is an additional extra i did last minute as a bonus.
just like you more then likely;y see nothing different between men and women
Excellent!
.. Now do VGA.
vga has already been done very well by bitluni!