Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-140795

QRhi D3D11 backend bounds wrong buffers depending on certain conditions

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P2: Important P2: Important
    • None
    • 6.8, 6.9, 6.10
    • Qt RHI
    • None

      QCPainter, that uses one QShaderResourceBindingSet but possibly with multiple pipelines in a frame, exhibits a problem with the D3D11 backend of QRhi (not with any other backend).

      SPIR-V style bindings:
      0 vertex ubuf 1
      1 vertex fragment ubuf
      4 vertex ubuf 2

      Previous draw call gets the following bound for D3D, its shader does not use the buffer at binding 1:
      b0 (from SPIR-V binding 0) vertex ubuf 2
      b1 (from SPIR-V binding 4) vertex ubuf 1

      The following problematic draw call:
      b0 (from SPIR-V binding 0) vertex ubuf 2
      b1 (from SPIR-V binding 1) vertex fragment ubuf
      b2 (from SPIR-V binding 4) vertex ubuf 1

      where b1 and b2 are effectively swapped. It should be the other way round. (b1 vertex ubuf 1, b2 vertex fragment ubuf)

      This is due to two problems in the d3d11 backend. One is the (simulated) command buffer entries referencing an srb, instead of copying the relevant data from it.

        For Gerrit Dashboard: QTBUG-140795
        # Subject Branch Project Status CR V

            lagocs Laszlo Agocs
            lagocs Laszlo Agocs
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:

                There is 1 open Gerrit change