mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-13 18:28:35 +12:00
SPU: Remove "Accurate PUTLLUC" setting (always accurate)
This commit is contained in:
parent
54493747a8
commit
4f0125a0e9
6 changed files with 11 additions and 33 deletions
|
@ -1891,28 +1891,20 @@ void spu_thread::do_putlluc(const spu_mfc_cmd& args)
|
||||||
|
|
||||||
*reinterpret_cast<atomic_t<u32>*>(&data) += 0;
|
*reinterpret_cast<atomic_t<u32>*>(&data) += 0;
|
||||||
|
|
||||||
if (g_cfg.core.spu_accurate_putlluc)
|
const auto render = get_rsx_if_needs_res_pause(addr);
|
||||||
|
|
||||||
|
if (render) render->pause();
|
||||||
|
|
||||||
|
auto& super_data = *vm::get_super_ptr<decltype(rdata)>(addr);
|
||||||
{
|
{
|
||||||
const auto render = get_rsx_if_needs_res_pause(addr);
|
// Full lock (heavyweight)
|
||||||
|
// TODO: vm::check_addr
|
||||||
if (render) render->pause();
|
vm::writer_lock lock(addr);
|
||||||
|
mov_rdata(super_data, to_write);
|
||||||
auto& super_data = *vm::get_super_ptr<decltype(rdata)>(addr);
|
|
||||||
{
|
|
||||||
// Full lock (heavyweight)
|
|
||||||
// TODO: vm::check_addr
|
|
||||||
vm::writer_lock lock(addr);
|
|
||||||
mov_rdata(super_data, to_write);
|
|
||||||
res.release(time0 + 128);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (render) render->unpause();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mov_rdata(data, to_write);
|
|
||||||
res.release(time0 + 128);
|
res.release(time0 + 128);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (render) render->unpause();
|
||||||
}
|
}
|
||||||
|
|
||||||
vm::reservation_notifier(addr, 128).notify_all();
|
vm::reservation_notifier(addr, 128).notify_all();
|
||||||
|
|
|
@ -43,7 +43,6 @@ struct cfg_root : cfg::node
|
||||||
cfg::_int<0, 6> max_spurs_threads{ this, "Max SPURS Threads", 6 }; // HACK. If less then 6, max number of running SPURS threads in each thread group.
|
cfg::_int<0, 6> max_spurs_threads{ this, "Max SPURS Threads", 6 }; // HACK. If less then 6, max number of running SPURS threads in each thread group.
|
||||||
cfg::_enum<spu_block_size_type> spu_block_size{ this, "SPU Block Size", spu_block_size_type::safe };
|
cfg::_enum<spu_block_size_type> spu_block_size{ this, "SPU Block Size", spu_block_size_type::safe };
|
||||||
cfg::_bool spu_accurate_getllar{ this, "Accurate GETLLAR", false, true };
|
cfg::_bool spu_accurate_getllar{ this, "Accurate GETLLAR", false, true };
|
||||||
cfg::_bool spu_accurate_putlluc{ this, "Accurate PUTLLUC", false, true };
|
|
||||||
cfg::_bool spu_accurate_dma{ this, "Accurate SPU DMA", false };
|
cfg::_bool spu_accurate_dma{ this, "Accurate SPU DMA", false };
|
||||||
cfg::_bool rsx_accurate_res_access{this, "Accurate RSX reservation access", false, true};
|
cfg::_bool rsx_accurate_res_access{this, "Accurate RSX reservation access", false, true};
|
||||||
cfg::_bool spu_verification{ this, "SPU Verification", true }; // Should be enabled
|
cfg::_bool spu_verification{ this, "SPU Verification", true }; // Should be enabled
|
||||||
|
|
|
@ -21,7 +21,6 @@ enum class emu_settings_type
|
||||||
MaxLLVMThreads,
|
MaxLLVMThreads,
|
||||||
EnableTSX,
|
EnableTSX,
|
||||||
AccurateGETLLAR,
|
AccurateGETLLAR,
|
||||||
AccuratePUTLLUC,
|
|
||||||
AccurateSpuDMA,
|
AccurateSpuDMA,
|
||||||
AccurateLLVMdfma,
|
AccurateLLVMdfma,
|
||||||
AccurateVectorNaN,
|
AccurateVectorNaN,
|
||||||
|
@ -162,7 +161,6 @@ static const QMap<emu_settings_type, cfg_location> settings_location =
|
||||||
{ emu_settings_type::MaxLLVMThreads, { "Core", "Max LLVM Compile Threads"}},
|
{ emu_settings_type::MaxLLVMThreads, { "Core", "Max LLVM Compile Threads"}},
|
||||||
{ emu_settings_type::EnableTSX, { "Core", "Enable TSX"}},
|
{ emu_settings_type::EnableTSX, { "Core", "Enable TSX"}},
|
||||||
{ emu_settings_type::AccurateGETLLAR, { "Core", "Accurate GETLLAR"}},
|
{ emu_settings_type::AccurateGETLLAR, { "Core", "Accurate GETLLAR"}},
|
||||||
{ emu_settings_type::AccuratePUTLLUC, { "Core", "Accurate PUTLLUC"}},
|
|
||||||
{ emu_settings_type::AccurateSpuDMA, { "Core", "Accurate SPU DMA"}},
|
{ emu_settings_type::AccurateSpuDMA, { "Core", "Accurate SPU DMA"}},
|
||||||
{ emu_settings_type::AccurateLLVMdfma, { "Core", "LLVM Accurate DFMA"}},
|
{ emu_settings_type::AccurateLLVMdfma, { "Core", "LLVM Accurate DFMA"}},
|
||||||
{ emu_settings_type::AccurateVectorNaN, { "Core", "PPU LLVM Accurate Vector NaN values"}},
|
{ emu_settings_type::AccurateVectorNaN, { "Core", "PPU LLVM Accurate Vector NaN values"}},
|
||||||
|
|
|
@ -1724,9 +1724,6 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> gui_settings, std
|
||||||
m_emu_settings->EnhanceCheckBox(ui->accurateGETLLAR, emu_settings_type::AccurateGETLLAR);
|
m_emu_settings->EnhanceCheckBox(ui->accurateGETLLAR, emu_settings_type::AccurateGETLLAR);
|
||||||
SubscribeTooltip(ui->accurateGETLLAR, tooltips.settings.accurate_getllar);
|
SubscribeTooltip(ui->accurateGETLLAR, tooltips.settings.accurate_getllar);
|
||||||
|
|
||||||
m_emu_settings->EnhanceCheckBox(ui->accuratePUTLLUC, emu_settings_type::AccuratePUTLLUC);
|
|
||||||
SubscribeTooltip(ui->accuratePUTLLUC, tooltips.settings.accurate_putlluc);
|
|
||||||
|
|
||||||
m_emu_settings->EnhanceCheckBox(ui->accurateSpuDMA, emu_settings_type::AccurateSpuDMA);
|
m_emu_settings->EnhanceCheckBox(ui->accurateSpuDMA, emu_settings_type::AccurateSpuDMA);
|
||||||
SubscribeTooltip(ui->accurateSpuDMA, tooltips.settings.accurate_spu_dma);
|
SubscribeTooltip(ui->accurateSpuDMA, tooltips.settings.accurate_spu_dma);
|
||||||
|
|
||||||
|
|
|
@ -3442,13 +3442,6 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QCheckBox" name="accuratePUTLLUC">
|
|
||||||
<property name="text">
|
|
||||||
<string>Accurate PUTLLUC</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="accurateSpuDMA">
|
<widget class="QCheckBox" name="accurateSpuDMA">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
|
@ -77,7 +77,6 @@ public:
|
||||||
const QString spu_debug = tr("Creates SPU logs.\nOnly useful to developers.\nNever use this.");
|
const QString spu_debug = tr("Creates SPU logs.\nOnly useful to developers.\nNever use this.");
|
||||||
const QString set_daz_and_ftz = tr("Sets special MXCSR flags to debug errors in SSE operations.\nOnly used in PPU thread when it's not precise.\nOnly useful to developers.\nNever use this.");
|
const QString set_daz_and_ftz = tr("Sets special MXCSR flags to debug errors in SSE operations.\nOnly used in PPU thread when it's not precise.\nOnly useful to developers.\nNever use this.");
|
||||||
const QString accurate_getllar = tr("Accurately processes SPU MFC_GETLLAR operation.");
|
const QString accurate_getllar = tr("Accurately processes SPU MFC_GETLLAR operation.");
|
||||||
const QString accurate_putlluc = tr("Accurately processes SPU MFC_PUTLLUC operation.");
|
|
||||||
const QString accurate_spu_dma = tr("Accurately processes SPU DMA operations.");
|
const QString accurate_spu_dma = tr("Accurately processes SPU DMA operations.");
|
||||||
const QString accurate_llvm_dfma = tr("Provides extra accuracy on FMA instructions at the cost of performance.\nWhile disabling it might give a decent performance boost if your CPU doesn't support FMA, it may also introduce subtle bugs that otherwise do not occur.\nYou can't disable it if your CPU supports FMA.");
|
const QString accurate_llvm_dfma = tr("Provides extra accuracy on FMA instructions at the cost of performance.\nWhile disabling it might give a decent performance boost if your CPU doesn't support FMA, it may also introduce subtle bugs that otherwise do not occur.\nYou can't disable it if your CPU supports FMA.");
|
||||||
const QString accurate_vector_nan = tr("Forces the floating point NaN (Not A Number) values outputted from PPU vector instructions to be accurate to the real hardware. (0x7FC00000)");
|
const QString accurate_vector_nan = tr("Forces the floating point NaN (Not A Number) values outputted from PPU vector instructions to be accurate to the real hardware. (0x7FC00000)");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue