Uploaded image for project: 'Qt 3D Studio'
  1. Qt 3D Studio
  2. QT3DS-4235

Rendering text crashes when running out of glyph cache

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P1: Critical
    • Resolution: Fixed
    • Affects Version/s: Qt 3D Studio 2.7
    • Fix Version/s: None
    • Component/s: OpenGL Runtime
    • Labels:
      None
    • Platform/s:
      Integrity, Windows

      Description

      Can be reproduced on Windows with manually reducing the glyph cache texture size to 256 and running the modified qmldatainput example that plays back song lyrics with Chinese characters for exhausting the cache.

      diff --git a/src/runtimerender/Qt3DSDistanceFieldGlyphCache.cpp b/src/runtimerender/Qt3DSDistanceFieldGlyphCache.cpp
      index d19c9f6..a909fb4 100644
      --- a/src/runtimerender/Qt3DSDistanceFieldGlyphCache.cpp
      +++ b/src/runtimerender/Qt3DSDistanceFieldGlyphCache.cpp
      @@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
       // Should work on most hardware. Used as stop gap until Qt 3D provides a
       // way to retrieve the system value
       #ifndef Q3DSDISTANCEFIELDGLYPHCACHE_MAXIMUM_TEXURE_SIZE
      -#  define Q3DSDISTANCEFIELDGLYPHCACHE_MAXIMUM_TEXURE_SIZE 2048
      +#  define Q3DSDISTANCEFIELDGLYPHCACHE_MAXIMUM_TEXURE_SIZE 256
       #endif
      

      Tried backporting changes* done to QtDeclarative  for the glyph cache fixing similar issues but the issue still remains. it crashes in Windows in GPU libraries because (uninitialized) texture size being allocated is over the max texture size.

      height 1414812758 int
      width 256 int 
                                                                                                                                      
                                                                                                                                      
      1   Q3DSDistanceFieldGlyphCache::resizeTexture                         Qt3DSDistanceFieldGlyphCache.cpp     113  0x7ffd32892f87 
      2   Q3DSDistanceFieldGlyphCache::storeGlyphs                           Qt3DSDistanceFieldGlyphCache.cpp     146  0x7ffd3289113d 
      3   QQuickItemPrivate::childContainerNode                              Qt5Quickd                                 0x7ffd38496359 
      4   Q3DSDistanceFieldGlyphCache::processPendingGlyphs                  Qt3DSDistanceFieldGlyphCache.cpp     255  0x7ffd32891504 
      5   qt3ds::render::Q3DSDistanceFieldRenderer::buildGlyphsPerTexture    Qt3DSDistanceFieldRenderer.cpp       381  0x7ffd3251bc91 
      6   qt3ds::render::Q3DSDistanceFieldRenderer::renderText               Qt3DSDistanceFieldRenderer.cpp       950  0x7ffd3251e8eb 
      7   qt3ds::render::SDistanceFieldRenderable::Render                    Qt3DSRenderableObjects.cpp           516  0x7ffd328d1fe3 
      8   qt3ds::render::RenderRenderable                                    Qt3DSRendererImplLayerRenderData.cpp 914  0x7ffd325bfdbc 
      9   qt3ds::render::SLayerRenderData::renderTransparentObjectsPass      Qt3DSRendererImplLayerRenderData.cpp 1066 0x7ffd328c6d8f 
      10  qt3ds::render::SLayerRenderData::RunRenderPass                     Qt3DSRendererImplLayerRenderData.cpp 1187 0x7ffd328c5ef1 
      11  qt3ds::render::SLayerRenderData::Render                            Qt3DSRendererImplLayerRenderData.cpp 1199 0x7ffd328bef23 
      12  qt3ds::render::SLayerRenderData::RenderToTexture                   Qt3DSRendererImplLayerRenderData.cpp 1786 0x7ffd328c1ea5 
      13  qt3ds::render::SLayerRenderToTextureRunnable::Run                  Qt3DSRendererImplLayerRenderData.cpp 2435 0x7ffd32357247 
      14  `anonymous namespace'::SRenderList::RunRenderTasks                 Qt3DSRenderRenderList.cpp            108  0x7ffd32856c85 
      15  QVector<float>::reallocData                                        Qt3DSRenderContextCore.cpp           888  0x7ffd3250763a 
      16  `anonymous namespace'::Qt3DSRenderSceneManager::RenderPresentation Qt3DSRenderRuntimeBinding.cpp        1568 0x7ffd323dd592 
      17  SApp::Render                                                       Qt3DSApplication.cpp                 1100 0x7ffd323a5d40 
      18  SApp::UpdateAndRender                                              Qt3DSApplication.cpp                 1193 0x7ffd323ac93e 
      19  Q3DStudio::CRuntimeView::Render                                    Qt3DSRuntimeView.cpp                 414  0x7ffd32362e8b 
      20  Q3DSViewer::Q3DSViewerApp::Render                                  Qt3DSViewerApp.cpp                   544  0x7ffd3234a936 
      ... <More>                                                                                                                      
      

      *9a53834f1e7fce2fc3b1ecc2a311faedbc371d37 *46d72a117df642135718b38995346267312c4808  

        Attachments

        1. backport.patch
          7 kB
        2. qmldatainput.zip
          529 kB
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

            Assignee:
            esabraha Eskil Abrahamsen Blomfeldt
            Reporter:
            e0150566 Janne Koskinen
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Gerrit Reviews

                There are no open Gerrit changes