Bug 173466 - Layer compositing under scaling or rotation bleeds fully obscured layers
Summary: Layer compositing under scaling or rotation bleeds fully obscured layers
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: Safari 10
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-06-16 05:41 PDT by Onne Gorter
Modified: 2017-06-19 06:05 PDT (History)
3 users (show)

See Also:


Attachments
test file showing bleeding (595 bytes, text/html)
2017-06-19 05:59 PDT, Onne Gorter
no flags Details
screenshot of bleed, the black lines are not supposed to be there (7.78 KB, image/png)
2017-06-19 06:01 PDT, Onne Gorter
no flags Details
example of bleed when rotated (597 bytes, text/html)
2017-06-19 06:02 PDT, Onne Gorter
no flags Details
screenshot of bleed when rotated, the black lines are not supposed to be there (16.20 KB, image/png)
2017-06-19 06:03 PDT, Onne Gorter
no flags Details
nested layers result in the same bleeding (626 bytes, text/html)
2017-06-19 06:05 PDT, Onne Gorter
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Onne Gorter 2017-06-16 05:41:49 PDT
Two layers with identical sizes and transforms and placing, the top layer should fully obscure the first. But instead, depending on scaling or rotations, there is horrible bleeding. Firefox works except under rotation. 3d rendering api's work this way.

example html:
```
<!--
Demonstration of bleeding in layer composition.
1) Remove scale3d() from the outer div, or using "nicer" scales, and there is no bleeding.
2) Setting rotateZ(1deg) on the inner divs and there is also bleeding.
(Notice mozilla only has bleeding for case 2.)
-->
<div id="outer" style="
    position: absolute;
    width: 1000px;
    height: 1000px;
    transform: translate3d(50px, 50px, 0px) scale3d(0.61, 0.61, 1);
    background-color: rgba(255, 220, 220, 1);
">
    <div id="inner1" style="
        position: absolute;
        width: 400px;
        height: 500px;
        transform: translate3d(10px, 10px, 0px) rotateZ(0deg);
        background-color: rgb(0, 0, 0);
        "></div>
    <div id="inner2" style="
        position: absolute;
        width: 400px;
        height: 500px;
        transform: translate3d(10px, 10px, 0px) rotateZ(0deg);
        background-color: rgba(220, 255, 220, 1);
        "></div>
</div>
```
Comment 1 Simon Fraser (smfr) 2017-06-16 07:57:30 PDT
Please attach a test case as an html file, and screenshots.
Comment 2 Onne Gorter 2017-06-19 05:59:39 PDT
Created attachment 313280 [details]
test file showing bleeding
Comment 3 Onne Gorter 2017-06-19 06:01:02 PDT
Created attachment 313281 [details]
screenshot of bleed, the black lines are not supposed to be there
Comment 4 Onne Gorter 2017-06-19 06:02:36 PDT
Created attachment 313283 [details]
example of bleed when rotated
Comment 5 Onne Gorter 2017-06-19 06:03:35 PDT
Created attachment 313284 [details]
screenshot of bleed when rotated, the black lines are not supposed to be there
Comment 6 Onne Gorter 2017-06-19 06:05:55 PDT
Created attachment 313285 [details]
nested layers result in the same bleeding