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 #1023 from Subv/invalid_attribs
RasterizerGL: Ignore invalid/unset vertex attributes.
This commit is contained in:
		
						commit
						d37da52cb3
					
				@ -93,6 +93,7 @@ public:
 | 
			
		||||
 | 
			
		||||
        struct VertexAttribute {
 | 
			
		||||
            enum class Size : u32 {
 | 
			
		||||
                Invalid = 0x0,
 | 
			
		||||
                Size_32_32_32_32 = 0x01,
 | 
			
		||||
                Size_32_32_32 = 0x02,
 | 
			
		||||
                Size_16_16_16_16 = 0x03,
 | 
			
		||||
@ -257,6 +258,10 @@ public:
 | 
			
		||||
            bool IsNormalized() const {
 | 
			
		||||
                return (type == Type::SignedNorm) || (type == Type::UnsignedNorm);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            bool IsValid() const {
 | 
			
		||||
                return size != Size::Invalid;
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        enum class PrimitiveTopology : u32 {
 | 
			
		||||
 | 
			
		||||
@ -161,11 +161,16 @@ std::pair<u8*, GLintptr> RasterizerOpenGL::SetupVertexArrays(u8* array_ptr,
 | 
			
		||||
    // assume every shader uses them all.
 | 
			
		||||
    for (unsigned index = 0; index < 16; ++index) {
 | 
			
		||||
        auto& attrib = regs.vertex_attrib_format[index];
 | 
			
		||||
 | 
			
		||||
        // Ignore invalid attributes.
 | 
			
		||||
        if (!attrib.IsValid())
 | 
			
		||||
            continue;
 | 
			
		||||
 | 
			
		||||
        auto& buffer = regs.vertex_array[attrib.buffer];
 | 
			
		||||
        LOG_TRACE(HW_GPU, "vertex attrib {}, count={}, size={}, type={}, offset={}, normalize={}",
 | 
			
		||||
                  index, attrib.ComponentCount(), attrib.SizeString(), attrib.TypeString(),
 | 
			
		||||
                  attrib.offset.Value(), attrib.IsNormalized());
 | 
			
		||||
 | 
			
		||||
        auto& buffer = regs.vertex_array[attrib.buffer];
 | 
			
		||||
        ASSERT(buffer.IsEnabled());
 | 
			
		||||
 | 
			
		||||
        glEnableVertexAttribArray(index);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user