mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #2864 from ReinUsesLisp/fix-clang-decompiler
gl_shader_decompiler: Fix clang build issues
This commit is contained in:
		
						commit
						da07373599
					
				@ -242,6 +242,26 @@ constexpr const char* GetTypeString(Type type) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					constexpr const char* GetImageTypeDeclaration(Tegra::Shader::ImageType image_type) {
 | 
				
			||||||
 | 
					    switch (image_type) {
 | 
				
			||||||
 | 
					    case Tegra::Shader::ImageType::Texture1D:
 | 
				
			||||||
 | 
					        return "1D";
 | 
				
			||||||
 | 
					    case Tegra::Shader::ImageType::TextureBuffer:
 | 
				
			||||||
 | 
					        return "Buffer";
 | 
				
			||||||
 | 
					    case Tegra::Shader::ImageType::Texture1DArray:
 | 
				
			||||||
 | 
					        return "1DArray";
 | 
				
			||||||
 | 
					    case Tegra::Shader::ImageType::Texture2D:
 | 
				
			||||||
 | 
					        return "2D";
 | 
				
			||||||
 | 
					    case Tegra::Shader::ImageType::Texture2DArray:
 | 
				
			||||||
 | 
					        return "2DArray";
 | 
				
			||||||
 | 
					    case Tegra::Shader::ImageType::Texture3D:
 | 
				
			||||||
 | 
					        return "3D";
 | 
				
			||||||
 | 
					    default:
 | 
				
			||||||
 | 
					        UNREACHABLE();
 | 
				
			||||||
 | 
					        return "1D";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Generates code to use for a swizzle operation.
 | 
					/// Generates code to use for a swizzle operation.
 | 
				
			||||||
constexpr const char* GetSwizzle(u32 element) {
 | 
					constexpr const char* GetSwizzle(u32 element) {
 | 
				
			||||||
    constexpr std::array swizzle = {".x", ".y", ".z", ".w"};
 | 
					    constexpr std::array swizzle = {".x", ".y", ".z", ".w"};
 | 
				
			||||||
@ -721,26 +741,6 @@ private:
 | 
				
			|||||||
    void DeclareImages() {
 | 
					    void DeclareImages() {
 | 
				
			||||||
        const auto& images{ir.GetImages()};
 | 
					        const auto& images{ir.GetImages()};
 | 
				
			||||||
        for (const auto& [offset, image] : images) {
 | 
					        for (const auto& [offset, image] : images) {
 | 
				
			||||||
            const char* image_type = [&] {
 | 
					 | 
				
			||||||
                switch (image.GetType()) {
 | 
					 | 
				
			||||||
                case Tegra::Shader::ImageType::Texture1D:
 | 
					 | 
				
			||||||
                    return "1D";
 | 
					 | 
				
			||||||
                case Tegra::Shader::ImageType::TextureBuffer:
 | 
					 | 
				
			||||||
                    return "Buffer";
 | 
					 | 
				
			||||||
                case Tegra::Shader::ImageType::Texture1DArray:
 | 
					 | 
				
			||||||
                    return "1DArray";
 | 
					 | 
				
			||||||
                case Tegra::Shader::ImageType::Texture2D:
 | 
					 | 
				
			||||||
                    return "2D";
 | 
					 | 
				
			||||||
                case Tegra::Shader::ImageType::Texture2DArray:
 | 
					 | 
				
			||||||
                    return "2DArray";
 | 
					 | 
				
			||||||
                case Tegra::Shader::ImageType::Texture3D:
 | 
					 | 
				
			||||||
                    return "3D";
 | 
					 | 
				
			||||||
                default:
 | 
					 | 
				
			||||||
                    UNREACHABLE();
 | 
					 | 
				
			||||||
                    return "1D";
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            std::string qualifier = "coherent volatile";
 | 
					            std::string qualifier = "coherent volatile";
 | 
				
			||||||
            if (image.IsRead() && !image.IsWritten()) {
 | 
					            if (image.IsRead() && !image.IsWritten()) {
 | 
				
			||||||
                qualifier += " readonly";
 | 
					                qualifier += " readonly";
 | 
				
			||||||
@ -748,13 +748,10 @@ private:
 | 
				
			|||||||
                qualifier += " writeonly";
 | 
					                qualifier += " writeonly";
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            std::string format;
 | 
					            const char* format = image.IsAtomic() ? "r32ui, " : "";
 | 
				
			||||||
            if (image.IsAtomic()) {
 | 
					            const char* type_declaration = GetImageTypeDeclaration(image.GetType());
 | 
				
			||||||
                format = "r32ui, ";
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            code.AddLine("layout ({}binding = IMAGE_BINDING_{}) {} uniform uimage{} {};", format,
 | 
					            code.AddLine("layout ({}binding = IMAGE_BINDING_{}) {} uniform uimage{} {};", format,
 | 
				
			||||||
                         image.GetIndex(), qualifier, image_type, GetImage(image));
 | 
					                         image.GetIndex(), qualifier, type_declaration, GetImage(image));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (!images.empty()) {
 | 
					        if (!images.empty()) {
 | 
				
			||||||
            code.AddNewLine();
 | 
					            code.AddNewLine();
 | 
				
			||||||
@ -1494,6 +1491,8 @@ private:
 | 
				
			|||||||
        case Tegra::Shader::HalfType::H1_H1:
 | 
					        case Tegra::Shader::HalfType::H1_H1:
 | 
				
			||||||
            return {fmt::format("vec2({}[1])", operand.AsHalfFloat()), Type::HalfFloat};
 | 
					            return {fmt::format("vec2({}[1])", operand.AsHalfFloat()), Type::HalfFloat};
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        UNREACHABLE();
 | 
				
			||||||
 | 
					        return {"0", Type::Int};
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Expression HMergeF32(Operation operation) {
 | 
					    Expression HMergeF32(Operation operation) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user