1. 10 Nov, 2014 - 1 commit
    • Eskil Abrahamsen Blomfeldt's avatar
      Revert "Fix pixel bleed in BorderImage" · 4d15f528
      Eskil Abrahamsen Blomfeldt authored
      This reverts commit a9238292.
      
      It also reverts follow-up commits:
        87755d04
        c2c710e5
        cc8a76ce
      
      
      
      The new implementation is much too slow because it will cause each
      section of the border image to be uploaded to the atlas, and it will
      not be shared between different border images nor between different
      sizes of the border. The performance regression is so significant
      that it's not worth it for the original bug fix.
      
      We leave the tests around, so some of those might regress due to
      this.
      
      Change-Id: I3f56f4564255ebb77e6487881a6a11b19ad0234e
      Task-number: QTBUG-42288
      Task-number: QTBUG-35838
      Reviewed-by: default avatarMichael Brasser <michael.brasser@live.com>
      4d15f528
  2. 05 Nov, 2014 - 1 commit
  3. 01 Oct, 2014 - 1 commit
  4. 10 Sep, 2014 - 1 commit
    • Eskil Abrahamsen Blomfeldt's avatar
      Fix pixel bleed in BorderImage · a9238292
      Eskil Abrahamsen Blomfeldt authored
      
      Keeping all patches of the border image in the same texture
      with different sample points can cause parts of the border
      to bleed over to the center patch. To rectify this, we
      create a separate texture for each of the nine patches we
      need, and separate image nodes.
      
      To avoid applying antialiasing on the interior edges of the
      border image, we introduce new antialiasing flags which can
      be used to specify precisely which edges of the image should
      be antialiased.
      
      [ChangeLog][BorderImage] Fixed possible pixel bleed between
      border patches and center patch in BorderImage.
      
      Change-Id: Icc292b3969217320eecca99e79675316c42eab08
      Task-number: QTBUG-35838
      Reviewed-by: default avatarGunnar Sletta <gunnar@sletta.org>
      a9238292
  5. 27 Aug, 2014 - 1 commit
  6. 25 Aug, 2014 - 1 commit
  7. 23 Aug, 2014 - 2 commits
  8. 08 Aug, 2014 - 2 commits
  9. 13 Nov, 2013 - 1 commit
    • Sean Harmer's avatar
      Adapt Qt Quick 2 renderer to work with OpenGL Core Profile · 3afffa47
      Sean Harmer authored
      
      The basic approach is to have the batched renderer create and bind a
      vertex array object if it detects we are using an OpenGL Core profile
      context. The VAO is bound for the duration of the QQ2 renderer's
      work cycle and unbound at the end so as to not interfere with any
      other VAO's a user may wish to use.
      
      All shaders have been copied and ported to be compliant with the
      GLSL 150 core specification which is the minimum for a Core profile
      context (OpenGL 3.2 Core). We are not using any newer features as
      yet so this will work anywhere we can get a Core profile context.
      
      The QSGShaderSourceBuilder class has been extended to resolve any
      requests for shaders to the same basefilename with "_core"
      appended prior to any file extension. This could be extended in
      the future to allow version, or GPU or platform specific shaders.
      
      The QSGShaderSourceBuilder has also been extended to allow it to
      insert #define definitions in the prologue of a shader. Any such
      definition is inserted:
      
      * After the last #extension directive (if any are found)
      * Otherwise after the #version directive (if found)
      * Otherwise at the start of the shader source
      
      This is required by the custom particle shaders which make
      extensive use of such #defines.
      
      In addition the mechanism used by the distance field glyph cache to
      extend the cache with new glyphs has been modified to work (and
      work more efficiently) when using a Core profile context.
      
      Rather than using a shader program and a buffer filling quad to
      blit the old texture into the new cache texture, we instead use
      the technique of framebuffer blitting. The existing fallback
      implementation using glTexSubImage2D() is still available if
      needed.
      
      The DECLARATIVE_EXAMPLE_MAIN macro has been extended to allow easy
      testing of any of the QtDeclarative examples with a core profile
      context. Just run the example with
      
      QT_QUICK_CORE_PROFILE=1 ./text
      
      for e.g. The only ones that may not work out of the box are those
      that provide GLSL shader source e.g. the customparticles or
      shader effect examples. These work fine if the shader source is
      adapted to GLSL 150 core.
      
      In the future it may be a good idea to expose some context property
      to QML that the user can use to determine what shader source
      variation to provide to Qt Quick. Along these lines it would also
      be very nice to allow the provision of shader source to
      ShaderEffect or CustomParticle from a separate source file just as
      we now do within Qt Quick.
      
      Task-number: QTBUG-32050
      Change-Id: Ia6e9f06dbb8508af9ae03c6b60fb418b4cc9e41f
      Reviewed-by: default avatarLars Knoll <lars.knoll@digia.com>
      3afffa47
  10. 30 Oct, 2013 - 1 commit
    • Gunnar Sletta's avatar
      Use one render loop per QQuickWindow · 906d5c5c
      Gunnar Sletta authored
      
      See the task for the full reasoning behind this patch.
      
      The threaded renderloop has been refactored to have one window per
      thread. This is mostly a simplification of the current code path where
      for loops over multiple windows are turned into if (window).
      
      The QSGContext has been split into two classes, QSGRenderContext
      for which there is one per OpenGLContext.
      
      The rest of the patch is name changes and a couple of cleanups
      in the hopes of simplifying this change.
      
      Task-number: QTBUG-33993
      
      Change-Id: I31c81f9694d7da7474a72333169be38de62613c4
      Reviewed-by: default avatarSean Harmer <sean.harmer@kdab.com>
      906d5c5c
  11. 30 Sep, 2013 - 1 commit
  12. 27 Aug, 2013 - 1 commit
    • Yoann Lopes's avatar
      Updated distance field glyph caches to use QDistanceField. · 184e27c0
      Yoann Lopes authored
      
      Some OpenGL drivers assume alpha-only images are always tightly packed,
      regardless of what is set for GL_UNPACK_ALIGNMENT. We now use
      QDistanceField to store glyphs, which aligns scanlines on a 1-byte
      boundary, instead of QImage which uses a 4-byte boundary. A previous
      workaround uploaded scanlines one at a time, but this is also broken
      with some other drivers...
      
      Task-number: QTBUG-30908
      Task-number: QTBUG-32861
      Change-Id: I46527fb48de1e00116f776427c45baa752c6176d
      Reviewed-by: default avatarEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
      184e27c0
  13. 26 Feb, 2013 - 1 commit
  14. 28 Jan, 2013 - 1 commit
  15. 10 Jan, 2013 - 1 commit
  16. 23 Sep, 2012 - 1 commit
  17. 13 Jul, 2012 - 1 commit
    • Kim Motoyoshi Kalland's avatar
      Change antialiasing method for QML2. · d83eb21f
      Kim Motoyoshi Kalland authored
      
      Since multisampling can require a lot of memory, and might not
      be supported on some hardware, turn off multisampling and
      implement antialiasing in the vertex shader instead. The
      alternative method of antialiasing is implemented for Rectangle,
      Image, BorderImage and AnimatedImage, and must be explicitly
      enabled by setting the new antialiasing property.
      
      Task-number: QTBUG-26268
      Change-Id: I39a93d978658a494bf51e9f0fd02d8414eb8be12
      Reviewed-by: default avatarGunnar Sletta <gunnar.sletta@nokia.com>
      d83eb21f
  18. 08 Jun, 2012 - 1 commit
  19. 18 May, 2012 - 1 commit
  20. 20 Mar, 2012 - 1 commit
    • Andrew den Exter's avatar
      Decouple QSGDistanceFieldGlyphNode from it's cache manager. · dfdea38c
      Andrew den Exter authored
      
      To implement a custom distance field glyph node currently it's
      necessary to also provide a duplicate implementation of
      QSGContext::createDistanceFieldGlyphCache() as the default implemention
      references the cache manager created by createGlyphNode().  By isolating
      references to the cache manager to just createDistanceFieldGlyph() cache
      it becomes possible to just overwrite createGlyphNode() and still use
      the default cache.
      
      Change-Id: I7261bdbf247966b55512d2671e2ee85239bcca05
      Reviewed-by: default avatarYoann Lopes <yoann.lopes@nokia.com>
      dfdea38c
  21. 19 Mar, 2012 - 1 commit
  22. 24 Feb, 2012 - 1 commit
  23. 30 Jan, 2012 - 1 commit
  24. 24 Jan, 2012 - 1 commit
  25. 23 Jan, 2012 - 1 commit
  26. 17 Jan, 2012 - 1 commit
  27. 21 Dec, 2011 - 1 commit
  28. 14 Dec, 2011 - 1 commit
    • Yoann Lopes's avatar
      More distance-field cache refactoring. · 17bffaa4
      Yoann Lopes authored
      
      The distance field glyph node now uses preprocess().
      The glyph cache is updated at that time, then when all the glyphs are
      ready the node's geometry is updated.
      
      addGlyphPositions and addGlyphTextures in QSGDistanceFieldGlyphCache
      have been renamed to setGlyphsPosition and setGlyphsTexture to reflect the
      fact that they can be used to update existing glyphs. For example when
      a glyph has moved to a different texture.
      When an existing glyph is updated, all nodes containing that glyph are
      invalidated and their geometries are reconstructed with the new values.
      
      Change-Id: I7758313155f48811e6027434e6c9a1c3df5dfab7
      Reviewed-by: default avatarEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
      17bffaa4
  29. 02 Dec, 2011 - 1 commit
    • Kent Hansen's avatar
      Say hello to QtQuick module · 6c8378ea
      Kent Hansen authored
      
      This change moves the QtQuick 2 types and C++ API (including
      SceneGraph) to a new module (AKA library), QtQuick.
      
      99% of this change is moving files from src/declarative to
      src/quick, and from tests/auto/declarative to
      tests/auto/qtquick2.
      
      The loading of QtQuick 2 ("import QtQuick 2.0") is now delegated to
      a plugin, src/imports/qtquick2, just like it's done for QtQuick 1.
      
      All tools, examples, and tests that use QtQuick C++ API have gotten
      "QT += quick" or "QT += quick-private" added to their .pro file.
      
      A few additional internal QtDeclarative classes had to be exported
      (via Q_DECLARATIVE_PRIVATE_EXPORT) since they're needed by the
      QtQuick 2 implementation.
      
      The old header locations (e.g. QtDeclarative/qquickitem.h) will
      still be supported for some time, but will produce compile-time
      warnings. (To avoid the QtQuick implementation using the
      compatibility headers (since QtDeclarative's includepath comes
      first), a few include statements were modified, e.g. from
      "#include <qsgnode.h>" to "#include <QtQuick/qsgnode.h>".)
      
      There's a change in qtbase that automatically adds QtQuick to the
      module list if QtDeclarative is used. Together with the compatibility
      headers, this should help reduce the migration pain for existing
      projects.
      
      In theory, simply getting an existing QtDeclarative-based project
      to compile and link shouldn't require any changes for now -- but
      porting to the new scheme is of course recommended, and will
      eventually become mandatory.
      
      Task-number: QTBUG-22889
      Reviewed-by: default avatarLars Knoll <lars.knoll@nokia.com>
      Change-Id: Ia52be9373172ba2f37e7623231ecb060316c96a7
      Reviewed-by: default avatarKent Hansen <kent.hansen@nokia.com>
      Reviewed-by: default avatarSergio Ahumada <sergio.ahumada@nokia.com>
      6c8378ea
  30. 14 Nov, 2011 - 1 commit
    • Yoann Lopes's avatar
      Distance field glyph cache refactoring. · ace4b588
      Yoann Lopes authored
      
      The distance field glyph cache is now an abstract class part of the
      adaptation layer. It can be implemented to define the way the glyphs are
      stored in graphics memory on a specific platform. The typical use case
      is for having a cross-process glyph cache. To implement a custom glyph
      cache, one has to override three pure virtual functions: requestGlyphs(),
      storeGlyphs() and releaseGlyphs().
      
      The default implementation works the same way as before the refactoring
      (no cross-process cache).
      
      Change-Id: I6e231a119abbffbe36f5f0d690f0b8be0664ff4f
      Reviewed-by: default avatarEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
      ace4b588
  31. 21 Oct, 2011 - 1 commit
    • Kent Hansen's avatar
      Rename Qt Quick-specific classes to QQuick* · bfb3c424
      Kent Hansen authored
      
      The QSG (SceneGraph) prefix is too generic for
      Qt Quick(2)-specific classes.
      
      All the classes and files in the declarative/items
      directory have been renamed.
      
      In particular, for classes that are currently public,
      the renaming is as follows:
      
      QSGView --> QQuickView
      QSGCanvas --> QQuickCanvas
      QSGItem --> QQuickItem
      QSGPaintedItem --> QQuickPaintedItem
      
      The header files have been renamed accordingly
      (e.g. qsgview.h --> qquickview.h).
      
      Change-Id: Iac937fff81db20bb639486a793c3aeb5230b038c
      Reviewed-by: default avatarKent Hansen <kent.hansen@nokia.com>
      bfb3c424
  32. 29 Aug, 2011 - 1 commit
  33. 19 Aug, 2011 - 1 commit
  34. 11 Aug, 2011 - 2 commits
  35. 10 Aug, 2011 - 1 commit
  36. 20 Jul, 2011 - 1 commit
  37. 08 Jul, 2011 - 1 commit