| author | Dzmitry Malyshau <dmalyshau@mozilla.com> |
| Tue, 14 Jan 2020 17:54:56 +0000 | |
| changeset 510229 | 5bd86c86aa88b170d7f5774a211bff47d306a174 |
| parent 510228 | c9e030967f2de8dd82a251f79c590392dae15402 |
| child 510230 | 2c381bb89f530f6d45ba51e0ffeac41141f83521 |
| push id | 37015 |
| push user | cbrindusan@mozilla.com |
| push date | Wed, 15 Jan 2020 04:16:28 +0000 |
| treeherder | mozilla-central@2ee6c4c25052 [default view] [failures only] |
| perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
| reviewers | jrmuizel |
| bugs | 1609136 |
| milestone | 74.0a1 |
| first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
| last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
| gfx/wr/webrender/res/cs_border_solid.glsl | file | annotate | diff | comparison | revisions | |
| gfx/wr/webrender/src/device/gl.rs | file | annotate | diff | comparison | revisions |
--- a/gfx/wr/webrender/res/cs_border_solid.glsl +++ b/gfx/wr/webrender/res/cs_border_solid.glsl @@ -47,18 +47,18 @@ varying vec2 vPos; in vec2 aTaskOrigin; in vec4 aRect; in vec4 aColor0; in vec4 aColor1; in int aFlags; in vec2 aWidths; in vec2 aRadii; -in vec4 aHorizontallyAdjacentCorner; -in vec4 aVerticallyAdjacentCorner; +in vec4 aClipParams1; +in vec4 aClipParams2; vec2 get_outer_corner_scale(int segment) { vec2 p; switch (segment) { case SEGMENT_TOP_LEFT: p = vec2(0.0, 0.0); break; @@ -107,26 +107,26 @@ void main(void) { vColor0 = aColor0; vColor1 = aColor1; vClipCenter_Sign = vec4(outer + clip_sign * aRadii, clip_sign); vClipRadii = vec4(aRadii, max(aRadii - aWidths, 0.0)); vColorLine = vec4(outer, aWidths.y * -clip_sign.y, aWidths.x * clip_sign.x); vec2 horizontal_clip_sign = vec2(-clip_sign.x, clip_sign.y); - vHorizontalClipCenter_Sign = vec4(aHorizontallyAdjacentCorner.xy + - horizontal_clip_sign * aHorizontallyAdjacentCorner.zw, + vHorizontalClipCenter_Sign = vec4(aClipParams1.xy + + horizontal_clip_sign * aClipParams1.zw, horizontal_clip_sign); - vHorizontalClipRadii = aHorizontallyAdjacentCorner.zw; + vHorizontalClipRadii = aClipParams1.zw; vec2 vertical_clip_sign = vec2(clip_sign.x, -clip_sign.y); - vVerticalClipCenter_Sign = vec4(aVerticallyAdjacentCorner.xy + - vertical_clip_sign * aVerticallyAdjacentCorner.zw, + vVerticalClipCenter_Sign = vec4(aClipParams2.xy + + vertical_clip_sign * aClipParams2.zw, vertical_clip_sign); - vVerticalClipRadii = aVerticallyAdjacentCorner.zw; + vVerticalClipRadii = aClipParams2.zw; gl_Position = uTransform * vec4(aTaskOrigin + aRect.xy + vPos, 0.0, 1.0); } #endif #ifdef WR_FRAGMENT_SHADER void main(void) { float aa_range = compute_aa_range(vPos);
--- a/gfx/wr/webrender/src/device/gl.rs +++ b/gfx/wr/webrender/src/device/gl.rs @@ -1965,16 +1965,34 @@ impl Device { if self.cached_programs.is_some() { self.gl.program_parameter_i(program.id, gl::PROGRAM_BINARY_RETRIEVABLE_HINT, gl::TRUE as gl::GLint); } // Link! self.gl.link_program(program.id); + if cfg!(debug_assertions) { + // Check that all our overrides worked + for (i, attr) in descriptor + .vertex_attributes + .iter() + .chain(descriptor.instance_attributes.iter()) + .enumerate() + { + //Note: we can't assert here because the driver may optimize out some of the + // vertex attributes legitimately, returning their location to be -1. + let location = self.gl.get_attrib_location(program.id, attr.name); + if location != i as gl::GLint { + warn!("Attribute {:?} is not found in the shader {}. Expected at {}, found at {}", + attr, program.source_info.base_filename, i, location); + } + } + } + // GL recommends detaching and deleting shaders once the link // is complete (whether successful or not). This allows the driver // to free any memory associated with the parsing and compilation. self.gl.detach_shader(program.id, vs_id); self.gl.detach_shader(program.id, fs_id); self.gl.delete_shader(vs_id); self.gl.delete_shader(fs_id);