| <<<Back 1 day (to 2020/11/30) | Fwd 1 day (to 2020/12/02)>>> | 20201201 |
ator | vtorri: honestly can't remember :) | 10:25.53 |
vtorri | ator :) i understand it's an old mail | 10:28.19 |
| for the fun i also discovered a discussion you had with the author of libart2 :) | 10:28.49 |
sebras | when non_zero_winding_aa() adds spans to the deltas list in fz_scan_convert_aa(), are negative values expected? | 12:04.52 |
| I wouldn't expect so, but it was a long time since I undestood this code. | 12:05.26 |
ator | sebras: the deltas list holds both positive and negative values | 12:11.31 |
| it holds the difference in ink coverage from the previous "pixel" | 12:12.17 |
| see undelta_aa where the deltas are summed to compute the final coverage values that we use as alpha in blit_aa | 12:13.41 |
sebras | ok. so I'm seeing an alpha value that is > 0, but trying to understand where that comes from and track it backwards is a bit difficult for me. | 12:31.23 |
| I gave up. | 13:03.54 |
ator | sebras: was it > 0 when it should have been 0? | 13:12.08 |
sebras | ator: the alpha was 15 when the corresponding pixel was uninitialized. | 13:49.00 |
| I reported it to robin in 703211 | 13:49.16 |
ator | sebras: but if it's the pixel that's uninitialized, I'd have thought it was the painter that has the bug, not the scan converter | 13:50.38 |
| the scan converter only calculates the alpha, then calls a painting function | 13:50.48 |
sebras | fz_convert_rasterizer() paints into state[1].mask using paint_span_0_da_sa(). | 13:53.20 |
| and I think the gel it is working on comes from fz_flatten_fill_path() | 13:54.08 |
| which then calls fz_walkpath() which calls flatten_lineto() which calls line() which calls fz_insert_rasterizer() which calls which fz_insert_gel() which calls fz_insert_gel_raw(). | 13:55.53 |
ator | why is alpha==15 problematic? | 13:56.21 |
sebras | somewhere here I'm expcting that state[1].dest will be painted into as well, but I never found it. | 13:56.27 |
| ator because alpha == 15 when *sp[3] == unintialized | 13:56.46 |
| sp here refers to state[1].dest | 13:57.08 |
| and it is detected in the painter. in fz_draw_pop_clip(). | 13:57.24 |
| the painter appears to skip over the sample when *mp == 0, but it isn't for this uninitialized sample, it is 15, and then a == 1, so it tries to validate wheter sp[3] == 0 and it fails. | 13:58.53 |
| this is when the issue is detected in fz_draw_pop_clip(). | 13:59.13 |
| but I think the issue is introduced towards the end of fz_draw_clip_path() when it calls fz_convert_rasterizer(), because then it sets *mp = 15 for a pixel which is uninitlized. | 14:00.30 |
| the problem _could_ of course come from fz_flatten_fill_path() where it should be setting the sample but doesn't. this may very well be the case since I've seen that it warns "unknown keyword: '28.99<A9>756.67'" around that same time. | 14:01.48 |
artifexirc-bot | <ator> fz_copy_pixmap_rect b=2147483520 2147483520 -2147483648 -2147483648 | 14:31.11 |
| <ator> intersect dst=2147483520 2147483520 2147483520 2147483520 | 14:31.11 |
| <ator> intersect b=2147483520 2147483520 -2147483648 -2147483648 | 14:31.13 |
| <ator> intersect src=10 0 15 80 | 14:31.14 |
| <ator> intersect b=2147483520 2147483520 -2147483648 -2147483648 | 14:31.15 |
| <ator> early exit! nothing to copy. | 14:31.17 |
| <ator> fz_new_pixmap_with_bbox 15 0 112 80 | 14:57.09 |
| <ator> fz_copy_pixmap_rect b=15 0 112 80 | 14:57.10 |
| <ator> intersect dst=15 0 112 80 | 14:57.11 |
| <ator> intersect b=15 0 112 80 | 14:57.13 |
| <ator> intersect src=112 0 112 80 | 14:57.14 |
| <ator> intersect b=112 0 112 80 | 14:57.15 |
| <ator> early exit! nothing to copy. w=97 h=80 | 14:57.16 |
| <<<Back 1 day (to 2020/11/30) | Forward 1 day (to 2020/12/02)>>> | |