-
Bug
-
Resolution: Fixed
-
P3
-
fx2.0
I instrumented the runtime and found that WebView requests a very large texture without clipping it to the drawing area. All graphics cards have some limit (usually either 4K or 8K), and will fail to allocate a texture with either a width or height that exceeds that. Note that this is an addressing limitation not a memory limitation, since the texture in question does not take up all that much memory.
Note that on my graphics card, I also get an NPE on www.yahoo.com (which uses a texture of > 4K but < 8K).
To reproduce this:
java WebLauncher http://autos.yahoo.com/
java.lang.RuntimeException: ERROR: unable to create texture 11580x50
at com.sun.prism.d3d.D3DResourceFactory.fatalError(D3DResourceFactory.java:377)
at com.sun.prism.d3d.D3DResourceFactory.createTexture(D3DResourceFactory.java:77)
at com.sun.prism.d3d.D3DResourceFactory.createTexture(D3DResourceFactory.java:39)
at com.sun.prism.impl.BaseResourceFactory.createTexture(BaseResourceFactory.java:109)
at com.sun.prism.impl.BaseResourceFactory.createTexture(BaseResourceFactory.java:100)
at com.sun.webpane.sg.prism.WCImageImpl.getTexture(WCImageImpl.java:117)
at com.sun.webpane.sg.prism.WCGraphicsPrismContext.drawImage(WCGraphicsPrismContext.java:618)
at com.sun.webpane.platform.graphics.GraphicsDecoder.drawImage(GraphicsDecoder.java:423)
at com.sun.webpane.platform.graphics.GraphicsDecoder.decode(GraphicsDecoder.java:166)
at com.sun.webpane.platform.graphics.WCRenderQueue.decode(WCRenderQueue.java:35)
at com.sun.webpane.platform.WebPage.paint2GC(WebPage.java:631)
at com.sun.webpane.platform.WebPage.paint(WebPage.java:610)
at com.sun.javafx.sg.prism.NGWebView.renderContent(NGWebView.java:68)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1128)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:202)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:397)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1128)
at com.sun.javafx.tk.quantum.PaintRunnable.doPaint(PaintRunnable.java:217)
at com.sun.javafx.tk.quantum.PaintRunnable.paintImpl(PaintRunnable.java:148)
at com.sun.javafx.tk.quantum.PaintRunnable.run(PaintRunnable.java:329)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at com.sun.prism.render.RenderJob.run(RenderJob.java:29)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at com.sun.javafx.tk.quantum.QuantumRenderer$ObservedRunnable.run(QuantumRenderer.java:67)
at java.lang.Thread.run(Thread.java:662)
Note that on my graphics card, I also get an NPE on www.yahoo.com (which uses a texture of > 4K but < 8K).
To reproduce this:
java WebLauncher http://autos.yahoo.com/
java.lang.RuntimeException: ERROR: unable to create texture 11580x50
at com.sun.prism.d3d.D3DResourceFactory.fatalError(D3DResourceFactory.java:377)
at com.sun.prism.d3d.D3DResourceFactory.createTexture(D3DResourceFactory.java:77)
at com.sun.prism.d3d.D3DResourceFactory.createTexture(D3DResourceFactory.java:39)
at com.sun.prism.impl.BaseResourceFactory.createTexture(BaseResourceFactory.java:109)
at com.sun.prism.impl.BaseResourceFactory.createTexture(BaseResourceFactory.java:100)
at com.sun.webpane.sg.prism.WCImageImpl.getTexture(WCImageImpl.java:117)
at com.sun.webpane.sg.prism.WCGraphicsPrismContext.drawImage(WCGraphicsPrismContext.java:618)
at com.sun.webpane.platform.graphics.GraphicsDecoder.drawImage(GraphicsDecoder.java:423)
at com.sun.webpane.platform.graphics.GraphicsDecoder.decode(GraphicsDecoder.java:166)
at com.sun.webpane.platform.graphics.WCRenderQueue.decode(WCRenderQueue.java:35)
at com.sun.webpane.platform.WebPage.paint2GC(WebPage.java:631)
at com.sun.webpane.platform.WebPage.paint(WebPage.java:610)
at com.sun.javafx.sg.prism.NGWebView.renderContent(NGWebView.java:68)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1128)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:202)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:397)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1128)
at com.sun.javafx.tk.quantum.PaintRunnable.doPaint(PaintRunnable.java:217)
at com.sun.javafx.tk.quantum.PaintRunnable.paintImpl(PaintRunnable.java:148)
at com.sun.javafx.tk.quantum.PaintRunnable.run(PaintRunnable.java:329)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at com.sun.prism.render.RenderJob.run(RenderJob.java:29)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at com.sun.javafx.tk.quantum.QuantumRenderer$ObservedRunnable.run(QuantumRenderer.java:67)
at java.lang.Thread.run(Thread.java:662)
- relates to
-
JDK-8128239 Texture allocation should return null to caller rather than trying to use texture and getting NPE
-
- Closed
-
-
JDK-8101448 Need a way to query the maximum supported texture dimensions in Prism
-
- Closed
-
-
JDK-8128766 WebView fails to display very large images in d3d mode
-
- Resolved
-
-
JDK-8115846 WebView fails to render fast/canvas/canvas-skia-excessive-size.html correctly in d3d mode
-
- Closed
-