gl_shader_decompiler: Move position varying location from 15 to 0 and apply an offset
This commit is contained in:
		| @@ -30,7 +30,7 @@ using Tegra::Shader::SubOp; | ||||
| constexpr u32 PROGRAM_END = MAX_PROGRAM_CODE_LENGTH; | ||||
| constexpr u32 PROGRAM_HEADER_SIZE = sizeof(Tegra::Shader::Header); | ||||
|  | ||||
| constexpr u32 POSITION_VARYING_LOCATION = 15; | ||||
| enum : u32 { POSITION_VARYING_LOCATION = 0, GENERIC_VARYING_START_LOCATION = 1 }; | ||||
|  | ||||
| constexpr u32 MAX_GEOMETRY_BUFFERS = 6; | ||||
| constexpr u32 MAX_ATTRIBUTES = 0x100; // Size in vec4s, this value is untested | ||||
| @@ -559,7 +559,10 @@ private: | ||||
|             // TODO(bunnei): Use proper number of elements for these | ||||
|             u32 idx = | ||||
|                 static_cast<u32>(element.first) - static_cast<u32>(Attribute::Index::Attribute_0); | ||||
|             ASSERT(idx != POSITION_VARYING_LOCATION); | ||||
|             if (stage != Maxwell3D::Regs::ShaderStage::Vertex) { | ||||
|                 // If inputs are varyings, add an offset | ||||
|                 idx += GENERIC_VARYING_START_LOCATION; | ||||
|             } | ||||
|  | ||||
|             std::string attr{GetInputAttribute(element.first, element.second)}; | ||||
|             if (stage == Maxwell3D::Regs::ShaderStage::Geometry) { | ||||
| @@ -580,10 +583,11 @@ private: | ||||
|         } | ||||
|         for (const auto& index : declr_output_attribute) { | ||||
|             // TODO(bunnei): Use proper number of elements for these | ||||
|             declarations.AddLine("layout (location = " + | ||||
|                                  std::to_string(static_cast<u32>(index) - | ||||
|                                                 static_cast<u32>(Attribute::Index::Attribute_0)) + | ||||
|                                  ") out vec4 " + GetOutputAttribute(index) + ';'); | ||||
|             const u32 idx = static_cast<u32>(index) - | ||||
|                             static_cast<u32>(Attribute::Index::Attribute_0) + | ||||
|                             GENERIC_VARYING_START_LOCATION; | ||||
|             declarations.AddLine("layout (location = " + std::to_string(idx) + ") out vec4 " + | ||||
|                                  GetOutputAttribute(index) + ';'); | ||||
|         } | ||||
|         declarations.AddNewLine(); | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ReinUsesLisp
					ReinUsesLisp