19:09 gfxstrand[d]: Is there something with `VERTEX_STREAM_A_FORMAT` where something can invalidate it or it needs to be smashed more often or something?
19:10 gfxstrand[d]: I'm gonna let this CTS run run its course but something funky is going on.
19:11 karolherbst[d]: compute could maybe
19:11 gfxstrand[d]: I doubt it. The failing CTS test is just a blit test
19:11 karolherbst[d]: mhh
19:12 gfxstrand[d]: I'm suspicious something's going wrong with my meta save/restore but it's really odd.
19:12 karolherbst[d]: fun project idea: have a debug flag which reads out values between submissions/commands/regularly/whatever and dumps it into a file
19:12 karolherbst[d]: mhh yeah...
19:13 karolherbst[d]: at least I'm not aware of anything
19:13 karolherbst[d]: but yeah.. maybe you'd need a fuzzer here to figure those things out
19:14 gfxstrand[d]: This one feels really odd. Like they have to be set in some order or something.
19:14 gfxstrand[d]:is re-implementing the driver in MMEs 🙃
19:21 gfxstrand[d]: Hrm... Maybe you can't actually set MME_SHADOW_SCRATCH outside of the MME
19:22 gfxstrand[d]: That would explain a thing or two
19:41 gfxstrand[d]: Maybe the MME XOR doesn't do what I think it does. 🤔
19:46 gfxstrand[d]: I'm gonna feel really dumb when I figure this out
19:52 karolherbst[d]: how bad could it be, worst case you negated a condition you shouldn't have or something
20:02 gfxstrand[d]: Okay, it's not XOR (for which I'm thankful!) but somehow my register goes from having 0 in it to having something else.
20:27 gfxstrand[d]: Okay, it gets worse. I write 0 to the scratch register and then immediately read it back and it's not 0
20:28 karolherbst[d]: maybe it's one of them the firmware likes to mess with?
20:28 karolherbst[d]: though I don't see why it should...
20:29 gfxstrand[d]: Oh, I think I know what's going on
20:37 gfxstrand[d]: Yup. If you have PRMT and MTHD in the same MME instruction, they can race.
20:39 karolherbst[d]: nice
20:43 gfxstrand[d]: Okay, I've now got vertex state split apart and macroified a bit.
21:50 gfxstrand[d]: And... tess is sorted
21:50 gfxstrand[d]: Now to see if I can figure out how to do `minSampleShading` floating-point math in the MME. 😅
21:53 redsheep[d]: gfxstrand[d]: What suddenly has you doing all this mme stuff?
21:53 gfxstrand[d]: device_generated_commands
21:54 gfxstrand[d]: I may have to shut off the cbuf optimization for it. Or not. We'll see. That one's has really annoying interactions with DGC
21:59 redsheep[d]: Hmm hopefully that one originating with nvidia means it agrees with the hardware, looks complicated