mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-07-27 12:34:37 +00:00
Merge branch 'main' into net3
This commit is contained in:
commit
01380ef63e
@ -517,7 +517,9 @@ void Translator::EmitFetch(const GcnInst& inst) {
|
||||
const auto values =
|
||||
ir.CompositeConstruct(ir.GetAttribute(attr, 0), ir.GetAttribute(attr, 1),
|
||||
ir.GetAttribute(attr, 2), ir.GetAttribute(attr, 3));
|
||||
const auto swizzled = ApplySwizzle(ir, values, buffer.DstSelect());
|
||||
const auto converted =
|
||||
IR::ApplyReadNumberConversionVec4(ir, values, buffer.GetNumberConversion());
|
||||
const auto swizzled = ApplySwizzle(ir, converted, buffer.DstSelect());
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
ir.SetVectorReg(dst_reg++, IR::F32{ir.CompositeExtract(swizzled, i)});
|
||||
}
|
||||
|
@ -94,6 +94,8 @@ bool Inst::MayHaveSideEffects() const noexcept {
|
||||
case Opcode::ImageAtomicUMin32:
|
||||
case Opcode::ImageAtomicSMax32:
|
||||
case Opcode::ImageAtomicUMax32:
|
||||
case Opcode::ImageAtomicFMax32:
|
||||
case Opcode::ImageAtomicFMin32:
|
||||
case Opcode::ImageAtomicInc32:
|
||||
case Opcode::ImageAtomicDec32:
|
||||
case Opcode::ImageAtomicAnd32:
|
||||
|
@ -101,6 +101,8 @@ bool IsImageAtomicInstruction(const IR::Inst& inst) {
|
||||
case IR::Opcode::ImageAtomicUMin32:
|
||||
case IR::Opcode::ImageAtomicSMax32:
|
||||
case IR::Opcode::ImageAtomicUMax32:
|
||||
case IR::Opcode::ImageAtomicFMax32:
|
||||
case IR::Opcode::ImageAtomicFMin32:
|
||||
case IR::Opcode::ImageAtomicInc32:
|
||||
case IR::Opcode::ImageAtomicDec32:
|
||||
case IR::Opcode::ImageAtomicAnd32:
|
||||
|
@ -924,15 +924,11 @@ struct Liverpool {
|
||||
}
|
||||
|
||||
[[nodiscard]] NumberFormat GetNumberFmt() const {
|
||||
// There is a small difference between T# and CB number types, account for it.
|
||||
return RemapNumberFormat(info.number_type == NumberFormat::SnormNz
|
||||
? NumberFormat::Srgb
|
||||
: info.number_type.Value(),
|
||||
info.format);
|
||||
return RemapNumberFormat(GetFixedNumberFormat(), info.format);
|
||||
}
|
||||
|
||||
[[nodiscard]] NumberConversion GetNumberConversion() const {
|
||||
return MapNumberConversion(info.number_type);
|
||||
return MapNumberConversion(GetFixedNumberFormat());
|
||||
}
|
||||
|
||||
[[nodiscard]] CompMapping Swizzle() const {
|
||||
@ -973,6 +969,13 @@ struct Liverpool {
|
||||
const auto mrt_swizzle = mrt_swizzles[swap_idx][components_idx];
|
||||
return RemapSwizzle(info.format, mrt_swizzle);
|
||||
}
|
||||
|
||||
private:
|
||||
[[nodiscard]] NumberFormat GetFixedNumberFormat() const {
|
||||
// There is a small difference between T# and CB number types, account for it.
|
||||
return info.number_type == NumberFormat::SnormNz ? NumberFormat::Srgb
|
||||
: info.number_type.Value();
|
||||
}
|
||||
};
|
||||
|
||||
enum ContextRegs : u32 {
|
||||
|
Loading…
Reference in New Issue
Block a user