From c737ecebbac61ab9117e37f67f0f2769ad2569c0 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 15 Jun 2018 10:10:22 +0100 Subject: [PATCH] Fix mesh output with multiview - always output view 0 --- renderdoc/driver/shaders/spirv/spirv_disassemble.cpp | 1 + renderdoc/driver/vulkan/vk_postvs.cpp | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp index bb04741c2..79903746a 100644 --- a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp @@ -3681,6 +3681,7 @@ ShaderBuiltin BuiltInToSystemAttribute(ShaderStage stage, const spv::BuiltIn el) case spv::BuiltInBaseVertex: return ShaderBuiltin::BaseVertex; case spv::BuiltInBaseInstance: return ShaderBuiltin::BaseInstance; case spv::BuiltInDrawIndex: return ShaderBuiltin::DrawIndex; + case spv::BuiltInViewIndex: return ShaderBuiltin::ViewportIndex; default: break; } diff --git a/renderdoc/driver/vulkan/vk_postvs.cpp b/renderdoc/driver/vulkan/vk_postvs.cpp index 54b5527d2..730cf9ac9 100644 --- a/renderdoc/driver/vulkan/vk_postvs.cpp +++ b/renderdoc/driver/vulkan/vk_postvs.cpp @@ -824,6 +824,11 @@ static void ConvertToMeshOutputCompute(const ShaderReflection &refl, const SPIRV { ops.push_back(SPIRVOperation(spv::OpStore, {ins[i].variableID, instIndex})); } + else if(builtin == ShaderBuiltin::ViewportIndex) + { + ops.push_back(SPIRVOperation( + spv::OpStore, {ins[i].variableID, editor.AddConstantImmediate(int32_t(0))})); + } else if(builtin == ShaderBuiltin::BaseVertex) { if(draw->flags & DrawFlags::UseIBuffer)