From 2a5abf8379daa8f5625a7289c9a32e3e59e5a2f0 Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Sun, 13 Jan 2019 22:26:26 -0500 Subject: [PATCH 1/3] Bug 1512010 - don't snap text positions in local raster space. r=gw [wrupdater] From https://hg.mozilla.org/mozilla-central/rev/9cf58f64e2c204f48a38f69c1c5ec272f65e0bb1 --- webrender/res/ps_text_run.glsl | 14 ++++++++------ webrender/src/batch.rs | 2 +- webrender/src/prim_store/text_run.rs | 7 +++++++ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/webrender/res/ps_text_run.glsl b/webrender/res/ps_text_run.glsl index 5ade469ca6..5a8123b8c3 100644 --- a/webrender/res/ps_text_run.glsl +++ b/webrender/res/ps_text_run.glsl @@ -63,6 +63,7 @@ TextRun fetch_text_run(int address) { VertexInfo write_text_vertex(RectWithSize local_clip_rect, float z, + bool should_snap, Transform transform, PictureTask task, vec2 text_offset, @@ -73,13 +74,8 @@ VertexInfo write_text_vertex(RectWithSize local_clip_rect, vec2 snap_offset = vec2(0.0); mat2 local_transform; -#ifdef WR_FEATURE_GLYPH_TRANSFORM - bool remove_subpx_offset = true; -#else - bool remove_subpx_offset = transform.is_axis_aligned; -#endif // Compute the snapping offset only if the scroll node transform is axis-aligned. - if (remove_subpx_offset) { + if (should_snap) { // Transform from local space to device space. float device_scale = task.common_data.device_pixel_scale / transform.m[3].w; mat2 device_transform = mat2(transform.m) * device_scale; @@ -178,6 +174,8 @@ void main(void) { RectWithSize glyph_rect = RectWithSize(res.offset + glyph_transform * (text.offset + glyph.offset), res.uv_rect.zw - res.uv_rect.xy); + // Since the glyph is pre-transformed, snapping is both forced and does not depend on the transform. + bool should_snap = true; #else // Scale from glyph space to local space. float scale = res.scale / task.common_data.device_pixel_scale; @@ -185,6 +183,9 @@ void main(void) { // Compute the glyph rect in local space. RectWithSize glyph_rect = RectWithSize(scale * res.offset + text.offset + glyph.offset, scale * (res.uv_rect.zw - res.uv_rect.xy)); + + // Check if the primitive is actually safe to snap. + bool should_snap = ph.user_data.x != 0; #endif vec2 snap_bias; @@ -214,6 +215,7 @@ void main(void) { VertexInfo vi = write_text_vertex(ph.local_clip_rect, ph.z, + should_snap, transform, task, text.offset, diff --git a/webrender/src/batch.rs b/webrender/src/batch.rs index f91dceef99..b10beb0a20 100644 --- a/webrender/src/batch.rs +++ b/webrender/src/batch.rs @@ -829,7 +829,7 @@ impl AlphaBatchBuilder { } }; - let prim_header_index = prim_headers.push(&prim_header, z_id, [0; 3]); + let prim_header_index = prim_headers.push(&prim_header, z_id, [run.should_snap as i32, 0, 0]); let key = BatchKey::new(kind, blend_mode, textures); let base_instance = GlyphInstance::new( prim_header_index, diff --git a/webrender/src/prim_store/text_run.rs b/webrender/src/prim_store/text_run.rs index 7deeaf16b4..4aef1f1179 100644 --- a/webrender/src/prim_store/text_run.rs +++ b/webrender/src/prim_store/text_run.rs @@ -65,6 +65,7 @@ impl AsInstanceKind for TextRunKey { used_font: self.font.clone(), glyph_keys_range: storage::Range::empty(), shadow: self.shadow, + should_snap: true, }); PrimitiveInstanceKind::TextRun{ data_handle, run_index } @@ -227,6 +228,7 @@ pub struct TextRunPrimitive { pub used_font: FontInstance, pub glyph_keys_range: storage::Range, pub shadow: bool, + pub should_snap: bool, } impl TextRunPrimitive { @@ -262,6 +264,11 @@ impl TextRunPrimitive { FontTransform::identity() }; + // We can snap only if the transform is axis-aligned and in screen-space. + self.should_snap = + transform.preserves_2d_axis_alignment() && + raster_space == RasterSpace::Screen; + // If the transform or device size is different, then the caller of // this method needs to know to rebuild the glyphs. let cache_dirty = From 0a1758301bd303e07b521bee9c1590389b6b89da Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Sun, 13 Jan 2019 22:27:00 -0500 Subject: [PATCH 2/3] Bug 1512010 - add wrench test for text snapping in raster spaces. r=gw [wrupdater] From https://hg.mozilla.org/mozilla-central/rev/58b0b6fba4c388a12b98954772074ffbfc81c784 --- wrench/reftests/text/raster-space-snap-ref.yaml | 10 ++++++++++ wrench/reftests/text/raster-space-snap.yaml | 10 ++++++++++ wrench/reftests/text/reftest.list | 1 + 3 files changed, 21 insertions(+) create mode 100644 wrench/reftests/text/raster-space-snap-ref.yaml create mode 100644 wrench/reftests/text/raster-space-snap.yaml diff --git a/wrench/reftests/text/raster-space-snap-ref.yaml b/wrench/reftests/text/raster-space-snap-ref.yaml new file mode 100644 index 0000000000..43e4ccdf46 --- /dev/null +++ b/wrench/reftests/text/raster-space-snap-ref.yaml @@ -0,0 +1,10 @@ +root: + items: + - type: stacking-context + bounds: [0, 0, 480, 80] + raster-space: screen + items: + - text: "a Bcd Efgh Ijklm Nopqrs Tuvwxyz" + origin: 20.5 50 + size: 20 + font: "FreeSans.ttf" diff --git a/wrench/reftests/text/raster-space-snap.yaml b/wrench/reftests/text/raster-space-snap.yaml new file mode 100644 index 0000000000..4ae3f8c99f --- /dev/null +++ b/wrench/reftests/text/raster-space-snap.yaml @@ -0,0 +1,10 @@ +root: + items: + - type: stacking-context + bounds: [0, 0, 480, 80] + raster-space: local(1.0) + items: + - text: "a Bcd Efgh Ijklm Nopqrs Tuvwxyz" + origin: 20.5 50 + size: 20 + font: "FreeSans.ttf" diff --git a/wrench/reftests/text/reftest.list b/wrench/reftests/text/reftest.list index dfd788616f..4ec5174ca8 100644 --- a/wrench/reftests/text/reftest.list +++ b/wrench/reftests/text/reftest.list @@ -68,3 +68,4 @@ fuzzy(1,113) platform(linux) == raster-space.yaml raster-space.png == shadow-image.yaml shadow-solid-ref.yaml options(disable-aa) == snap-clip.yaml snap-clip-ref.yaml platform(linux) == perspective-clip.yaml perspective-clip.png +options(disable-subpixel) != raster-space-snap.yaml raster-space-snap-ref.yaml From 8daf5edea7a1b536e88f39ec1dd78e99bad9d2ec Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Sun, 13 Jan 2019 22:50:37 -0500 Subject: [PATCH 3/3] Bug 1512010 - fix png refs for wrench tests. r=me [wrupdater] From https://hg.mozilla.org/mozilla-central/rev/c3179fe251cc7122fedcfb2184523558178213bf --- .../blurred-shadow-local-clip-rect-ref.png | Bin 19504 -> 19485 bytes wrench/reftests/text/two-shadows.png | Bin 11350 -> 11509 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/wrench/reftests/text/blurred-shadow-local-clip-rect-ref.png b/wrench/reftests/text/blurred-shadow-local-clip-rect-ref.png index 895d42eaf5ce4f7ff138f2fdd88893553a658ec6..e9b2cab05f4a13ce21acd745e41c417805d920ec 100644 GIT binary patch literal 19485 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 literal 19504 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