mirror of
https://github.com/servo/servo.git
synced 2025-06-25 09:34:32 +01:00
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 -->
This commit is contained in:
commit
f313beee9b
5 changed files with 27 additions and 30 deletions
4
components/servo/Cargo.lock
generated
4
components/servo/Cargo.lock
generated
|
@ -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)",
|
||||
|
|
4
ports/cef/Cargo.lock
generated
4
ports/cef/Cargo.lock
generated
|
@ -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)",
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue