diff options
Diffstat (limited to 'src/shader_recompiler/backend/spirv/emit_context.cpp')
| -rw-r--r-- | src/shader_recompiler/backend/spirv/emit_context.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_context.cpp b/src/shader_recompiler/backend/spirv/emit_context.cpp index 74c42233d..f96d5ae37 100644 --- a/src/shader_recompiler/backend/spirv/emit_context.cpp +++ b/src/shader_recompiler/backend/spirv/emit_context.cpp | |||
| @@ -1050,8 +1050,15 @@ void EmitContext::DefineOutputs(const Info& info) { | |||
| 1050 | const Id type{TypeArray(F32[1], Constant(U32[1], 8U))}; | 1050 | const Id type{TypeArray(F32[1], Constant(U32[1], 8U))}; |
| 1051 | clip_distances = DefineOutput(*this, type, spv::BuiltIn::ClipDistance); | 1051 | clip_distances = DefineOutput(*this, type, spv::BuiltIn::ClipDistance); |
| 1052 | } | 1052 | } |
| 1053 | if (info.stores_layer && | ||
| 1054 | (profile.support_viewport_index_layer_non_geometry || stage == Stage::Geometry)) { | ||
| 1055 | if (stage == Stage::Fragment) { | ||
| 1056 | throw NotImplementedException("Storing Layer in fragment stage"); | ||
| 1057 | } | ||
| 1058 | layer = DefineOutput(*this, U32[1], spv::BuiltIn::Layer); | ||
| 1059 | } | ||
| 1053 | if (info.stores_viewport_index && | 1060 | if (info.stores_viewport_index && |
| 1054 | (profile.support_viewport_index_layer_non_geometry || stage == Shader::Stage::Geometry)) { | 1061 | (profile.support_viewport_index_layer_non_geometry || stage == Stage::Geometry)) { |
| 1055 | if (stage == Stage::Fragment) { | 1062 | if (stage == Stage::Fragment) { |
| 1056 | throw NotImplementedException("Storing ViewportIndex in fragment stage"); | 1063 | throw NotImplementedException("Storing ViewportIndex in fragment stage"); |
| 1057 | } | 1064 | } |