aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-09-19 21:47:40 -0500
committerGitHub <noreply@github.com>2016-09-19 21:47:40 -0500
commitf313beee9bf70a73d1b0d06b1e36e67ad9e28deb (patch)
tree5529c778e7103ec96004d22b30de18d9f42323f2
parent993fbc4320e6429c3edb43c9c5a3221a801f6f6f (diff)
parent7c8664e6ec30c311f1aaa79f80fcc5732799a543 (diff)
downloadservo-f313beee9bf70a73d1b0d06b1e36e67ad9e28deb.tar.gz
servo-f313beee9bf70a73d1b0d06b1e36e67ad9e28deb.zip
Auto merge of #13330 - glennw:update-wr-prim-cache, r=pcwalton
Update webrender (prim cache changes, blend/composite shaders). <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13330) <!-- Reviewable:end -->
-rw-r--r--components/servo/Cargo.lock4
-rw-r--r--ports/cef/Cargo.lock4
-rw-r--r--resources/shaders/prim_shared.glsl22
-rw-r--r--resources/shaders/ps_blend.vs.glsl12
-rw-r--r--resources/shaders/ps_composite.vs.glsl15
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);