зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset dec00fcb9bea (bug 1695804) for causing wrench bustages. CLOSED TREE
This commit is contained in:
Родитель
cc2f1a41ed
Коммит
065d53dec9
|
@ -6027,29 +6027,19 @@ impl PicturePrimitive {
|
|||
let parent_device_pixel_scale = state.current_surface().device_pixel_scale;
|
||||
let surface_spatial_node_index = self.spatial_node_index;
|
||||
|
||||
// Filters must be applied before transforms, to do this, we can mark this picture as establishing a raster root.
|
||||
let has_svg_filter = if let PictureCompositeMode::SvgFilter(..) = composite_mode {
|
||||
true
|
||||
} else {
|
||||
false
|
||||
};
|
||||
|
||||
let surface_to_parent_transform = frame_context.spatial_tree
|
||||
.get_relative_transform(surface_spatial_node_index, parent_raster_node_index);
|
||||
|
||||
// Check if there is perspective or if an SVG filter is applied, and thus whether a new
|
||||
// rasterization root should be established.
|
||||
let establishes_raster_root = match composite_mode {
|
||||
PictureCompositeMode::TileCache { .. } => {
|
||||
// Picture caches are special cased - they never need to establish a raster root. In future,
|
||||
// we will probably remove TileCache as a specific composite mode.
|
||||
false
|
||||
}
|
||||
PictureCompositeMode::SvgFilter(..) => {
|
||||
// Filters must be applied before transforms, to do this, we can mark this picture as establishing a raster root.
|
||||
true
|
||||
}
|
||||
PictureCompositeMode::MixBlend(..) |
|
||||
PictureCompositeMode::Filter(..) |
|
||||
PictureCompositeMode::ComponentTransferFilter(..) |
|
||||
PictureCompositeMode::Blit(..) => {
|
||||
// TODO(gw): As follow ups, individually move each of these composite modes to create raster roots.
|
||||
surface_to_parent_transform.is_perspective()
|
||||
}
|
||||
};
|
||||
let establishes_raster_root = has_svg_filter || surface_to_parent_transform.is_perspective();
|
||||
|
||||
let (raster_spatial_node_index, device_pixel_scale) = if establishes_raster_root {
|
||||
// If a raster root is established, this surface should be scaled based on the scale factors of the surface raster to parent raster transform.
|
||||
|
|
|
@ -3,4 +3,3 @@
|
|||
# TODO: Fix rasterizer inaccuracies so this is the same regardless of tile size!
|
||||
!* prim-suite.yaml
|
||||
== mix-blend-clip.yaml mix-blend-clip-ref.yaml
|
||||
platform(linux) == tile-cache-raster-root.yaml tile-cache-raster-root.png
|
||||
|
|
Двоичные данные
gfx/wr/wrench/reftests/tiles/tile-cache-raster-root.png
Двоичные данные
gfx/wr/wrench/reftests/tiles/tile-cache-raster-root.png
Двоичный файл не отображается.
До Ширина: | Высота: | Размер: 11 KiB |
|
@ -1,40 +0,0 @@
|
|||
# Based on a reduced case from blend-clipped.yaml, ensure that if tile caches don't create
|
||||
# raster roots (which messes with the special case handling and positioning of them).
|
||||
---
|
||||
root:
|
||||
items:
|
||||
-
|
||||
type: "stacking-context"
|
||||
items:
|
||||
-
|
||||
bounds: [0, 111, 1887, 1971]
|
||||
type: iframe
|
||||
id: [1, 3]
|
||||
id: [1, 1]
|
||||
pipelines:
|
||||
-
|
||||
id: [1, 3]
|
||||
items:
|
||||
-
|
||||
type: "scroll-frame"
|
||||
id: 2
|
||||
bounds: [0, 0, 1887, 1971]
|
||||
-
|
||||
"clip-and-scroll": 2
|
||||
type: "stacking-context"
|
||||
items:
|
||||
-
|
||||
bounds: [0, -186, 1887, 239]
|
||||
"clip-and-scroll": 2
|
||||
type: clip
|
||||
id: 4
|
||||
-
|
||||
bounds: [-660.45, -186, 0, 0]
|
||||
"clip-and-scroll": 4
|
||||
type: "stacking-context"
|
||||
transform: [1, 0, 0, 0, -0.57735026, 1, 0, 0, 0, 0, 1, 0, 68.849, 0, 0, 1]
|
||||
items:
|
||||
-
|
||||
bounds: [0, 0, 1887, 239]
|
||||
type: rect
|
||||
color: blue
|
Загрузка…
Ссылка в новой задаче