00:20fdobridge: <phomes_> is it fine to attach a 110mb renderdoc trace to an issue in gitlab?
01:32fdobridge: <gfxstrand> And... Merged! :triangle_nvk:
01:32fdobridge: <gfxstrand> Can compress it?
01:33fdobridge: <gfxstrand> Can you compress it? (edited)
02:04babyfaceold: I report success in my work, finally looked, we talked, you take indexing coefficients, every entry in compressed format, has in the adder a distance bookkeeping element, that is generated based of a formula with arbitrary distance and as base index at compile time to at runtime to eliminate an entry as subtract from all the bank permutes when filling in a runtime subindex to that
02:04babyfaceold: bookkeeping base index, the coeffs you yourself generate, we design a modern LBA addressing software layer and have memory in amounts of utter excesss. I add compiler and steady states too as the POC. That's the final gear of my supercomputer work, so I reported success already, amazing.
02:48babyfaceold: that filtering module of super register file can also serve as a method for branching, but branching can as all the superexecution engine be implemented in operand ways too, the memory is independent of superexecution engine that is, it's execution engine agnostic as we speak.
03:45fdobridge: <airlied> @gfxstrand nice work on merge!
03:46fdobridge: <gfxstrand> :triangle_nvk:
03:47fdobridge: <gfxstrand> Took long enough. Even once all the Meson stuff got sorted, it took two tries because the container rebuilds take hours and CI timed out. All don't now, though.
04:45fdobridge: <gfxstrand> @airlied Just saw my "Oops! Too many fences" bug on Ampere. 😭
04:49fdobridge: <gfxstrand> And... saw it again but only one thread is down for now. We'll see if this run can finish.
04:52fdobridge: <gfxstrand> I'll file a proper bug report for dakr and re-apply my `size * 8` hack in the morning.
06:01fdobridge: <samantas5855> hello wonderful people
06:01fdobridge: <samantas5855> how's nvk going
06:01fdobridge: <samantas5855> being sometimes since I checked into it
06:02fdobridge: <samantas5855> been some time since I checked into it (edited)
06:27fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> You mean NAK? What will happen with SM generations that don't support NAK? Will they fall back to codegen?
06:30fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> I noticed a new commit that checks if 3D class is Turing A or greater and basically does `NVK_USE_NAK=all` automatically
06:32fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> I'll really have to get the RenderDoc trace now
09:33AndrewR: well, congratulations on merging NAK, but where I can find meson 1.3.0 ? pip3 only sets 1.2.3 ...
09:34DodoGTA: AndrewR: It's only available as a RC right now (which is marked as a pre-release on GitHub)
09:35DodoGTA: https://pypi.org/project/meson/1.3.0rc3/
09:42fdobridge: <esdrastarsis> oh, they released rc3, nice
10:25AndrewR: Problem encountered: NAK requires Rust 1.73.0
10:25karolherbst: how is that a problem?
10:26AndrewR: karolherbst, ...
10:26karolherbst: no, seriously
10:26karolherbst: it's available through rustup
10:26karolherbst: and distributions will figure it out
10:26AndrewR: karolherbst, I hope rustup exist for i686
10:26karolherbst: it does afaik
10:26karolherbst: let me check
10:26AndrewR: karolherbst, not everyone runs Fedora current
10:26karolherbst: yeah, that's why they should use rustup
10:27karolherbst: available i686 targets: i686-linux-android i686-pc-windows-gnu i686-pc-windows-msvc i686-unknown-freebsd i686-unknown-linux-gnu i686-unknown-linux-musl
10:28karolherbst: I kinda see the point of distributions having work to do, but that won't be a problem until next year
10:28karolherbst: and only for those updating aggreesively
10:28karolherbst: developers/users should use rustup anyway to compile from git
10:28fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> Arch Linux does have up-to-date Rust though (which allows me to compile NAK) :ferris:
10:28karolherbst: it's not worth the pain using distribution packaged rust
10:28karolherbst: as it's constantly causing issues
10:29fdobridge: <karolherbst🐧🦀> @asdqueerfromeu hope you'll never run into bindgen related problems, but yeah...
10:30fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> I only needed to delete the build directory to compile 32-bit NAK without issues though
10:31fdobridge: <karolherbst🐧🦀> I have two build directories and some magic
10:31fdobridge: <karolherbst🐧🦀> meson cross files are like that
10:32AndrewR: ..it all nice for Arch, but I still use Slackware, for 15.0 rustup exist, but in sbo. so .... wait a bit, may be it will work
10:32karolherbst: I hope it does
10:33karolherbst: rustup is kinda cool as it also allows you to set specific rust versions per directory, so you can easily deal with things needing different versions of rust
10:33karolherbst: like e.g. the kernel is more strict about it
10:34AndrewR: new python, how great
10:52fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> `qrenderdoc: ../mesa/src/nouveau/vulkan/nvk_graphics_pipeline.c:184: emit_pipeline_ct_write_state: Assertion 'cb->attachment_count == att_count' failed.` :cursedgears:
11:05fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> :ferris:
11:05fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> https://cdn.discordapp.com/attachments/1034184951790305330/1173941730102476810/Screenshot_20231114_130417.png?ex=6565c96f&is=6553546f&hm=fdf997285fc254adc3b93364c8cfc90840aef1ebe859513d2143884bd977d4c9&
11:07fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> I'm not sure if this is a correct fix though :triangle_nvk:
11:07fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> https://cdn.discordapp.com/attachments/1034184951790305330/1173942200795668502/message.diff?ex=6565c9df&is=655354df&hm=e0dcca67963873ee3290938274cbb4b8bdcb19893e18e34bd4d4bc3ece64d6b9&
11:08AndrewR: well, at least build started ....
11:12fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> @mhenning Here's a RenderDoc trace that you can mess around with: https://drive.google.com/file/d/1UIYCGnawel88wnAdPTo6TEB0vkPpPhAN/view
11:15AndrewR: karolherbst, but on kepler I need also !26114 ?
11:16karolherbst: I don't think it's strictly needed
11:16karolherbst: codegen is still wired up, it's just going to be a bit slower
11:17karolherbst: but I think this MR needs a rebase :D
11:19karolherbst: AndrewR: also.. I think that's just Maxwell for now...
11:31fdobridge: <orowith2os> karolherbst: with other Rust tools in Mesa now also relying on Rust and pushing their own desires for versioning, would you also use those as reasoning for pushing the required Rust version for rusticl?
11:34AndrewR: also, even on kernel 6.6+ I still see GL_NVX_gpu_memory_info Total available memory: 1050617 MB It can't be true ...
11:37fdobridge: <karolherbst🐧🦀> I probably should
11:53AndrewR: https://paste.pics/adb3a27fea46485b1458a20d2105b387
11:53karolherbst: well.. it runs at least...
11:54AndrewR: karolherbst, so, NAK does something (?) but just as regular nvk it just ..tiled?
11:54karolherbst: nah.. I doubt NAK does anything here and you probably still use codegen
11:54karolherbst: did it work before?
11:54AndrewR: karolherbst, I only recently compiled 6.6 kernel so o idea
11:54karolherbst: I see..
11:55karolherbst: did it work before with an older kernel?
11:55AndrewR: karolherbst, isn't 6.6 requrement for nouveau vulkan?
11:55karolherbst: mhhh... right.. the code for using the old UAPI got removed
12:00fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> This is the most old-school NVK setup I've seen
12:47fdobridge: <mohamexiety> Huh
12:47fdobridge: <mohamexiety> I installed the copr with linux-firmware but
12:47fdobridge: <mohamexiety>
12:47fdobridge: <mohamexiety> `[ 3.666933] nouveau 0000:01:00.0: gsp: firmware "nvidia/ga102/gsp/gsp-535.113.01.bin" unavailable`
12:48fdobridge: <marysaka> is the file present in the firmware directory?
12:48fdobridge: <marysaka> and if yes did you regenerate initramfs
12:48fdobridge: <mohamexiety> I did it before building and installing the kernel too \:o
12:48fdobridge: <mohamexiety> Will check, sec
12:50fdobridge: <mohamexiety> `usr/lib/firmware/nvidia/ga102/gsp`, right?
12:50fdobridge: <mohamexiety> yeah it's empty..
12:52fdobridge: <mohamexiety> actually all gsp files are empty for other chips too
12:52fdobridge: <mohamexiety> this is odd
12:53fdobridge: <marysaka> hmm
12:54fdobridge: <mohamexiety> maybe I messed up the copr? it's `linux-firmware-20231030-1.fc39.gsp.noarch`, right?
12:55fdobridge: <mohamexiety> tried reinstalling just now and the files are all empty too
12:56fdobridge: <marysaka> I'm not using the copr package so far 😅
12:57fdobridge: <mohamexiety> yeah that's fine
13:07fdobridge: <airlied> you need the nvidia rpm
13:07fdobridge: <airlied> we split the firmware rpms
13:07fdobridge: <airlied> nvidia-gpu-firmware
13:11fdobridge: <mohamexiety> oh I see
13:11fdobridge: <mohamexiety> from the copr, right? I tried getting it but I got a 404 on all mirrors
13:11fdobridge: <mohamexiety> > Error: Error downloading packages:
13:11fdobridge: <mohamexiety> > nvidia-gpu-firmware-20230804-153.fc39.noarch: Cannot download, all mirrors were already tried without success
13:12fdobridge: <karolherbst🐧🦀> nah.. fedora
13:12fdobridge: <karolherbst🐧🦀> fedora upgrades the firmware stuff quite quickly
13:12fdobridge: <airlied> that looks like an older copr
13:13fdobridge: <karolherbst🐧🦀> ehh wait..
13:13fdobridge: <karolherbst🐧🦀> don't mind me, my local setup is scrwed up
13:13fdobridge: <airlied> https://download.copr.fedorainfracloud.org/results/airlied/nouveau-gsp/fedora-39-x86_64/06610281-linux-firmware/nvidia-gpu-firmware-20231030-1.fc39.gsp.noarch.rpm
13:13fdobridge: <mohamexiety> ```
13:13fdobridge: <mohamexiety> dnf --showduplicates list nvidia-gpu-firmware
13:13fdobridge: <mohamexiety> Fedora 39 - x86_64 - Updates 24 kB/s | 24 kB 00:00
13:13fdobridge: <mohamexiety> Fedora 39 - x86_64 - Updates 400 kB/s | 1.6 MB 00:04
13:13fdobridge: <mohamexiety> Last metadata expiration check: 0:00:03 ago on 2023-11-14T15:09:26 EET.
13:13fdobridge: <mohamexiety> Installed Packages
13:13fdobridge: <mohamexiety> nvidia-gpu-firmware.noarch 20231030-1.fc39 @updates
13:13fdobridge: <mohamexiety> Available Packages
13:13fdobridge: <mohamexiety> nvidia-gpu-firmware.noarch 20230804-153.fc39 copr:copr.fedorainfracloud.org:airlied:nouveau-gsp
13:13fdobridge: <mohamexiety> nvidia-gpu-firmware.noarch 20230919-1.fc39 fedora
13:13fdobridge: <mohamexiety> ```
13:13fdobridge: <mohamexiety> huh
13:15fdobridge: <mohamexiety> it worked, thanks! all files are there too. interesting it doesn't show up here though
13:16fdobridge: <mohamexiety> like, `linux-firmware` shows properly in `dnf list` here as 20231030 from the copr, but when I tried `nvidia-gpu-firmware` it only listed the older one
13:17fdobridge: <mohamexiety> anyways, it's fine now. thanks a lot and sorry for the confusion
14:46fdobridge: <gfxstrand> Yup. And we'll keep updating that as we back port NAK until we can eventually just delete codegen support from NVK.
14:48fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> Would implementing the `bufferDeviceAddressCaptureReplay` feature on NVK require a change in the kernel API? 😰
14:48fdobridge: <gfxstrand> I'm going to do more work today to refactor the codegen stuff to make it look more like NAK. So the hand-over is eventually easier.
14:50fdobridge: <gfxstrand> Nope! Just a little userspace work. The new kernel API already has everything we need. (it was impossible with the old API).
14:51fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> Right now RenderDoc falls back to Vulkan 1.2 if that feature isn't supported (which breaks DXVK v2.0+)
14:51fdobridge: <gfxstrand> Best way is to just `git clone https://GitHub.com/mesonbuild/meson`
14:53fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> I hacked up Arch's `meson` package to submit `meson-rust` in the AUR (which should also work)
14:54fdobridge: <gfxstrand> And for those worrying about requirements, I don't intend to bump them again. The only exception is that we may hard-require meson 1.4 in the r future if that gets us Cargo support.
14:55fdobridge: <gfxstrand> The rust meson folks are hoping to land all the new Rust toys for 1.4. what I'm doing right now to pull in creates is a travesty. 😅 It works not it's not good.
14:55fdobridge: <gfxstrand> The rust meson folks are hoping to land all the new Rust toys for 1.4. what I'm doing right now to pull in crates is a travesty. 😅 It works not it's not good. (edited)
14:56fdobridge: <karolherbst🐧🦀> yeah.. I suspect we'll have to bump meson a few times regularly
14:56fdobridge: <gfxstrand> Cross builds even work (that was entertaining to get fixed. 🙄)
14:56fdobridge: <karolherbst🐧🦀> funky
14:56fdobridge: <karolherbst🐧🦀> ohh right
14:56fdobridge: <karolherbst🐧🦀> that reminds me
14:57fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> I already compiled 32-bit NAK (as you can see from the GTA fog issues I posted)
14:57fdobridge: <karolherbst🐧🦀> @gfxstrand does this ring a bell? https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25775#note_2165979
14:57fdobridge: <karolherbst🐧🦀> ehh
14:57fdobridge: <karolherbst🐧🦀> not the comment
14:57fdobridge: <karolherbst🐧🦀> the MR itself
15:00fdobridge: <gfxstrand> AndrewR: Wow, that screenshot takes me back...
15:01fdobridge: <gfxstrand> Oh, yeah... 🥵
15:01fdobridge: <karolherbst🐧🦀> not really looking forward of adding a hack like that, so maybe just advising to meson 1.3 would be best here
15:01fdobridge: <karolherbst🐧🦀> *use
15:02fdobridge: <gfxstrand> With Meson 1.3, you can just use rust.proc_macro() to compile it and then Meson will just do the right thing.
15:02fdobridge: <karolherbst🐧🦀> I see...
15:03fdobridge: <gfxstrand> It's when you pull in crates that get used by your proc macro that things get extra spicy. 🌶️
15:03fdobridge: <karolherbst🐧🦀> I just wonder how stable that workaround is
15:03fdobridge: <karolherbst🐧🦀> but with meson 1.3 I'd plan to use the fancy new thing anyway
15:03fdobridge: <gfxstrand> Yeah
15:03fdobridge: <karolherbst🐧🦀> and I'd bump to 1.3 then anyway 😄
15:04fdobridge: <gfxstrand> TBH, I doubt it would be that controversial to require 1.3 for rusticl
15:04fdobridge: <karolherbst🐧🦀> yeah.. not sure.. some distros already build it
15:05fdobridge: <karolherbst🐧🦀> so I usually wait until 1 or 2 weeks after the release before I bump
15:05fdobridge: <karolherbst🐧🦀> but maybe using rc2 is already good enough 😄
15:05fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> rc1 is broken :ferris:
15:05fdobridge: <karolherbst🐧🦀> with NAK merged it's already kinda required
15:06fdobridge: <gfxstrand> 1.3 should be final in a week or two and the next Mesa branch isn't for a bit. Wait two weeks, bump the req, and no distro will notice for like a month
15:06fdobridge: <gfxstrand> If you're really worried, bump in January.
15:06fdobridge: <karolherbst🐧🦀> ohh yeah, that's fine then
15:06fdobridge: <karolherbst🐧🦀> then I can just reply with that
15:06fdobridge: <gfxstrand> Rc2 is as well. Mesa CI is pulling a SHA from yesterday.
15:07fdobridge: <gfxstrand> It's really hot
15:07fdobridge: <karolherbst🐧🦀> 😢
15:07fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> rc2 was the first release that could build NAK for me without weird issues or hacks
15:08fdobridge: <karolherbst🐧🦀> @gfxstrand I suspect you don't plan to bump the rust version anytime soon?
15:09fdobridge: <gfxstrand> Whatever were requiring now should be enough for a while. It's got `u32.div_round_up()` and `u32.next_multiple_of()` which are the big things.
15:09fdobridge: <karolherbst🐧🦀> I'm still on 1.66, but also don't see a good reason to bump all the way up to 1.73
15:09fdobridge: <karolherbst🐧🦀> I thing those are the only things relevant to me to make that bump 😄
15:10fdobridge: <karolherbst🐧🦀> ohh there is also `next_multiple of`
15:10fdobridge: <karolherbst🐧🦀> ahh yeah
15:10fdobridge: <karolherbst🐧🦀> you mentioned it
15:10fdobridge: <karolherbst🐧🦀> I have helper for both of those as they are kinda trivial to write
15:10fdobridge: <karolherbst🐧🦀> but a pain in generic code 😄
15:10fdobridge: <karolherbst🐧🦀> `let one = b / b;` moment
15:19fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> I made some kind of a list: https://discord.com/channels/1033216351990456371/1034796636834115584/1174005450707058718 :triangle_nvk:
15:30fdobridge: <mhenning> rc3 released last night - we might be able to switch CI to that
15:33fdobridge: <phomes_> I am running with rc3 now. 'pip install meson==1.3.0rc3' worked for me
15:33fdobridge: <gfxstrand> We'll probably switch CI once real 1.3 is out. It's also a bit of a pain because it causes a full container rebuild which takes forever.
15:34fdobridge: <mhenning> Fair enough
15:34fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> You should rebase the pipeline caching MR (because NAK broke it a bit)
15:40fdobridge: <gfxstrand> Don't rebase pipeline caching just yet. I'm going to rework all of nvk_shader.c today.
15:41fdobridge: <gfxstrand> @airlied My kernel survived my 2nd run last night but my GSP didn't. 😭
15:45fdobridge: <esdrastarsis> Moar perf? :happy_gears:
15:51fdobridge: <airlied> 😦 guess I have to do a lot more hammering on it, did it backtrace?
15:55fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> I already did (so I guess I'll have to deal with quite a bit of breakage later)
15:55fdobridge: <gfxstrand> No, just cleanliness this time. Pulling all of the codegen-specific stuff out of the NAK path and wrapping it up so it's out of the way.
16:01fdobridge: <esdrastarsis> Nice
16:05fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> Hopefully NVK will still retain the title of a Vulkan reference driver :triangle_nvk:
16:39fdobridge: <gfxstrand> @marysaka you probably want to rebase barycentrics on https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26181
16:43fdobridge: <marysaka> Will do that a bit later, should I split the NIR changes in another MR once I open stuffs against mesa main?
17:01fdobridge: <gfxstrand> Nah
17:01fdobridge: <gfxstrand> I can ack NIR changes
18:49fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> :triangle_nvk:
18:49fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> https://cdn.discordapp.com/attachments/1034184951790305330/1174058662831075468/Screenshot_20231114_204500.png?ex=65663656&is=6553c156&hm=f7136a5c2138e0200f54e0dacf4473345b8e58e87f98a1eb3fff9f2aab042939&
19:04fdobridge: <huntercz122> https://www.youtube.com/watch?v=npxsD7u52qk
19:04fdobridge: <huntercz122> :triangle_nvk:
19:07fdobridge: <karolherbst🐧🦀> noice
19:34fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> Here's also the Overwatch 2 trace if you're interested: https://drive.google.com/file/d/1pn_GUq-8GdxkzwQKWVRglaEY6CT7EUcb/view
19:40fdobridge: <karolherbst🐧🦀> I once again pinged on the sph thread I have :ferrisUpsideDown:
19:40fdobridge: <karolherbst🐧🦀> maybe I should write a bot to do that for me
19:42fdobridge: <karolherbst🐧🦀> maybe I offer to ignore mesh-shader/raytracing relevant bits for now :ferrisUpsideDown:
19:45fdobridge: <marysaka> I can probably figure out the mesh shader part without much issues tbh
19:46fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> Running Nvidium on nouveau would be an interesting goal
19:49fdobridge: <![NVK Whacker] Echo (she) 🇱🇹> Also when will Mesa have a proprietary NVIDIA driver emulation mode for GLSL so that Mesa drivers could run GLSL shaders made with NVIDIA drivers in mind? 🍩
19:56fdobridge: <karolherbst🐧🦀> yeah.. I just want to have their header files for the sph 😄
19:57fdobridge: <marysaka> That would be nice to have yeah
20:01fdobridge: <dadschoorse> looks like <https://gitlab.freedesktop.org/freedesktop/mr-label-maker> still needs an update for nak
20:20fdobridge: <gfxstrand> Yeah, it probably does
20:25fdobridge: <gfxstrand> https://gitlab.freedesktop.org/freedesktop/mr-label-maker/-/merge_requests/18
20:56fdobridge: <gfxstrand> dakr: Do we have a tracker issue for userptr? If so, can tag it in https://gitlab.freedesktop.org/mesa/mesa/-/issues/9633 ?
21:04fdobridge: <benjaminl> I'm looking at subgroup ops on SM50, and the SHFL instruction encoding I have seems to work in every case _except_ `SHFL.UP`
21:04fdobridge: <benjaminl> `SHFL.UP` is a nop
21:05fdobridge: <benjaminl> I've got to be missing something silly here... but probably won't have time to debug it for a while
21:24fdobridge: <benjaminl> okay, problem is definitely the `c` operand value...
21:26dakr: gfxstrand: Not that I'm aware of - can create one though. Just not yet sure when I'll get to it.
21:27olderfacebaby: Maybe infact you do not understand programming still after years or decades in row doing nonsense, which seems weird not sure what to do with such inhabitants in the world, seems neither my harassment by your dopamine and steroid munching sick dudes and slut fans nor world climate instabilities bother you, you just want to eat sausage and fart, code under your leadership is pretty weak. Lots of tyranny I got has been discontinued ever since I
21:27olderfacebaby: started to accuse people. They no longer want to get caught, that is some side effect enough. Sure none wants to die or put lifetime in jail, you just want to harass eat sausage, do lame jokes and fart isn't it?
22:00gfxstrand: dakr: That's fine. I'm just thinking it would be good to track this stuff so we at least have it written down somewhere. It would also give us a place to write down what we'd talked about at XDC RE the API.
22:00gfxstrand: dakr: I'm not expecting it to happen soon. IMO, there are higher priority things from my PoV.
22:28fdobridge: <gfxstrand> Nice!
22:28fdobridge: <gfxstrand> Yeah, the c operand is weird. I wouldn't be at all surprised if the meaning has shifted a bit between generations.
22:34fdobridge: <dadschoorse> what is it for? cluster mask?
22:34fdobridge: <gfxstrand> Cluster mask and xor at the same time
22:34fdobridge: <gfxstrand> And another thing
22:36fdobridge: <dadschoorse> probably still less cursed than the zoo of shuffle ops that amd has 🐸
22:41fdobridge: <benjaminl> it looks like the PTX docs mention it
22:47fdobridge: <gfxstrand> Yeah, it's in the PTX docs but I might have gotten it wrong even on turing.
22:47fdobridge: <gfxstrand> The tests pass but that doesn't always mean anything