Closed dankamongmen closed 3 years ago
and what's going on here?
I've got a unit test for this now which is clearly showing the behavior. I think resolving this might just solve a few things. Should have it done tomorrow or this weekend at the latest.
I hacked up a quick sixel-to-RGBA converter, and indeed, it looks like we have a persistent off-by-1. here's a diff of the end of undamaged vs damaged natasha-blur.png
:
-@ BMAP[480][153] = 0
-E BMAP[481][154] = 0
-E BMAP[482][154] = 0
-G BMAP[483][155] = 0
-O BMAP[484][156] = 0
-_ BMAP[485][266] = 0
-O BMAP[484][267] = 0
-G BMAP[483][268] = 0
-C BMAP[482][269] = 0
+E BMAP[481][153] = 0
+E BMAP[482][153] = 0
+G BMAP[483][154] = 0
+O BMAP[484][155] = 0
+_ BMAP[485][265] = 0
+O BMAP[484][266] = 0
+G BMAP[483][267] = 0
+C BMAP[482][268] = 0
when we're writing that second output, we think we're at 480/265 when we write the O, not 480/266:
writing 480:0..156 (?)
writing 480:157..157 (G)
writing 480:158..158 (O)
writing 480:159..159 (O)
writing 480:160..215 (?)
writing 480:216..216 (A)
writing 480:217..259 (?)
writing 480:260..260 (C)
writing 480:261..264 (?)
writing 480:265..265 (O)
writing 480:266..266 (G)
writing 480:267..267 (C)
writing 480:268..268 (A)
writing 480:269..269 (@)
here's a collection of differences:
@@ -143847,127 +143847,127 @@
rgba[1df][92] (1112e): 0
rgba[1df][93] (1130d): 0
rgba[1df][94] (114ec): 0
-rgba[1df][95] (116cb): 30333400
+rgba[1df][95] (116cb): 0
rgba[1df][96] (118aa): 0
rgba[1df][97] (11a89): 0
-rgba[1df][98] (11c68): 0
-rgba[1df][99] (11e47): 0
-rgba[1df][9a] (12026): 90a0a00
-rgba[1df][9b] (12205): 5070700
-rgba[1df][9c] (123e4): 3040500
-rgba[1df][9d] (125c3): 0
-rgba[1df][9e] (127a2): 0
-rgba[1df][9f] (12981): 4060700
+rgba[1df][98] (11c68): 90a0a00
+rgba[1df][99] (11e47): 5070700
+rgba[1df][9a] (12026): 3040500
+rgba[1df][9b] (12205): 0
+rgba[1df][9c] (123e4): 0
+rgba[1df][9d] (125c3): 4060700
+rgba[1df][9e] (127a2): 3040500
+rgba[1df][9f] (12981): 3040500
rgba[1df][a0] (12b60): 3040500
-rgba[1df][a1] (12d3f): 3040500
-rgba[1df][a2] (12f1e): 3040500
-rgba[1df][a3] (130fd): 4050600
-rgba[1df][a4] (132dc): 4060700
-rgba[1df][a5] (134bb): 5070700
-rgba[1df][a6] (1369a): 5070700
-rgba[1df][a7] (13879): 4060700
-rgba[1df][a8] (13a58): 4060700
-rgba[1df][a9] (13c37): 6080900
-rgba[1df][aa] (13e16): 0
-rgba[1df][ab] (13ff5): 5070700
+rgba[1df][a1] (12d3f): 0
+rgba[1df][a2] (12f1e): 4060700
+rgba[1df][a3] (130fd): 5070700
+rgba[1df][a4] (132dc): 5070700
+rgba[1df][a5] (134bb): 4060700
+rgba[1df][a6] (1369a): 4060700
+rgba[1df][a7] (13879): 0
+rgba[1df][a8] (13a58): 6080900
+rgba[1df][a9] (13c37): 5070700
+rgba[1df][aa] (13e16): 3040500
+rgba[1df][ab] (13ff5): 3040500
rgba[1df][ac] (141d4): 3040500
rgba[1df][ad] (143b3): 3040500
rgba[1df][ae] (14592): 3040500
-rgba[1df][af] (14771): 3040500
+rgba[1df][af] (14771): 0
rgba[1df][b0] (14950): 3040500
-rgba[1df][b1] (14b2f): 0
-rgba[1df][b2] (14d0e): 3040500
-rgba[1df][b3] (14eed): 5070700
+rgba[1df][b1] (14b2f): 5070700
+rgba[1df][b2] (14d0e): 0
+rgba[1df][b3] (14eed): 6080900
rgba[1df][b4] (150cc): 6080900
-rgba[1df][b5] (152ab): 6080900
+rgba[1df][b5] (152ab): 5070700
rgba[1df][b6] (1548a): 0
-rgba[1df][b7] (15669): 5070700
-rgba[1df][b8] (15848): 4050600
+rgba[1df][b7] (15669): 3040500
+rgba[1df][b8] (15848): 3040500
rgba[1df][b9] (15a27): 3040500
rgba[1df][ba] (15c06): 3040500
rgba[1df][bb] (15de5): 3040500
-rgba[1df][bc] (15fc4): 3040500
-rgba[1df][bd] (161a3): 3040500
-rgba[1df][be] (16382): 4060700
+rgba[1df][bc] (15fc4): 4060700
+rgba[1df][bd] (161a3): 5070700
+rgba[1df][be] (16382): 0
rgba[1df][bf] (16561): 5070700
-rgba[1df][c0] (16740): 0
+rgba[1df][c0] (16740): 5070700
rgba[1df][c1] (1691f): 5070700
rgba[1df][c2] (16afe): 5070700
rgba[1df][c3] (16cdd): 5070700
rgba[1df][c4] (16ebc): 5070700
-rgba[1df][c5] (1709b): 5070700
-rgba[1df][c6] (1727a): 5070700
+rgba[1df][c5] (1709b): 0
+rgba[1df][c6] (1727a): 6080900
rgba[1df][c7] (17459): 6080900
-rgba[1df][c8] (17638): 6080900
-rgba[1df][c9] (17817): 5070700
-rgba[1df][ca] (179f6): 5070700
-rgba[1df][cb] (17bd5): 6080900
+rgba[1df][c8] (17638): 5070700
+rgba[1df][c9] (17817): 0
+rgba[1df][ca] (179f6): 6080900
+rgba[1df][cb] (17bd5): 5070700
rgba[1df][cc] (17db4): 5070700
rgba[1df][cd] (17f93): 5070700
-rgba[1df][ce] (18172): 5070700
-rgba[1df][cf] (18351): 5070700
+rgba[1df][ce] (18172): 0
+rgba[1df][cf] (18351): 6080900
rgba[1df][d0] (18530): 6080900
-rgba[1df][d1] (1870f): 6080900
+rgba[1df][d1] (1870f): 0
rgba[1df][d2] (188ee): 0
rgba[1df][d3] (18acd): 0
rgba[1df][d4] (18cac): 0
-rgba[1df][d5] (18e8b): 30333400
-rgba[1df][d6] (1906a): 0
-rgba[1df][d7] (19249): 6080900
-rgba[1df][d8] (19428): 5070700
+rgba[1df][d5] (18e8b): 0
+rgba[1df][d6] (1906a): 6080900
+rgba[1df][d7] (19249): 0
+rgba[1df][d8] (19428): 6080900
rgba[1df][d9] (19607): 6080900
-rgba[1df][da] (197e6): 6080900
+rgba[1df][da] (197e6): 5070700
rgba[1df][db] (199c5): 5070700
rgba[1df][dc] (19ba4): 5070700
rgba[1df][dd] (19d83): 5070700
rgba[1df][de] (19f62): 5070700
-rgba[1df][df] (1a141): 5070700
+rgba[1df][df] (1a141): 0
rgba[1df][e0] (1a320): 5070700
-rgba[1df][e1] (1a4ff): 0
+rgba[1df][e1] (1a4ff): 5070700
rgba[1df][e2] (1a6de): 5070700
rgba[1df][e3] (1a8bd): 5070700
rgba[1df][e4] (1aa9c): 5070700
rgba[1df][e5] (1ac7b): 5070700
-rgba[1df][e6] (1ae5a): 5070700
-rgba[1df][e7] (1b039): 5070700
+rgba[1df][e6] (1ae5a): 4060700
+rgba[1df][e7] (1b039): 4060700
rgba[1df][e8] (1b218): 4060700
rgba[1df][e9] (1b3f7): 4060700
-rgba[1df][ea] (1b5d6): 4060700
-rgba[1df][eb] (1b7b5): 4060700
+rgba[1df][ea] (1b5d6): 3040500
+rgba[1df][eb] (1b7b5): 3040500
rgba[1df][ec] (1b994): 3040500
rgba[1df][ed] (1bb73): 3040500
rgba[1df][ee] (1bd52): 3040500
rgba[1df][ef] (1bf31): 3040500
-rgba[1df][f0] (1c110): 3040500
-rgba[1df][f1] (1c2ef): 3040500
-rgba[1df][f2] (1c4ce): 5070700
+rgba[1df][f0] (1c110): 5070700
+rgba[1df][f1] (1c2ef): 0
+rgba[1df][f2] (1c4ce): 6080900
rgba[1df][f3] (1c6ad): 6080900
-rgba[1df][f4] (1c88c): 6080900
+rgba[1df][f4] (1c88c): 4060700
rgba[1df][f5] (1ca6b): 0
-rgba[1df][f6] (1cc4a): 4060700
-rgba[1df][f7] (1ce29): 4050600
-rgba[1df][f8] (1d008): 5070700
+rgba[1df][f6] (1cc4a): 5070700
+rgba[1df][f7] (1ce29): 3040500
+rgba[1df][f8] (1d008): 3040500
rgba[1df][f9] (1d1e7): 3040500
rgba[1df][fa] (1d3c6): 3040500
rgba[1df][fb] (1d5a5): 3040500
-rgba[1df][fc] (1d784): 3040500
-rgba[1df][fd] (1d963): 3040500
-rgba[1df][fe] (1db42): 5070700
-rgba[1df][ff] (1dd21): 4060700
+rgba[1df][fc] (1d784): 5070700
+rgba[1df][fd] (1d963): 4060700
+rgba[1df][fe] (1db42): 0
+rgba[1df][ff] (1dd21): 3040500
rgba[1df][100] (1df00): 3050600
-rgba[1df][101] (1e0df): 3040500
-rgba[1df][102] (1e2be): 2030400
-rgba[1df][103] (1e49d): 2030400
-rgba[1df][104] (1e67c): 3040500
-rgba[1df][105] (1e85b): 4060700
+rgba[1df][101] (1e0df): 0
+rgba[1df][102] (1e2be): 3040500
+rgba[1df][103] (1e49d): 4060700
+rgba[1df][104] (1e67c): 0
+rgba[1df][105] (1e85b): 3040500
rgba[1df][106] (1ea3a): 4050600
-rgba[1df][107] (1ec19): 3040500
+rgba[1df][107] (1ec19): 0
rgba[1df][108] (1edf8): 0
rgba[1df][109] (1efd7): 0
rgba[1df][10a] (1f1b6): 0
-rgba[1df][10b] (1f395): 0
+rgba[1df][10b] (1f395): 3040500
rgba[1df][10c] (1f574): 2030400
-rgba[1df][10d] (1f753): 3040500
+rgba[1df][10d] (1f753): 0
rgba[1df][10e] (1f932): 0
rgba[1df][10f] (1fb11): 0
rgba[1df][110] (1fcf0): 0
@@ -145951,7 +145951,7 @@
rgba[1e6][96] (11cc4): 0
rgba[1e6][97] (11eaa): 0
rgba[1e6][98] (12090): 0
-rgba[1e6][99] (12276): 5d5e5d00
+rgba[1e6][99] (12276): 0
rgba[1e6][9a] (1245c): 0
rgba[1e6][9b] (12642): 0
rgba[1e6][9c] (12828): 0
[schwarzgerat](1) $
i think i might have got it!
yeah this fix makes orca look superficially correct, though it doesn't fix the flicker in yield
, and i don't trust it to be a complete fix. i want to close the loop on this unit test i've added, which i can do now that i have the sixel -> rgb conversion. the test ought check that all rgb values are equal after scrub, except those which we meant to blow away, at the pixel level. this will give us our final answer.
i've cherry-picked the sixel fix thus far into master
, but let's close out this unit test and ensure there aren't any further problems.
Man, these unit tests are proving difficult to get working all the way, presumably due to bugs in our ad hoc sixel->rgba decoder. I've got them checked in now, but important chunks are commented out with FIXMEs.
well, all this stuff probably does indeed work, but we're junking it anyway in favor of sixel rematerialization, see #1440.
Yeah, this will be going away. Closing.
The Sixel deepclean cell wiping process works more or less, but I realized tonight that it has some inaccuracy. Look at the bottom of Natasha's segway since fixing #1568:
there's definitely some shittiness there. I think it's actually best described as we're properly scrubbing out the wiped regions, but unwiped regions on the same rows are getting damaged. things look fine in kitty.