Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix AA edges on border segments. #2335

Merged
merged 1 commit into from Jan 24, 2018
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

@@ -153,6 +153,7 @@ void main(void) {
vec4 edge_distances;
vec4 color0, color1;
vec2 color_delta;
vec4 edge_mask;

// TODO(gw): Now that all border styles are supported, the switch
// statement below can be tidied up quite a bit.
@@ -180,6 +181,7 @@ void main(void) {
color_delta = vec2(1.0);
vIsBorderRadiusLessThanBorderWidth = any(lessThan(border.radii[0].xy,
border.widths.xy)) ? 1.0 : 0.0;
edge_mask = vec4(1.0, 1.0, 0.0, 0.0);
break;
}
case 1: {
@@ -206,6 +208,7 @@ void main(void) {
color_delta = vec2(1.0, -1.0);
vIsBorderRadiusLessThanBorderWidth = any(lessThan(border.radii[0].zw,
border.widths.zy)) ? 1.0 : 0.0;
edge_mask = vec4(0.0, 1.0, 1.0, 0.0);
break;
}
case 2: {
@@ -232,6 +235,7 @@ void main(void) {
color_delta = vec2(-1.0);
vIsBorderRadiusLessThanBorderWidth = any(lessThan(border.radii[1].xy,
border.widths.zw)) ? 1.0 : 0.0;
edge_mask = vec4(0.0, 0.0, 1.0, 1.0);
break;
}
case 3: {
@@ -258,6 +262,7 @@ void main(void) {
color_delta = vec2(-1.0, 1.0);
vIsBorderRadiusLessThanBorderWidth = any(lessThan(border.radii[1].zw,
border.widths.xw)) ? 1.0 : 0.0;
edge_mask = vec4(1.0, 0.0, 0.0, 1.0);
break;
}
}
@@ -301,7 +306,7 @@ void main(void) {
VertexInfo vi = write_transform_vertex(segment_rect,
prim.local_rect,
prim.local_clip_rect,
vec4(1.0),
edge_mask,
prim.z,
prim.scroll_node,
prim.task);
@@ -152,6 +152,8 @@ void main(void) {
bool color_flip;

RectWithSize segment_rect;
vec4 edge_mask;

switch (sub_part) {
case 0: {
segment_rect.p0 = vec2(corners.tl_outer.x, corners.tl_inner.y);
@@ -165,6 +167,7 @@ void main(void) {
segment_rect.size.y,
segment_rect.p0.y,
segment_rect.p0.x + 0.5 * segment_rect.size.x);
edge_mask = vec4(1.0, 0.0, 1.0, 0.0);
break;
}
case 1: {
@@ -179,6 +182,7 @@ void main(void) {
segment_rect.size.x,
segment_rect.p0.x,
segment_rect.p0.y + 0.5 * segment_rect.size.y);
edge_mask = vec4(0.0, 1.0, 0.0, 1.0);
break;
}
case 2: {
@@ -193,6 +197,7 @@ void main(void) {
segment_rect.size.y,
segment_rect.p0.y,
segment_rect.p0.x + 0.5 * segment_rect.size.x);
edge_mask = vec4(1.0, 0.0, 1.0, 0.0);
break;
}
case 3: {
@@ -207,6 +212,7 @@ void main(void) {
segment_rect.size.x,
segment_rect.p0.x,
segment_rect.p0.y + 0.5 * segment_rect.size.y);
edge_mask = vec4(0.0, 1.0, 0.0, 1.0);
break;
}
}
@@ -219,7 +225,7 @@ void main(void) {
VertexInfo vi = write_transform_vertex(segment_rect,
prim.local_rect,
prim.local_clip_rect,
vec4(1.0),
edge_mask,
prim.z,
prim.scroll_node,
prim.task);
Binary file not shown.
@@ -0,0 +1,19 @@
---
root:
items:
- type: stacking-context
bounds: [50, 50, 100, 100]
transform: rotate(30)
items:
- type: border
bounds: [ 10, 10, 100, 100 ]
width: [ 10, 10, 10, 10 ]
border-type: normal
style: solid
color: [ red, green, blue, black ]
radius: {
top-left: [20, 20],
top-right: [10, 10],
bottom-left: [25, 25],
bottom-right: [0, 0],
}
Binary file not shown.
@@ -11,4 +11,4 @@ fuzzy(1,88) == perspective.yaml perspective.png
== segments-bug.yaml segments-bug-ref.yaml
== content-offset.yaml content-offset.png
== coord-system.yaml coord-system.png

zoom(4) == border-zoom.yaml border-zoom.png
@@ -12,6 +12,11 @@ args:
short: v
long: verbose
help: Enable verbose display
- zoom:
short: z
long: zoom
help: Set zoom factor
takes_value: true
- debug:
short: d
long: debug
@@ -347,7 +347,7 @@ fn main() {
})
.unwrap_or(DeviceUintSize::new(1920, 1080));
let is_headless = args.is_present("headless");

let zoom_factor = args.value_of("zoom").map(|z| z.parse::<f32>().unwrap());
let mut window = make_window(size, dp_ratio, args.is_present("vsync"), is_headless);
let dp_ratio = dp_ratio.unwrap_or(window.hidpi_factor());
let dim = window.get_inner_size();
@@ -376,6 +376,7 @@ fn main() {
args.is_present("no_batch"),
args.is_present("precache"),
args.is_present("slow_subpixel"),
zoom_factor.unwrap_or(1.0),
notifier,
);

@@ -77,6 +77,7 @@ pub struct Reftest {
expected_alpha_targets: Option<usize>,
expected_color_targets: Option<usize>,
disable_dual_source_blending: bool,
zoom_factor: f32,
}

impl Display for Reftest {
@@ -194,6 +195,7 @@ impl ReftestManifest {
let mut expected_alpha_targets = None;
let mut expected_draw_calls = None;
let mut disable_dual_source_blending = false;
let mut zoom_factor = 1.0;

for (i, token) in tokens.iter().enumerate() {
match *token {
@@ -214,6 +216,10 @@ impl ReftestManifest {
break;
}
}
function if function.starts_with("zoom") => {
let (_, args, _) = parse_function(function);
zoom_factor = args[0].parse().unwrap();
}
function if function.starts_with("fuzzy") => {
let (_, args, _) = parse_function(function);
max_difference = args[0].parse().unwrap();
@@ -261,6 +267,7 @@ impl ReftestManifest {
expected_alpha_targets,
expected_color_targets,
disable_dual_source_blending,
zoom_factor,
});

break;
@@ -328,6 +335,8 @@ impl<'a> ReftestHarness<'a> {
fn run_reftest(&mut self, t: &Reftest) -> bool {
println!("REFTEST {}", t);

self.wrench.set_page_zoom(ZoomFactor::new(t.zoom_factor));

if t.disable_dual_source_blending {
self.wrench
.api
@@ -177,6 +177,7 @@ impl Wrench {
no_batch: bool,
precache_shaders: bool,
disable_dual_source_blending: bool,
zoom_factor: f32,
notifier: Option<Box<RenderNotifier>>,
) -> Self {
println!("Shader override path: {:?}", shader_override_path);
@@ -231,6 +232,7 @@ impl Wrench {
let document_id = api.add_document(size, 0);

let graphics_api = renderer.get_graphics_api_info();
let zoom_factor = ZoomFactor::new(zoom_factor);

let mut wrench = Wrench {
window_size: size,
@@ -243,7 +245,7 @@ impl Wrench {
rebuild_display_lists: do_rebuild,
verbose,
device_pixel_ratio: dp_ratio,
page_zoom_factor: ZoomFactor::new(1.0),
page_zoom_factor: zoom_factor,

root_pipeline_id: PipelineId(0, 0),

@@ -253,6 +255,7 @@ impl Wrench {
callbacks,
};

wrench.set_page_zoom(zoom_factor);
wrench.set_title("start");
let mut txn = Transaction::new();
txn.set_root_pipeline(wrench.root_pipeline_id);
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.