Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8128944

NPE when loading webpages that use large textures when rendering

XMLWordPrintable

    • web

      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)

            vbaranov Vasiliy Baranov (Inactive)
            kcr Kevin Rushforth
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: