diff options
author | Glenn Watson <github@intuitionlibrary.com> | 2016-09-20 10:57:48 +1000 |
---|---|---|
committer | Glenn Watson <github@intuitionlibrary.com> | 2016-09-20 10:57:48 +1000 |
commit | 7c8664e6ec30c311f1aaa79f80fcc5732799a543 (patch) | |
tree | dc8c7b66b4d107e4fc00196e1640474f44b81d40 | |
parent | be72afc8042d77a920bc450cdd45c662d8742800 (diff) | |
download | servo-7c8664e6ec30c311f1aaa79f80fcc5732799a543.tar.gz servo-7c8664e6ec30c311f1aaa79f80fcc5732799a543.zip |
Update webrender (prim cache changes, blend/composite shaders).
-rw-r--r-- | components/servo/Cargo.lock | 4 | ||||
-rw-r--r-- | ports/cef/Cargo.lock | 4 | ||||
-rw-r--r-- | resources/shaders/prim_shared.glsl | 22 | ||||
-rw-r--r-- | resources/shaders/ps_blend.vs.glsl | 12 | ||||
-rw-r--r-- | resources/shaders/ps_composite.vs.glsl | 15 |
5 files changed, 27 insertions, 30 deletions
diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index da5fd990bd8..647b62e58ae 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -2643,7 +2643,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.5.1" -source = "git+https://github.com/servo/webrender#37dab545df3a9b6aa5e762f59272eb3d37227476" +source = "git+https://github.com/servo/webrender#61b8f8bfefd472bd71dd9a06c1d16dab28c1fcc0" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2668,7 +2668,7 @@ dependencies = [ [[package]] name = "webrender_traits" version = "0.5.1" -source = "git+https://github.com/servo/webrender#37dab545df3a9b6aa5e762f59272eb3d37227476" +source = "git+https://github.com/servo/webrender#61b8f8bfefd472bd71dd9a06c1d16dab28c1fcc0" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index b55a318db43..92108a43380 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -2503,7 +2503,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.5.1" -source = "git+https://github.com/servo/webrender#37dab545df3a9b6aa5e762f59272eb3d37227476" +source = "git+https://github.com/servo/webrender#61b8f8bfefd472bd71dd9a06c1d16dab28c1fcc0" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2528,7 +2528,7 @@ dependencies = [ [[package]] name = "webrender_traits" version = "0.5.1" -source = "git+https://github.com/servo/webrender#37dab545df3a9b6aa5e762f59272eb3d37227476" +source = "git+https://github.com/servo/webrender#61b8f8bfefd472bd71dd9a06c1d16dab28c1fcc0" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/resources/shaders/prim_shared.glsl b/resources/shaders/prim_shared.glsl index 271601c02df..7336a400624 100644 --- a/resources/shaders/prim_shared.glsl +++ b/resources/shaders/prim_shared.glsl @@ -508,39 +508,31 @@ AngleGradient fetch_angle_gradient(int index) { } struct Blend { - vec4 target_rect; - vec4 src_rect; - vec4 opacity; + vec4 src_id_target_id_opacity; }; Blend fetch_blend(int index) { Blend blend; - int offset = index * 3; + int offset = index * 1; - blend.target_rect = data[offset + 0]; - blend.src_rect = data[offset + 1]; - blend.opacity = data[offset + 2]; + blend.src_id_target_id_opacity = data[offset + 0]; return blend; } struct Composite { - vec4 src0; - vec4 src1; - vec4 target_rect; + vec4 src0_src1_target_id; vec4 info_amount; }; Composite fetch_composite(int index) { Composite composite; - int offset = index * 4; + int offset = index * 2; - composite.src0 = data[offset + 0]; - composite.src1 = data[offset + 1]; - composite.target_rect = data[offset + 2]; - composite.info_amount = data[offset + 3]; + composite.src0_src1_target_id = data[offset + 0]; + composite.info_amount = data[offset + 1]; return composite; } diff --git a/resources/shaders/ps_blend.vs.glsl b/resources/shaders/ps_blend.vs.glsl index 851c9b8962b..479bd67e432 100644 --- a/resources/shaders/ps_blend.vs.glsl +++ b/resources/shaders/ps_blend.vs.glsl @@ -5,15 +5,17 @@ void main(void) { Blend blend = fetch_blend(gl_InstanceID); + Tile src = fetch_tile(int(blend.src_id_target_id_opacity.x)); + Tile dest = fetch_tile(int(blend.src_id_target_id_opacity.y)); - vec2 local_pos = mix(vec2(blend.target_rect.xy), - vec2(blend.target_rect.xy + blend.target_rect.zw), + vec2 local_pos = mix(vec2(dest.target_rect.xy), + vec2(dest.target_rect.xy + dest.target_rect.zw), aPosition.xy); - vec2 st0 = vec2(blend.src_rect.xy) / 2048.0; - vec2 st1 = vec2(blend.src_rect.xy + blend.src_rect.zw) / 2048.0; + vec2 st0 = vec2(src.target_rect.xy) / 2048.0; + vec2 st1 = vec2(src.target_rect.xy + src.target_rect.zw) / 2048.0; vUv = mix(st0, st1, aPosition.xy); - vOpacity = blend.opacity.x; + vOpacity = blend.src_id_target_id_opacity.z; gl_Position = uTransform * vec4(local_pos, 0, 1); } diff --git a/resources/shaders/ps_composite.vs.glsl b/resources/shaders/ps_composite.vs.glsl index 125bd37186b..115a7532be9 100644 --- a/resources/shaders/ps_composite.vs.glsl +++ b/resources/shaders/ps_composite.vs.glsl @@ -5,17 +5,20 @@ void main(void) { Composite composite = fetch_composite(gl_InstanceID); + Tile src0 = fetch_tile(int(composite.src0_src1_target_id.x)); + Tile src1 = fetch_tile(int(composite.src0_src1_target_id.y)); + Tile dest = fetch_tile(int(composite.src0_src1_target_id.z)); - vec2 local_pos = mix(vec2(composite.target_rect.xy), - vec2(composite.target_rect.xy + composite.target_rect.zw), + vec2 local_pos = mix(vec2(dest.target_rect.xy), + vec2(dest.target_rect.xy + dest.target_rect.zw), aPosition.xy); - vec2 st0 = vec2(composite.src0.xy) / 2048.0; - vec2 st1 = vec2(composite.src0.xy + composite.src0.zw) / 2048.0; + vec2 st0 = vec2(src0.target_rect.xy) / 2048.0; + vec2 st1 = vec2(src0.target_rect.xy + src0.target_rect.zw) / 2048.0; vUv0 = mix(st0, st1, aPosition.xy); - st0 = vec2(composite.src1.xy) / 2048.0; - st1 = vec2(composite.src1.xy + composite.src1.zw) / 2048.0; + st0 = vec2(src1.target_rect.xy) / 2048.0; + st1 = vec2(src1.target_rect.xy + src1.target_rect.zw) / 2048.0; vUv1 = mix(st0, st1, aPosition.xy); vInfo = ivec2(composite.info_amount.xy); |