mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-04 05:51:27 +12:00
rsx: Fix compiler warnings
This commit is contained in:
parent
de28c812e8
commit
5281a85b67
4 changed files with 32 additions and 31 deletions
|
@ -109,10 +109,12 @@ namespace rsx
|
||||||
_capacity = size;
|
_capacity = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void resize(u32 size)
|
template <typename T> requires UnsignedInt<T>
|
||||||
|
void resize(T size)
|
||||||
{
|
{
|
||||||
reserve(size);
|
const auto new_size = static_cast<u32>(size);
|
||||||
_size = size;
|
reserve(new_size);
|
||||||
|
_size = new_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void push_back(const Ty& val)
|
void push_back(const Ty& val)
|
||||||
|
|
|
@ -3523,7 +3523,7 @@ namespace rsx
|
||||||
const usz avg_frame_time = diffs / 59;
|
const usz avg_frame_time = diffs / 59;
|
||||||
|
|
||||||
u32 lowered_delay = 0;
|
u32 lowered_delay = 0;
|
||||||
u32 highered_delay = 0;
|
u32 raised_delay = 0;
|
||||||
bool can_reevaluate = true;
|
bool can_reevaluate = true;
|
||||||
u64 prev_preempt_count = umax;
|
u64 prev_preempt_count = umax;
|
||||||
|
|
||||||
|
@ -3543,7 +3543,7 @@ namespace rsx
|
||||||
}
|
}
|
||||||
else if (prev_preempt_count < frame_times[i].preempt_count)
|
else if (prev_preempt_count < frame_times[i].preempt_count)
|
||||||
{
|
{
|
||||||
highered_delay++;
|
raised_delay++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i > frame_times.size() - 30)
|
if (i > frame_times.size() - 30)
|
||||||
|
@ -3556,7 +3556,7 @@ namespace rsx
|
||||||
prev_preempt_count = frame_times[i].preempt_count;
|
prev_preempt_count = frame_times[i].preempt_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
preempt_count = std::min<u32>(frame_times.back().preempt_count, max_preempt_count);
|
preempt_count = std::min<u64>(frame_times.back().preempt_count, max_preempt_count);
|
||||||
|
|
||||||
u32 fails = 0;
|
u32 fails = 0;
|
||||||
u32 hard_fails = 0;
|
u32 hard_fails = 0;
|
||||||
|
@ -3576,7 +3576,7 @@ namespace rsx
|
||||||
{
|
{
|
||||||
if (diff_of_diff >= avg_frame_time / 3)
|
if (diff_of_diff >= avg_frame_time / 3)
|
||||||
{
|
{
|
||||||
highered_delay++;
|
raised_delay++;
|
||||||
hard_fails++;
|
hard_fails++;
|
||||||
|
|
||||||
if (i == frame_times.size())
|
if (i == frame_times.size())
|
||||||
|
@ -3632,7 +3632,7 @@ namespace rsx
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
preempt_count = std::min<u32>(preempt_count + 4, max_preempt_count);
|
preempt_count = std::min<u64>(preempt_count + 4, max_preempt_count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -3641,26 +3641,26 @@ namespace rsx
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Sudden FPS drop detection
|
// Sudden FPS drop detection
|
||||||
else if ((fails > 13 || hard_fails > 2 || !(abs_dst(fps_10, 300) < 20 || abs_dst(fps_10, 600) < 30 || abs_dst(fps_10, g_cfg.video.vblank_rate * 10) < 30 || abs_dst(fps_10, g_cfg.video.vblank_rate * 10 / 2) < 20)) && lowered_delay < highered_delay && is_last_frame_a_fail)
|
else if ((fails > 13 || hard_fails > 2 || !(abs_dst(fps_10, 300) < 20 || abs_dst(fps_10, 600) < 30 || abs_dst(fps_10, g_cfg.video.vblank_rate * 10) < 30 || abs_dst(fps_10, g_cfg.video.vblank_rate * 10 / 2) < 20)) && lowered_delay < raised_delay && is_last_frame_a_fail)
|
||||||
{
|
{
|
||||||
lower_preemption_count();
|
lower_preemption_count();
|
||||||
}
|
}
|
||||||
|
|
||||||
perf_log.trace("CPU preemption control: reeval=%d, preempt_count=%d, fails=%d, hard=%d, avg_frame_time=%d, highered=%d, lowered=%d, taken=%u", can_reevaluate, preempt_count, fails, hard_fails, avg_frame_time, highered_delay, lowered_delay, ::g_lv2_preempts_taken.load());
|
perf_log.trace("CPU preemption control: reeval=%d, preempt_count=%llu, fails=%u, hard=%u, avg_frame_time=%llu, highered=%u, lowered=%u, taken=%u", can_reevaluate, preempt_count, fails, hard_fails, avg_frame_time, raised_delay, lowered_delay, ::g_lv2_preempts_taken.load());
|
||||||
|
|
||||||
if (hard_measures_taken)
|
if (hard_measures_taken)
|
||||||
{
|
{
|
||||||
preempt_fail_old_preempt_count = std::max<u32>(preempt_fail_old_preempt_count, std::min<u32>(frame_times.back().preempt_count, max_preempt_count));
|
preempt_fail_old_preempt_count = std::max<u64>(preempt_fail_old_preempt_count, std::min<u64>(frame_times.back().preempt_count, max_preempt_count));
|
||||||
}
|
}
|
||||||
else if (preempt_fail_old_preempt_count)
|
else if (preempt_fail_old_preempt_count)
|
||||||
{
|
{
|
||||||
perf_log.error("Lowering current preemption count significantly due to a performance drop, if this issue persists frequently consider lowering max preemptions count to 'new-count' or lower. (old-count=%d, new-count=%d)", preempt_fail_old_preempt_count, preempt_count);
|
perf_log.error("Lowering current preemption count significantly due to a performance drop, if this issue persists frequently consider lowering max preemptions count to 'new-count' or lower. (old-count=%llu, new-count=%llu)", preempt_fail_old_preempt_count, preempt_count);
|
||||||
preempt_fail_old_preempt_count = 0;
|
preempt_fail_old_preempt_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const u64 tsc_diff = (current_tsc - frame_times.back().tsc);
|
const u64 tsc_diff = (current_tsc - frame_times.back().tsc);
|
||||||
const u64 time_diff = (current_time - frame_times.back().timestamp);
|
const u64 time_diff = (current_time - frame_times.back().timestamp);
|
||||||
const u64 preempt_diff = tsc_diff * (1'000'000 / 30) / (time_diff * std::max<u32>(preempt_count, 1));
|
const u64 preempt_diff = tsc_diff * (1'000'000 / 30) / (time_diff * std::max<u64>(preempt_count, 1ull));
|
||||||
|
|
||||||
if (!preempt_count)
|
if (!preempt_count)
|
||||||
{
|
{
|
||||||
|
|
|
@ -467,6 +467,19 @@ namespace rsx
|
||||||
|
|
||||||
struct sampled_image_descriptor_base;
|
struct sampled_image_descriptor_base;
|
||||||
|
|
||||||
|
struct desync_fifo_cmd_info
|
||||||
|
{
|
||||||
|
u32 cmd;
|
||||||
|
u64 timestamp;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct frame_time_t
|
||||||
|
{
|
||||||
|
u64 preempt_count;
|
||||||
|
u64 timestamp;
|
||||||
|
u64 tsc;
|
||||||
|
};
|
||||||
|
|
||||||
class thread : public cpu_thread
|
class thread : public cpu_thread
|
||||||
{
|
{
|
||||||
u64 timestamp_ctrl = 0;
|
u64 timestamp_ctrl = 0;
|
||||||
|
@ -681,24 +694,10 @@ namespace rsx
|
||||||
atomic_t<bool> sync_point_request = false;
|
atomic_t<bool> sync_point_request = false;
|
||||||
bool in_begin_end = false;
|
bool in_begin_end = false;
|
||||||
|
|
||||||
struct desync_fifo_cmd_info
|
|
||||||
{
|
|
||||||
u32 cmd;
|
|
||||||
u64 timestamp;
|
|
||||||
};
|
|
||||||
|
|
||||||
std::queue<desync_fifo_cmd_info> recovered_fifo_cmds_history;
|
std::queue<desync_fifo_cmd_info> recovered_fifo_cmds_history;
|
||||||
|
|
||||||
struct frame_time_t
|
|
||||||
{
|
|
||||||
u64 preempt_count;
|
|
||||||
u64 timestamp;
|
|
||||||
u64 tsc;
|
|
||||||
};
|
|
||||||
|
|
||||||
std::deque<frame_time_t> frame_times;
|
std::deque<frame_time_t> frame_times;
|
||||||
u32 prevent_preempt_increase_tickets = 0;
|
u32 prevent_preempt_increase_tickets = 0;
|
||||||
u32 preempt_fail_old_preempt_count = 0;
|
u64 preempt_fail_old_preempt_count = 0;
|
||||||
|
|
||||||
atomic_t<s32> async_tasks_pending{ 0 };
|
atomic_t<s32> async_tasks_pending{ 0 };
|
||||||
|
|
||||||
|
|
|
@ -507,7 +507,7 @@ namespace rsx
|
||||||
|
|
||||||
if (fifo_span.size() < rcount)
|
if (fifo_span.size() < rcount)
|
||||||
{
|
{
|
||||||
rcount = fifo_span.size();
|
rcount = ::size32(fifo_span);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rsx->m_graphics_state & rsx::pipeline_state::transform_constants_dirty)
|
if (rsx->m_graphics_state & rsx::pipeline_state::transform_constants_dirty)
|
||||||
|
@ -560,7 +560,7 @@ namespace rsx
|
||||||
|
|
||||||
if (fifo_span.size() < rcount)
|
if (fifo_span.size() < rcount)
|
||||||
{
|
{
|
||||||
rcount = fifo_span.size();
|
rcount = ::size32(fifo_span);
|
||||||
}
|
}
|
||||||
|
|
||||||
copy_data_swap_u32(&rsx::method_registers.transform_program[load_pos * 4 + index % 4], fifo_span.data(), rcount);
|
copy_data_swap_u32(&rsx::method_registers.transform_program[load_pos * 4 + index % 4], fifo_span.data(), rcount);
|
||||||
|
@ -1030,7 +1030,7 @@ namespace rsx
|
||||||
|
|
||||||
if (fifo_span.size() < count)
|
if (fifo_span.size() < count)
|
||||||
{
|
{
|
||||||
count = fifo_span.size();
|
count = ::size32(fifo_span);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Skip "handled methods"
|
// Skip "handled methods"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue