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

Provide a way, even if imperfect, to do tessellation and geometry shaders with backends where no translation from SPIRV is possible

XMLWordPrintable

    • Icon: Task Task
    • Resolution: Fixed
    • Icon: P2: Important P2: Important
    • 6.5
    • None
    • Qt RHI
    • None

      SPIRV-Cross has no support for translating geometry and tessellation control/eval shaders to HLSL. This the D3D11 backend currently just says no support for these and that's that.

      This is not ideal. Even if running qsb on a geom or tesc/tese shader cannot output HLSL in the resulting shader pack, one can still manually inject a hand-written geometry/domain/hull shader with qsb -r or the CMake integration. The d3d11 backend can then pick that up.

      This would be similar to how we did GL_TEXTURE_EXTERNAL_OES support for Multimedia. The shaders with samplerExternalOES were not compilable to SPIR-V, so instead hand-written shaders were injected into the previously generated .qsb file afterwards using the CMaker wrapper for qsb -r.

      • Explore if the same approach can be used to make the tessellation manual test with D3D.
        • not ideal of course since the shader needs to be written twice, but better than nothing
      • Then consider the same for geometry shaders.
      • Maybe think about Metal but that's a tougher problem: no geometry shaders at all, and tessellation is conceptually different.

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

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

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes