summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/renderer_vulkan')
-rw-r--r--src/video_core/renderer_vulkan/vk_shader_decompiler.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp
index a8baf91de..50feeb003 100644
--- a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp
+++ b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp
@@ -954,6 +954,12 @@ private:
Expression Visit(const Node& node) {
if (const auto operation = std::get_if<OperationNode>(&*node)) {
+ auto amend_index = operation->GetAmendIndex();
+ if (amend_index) {
+ const Node& amend_node = ir.GetAmendNode(*amend_index);
+ [[maybe_unused]] const Type type = Visit(amend_node).type;
+ ASSERT(type == Type::Void);
+ }
const auto operation_index = static_cast<std::size_t>(operation->GetCode());
const auto decompiler = operation_decompilers[operation_index];
if (decompiler == nullptr) {
@@ -1142,6 +1148,12 @@ private:
}
if (const auto conditional = std::get_if<ConditionalNode>(&*node)) {
+ auto amend_index = conditional->GetAmendIndex();
+ if (amend_index) {
+ const Node& amend_node = ir.GetAmendNode(*amend_index);
+ [[maybe_unused]] const Type type = Visit(amend_node).type;
+ ASSERT(type == Type::Void);
+ }
// It's invalid to call conditional on nested nodes, use an operation instead
const Id true_label = OpLabel();
const Id skip_label = OpLabel();
@@ -1164,6 +1176,12 @@ private:
}
if (const auto comment = std::get_if<CommentNode>(&*node)) {
+ auto amend_index = comment->GetAmendIndex();
+ if (amend_index) {
+ const Node& amend_node = ir.GetAmendNode(*amend_index);
+ [[maybe_unused]] const Type type = Visit(amend_node).type;
+ ASSERT(type == Type::Void);
+ }
Name(OpUndef(t_void), comment->GetText());
return {};
}