• Show log

    Commit

  • Hash : ab42afa6
    Author : Le Hoang Quyen
    Date : 2019-11-21T10:13:44

    Metal: fix vertex attribute's conversion lost after changing buffer binding.
    
    After vertex buffer's attribute is converted and stored in conversion
    buffer. Binding the same attribute to another buffer, then binding it
    back to previous buffer will result in previous conversion
    information lost. The conversion method would skip the conversion due to
    buffer's content hadn't been changed, however it didn't reuse the old
    conversion result.
    
    This CL also changed the way binding offset is used in Metal backend.
    - Previous, the offset would be assigned to the offset field of
      MTLVertexAttributeDescriptor, then the buffer would simply be bound to
      the command encoder with offset=0
      i.e. setVertexBuffer(buffer, index, 0)
    - However this approach has several disadvantages. Since Metal doesn't
      allow MTLVertexAttributeDescriptor's offset to be larger than the
      vertex attribute's stride, the old approach would force the back-end
      to convert the attribute and store in conversion buffer.
    
    New approach:
    - MTLVertexAttributeDescriptor's offset will be zero. The offset will be
      used to bind the buffer itself to the render command encoder.
      i.e. setVertexBuffer(buffer, index, offset)
      This way the "offset <= stride" restriction no longer exists. The only
      restriction is the offset must be multiple of attribute's size.
    
    Added 3 new tests:
    - SimpleStateChangeTest.RebindTranslatedAttribute
    - VertexAttributeTest.DrawWithLargeBufferOffset
    - VertexAttributeTest.DrawWithLargeBufferOffsetAndLessComponents
    
    Bug: angleproject:2634
    Change-Id: I6c2fa8091436e4a24405d791f86d17d97df02d64
    Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1940009
    Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
    Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/angle.git
    Git SSH git@git.kmx.io:kc3-lang/angle.git
    Public access ? public
    Description

    A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android.

    Homepage

    Github

    Users
    thodg_m kc3_lang_org thodg_w www_kmx_io thodg thodg_l
    Tags