Resolve "Descriptor in multiple shader stages"
Closes #76 (closed)
Merge request reports
Activity
- A deleted user
added 🔥 Resource Management 🤬 Bug labels
added 1 commit
- 1c92affc - [#76 (closed)] try to implement a bitmask for the shader stages
Ich habe mich jetzt länger an der Bitmask versucht, aber bin irgendwie noch nicht zu einem funktionierenden Ergebnis gekommen. Momentan funktioniert das Bitwise-Or nicht, weil es eine Enum Class ist. Aber ein reines Enum wäre glaube ich auch nicht richtig gewesen. Habe auch probiert, mich ganz nah an den Flags von Vulkan (sowohl .hpp als auch .h) zu orientieren bzw. direkt deren Bitmaske zu adaptieren. Aber das hat aus verschiedensten Gründen auch nur Fehler geworfen.
Mit enum class geht das anscheinend nicht ( https://stackoverflow.com/questions/64494432/can-you-use-bitwise-operators-with-enum-classes-without-casting ). Vermutlich am ordentlichsten wäre es eine Klasse anzulegen für eine beliebige Zusammensetzung der Flags und die einzelnen Flags als enum class.
So macht das eigentlich die Vulkan.hpp auch. Beispiel:
vk::ShaderStageFlagBits
undvk::ShaderStageFlags
Du kannst einfachhalber auch vermutlich die Template-Klasse von der Vulkan.hpp nutzen für die Flags-Klasse. Hier ist beispielsweise der Code für
vk::ShaderStageFlags
aus dervulkan.hpp
:using ShaderStageFlags = Flags<ShaderStageFlagBits>;
added 1 commit
- 3a986fbf - [#76 (closed)] try to adapt Vulkan shader stage flags
added 79 commits
-
3a986fbf...9e9c7637 - 78 commits from branch
develop
- 1aa46541 - Merge branch 'develop' of...
-
3a986fbf...9e9c7637 - 78 commits from branch
- Resolved by Tobias Frisch
Ich habe mir das zusammen mit Artur noch einmal angeschaut und leider funktioniert es nicht so einfach, die Flags-Klasse für unsere Flags zu nutzen. Mit etwas mehr Aufwand hätten wir deren Funktionsweise bei uns kopieren können. Aber wir haben uns nun entschlossen, jetzt doch direkt die Vulkan-Flags zu nutzen. Wenn die alten, eigenen Flags ausgebaut sind, werde ich dann die Descriptor-Reflection so abändern, dass ein DescriptorBinding vk::ShaderStageFlags besitzt und somit potentiell mehrere vk::ShaderStageFlagBits.
added 1 commit
- c420f75a - [#76 (closed)] replace vkcv shader flags by vk flags for first_mesh to run
added 1 commit
- e4e646f3 - [#76 (closed)] Fixed problems with custom shader stages
added 1 commit
- 5fad3ab1 - [#76 (closed)] Added vulkan to includes from shader compiler module
added 1 commit
- 9bd9cf11 - [#76 (closed)] implement reflection of descriptors in multiple shader stages
added 154 commits
-
9bd9cf11...eab9f823 - 153 commits from branch
develop
- f32c2548 - Merge branch 'develop' of gitlab.uni-koblenz.de:vulkan2021/vkcv-framework into...
-
9bd9cf11...eab9f823 - 153 commits from branch
added 1 commit
- 7fae0111 - [#76 (closed)] WIP: use vk::ShaderStageFlagBits to allow descriptors to use multiple shader stages.
- Resolved by Tobias Frisch
Es werden jetzt (man möge die hässliche template Syntax vergeben) maps of maps genutzt. Der erste Key ist die Set ID, der zweite ist dann die Binding ID. Die Value, die entsprechend rausgeholt werden kann, ist dann das Binding. Die Bindings selbst nutzen jetzt auch vk::ShaderStageFlags. Möchte man also an ein Binding/Set eine weitere Shaderstage hinzufügen, bevor diese erstellt werden, sollte das damit jetzt möglich sein.
@tfrisch Ich hab jetzt einfach die ganzen Projekte andauernd neugebaut unter Visual Studio, bis die ordentlich kompilierten und durchliefen. Bin VS noch nicht ganz gewohnt, kannst du drüberschauen und gucken, dass das passt.
Ich hab noch ein bisschen mit mir rumdiskutiert, ob ich Methoden wie
addShaderStageToSet
oderaddShaderStageToBinding
hinzufügen sollte ans Shaderprogram, aber das geht glaube ich über den eigentlichen Zweck der Klasse hinaus.
added 2 commits
- 0dce525d - Revert "[#76 (closed)] WIP: use vk::ShaderStageFlagBits to allow descriptors to use multiple shader stages."
- 2180cfac - add our own shader stages (back in).
added 274 commits
-
2180cfac...86f6f534 - 273 commits from branch
develop
- 32fe725e - Merge branch 'develop' of gitlab.uni-koblenz.de:vulkan2021/vkcv-framework into...
-
2180cfac...86f6f534 - 273 commits from branch
requested review from @tfrisch