Closed
Bug 1168189
Opened 9 years ago
Closed 9 years ago
PDF file not displayed correctly in Firefox (when Hardware Acceleration is enabled)
Categories
(Core :: Graphics: Canvas2D, defect, P3)
Tracking
()
People
(Reporter: pioruns, Assigned: kyle_fung)
References
Details
(Whiteboard: [pdfjs-c-rendering][pdfjs-d-hwa-on][gfx-noted])
Attachments
(9 files, 2 obsolete files)
250.89 KB,
application/pdf
|
Details | |
401.95 KB,
image/png
|
Details | |
298.81 KB,
image/png
|
Details | |
451.23 KB,
image/png
|
Details | |
29.37 KB,
image/png
|
Details | |
1.96 KB,
text/html
|
Details | |
222.88 KB,
image/png
|
Details | |
3.01 KB,
patch
|
bas.schouten
:
review+
lmandel
:
approval-mozilla-aurora+
lmandel
:
approval-mozilla-beta+
Sylvestre
:
approval-mozilla-release-
Sylvestre
:
approval-mozilla-esr38-
|
Details | Diff | Splinter Review |
385.95 KB,
image/png
|
Details |
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 Build ID: 20150513174244 Steps to reproduce: Open attached PDF file with Firefox 38.0.1 on Windows. PDF file can be also opened straight from the Internet, link: http://ieee-security.org/TC/SPW2015/W2SP/papers/W2SP_2015_submission_32.pdf Go to 2 page. Actual results: On top of page, you see white background with some random shapes and lines here and there. Expected results: You supposed to see 2 images (screenshots) on top of the page. I tried Adobe Acrobat XI (version 11.0.10, english), and SumatraPDF (version 3.0), both displaying document correctly.
I tried it on new Firefox 38.0.1 profile, without any plugins and addons, with all settings on default, same issue. I disabled hardware acceleration in Firefox... and I got it. Looks like it's related to video hardware acceleration. I am using AMD Catalyst 15.4 Beta video driver, for my graphics card AMD Radeon HD 7950. Here's Troubleshooting Information page: Application Basics ------------------ Name: Firefox Version: 38.0.1 Build ID: 20150513174244 Update Channel: release User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 Multiprocess Windows: 0/1 (default: false) Crash Reports for the Last 3 Days --------------------------------- All Crash Reports Extensions ---------- Graphics -------- Adapter Description: AMD Radeon HD 7900 Series Adapter Drivers: aticfx64 aticfx64 aticfx64 aticfx32 aticfx32 aticfx32 atiumd64 atidxx64 atidxx64 atiumdag atidxx32 atidxx32 atiumdva atiumd6a atitmm64 Adapter RAM: 3072 Device ID: 0x6798 Direct2D Enabled: true DirectWrite Enabled: true (6.2.9200.17292) Driver Date: 3-31-2015 Driver Version: 14.502.1014.0 GPU #2 Active: false GPU Accelerated Windows: 1/1 Direct3D 11 (OMTC) Subsys ID: 3000174b Vendor ID: 0x1002 WebGL Renderer: Google Inc. -- ANGLE (AMD Radeon HD 7900 Series Direct3D11 vs_5_0 ps_5_0) windowLayerManagerRemote: true AzureCanvasBackend: direct2d 1.1 AzureContentBackend: direct2d 1.1 AzureFallbackCanvasBackend: cairo AzureSkiaAccelerated: 0 Important Modified Preferences ------------------------------ browser.cache.disk.capacity: 358400 browser.cache.disk.smart_size.first_run: false browser.cache.frecency_experiment: 1 browser.download.importedFromSqlite: true browser.places.smartBookmarksVersion: 7 browser.sessionstore.upgradeBackup.latestBuildID: 20150513174244 browser.startup.homepage_override.buildID: 20150513174244 browser.startup.homepage_override.mstone: 38.0.1 dom.mozApps.used: true extensions.lastAppVersion: 38.0.1 gfx.direct3d.last_used_feature_level_idx: 0 network.cookie.prefsMigrated: true places.history.expiration.transient_current_max_pages: 104858 plugin.disable_full_page_plugin_for_types: application/pdf privacy.sanitize.migrateFx3Prefs: true Important Locked Preferences ---------------------------- JavaScript ---------- Incremental GC: true Accessibility ------------- Activated: true Prevent Accessibility: 0 Library Versions ---------------- NSPR Expected minimum version: 4.10.8 Version in use: 4.10.8 NSS Expected minimum version: 3.18.1 Basic ECC Version in use: 3.18.1 Basic ECC NSSSMIME Expected minimum version: 3.18.1 Basic ECC Version in use: 3.18.1 Basic ECC NSSSSL Expected minimum version: 3.18.1 Basic ECC Version in use: 3.18.1 Basic ECC NSSUTIL Expected minimum version: 3.18.1 Version in use: 3.18.1 Experimental Features ---------------------
Component: Untriaged → PDF Viewer
Attachment #8610213 -
Attachment mime type: application/force-download → application/pdf
I am now uninstalling AMD Catalyst beta drivers, I will see how it goes without drivers and with stable driver.
I just installed stable AMD Catalyst driver 14.12, same issue. When I disable Hardware Acceleration in Firefox images are displaying fine.
Summary: PDF file not displayed correctly in Firefox → PDF file not displayed correctly in Firefox (when Hardware Acceleration is enabled)
Comment 7•9 years ago
|
||
WFM on NVIDIA
OS: Unspecified → Windows 7
Hardware: Unspecified → x86_64
Whiteboard: [pdfjs-c-rendering][pdfjs-d-hwa-on]
Updated•9 years ago
|
Priority: -- → P3
I installed Firefox from Beta Channel, currently it's presenting itself as Firefox 39 Beta 3: Build identifier: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:39.0) Gecko/20100101 Firefox/39.0 In Firefox 39 (Beta) and stable AMD Catalyst drivers issue is still existing. I am attaching screenshot showing PDF displayed incorrectly, AMD Catalyst opened with version information, and Firefox about:support page with Hardware Acceleration details.
Firefox 39 Beta 3 AMD Catalyst Omega 14.12 Hardware acceleration in Firefox enabled
Comment 10•9 years ago
|
||
I don't have AMD hardware available, but can you try http://jsbin.com/gufozi/1/ to see if you can reproduce it there (I extracted code that drawing pictures)?
Flags: needinfo?(pioruns)
Reporter | ||
Comment 11•9 years ago
|
||
(In reply to Yury Delendik (:yury) from comment #10) > I don't have AMD hardware available, but can you try > http://jsbin.com/gufozi/1/ to see if you can reproduce it there (I extracted > code that drawing pictures)? Yes, I can reproduce problem on that page. Screenshot attached below.
Flags: needinfo?(pioruns)
Reporter | ||
Comment 12•9 years ago
|
||
Screenshot of http://output.jsbin.com/gufozi/1/ webpage opened
Comment 13•9 years ago
|
||
Comment 14•9 years ago
|
||
The test case above demonstrates issue with canvas 2d for some AMD hardware on windows and that is not only PDF viewer issue.
Component: PDF Viewer → Canvas: 2D
Product: Firefox → Core
Updated•9 years ago
|
See Also: → https://github.com/mozilla/pdf.js/issues/5986
Comment 16•9 years ago
|
||
If you are interested, I reduce the test case at http://jsbin.com/fugewiquwa/1/. It should display a black rectangle, but not on my computer. The main problem is 'putImageData'. It fails to render image when the image source size is different or offset parameter are not 0. But strange behaviour: when context has been previously manipulated with other methods (in my example I use 'fillRect' for just making a dot), 'putImageData' renders the black rectangle correctly.
Comment 17•9 years ago
|
||
better test case: http://jsbin.com/fiwimimidi/1/
Reporter | ||
Comment 18•9 years ago
|
||
(In reply to samycookie from comment #17) > better test case: http://jsbin.com/fiwimimidi/1/ I just checked that on my machine, with Hardware Acceleration enabled I see 3 black squares, with Acceleration disabled I see 5 black squares.
Updated•9 years ago
|
Whiteboard: [pdfjs-c-rendering][pdfjs-d-hwa-on] → [pdfjs-c-rendering][pdfjs-d-hwa-on][gfx-noted]
Assignee | ||
Comment 19•9 years ago
|
||
Tried to reproduce this on a variety of drivers on an R7 240. The drivers can be taken from here: (http://support.amd.com/en-us/download/desktop/previous?os=Windows%207%20-%2064). I am unable to reproduce using driver 14.4 and previous versions. Pioruns, can you try to reproduce using 14.4?
Flags: needinfo?(pioruns)
Reporter | ||
Comment 20•9 years ago
|
||
I will test this tomorrow, I am downloading driver now. Can you reproduce this on current driver 14.12?
Assignee | ||
Comment 21•9 years ago
|
||
I meant that all versions after 14.4 do exhibit the problem. I've seen it reproduce on 14.9 and up.
Comment 22•9 years ago
|
||
Cannot reproduce this on an R9 290 driver version 14.502.1014.1001.
Reporter | ||
Comment 23•9 years ago
|
||
I just uninstalled AMD Catalyst driver (14.12). Rebooted, I am on default Windows driver (14.502.1014.0). I still can reproduce this problem. Screenshot attached, you can see 3 black squares, driver version and info from about:support.
Flags: needinfo?(pioruns)
Reporter | ||
Comment 24•9 years ago
|
||
Just to confirm, with Hardware Acceleration disabled in Firefox I can see again 5 black squares. Default Windows driver (14.502.1014.0).
Reporter | ||
Comment 25•9 years ago
|
||
I got a clue now. I just taken out my discrete graphics card - Sapphire Radeon HD 7970. I connected monitor to APU (processor is AMD A10-5700 APU). And with hardware acceleration enabled I can see 5 black squares. Still using 14.502.1014.0 driver.
Reporter | ||
Comment 26•9 years ago
|
||
> Pioruns, can you try to reproduce using 14.4?
I installed 14.4 driver. Tried it both on APU and on discrete Radeon HD 7970. In both cases I cannot reproduce problem, I can see 5 black squares nicely.
Flags: needinfo?(kfung)
Reporter | ||
Comment 27•9 years ago
|
||
But there is one more thing worth to mention about 14.4 - Firefox detects that driver is old and disable some acceleration as I understand it. Here's paste from about:support: Graphics Adapter Description AMD Radeon HD 7900 Series Adapter Drivers aticfx64 aticfx64 aticfx64 aticfx32 aticfx32 aticfx32 atiumd64 atidxx64 atidxx64 atiumdag atidxx32 atidxx32 atiumdva atiumd6a atitmm64 Adapter RAM 3072 Asynchronous Pan/Zoom none Device ID 0x6798 Direct2D Enabled Blocked for your graphics driver version. Try updating your graphics driver to version ATI Catalyst 14.6+ or newer. DirectWrite Enabled false (6.2.9200.17292) Driver Date 4-17-2014 Driver Version 14.100.0.0 GPU #2 Active false GPU Accelerated Windows 1/1 Direct3D 11 (OMTC) Subsys ID 3000174b Vendor ID 0x1002 WebGL Renderer Google Inc. -- ANGLE (AMD Radeon HD 7900 Series Direct3D11 vs_5_0 ps_5_0) windowLayerManagerRemote true AzureCanvasBackend skia AzureContentBackend cairo AzureFallbackCanvasBackend cairo AzureSkiaAccelerated 0
Reporter | ||
Comment 28•9 years ago
|
||
And latest result: AMD driver 14.12. APU A10-5700 graphics card is working fine, cannot reproduce issue. After plugging back my discrete HD 7970, again I can reproduce issue. Quick summary: 14.502.1014.0 driver: APU works fine, HD 7970 bugged 14.4 driver: APU works fine, HD 7970 works fine (because Direct2D and DirectWrite is disabled, driver is blacklisted by Firefox) 14.12 driver : APU works fine, HD 7970 bugged In all cases problem seems to be in HD 7970, when APU is used to display graphics problem does not occur.
Assignee | ||
Comment 29•9 years ago
|
||
The problem seems to go away when settings gfx.direct2d.use1_1 to false in about:config. It looks like a driver issue for Direct 2D 1.1 on cards with GCN 1.0 architecture.
Flags: needinfo?(kfung)
Reporter | ||
Comment 30•9 years ago
|
||
So where it can be reported?
Assignee | ||
Comment 31•9 years ago
|
||
This seems to work around it by making CopySurface in the D2D1 backend use the same functions as the D2D backend whenever it can, similar to the work around from Bug 1160070.
Attachment #8624883 -
Flags: review?(bas)
Assignee | ||
Comment 32•9 years ago
|
||
Also, we've sent a bug report to AMD about this issue; just waiting for response.
Comment 33•9 years ago
|
||
Comment on attachment 8624883 [details] [diff] [review] copy-surface-force-bitmap.patch Review of attachment 8624883 [details] [diff] [review]: ----------------------------------------------------------------- ::: gfx/2d/DrawTargetD2D1.cpp @@ +345,5 @@ > + //Draw using image if it's not possible to draw with bitmap > + if (!bitmap && mFormat != SurfaceFormat::A8) { > + mDC->DrawImage(image, D2D1::Point2F(Float(aDestination.x), Float(aDestination.y)), > + D2DRect(srcRect), D2D1_INTERPOLATION_MODE_NEAREST_NEIGHBOR, > + D2D1_COMPOSITE_MODE_BOUNDED_SOURCE_COPY); You need a return here. @@ +348,5 @@ > + D2DRect(srcRect), D2D1_INTERPOLATION_MODE_NEAREST_NEIGHBOR, > + D2D1_COMPOSITE_MODE_BOUNDED_SOURCE_COPY); > + } > + > + mDC->PushAxisAlignedClip(D2DRect(dstRect), D2D1_ANTIALIAS_MODE_ALIASED); This is way more expensive than the approach the code currently takes. Can we somehow only do this on affected hardware or something, or is there some other way we can detect when this is needed.
Assignee | ||
Comment 34•9 years ago
|
||
Replaced the push clip, clear, pop clip stuff by setting the primitive blend mode to copy. Seems to work fine on my machine.
Attachment #8624883 -
Attachment is obsolete: true
Attachment #8624883 -
Flags: review?(bas)
Attachment #8627430 -
Flags: review?(bas)
Reporter | ||
Comment 35•9 years ago
|
||
I would like to test it, can someone compile a webpage with visual test of this patch?
Assignee | ||
Comment 36•9 years ago
|
||
Forgot to reset the blend state Try: https://treeherder.mozilla.org/#/jobs?repo=try&revision=cf919b41cd5f
Attachment #8627430 -
Attachment is obsolete: true
Attachment #8627430 -
Flags: review?(bas)
Attachment #8627748 -
Flags: review?(bas)
Assignee | ||
Comment 37•9 years ago
|
||
Pioruns, you can get a Windows binary from the try build after it's done. It should be done within a few hours. Test it out and see if it works.
Updated•9 years ago
|
Attachment #8627748 -
Flags: review?(bas) → review+
Reporter | ||
Comment 38•9 years ago
|
||
It is done yet? I look at Try webpage not it mostly shows 0% progress.
Comment 39•9 years ago
|
||
Pioruns, the binaries are available at http://ftp.mozilla.org/pub/mozilla.org/firefox/try-builds/kfung@mozilla.com-cf919b41cd5f/try-win32/ (can be found via clicking "B" near "Windows XP opt", then navigating to "Build: x86 windowsxp win" link shown at the bottom left panel)
Keywords: checkin-needed
Reporter | ||
Comment 40•9 years ago
|
||
I tried patch on Nightly version from test build you provided Name Firefox Version 41.0a1 Build ID 20150630092626 It works! 5 squares on website http://jsbin.com/fiwimimidi/1/ with Hardware Acceleration enabled. I restarted to Firefox Beta 64, problem reoccured. Version of Nightly with patches definitely fixes the problem.
Comment 41•9 years ago
|
||
[Tracking Requested - why for this release]: This seems like the kind of thing we'd want to backport anywhere and everywhere.
Assignee: nobody → kfung
Status: UNCONFIRMED → ASSIGNED
status-firefox38:
--- → wontfix
status-firefox38.0.5:
--- → wontfix
status-firefox39:
--- → wontfix
status-firefox40:
--- → affected
status-firefox41:
--- → affected
status-firefox42:
--- → affected
status-firefox-esr38:
--- → affected
tracking-firefox40:
--- → ?
tracking-firefox41:
--- → ?
tracking-firefox42:
--- → ?
tracking-firefox-esr38:
--- → ?
Ever confirmed: true
Comment 42•9 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/8d86b5dc1577
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/8d86b5dc1577
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla42
Assignee | ||
Comment 44•9 years ago
|
||
Comment on attachment 8627748 [details] [diff] [review] copy-surface-force-bitmap-v3.patch [Approval Request Comment] If this is not a sec:{high,crit} bug, please state case for ESR consideration: Improper rendering on some cards User impact if declined: Improper rendering on some cards Fix Landed on Version: Risk to taking this patch (and alternatives if risky): Not much, unless it exposes another driver bug previously not seen String or UUID changes made by this patch: See https://wiki.mozilla.org/Release_Management/ESR_Landing_Process for more info. Approval Request Comment [Feature/regressing bug #]: Bug 1168189 [User impact if declined]: Incorrect rendering [Describe test coverage new/current, TreeHerder]: Manually test correctness [Risks and why]: We want things to render properly [String/UUID change made/needed]:
Attachment #8627748 -
Flags: approval-mozilla-release?
Attachment #8627748 -
Flags: approval-mozilla-esr38?
Attachment #8627748 -
Flags: approval-mozilla-beta?
Attachment #8627748 -
Flags: approval-mozilla-aurora?
Comment 45•9 years ago
|
||
Tracking as we'll want this fix everywhere. I have left ESR38 as a ? for now as we don't yet have a 40+ option.
Comment 46•9 years ago
|
||
Comment on attachment 8627748 [details] [diff] [review] copy-surface-force-bitmap-v3.patch Functional correctness PDF fix verified by the submitter. Beta+ Aurora+ For ESR38, do we know when this issue was introduced? For release, this is not a driver for a point release but can be considered for a ride-along.
Attachment #8627748 -
Flags: approval-mozilla-beta?
Attachment #8627748 -
Flags: approval-mozilla-beta+
Attachment #8627748 -
Flags: approval-mozilla-aurora?
Attachment #8627748 -
Flags: approval-mozilla-aurora+
Reporter | ||
Comment 49•9 years ago
|
||
I can check ESR on my machine, which versions of Firefox should I download to test it? I will be happy to find this regression and identify where it has been introduced.
Comment 50•9 years ago
|
||
Setting for QA verification. This should be in Firefox 40 Beta 2 (ftp://ftp.mozilla.org/pub/mozilla.org/firefox/candidates/40.0b2-candidates/). Reporter and people who reproduced this are welcome to give it a spin and confirm the fix (we may not have the Hardware needed to reproduce the original issue).
Flags: qe-verify+
Reporter | ||
Comment 51•9 years ago
|
||
Screenshot of my desktop running Firefox 40 Beta 2 - bug is fixed. I have opened test case with squares, and original PDF file which discovered this regression, along with about:support tab showing Hardware Acceleration enabled. Big thanks for everyone involved for fixing this issue!
Comment 52•9 years ago
|
||
amazing thanks
Comment 53•9 years ago
|
||
(In reply to pioruns from comment #51) > Screenshot of my desktop running Firefox 40 Beta 2 - bug is fixed. I have > opened test case with squares, and original PDF file which discovered this > regression, along with about:support tab showing Hardware Acceleration > enabled. Big thanks for everyone involved for fixing this issue! Thank you for verifying this so quickly! Marking as verified for Firefox 40 Beta.
Comment 54•9 years ago
|
||
I confirmed this is fixed for me in v40b2 equally. cf. https://github.com/mozilla/pdf.js/issues/5986 Thanks all !
Comment 55•9 years ago
|
||
Comment on attachment 8627748 [details] [diff] [review] copy-surface-force-bitmap-v3.patch We shipped 38 with this bug. I think this can ride the train with 40... Not sure it is critical enough for esr and it can carry some additional risk to the release.
Attachment #8627748 -
Flags: approval-mozilla-release?
Attachment #8627748 -
Flags: approval-mozilla-release-
Attachment #8627748 -
Flags: approval-mozilla-esr38?
Attachment #8627748 -
Flags: approval-mozilla-esr38-
Updated•9 years ago
|
Comment 56•9 years ago
|
||
Removing the qe-verify+ flag since it was already verified fixed on Firefox 40 and we can't reproduce the initial issue.
Flags: qe-verify+
You need to log in
before you can comment on or make changes to this bug.
Description
•