mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-12-28 20:45:29 +03:00
Reduce thresholds for slot increase and buffer/texture fast readback
This commit is contained in:
parent
f32ab1feff
commit
7c4b4765bf
@ -90,8 +90,8 @@ namespace skyline::gpu {
|
||||
static constexpr size_t FrequentlyLockedThreshold{2}; //!< Threshold for the number of times a buffer can be locked (not from context locks, only normal) before it should be considered frequently locked
|
||||
size_t accumulatedCpuLockCounter{}; //!< Number of times buffer has been locked through non-ContextLocks
|
||||
|
||||
static constexpr size_t FastReadbackHackWaitCountThreshold{8}; //!< Threshold for the number of times a buffer can be waited on before it should be considered for the readback hack
|
||||
static constexpr std::chrono::nanoseconds FastReadbackHackWaitTimeThreshold{constant::NsInSecond / 2}; //!< Threshold for the amount of time buffer texture can be waited on before it should be considered for the readback hack, `SkipReadbackHackWaitCountThreshold` needs to be hit before this
|
||||
static constexpr size_t FastReadbackHackWaitCountThreshold{6}; //!< Threshold for the number of times a buffer can be waited on before it should be considered for the readback hack
|
||||
static constexpr std::chrono::nanoseconds FastReadbackHackWaitTimeThreshold{constant::NsInSecond /4}; //!< Threshold for the amount of time buffer texture can be waited on before it should be considered for the readback hack, `SkipReadbackHackWaitCountThreshold` needs to be hit before this
|
||||
size_t accumulatedGuestWaitCounter{}; //!< Total number of times the buffer has been waited on
|
||||
std::chrono::nanoseconds accumulatedGuestWaitTime{}; //!< Amount of time the buffer has been waited on for since the `FastReadbackHackWaitTimeThreshold`th wait on it by the guest
|
||||
|
||||
|
@ -150,7 +150,8 @@ namespace skyline::gpu::interconnect {
|
||||
renderDocApi->EndFrameCapture(RENDERDOC_DEVICEPOINTER_FROM_VKINSTANCE(instance), nullptr);
|
||||
slot->capture = false;
|
||||
|
||||
if (slot->didWait && slots.size() < (1U << *state.settings->executorSlotCountScale)) {
|
||||
if (slot->didWait && (slots.size() + 1) < (1U << *state.settings->executorSlotCountScale)) {
|
||||
outgoing.Push(&slots.emplace_back(gpu));
|
||||
outgoing.Push(&slots.emplace_back(gpu));
|
||||
slot->didWait = false;
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ namespace skyline::gpu::interconnect {
|
||||
};
|
||||
|
||||
private:
|
||||
static constexpr size_t GrowThresholdNs{constant::NsInMillisecond / 4}; //!< The wait time threshold at which the slot count will be increased
|
||||
static constexpr size_t GrowThresholdNs{constant::NsInMillisecond / 50}; //!< The wait time threshold at which the slot count will be increased
|
||||
const DeviceState &state;
|
||||
CircularQueue<Slot *> incoming; //!< Slots pending recording
|
||||
CircularQueue<Slot *> outgoing; //!< Slots that have been submitted, may still be active on the GPU
|
||||
|
@ -450,8 +450,8 @@ namespace skyline::gpu {
|
||||
static constexpr size_t FrequentlyLockedThreshold{2}; //!< Threshold for the number of times a texture can be locked (not from context locks, only normal) before it should be considered frequently locked
|
||||
size_t accumulatedCpuLockCounter{};
|
||||
|
||||
static constexpr size_t SkipReadbackHackWaitCountThreshold{8}; //!< Threshold for the number of times a texture can be waited on before it should be considered for the readback hack
|
||||
static constexpr std::chrono::nanoseconds SkipReadbackHackWaitTimeThreshold{constant::NsInSecond / 2}; //!< Threshold for the amount of time a texture can be waited on before it should be considered for the readback hack, `SkipReadbackHackWaitCountThreshold` needs to be hit before this
|
||||
static constexpr size_t SkipReadbackHackWaitCountThreshold{6}; //!< Threshold for the number of times a texture can be waited on before it should be considered for the readback hack
|
||||
static constexpr std::chrono::nanoseconds SkipReadbackHackWaitTimeThreshold{constant::NsInSecond / 4}; //!< Threshold for the amount of time a texture can be waited on before it should be considered for the readback hack, `SkipReadbackHackWaitCountThreshold` needs to be hit before this
|
||||
size_t accumulatedGuestWaitCounter{}; //!< Total number of times the texture has been waited on
|
||||
std::chrono::nanoseconds accumulatedGuestWaitTime{}; //!< Amount of time the texture has been waited on for since the `SkipReadbackHackWaitCountThreshold`th wait on it by the guest
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user