Most integration tests fail on big-endian systems
jamessan opened this issue · comments
Most of the failures don't provide any useful information, since the difference is in the data
field. However, the png tests show that byte-swapping is at least part of the problem.
---- png::decode_grayscale stdout ----
thread 'png::decode_grayscale' panicked at 'assertion failed: `(left == right)`
left: `PremultipliedColorU8 { r: 255, g: 0, b: 0, a: 0 }`,
right: `PremultipliedColorU8 { r: 0, g: 0, b: 0, a: 255 }`', tests/integration/png.rs:7:5
---- png::decode_grayscale_alpha stdout ----
thread 'png::decode_grayscale_alpha' panicked at 'assertion failed: `(left == right)`
left: `PremultipliedColorU8 { r: 255, g: 0, b: 0, a: 0 }`,
right: `PremultipliedColorU8 { r: 0, g: 0, b: 0, a: 255 }`', tests/integration/png.rs:14:5
---- png::decode_rgb stdout ----
thread 'png::decode_rgb' panicked at 'assertion failed: `(left == right)`
left: `PremultipliedColorU8 { r: 255, g: 49, b: 191, a: 36 }`,
right: `PremultipliedColorU8 { r: 36, g: 191, b: 49, a: 255 }`', tests/integration/png.rs:21:5
Full failure list
failures:
---- clip::circle_bottom_right_aa stdout ----
thread 'clip::circle_bottom_right_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/clip.rs:72:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---- clip::ignore_memset stdout ----
thread 'clip::ignore_memset' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/clip.rs:174:5
---- clip::ignore_source stdout ----
thread 'clip::ignore_source' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/clip.rs:198:5
---- clip::rect stdout ----
thread 'clip::rect' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/clip.rs:17:5
---- clip::rect_aa stdout ----
thread 'clip::rect_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/clip.rs:34:5
---- clip::intersect_aa stdout ----
thread 'clip::intersect_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/clip.rs:152:5
---- clip::rect_ts stdout ----
thread 'clip::rect_ts' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/clip.rs:54:5
---- clip::stroke stdout ----
thread 'clip::stroke' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/clip.rs:93:5
---- clip::skip_dest stdout ----
thread 'clip::skip_dest' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/clip.rs:128:5
---- dash::closed stdout ----
thread 'dash::closed' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/dash.rs:166:5
---- dash::cubic stdout ----
thread 'dash::cubic' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/dash.rs:63:5
---- dash::hairline stdout ----
thread 'dash::hairline' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/dash.rs:85:5
---- dash::complex stdout ----
thread 'dash::complex' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/dash.rs:113:5
---- dash::line stdout ----
thread 'dash::line' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/dash.rs:21:5
---- dash::quad stdout ----
thread 'dash::quad' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/dash.rs:42:5
---- fill::clear_aa stdout ----
thread 'fill::clear_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:554:5
---- fill::clip_cubic_1 stdout ----
thread 'fill::clip_cubic_1' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:499:5
---- dash::multi_subpaths stdout ----
thread 'dash::multi_subpaths' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/dash.rs:142:5
---- fill::clip_line_1 stdout ----
thread 'fill::clip_line_1' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:443:5
---- fill::clip_cubic_2 stdout ----
thread 'fill::clip_cubic_2' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:517:5
---- fill::clip_quad stdout ----
thread 'fill::clip_quad' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:481:5
---- fill::clip_line_2 stdout ----
thread 'fill::clip_line_2' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:464:5
---- fill::cubic_curve stdout ----
thread 'fill::cubic_curve' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:356:5
---- fill::closed_polygon stdout ----
thread 'fill::closed_polygon' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:282:5
---- fill::even_odd_star stdout ----
thread 'fill::even_odd_star' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:322:5
---- fill::fill_aa stdout ----
thread 'fill::fill_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:408:5
---- fill::fill_rect stdout ----
thread 'fill::fill_rect' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:614:5
---- fill::float_rect_aa stdout ----
thread 'fill::float_rect_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:109:5
---- fill::float_rect stdout ----
thread 'fill::float_rect' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:79:5
---- fill::float_rect_clip_bottom_right_aa stdout ----
thread 'fill::float_rect_clip_bottom_right_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:226:5
---- fill::float_rect_clip_top_left_aa stdout ----
thread 'fill::float_rect_clip_top_left_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:196:5
---- fill::float_rect_clip_top_right_aa stdout ----
thread 'fill::float_rect_clip_top_right_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:211:5
---- fill::float_rect_aa_highp stdout ----
thread 'fill::float_rect_aa_highp' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:125:5
---- fill::int_rect stdout ----
thread 'fill::int_rect' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:65:5
---- fill::int_rect_with_ts_clip_right stdout ----
thread 'fill::int_rect_with_ts_clip_right' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:240:5
---- fill::int_rect_aa stdout ----
thread 'fill::int_rect_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:94:5
---- fill::memset2d stdout ----
thread 'fill::memset2d' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:370:5
---- fill::open_polygon stdout ----
thread 'fill::open_polygon' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:260:5
---- fill::memset2d_out_of_bounds stdout ----
thread 'fill::memset2d_out_of_bounds' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:385:5
---- fill::quad_curve stdout ----
thread 'fill::quad_curve' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:339:5
---- fill::vertical_lines_merging_bug stdout ----
thread 'fill::vertical_lines_merging_bug' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:596:5
---- fill::winding_star stdout ----
thread 'fill::winding_star' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/fill.rs:302:5
---- gradients::conical_greater_radial stdout ----
thread 'gradients::conical_greater_radial' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:316:5
---- gradients::focal_on_circle_radial stdout ----
thread 'gradients::focal_on_circle_radial' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:292:5
---- gradients::global_opacity stdout ----
thread 'gradients::global_opacity' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:417:5
---- gradients::simple_radial_lq stdout ----
thread 'gradients::simple_radial_lq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:340:5
---- gradients::simple_radial_hq stdout ----
thread 'gradients::simple_radial_hq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:365:5
---- gradients::three_stops_evenly_spaced_hq stdout ----
thread 'gradients::three_stops_evenly_spaced_hq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:216:5
---- gradients::three_stops_evenly_spaced_lq stdout ----
thread 'gradients::three_stops_evenly_spaced_lq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:94:5
---- gradients::simple_radial_with_ts_hq stdout ----
thread 'gradients::simple_radial_with_ts_hq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:390:5
---- gradients::two_stops_linear_pad_lq stdout ----
thread 'gradients::two_stops_linear_pad_lq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:23:5
---- gradients::two_stops_linear_pad_hq stdout ----
thread 'gradients::two_stops_linear_pad_hq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:142:5
---- gradients::two_stops_linear_reflect_lq stdout ----
thread 'gradients::two_stops_linear_reflect_lq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:69:5
---- gradients::two_stops_linear_reflect_hq stdout ----
thread 'gradients::two_stops_linear_reflect_hq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:190:5
---- gradients::two_stops_linear_repeat_hq stdout ----
thread 'gradients::two_stops_linear_repeat_hq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:166:5
---- gradients::two_stops_linear_repeat_lq stdout ----
thread 'gradients::two_stops_linear_repeat_lq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:46:5
---- gradients::two_stops_unevenly_spaced_lq stdout ----
thread 'gradients::two_stops_unevenly_spaced_lq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:118:5
---- gradients::two_stops_unevenly_spaced_hq stdout ----
thread 'gradients::two_stops_unevenly_spaced_hq' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:241:5
---- hairline::chop_cubic_01 stdout ----
thread 'hairline::chop_cubic_01' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:226:5
---- hairline::clip_cubic_00 stdout ----
thread 'hairline::clip_cubic_00' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:238:5
---- hairline::clip_cubic_05_aa stdout ----
thread 'hairline::clip_cubic_05_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:232:5
---- hairline::clip_hline_bottom_aa stdout ----
thread 'hairline::clip_hline_bottom_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:113:5
---- hairline::clip_hline_top_aa stdout ----
thread 'hairline::clip_hline_top_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:107:5
---- hairline::clip_line_00 stdout ----
thread 'hairline::clip_line_00' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:80:5
---- gradients::well_behaved_radial stdout ----
thread 'gradients::well_behaved_radial' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/gradients.rs:268:5
---- hairline::clip_line_05_aa stdout ----
thread 'hairline::clip_line_05_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:74:5
---- hairline::clip_vline_left_aa stdout ----
thread 'hairline::clip_vline_left_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:119:5
---- hairline::clip_vline_right_aa stdout ----
thread 'hairline::clip_vline_right_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:125:5
---- hairline::clipped_circle_aa stdout ----
thread 'hairline::clipped_circle_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:256:5
---- hairline::cubic_width_00 stdout ----
thread 'hairline::cubic_width_00' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:207:5
---- hairline::cubic_width_00_aa stdout ----
thread 'hairline::cubic_width_00_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:201:5
---- hairline::cubic_width_00_round stdout ----
thread 'hairline::cubic_width_00_round' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:219:5
---- hairline::clip_line_00_v2 stdout ----
thread 'hairline::clip_line_00_v2' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 512, height: 512 }`,
right: `Pixmap { data: "...", width: 512, height: 512 }`', tests/integration/hairline.rs:101:5
---- hairline::cubic_width_05_aa_round stdout ----
thread 'hairline::cubic_width_05_aa_round' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:213:5
---- hairline::cubic_width_05_aa stdout ----
thread 'hairline::cubic_width_05_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:195:5
---- hairline::cubic_width_10_aa stdout ----
thread 'hairline::cubic_width_10_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:189:5
---- hairline::hline_05_aa_round stdout ----
thread 'hairline::hline_05_aa_round' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:38:5
---- hairline::hline_05_aa stdout ----
thread 'hairline::hline_05_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:32:5
---- hairline::horish_05_aa stdout ----
thread 'hairline::horish_05_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:62:5
---- hairline::quad_width_00 stdout ----
thread 'hairline::quad_width_00' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:163:5
---- hairline::quad_width_05_aa_round stdout ----
thread 'hairline::quad_width_05_aa_round' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:157:5
---- hairline::quad_width_05_aa stdout ----
thread 'hairline::quad_width_05_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 100 }`,
right: `Pixmap { data: "...", width: 200, height: 100 }`', tests/integration/hairline.rs:151:5
---- hairline::vertish_05_aa stdout ----
thread 'hairline::vertish_05_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:68:5
---- hairline::vline_05_aa stdout ----
thread 'hairline::vline_05_aa' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:50:5
---- hairline::vline_05_aa_round stdout ----
thread 'hairline::vline_05_aa_round' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/hairline.rs:56:5
---- pattern::filter_bilinear stdout ----
thread 'pattern::filter_bilinear' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pattern.rs:220:5
---- pattern::filter_nearest stdout ----
thread 'pattern::filter_nearest' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pattern.rs:198:5
---- pattern::filter_bicubic stdout ----
thread 'pattern::filter_bicubic' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pattern.rs:242:5
---- pattern::filter_nearest_no_ts stdout ----
thread 'pattern::filter_nearest_no_ts' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pattern.rs:176:5
---- pattern::pad_nearest stdout ----
thread 'pattern::pad_nearest' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pattern.rs:39:5
---- pattern::pad_bicubic stdout ----
thread 'pattern::pad_bicubic' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pattern.rs:108:5
---- pattern::reflect_nearest stdout ----
thread 'pattern::reflect_nearest' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pattern.rs:83:5
---- pattern::reflect_bicubic stdout ----
thread 'pattern::reflect_bicubic' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pattern.rs:154:5
---- pattern::repeat_nearest stdout ----
thread 'pattern::repeat_nearest' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pattern.rs:61:5
---- pixmap::clone_rect_1 stdout ----
thread 'pixmap::clone_rect_1' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 80, height: 90 }`,
right: `Pixmap { data: "...", width: 80, height: 90 }`', tests/integration/pixmap.rs:21:5
---- pixmap::clone_rect_2 stdout ----
thread 'pixmap::clone_rect_2' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 70, height: 80 }`,
right: `Pixmap { data: "...", width: 70, height: 80 }`', tests/integration/pixmap.rs:43:5
---- pixmap::draw_pixmap stdout ----
thread 'pixmap::draw_pixmap' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pixmap.rs:99:5
---- pattern::repeat_bicubic stdout ----
thread 'pattern::repeat_bicubic' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pattern.rs:131:5
---- pixmap::draw_pixmap_opacity stdout ----
thread 'pixmap::draw_pixmap_opacity' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pixmap.rs:170:5
---- png::decode_grayscale stdout ----
thread 'png::decode_grayscale' panicked at 'assertion failed: `(left == right)`
left: `PremultipliedColorU8 { r: 255, g: 0, b: 0, a: 0 }`,
right: `PremultipliedColorU8 { r: 0, g: 0, b: 0, a: 255 }`', tests/integration/png.rs:7:5
---- png::decode_grayscale_alpha stdout ----
thread 'png::decode_grayscale_alpha' panicked at 'assertion failed: `(left == right)`
left: `PremultipliedColorU8 { r: 255, g: 0, b: 0, a: 0 }`,
right: `PremultipliedColorU8 { r: 0, g: 0, b: 0, a: 255 }`', tests/integration/png.rs:14:5
---- png::decode_rgb stdout ----
thread 'png::decode_rgb' panicked at 'assertion failed: `(left == right)`
left: `PremultipliedColorU8 { r: 255, g: 49, b: 191, a: 36 }`,
right: `PremultipliedColorU8 { r: 36, g: 191, b: 49, a: 255 }`', tests/integration/png.rs:21:5
---- pixmap::draw_pixmap_ts stdout ----
thread 'pixmap::draw_pixmap_ts' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/pixmap.rs:134:5
---- png::decode_rgba stdout ----
thread 'png::decode_rgba' panicked at 'assertion failed: `(left == right)`
left: `PremultipliedColorU8 { r: 108, g: 70, b: 96, a: 68 }`,
right: `PremultipliedColorU8 { r: 68, g: 96, b: 70, a: 108 }`', tests/integration/png.rs:28:5
---- stroke::circle stdout ----
thread 'stroke::circle' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/stroke.rs:43:5
---- stroke::round_cap_join stdout ----
thread 'stroke::round_cap_join' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/stroke.rs:133:5
---- stroke::zero_len_subpath_round_cap stdout ----
thread 'stroke::zero_len_subpath_round_cap' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/stroke.rs:87:5
---- stroke::zero_len_subpath_square_cap stdout ----
thread 'stroke::zero_len_subpath_square_cap' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 100, height: 100 }`,
right: `Pixmap { data: "...", width: 100, height: 100 }`', tests/integration/stroke.rs:109:5
---- stroke::round_caps_and_large_scale stdout ----
thread 'stroke::round_caps_and_large_scale' panicked at 'assertion failed: `(left == right)`
left: `Pixmap { data: "...", width: 200, height: 200 }`,
right: `Pixmap { data: "...", width: 200, height: 200 }`', tests/integration/stroke.rs:26:5
failures:
clip::circle_bottom_right_aa
clip::ignore_memset
clip::ignore_source
clip::intersect_aa
clip::rect
clip::rect_aa
clip::rect_ts
clip::skip_dest
clip::stroke
dash::closed
dash::complex
dash::cubic
dash::hairline
dash::line
dash::multi_subpaths
dash::quad
fill::clear_aa
fill::clip_cubic_1
fill::clip_cubic_2
fill::clip_line_1
fill::clip_line_2
fill::clip_quad
fill::closed_polygon
fill::cubic_curve
fill::even_odd_star
fill::fill_aa
fill::fill_rect
fill::float_rect
fill::float_rect_aa
fill::float_rect_aa_highp
fill::float_rect_clip_bottom_right_aa
fill::float_rect_clip_top_left_aa
fill::float_rect_clip_top_right_aa
fill::int_rect
fill::int_rect_aa
fill::int_rect_with_ts_clip_right
fill::memset2d
fill::memset2d_out_of_bounds
fill::open_polygon
fill::quad_curve
fill::vertical_lines_merging_bug
fill::winding_star
gradients::conical_greater_radial
gradients::focal_on_circle_radial
gradients::global_opacity
gradients::simple_radial_hq
gradients::simple_radial_lq
gradients::simple_radial_with_ts_hq
gradients::three_stops_evenly_spaced_hq
gradients::three_stops_evenly_spaced_lq
gradients::two_stops_linear_pad_hq
gradients::two_stops_linear_pad_lq
gradients::two_stops_linear_reflect_hq
gradients::two_stops_linear_reflect_lq
gradients::two_stops_linear_repeat_hq
gradients::two_stops_linear_repeat_lq
gradients::two_stops_unevenly_spaced_hq
gradients::two_stops_unevenly_spaced_lq
gradients::well_behaved_radial
hairline::chop_cubic_01
hairline::clip_cubic_00
hairline::clip_cubic_05_aa
hairline::clip_hline_bottom_aa
hairline::clip_hline_top_aa
hairline::clip_line_00
hairline::clip_line_00_v2
hairline::clip_line_05_aa
hairline::clip_vline_left_aa
hairline::clip_vline_right_aa
hairline::clipped_circle_aa
hairline::cubic_width_00
hairline::cubic_width_00_aa
hairline::cubic_width_00_round
hairline::cubic_width_05_aa
hairline::cubic_width_05_aa_round
hairline::cubic_width_10_aa
hairline::hline_05_aa
hairline::hline_05_aa_round
hairline::horish_05_aa
hairline::quad_width_00
hairline::quad_width_05_aa
hairline::quad_width_05_aa_round
hairline::vertish_05_aa
hairline::vline_05_aa
hairline::vline_05_aa_round
pattern::filter_bicubic
pattern::filter_bilinear
pattern::filter_nearest
pattern::filter_nearest_no_ts
pattern::pad_bicubic
pattern::pad_nearest
pattern::reflect_bicubic
pattern::reflect_nearest
pattern::repeat_bicubic
pattern::repeat_nearest
pixmap::clone_rect_1
pixmap::clone_rect_2
pixmap::draw_pixmap
pixmap::draw_pixmap_opacity
pixmap::draw_pixmap_ts
png::decode_grayscale
png::decode_grayscale_alpha
png::decode_rgb
png::decode_rgba
stroke::circle
stroke::round_cap_join
stroke::round_caps_and_large_scale
stroke::zero_len_subpath_round_cap
stroke::zero_len_subpath_square_cap
test result: FAILED. 36 passed; 109 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.58s
What systems do use big-endian and how can I reproduce it locally?
Such kind of bugs are expected, because I have no way of testing big-endian targets.
The easiest way is to use the cross
tool, which uses docker images with everything set up to compile for and run executables on various Rust targets. mips and powerpc have big endian targets in Rust. Either should work to replicate this.
Does cross
works on macos ARM? I heard that docker on mac is meh.
By the way, are those arches do support SIMD to begin with? Afaik they do no. Therefore there is no point in supporting them.
I will have to update the readme... tiny-skia is x86/aarch64 only library. And wasm, sort of.
Depends on what you mean by SIMD. PPC64 has AltiVec. Sparc64 has VIS.
I will have to update the readme... tiny-skia is x86/aarch64 only library. And wasm, sort of.
Is there anything I can do to help support operating systems outside of this? I have interest in using tiny-skia
on big endian systems, and I personally think this issue can be resolved via some byte swapping.
@notgull The current solution would be to forbid everything except x86, aarch64 and wasm32.
Sure, there is probably an easy fix to endianness, but I still have to support it and make sure I would not break anything in the future. It's an additional burden I cannot take at the moment.
Also, tiny-skia without SIMD is useless. I have plans on removing scalar code completely. So it would not compile on unsupported targets to begin with.
Or, we could wait for std::simd
and make it their problem. But looks like it would not be stable anytime soon.
Also, tiny-skia without SIMD is useless. I have plans on removing scalar code completely.
It seems somewhat limiting for a software drawing library to only support a few architectures. A lot of software wants to target things other than x86_64, aarch64 and wasm32, and would then need to use tiny-skia only on those targets and something else elsewhere.
I expect this would be a concern for various projects that currently depend on tiny-skia.
@ids1024 Can you name such a target? Not a hypothetical one. I'm genuinely curious.
If you're talking about embed, then tiny-skia is already an overkill because how heavy it is.
Also, this exact issue is a good illustration of why I want to limit the scope. I simply cannot test it against all possible targets. I barely have time to support x86 and aarch64.
I would also be interested in some of the more obscure targets and my code is optimized to the point where I get like 10k fps or so out of tiny-skia, meaning that it probably runs just fine without SIMD in my case too. If you don't have time to support those targets, I'm willing to help you out. I'll try to look into the big endian problems soon. (Also I have it running on CI against many of these targets, so it's at least indirectly being tested all the time)
I did some experiments and I was able to shave around 300 LOC. Not much improvement...
Yes, I would say as long as we can setup working CI for all the "supported" targets it should be fine. As of now, I don't really have an access even to x86.
Also, it seems like dropping some SSE2 code should be fine. AVX is 12 years old now. We can easily fallback to scalar for such old CPUs.
Unless there are more issues that aren't revealed by the tests, this seems to be pretty straightforward: #69.