Merge pull request #3233 from ReinUsesLisp/mismatch-sizes
shader/texture: Properly shrink unused entries in size mismatches
This commit is contained in:
commit
6d55b14cc0
|
@ -743,15 +743,20 @@ Node4 ShaderIR::GetTldsCode(Instruction instr, TextureType texture_type, bool is
|
||||||
// When lod is used always is in gpr20
|
// When lod is used always is in gpr20
|
||||||
const Node lod = lod_enabled ? GetRegister(instr.gpr20) : Immediate(0);
|
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());
|
const std::size_t entry_coord_count = GetCoordCount(sampler.GetType());
|
||||||
if (type_coord_count != entry_coord_count) {
|
if (type_coord_count != entry_coord_count) {
|
||||||
LOG_WARNING(HW_GPU, "Bound and built texture types mismatch");
|
LOG_WARNING(HW_GPU, "Bound and built texture types mismatch");
|
||||||
}
|
|
||||||
|
// When the size is higher we insert zeroes
|
||||||
for (std::size_t i = type_coord_count; i < entry_coord_count; ++i) {
|
for (std::size_t i = type_coord_count; i < entry_coord_count; ++i) {
|
||||||
coords.push_back(GetRegister(Register::ZeroIndex));
|
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;
|
Node4 values;
|
||||||
for (u32 element = 0; element < values.size(); ++element) {
|
for (u32 element = 0; element < values.size(); ++element) {
|
||||||
auto coords_copy = coords;
|
auto coords_copy = coords;
|
||||||
|
|
Reference in New Issue