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

Details

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

    Description

      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.

      Attachments

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: