mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-12-28 08:55:29 +03:00
Store render nodes in a linearly allocated linked list
This is much faster in reldebug builds than boost::stable_vector while still providing iterator stability
This commit is contained in:
parent
326c05a5de
commit
704660bbeb
@ -45,7 +45,8 @@ namespace skyline::gpu::interconnect {
|
|||||||
commandBuffer{AllocateRaiiCommandBuffer(gpu, commandPool)},
|
commandBuffer{AllocateRaiiCommandBuffer(gpu, commandPool)},
|
||||||
fence{gpu.vkDevice, vk::FenceCreateInfo{ .flags = vk::FenceCreateFlagBits::eSignaled }},
|
fence{gpu.vkDevice, vk::FenceCreateInfo{ .flags = vk::FenceCreateFlagBits::eSignaled }},
|
||||||
semaphore{gpu.vkDevice, vk::SemaphoreCreateInfo{}},
|
semaphore{gpu.vkDevice, vk::SemaphoreCreateInfo{}},
|
||||||
cycle{std::make_shared<FenceCycle>(gpu.vkDevice, *fence, *semaphore, true)} {
|
cycle{std::make_shared<FenceCycle>(gpu.vkDevice, *fence, *semaphore, true)},
|
||||||
|
nodes{allocator} {
|
||||||
Begin();
|
Begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,6 +56,8 @@ namespace skyline::gpu::interconnect {
|
|||||||
fence{std::move(other.fence)},
|
fence{std::move(other.fence)},
|
||||||
semaphore{std::move(other.semaphore)},
|
semaphore{std::move(other.semaphore)},
|
||||||
cycle{std::move(other.cycle)},
|
cycle{std::move(other.cycle)},
|
||||||
|
allocator{std::move(other.allocator)},
|
||||||
|
nodes{std::move(other.nodes)},
|
||||||
ready{other.ready} {}
|
ready{other.ready} {}
|
||||||
|
|
||||||
std::shared_ptr<FenceCycle> CommandRecordThread::Slot::Reset(GPU &gpu) {
|
std::shared_ptr<FenceCycle> CommandRecordThread::Slot::Reset(GPU &gpu) {
|
||||||
|
@ -35,8 +35,8 @@ namespace skyline::gpu::interconnect {
|
|||||||
vk::raii::Fence fence;
|
vk::raii::Fence fence;
|
||||||
vk::raii::Semaphore semaphore;
|
vk::raii::Semaphore semaphore;
|
||||||
std::shared_ptr<FenceCycle> cycle;
|
std::shared_ptr<FenceCycle> cycle;
|
||||||
boost::container::stable_vector<node::NodeVariant> nodes;
|
|
||||||
LinearAllocatorState<> allocator;
|
LinearAllocatorState<> allocator;
|
||||||
|
std::list<node::NodeVariant, LinearAllocator<node::NodeVariant>> nodes;
|
||||||
std::mutex beginLock;
|
std::mutex beginLock;
|
||||||
std::condition_variable beginCondition;
|
std::condition_variable beginCondition;
|
||||||
ContextTag executionTag;
|
ContextTag executionTag;
|
||||||
|
Loading…
Reference in New Issue
Block a user