WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
Bug 120583
Hardware-accelerated rendering fails to round to whole pixels
https://bugs.webkit.org/show_bug.cgi?id=120583
Summary
Hardware-accelerated rendering fails to round to whole pixels
Daniel Fischer
Reported
2013-09-01 12:04:50 PDT
Created
attachment 210250
[details]
Test case 1: translate3d When using something that triggers hardware acceleration, such as translate3d or transitions, translating by a non-whole number of pixels makes the contents blurry. I've attached a test case and screenshots of how it renders in the latest WebKit and Firefox nightlies. Try it on a non-retina display, as retina displays will show the translations by "half pixels" correctly.
Attachments
Test case 1: translate3d
(552 bytes, text/html)
2013-09-01 12:04 PDT
,
Daniel Fischer
no flags
Details
Result on Safari with latest WebKit nightly
(8.20 KB, image/png)
2013-09-01 12:05 PDT
,
Daniel Fischer
no flags
Details
Result on latest Firefox/Gecko nightly
(8.02 KB, image/png)
2013-09-01 12:06 PDT
,
Daniel Fischer
no flags
Details
Result on Chrome 29 on Windows
(88.61 KB, image/png)
2013-09-03 11:25 PDT
,
Daniel Fischer
no flags
Details
Test case 2: transition
(462 bytes, text/html)
2013-09-03 11:33 PDT
,
Daniel Fischer
no flags
Details
Test case 3 - Video iframe inside a translate() DIV
(1.67 KB, text/html)
2015-01-27 15:30 PST
,
Bao Thien Ngo
no flags
Details
Result of Test case 3 on latest Webkit Nightly (OSX)
(135.42 KB, image/png)
2015-01-27 15:33 PST
,
Bao Thien Ngo
no flags
Details
View All
Add attachment
proposed patch, testcase, etc.
Daniel Fischer
Comment 1
2013-09-01 12:05:49 PDT
Created
attachment 210251
[details]
Result on Safari with latest WebKit nightly
Daniel Fischer
Comment 2
2013-09-01 12:06:18 PDT
Created
attachment 210252
[details]
Result on latest Firefox/Gecko nightly
Zan Dobersek
Comment 3
2013-09-02 04:23:57 PDT
CC-ing a couple of people to whom this might be of interest. Also confirming.
Simon Fraser (smfr)
Comment 4
2013-09-03 11:15:46 PDT
This is just a side-effect of the underlying framework used to render 3D transforms on Mac. Not much we can do about it.
Daniel Fischer
Comment 5
2013-09-03 11:25:41 PDT
Created
attachment 210392
[details]
Result on Chrome 29 on Windows Are you sure about that Mac thing?
Daniel Fischer
Comment 6
2013-09-03 11:33:03 PDT
Created
attachment 210395
[details]
Test case 2: transition Also, another test case here. While transitioning, the second line is blurry, while the first one isn't.
Simon Fraser (smfr)
Comment 7
2013-09-03 11:40:07 PDT
This is the difference in rendering between asking the underling text subsystem to render at fractional pixel offsets, and rendering at a pixel boundary into a texture, then compositing that texture at a fractional-pixel offset.
Daniel Fischer
Comment 8
2013-09-03 11:52:43 PDT
How does Gecko get this right? Just from looking at the result, it seems to me like they just round beforehand. Didn't dig into the code though.
Daniel Fischer
Comment 9
2013-12-21 13:56:04 PST
Still present in latest nightly on OS X. Probably on other platforms too.
Allan Sandfeld Jensen
Comment 10
2013-12-21 15:12:01 PST
If it is a non rotating or 3d transform, the content can be rounded to whole pixels and the subpixel part put in the subpixel accumulation. That is what we do for accelerated composited layers with subpixel precision position.
Bao Thien Ngo
Comment 11
2015-01-27 15:29:57 PST
I'm attaching a Test case 3 which is a simple 2D translate but includes an iframe to a Vimeo video, however the symptom appears in a very specific case. I have a Macbook Pro with Retina display and an attached Thunderbolt Display. When I view the page on my Macbook Pro's LCD screen, it actually looks fine and crisp. However, when I view it on the Thunderbolt Display, it shows up blurry. I've attached an image comparison of the test page when you load it without the iframe vs when you load it with the iframe; both involve translate() of the DIV element. If Simon Fraser is correct and this is a subsystem issue of Mac OS X, then I can only theorize that that framework is not correctly handling externally attached monitors. But what about the mere act of adding the iframe to the DIV container?
Bao Thien Ngo
Comment 12
2015-01-27 15:30:39 PST
Created
attachment 245483
[details]
Test case 3 - Video iframe inside a translate() DIV
Bao Thien Ngo
Comment 13
2015-01-27 15:33:03 PST
Created
attachment 245484
[details]
Result of Test case 3 on latest Webkit Nightly (OSX) Comparing the loading of the page first without the video iframe, and then with the video iframe.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug