vramgaze.pl: visualize and explore your AMD GPU's VRAM

on blog at

Download: vramgaze-gtk3.pl, vramgaze.pl (gtk2).

Deps for Debian: sudo apt install libglib-perl libgtk3-perl libcairo-perl libpango-perl pdl alsa-utils binutils testdisk

I was having an issue with mouse cursor icon getting corrupted but only on the 2nd monitor in a dual monitor system. I wanted to look at the VRAM representation of the icon. It turns out looking at GPU RAM is a lot harder than system RAM. And basically only modern amdgpu based systems allow it and that through /sys/kernel/debug/dri/*/amdgpu_vram. The region meta-data is from amdgpu_vram_mm in the same debugfs directory. It seems like doing this kind of thing is flat out impossible on nvidia. Any attempt at direct PCIe access or using BAR windows (which are static in position and small) I could not get to work. If anyone out there knows how to read raw vram from nvidia cards I'd love to hear about it. Lucky for me my system was using an AMD RX 580 8GB on amdgpu.

After a day or two of vibe coding, manual fixing, and passing back and forth between claude, gemini, and kimi-k2.5 and feeding in memgaze.pl examples I ended up with a fairly usable gtk2 vramgaze.pl. I did everything in gtk2 first because that's where I'm comfortable but because this seemed like something others might use I did port to Gtk3 too. They're pretty much the same but Gtk3 required some bending over backwards for cairo use.

I didn't actually find it useful for the cursor problem but it's a lot of fun watching VRAM get allocated and get fragmented under pressure and the like. The actual data in VRAM, which I expected to be full of bit maps (like framebuffers) and the like instead is all... encoded. I haven't seen a single bit of bitmap looking thing at all. It still makes for fun electronic music when interpreted as 8 bit unsigned wav audio.

*edit, later*: I actually did find where firefox was storing it's images in the GPU VRAM. Here you can see youtube thumbnails.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Silicate Jelly

on blog at (photoblog post, non-rss feed)
Silicate Jelly

An acidic sodium silicate gel made with H2SO4 for growing good seed crystals of triglycine sulfate.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


misc: connmapperl update, feeed.pl major performance fix, new .c libre.fm scrobbler for audacious 2, festival 1.96 on modern debian, pyroelectric crystal updates

on blog at

I still assume I'm the only user of the software "I" make (vibecode) but here's a set of updates.

connmapperl - I finally updated the release .tar.gz and docs to the version I've been using which shows all connection colors at a specific GPS coordinate even if they're stacked on top of each other; triggered on mouse-over or with a key 'g' based toggle. connmapperl.tar.gz (90MB)

feeed.pl page - "I" finally fixed the UI blocking freezes that happened during updating many hundreds of feeds at once by making feeed.pl (160KB) multi-threaded.

libre.fm music scrobbler - "I" vibe coded a new audacious 2.x plugin for music scrobbling to libre.fm last week. Mostly because I couldn't figure out why the ancient one wasn't working. It wasn't working because the libre.fm dude put it behind cloudflare who's IPs I have all blocked. But whatever, now I have the easily debugged and working, librefm-scrobbler.c.

festival 1.96 on modern distros - I struggled to get Festival 1.96 (an ancient codebase) working on modern linuxes (anything past ~2010) for more than a decade. But finally with the help of some LLM AIs "I" figured it out. At the end of the LLM debug session I had the LLM AI generate a bash script to automate the process of downloading festival 1.96 files, the nitech voices I mirrored on my public webserver (this one), the unpacking, moving, and compiling of them to allow the production of a Festival 1.96 + Nitech HTS voices all-in-one .deb file for Debian 12 and 13. I've tested it on a handful of machines and it works reliably. It'll probably work on other Debian distros and Debian derived distros. This is a big deal for me because it was the main feature holding me back from using a modern distro as my main.

In non-software news I've been back the project to grow pyroelectric crystals for use in particle acceleration. I've built simple PID module + temp probe water bath that can maintain it stably enough. But the big thing that re-ignited my interest was a new way of growing large seed crystals with easily identifiable crystallographic faces *without* temperature control. The trick is to grow the crystals within a gel.

Growing crystals within a gel apparently provides nucleation sites that have almost zero currents, not even significant diffusion, and the crystal seeds that grow and form within the gel express their innate crystallagraphic shapes rather than dendritic or twinned or messy crystals. For triglycine sulfate which is strongly acidic a normal basic-only gelatins doesn't work but sodium metasilicate "water glass" gels do work. The process is to grow and set the gel, then pour the TGS solution on top and let it seep down into the gel where it forms the proper seed crystals. I imagine it'll be a battle to preven crystallization from the hydrophobic creep up the sides of the gel container above the gel but I guess as long as I keep the solution topped off this doesn't matter too much.

For this project I've been learning to scribe and cut glass. And boy am I bad at it. Most of the time there's some nubbin or projection left and usually a crack within the wanted glass. I guess if you're a flameworker and glassblowing these things just kind of even out but if you're using the glass as is... it's a lot of rotary tool work and glass dust.

# triglycine sulfate solution
30.6 g Glycine (0.408 mol 3 parts)
29.7 mL Battery H2SO4 (SG 1.265, 35.5%) (0.136 mol 1 part)
0.95 g L-alanine (0.0107 mol 7 mol% of TGS)
84.5 mL Distilled water

# Sodium silicate gel
12.2g Sodium silicate solution (41%)
42.8 mL Distilled water
Battery H2SO4 (SG 1.265, 35.5%) pre-diluted 1:10 titrated to pH 3.0-3.5

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?


Condition Alert What Kind Of Alert

on blog at (photoblog post, non-rss feed)
Condition Alert What Kind Of Alert

Reed alert!

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?