Merge pull request #3233 from ReinUsesLisp/mismatch-sizes
shader/texture: Properly shrink unused entries in size mismatches
This commit is contained in:
		@@ -743,13 +743,18 @@ Node4 ShaderIR::GetTldsCode(Instruction instr, TextureType texture_type, bool is
 | 
			
		||||
    // When lod is used always is in gpr20
 | 
			
		||||
    const Node lod = lod_enabled ? GetRegister(instr.gpr20) : Immediate(0);
 | 
			
		||||
 | 
			
		||||
    // Fill empty entries from the guest sampler.
 | 
			
		||||
    // Fill empty entries from the guest sampler
 | 
			
		||||
    const std::size_t entry_coord_count = GetCoordCount(sampler.GetType());
 | 
			
		||||
    if (type_coord_count != entry_coord_count) {
 | 
			
		||||
        LOG_WARNING(HW_GPU, "Bound and built texture types mismatch");
 | 
			
		||||
    }
 | 
			
		||||
    for (std::size_t i = type_coord_count; i < entry_coord_count; ++i) {
 | 
			
		||||
        coords.push_back(GetRegister(Register::ZeroIndex));
 | 
			
		||||
 | 
			
		||||
        // When the size is higher we insert zeroes
 | 
			
		||||
        for (std::size_t i = type_coord_count; i < entry_coord_count; ++i) {
 | 
			
		||||
            coords.push_back(GetRegister(Register::ZeroIndex));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Then we ensure the size matches the number of entries (dropping unused values)
 | 
			
		||||
        coords.resize(entry_coord_count);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Node4 values;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user