From 07e7024730f833b4850c5e123754ecee0674b51d Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Tue, 2 May 2017 16:01:53 -0400 Subject: [PATCH] Refactored vLocalRect into vLocalBounds --- webrender/res/clip_shared.glsl | 2 ++ webrender/res/cs_clip_image.fs.glsl | 2 +- webrender/res/cs_clip_image.glsl | 1 - webrender/res/cs_clip_image.vs.glsl | 1 - webrender/res/cs_clip_rectangle.fs.glsl | 2 +- webrender/res/cs_clip_rectangle.glsl | 1 - webrender/res/cs_clip_rectangle.vs.glsl | 1 - webrender/res/prim_shared.glsl | 15 +++++++++----- webrender/res/ps_border.fs.glsl | 8 ++++---- webrender/res/ps_border.glsl | 3 +-- webrender/res/ps_border.vs.glsl | 26 ++++++++++++------------- webrender/res/ps_border_corner.fs.glsl | 2 +- webrender/res/ps_border_corner.glsl | 1 - webrender/res/ps_border_corner.vs.glsl | 4 +--- webrender/res/ps_border_edge.fs.glsl | 2 +- webrender/res/ps_border_edge.glsl | 1 - webrender/res/ps_border_edge.vs.glsl | 4 +--- webrender/res/ps_gradient.fs.glsl | 2 +- webrender/res/ps_gradient.glsl | 1 - webrender/res/ps_gradient.vs.glsl | 1 - webrender/res/ps_image.fs.glsl | 4 ++-- webrender/res/ps_image.glsl | 4 +--- webrender/res/ps_image.vs.glsl | 1 - webrender/res/ps_rectangle.fs.glsl | 2 +- webrender/res/ps_rectangle.glsl | 1 - webrender/res/ps_rectangle.vs.glsl | 1 - webrender/res/ps_text_run.fs.glsl | 2 +- webrender/res/ps_text_run.glsl | 1 - webrender/res/ps_text_run.vs.glsl | 1 - webrender/res/ps_yuv_image.fs.glsl | 4 ++-- webrender/res/ps_yuv_image.glsl | 1 - webrender/res/ps_yuv_image.vs.glsl | 1 - 32 files changed, 43 insertions(+), 60 deletions(-) diff --git a/webrender/res/clip_shared.glsl b/webrender/res/clip_shared.glsl index a8a9493280..7d8d1c31c7 100644 --- a/webrender/res/clip_shared.glsl +++ b/webrender/res/clip_shared.glsl @@ -88,6 +88,8 @@ ClipVertexInfo write_clip_tile_vertex(RectWithSize local_clip_rect, gl_Position = uTransform * vec4(vertex_pos, 0.0, 1); + vLocalBounds = vec4(clipped_local_rect.p0, clipped_local_rect.p0 + clipped_local_rect.size); + return ClipVertexInfo(layer_pos.xyw, actual_pos, clipped_local_rect); } diff --git a/webrender/res/cs_clip_image.fs.glsl b/webrender/res/cs_clip_image.fs.glsl index 888681f41a..20d2bc3e9d 100644 --- a/webrender/res/cs_clip_image.fs.glsl +++ b/webrender/res/cs_clip_image.fs.glsl @@ -4,7 +4,7 @@ void main(void) { float alpha = 1.f; - vec2 local_pos = init_transform_fs(vPos, vLocalRect, alpha); + vec2 local_pos = init_transform_fs(vPos, alpha); bool repeat_mask = false; //TODO vec2 clamped_mask_uv = repeat_mask ? fract(vClipMaskUv.xy) : diff --git a/webrender/res/cs_clip_image.glsl b/webrender/res/cs_clip_image.glsl index ec1946f6a4..0960a724bd 100644 --- a/webrender/res/cs_clip_image.glsl +++ b/webrender/res/cs_clip_image.glsl @@ -5,6 +5,5 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ varying vec3 vPos; -flat varying RectWithSize vLocalRect; flat varying vec4 vClipMaskUvRect; flat varying vec4 vClipMaskUvInnerRect; diff --git a/webrender/res/cs_clip_image.vs.glsl b/webrender/res/cs_clip_image.vs.glsl index e7984745b2..f05eb9fb6a 100644 --- a/webrender/res/cs_clip_image.vs.glsl +++ b/webrender/res/cs_clip_image.vs.glsl @@ -26,7 +26,6 @@ void main(void) { area, cci.segment_index); - vLocalRect = vi.clipped_local_rect; vPos = vi.local_pos; vClipMaskUv = vec3((vPos.xy / vPos.z - local_rect.p0) / local_rect.size, 0.0); diff --git a/webrender/res/cs_clip_rectangle.fs.glsl b/webrender/res/cs_clip_rectangle.fs.glsl index ee7ba71c02..af45462efa 100644 --- a/webrender/res/cs_clip_rectangle.fs.glsl +++ b/webrender/res/cs_clip_rectangle.fs.glsl @@ -36,7 +36,7 @@ float rounded_rect(vec2 pos) { void main(void) { float alpha = 1.f; - vec2 local_pos = init_transform_fs(vPos, vLocalRect, alpha); + vec2 local_pos = init_transform_fs(vPos, alpha); float clip_alpha = rounded_rect(local_pos); diff --git a/webrender/res/cs_clip_rectangle.glsl b/webrender/res/cs_clip_rectangle.glsl index 4c5be82236..d320e9b3cd 100644 --- a/webrender/res/cs_clip_rectangle.glsl +++ b/webrender/res/cs_clip_rectangle.glsl @@ -5,7 +5,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ varying vec3 vPos; -flat varying RectWithSize vLocalRect; flat varying vec4 vClipRect; flat varying vec4 vClipRadius; flat varying float vClipMode; diff --git a/webrender/res/cs_clip_rectangle.vs.glsl b/webrender/res/cs_clip_rectangle.vs.glsl index 4e7d74cf90..0df4c6a861 100644 --- a/webrender/res/cs_clip_rectangle.vs.glsl +++ b/webrender/res/cs_clip_rectangle.vs.glsl @@ -54,7 +54,6 @@ void main(void) { layer, area, cci.segment_index); - vLocalRect = vi.clipped_local_rect; vPos = vi.local_pos; vClipMode = clip.rect.mode.x; diff --git a/webrender/res/prim_shared.glsl b/webrender/res/prim_shared.glsl index 02be173570..4c65969f57 100644 --- a/webrender/res/prim_shared.glsl +++ b/webrender/res/prim_shared.glsl @@ -111,6 +111,9 @@ float distance_to_line(vec2 p0, vec2 perp_dir, vec2 p) { // TODO: convert back to RectWithEndPoint if driver issues are resolved, if ever. flat varying vec4 vClipMaskUvBounds; varying vec3 vClipMaskUv; +#ifdef WR_FEATURE_TRANSFORM + flat varying vec4 vLocalBounds; +#endif #ifdef WR_VERTEX_SHADER @@ -705,6 +708,8 @@ TransformVertexInfo write_transform_vertex(RectWithSize instance_rect, gl_Position = uTransform * vec4(final_pos, z, 1.0); + vLocalBounds = vec4(local_rect.p0, local_rect.p1); + vec4 layer_pos = get_layer_pos(device_pos / uDevicePixelRatio, layer); return TransformVertexInfo(layer_pos.xyw, device_pos); @@ -785,12 +790,13 @@ void write_clip(vec2 global_pos, ClipArea area) { #ifdef WR_FRAGMENT_SHADER +#ifdef WR_FEATURE_TRANSFORM float signed_distance_rect(vec2 pos, vec2 p0, vec2 p1) { vec2 d = max(p0 - pos, pos - p1); return length(max(vec2(0.0), d)) + min(0.0, max(d.x, d.y)); } -vec2 init_transform_fs(vec3 local_pos, RectWithSize local_rect, out float fragment_alpha) { +vec2 init_transform_fs(vec3 local_pos, out float fragment_alpha) { fragment_alpha = 1.0; vec2 pos = local_pos.xy / local_pos.z; @@ -805,9 +811,7 @@ vec2 init_transform_fs(vec3 local_pos, RectWithSize local_rect, out float fragme // Now get the actual signed distance. Inset the local rect by the offset amount // above to get correct distance values. This ensures that we only apply // anti-aliasing when the fragment has partial coverage. - float d = signed_distance_rect(pos, - local_rect.p0 + dxdy, - local_rect.p0 + local_rect.size - dxdy); + float d = signed_distance_rect(pos, vLocalBounds.xy + dxdy, vLocalBounds.zw - dxdy); // Find the appropriate distance to apply the AA smoothstep over. float afwidth = 0.5 / length(fw); @@ -817,6 +821,7 @@ vec2 init_transform_fs(vec3 local_pos, RectWithSize local_rect, out float fragme return pos; } +#endif //WR_FEATURE_TRANSFORM float do_clip() { // anything outside of the mask is considered transparent @@ -842,7 +847,7 @@ vec4 dither(vec4 color) { vec4 dither(vec4 color) { return color; } -#endif +#endif //WR_FEATURE_DITHERING vec4 sample_gradient(float offset, float gradient_repeat, float gradient_index, vec2 gradient_size) { // Either saturate or modulo the offset depending on repeat mode diff --git a/webrender/res/ps_border.fs.glsl b/webrender/res/ps_border.fs.glsl index 3fae2e05d6..a6d39e714d 100644 --- a/webrender/res/ps_border.fs.glsl +++ b/webrender/res/ps_border.fs.glsl @@ -410,7 +410,7 @@ vec4 draw_complete_border(vec2 local_pos, float distance_from_mix_line, float di void main(void) { #ifdef WR_FEATURE_TRANSFORM float alpha = 0.0; - vec2 local_pos = init_transform_fs(vLocalPos, vLocalRect, alpha); + vec2 local_pos = init_transform_fs(vLocalPos, alpha); #else float alpha = 1.0; vec2 local_pos = vLocalPos; @@ -421,9 +421,9 @@ void main(void) { float distance_from_mix_line = (local_pos.x - vPieceRect.x) * vPieceRect.w - (local_pos.y - vPieceRect.y) * vPieceRect.z; distance_from_mix_line /= vPieceRectHypotenuseLength; - float distance_from_middle = (local_pos.x - vBorderRect.p0.x) + - (local_pos.y - vBorderRect.p0.y) - - 0.5 * (vBorderRect.size.x + vBorderRect.size.y); + float distance_from_middle = (local_pos.x - vBorderRect.x) + + (local_pos.y - vBorderRect.y) - + 0.5 * (vBorderRect.z + vBorderRect.w); #else float distance_from_mix_line = vDistanceFromMixLine; float distance_from_middle = vDistanceFromMiddle; diff --git a/webrender/res/ps_border.glsl b/webrender/res/ps_border.glsl index 14eda8eada..f27e8f93d0 100644 --- a/webrender/res/ps_border.glsl +++ b/webrender/res/ps_border.glsl @@ -8,7 +8,7 @@ flat varying vec4 vVerticalColor; // The vertical color, e.g. top/bottom flat varying vec4 vHorizontalColor; // The horizontal color e.g. left/right flat varying vec4 vRadii; // The border radius from CSS border-radius -flat varying RectWithSize vBorderRect; // The rect of the border in local space. +flat varying vec4 vBorderRect; // The rect of the border in local space. // for corners, this is the beginning of the corner. // For the lines, this is the top left of the line. @@ -21,7 +21,6 @@ flat varying vec4 vPieceRect; // These are in device space #ifdef WR_FEATURE_TRANSFORM varying vec3 vLocalPos; // The clamped position in local space. -flat varying RectWithSize vLocalRect; flat varying float vPieceRectHypotenuseLength; #else varying vec2 vLocalPos; // The clamped position in local space. diff --git a/webrender/res/ps_border.vs.glsl b/webrender/res/ps_border.vs.glsl index ae3426af0b..080d61440b 100644 --- a/webrender/res/ps_border.vs.glsl +++ b/webrender/res/ps_border.vs.glsl @@ -7,24 +7,24 @@ void main(void) { Primitive prim = load_primitive(); Border border = fetch_border(prim.prim_index); int sub_part = prim.sub_index; - vBorderRect = prim.local_rect; + vBorderRect = vec4(prim.local_rect.p0, prim.local_rect.size); - vec2 tl_outer = vBorderRect.p0; + vec2 tl_outer = vBorderRect.xy; vec2 tl_inner = tl_outer + vec2(max(border.radii[0].x, border.widths.x), max(border.radii[0].y, border.widths.y)); - vec2 tr_outer = vec2(vBorderRect.p0.x + vBorderRect.size.x, - vBorderRect.p0.y); + vec2 tr_outer = vec2(vBorderRect.x + vBorderRect.z, + vBorderRect.y); vec2 tr_inner = tr_outer + vec2(-max(border.radii[0].z, border.widths.z), max(border.radii[0].w, border.widths.y)); - vec2 br_outer = vec2(vBorderRect.p0.x + vBorderRect.size.x, - vBorderRect.p0.y + vBorderRect.size.y); + vec2 br_outer = vec2(vBorderRect.x + vBorderRect.z, + vBorderRect.y + vBorderRect.w); vec2 br_inner = br_outer - vec2(max(border.radii[1].x, border.widths.z), max(border.radii[1].y, border.widths.w)); - vec2 bl_outer = vec2(vBorderRect.p0.x, - vBorderRect.p0.y + vBorderRect.size.y); + vec2 bl_outer = vec2(vBorderRect.x, + vBorderRect.y + vBorderRect.w); vec2 bl_inner = bl_outer + vec2(max(border.radii[1].z, border.widths.x), -max(border.radii[1].w, border.widths.w)); @@ -107,8 +107,6 @@ void main(void) { prim.layer, prim.task, prim.local_rect.p0); - vLocalPos = vi.local_pos; - vLocalRect = segment_rect; #else VertexInfo vi = write_vertex(segment_rect, prim.local_clip_rect, @@ -116,9 +114,9 @@ void main(void) { prim.layer, prim.task, prim.local_rect.p0); - vLocalPos = vi.local_pos.xy; #endif + vLocalPos = vi.local_pos; write_clip(vi.screen_pos, prim.clip_area); float x0, y0, x1, y1; @@ -185,8 +183,8 @@ void main(void) { #else vDistanceFromMixLine = (vi.local_pos.x - x0) * height - (vi.local_pos.y - y0) * width; - vDistanceFromMiddle = (vi.local_pos.x - vBorderRect.p0.x) + - (vi.local_pos.y - vBorderRect.p0.y) - - 0.5 * (vBorderRect.size.x + vBorderRect.size.y); + vDistanceFromMiddle = (vi.local_pos.x - vBorderRect.x) + + (vi.local_pos.y - vBorderRect.y) - + 0.5 * (vBorderRect.z + vBorderRect.w); #endif } diff --git a/webrender/res/ps_border_corner.fs.glsl b/webrender/res/ps_border_corner.fs.glsl index 43c95106fa..e19c911875 100644 --- a/webrender/res/ps_border_corner.fs.glsl +++ b/webrender/res/ps_border_corner.fs.glsl @@ -69,7 +69,7 @@ void main(void) { float alpha = 1.0; #ifdef WR_FEATURE_TRANSFORM alpha = 0.0; - vec2 local_pos = init_transform_fs(vLocalPos, vLocalRect, alpha); + vec2 local_pos = init_transform_fs(vLocalPos, alpha); #else vec2 local_pos = vLocalPos; #endif diff --git a/webrender/res/ps_border_corner.glsl b/webrender/res/ps_border_corner.glsl index 6a4196f0b3..5a355949a6 100644 --- a/webrender/res/ps_border_corner.glsl +++ b/webrender/res/ps_border_corner.glsl @@ -22,7 +22,6 @@ flat varying float vSDFSelect; flat varying float vAlphaSelect; #ifdef WR_FEATURE_TRANSFORM -flat varying RectWithSize vLocalRect; varying vec3 vLocalPos; #else varying vec2 vLocalPos; diff --git a/webrender/res/ps_border_corner.vs.glsl b/webrender/res/ps_border_corner.vs.glsl index d15f323eaa..5e494b2f69 100644 --- a/webrender/res/ps_border_corner.vs.glsl +++ b/webrender/res/ps_border_corner.vs.glsl @@ -210,8 +210,6 @@ void main(void) { prim.layer, prim.task, prim.local_rect.p0); - vLocalPos = vi.local_pos; - vLocalRect = segment_rect; #else VertexInfo vi = write_vertex(segment_rect, prim.local_clip_rect, @@ -219,8 +217,8 @@ void main(void) { prim.layer, prim.task, prim.local_rect.p0); - vLocalPos = vi.local_pos.xy; #endif + vLocalPos = vi.local_pos; write_clip(vi.screen_pos, prim.clip_area); } diff --git a/webrender/res/ps_border_edge.fs.glsl b/webrender/res/ps_border_edge.fs.glsl index 6a9134d3b9..fad64e4c61 100644 --- a/webrender/res/ps_border_edge.fs.glsl +++ b/webrender/res/ps_border_edge.fs.glsl @@ -8,7 +8,7 @@ void main(void) { float alpha = 1.0; #ifdef WR_FEATURE_TRANSFORM alpha = 0.0; - vec2 local_pos = init_transform_fs(vLocalPos, vLocalRect, alpha); + vec2 local_pos = init_transform_fs(vLocalPos, alpha); #else vec2 local_pos = vLocalPos; #endif diff --git a/webrender/res/ps_border_edge.glsl b/webrender/res/ps_border_edge.glsl index 5053b00ba1..12972be318 100644 --- a/webrender/res/ps_border_edge.glsl +++ b/webrender/res/ps_border_edge.glsl @@ -11,7 +11,6 @@ flat varying vec3 vDashParams; #ifdef WR_FEATURE_TRANSFORM varying vec3 vLocalPos; -flat varying RectWithSize vLocalRect; #else varying vec2 vLocalPos; #endif diff --git a/webrender/res/ps_border_edge.vs.glsl b/webrender/res/ps_border_edge.vs.glsl index 35f5b2e787..4d46368d38 100644 --- a/webrender/res/ps_border_edge.vs.glsl +++ b/webrender/res/ps_border_edge.vs.glsl @@ -131,8 +131,6 @@ void main(void) { prim.layer, prim.task, prim.local_rect.p0); - vLocalPos = vi.local_pos; - vLocalRect = segment_rect; #else VertexInfo vi = write_vertex(segment_rect, prim.local_clip_rect, @@ -140,8 +138,8 @@ void main(void) { prim.layer, prim.task, prim.local_rect.p0); - vLocalPos = vi.local_pos; #endif + vLocalPos = vi.local_pos; write_clip(vi.screen_pos, prim.clip_area); } diff --git a/webrender/res/ps_gradient.fs.glsl b/webrender/res/ps_gradient.fs.glsl index 4165f89b2c..4878be8ae3 100644 --- a/webrender/res/ps_gradient.fs.glsl +++ b/webrender/res/ps_gradient.fs.glsl @@ -5,7 +5,7 @@ void main(void) { #ifdef WR_FEATURE_TRANSFORM float alpha = 0.0; - vec2 local_pos = init_transform_fs(vLocalPos, vLocalRect, alpha); + vec2 local_pos = init_transform_fs(vLocalPos, alpha); #else float alpha = 1.0; vec2 local_pos = vPos; diff --git a/webrender/res/ps_gradient.glsl b/webrender/res/ps_gradient.glsl index b0778181d1..7955270df0 100644 --- a/webrender/res/ps_gradient.glsl +++ b/webrender/res/ps_gradient.glsl @@ -6,7 +6,6 @@ varying vec4 vColor; #ifdef WR_FEATURE_TRANSFORM varying vec3 vLocalPos; -flat varying RectWithSize vLocalRect; #else varying vec2 vPos; #endif diff --git a/webrender/res/ps_gradient.vs.glsl b/webrender/res/ps_gradient.vs.glsl index c6db27011f..efd7be9794 100644 --- a/webrender/res/ps_gradient.vs.glsl +++ b/webrender/res/ps_gradient.vs.glsl @@ -63,7 +63,6 @@ void main(void) { prim.layer, prim.task, prim.local_rect.p0); - vLocalRect = segment_rect; vLocalPos = vi.local_pos; vec2 f = (vi.local_pos.xy - prim.local_rect.p0) / prim.local_rect.size; #else diff --git a/webrender/res/ps_image.fs.glsl b/webrender/res/ps_image.fs.glsl index 87beeb3656..db45514ab0 100644 --- a/webrender/res/ps_image.fs.glsl +++ b/webrender/res/ps_image.fs.glsl @@ -7,11 +7,11 @@ void main(void) { #ifdef WR_FEATURE_TRANSFORM float alpha = 0.0; - vec2 pos = init_transform_fs(vLocalPos, vLocalRect, alpha); + vec2 pos = init_transform_fs(vLocalPos, alpha); // We clamp the texture coordinate calculation here to the local rectangle boundaries, // which makes the edge of the texture stretch instead of repeat. - vec2 relative_pos_in_rect = clamp_rect(pos, vLocalRect) - vLocalRect.p0; + vec2 relative_pos_in_rect = clamp(pos, vLocalBounds.xy, vLocalBounds.zw) - vLocalBounds.xy; #else float alpha = 1.0; vec2 relative_pos_in_rect = vLocalPos; diff --git a/webrender/res/ps_image.glsl b/webrender/res/ps_image.glsl index 01029eafbd..85872f6c4b 100644 --- a/webrender/res/ps_image.glsl +++ b/webrender/res/ps_image.glsl @@ -12,9 +12,7 @@ flat varying vec4 vStRect; // Rectangle of valid texture rect. #ifdef WR_FEATURE_TRANSFORM varying vec3 vLocalPos; -flat varying RectWithSize vLocalRect; -flat varying vec2 vStretchSize; #else varying vec2 vLocalPos; -flat varying vec2 vStretchSize; #endif +flat varying vec2 vStretchSize; diff --git a/webrender/res/ps_image.vs.glsl b/webrender/res/ps_image.vs.glsl index 917a4614ca..a0e35ac07c 100644 --- a/webrender/res/ps_image.vs.glsl +++ b/webrender/res/ps_image.vs.glsl @@ -15,7 +15,6 @@ void main(void) { prim.layer, prim.task, prim.local_rect.p0); - vLocalRect = prim.local_rect; vLocalPos = vi.local_pos; #else VertexInfo vi = write_vertex(prim.local_rect, diff --git a/webrender/res/ps_rectangle.fs.glsl b/webrender/res/ps_rectangle.fs.glsl index d60729750c..db6e252cb4 100644 --- a/webrender/res/ps_rectangle.fs.glsl +++ b/webrender/res/ps_rectangle.fs.glsl @@ -6,7 +6,7 @@ void main(void) { float alpha = 1.0; #ifdef WR_FEATURE_TRANSFORM alpha = 0.0; - init_transform_fs(vLocalPos, vLocalRect, alpha); + init_transform_fs(vLocalPos, alpha); #endif #ifdef WR_FEATURE_CLIP diff --git a/webrender/res/ps_rectangle.glsl b/webrender/res/ps_rectangle.glsl index 743c19875a..18539b1a4c 100644 --- a/webrender/res/ps_rectangle.glsl +++ b/webrender/res/ps_rectangle.glsl @@ -6,5 +6,4 @@ varying vec4 vColor; #ifdef WR_FEATURE_TRANSFORM varying vec3 vLocalPos; -flat varying RectWithSize vLocalRect; #endif diff --git a/webrender/res/ps_rectangle.vs.glsl b/webrender/res/ps_rectangle.vs.glsl index 1bd6d8c1f6..b3cfac6fc1 100644 --- a/webrender/res/ps_rectangle.vs.glsl +++ b/webrender/res/ps_rectangle.vs.glsl @@ -14,7 +14,6 @@ void main(void) { prim.layer, prim.task, prim.local_rect.p0); - vLocalRect = prim.local_rect; vLocalPos = vi.local_pos; #else VertexInfo vi = write_vertex(prim.local_rect, diff --git a/webrender/res/ps_text_run.fs.glsl b/webrender/res/ps_text_run.fs.glsl index 8381b30270..b21ac22949 100644 --- a/webrender/res/ps_text_run.fs.glsl +++ b/webrender/res/ps_text_run.fs.glsl @@ -11,7 +11,7 @@ void main(void) { float alpha = texture(sColor0, tc).a; #ifdef WR_FEATURE_TRANSFORM float a = 0.0; - init_transform_fs(vLocalPos, vLocalRect, a); + init_transform_fs(vLocalPos, a); alpha *= a; #endif vec4 color = vColor; diff --git a/webrender/res/ps_text_run.glsl b/webrender/res/ps_text_run.glsl index 79770d860a..a5915da61f 100644 --- a/webrender/res/ps_text_run.glsl +++ b/webrender/res/ps_text_run.glsl @@ -8,5 +8,4 @@ flat varying vec4 vUvBorder; #ifdef WR_FEATURE_TRANSFORM varying vec3 vLocalPos; -flat varying RectWithSize vLocalRect; #endif diff --git a/webrender/res/ps_text_run.vs.glsl b/webrender/res/ps_text_run.vs.glsl index 1f29a0d8a5..0838814357 100644 --- a/webrender/res/ps_text_run.vs.glsl +++ b/webrender/res/ps_text_run.vs.glsl @@ -19,7 +19,6 @@ void main(void) { prim.layer, prim.task, local_rect.p0); - vLocalRect = local_rect; vLocalPos = vi.local_pos; vec2 f = (vi.local_pos.xy / vi.local_pos.z - local_rect.p0) / local_rect.size; #else diff --git a/webrender/res/ps_yuv_image.fs.glsl b/webrender/res/ps_yuv_image.fs.glsl index 12b99ed523..28c140ee9c 100644 --- a/webrender/res/ps_yuv_image.fs.glsl +++ b/webrender/res/ps_yuv_image.fs.glsl @@ -37,11 +37,11 @@ const mat3 YuvColorMatrix = mat3( void main(void) { #ifdef WR_FEATURE_TRANSFORM float alpha = 0.0; - vec2 pos = init_transform_fs(vLocalPos, vLocalRect, alpha); + vec2 pos = init_transform_fs(vLocalPos, alpha); // We clamp the texture coordinate calculation here to the local rectangle boundaries, // which makes the edge of the texture stretch instead of repeat. - vec2 relative_pos_in_rect = clamp_rect(pos, vLocalRect) - vLocalRect.p0; + vec2 relative_pos_in_rect = clamp(pos, vLocalBounds.xy, vLocalBounds.zw) - vLocalBounds.xy; #else float alpha = 1.0;; vec2 relative_pos_in_rect = vLocalPos; diff --git a/webrender/res/ps_yuv_image.glsl b/webrender/res/ps_yuv_image.glsl index 6d578c836f..05bb9a0ff5 100644 --- a/webrender/res/ps_yuv_image.glsl +++ b/webrender/res/ps_yuv_image.glsl @@ -16,7 +16,6 @@ flat varying vec2 vHalfTexelUv; // Normalized length of the half of u and v t #ifdef WR_FEATURE_TRANSFORM varying vec3 vLocalPos; -flat varying RectWithSize vLocalRect; #else varying vec2 vLocalPos; #endif diff --git a/webrender/res/ps_yuv_image.vs.glsl b/webrender/res/ps_yuv_image.vs.glsl index 1853081435..6c24645b68 100644 --- a/webrender/res/ps_yuv_image.vs.glsl +++ b/webrender/res/ps_yuv_image.vs.glsl @@ -12,7 +12,6 @@ void main(void) { prim.layer, prim.task, prim.local_rect.p0); - vLocalRect = prim.local_rect; vLocalPos = vi.local_pos; #else VertexInfo vi = write_vertex(prim.local_rect,