<DC-IRC> <Tonymac32> what is a Pi 4? Never saw one
<DC-IRC> <Tonymac32> 🙂
<DC-IRC> <MicroLinux (Salva)> Yeah, I can confirm
<DC-IRC> <MicroLinux (Salva)> We have mother fucking gamma control on rk3399
<DC-IRC> <MicroLinux (Salva)> Finally!
<DC-IRC> <MicroLinux (Salva)> From kernel 6.1
<DC-IRC> <clever> the HVS on the rpi also has some crude gamma control
<DC-IRC> <MicroLinux (Salva)> Last time I tried it didn't
<DC-IRC> <clever> for the pi0-pi3 lineup, its just a 256 entry LUT, the real brightness goes in, and the adjusted brightness comes out
<DC-IRC> <clever> at the hardware level, it does exist
<DC-IRC> <clever> driver level, is another question entirely
<DC-IRC> <clever> the pi4 still has a 256 entry LUT, but supports 10bit color, so it has to interpolate to fill in the gaps
<DC-IRC> <MicroLinux (Salva)> Yes pi3 has it
<DC-IRC> <MicroLinux (Salva)> Pi3 was the only sbc with hw gamma control until rk3399 on my side
<DC-IRC> <MicroLinux (Salva)> And bc I used mesa back then
<DC-IRC> <MicroLinux (Salva)> And bc I used mesa back then, no one used mesa on 2018 on rpi3 for some reason, way better stuff
<DC-IRC> <MicroLinux (Salva)> Relatively speaking of course
<DC-IRC> <MicroLinux (Salva)> It was super fun back then bc no other sbc had mesa drivers back then, no mesa,no fun.
<DC-IRC> <clever> ive done 3d on an rpi, baremetal
<DC-IRC> <MicroLinux (Salva)> Noicee
<DC-IRC> <MicroLinux (Salva)> You are the open source firmware dev, aren't you?
<DC-IRC> <clever> yeah
<DC-IRC> <MicroLinux (Salva)> Nicee
<DC-IRC> <clever> in this demo, the spinning triangle is a single polygon rendered on the 3d core
<DC-IRC> <clever> the bouncing raspberry is a 2d sprite
<DC-IRC> <clever> and the text is another 2d sprite
<DC-IRC> <clever> the HVS then composites the 3 layers together
<DC-IRC> <MicroLinux (Salva)> That's super cool.
<DC-IRC> <MicroLinux (Salva)> Happy pi day for you ( and you only) 😁
<DC-IRC> <clever> the text buffer in that example is just a dumb buffer, so it has tearing during a scroll
<DC-IRC> <clever> the raspberry is a static image, with the XY changing on vsync
<DC-IRC> <clever> the 3d render is double-buffered, and doing a pageflip on vsync
<DC-IRC> <clever> but i made a mistake in the double-buffering
<DC-IRC> <clever> it schedules a page-flip, but doesnt wait for vsync
<DC-IRC> <clever> then draws into the "old" buffer, that is still on-screen
<DC-IRC> <clever> if you look very closely, you can see a tear near the top of the triangle, as it passes the top of the screen
<DC-IRC> <MicroLinux (Salva)> Mmm, I can barely note it. But gotcha hahah
<DC-IRC> <clever> ```
<DC-IRC> <clever> while (true) {
<DC-IRC> <clever> hvs_wait_vsync(hvs_channel);
<DC-IRC> <clever> cmd_v3d(0, NULL);
<DC-IRC> <clever> hvs_update_dlist(hvs_channel);
<DC-IRC> <clever> }
<DC-IRC> <clever> ```
<DC-IRC> <clever> though looking at the latest source, it shouldnt be doing that, something to look into when i revisit it