diff options
| author | Triang3l <triang3l@yandex.ru> | 2022-12-03 14:27:43 +0300 |
|---|---|---|
| committer | Triang3l <triang3l@yandex.ru> | 2022-12-03 14:27:43 +0300 |
| commit | 0b4f5ef2865faeef5ca7fd35960f26392d15f0e9 (patch) | |
| tree | 0a55686407e168acc879fcc014cb9b860b7dd49e /src | |
| parent | 7dd715ea6fdd008c242f3d8b6d53d82e0ac348ad (diff) | |
[SPIR-V] Decorate whole gl_PerVertex with Invariant
Block members can be decorated with Invariant only since SPIR-V 1.5 Revision 2. In earlier versions, Invariant can be used only for variables. Mesa warns about this.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xenia/gpu/spirv_shader_translator.cc | 4 | ||||
| -rw-r--r-- | src/xenia/gpu/vulkan/vulkan_pipeline_cache.cc | 7 |
2 files changed, 2 insertions, 9 deletions
diff --git a/src/xenia/gpu/spirv_shader_translator.cc b/src/xenia/gpu/spirv_shader_translator.cc index eb31e13b9..95517cfba 100644 --- a/src/xenia/gpu/spirv_shader_translator.cc +++ b/src/xenia/gpu/spirv_shader_translator.cc @@ -1228,13 +1228,11 @@ void SpirvShaderTranslator::StartVertexOrTessEvalShaderBeforeMain() { kOutputPerVertexMemberPosition, "gl_Position"); builder_->addMemberDecoration(type_struct_per_vertex, kOutputPerVertexMemberPosition, - spv::DecorationInvariant); - builder_->addMemberDecoration(type_struct_per_vertex, - kOutputPerVertexMemberPosition, spv::DecorationBuiltIn, spv::BuiltInPosition); builder_->addDecoration(type_struct_per_vertex, spv::DecorationBlock); output_per_vertex_ = builder_->createVariable( spv::NoPrecision, spv::StorageClassOutput, type_struct_per_vertex, ""); + builder_->addDecoration(output_per_vertex_, spv::DecorationInvariant); main_interface_.push_back(output_per_vertex_); } diff --git a/src/xenia/gpu/vulkan/vulkan_pipeline_cache.cc b/src/xenia/gpu/vulkan/vulkan_pipeline_cache.cc index 296969959..667228f93 100644 --- a/src/xenia/gpu/vulkan/vulkan_pipeline_cache.cc +++ b/src/xenia/gpu/vulkan/vulkan_pipeline_cache.cc @@ -1180,17 +1180,11 @@ VkShaderModule VulkanPipelineCache::GetGeometryShader(GeometryShaderKey key) { member_out_gl_per_vertex_position, "gl_Position"); builder.addMemberDecoration(type_struct_out_gl_per_vertex, member_out_gl_per_vertex_position, - spv::DecorationInvariant); - builder.addMemberDecoration(type_struct_out_gl_per_vertex, - member_out_gl_per_vertex_position, spv::DecorationBuiltIn, spv::BuiltInPosition); if (clip_distance_count) { builder.addMemberName(type_struct_out_gl_per_vertex, member_out_gl_per_vertex_clip_distance, "gl_ClipDistance"); - builder.addMemberDecoration(type_struct_out_gl_per_vertex, - member_out_gl_per_vertex_clip_distance, - spv::DecorationInvariant); builder.addMemberDecoration( type_struct_out_gl_per_vertex, member_out_gl_per_vertex_clip_distance, spv::DecorationBuiltIn, spv::BuiltInClipDistance); @@ -1199,6 +1193,7 @@ VkShaderModule VulkanPipelineCache::GetGeometryShader(GeometryShaderKey key) { spv::Id out_gl_per_vertex = builder.createVariable(spv::NoPrecision, spv::StorageClassOutput, type_struct_out_gl_per_vertex, ""); + builder.addDecoration(out_gl_per_vertex, spv::DecorationInvariant); main_interface.push_back(out_gl_per_vertex); // Begin the main function. |
